OBKoro1 / koro1FileHeader

VSCode插件:自动生成,自动更新VSCode文件头部注释, 自动生成函数注释并支持提取函数参数,支持所有主流语言,文档齐全,使用简单,配置灵活方便,持续维护多年。
MIT License
5.65k stars 274 forks source link

Python Header " 和 ' 替换问题 #580

Open RTQS1792 opened 1 year ago

RTQS1792 commented 1 year ago

注意!很多问题都可以在配置字段查看所有配置中和issue里得到解决!

注意!很多问题都可以在配置字段查看所有配置中和issue里得到解决!

注意!很多问题都可以在配置字段查看所有配置中和issue里得到解决!

注意:

  1. 可以先试一下常见问题中的方法.
  2. 然后搜一搜以前关闭的issue看有没有相似的问题可以帮助解决问题。
  3. 打开fileheader.configObj.showErrorMessage看看没有没有报错信息
  4. issue提的越清晰,越容易定位问题/找到bug,越快速的解决问题。

注意!请一定要按照规范来提Issue,这样问题能更快的得到解决!

注意!请一定要按照规范来提Issue,这样问题能更快的得到解决!

注意!请一定要按照规范来提Issue,这样问题能更快的得到解决!

描述bug(必填)

一个清楚而简洁的bug描述。

注释设置(必填):

VsCode设置:

// 配置填在这里面
 "fileheader.configObj": {

        "createFileTime": true,
        "language": {
            "languagetest": {
                "head": "/$$",
                "middle": " $ @",
                "end": " $/",
                "functionSymbol": {
                    "head": "/** ",
                    "middle": " * @",
                    "end": " */"
                },
                "functionParams": "js"
            }
        },
        "autoAdd": false,
        "autoAddLine": 100,
        "autoAlready": true,
        "annotationStr": {
            "head": "/*",
            "middle": " * @",
            "end": " */",
            "use": false
        },
        "headInsertLine": {
            "php": 2,
            "sh": 2
        },
        "beforeAnnotation": {
            "文件后缀": "该文件后缀的头部注释之前添加某些内容"
        },
        "afterAnnotation": {
            "文件后缀": "该文件后缀的头部注释之后添加某些内容"
        },
        "specialOptions": {
            "特殊字段": "自定义比如LastEditTime/LastEditors"
        },
        "switch": {
            "newlineAddAnnotation": true
        },
        "supportAutoLanguage": [],
        "prohibitAutoAdd": [
            "json"
        ],
        "folderBlacklist": [
            "node_modules",
            "文件夹禁止自动添加头部注释"
        ],
        "prohibitItemAutoAdd": [
            "项目的全称, 整个项目禁止自动添加头部注释, 可以使用快捷键添加"
        ],
        "moveCursor": true,
        "dateFormat": "YYYY-MM-DD HH:mm:ss",
        "atSymbol": [
            "@",
            "@"
        ],
        "atSymbolObj": {
            "文件后缀": [
                "头部注释@符号",
                "函数注释@符号"
            ]
        },
        "colon": [
            ": ",
            ": "
        ],
        "colonObj": {
            "文件后缀": [
                "头部注释冒号",
                "函数注释冒号"
            ]
        },
        "filePathColon": "路径分隔符替换",
        "showErrorMessage": false,
        "writeLog": false,
        "wideSame": true,
        "wideNum": 13,
        "functionWideNum": 12,
        "CheckFileChange": false,
        "createHeader": false,
        "useWorker": false,
        "designAddHead": false,
        "headDesignName": "random",
        "headDesign": false,
        "cursorModeInternalAll": {},
        "openFunctionParamsCheck": true,
        "functionParamsShape": [
            "[",
            "]"
        ],
        "functionBlankSpaceAll": {},
        "functionTypeSymbol": "*",
        "typeParamOrder": "type param",
        "customHasHeadEnd": {},
        "throttleTime": 60000,
        "functionParamAddStr": "",
        "NoMatchParams": "no show param"
    },
    "fileheader.customMade": {

        "Author": "Hanqing Qi",
        "Date": "Do not edit", // 文件创建时间(不变)
        // 文件最后编辑者
        "LastEditors": "Hanqing Qi",
        "LastEditTime": "Do not edit", // 文件最后编辑时间
        "FilePath": "Do not edit", // 文件在项目中的相对路径 自动更新
        "Description": "" // 文件描述
    },

