2016-10-13 5 views
3

XML 문자열 안에 LUA를 많이 코딩하는 상황이 있습니다. and it looks quite ugly, to be honest. syntax highlighting for the LUA, since that's the main focus of the file을 가질 수 있으면 매우 좋을 것입니다. 나는 이것이 확실히 지원된다는 것을 확신한다. (분명히 SQL은 어떤 경우에는 PHP 내부에서 강조 표시된다.) 그러나 나는 구문 파일을 편집하는 방법을 찾았고 솔직히 말이다. 솔루션 중 일부는 심지어 내가 .tmLanguage 파일을 편집해야한다고 제안하는 것처럼 보이지만 그 파일 중 하나를 찾을 수없고 sublime-syntax 파일 중 어느 것도 동일한 종류의 형식으로 보이지 않습니다. 이 상황을 만드는 경우Sublime Text 3의 XML 인용 부호 안에 LUA 구문 강조 표시를 얻으려면 어떻게해야합니까?

은 쉽게, 루아 가 포함 된 문자열은 항상"%function(self)로 시작하고 그들은 end" 항상 끝 , 나는 단지 정말 XML이 강조 기능을합니다.

+1

하십시오 당신이 할 수있는 LUA가 포함 된 예제 XML 파일을 복사하여 붙여 넣을 수 있습니다. 구문을 업데이트하는 데 문제가 있습니다. 다음 단계를 수행하는 방법에 대한 세부 단계로 응답하십시오. –

+0

[여기 있습니다.] (http://hastebin.com/vawicezuxu.xml) 대단히 감사합니다! –

답변

1

첫 번째 단계는 편집을 위해 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를 사용하여 수행하므로 includesource.lua 범위에 해당하고 %function(self) 텍스트/코드가 LUA (나머지 LUA 코드와 함께)로 올바르게 강조 표시되도록 할 수 있습니다.
  • LUA 코드가 XML 텍스트/특성처럼 보이지 않도록하려면 clear_scopes: true을 사용합니다.
  • 그런 다음 닫기 XML 속성 인 quote (")를 찾아 스택에서 컨텍스트를 "팝"하고 다시 일반 XML 태그 내부로 가져옵니다.(내가 end없이 "을 찾지 않기 때문에, end은 여전히 ​​LUA 구문 정의에 의해 선택 될 것입니다. 그렇지 않으면 XML 구문에서 일치 정규식과 범위를 복제해야합니다. 이는 적합하지 않습니다 .)

(당신은 쉽게 미래 공식 변경 내용을 병합 할 수 있도록, 이러한 변경 사항을 해당 지역의 repo에 새로운 지점을 만들고, 커밋 할 수 있습니다.)

lua inside xml

+0

당신을 진심으로 환영합니다. :) 예를 들어 범위'source.lua'를 사용하는 방법을 알고있는 것처럼 몇 개의 연결 점이 누락 된 것 같습니다. 그래서 여기에있는 설명에 대한 설명을 요청하십시오 :) –

관련 문제