3

コメントが次のように記述されている言語の emacs 構文強調表示を作成しようとしています。

; A single line comment

;; This comment has
   multipline lines ;;

これを行うには、構文テーブルのエントリを変更する必要があります。以下は、複数行のコメントに対して完全に機能することがわかりました。

(modify-syntax-entry ?\; ". 1234" sbgl-mode-syntax-table)

以下は、単一行のコメントに対して完全に機能します。

(modify-syntax-entry ?\; "< b" sbgl-mode-syntax-table)
(modify-syntax-entry ?\n "> b" sbgl-mode-syntax-table)

これらを組み合わせる方法を知っている人はいますか?

4

2 に答える 2

2

単一行のコメントを開始する各セミコロンの後にスペースを追加しても生き残ることができる場合は、それをコメント開始シーケンスの 1 つの 2 番目の文字として扱うことができます。

(define-derived-mode sbgl-mode prog-mode "sbgl"
  (set (make-local-variable 'font-lock-defaults)
       '(nil ;; keywords
         nil ;; keywords-only
         nil ;; case-fold
         ((?\; . ". 1234b")
          (?\n . ">")
          (?\  . "- 2")))))

syntax-propertize-functionそうでない場合は、変数 (またはEmacs24 より前の変数) を介してフォント化する前に、常に構文解析を行うオプションがありますfont-lock-syntactic-keywords

于 2013-04-01T16:44:41.307 に答える