Domanda

Per il mio lavoro quotidiano, vivo in Emacs.Assolutamente.Inoltre sono diventato piuttosto dipendente da CScope per aiutarmi a trovare cose nel codice.

Normalmente, ho 2 finestre divise (C-x 3):testo alternativo http://bitthicket.com/files/emacs-2split.JPG

E utilizzo la finestra di destra per i buffer del codice e la finestra di sinistra per il buffer di ricerca CScope.Quando esegui una ricerca CScope e selezioni un risultato, aggiorna automaticamente la finestra sul lato destro per mostrare il buffer a cui fa riferimento il risultato.Va tutto bene, tranne per il fatto che mi fa perdere il posto in qualche altro buffer che stavo studiando.A volte questo non è un grosso problema, perché [C-s u] mi riporta dove ero.

Ciò che sarebbe meglio, però, è avere 3 finestre divise come questa ([C-x 2] nella finestra di sinistra):testo alternativo http://bitthicket.com/files/emacs-3split.jpg

E fare in modo che la finestra in basso a sinistra contenga il buffer di ricerca di CScope e che la finestra in alto a sinistra sia l'unico buffer che CScope aggiorna mai.In questo modo, posso vedere le mie ricerche CScope e navigare nel codice senza perdere il buffer su cui mi concentro.

Qualcuno sa come posso farlo?

È stato utile?

Soluzione

Inserisci questo nel tuo file .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)))

Quindi associalo a qualche tasto: utilizzo il tasto Pausa:

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

E poi usalo per "dedicare" la finestra che vuoi bloccare.quindi cscope può aprire file solo dalla sua finestra dei risultati in qualche ALTRA finestra.Funziona a meraviglia.Lo uso specificatamente esattamente per questo scopo: mantenere un file sorgente sempre sullo schermo, mentre utilizzo cscope in un secondo buffer/finestra e guardo i risultati di cscope in un terzo.

Altri suggerimenti

Bene, ho deciso di non fare la puttana della reputazione e di trovare la risposta da sola.Ho cercato in cscope.el come mostrato sul wiki di Emacs, così come in xcscope.el fornito con il pacchetto RPM cscope su RHEL.

Nessuno dei due sembra offrire un modo per fare ciò che voglio.Il modo è probabilmente quello di modificare l'ELisp aggiungendo una variabile del pacchetto come *browse-buffer* o qualcosa del genere e inizializza semplicemente quella variabile se non è già inizializzata la prima volta che l'utente lo fa [C-c C-s g] o qualsiasi altra cosa, e avere sempre il codice risultante mostrato in *browse-buffer*.Quindi l'utente può inserire il file *browse-buffer* ovunque lo voglia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top