Skip to content

Latest commit

 

History

History
1427 lines (1112 loc) · 60 KB

CHANGELOG.md

File metadata and controls

1427 lines (1112 loc) · 60 KB

更新日志

如果觉得本插件还不错的话,给个Star吧~

文档

配置文档 - 有所有功能的简介的 json 文件

配置 - 所有配置的详细描述的文档,用于查看详细介绍。

[V4.9.3]

  • feat: specialOptions支持单独根据语言或者语言后缀进行配置,参考自定义语言的后缀形式 #539, 文档:特殊字段允许自定义

如下面的js、md,会针对后缀文件进行单独的特殊字段设置。

"fileheader.configObj": {
  "specialOptions":{
    "Author": "creater",
    "Date": "since",
    "LastEditTime": "lastTime",
    "LastEditors": "LastAuthor",
    "Description": "message", // 头部注释大写的描述Description
    "description": "function message", // 函数注释小写的描述:description
    "FilePath": "文件相对于项目的路径"
    "param": "param2", // 函数注释parm参数别名
    // 文件后缀、或者语言后缀,可针对单个文件后缀进行配置:language的自定义语言配置
    "js": {
        "Description": "message2",  // 合并specialOptions第一层级的配置,覆盖Description的配置
        "return": "return2", // 单独为js文件添加return 特殊字段配置
    },
    "md": {
      "Date": "date",
      "Description": "tag"
    }
  }
}
  • feat: 函数注释特殊字段为description,头部注释的特殊字段为Description,用于区分 #512

文档:特殊字段允许自定义移动光标到Description :所在行

  • fix: now_year改为全局匹配 #522
  • fix: now_year、用户名和邮箱不再绑定 #509
  • fix: param等宽错误 #495
  • fix: 修复vscode默认快捷键和插件简介描述 #498

[V4.9.2]

  • fix: VSCode 1.74.0 兼容,解决函数注释无法使用的问题

[V4.9.1]

  • fix: 自定义特殊字段LastEditors取值导致的问题 #478
  • fix: 修复params读取失败的问题 #477
  • fix: 修复git config读取失败的问题 #475

[V4.9.0]

  • feat: NoMatchParams当没有匹配到函数注释参数时是否显示paramreturn
"fileheader.configObj": {
  "NoMatchParams": "no param" // 默认不显示param那一行
}

示例:

// "NoMatchParams": "no show param"
/**
 * @description: 没匹配到函数参数,不显示@param那行
 * @return {type} 填写返回值
 */

export const download = async () => {
  // do something
  console.log('空参数 匹配不到函数参数: NoMatchParams')
  return 'something'
}

// "NoMatchParams": "no show param and return"
/**
 * @description: 只显示description 不显示@param与@return这两行
 */
export const download = async () => {
  // do something
  console.log('空参数 匹配不到函数参数: NoMatchParams')
  return 'something'
}

// "NoMatchParams": "show param"
/**
 * @description: 没匹配到函数参数 也显示@param与@return
 * @param {type}
 * @return {type}
 */
export const download = async () => {
  console.log('空参数 匹配不到函数参数: NoMatchParams')
}

[V4.8.23]

  • feat: functionParamAddStrtype param后面增加字符串, 在 type param 后面增加字符串 可能是冒号,方便输入参数描述。 #443
"fileheader.configObj": {
  "functionParamAddStr": "" // 默认不增加字符串
}

示例:

// "functionParamAddStr": ":"
/**
 * @description: 增加冒号 方便输入参数描述
 * @param {type} a:
 * @param {type} b:
 * @param {array} c:
 * @return {type}
 */
function test2(a, b, ...c) {}
  • fix: 在 VSCode 打开的对应项目中获取git config信息 #469
  • fix: 修复java函数注释参数提取不精准的问题 #470
  • fix: 修复不设置AuthorLastEditors时出现的无法生成注释的 bug
  • fix: c、java、solidity 不支持连续的容器对象作为参数 #468

[V4.8.22]

配置:

// 头部注释模板
"fileheader.customMade": {
  // 获取当前项目下git config中的: 用户名、邮箱
  // 公司项目和个人项目可以配置不同的用户名与邮箱 搜索: gitconfig includeIf  比如: https://ayase.moe/2021/03/09/customized-git-config/
  "Author": "git config user.name && git config user.email", // 同时获取用户名与邮箱
  // "Author": "git config user.name", // 仅获取用户名
  // "Author": "git config user.email", // 仅获取邮箱
  // "Author": "OBKoro1", // 固定值 不从git config中获取
  "Date": "Do not edit",
  // 设置后,保存文件更改默认更新最后编辑人
  "LastEditors": "git config user.name && git config user.email", // 配置规则与Author字段一致
  "LastEditTime": "Do not edit",
  "FilePath": "",
  // 个人版权声明: ${git_name} ${git_email} ${git_name_email}
  // 公司版权声明: 写死即可
  "custom_string_obkoro1_copyright": "Copyright (c) ${now_year} by ${git_name} email: ${git_email}, All Rights Reserved. "
},

示例:

