2013-02-26 3 views
1

기존 파일 형식의 파일 형식 구문과 강조 표시를 확장하고 싶습니다. 다음과 같이 나의 새로운 파일 구문의 기본 구조는 다음과 같습니다vim 파일 구문을 다른 파일 형식으로 확장하지 않음

" Some local (new) syntax that I want to match 
syn match upfOperator "[&|~><!)(*#%@+/=?:;}{,.\^\-\[\]]" 
syn match upfDefines "\$\S\+" 
syn match upfDefines "\${\S\+}" 
syn match upfParens "[)(}{\[\]]" 

" load syntax that I want to extend. This contains it's own highlight commands 
runtime syntax/dtcl.vim 

" New highlight statements 
hi link upfOperator   Statement 
hi link upfDefines   Constant 
hi link upfParens   Constant 

문제는 dtcl.vim 파일에 포함 된 모든 구문 강조되지 않는 것입니다. 나는 dctl 파일을 열 수 있으며 강조 표시가 작동합니다. 그러나 다른 파일 형식 (* .upf)을 열면 upf.vim이로드되지만 dtcl.vim은로드되지 않습니다.

dctl.vim에는 파일을로드하지 못하게하는 "if syntax defined"유형 명령이 없습니다.

답변

2

dctl.vim이 올바른 Vim 구문 스크립트 인 경우 모든 구문을 사용해야하므로 기존 구문 항목 (:syntax clear)은 지워집니다. 따라서 자신의 upf... 정의를 :runtime 아래로 이동해야합니다.

제대로 기존의 구문을로드하려면 다음 명령을 사용한다 :

runtime! syntax/dctl.vim syntax/dctl/*.vim 

당신의 :runtime syntax/dctl.vim는 첫 번째 발생없이 구문 확장을 고려하고있다.

그 외에도 아직 다루지 않은 새로운 구문 요소를 추가하는 경우에만 접근 방식에 문제가 없습니다 (해당되는 경우 containedin=...을 사용해야 할 수도 있음). 실제로 정의 된 내용을 확인하려면 :syn list 명령을 사용할 수 있습니다.

관련 문제