Domanda

Voglio accedere al contenuto della regione corrente come stringa all'interno di una funzione. Ad esempio:

(concat "stringa" (get-region-as-string) "stringb")

Grazie

Ed

È stato utile?

Soluzione

buffer-substring insieme a inizio regione e fine regione possono farlo.

Altri suggerimenti

Come dice starblue, (buffer-substring (mark) (point)) restituisce il contenuto della regione, se il segno è impostato. Se non si desidera proprietà stringa , puoi usare la variante 'buffer-substring-no-properties .

Tuttavia, se stai scrivendo un comando interattivo , c'è un modo migliore per ottenere gli endpoint della regione, usando il modulo (interattivo " r ") . Ecco un esempio da simple.el :

(defun count-lines-region (start end)
  "Print number of lines and characters in the region."
  (interactive "r")
  (message "Region has %d lines, %d characters"
       (count-lines start end) (- end start)))

Quando chiamato dal codice Lisp, il modulo (interattivo ...) viene ignorato, quindi puoi usare questa funzione per contare le linee in qualsiasi parte del buffer , non solo la regione, passando gli argomenti appropriati: ad esempio (count-lines-region (point-min) (point-max)) per contare le linee nella parte ristretta del buffer . Ma quando chiamato in modo interattivo, viene valutato il modulo (interattivo ...) e il codice " r " fornisce il punto e il segno, come due argomenti numerici, il più piccolo prima.

Vedi il manuale Emacs Lisp, sezioni 21.2.1 Uso di Interactive e 21.2.2 Caratteri codice per interattivo .

Se si desidera copiare il contenuto della regione in un codice Lisp in una struttura di dati accessibile all'utente come kill-ring, appunti X o registro, il manuale di Emacs Lisp consiglia di utilizzare filter-buffer-substring invece che semplicemente < code> di buffer-sottostringa . Prima di copiare, la funzione applica le funzioni di filtro da una variabile di elenco denominata filter-buffer sottostringhe funzioni . La funzione era aggiunta nella versione 22.3 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top