// "Author": "git config user.name && git config user.email"
// "LastEditors": "git config user.name"
//  "custom_string_obkoro1_copyright": "Copyright (c) ${now_year} by ${git_name} email: ${git_email}, All Rights Reserved. "
/*
 * Author       : OBKoro1 obkoro1@foxmail.com
 * Date         : 2022-05-01 15:35:12
 * LastEditors  : OBKoro1
 * LastEditTime : 2022-05-02 11:31:09
 * FilePath     : /fileHead/function-params/test.js
 * Copyright (c) 2022 by OBKoro1 email: obkoro1@foxmail.com, All Rights Reserved.
 */
  • feat: 函数注释匹配到 param 但是不需要 type 时 只显示 param 比如: [*] 改成 []

配置:

"fileheader.configObj": {
    "functionTypeSymbol": "match param no type"
}

示例:

/**
 * @description: 这边匹配到param 但是没有type 正常是 [number] c [string] b
 * @param [] c
 * @param [] b
 * @return []
 */
function test2(c: number, b: string = '2') {}
  • feat: 新建文件自动添加头部注释,不再自动打开。
"fileheader.configObj": {
  "createHeader": false // 默认关闭 之前是true
}
  • feat: specialOptions特殊字段新增Author

[V4.8.21]

  • fix: 函数注释特殊字段与函数注释等宽共同使用的问题. #434

[V4.8.20]

  • feat: 多行函数参数支持选中后按函数注释快捷键自动提取

    1. 鼠标左键选择多行函数声明区域,函数声明区域尽量精准
    2. 按生成函数注释快捷键

    多行函数参数自动提取参数

  • fix: afterAnnotation 只有一个换行,取消自动输入换行 防止换行两次 #430

  • fix: 佛祖保佑与永不宕机之间是否多了两个空格 #424

[V4.8.19]

  • feat: 新增光标移动快捷键,用于函数参数填写时使用(光标移动到下一行的末尾)
// 快捷键
{
  "command": "koroFileheader.table",
  "key": "alt+y", // window系统
  "mac": "cmd+y", // mac
  "linux": "meta+y", // linux
  "when": "editorTextFocus"
}

  • feat: 函数注释参数提取新增支持tsx
  • feat: typeParamOrder支持函数参数提取只显示函数参数,不展示 type 类型, 关联#397
"fileheader.configObj": {
    "typeParamOrder": "param"
}
// "typeParamOrder": "param"
/**
 * @description: 只有参数 没有类型
 * @param axiosMethods
 * @param apiLink
 * @param opts
 * @param fileName
 * @return {type}
 */
export const download = async (axiosMethods, apiLink, opts, fileName) => {}
  • docs: 文档更新。
  • fix: 修复箭头函数参数的提取错误, 关联#394

[V4.8.18]

"fileheader.configObj": {
    "specialOptions": { // 特殊字段自定义
      "param": "paramAlias", // 别名
      "return": "returnAlias", // 别名
    }
}
// 效果
/**
 * description:
 * param2 [type] 字段重命名
 * return2 [type] 字段重命名
 */
function test(a, b) {}
"fileheader.configObj": {
    // 自定义语言
    "language": {
      "tsx": { // jsx后缀的文件
        "head": "/**",
        "middle": " * ",
        "end": "*/",
        "functionParams": "typescript" // 函数注释使用ts语言的解析逻辑
      }
    }
}

使用下列对象的key,即可获取对应语言解析函数参数的逻辑。

// 支持函数注释的语言
const supportLanguage = {
  javascript: 'function-js.js',
  javascriptreact: 'function-js.js', // react jsx
  vue: 'function-js.js', // vue
  html: 'function-js.js', // html
  typescript: 'function-ts.js', // ts
  typescriptreact: 'function-ts.js', // react tsx
  java: 'function-java.js', // java
  python: 'function-python.js', // py
  rust: 'function-rust.js', // rust
  go: 'function-go.js', // go
  c: 'function-c.js',
  cpp: 'function-c.js',
  php: 'function-php.js',
  solidity: 'function-solidity.js', // 智能合约的语言
}
  • feat: 支持solidity智能合约语言 #365

ps: vscode 本身不支持solidity,需要安装solidity插件来支持该语言,而后才能开启函数注释。

/**
 * description:
 * param x [uint256]
 * param y [uint256]
 * return [type]
 */
function multiply(uint256 x, uint256 y) returns (uint256 z) {
    z = x * y;
}
  • fix: C++函数注释无法提取带有引用符号&的参数 #379
  • fix: 修复文档错误。
  • fix: 修复Ubuntu下的快捷键: ctrl+super+ictrl+super+t
  • fix: 修复functionParamsShapeno type时,函数注释return返回值出错的问题 #382
  • fix: 修复文件未保存到系统中,就进行读取 diff,导致 diff 重置不准的问题

[V4.8.17]

"fileheader.configObj": {
    "throttleTime": 60000 // 对同一个文件 需要过1分钟再次修改文件并保存才会更新注释
}

一个文件第一次修改内容并保存后,会触发更新注释的最后编辑人,最后编辑时间。

