サブラインテキスト3でビルドシステムを作成するにはどうすればよいですか?"cmd"
はシバンに置き換えられますSublime Textを作成する方法3シバンを読み込むビルドシステム
具体的には、shebangで指定されたPythonのバージョンを使用するようにPythonビルドシステムを変更し、shebangが存在しない場合はデフォルトを使用する方法がありますか?
サブラインテキスト3でビルドシステムを作成するにはどうすればよいですか?"cmd"
はシバンに置き換えられますSublime Textを作成する方法3シバンを読み込むビルドシステム
具体的には、shebangで指定されたPythonのバージョンを使用するようにPythonビルドシステムを変更し、shebangが存在しない場合はデフォルトを使用する方法がありますか?
サブライムビルドシステムには、target
という名前のオプションがあり、ビルドを実行するために呼び出されるWindowCommand
が指定されています。デフォルトでは、これは内部のexec
コマンドです。シバンのファイルを調べてそのインタープリタを使用する独自のコマンドを作成するか、そうでない場合はデフォルトを使用することができます。例えば
(警告:私はPythonでスーパー堪能じゃないので、これはおそらく、非常に醜いです):
import sublime, sublime_plugin
class ShebangerCommand(sublime_plugin.WindowCommand):
def parseShebang (self, filename):
with open(filename, 'r') as handle:
shebang = handle.readline().strip().split (' ', 1)[0]
if shebang.startswith ("#!"):
return shebang[2:]
return None
def createExecDict(self, sourceDict):
current_file = self.window.active_view().file_name()
args = dict (sourceDict)
interpreter = args.pop ("interpreter_default", "python")
exec_args = args.pop ("interpreter_args", ["-u"])
shebang = self.parseShebang (current_file)
args["shell_cmd"] = "{} {} \"{}\"".format (shebang or interpreter,
" ".join (exec_args),
current_file)
return args
def run(self, **kwargs):
self.window.run_command ("exec", self.createExecDict (kwargs))
あなたはPythonのファイル(例えばshebanger.py
)としてPackages/User
でこれを保存します。
これは与えられた引数を収集し、ビルドがトリガされたウィンドウの現在アクティブなビューのファイルを調べて、最初の行がシバンであるかどうかを確認してから引数を合成しますexec
コマンドに必要なコマンドを実行して実行します。
デフォルトのpythonビルドシステムでは、現在のファイルを構築しており、引数として-u
を渡すと仮定しているため、このコマンドも同様に複製されます。ただし、シバン行の引数は無視されるため、このコードは100%正確ではありませんが、一般的な考え方を得ることができます。
使用で、あなたはこのように、デフォルトPython.sublime-build
ファイルを変更します:バリアントに私たちは通訳の引数が何であるかをオーバーライドすること
{
// WindowCommand to execute for this build
"target": "shebanger",
// Use this when there is no shebang
"interpreter_default": "python",
// Args to pass to the interpreter
"interpreter_args": ["-u"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8"},
"variants":
[
{
"name": "Syntax Check",
"interpreter_args": ["-m py_compile"],
}
]
}
お知らせ。必要に応じて、デフォルトのインタプリタも上書きすることもできます。
標準.sublime-build
ファイルを使用してこれを行う唯一の方法は、ファイルを別のスクリプトに渡すことです。このスクリプトは、シバンを解析して正しいPythonバージョンに渡します。
また、build variantsを指定することもできますが、希望するビルドバリアントを手動で選択する必要があります。
私はシェバング
これは非常に見えるに従ってバージョンを検出するために、PYランチャーを使用し、Windowsの
マイpython.sublimeビルド有望な - 私はあなたがそれが行く方法を知ってみましょう。ありがとうございました! –