tutorial source program para mac how descargar code emacs elisp

source - ¿Cómo puedo verificar si existe un buffer actual en Emacs?



emacs source code (4)

Me gustaría escribir una función que actúe si ya existe un nombre de buffer de entrega. Por ejemplo:

(if (buffer-exists "my-buffer-name") ; do something )

Does elisp tiene una función que verificará la existencia de un buffer similar a cómo funciona mi función "buffer-exists"?

Gracias


De la documentation :

(get-buffer name) Return the buffer named name (a string). If there is no live buffer named name, return nil. name may also be a buffer; if so, the value is that buffer. (get-buffer-create name) Return the buffer named name, or create such a buffer and return it. A new buffer is created if there is no live buffer named name. If name starts with a space, the new buffer does not keep undo information. If name is a buffer instead of a string, then it is the value returned. The value is never nil.


Esto es lo que hice:

(when (get-buffer "*scratch*") (kill-buffer "*scratch*"))

Esto verifica el rayado del buffer. Si hay tal cosa, mátalo. Si no, no hagas nada en absoluto.


Si desea definir su función hipotética como se indica anteriormente, esto funciona:

(defun buffer-exists (bufname) (not (eq nil (get-buffer bufname))))

Utilizo esto para cerrar automáticamente el búfer *scratch* en el inicio, por lo que no tengo que recorrerlo en mi lista de búferes, de la siguiente manera:

(defun buffer-exists (bufname) (not (eq nil (get-buffer bufname)))) (if (buffer-exists "*scratch*") (kill-buffer "*scratch*"))


no estoy seguro sobre la versión que apareció este predicado, pero ahora Emacs tiene buffer-live-p :

buffer-live-p is a built-in function in `buffer.c''. (buffer-live-p OBJECT) Return non-nil if OBJECT is a buffer which has not been killed. Value is nil if OBJECT is not a buffer or if it has been killed.