P : ¿cómo puedo controlar dónde orgaparece el búfer de palabras clave de todo?
Al ingresar una todopalabra clave con C-c C-t( org-todo), se abre un nuevo búfer con las opciones de palabras clave y luego se cierra nuevamente después de seleccionar una. Hasta aquí todo bien. Sin embargo, se necesita otra ventana para hacerlo, lo cual es menos bueno, especialmente porque realmente solo necesita mostrar una o dos líneas con las palabras clave.
Entonces, con el siguiente diseño, presionar C-c C-tmientras está en la ventana izquierda ( some-org-buffer) se abrirá *Org todo*en la ventana derecha:
+---------------------+---------------------+
| | |
| | |
| | |
| | |
| some-org-buffer | some-other-buffer |
| | |
| | |
| | |
| | |
+---------------------+---------------------+
En cambio, me gustaría tener una pequeña ventana emergente como una división vertical, como se muestra a continuación:
+---------------------+---------------------+
| | |
| | |
| some-org-buffer | some-other-buffer |
| | |
| | |
+---------------------+ |
| | |
| *Org todo* | |
| | |
+---------------------+---------------------+
A pesar de
esta respuesta , escribí una función para poner en display-buffer-alist:
(defun org-todo-position (buffer alist)
(let ((win (car (cl-delete-if-not
(lambda (window)
(with-current-buffer (window-buffer window)
(memq major-mode
'(org-mode org-agenda-mode))))
(window-list)))))
(when win
(let ((new (split-window win -5 'below)))
(set-window-buffer new buffer)
new))))
(add-to-list 'display-buffer-alist
(list " \\*Org todo\\*" #'dan-org-todo-position))
Sin embargo, eso no funciona. Suspiro. ¿Qué he hecho mal con el display-buffer-alist? Más concretamente, ¿cómo hago para que mi
todobúfer de palabras clave aparezca donde lo quiero?

org-switch-to-buffer-other-windowpara hacer lo que quiera: puede crear una condición que haga lo que quiera.org-switch-to-buffer-other-windowun montón de otrasorgentrañas feas . Vea la respuesta para la ignominiosa "solución".win. ¿Hay alguna razón que no puedas usar(selected-window)aquí?Respuestas:
Suspiro. Encontré una "solución", pero es fea y requiere sobrescribir una
orgfunción existente . Preferiría uno que no requiera modificar elorgcódigo fuente, pero estoy poniendo los resultados de mi excavación arqueológica aquí en caso de que alguien más pueda usarlo.Como he notado en el pasado con otras
orgfunciones,org-modees bastante obstinado sobre cómo maneja las ventanas.Enterrado en lo profundo del código fuente de
org-todoes una llamada a la funciónorg-fast-todo-selection. Esa función, a su vez, llamaorg-switch-to-buffer-other-window, cuya cadena de documentos se lee, en parte:UH oh.
Bien, voy a morder: echemos un vistazo
org-switch-to-buffer-other-window. Utiliza laorg-no-popupsmacro. Su cadena de documentos lee, en parte:Resulta que esa
display-buffer-alistes una de las variableslet-bound tonil.( Cabeza explota )
En última instancia, podemos lograr que no se ignore
display-buffer-alisteditandoorg-fast-todo-selectiony reemplazando laorg-switch-to-buffer-other-windowlínea por la antiguaswitch-to-buffer-other-window:fuente
fletaquí para volver a vincularorg-switch-to-buffer-other-window? Preguntándome si puede aconsejar o envolver enorg-fast-todo-selectionlugar de sobrescribirlo.org-switch-to-buffer-other-windowa solo(switch-to-buffer-other-window args). También eliminé&restlos argumentos de la función.Recientemente descubrí cómo hacer la captura en modo Org en un nuevo marco . Modificar ese código para usar su función es bastante sencillo. Así es como lo haría:
Para completar, aquí está la definición de la
my/with-advicemacro de la otra respuesta:fuente
Buscando en algún otro config , he encontrado una manera de control donde
*Org Src.*y*Org todo*aparecen tampones. Ahora, cuando presionoC-c C-toC-c 'estos buffers se muestran en una nueva ventana en la parte inferior de mi diseño de ventana actual, y al seleccionar un estado TODO o presionarC-c '(org-edit-src-exit), la configuración de mi ventana vuelve a su diseño original.Esta solución implica el uso de grilletes y algo de Elisp:
Paso 1
Descargar
shackledesde MELPA. Así es como lo configuréuse-packageen mi archivo init:Las configuraciones importantes aquí son:
☞ Fuente
Tenga en cuenta especialmente el espacio entre
"y*Orgen la línea inferior. No he probado la configuración:alignen otras ubicaciones, peroshackleparece ser bastante flexible, por lo que vale la pena leer la documentación y experimentar con ella.Paso 2
Ahora hacemos
org-modeescucharshacklecon un poco más de Elisp en nuestro archivo init. Para obtener*Org Src.*buffers a seguirshackle-rules:☞ Fuente
Lamentablemente
org-mode, no proporciona una configuración análoga para las*Org todo*memorias intermedias. Este truco lo compensa (y probablemente sea(setq org-src-window-setup 'other-window)superfluo, pero alguien más conocedor tendrá que intervenir):☞ Fuente
fuente