2011-12-13 7 views
0

私は、同僚が書いたプリプロセッサで動作するようにfortranメジャーモードを変更しようとしています。プリプロセッサディレクティブの前には、すべて "。"が付いています。例えばEmacsメジャーモードへのプリプロセッサの追加

:に似

.set 

.macro 

機能Cの#define

これまでのところ、私が持っている: ""

(font-lock-add-keywords 'fortran-mode 
'(("\\<\\(set\\|macro\\|endmacro\\)\\>" . font-lock-preprocessor-face))) 

は、残念ながら、これはハイライト表示されません。これが望ましい。また、パターンは、行の先頭に表示される場合にのみ一致する必要があります。

(font-lock-add-keywords 'fortran-mode 
'(("\\<\\(^\.set\\|^\.macro\\|^\.endmacro\\)\\>" . font-lock-preprocessor-face))) 
をしかし、それは動作しませんでした: 私が試してみました。

この正規表現のマッチを行う方法についての助けをいただければ幸いです。

答えて

0

はこれを試してください:私はなぜ表示されていないが、私のために動作するようには思えない"^\\s-*\\.\\(set\\|macro\\|endmacro\\)\\>"

+0

ありがとう、これは魅力のように動作します。私は実際には、 '。'最初の列にあった。これを達成するために、私は "\\ s- *"を削除しました。 (これは非常に基本的なプリプロセッサです)。 – mgilson

+0

@mgilson - ええと、あなたが先の空白を許したいと思っていたかどうかは分かりませんでした。 – jtahlborn

0

\\.ではなく^\.を使用してください。二重スラッシュはバックスラッシュの特殊な意味をエスケープして文字列\.を生成しますが、後者の^には特別な意味はありません。

+0

。 – mgilson

+0

ああ、 '\\ <'は単語の先頭にマッチし、 '\\。'はピリオドにマッチしますが、同時にマッチすることはありません( '。 ')。 – Lindydancer

関連する問題