之后在该文件上进行修改,并且再次保存后,是否更新注释,取决于throttleTime所设定的时间。

当:(当前时间 - 上次执行事件 > throttleTime 设定的时间),即触发更新注释函数。

PS:插件会保存最近 30 个文件的最后更新注释的时间,并使用 LRU 算法,在每次更新注释后,会将该文件更新成最新的。

这个配置的意义在于,通过减少触发更新注释的方式,降低撤销更改重新保存后,导致被撤销内容被注释的更新所覆盖的问题 #358

  • fix: c++ 参数去掉关键字['const', 'struct'] #349#325
/**
 * @description:
 * @param t2 [my_type]
 * @param str [string]
 * @param str2 [string]
 * @param t [my_type]
 * @return [type]
 */
void test(struct my_type t2, const std::string str, const std::string str2, struct my_type t){

}

[V4.8.16]

  • fix: 修复 getColon 获取@没有置空的问题
  • fix: 修复头部注释最后编辑人和最后编辑时间冒号使用错误的问题

[V4.8.15]

  • feat: customHasHeadEnd自定义语言注释,自定义取消 head、end 部分。

注意该配置只在自定义语言注释language也配置了,才会生效

// 配置示例
"fileheader.configObj": {
  // ... 其他配置
  // "customHasHeadEnd": {} // 默认为空对象 默认都有head和end
  //  不设置自定义配置language无效
  "customHasHeadEnd": {
      "js": "cancel head and function", // 头部注释和函数注释均不取消head和end - 单独设置文件 js文件后缀
      "ts": "cancel function", // 函数注释不带有head和end-ts文件后缀
      "python": "cancel head", // 头部注释不带有head和end
      // "defaultSetting": ''  // 不设置 默认所有文件都有head和end
  },
}

示例:

// 配置:
"fileheader.configObj": {
    "language": {
      "js": {
        "head": "这里无效",
        "middle": "// ", // 设置中间部分即可
        "end": "这里无效"
      },
    },
  //  不设置自定义配置language无效
  "customHasHeadEnd": {
     "js": "cancel head and function", // 头部注释和函数注释均不取消head和end - 单独设置文件 js文件后缀
  }
}
// Author       : OBKoro1
// Date         : 2021-03-27 18:16:43
// LastEditors  : OBKoro1444
// LastEditTime : 2021-07-26 15:04:49
// FilePath     : test.js
// description  : 头部注释效果 需要设
// koroFileheader VSCode插件
// Copyright (c) 2021 by OBKoro1, All Rights Reserved.

// description: 函数注释效果
// param option [type]
// return [type]
function updateFillBuilderYAML(option) {}
// 配置示例
"fileheader.configObj": {
  // ... 其他配置
  // "functionBlankSpace": 0 // 所有语言函数缩进 废弃
  // "functionBlankSpaceAll": {} // 默认为空对象 默认值为0 不缩进
    "functionBlankSpaceAll": {
      // "js": 2, // 单独设置文件:js文件后缀 缩进两格
      "python": 4, // 设置语言:python语言类型 函数注释空格缩进4格
      "defaultSetting": 0  // 不设置 默认值为0
    },
}

示例:

// js 不设置 默认不缩进
/**
 * @description  defaultSetting: 0 默认不缩进
 * @param a
 * @param b
 * @return {*}
 */
async function test(a, ...b) {}
# py
def printinfo( arg1, **vardict ):
    '''
    @description:  python语言类型缩进4格
    @param arg1 [type]
    @param vardict [object]
    @return [type]
    '''
  • fix: vscode 自带配置 editor.codeActionsOnSave、editor.formatOnSave 的闪烁问题

[V4.8.14]

  • feat: cursorModeInternalAll用于根据不同的文件、语言类型来配置在函数内或者函数外添加注释。
"fileheader.configObj": {
  // ... 其他配置
  // "cursorModeInternal": false // 这个默认值被defaultSetting给替代了 设置了defaultSetting 不设置该值也没关系
  "cursorModeInternalAll": {
    "ts": true, // ts文件后缀是函数内生成函数注释
    "js": false, // js文件后缀是在函数外生成函数注释
    "python": true, // python语言类型文件时在函数内生成函数注释
    "defaultSetting": false // 默认是在函数外生成注释
  },
}

示例:

// js
/**
 * @description: 未开启:注释在函数外
 * @param {*} a
 * @param {*} b
 * @return {*}
 */
function test(a, b) {}
// ts
function test2(c: number, b: string = '2') {
  /**
   * @description:
   * @param c [number]
   * @param b [string]
   * @return [type]
   */
}
  • fix: 修复functionParamsShape的兼容问题。

[V4.8.13]

  1. functionParamsShape 参数类型外面的符号
// functionParamsShape: [ "{", "}"] // 默认值
/**
 * @description: type包围起来的大括号: {}
 * @param {number} c
 * @param {string} b
 * @return {type}
 */
function test2(c: number, b: string = '2') {}
// functionParamsShape: [ "[", "]"]
/**
 * @description:
 * @param [number] c
 * @param [string] b
 * @return [type]
 */
