1

私は自分の生活を簡素化するために emacs 用の pamcrash-mode.el に取り組んでいます。単一のフレーズの強調表示は、次を使用して正常に機能します

(defvar pamcrash-keywords_red
  '("NAME" "SENSOR" "DATACHECK" "UNIT" "TITLE" "TIME" "INCLU"))

(defvar pamcrash-docu
  '("Autor" "Datum" "Basis" "VARIANTE" "BASISVAR." "DATUM" 
    "BEARBEITER" "BESCHREIBUNG" "HISTORY" "VERSION" "CAEBENCH" ))

(defvar pamcrash-font-lock-defaults
  `((
    ( ,(regexp-opt pamcrash-keywords_red 'words) . font-lock-warning-face)
    ( ,(regexp-opt pamcrash-docu 'words) . font-lock-comment-face)
    )))

(define-derived-mode pamcrash-mode fundamental-mode "PAM-Crash mode"
  (setq font-lock-defaults pamcrash-font-lock-defaults) )

(provide 'pamcrash-mode)

ただし、Pam-Crash ファイルの一部の行は次のようになります。

    NAME This is a string including the keyword SENSOR
    NAME This is a string including the keyword Autor

通常、SENSOR/Autor はキーワードであり、強調表示する必要がありますが、ここでは文字列の一部であるため、強調表示してはなりません。NAME の後のキーワードの色のコントラストを無効にするにはどうすればよいですか?

4

3 に答える 3

0

キーワードの後に​​具体的に非アクティブ化SENSOR/Autor強調表示NAMEするのではなく、キーワードが正しい位置またはコンテキストにある場合にのみ、関連する正規表現が一致するように制限する必要があると思います。

たとえば、NAMEandSENSORキーワードを行の先頭に表示する必要がある場合は、正規表現でこの制約を適用します。たとえば、次のように一致する正規表現を作成できます。

(defvar pamcrash-font-lock-defaults
  `((
    (,(concat "^[[:space:]]*" (regexp-opt pamcrash-keywords_red 'words)) . font-lock-warning-face)
    (,(concat "^[[:space:]]*" (regexp-opt pamcrash-docu 'words)) . font-lock-comment-face)
    )))
于 2013-03-27T11:01:59.777 に答える
-1

ViM に切り替えると、完全な pamcrash 構文が利用可能になります。

于 2015-09-13T06:49:12.327 に答える