Pregunta

Quiero acceder al contenido de la región actual como una cadena dentro de una función. Por ejemplo:

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

Gracias

Ed

¿Fue útil?

Solución

buffer-substring junto con comienzo de región y region-end pueden hacer eso.

Otros consejos

Como dice starblue, (buffer-substring (mark) (point)) devuelve el contenido de la región, si la marca está establecida. Si no desea las propiedades de cadena , puede utilizar la variante 'buffer-substring-no-properties .

Sin embargo, si está escribiendo un comando interactivo , hay una mejor manera de obtener los puntos finales de la región, mediante el formulario (interactivo " r ") . Aquí hay un ejemplo de 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)))

Cuando se llama desde el código Lisp, el formulario (interactivo ...) se ignora, por lo que puede usar esta función para contar las líneas en cualquier parte del búfer , no solo la región, pasando los argumentos correspondientes: por ejemplo, (count-lines-region (point-min) (point-max)) para contar las líneas en la parte reducida del búfer . Pero cuando se llama interactivamente, se evalúa el formulario (interactivo ...) y el código " r " proporciona el punto y la marca, como dos argumentos numéricos, el más pequeño primero.

Consulte el Manual de Emacs Lisp, secciones 21.2.1 Usando Interactive y 21.2.2 Caracteres de código para interactivo .

Si desea copiar el contenido de la región en un código Lisp a una estructura de datos accesible por el usuario como kill-ring, X portapapeles o registro, el manual de Emacs Lisp recomienda utilizar filter-buffer-substring en lugar de simplemente < código> buffer-substring . Antes de copiar, la función aplica funciones de filtro de una variable de lista llamada filter-buffer-substring-functions . La función fue agregada en la versión 22.3 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top