function test2(c: number, b: string = '2') {}
  1. functionTypeSymbol 参数没有类型时的默认值
// "functionTypeSymbol": "*" // 默认值
/**
 * @description:
 * @param {*} axiosMethods
 * @param {*} apiLink
 * @param {*} opts
 * @param {*} fileName
 * @return {*}
 */
export const download = async (axiosMethods, apiLink, opts, fileName) => {}
// "functionTypeSymbol": "type"
/**
 * @description:
 * @param {type} axiosMethods
 * @param {type} apiLink
 * @param {type} opts
 * @param {type} fileName
 * @return {type}
 */
export const download = async (axiosMethods, apiLink, opts, fileName) => {}
  1. typeParamOrder 参数类型 和 参数的位置自定义
// "typeParamOrder": "type param" // 默认值
/**
 * @description: 类型在前面 参数在后面
 * @param {type} axiosMethods
 * @param {type} apiLink
 * @param {type} opts
 * @param {type} fileName
 * @return {type}
 */
export const download = async (axiosMethods, apiLink, opts, fileName) => {}
// "typeParamOrder": "param type"
/**
 * @description: 参数在前面 类型在后面
 * @param axiosMethods {type}
 * @param apiLink {type}
 * @param opts {type}
 * @param fileName {type}
 * @return {type}
 */
export const download = async (axiosMethods, apiLink, opts, fileName) => {}
  • feat: FilePath增加单独文件 name #322
// 配置
"fileheader.customMade": {
  // 头部注释模板其他选项
  "FilePath": "only file name", // 只有文件名
},
// 头部注释效果
/*
 * Author       : OBKoro1
 * Date         : 2020-07-03 14:50:17
 * LastEditors  : OBKoro1
 * LastEditTime : 2021-06-28 11:37:25
 * FilePath     : function.js
 * Description  :  FilePath没有路径只有文件名
 * Copyright (c) 2021 by OBKoro1, All Rights Reserved.
 */
  • fix: 修复自定义冒号和@符号使用文件后缀失效的问题 #328
  • fix: 修复 C++按照谷歌编程格式函数无法提取参数的问题 #325
  • fix: 修复箭头函数 async 函数参数提取问题 #335

[V4.8.12]

  • fix: 修复了一个问题

[V4.8.11]

  • feat: 新增用户自定义缩进空格数量 #320
"fileheader.configObj": {
  "functionBlankSpace": 0 // 默认不缩进
}

示例:

// "functionBlankSpace": 0
/**
 * @description functionBlankSpace为0默认不缩进
 * @param a
 * @param b
 * @return {*}
 */
async function test(a, ...b) {}

// "functionBlankSpace": 2 缩进两格
// "cursorModeInternal": true 将注释写在函数内部

async function test(a, ...b) {
  /**
   * @description 缩进两格 否则应该在async下面
   * @param * a
   * @param array b
   * @return {*}
   */
}

[V4.8.7]

  • fix: 修复 python@符号切割自定义字段的问题#321

[V4.8.6]

"fileheader.configObj": {
    "functionParamsShape": "normal" // 正常
    // "functionParamsShape": "no bracket" // **没有方括号**
    // "functionParamsShape": "no type" // 没有类型
}

示例:

/**
 * @description normal
 * @param {number} c
 * @param {string} b
 * @return {*}
 */
/**
 * @description "no bracket" 没有方括号
 * @param number c
 * @param string b
 * @return {*}
 */
/**
 * @description "no type" 没有类型
 * @param c
 * @param b
 * @return {*}
 */
function test(c: number, b: string = '2') {}

[V4.8.5]

[V4.8.4]

[V4.8.3]

  • feat: 拦截异步错误以及增加错误日志功能
  • feat: 匹配 php 的类型声明, #285
  • feat: 新增@符号在自定义信息中自动删除(custom_string_obkoro1~custom_string_obkoro100)
  • feat: 兼容VSCode Insider版本
  • fix: 修复 c 语言添加关键字导致参数解析失败的问题 ##289
  • fix: 修复获取符号未考虑文件的情况
  • fix: 修复函数注释提取箭头函数参数位置错误的问题, #282
  • fix: 修复无法自定义文件后缀的冒号和@符号的问题, #280

[V4.8.2]

// 设置
"fileheader.configObj": {
    "language": {
        // js后缀文件
        "js": {
            "head": "/*",
            "middle": " * @",
            "end": " */",
            // 函数自定义注释符号:如果有此配置 会默认使用
            "functionSymbol": {
              "head": "/******* ", // 统一增加几个*号
              "middle": " * @",
              "end": " */"
            }
        }
    },
}

[V4.8.1]

  • feat: 新增functionWideNum函数注释等宽, 默认为 0 即关闭。
  • feat: 支持tsx文件后缀
  • fix: 支持async函数的参数提取

[V4.8.0]

  • feat: 支持rust语言,自动添加头部注释与函数参数识别
  • feat: 支持cc++的函数参数自动提取
  • feat: 支持php的函数参数自动提取
  • fix: 修复 ts 在 class 中方法前面的 static 等字段导致的参数识别失败
  • fix: 修复go函数注释参数提取时,提取函数签名的问题。

