Ich versuche, die Regex für ein highlight indentation Modul für Emacs zu beheben. Die Funktionsweise ist derzeit einmal markieren jedes% s Plätze:Regex für jede Gruppe von Leerzeichen am Anfang einer Zeile
"\\(\\) \\{%s\\}"
Und hier ist ein Probenergebnis des Verhaltens einiger Verilog-Code:
Die aktuelle Regex für die funktioniert gut Einrückungen am Anfang jeder Zeile. Es gibt jedoch ein unerwünschtes Artefakt, bei dem Sequenzen von Leerzeichen, die nicht am Anfang der Zeile stehen, ebenfalls von der Regex abgeglichen werden. Ich möchte die Regex ändern, um das obige Verhalten, aber nur am Anfang der Zeile zu entsprechen. Hier ist, was ich will (ich hatte ihn manuell zeichnen):
Hier ist, was ich versucht habe. Sie können aus dem Ergebnis sehen, dass das Verhalten nicht richtig ist.
"^\\(\\(\\) \\{%s\\}\\) \\{1,\\}"
Ergebnis:
versuchte auch
"^\\(\\(\\) \\{%s\\}\\)\\{1,\\}"
Ergebnis:
Hier ist der relevante Code, aber ich entschuldige mich Es ist kein funktionierendes Beispiel. Bitte benutzen Sie den obigen Link für ein funktionierendes Beispiel.
(set (make-local-variable 'highlight-indentation-current-regex)
(format "\\(\\) \\{%s\\}" (- highlight-indentation-offset 1)))
(font-lock-add-keywords nil `((,highlight-indentation-current-regex
(1 'highlight-indentation-face))))
verwenden konnte ich gut bin mit regexps vertraut, aber ich bin nicht vertraut mit, wie Schriftart -locking ist fertig. Wenn Sie bereit sind, es zu erklären, könnte ich Ihnen vielleicht helfen. Ist es nur eine Frage zu schreiben, eine Regexp, die übereinstimmt und dann angeben, welche Gruppe innerhalb es hervorgehoben werden sollte? – Malabarba
Wenn das der Fall ist, dann scheint Ihre zweite Regexp zu viele Leerzeichen zu haben. Könnte '"^\ (\ (\) \ {% s \} \) \ {1,} "' funktionieren? – Malabarba
Sie können stattdessen [indent-guide] (https://github.com/zk-phi/indent-guide) versuchen. Es ist eine alternative Implementierung dieser Funktion, die möglicherweise besser funktioniert. – lunaryorn