Tengo dos ventanas abiertas y divididas verticalmente (marco único):
A) contiene mi trabajo
B) contiene dired o ibuffer.
Me gustaría poder navegar a un archivo / búfer en el panel B y presionar "o" para que se abra en el panel A. ¿Es esto posible? En este momento, emacs está creando un nuevo panel en la parte inferior del panel A para abrir el archivo.
editar: de acuerdo con la lista de leyes del usuario, el comportamiento descrito anteriormente ocurrirá cuando el marco sea grande. Este parece ser el caso para mí porque ahora que estoy en casa (no en un monitor externo, marco más pequeño), emacs se comporta como lo deseo. La pregunta ahora es: ¿puedo evitar que emacs abra una nueva ventana cuando el marco actual es grande?

windowpara referirnos a un cuadrante de búfer dentro del mismoframe. Seframeconsidera que A es todo el gatito-kaboodle, que puede tener muchas ventanas dentro. Emacs puede generar múltiples cuadros, cada cuadro contiene múltiples ventanas.Respuestas:
Aquí hay cuatro (4) ejemplos de
display-bufferfamilias de funciones personalizadas que se pueden personalizar para satisfacer las necesidades particulares de un usuario, arriba ; abajo ; la izquierda ; derecha - y aquí hay cuatro (4)interactivefunciones para mostrar el archivo o directorio de la línea actual de undired-modebúfer. Solo hay tres condiciones: (a) si ya hay una ventana que muestra el búfer de destino, elíjalo; (b) si hay una ventana en la dirección deseada que está disponible, úsela; (c) el objetivo general es crear una nueva ventana en la dirección deseada si no se cumplen las otras condiciones.Uso:
M-x dired-display-aboveM-x dired-display-belowM-x dired-display-leftM-x dired-display-rightHay tantas combinaciones de teclas ya integradas
dired-modeydired+, que no me atrevo a inventar las mías. El usuario es libre de elegir sus propios atajos de teclado, lo que está más allá del alcance de este ejemplo limitado.El usuario es libre de agregar condiciones adicionales a la
display-bufferfamilia de funciones de muestra para manejar más situaciones, por ejemplo, más ventanas que solo un par.EDITAR: Aquí hay una implementación un poco más sofisticada / divertida del concepto anterior, que le da al usuario la capacidad de usar esto de manera no interactiva o interactiva ; por ejemplo,
M-x dired-display-buffer- donde se le pedirá al usuario que elija un directorio si no se encuentra sobre un archivodired-modey que elija una dirección de visualización (izquierda, derecha, arriba, abajo).fuente
dired-mode-map, unidaoy luegohjklpara mostrar arriba / abajo / izquierda / derecha?(defhydra dired-open (dired-mode-map "O" :exit t) "dired-open" ("j" dired-display-below "below") ("k" dired-display-above "above") ("h" dired-display-left "left") ("l" dired-display-right "left"))select-windowse puede utilizar al final de cadamy-display-buffer-...función. Como puede ver, el resultado / valor que se arroja al final de la última línea eswindow. Si usted no necesita el resultado / valor para utilizar en conjunción con otra función, a continuación, sólo envolver elwindowde la última línea con esto:(select-window window). Haga eso con las cuatro (4) funciones, es decirmy-display-buffer-below;my-display-buffer-above;my-display-buffer-left; ymy-display-buffer-right.Su pregunta no está clara, por lo que corre el riesgo de ser cerrada. ¿Tiene dos cuadros o un solo cuadro con dos ventanas Emacs? Cualesquiera que sean, si hay dos, ¿ cada uno de ellos está dividido verticalmente? ¿Y qué quieres decir con "dividir verticalmente"? ¿Qué quieres decir con un "panel"? ¿Qué quiere decir con "eso" en "tenerlo abierto en el panel A"?
Una suposición descabellada es que tiene un solo cuadro de Emacs que se divide en dos ventanas de Emacs, A y B, con la ventana A encima de la ventana B, la ventana B está seleccionada y la ventana B muestra un búfer Dired.
oestá vinculado por defecto adired-find-file-other-window. Si lo anterior suposición es correcta, entoncesoen un nombre de archivo en B debe abrir en A. Esto es lo que veo cuando se inicia Emacs sin un archivo de inicio:emacs -Q. ¿No lo ves?Si este no es el escenario, describa claramente lo que está haciendo, paso a paso, comenzando con
emacs -Q.fuente
display-bufferfamilia de variables afectará otras situaciones aún no previstas. Puede personalizarlodisplay-buffer-alist, lo cual es algo confuso incluso para usuarios experimentados de Emacs. Hay variables que controlan cuándo dividir ventanas y tamaños mínimos de ventanas, y la lista sigue y sigue. Para contener el brote, puede aconsejardired-find-file-other-windowcon una versión limitada deldisplay-buffer-alist, pero dejaré esa respuesta a otro participante del foro. Hay una variedad de soluciones. :)NOTA : Las siguientes variables son globales , lo que significa que afectarán otras funciones además
dired-find-file-other-window. El usuario puede desear aconsejar la función en cuestión para no afectar globalmente a otras funciones. [Sin embargo, este autor dejará esa opción a otro participante del foro.] Alternativamente, hay otra respuesta que este autor publicó que contiene funciones personalizadas que se pueden utilizar para no afectar nada más.La variable
split-width-thresholdtiene una cadena de documentación que establece:Establecer lo siguiente en el
.emacsarchivo logrará el efecto deseado. El usuario también puede establecer el valor en un número mayor. El valor predeterminado es 160Aquí hay un enlace a la sección correspondiente en el manual:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Window-Choice.html
Consulte también la variable relacionada
split-height-threshold, que tiene un valor predeterminado de 80Los estados de la cadena de documentación:
fuente