[V4.7.13]

  • fix: specialOptions设置FilePath失效
  • fix: custom_string_obkoro2~custom_string_obkoro100设置异常

[V4.7.12]

  • add: 增加在函数内生成函数注释的功能,配置

设为 true 开启:

"fileheader.configObj": {
  "cursorModeInternal": false // 默认关闭
}

示例:

/**
 * @description: 未开启:注释在函数外
 * @param {*} a
 * @param {*} b
 * @return {*}
 */
function test(a, b) {}
// 某些语言的注释是写在函数内的
function test(a, b) {
  /**
   * @description: 开启后:注释在函数内
   * @param {*} a
   * @param {*} b
   * @return {*}
   */
}
  • 废弃typeParam: 函数注释默认生成 type
/**
 * description: 多了{*}
 * param {*}
 * return {*}
 */

[V4.7.11]

  • fix: 修复版权声明和时间字段的 bug

[V4.7.10]

  • fix: 创建文件自动添加头部注释问题修复

[V4.7.9]

  • fix: 修复获取冒号和感叹号没有做兼容的问题

[V4.7.8]

  • fix: 修复自定义语言冒号未修改成数组形式的问题

[V4.7.7]

[V4.7.6]

[V4.7.5]

  • 新增typeParam,该选项用于控制是否需要{type}, 默认为true
  • 修复specialOptions特殊字段修改后,值为Do not edit的情况

[V4.7.4]

多个自定义信息和版权、时间自定义信息字段设置与输出:

 "fileheader.customMade": {
     "custom_string_obkoro1_date": "Do not edit", // 不带Date前缀的时间
    "Github": "https://github.com/OBKoro1",
    "custom_string_obkoro2": "custom_string_obkoro1~custom_string_obkoro100都可以输出自定义信息",
    "Author": "OBKoro1",
    "custom_string_obkoro1_copyright": "Copyright ${now_year} OBKoro1", // 版权声明 自动替换年份
    "custom_string_obkoro1": "可以输入预定的版权声明、个性签名、空行等"
  }
/**
 * 2020-07-03 14:50:17 // 不带Date字段的时间
 * @Github: https://github.com/OBKoro1
 * custom_string_obkoro1~custom_string_obkoro100都可以输出自定义信息
 * @Author: OBKoro1
 * Copyright 2020 OBKoro1 // 版权字段
 * 可以输入预定的版权声明、个性签名、空行等 // 使用atSymbol字段可以去掉@
 */
  • 修复了 linux 无法获取文件创建时间的问题,如果无法获取该值则默认设为当前时间。
  • 新增草泥马、甩葱少女、全键盘、小键盘、草泥马 2 多种注释图案,查看所有注释图案

甩葱少女

/*
 * _______________#########_______________________
 * ______________############_____________________
 * ______________#############____________________
 * _____________##__###########___________________
 * ____________###__######_#####__________________
 * ____________###_#######___####_________________
 * ___________###__##########_####________________
 * __________####__###########_####_______________
 * ________#####___###########__#####_____________
 * _______######___###_########___#####___________
 * _______#####___###___########___######_________
 * ______######___###__###########___######_______
 * _____######___####_##############__######______
 * ____#######__#####################_#######_____
 * ____#######__##############################____
 * ___#######__######_#################_#######___
 * ___#######__######_######_#########___######___
 * ___#######____##__######___######_____######___
 * ___#######________######____#####_____#####____
 * ____######________#####_____#####_____####_____
 * _____#####________####______#####_____###______
 * ______#####______;###________###______#________
 * ________##_______####________####______________
 */

草泥马 2

/*
 *
 *    ┏┓   ┏┓
 *  ┏┛┻━━━┛┻┓
 *  ┃       ┃
 *  ┃   ━   ┃
 *  ┃ >   < ┃
 *  ┃       ┃
 *  ┃... ⌒ ... ┃
 *  ┃       ┃
 *  ┗━┓   ┏━┛
 *      ┃   ┃
 *      ┃   ┃
 *      ┃   ┃
 *      ┃   ┃  神兽保佑
 *      ┃   ┃  代码无bug
 *      ┃   ┃
 *      ┃   ┗━━━┓
 *      ┃       ┣┓
 *      ┃       ┏┛
 *      ┗┓┓┏━┳┓┏┛
 *        ┃┫┫ ┃┫┫
 *        ┗┻┛ ┗┻┛
 */

全键盘

/*
 *  ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
 *  │Esc│   │ F1│ F2│ F3│ F4│ │ F5│ F6│ F7│ F8│ │ F9│F10│F11│F12│ │P/S│S L│P/B│  ┌┐    ┌┐    ┌┐
 *  └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘  └┘    └┘    └┘
 *  ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
 *  │~ `│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ BacSp │ │Ins│Hom│PUp│ │N L│ / │ * │ - │
 *  ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
 *  │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│ | \ │ │Del│End│PDn│ │ 7 │ 8 │ 9 │   │
 *  ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
 *  │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter  │               │ 4 │ 5 │ 6 │   │
 *  ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤     ┌───┐     ├───┼───┼───┼───┤
 *  │ Shift  │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│  Shift   │     │ ↑ │     │ 1 │ 2 │ 3 │   │
 *  ├─────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ E││
 *  │ Ctrl│    │Alt │         Space         │ Alt│    │    │Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │←─┘│
 *  └─────┴────┴────┴───────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
 */

