Я написал небольшой мажорный режим для языка, подобного C ++ (поэтому я использую таблицу синтаксиса C ++):
(setq tacc-mode-syntax-table c++-mode-syntax-table)
однако, кажется, что символ "'" в комментариях перед связями может испортить соответствие скобок:
Foo {
Bar {
//This doesn't work - The } are not matched with the {
}
}
Урезанный режим, который все еще вызывает эту проблему:
(setq tacc-mode-syntax-table c++-mode-syntax-table)
(setq tacc-font-lock-keywords c++-font-lock-keywords)
(define-derived-mode tacc-mode nil "Tacc"
"tacc"
(set (make-local-variable 'font-lock-defaults)
'(tacc-font-lock-keywords nil nil nil nil)))
(provide 'tacc)
Насколько я знаю, таблица синтаксиса должна контролировать это - как мне это исправить?
Результаты описанного синтаксиса в буфере:
C-j > b which means: endcomment (comment style b)
RET > b which means: endcomment (comment style b)
% .. & . which means: punctuation
' " which means: string
* . 23 which means: punctuation,
is the second character of a comment-start sequence,
is the first character of a comment-end sequence
+ . which means: punctuation
- . which means: punctuation
/ . 124b which means: punctuation,
is the first character of a comment-start sequence,
is the second character of a comment-start sequence,
is the second character of a comment-end sequence (comment style b)
< .. > . which means: punctuation
\ \ which means: escape
_ _ which means: symbol
| . which means: punctuation
. which means: punctuation
The parent syntax table is:
C-@ .. C-h . which means: punctuation
TAB .. C-j which means: whitespace
C-k . which means: punctuation
C-l .. RET which means: whitespace
C-n .. C-_ . which means: punctuation
SPC which means: whitespace
! . which means: punctuation
" " which means: string
# . which means: punctuation
$ .. % w which means: word
& _ which means: symbol
' . which means: punctuation
( () which means: open, matches )
) )( which means: close, matches (
* .. + _ which means: symbol
, . which means: punctuation
- _ which means: symbol
. . which means: punctuation
/ _ which means: symbol
0 .. 9 w which means: word
: .. ; . which means: punctuation
< .. > _ which means: symbol
? .. @ . which means: punctuation
A .. Z w which means: word
[ (] which means: open, matches ]
\ \ which means: escape
] )[ which means: close, matches [
^ . which means: punctuation
_ _ which means: symbol
` . which means: punctuation
a .. z w which means: word
{ (} which means: open, matches }
| _ which means: symbol
} ){ which means: close, matches {
~ .. DEL . which means: punctuation
.. w which means: word