Python Header " 和 ' 替换问题
Opened this issue · 3 comments
注意!很多问题都可以在配置字段查看所有配置中和issue里得到解决!
注意!很多问题都可以在配置字段查看所有配置中和issue里得到解决!
注意!很多问题都可以在配置字段查看所有配置中和issue里得到解决!
注意:
- 可以先试一下常见问题中的方法.
- 然后搜一搜以前关闭的issue看有没有相似的问题可以帮助解决问题。
- 打开
fileheader.configObj.showErrorMessage
看看没有没有报错信息 - 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(Stackoverflow)
https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#strings (Black 官方文档)
错误日志(选填):
希望可以直接生成双引号格式的 File header
突然想到查一下js语法,发现可以自定义python的注释形式,如下
"python": {
"head": "\"\"\"",
"middle": "",
"end": "\"\"\"",
"functionSymbol": {
"head": "\"\"\"",
"middle": "@",
"end": "\"\"\""
},
"functionParams": "py"
}
当插件和格式化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": """"",
}
},
}