[V4.7.2]

  • 设置linux下的注释快捷键为: ctrl+meta+ictrl+meta+t

[V4.7.1]

  • 修复headInsertLine结合注释图案无效的问题。

[V4.7.0]

  • 新增一键添加佛祖保佑永无 BUG、神兽护体等注释图案 支持插件提供的多种注释,支持自定义语言的注释形式。

  • designAddHead: 提供注释图案和头部注释结合的形式。 示例

/*
 *                   江城子 . 程序员之歌
 *
 *               十年生死两茫茫,写程序,到天亮。
 *                   千行代码,Bug何处藏。
 *               纵使上线又怎样,朝令改,夕断肠。
 *
 *               领导每天新想法,天天改,日日忙。
 *                   相顾无言,惟有泪千行。
 *               每晚灯火阑珊处,夜难寐,加班狂。
 *
 *
 * Author       : OBKoro1
 * Date         : 2020-04-30 15:51:08
 * LastEditors  : OBKoro1
 * LastEditTime : 2020-05-13 13:48:01
 * FilePath     : \fileHead\test.js
 * Description  : 注释图案和头部注释结合
 * https://github.com/OBKoro1
 */

[V4.6.2]

  • 新增使用工作区注释模板:useWorker, 用以区分工作区配置模板
  • 新建文件黑名单文件不再自动添加头部注释。
  • 插件新增支持dart注释。
  • 修复CheckFileChangediff 检查的精准度以及将FilePath字段也加入 diff 检查。
  • 修复filePathColon在 window 系统下的问题以及无法全部转换的问题。
  • 修复包含特殊字段的变量自动转化为注释的问题。
  • 修复自定义语言注释等宽失效的问题。
  • 修复特殊文件自定义注释失效的问题。

[V4.6.1]

  • 修复更新字段问题

[V4.6.0]

  • 新增新建文件自动添加头部注释,默认开启,配置项为createHeader
  • 新增自动添加头部注释项目黑名单(prohibitItemAutoAdd),场景: 某些项目没有推广头部注释,然后 leader/团队成员反感这种行为时,使用该功能。
  • 新增保存时更新FilePath, 防止因文件迁移导致路径没有更新的情况。
  • 新增自定义语言注释,一次匹配多种文件, 比如 c 语言的h/hpp/cpp/cxx/cc统一修改。
  • 新增通配符*, 如果设置了通配符当没有匹配到文件时,会自动使用通配符设置,目前支持headInsertLine(第几行插入)、beforeAnnotation(注释之前添加)、afterAnnotation(注释之后添加)
  • 新增默认配置中的一些说明。
  • 修复更新 LastEditors/LastEditTime 时没有开启wideSame, 没有限制等宽的问题.
  • 修复因wideSame功能,导致光标无法移动到Description的 bug。

[V4.5.2]

  • 推荐一个新开源的插件:Auto Commit

    这是一个用于 Git 自动 commit 的 VSCode 插件,它可以用来补充之前忘记提交 commit,帮助你把首页的绿色格子填满

[V4.5.0]

  • 文件 diff 检查: 检测文件只变更LastEditorsLastEditTime字段,将回滚该文件,减少无意义的提交。

功能配置以及说明:

"fileheader.configObj": {
  "CheckFileChange": false // 默认关闭
}

使用场景:

对文件进行修改之后又撤销,但是LastEditorsLastEditTime已经变更了,在提交代码的时候很容易忘记恢复它,导致无意义的提交,反正我很经常遇到这个问题。

运行逻辑

  1. 检测 VSCode 当前打开的文件夹的根目录是够有.git文件夹, 没有的话,则退出
  2. 获取触发保存文件的 diff,进行 diff 检查。
  3. 检测当只有LastEditorsLastEditTime变更,其他任何变更都没有的情况下。
  4. 将该文件回滚到本地仓库的最新版本。

关于功能的安全性:

鉴于之前该功能采用pre-commit的方案,造成过严重的 BUG,新功能的破坏性会小很多,并且文件很容易就可以恢复:

目前该功能只针对单个文件进行操作,影响范围会比较小,并且挽回方式也比较简单快捷

假如,我是说假如,再有出现文件被回滚的情况,因为这个操作是即时的,并且在每次保存都会触发,如果误将文件回滚了,在该文件上撤销一次即可将文件内容恢复恢复

[V4.4.1]

  • configObj.wideSame: 新增支持头部注释等宽, 点击查看配置,效果如下
/*
 * Author       : OBKoro1
 * Date         : 2019-09-24 20:25:33
 * LastEditors  : OBKoro1
 * LastEditTime : 2019-12-16 21:16:08
 * FilePath     : /fileHead/test.js
 */
  • 修复php文件无法自动添加注释的问题。
  • 修复shell头部注释第一行没有对齐的问题。

[V4.3.2]

  • 修复filePathColon
  • 关闭报错信息展示,设置showErrorMessagetrue重新开启。

[V4.3.1]

[V4.3.0]

  • 文件超过一定行数不再自动添加头部注释(默认为 100 行)。

  • 只允许文件自动添加头部注释一次:

    如果某个文件曾经自动添加过头部注释,那么插件会记录该文件的路径,在这次 VsCode 编辑器关闭前,都将不再允许该文件自动添加头部注释

    有时候我们并不希望该文件自动添加头部注释,删除也没有用,它会一直手动添加,该功能就是为了用于防止这种情况的。

  • 通过showErrorMessage抛出错误到用户界面。

[V4.2.3]

  • 新增FilePath去掉项目名称的配置
  • 修复FilePath在 window 下的路径问题。

[V4.2.2]

  • 修复FilePath在 window 下面的问题

[V4.2.1]

  • 新增FilePath字段: 生成头部注释时,自动添加文件相对于当前项目的文件路径
  • 有特殊要求的文件注释: 特殊文件头部注释, 以及配套的在注释之前/之后添加内容、指定行数前添加注释
  • 支持移动光标到函数注释的Description上。
  • 新增函数注释输出自定义信息(custom_string_obkoro1)。
  • 修复函数注释Date字段默认为字段顺序问题。
  • 修复自动添加注释, 插入顺序混乱的问题。
  • 修复 readme 文档中的快捷键错误

[V4.1.4]

  • 测试command 'extension.fileheader' not found的问题

[V4.1.3]

  • 修复已知问题

[V4.1.0]

  • pre-commit hooks:对改动的文件进行 diff 检查。

    • 用于检测文件只有最后编辑人/最后编辑时间变更的情况下,将其恢复,并取消commit
    • 功能配置完整的.git文件夹检查,详细的控制台日志输出等。
    • 配置、运行流程以及检测规则
  • 更新最后编辑人、最后编辑时间以及自动添加注释的触发机制更改:

    • 文件变更并且触发保存事件的情况下,才会触发以上事件。
    • 之前是监听vscode保存事件,只要按command+s就会触发以上事件。
  • wiki 新增配置字段,方便更快速查找配置

  • 使用process.on('uncaughtException',fn)拦截错误, 弹窗显示,方便反馈问题

[V4.0.0]

  • 自定义注释中的@::允许全局修改@:,和单独为某些文件修改它们,配置

  • 自动添加注释,现在改为默认打开:自动添加头部注释功能现在比较稳定,应该很多同学不知道这个能力,反正我非常喜欢用!不喜欢的话也可以这样关闭它:

"fileheader.configObj": {
  "autoAdd": false, // 关闭它
}
// 以前
"fileheader.configObj": {
  "config": {
    "prohibitAutoAdd": [
      "json",
      "md",
      "js"
    ],
    "moveCursor": true,
    "dateFormat": "YYYY-MM-DD HH:mm:ss",
  }
}
// 现在
"fileheader.configObj": {
  "prohibitAutoAdd": [
    "json",
    "md",
    "js"
  ],
  "moveCursor": true,
  "dateFormat": "YYYY-MM-DD HH:mm:ss",
}
  • 修复多个换行符,导致换行不彻底的问题。

[V3.9.4]

  • 将 typescript 加入默认支持语言,以使用自动添加注释的功能

[V3.9.3]

  • 新增:生成头部注释后,移动光标到Description所在行,具体规则,点这里
  • 近期在开发函数注释的列出参数的功能,遇到了一个正则问题,开了个issue,正则大佬感兴趣可以帮忙看一下。

[V3.9.2]

  • 修复xxx.component.html匹配不到html类型的 bug

[V3.9.1]

  • 修复afterAnnotation添加在前面的 bug

[V3.9.0]

[V3.8.0]

  • 新增支持a.sh类型注释
  • 新增功能:在customMade(文件头部注释)中,遇到回车、换行情况时,自动在下一行开头添加对应的注释标识符,插件提供了一个开关来关闭它,详情
  • 新增功能:在customMade配置中,使用custom_string_obkoro1属性,允许输出一段自定义的字段,配置信息
  • 修复了---aaaa===aaaafor test这类乱七八糟的配置,插件模板不能工作的问题。
  • 修改了自定义语言匹配逻辑,匹配不到语言,将会匹配一次文件名后缀.类似这个issue提的。
    • 还有一种情况是,比如a.sh文件,实际上,vscode 中的语言为:shellscript不是shell但是用户不知道该语言的名字,导致配置无法生效,所以会在匹配不到语言的时候会再去匹配一下后缀,用户食用起来比较简单。

[V3.7.0]

  • 新增afterAnnotation 配置,用于在注释后方添加配置,场景类似于issue
  • 修复DateLastEditTime字段的顺序与配置中的顺序不同(总是插入到最后)
  • 修复自定义注释有多余空格时,无法自动更新时间的bug
  • 默认在py文件头部注释前面增加内容去掉,有需要的自行添加

