Eu gostaria de inserir (programaticamente) algum texto logo após o ponto (sem movê-lo). Eu vim com isso:
(save-excursion (insert "my text"))
Parece funcionar. É uma boa maneira de fazer o que eu quero? Por exemplo, existem situações em que isso pode quebrar? (Além daqueles que insert
quebrariam de qualquer maneira, como buffers somente leitura.) É diferente do que os hackers Elisp mais experientes fazem?
text-editing
point
mbork
fonte
fonte
save-excursion
+insert
é o caminho a percorrer.Respostas:
Um exemplo muito comum desse comportamento está
electric-pair-mode
na biblioteca padrão do Emacs. Se você nunca usou esse modo antes, então (citando o manual ):Você pode verificar o código para
electric-pair-post-self-insert-function
ver como ele realiza a inserção. Spoiler:fonte
Sim, essa é a maneira mais idiomática de inserir texto após um ponto que eu conheço.
save-excursion
é muito resistente a alterações no buffer, por isso é a maneira preferida de fazer edições destrutivas. O único lugar em que você provavelmente terá problemas é onde terá problemas consigoinsert
, como buffers em que algum texto é somente leitura.fonte