我怎样才能在崇高的文本中格式化飞镖代码

How can I format dart code in sublime text

提问人:Muhmmd Fa 提问时间:10/5/2023 最后编辑:ZahraMuhmmd Fa 更新时间:10/7/2023 访问量:126

问:

我下载了带有 dart 的 flutter,并开始对崇高的文本进行编码,但是当我按下 formatt 代码时,它给了我错误的消息,即“找不到此类型文件的格式化程序(dart)”。 但是当我运行这个命令“dart format . ”时,代码将被格式化,我的问题是我如何在 sublime 中格式化代码而不是在 cmd 中编写该命令?

注意:

  • 当我在 cmd 中运行时,它会显示它的版本,但如果我运行它,它无法像我下载的 codeformatter 包那样识别它dart --versiondartfmt --version
flutter dart sublimetext3 格式化程序 dartfmt

评论

0赞 Richard Heap 10/5/2023
尝试dart format --version

答:

0赞 SrPanda 10/7/2023 #1

如果你专门指的是插件格式化程序,你不能,不支持 dart,但你可以按照 git 页面上的说明轻松实现它。

如果你不知道/不想自己做,就做这两件事:

使用此代码创建文件(该文件位于 Windows 上)。${packages}/Formatter/modules/formatter_dartformat.py%APPDATA%/Sublime Text/Packages/Formatter/modules

import logging
from ..core import common

log = logging.getLogger(__name__)

EXECUTABLES = ['dart']
MODULE_CONFIG = {
    'name': 'DartFormat', 
    'source': 'https://dart.dev/tools/dart-format', 

    'uid': 'dartformat', 
    'type': 'beautifier',                  
    'syntaxes': ['dart'], 

    'executable_path': '',
    'args': ['format'],
}

class DartformatFormatter:
    def __init__(self, *args, **kwargs):
        self.view = kwargs.get('view', None)
        self.uid = kwargs.get('uid', None)
        self.region = kwargs.get('region', None)
        self.is_selected = kwargs.get('is_selected', False)
        self.pathinfo = common.get_pathinfo(self.view.file_name())

    def get_cmd(self):
        executable = common.get_executable(
            self.view, self.uid, EXECUTABLES, runtime_type=None
        )

        if executable is not None: 
            args = common.get_args(self.uid)
            
            cmd = [executable]
            cmd.extend(args or MODULE_CONFIG['args'])
            
            return cmd
        else:
            return None


    def format(self, text):
        cmd = self.get_cmd()
        log.debug('Current arguments: %s', cmd)
        cmd = common.set_fix_cmds(cmd, self.uid)
        if not cmd:
            return None

        try:
            proc = common.exec_cmd(cmd, self.pathinfo['cwd'])
            stdout, stderr = proc.communicate(text.encode('utf-8'))

            errno = proc.returncode
            if errno > 0:
                log.error(
                    'File not formatted due to an error (errno=%d): "%s"', 
                    errno, stderr.decode('utf-8')
                )
            else:
                return stdout.decode('utf-8')
        except OSError:
            log.error(
                'An error occurred while executing the command: %s', 
                ' '.join(cmd)
            )

        return None

然后将该模块添加到位于 的配置文件中。${packages}/User/Formatter.sublime-settings

{
    // The other variables

    "formatters": {

        "dartformat": {
            "disable": false,
            "format_on_save": false,
            "syntaxes": ["dart"],
            "args": ["format", "-l", "360"],
            "executable_path": "O:/Flutter/bin/dart",
        },

        // The other formatters that you may have
    }
}