文件后缀(必填): .py

如:test.js 的后缀为 js

你得到的注释(必填):

你生成的注释为:

// 注释贴在这里面
'''
Author: Hanqing Qi
Date: 2023-06-02 16:24:58
LastEditors: Hanqing Qi
LastEditTime: 2023-06-02 17:03:14
FilePath: /Blimps_Team/Python/UDP_Example/UDP_Client.py
Description: This is the file to test the UDP connection between ESP32 and PC
'''

也可以贴上截图:

预期的行为(必填):保存时注释自动更新时间,作者,路径等

预期得到的注释/行为:

// 预期行为的注释贴在这里
'''
Author: Hanqing Qi
Date: 2023-06-02 16:24:58
LastEditors: Hanqing Qi
LastEditTime: (新时间)
FilePath: /Blimps_Team/Python/UDP_Example/UDP_Client.py
Description: This is the file to test the UDP connection between ESP32 and PC
'''

也可以贴上截图:

屏幕截图(选填)

如果方便的话,添加截图来帮助解释你的问题:

问题相关(选填)

在这里添加关于这个问题的任何其他上下文。 插件生成的python头文件默认使用{'''}而不是{“”“}。然而主流的几个python formatter都会默认将{'''}替换为{"""}。替换后的header无法被插件识别,保存时无法再自动更新。 在config文件中并没有找到相关的变量,尝试自定义.py文件的header格式,但是会出现

"languagetest": {
                "head": """"", // 此处语法冲突
                "middle": " $ @",
                "end": " $/",
                "functionSymbol": {
                    "head": "/** ",
                    "middle": " * @",
                    "end": " */"
                },
                "functionParams": "js"
            }

目前唯一解决办法(以black formatter)为例 在 Black-formatter: Args 中添加 “--skip-string-normalization” 字段, formatter将会自动忽略引号的格式。 具体回答见如下: https://stackoverflow.com/questions/64530101/the-black-formatter-python(Stackoverflowhttps://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#strings (Black 官方文档)

错误日志(选填):

怎么生成错误日志?

Antonio-hi commented 1 year ago

希望可以直接生成双引号格式的 File header

RTQS1792 commented 1 year ago

突然想到查一下js语法,发现可以自定义python的注释形式,如下

"python": {
                "head": "\"\"\"",
                "middle": "",
                "end": "\"\"\"",
                "functionSymbol": {
                    "head": "\"\"\"",
                    "middle": "@",
                    "end": "\"\"\""
                },
                "functionParams": "py"
            }
flashlxy commented 1 year ago

当插件和格式化black插件配合使用时,black格式化python文档后会把插件生成的头部信息中’’’自动转换为”””。 下次再存盘文件时koroFileHeader 插件检测不到自己要修改的头部,致使头部信息不更新。

解决方案:

1、在vscode用户配置文件中blackArgs节点配置一下忽略把’’’自动更改为“””的选项(此项配置在最新版的vscode中会导致一个同步配置失败,因此要使同步正常的话,需要在每个项目里工作区的配置文件都要添加这项忽略配置,这样显得相当麻烦),因此我们最好采用第二种方案。

"python.formatting.blackArgs": [
        "--skip-string-normalization"
]

2、在用户的配置文件中配置koroFileHeader 插件配置项增加python语言的配置项,并把head节点head和end节点都设置为 "\"\"\""

// 插件配置项 "fileheader.configObj": { ... // 自定义语言注释符号,覆盖插件的注释格式 "language": { ... // py后缀文件 "python": { "head": "\"\"\"", "middle": "", "end": "\"\"\"", } }, }