Pregunta

Para mi trabajo diario, vivo en Emacs.Absolutamente.También me he vuelto bastante dependiente de CScope para ayudarme a encontrar cosas en el código.

Normalmente, tengo 2 ventanas en un split (C-x 3):texto alternativo http://bitthicket.com/files/emacs-2split.JPG

Y uso la ventana derecha para los búferes de código y la ventana izquierda para el búfer de búsqueda de CScope.Cuando realiza una búsqueda en CScope y selecciona un resultado, actualiza automáticamente la ventana del lado derecho para mostrar el búfer al que hace referencia el resultado.Todo esto está muy bien, excepto que me hace perder mi lugar en algún otro buffer que estaba estudiando.A veces esto no es gran cosa, porque [C-s u] me devuelve a donde estaba.

Lo que sería mejor, sin embargo, es tener 3 ventanas divididas como esta ([C-x 2] en la ventana izquierda):texto alternativo http://bitthicket.com/files/emacs-3split.jpg

Y haga que la ventana inferior izquierda contenga el búfer de búsqueda de CScope, y que la ventana superior izquierda sea el único búfer que CScope actualice.De esa manera, puedo ver mis búsquedas en CScope y navegar por el código sin perder el búfer en el que estoy concentrado.

¿Alguien sabe cómo puedo hacer eso?

¿Fue útil?

Solución

Pon esto en tu archivo .emacs:

;; Toggle window dedication

(defun toggle-window-dedicated ()

"Toggle whether the current active window is dedicated or not"

(interactive)

(message 

 (if (let (window (get-buffer-window (current-buffer)))

       (set-window-dedicated-p window 

        (not (window-dedicated-p window))))

    "Window '%s' is dedicated"

    "Window '%s' is normal")

 (current-buffer)))

Luego vincúlelo a alguna tecla; yo uso la tecla Pausa:

(global-set-key [pause] 'toggle-window-dedicated)

Y luego úselo para "dedicar" la ventana que desea bloquear.entonces cscope solo puede abrir archivos desde su ventana de resultados en alguna OTRA ventana.Funciona de maravilla.Lo uso específicamente exactamente para este propósito: mantener un archivo fuente siempre en la pantalla, mientras uso cscope en un segundo búfer/ventana y miro los resultados de cscope en un tercero.

Otros consejos

Bueno, decidí no ser una puta de reputación y encontrar la respuesta yo misma.Busqué en cscope.el como se muestra en la wiki de Emacs, así como en xcscope.el que viene con el paquete cscope RPM en RHEL.

Ninguno parece dar una manera de hacer lo que quiero.La forma probablemente sea editar ELisp agregando una variable de paquete como *browse-buffer* o algo así y simplemente inicialice esa variable si aún no se inicializó la primera vez que el usuario lo hace [C-c C-s g] o lo que sea, y siempre tener el código resultante mostrado en *browse-buffer*.Entonces el usuario puede poner el *browse-buffer* donde él quiera.

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