La mia prima incursione nel mondo eccentrico di Emacs Lisp è una funzione che prende due stringhe e li scambia con la vicenda:Interactive Emacs Lisp funzionare per scambiare due parole con l'altro
(defun swap-strings (a b)
"Replace all occurances of a with b and vice versa"
(interactive "*sFirst Swap Word: \nsSecond Swap Word: ")
(save-excursion
(while (re-search-forward (concat a "\\|" b) nil t)
(if (equal (match-string 0) a)
(replace-match b)
(replace-match a)))))
Questo funziona - ma io' m bloccato su quanto segue:
- come chiedere conferma all'utente prima di ogni sostituzione? (Non riesco a far funzionare
perform-replace
) - come sfuggire alle stringhe
a
eb
in modo che non vengano interpretate come espressioni regolari se contengono caratteri di espressioni regolari?
Edit: Il codice finale copia-pastable ho usato per un po 'di tempo è:
(defun swap-words (a b)
"Replace all occurances of a with b and vice versa"
(interactive "*sFirst Swap Word: \nsSecond Swap Word: ")
(save-excursion
(while (re-search-forward (concat (regexp-quote a) "\\|" (regexp-quote b)))
(if (y-or-n-p "Swap?")
(if (equal (match-string 0) a)
(replace-match (regexp-quote b))
(replace-match (regexp-quote a))))
)))
Purtroppo, non mette in evidenza le prossime partite sulla pagina come I-ricerca fa.