Vorrei eliminare una stringa tra virgolette in un file di origine senza dover contrassegnare l'inizio della stringa e kill-region, ma semplicemente posizionando il punto in qualsiasi punto all'interno della stringa tra virgolette e premendo un collegamento.Come uccidere una stringa quotata al punto in emacs?
Ho cercato di scrivere una funzione in elisp per questo, ma ho capito che il file avrebbe bisogno di essere analizzato fin dall'inizio fino al punto di determinare se il punto è all'interno stringa tra virgolette, e di trovare i limiti della la stringa tra virgolette (gestire anche il \ ") ...
Ma il file è già analizzato da font-lock Così ora posso sapere se sto dentro citato stringa:.
(defun inside-quoted-string?()
(interactive)
(print (find 'font-lock-doc-face (text-properties-at (point)))))
Ma come faccio a ottenere i limiti della stringa? font-lock lo sa, dal momento che mette in evidenza bene è in blu, ma come ottenerlo?
Modifica: Grazie per le risposte. Mi sono inventato questo codice che fa esattamente quello che volevo, - sposta il codice in giro senza selezionare la regione o anche lo spostandosi all'inizio del codice.
(defun kill-at-point()
"Kill the quoted string or the list that includes the point"
(interactive)
(let ((p (nth 8 (syntax-ppss))))
(if (eq (char-after p) ?\")
(progn
(goto-char p)
(kill-sexp))
(progn
(up-list)
(let ((beg (point)))
(backward-list)
(kill-region beg (point)))))))
(global-set-key (kbd "C-,") 'kill-at-point)
Eventuali suggerimenti per migliorarlo sono i benvenuti.