buffers – ¿Puede otro búfer en ventanas divididas seleccionar un búfer visible?

Pregunta:

A menudo cambio 2 búferes más recientes hacia adelante y hacia atrás con (switch-to-buffer (other-buffer)) . Esto funciona bien en la mayoría de situaciones.

Sin embargo, cuando tengo 2 ventanas divididas, y la otra ventana abre un archivo, cambiaría a usar el comando anterior, other-buffer omite ese búfer y devuelve el tercer búfer más reciente en su lugar. Esto es bastante molesto.

¿Hay alguna forma de intercambiar 2 búferes más recientes independientemente de qué otras ventanas se estén abriendo?

Respuesta:

other-buffer toma un tercer argumento opcional que dice que está bien usar búferes visibles en otras ventanas. El bit relevante de la cadena de documentos:

(other-buffer &optional BUFFER VISIBLE-OK FRAME)

Devuelve el búfer seleccionado más recientemente que no sea BUFFER. Se prefieren los búferes que no son visibles en las ventanas a los que son visibles, a menos que el segundo argumento opcional VISIBLE-OK no sea nulo. Ignore el argumento BUFFER a menos que denote un búfer en vivo. Si el tercer argumento opcional FRAME especifica un marco en vivo, entonces use la lista de búfer de ese marco en lugar de la lista de búfer del marco seleccionado.

Entonces: el siguiente código debería hacer lo que quieras:

(switch-to-buffer (other-buffer (current-buffer) t))

Sin embargo, es mucho para escribir, por lo que también puede envolverlo en un comando que pueda vincular a la clave que elija:

(defun switcheroo ()
  "Switch to the most recent other buffer, even if it's visible
in another window."
  (interactive)
  (switch-to-buffer (other-buffer (current-buffer) t)))

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım