이미 사용자 정의 빌드 시스템을 사용하고 있으므로 약간의 플러그인 코드와 사용자 정의 빌드 시스템의 일부 수정을 사용하여 이런 식으로 끌 수 있습니다.
사용자 지정 빌드 시스템에서는 빌드를 실행하기 위해 실행할 명령을 지정하는 target
이라는 속성을 사용할 수 있습니다. 이 옵션을 제공하지 않으면 (대부분의 빌드 시스템이 제공하지 않음) 기본값은 exec
입니다. 확장을 수행 할 수있는 사용자 지정 명령을 직접 만들 수 있습니다.
간단한 예제로 User
패키지에 custom_build.py
과 같은 이름으로 저장할 수있는 다음 python 소스 코드를 참조하십시오. 이 명령은 my_custom_build
이라는 새 명령을 구현합니다. 이 명령을 실행하면 변수를 확장 한 다음 기본값으로 exec
명령을 실행하여 인수를 변형합니다.
import sublime, sublime_plugin
# List of variable names we want to support
custom_var_list = ["proj_var_1"]
class MyCustomBuildCommand(sublime_plugin.WindowCommand):
def createExecDict(self, sourceDict):
global custom_var_list
# Get the project specific settings
project_data = self.window.project_data()
project_settings = (project_data or {}).get ("settings", {})
# Get the view specific settings
view_settings = self.window.active_view().settings()
# Variables to expand; start with defaults, then add ours.
variables = self.window.extract_variables()
for custom_var in custom_var_list:
variables[custom_var] = view_settings.get (custom_var,
project_settings.get (custom_var, ""))
# Create arguments to return by expanding variables in the
# arguments given.
args = sublime.expand_variables (sourceDict, variables)
# Rename the command paramter to what exec expects.
args["cmd"] = args.pop ("command", [])
return args
def run(self, **kwargs):
self.window.run_command ("exec", self.createExecDict (kwargs))
구체적으로는, 먼저 현재보기에 지정된 설정 변수를 찾습니다, 그들은이 프로젝트 별 설정에서,이 발견되지 않은 경우. 아직 찾을 수없는 변수는 빈 문자열을 기본값으로 사용합니다.
당신과 같은 사용자 지정 빌드 시스템을 지정해야합니다 : 이제 사용자 정의 명령이
exec
대신에 실행되어야 함을 지정
target
필드가
{
"target": "my_custom_build",
"command": ["build.sh", "${proj_var_1}"],
"working_dir": "${project_path:${folder}}",
"shell": false
}
참고. 명령 행을 cmd
으로 지정하는 대신 여기에 command
으로 지정합니다.
Sublime은 사용자 정의 명령을 실행하기 전에 빌드 시스템에서 알려진 키 값을 미리 확장하는 것처럼 보입니다. 결과적으로 cmd
키의 변수를 확장하려고 시도하여 ${proj_var_1}
이 빈 문자열로 확장되어 명령에 표시되기도 전에 스트링이 제거됩니다.
이 문제를 해결하기 위해 키의 이름을 Sublime이 혼자 남겨두고 코드에서 다시 바꿀 수 있도록 키의 이름을 변경합니다.
위에서 작성한 코드는 빌드 시스템 어디에서나 볼 수있는 변수를 확장하려고 시도하지만이 방법으로 cmd
키를 보호하기 위해 특별히주의를 기울입니다. 예를 들어 working_dir
키에서 맞춤 변수를 사용하려면 비슷한 작업을 수행해야합니다.
표준 빌드 시스템 뒤에있는 프로그램 인'exec.py'의 수정 된 버전을 생성하지 않으면 불가능합니다. – MattDMo