我下载了带有 dart 的 flutter,并开始在 sublime text 上编码,但是当我按 formatt code 时,它给了我错误的消息,即 “找不到此类型文件(dart)的格式化程序。”但是当我运行此命令“dart”时format . " 在代码将被格式化的目录中,我的问题是如何在 sublime 中格式化代码而不是在 cmd 中编写该命令?
注:
dart --version
时,它会显示其版本,但是如果我运行 dartfmt --version
,它无法识别它以及我下载的 codeformatter 包如果您具体指的是插件formatter,则不能,不支持dart,但您可以按照git页面上的说明轻松实现它。
如果您不知道/想自己做,只需做以下两件事:
使用此代码创建文件
${packages}/Formatter/modules/formatter_dartformat.py
(该文件位于 Windows 上的 %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
}
}