첫 번째 단계는 편집을 위해 XML 구문 정의를 여는 것입니다. 어떻게하는지 설명하겠습니다. tmLanguage
(XML 형식) 파일을 참조하는 내용이 오래된 경우 Sublime Text 3은 기본 구문 강조 표시에 모두 sublime-syntax
(YAML 형식) 파일을 사용합니다.
공식적인 git repo https://github.com/sublimehq/Packages을 복제하는 것이 좋습니다 (서브 라이브러리 텍스트를 선택하는 방식으로 패키지를 복제하는 방법에 대한 자세한 내용은 repo의 readme 지침을 따르십시오). 그러면 어떤 패키지도 포함시킬 수 있습니다. git을 사용하여 공식 버전을 공식 버전으로 변경합니다 (이 사용자 정의 버전을 사용하여 ST에서 자동으로 업그레이드되는 기본 버전을 재정의하기 때문에). (기본적으로, 당신은 Preferences -> Browse Packages
메뉴 항목으로 이동하여 ST에서 액세스 할 수있는 당신의 숭고한 Packages
폴더에있는 REPO에서 XML
폴더를합니다.)
우리가에 관심이 파일은 XML/XML.sublime-syntax
입니다. 보시다시피 정규 표현식으로 가득차 있습니다. 우리가 가장 관심을 갖는 부분은 XML 속성을 구문 분석하는 부분입니다.
double-quoted-string:
을 검색하십시오. 바로이 라인에서 다음 붙여 넣기 : 첫 번째 문자 (match
전에 -
)이 있었다 원래 - match: '"'
으로 정렬한다
- match: '"(?=%function\(self\))'
scope: string.quoted.double.xml punctuation.definition.string.begin.xml
push:
- clear_scopes: true
- match: '"'
scope: string.quoted.double.xml punctuation.definition.string.end.xml
pop: true
- include: scope:source.lua
하는 것으로.
저장하십시오. 그리고 그게 다야!
기본적으로, 우리가하고있는 일입니다 : 일반 따옴표 ("
)는 리터럴 문자열 %function(self)
다음에 따옴표를 찾습니다 구문 검사 전에
- . 이는 lookahead를 사용하여 수행하므로
include
source.lua
범위에 해당하고 %function(self)
텍스트/코드가 LUA (나머지 LUA 코드와 함께)로 올바르게 강조 표시되도록 할 수 있습니다.
- LUA 코드가 XML 텍스트/특성처럼 보이지 않도록하려면
clear_scopes: true
을 사용합니다.
- 그런 다음 닫기 XML 속성 인 quote (
"
)를 찾아 스택에서 컨텍스트를 "팝"하고 다시 일반 XML 태그 내부로 가져옵니다.(내가 end
없이 "
을 찾지 않기 때문에, end
은 여전히 LUA 구문 정의에 의해 선택 될 것입니다. 그렇지 않으면 XML 구문에서 일치 정규식과 범위를 복제해야합니다. 이는 적합하지 않습니다 .)
(당신은 쉽게 미래 공식 변경 내용을 병합 할 수 있도록, 이러한 변경 사항을 해당 지역의 repo에 새로운 지점을 만들고, 커밋 할 수 있습니다.)
하십시오 당신이 할 수있는 LUA가 포함 된 예제 XML 파일을 복사하여 붙여 넣을 수 있습니다. 구문을 업데이트하는 데 문제가 있습니다. 다음 단계를 수행하는 방법에 대한 세부 단계로 응답하십시오. –
[여기 있습니다.] (http://hastebin.com/vawicezuxu.xml) 대단히 감사합니다! –