2013-02-26 3 views
1

vim 접기를 fountain.io 마크 업 언어의 기존 구문 파일에 구현하려고합니다. 기존 구문 파일은 다음과 같습니다. http://www.vim.org/scripts/script.php?script_id=3880vim 구문 접기 (실수로) 중첩 된 접기가 생성됩니다.

하지만 내가하는 일과 관계없이 내 접히는 영역은 내가 예상하는 곳에서 끝나지 않습니다. regexes는 검색시 테스트 할 때 완벽하게 작동합니다. 그러나 구문 영역에서 사용할 때 일련의 중첩 된 접기가 만들어졌습니다. 해당 줄에서 접기가 시작되고 기존 접기 안에 다음 접기가 만들어집니다. 기본적으로 나는 배는 INT 또는 EXT로 시작하는 행에서 시작되도록 다음을 수행하려고하고 라인에 종료 후에 종료했습니다 또는 라인>로 시작

syn region fountainScene start="^\(INT\|EXT\)" end="^\(\(\L\)* TO:\|\s*>\(.*\)\)$" fold transparent contains=fountainCharacter,fountainDialogue,fountainParenthetical,fountainSceneHeading,fountainTransition 

심지어 낯선 사람, 내가 'end'인수에서 \ ze를 사용하여 일치하는 줄 앞 줄을 얻으면 예상대로 작동합니다. 접기 너머의 줄에서 접기를 멈추고 마지막 줄은 접히지 않은 채로 둡니다. 다음은 말한다 선 위에 접는 중지됩니다 "잘라 내기"문제를 해결하려면

\n\ze\(\L\)* TO:\n 

, 나는 기본적으로 처음부터 구문 파일을 재건하기 시작했다. 여기까지 파일에 무엇이 있는지 (hi 명령 제외) 정규 표현식을 서로 겹치지 않도록 광범위하게 수정했습니다. 원래 정규 표현식에이 문제를했고 나는 그것이 원인 일 수 있습니다 생각 : 당신이 제공하고, 내가 어떤 식 으로든 불분명 한 경우 알려 주시기 바랍니다 수있는 모든 도움을

syn match fountainCharacter "^\(\s\)*\n\zs\(INT\|EXT\)\@!\(\L\)*[^:]$" 
syn region fountainDialogue matchgroup=fountainCharacter start="^\(\s\)*\n\zs\(INT\|EXT\)\@!\(\L\)*[^:]$" end="^\s*$" contains=fountainCharacter,fountainParenthetical 
syn match fountainParenthetical "^\s*\((.*)\)$" 
syn region fountainSceneHeading start="^\(INT\|EXT\)" end="$" contains=fountainSceneNumber,fountainBoneyard,fountainNotes 
syn match fountainTransition "^\(\L\)* TO:$" 
syn region fountainScene start="^\(INT\|EXT\)" end="\n\ze\(\L\)* TO:\n" fold transparent contains=fountainCharacter,fountainDialogue,fountainParenthetical,fountainSceneHeading 

감사합니다. 파이썬 지원으로 컴파일 된 MacVim 버전 7.3.646 사용자 정의를 사용하고 있습니다.

답변

0

나는 이것을 알아 냈습니다. 내 요소 중 하나가 "끝"인수를 넘어 확장되었습니다. 내 syn 영역에서 "keepend"인수를 사용해야했습니다.

이 라인 고정 모든 :

syn region fountainScene start="^\s*\(\.\|INT\. \|EXT\. \|INT\./EXT\. \|INT/EXT\. \|INT \|EXT \|INT/EXT \|I/E \|int\. \|ext\. \|int\./ext\. \|int/ext\. \|int \|ext \|int/ext \|i/e \)" end="^\(\(\L\)* TO:\|\s*>[^<]*\)$" fold transparent keepend 

자세한 내용은 :he keepend

참조