Emacs: macro local de modo com traços e pontos

1

No Emacs, como posso criar uma macro, que é local para o modo HTML, e usa traços e pontos? Dê uma olhada no Elisp abaixo:

(define-abbrev-table 'html-mode-abbrev-table
   '(("..." "…")   ; won't work
     ("---" "—")    ; won't work
     ("aaa" "…")   ; works
     ("bbb" "—") )) ; works
    
por Emanuel Berg 04.04.2013 / 03:45

1 resposta

1

As abrevs só podem conter caracteres que são considerados sintaxe de palavras, conforme especificado pela tabela de sintaxe atual do buffer. Se você fizer "." e "-" word characters, então você pode usá-los em abrevs.

(require 'sgml-mode)
(modify-syntax-entry ?- "w" html-mode-syntax-table)
(modify-syntax-entry ?. "w" html-mode-syntax-table)

Existem desvantagens. Se você fizer pesquisas de regex usando \ w, então - e. agora serão correspondidos em quaisquer buffers usando a tabela de sintaxe alterada. Os comandos de movimento do cursor nesses buffers também serão afetados; por exemplo. A palavra de encaminhamento não será mais interrompida antes desses caracteres. Da mesma forma, kill-word excluirá mais texto do que antes. Eu acho que esse comportamento seria bastante surpreendente e desagradável em buffers de modo de programação, mas em um modo de texto como HTML, eu não acho que isso causaria muito sofrimento.

    
por 04.04.2013 / 04:22