Frage

Ich möchte innerhalb einer Funktion, den Inhalt des aktuellen Bereichs als String zuzugreifen. Zum Beispiel:

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

Danke

Ed

War es hilfreich?

Lösung

buffer-substring zusammen mit region-beginning und region-end das tun kann.

Andere Tipps

Wie sagt Starblue, kehrt (buffer-substring (mark) (point)) den Inhalt der Region, wenn die Marke gesetzt ist. Wenn Sie nicht wollen, die String Eigenschaften , Sie können die 'buffer-substring-no-properties Variante verwenden.

Wenn Sie jedoch ein interaktive gerade schreiben Befehl, gibt es einen besseren Weg, um die Endpunkte der Region zu erhalten, das Formular (interactive "r") verwenden. Hier ist ein Beispiel von 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)))

Wenn Sie von Lisp-Code bezeichnet wird, wird die (interactive ...) Form ignoriert, so dass Sie diese Funktion verwenden, können die Linien in jeder Teil des Puffers zu zählen, nicht nur die Region, indem Sie die entsprechenden Argumente übergeben: beispielsweise auf (count-lines-region (point-min) (point-max)) die Linien in der Einschnürung des Puffers zu zählen. Aber wenn interaktiv wird die (interactive ...) Form ausgewertet und der "r" Code liefert den Punkt und die Markierung, wie zwei numerische Argumente genannt, kleinste zuerst.

Sehen Sie die Emacs Lisp Handbuch, Abschnitte 21.2.1 Interactive und

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top