[V3.6.0]

[V3.5.0]

#!/usr/bin/env python
# coding=UTF-8
'''
@Author: TavisD
@Date: 2017-10-16 13:03:37
@LastEditors: TavisD
@LastEditTime: 2019-01-11 12:26:24
@Description: file content
'''

[V3.4.0]

  • 自定义语言注释,更多详情,参见配置,以下是一些须知:
    1. 此项配置是最高级别的,会覆盖插件的语言注释格式
    2. 任何语言/文件(新的语言、特殊的文件),用户都可以设置对应的注释符号
    3. 还有一种场景:像issue中提到的,某些库会对注释格式有特殊要求,库会对其识别、处理。插件标准的注释格式并不能满足需求,此时在config.language里添加一项配置即可。
  • 时间格式自定义,两种形式:
    1. 2019-01-19 21:29:11
    2. 2019-01-19

[V3.3.0]

[V3.2.0]

  • 插件支持根据文件后缀,头部注释插入到不同行,比如php:

    <?php
    // 第一行需要为`<?php`否则注释不生效
    /*
     * @Author: OBKoro1
     * @Github: https://github.com/OBKoro1
     * @Date: 2018-12-21 10:49:35
     * @LastEditors: OBKoro1
     * @LastEditTime: 2018-12-21 13:12:37
     * @Description:
     */
    ?>
    
  • 插件新增支持md后缀文件的头部注释,效果如下:

    <!--
    * @Author: OBKoro1
    * @Github: https://github.com/OBKoro1
    * @Date: 2018-12-20 13:43:44
    * @LastEditors: OBKoro1
    * @LastEditTime: 2018-12-20 13:48:36
    * @Description:
    -->
    

    我平常写markdown比较多,可以用于记录md的创建日期和修改日期。

  • 插件支持在线修改配置中的数据,修改配置,再也不用重启 VsCode 了!

  • 更新函数注释的默认配置,msg替换为description,这样description在 VsCode 中也会高亮:

    /**
     * @description:
     * @param {type}
     * @return:
     */
    

[V3.1.0]

  • 新增自动添加头部注释功能,再也不用担心忘记给文件添加头部注释了!前往配置了解详情.

[V3.0.0]

  • 新增自定义注释的符号,注释生成的样子,全部由你掌控,详情请看插件配置

  • 头部注释和函数注释现在支持中文做为注释属性了,比如:

    "fileheader.cursorMode": {
      "Date": "Do not edit",
      "作者": "your name",
      "功能": ""
    }
    
  • 函数注释新增 Date 字段,设置该字段可生成函数注释的时间

  • 修复文件行数不够 20 行时,无法更新最后编辑时间的 bug

  • 修复函数注释在最后一行无法生成的 bug

[V2.9.0]

  • 插件新增支持vue后缀文件的头部注释,效果如下:

    <!--
    * @Description:
    * @Author: OBKoro1
    * @Github: https://github.com/OBKoro1
    * @Date: 2018-11-16 14:38:05
    * @LastEditors: OBKoro1
    * @LastEditTime: 2018-11-19 14:32:45
    -->
    

[V2.8.0]

  • 插件新增支持html后缀文件的头部注释,效果如下:

    <!--
    * @Description:
    * @Author: OBKoro1
    * @Github: https://github.com/OBKoro1
    * @Date: 2018-11-16 14:38:05
    * @LastEditors: OBKoro1
    * @LastEditTime: 2018-11-19 14:32:45
    -->
    

[V2.7.0]

  • 新增WiKi,关于插件的文档都在这里!

  • 插件新增支持vb后缀文件注释,按下快捷键检测为vb后缀的文件,效果如下

    // 头部注释
    '
    ' @Description:
    ' @Author: OBKoro1
    ' @Github: https://github.com/OBKoro1
    ' @Date: 2018-11-08 11:09:02
    ' @LastEditTime: 2018-11-08 13:49:26
    '
    // 函数注释
    '
    ' description:
    ' param {type}
    ' return:
    '
    
  • 修复必须LastEditorsLastEditTime字段同时存在才会更新最后编辑时间的 bug

    同时存在或者单独使用LastEditorsLastEditTime字段都支持更新最后编辑时间和最后编辑人

  • 新增支持注释格式

[V2.6.0]

  • 新增常见问题 readme
  • 修复部分场景下最后编辑时间不更新问题
  • 对单个文件连续操作,最后编辑时间与上次的最后编辑时间相差 6666 毫秒才会更新

[V2.5.0]

  • 支持 python 注释,按下快捷键检测为 py 后缀的文件,生成'''形式的文件头部注释和函数注释。
  • 头部注释 Date 字段(文件创建时间)从当前时间改为文件的创建时间

[V2.0.0]

  • 新增在光标出添加注释功能(通常用于函数/方法注释),同样的支持用户自定义注释选项
  • 修复文件头部注释的默认配置不可删除,配置顺序不可移动的问题
  • 新增 mac 快捷键