2012-06-14 3 views
0

다음 두 줄의 코드가 TCL에서 구문 색칠을 위반하고있는 것으로 보입니다.TCL for Sublime Text 2의 이스케이프 문자는 어떻게 수정합니까?

regsub -all {/} $original {\\\\} target  # The last } is being escaped 

set grep_keyword [string trim $grep_keyword {"}] # The " character is starting a new quote 

이 코드는 파일을 열 때와 같습니다. 이 문제를 해결할 수있는 방법이 있습니까?

+0

당신은 코드를 수정하거나, 숭고한 텍스트 2를 해결하고자 있습니까 : 위에서

<key>braces</key> <dict> <key>begin</key> <string>(?:^|(?&lt;=\s))\{</string> <key>comment</key> <string>matches a single brace-enclosed word</string> <key>end</key> <string>\}([^\s\]]*)</string> <key>endCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>invalid.illegal.tcl</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>match</key> <string>\\[{}\n]</string> <key>name</key> <string>constant.character.escape.tcl</string> </dict> <dict> <key>include</key> <string>#inner-braces</string> </dict> </array> </dict> 

, 나는 정규식에 대한 수정과 같이 보이도록 만들어? –

+0

코드를 수정할 수는 있지만 항상 무언가를 깨뜨릴 위험이 있습니다. 이 스크립트는 "업무에 중요한"시스템의 일부로 중단되면 실제로 문제가 발생합니다. – jsmaupin

답변

1

그래서, 내가 다시 이것에 와서 내 문제 해결에 어떤 노력을 넣어. TCL에 대한 tmLangauge 파일을 변경했습니다. } 문자는 끝 중괄호로 인식됩니다. 방금 \\을이 정의에도 추가했습니다.

<string>\}([^\s\]]*)|\\}\s</string> 
1

기술적으로 Sublime Text 2 (Tcl은 일부 모서리의 경우 정확하게 강조 표시하기가 쉽지 않음)와 기술적으로는 다르지만 Tcl 코드를 의미 상 동일하게 변경하는 것이 더 쉽습니다.

regsub -all {/} $original "\\\\\\\\" target 
set grep_keyword [string trim $grep_keyword "\""] 

당신은 물론, 첫 번째에 대한 string map 사용을 고려할 수는 :

set target [string map {"/" "\\\\"} $original] 
# or this: 
# set target [string map {/ {\\}} $original] 
# but I'm not sure if the editor will like that... 
+1

아니, 에디터 자체를 어떻게 수정해야할지 모르겠다. –

+0

많은 의견을 보내 주셔서 감사합니다. 이것은 아마도 제가 끝내야 할 일입니다. – jsmaupin