Sto cercando di correggere l'espressione regolare per un modulo highlight indentation per emacs. Il modo in cui funziona attualmente è evidenziando una volta ogni% s spazi:Regex per ogni gruppo di spazi all'inizio di una riga
"\\(\\) \\{%s\\}"
Ed ecco il risultato del campione del comportamento di un codice Verilog:
L'espressione regolare corrente funziona bene per la rientranze all'inizio di ogni riga. Tuttavia, c'è un artefatto indesiderabile che le sequenze di spazi che non si trovano all'inizio della riga sono eguagliate dalla regex. Vorrei modificare la regex in modo che corrisponda al comportamento precedente, ma solo all'inizio della riga. Ecco quello che voglio (ho dovuto richiamare manualmente):
Ecco che cosa ho provato. Puoi vedere dal risultato che il comportamento non è corretto.
"^\\(\\(\\) \\{%s\\}\\) \\{1,\\}"
Risultato:
provato anche
"^\\(\\(\\) \\{%s\\}\\)\\{1,\\}"
Risultato:
Qui è il codice rilevante, ma mi scuso Non è un esempio funzionante. Si prega di utilizzare il link sopra per un esempio di lavoro.
(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))))
sto bene conosco espressioni regolari, ma non sono a conoscenza di come carattere -la chiusura è fatta. Se sei disposto a spiegarlo, potrei essere in grado di aiutarti. È solo una questione di scrivere una regexp che corrisponde e quindi specificare quale gruppo al suo interno dovrebbe essere evidenziato? – Malabarba
Se è così, la tua seconda espressione regolare sembra avere troppi spazi. Potrebbe '"^\ (\ (\) \ {% s \} \) \ {1,} "' funzionare? – Malabarba
Si consiglia di provare [indent-guide] (https://github.com/zk-phi/indent-guide) invece. È un'implementazione alternativa di questa funzionalità, che potrebbe funzionare meglio. – lunaryorn