Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python Header " 和 ' 替换问题 #580

Open
RTQS1792 opened this issue Jun 6, 2023 · 3 comments
Open

Python Header " 和 ' 替换问题 #580

RTQS1792 opened this issue Jun 6, 2023 · 3 comments

Comments

@RTQS1792
Copy link

RTQS1792 commented Jun 6, 2023

注意!很多问题都可以在配置字段查看所有配置中和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(Stackoverflow)
https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#strings (Black 官方文档)

错误日志(选填):

怎么生成错误日志?

@RTQS1792 RTQS1792 changed the title Python Header " 和 ’ Python Header " 和 ' 替换问题 Jun 6, 2023
@Antonio-hi
Copy link

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

@RTQS1792
Copy link
Author

RTQS1792 commented Aug 8, 2023

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

"python": {
                "head": "\"\"\"",
                "middle": "",
                "end": "\"\"\"",
                "functionSymbol": {
                    "head": "\"\"\"",
                    "middle": "@",
                    "end": "\"\"\""
                },
                "functionParams": "py"
            }

@flashlxy
Copy link

当插件和格式化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": """"",
}
},
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants