1

taskpaper ファイルのタスク、プロジェクト、およびメモをフォントロックするために、emacs で正規表現を作成しようとしています。

Taskpaper は、タスク管理用の単純なテキスト ベースの形式で、次の形式があります。

Project 1:
    - Task 1
    - Task 2
    Note about Task2    
Project 2:
    - Task 3
    Note about Task 3
A general note about something

ここで見つけた taskpaper モードをベースとして使用しています ( https://github.com/jedthehumanoid/taskpaper.el/blob/master/taskpaper.el )。ただし、このモードはスペースのインデントに基づいており、現時点ではタスクペーパー形式はタブを使用してインデントしているようです。

(setq font-lock-defaults 
'(("^.*@done.*$" . font-lock-comment-face)
  ("^.*:$" . font-lock-function-name-face)
  ("^[\t]*[^-\t].*[^:]$" font-lock-comment-face)
  ("@.*" . font-lock-variable-name-face)))

現時点では、3 番目の正規表現 (コメント フェースのメモをフォントロックする必要があります) が機能していません。その理由はわかりません。-注記は、a で始まらず、aで終わらないインデントのあるすべての行です。:

奇妙なことに、正規表現ビルダーでは、正規表現が^[\t]*[^-\t].*[^:]$正常にメモの行と一致します。

他の質問で提案されているように、\t 文字を (\\t として) ダブル エスケープしようとしましたが、違いはないようです。

4

3 に答える 3

2

3 番目の規則が他の規則と異なるのは、他の規則ではドット ペアが使用されることです。つまり、3 番目の規則で(xxx . yyy)はリスト表記、つまり(xxx yyy).

リスト表記も使用できますが、その場合、 のように強調表示する部分式を指定する必要があります(regexp 0 font-lock-comment-face)

于 2013-03-12T15:29:51.167 に答える
1

\t が 3 番目の式にある場合は、空のスペースを脇に置きます。つまり、[\t] の場合は [ \t] などです。したがって、TAB と空のスペースは同じように一致します。HTH

于 2013-03-12T18:19:50.690 に答える
0

問題の一部は、おそらく * 文字の使用に関係しています。0回以上一致するため、実際には行がタブで始まる必要はありません。

于 2013-03-12T15:14:45.210 に答える