2011-10-08 10 views
7

Hola He activado la memoria intermedia colocación bicicleta siguientes comandos en mi .emacsciclismo de búfer en Emacs: evitar los arañazos y mensajes búfer

(global-set-key (kbd "<C-tab>") 'bury-buffer) 

Pero mientras que el ciclismo ¿Cómo evito la bicicleta a través de los mensajes y los tampones, que scrratch siempre están presentes en cualquier lista de buffer de emacs. Nunca utilizo esos tampones y convertirse en un ojo-dolor al montar en bicicleta a través de mi memoria intermedia lista

Respuesta

7

Si nunca utiliza el búfer de cero, sólo tiene que añadir esto a su .emacs para cerrar automáticamente:

(matar-buffer "* scratch *")

también encontré this code en el Emacs wiki que debe hacer lo que quiera:

; necessary support function for buffer burial 
(defun crs-delete-these (delete-these from-this-list) 
    "Delete DELETE-THESE FROM-THIS-LIST." 
    (cond 
    ((car delete-these) 
    (if (member (car delete-these) from-this-list) 
     (crs-delete-these (cdr delete-these) (delete (car delete-these) 
               from-this-list)) 
     (crs-delete-these (cdr delete-these) from-this-list))) 
    (t from-this-list))) 
; this is the list of buffers I never want to see 
(defvar crs-hated-buffers 
    '("KILL" "*Compile-Log*")) 
; might as well use this for both 
(setq iswitchb-buffer-ignore (append '("^ " "*Buffer") crs-hated-buffers)) 
(defun crs-hated-buffers() 
    "List of buffers I never want to see, converted from names to buffers." 
    (delete nil 
      (append 
      (mapcar 'get-buffer crs-hated-buffers) 
      (mapcar (lambda (this-buffer) 
        (if (string-match "^ " (buffer-name this-buffer)) 
         this-buffer)) 
        (buffer-list))))) 
; I'm sick of switching buffers only to find KILL right in front of me 
(defun crs-bury-buffer (&optional n) 
    (interactive) 
    (unless n 
    (setq n 1)) 
    (let ((my-buffer-list (crs-delete-these (crs-hated-buffers) 
              (buffer-list (selected-frame))))) 
    (switch-to-buffer 
    (if (< n 0) 
     (nth (+ (length my-buffer-list) n) 
       my-buffer-list) 
     (bury-buffer) 
     (nth n my-buffer-list))))) 
(global-set-key [(control tab)] 'crs-bury-buffer) 
(global-set-key [(control meta tab)] (lambda() 
             (interactive) 
             (crs-bury-buffer -1))) 

Usted tendrá que añadir los tampones de cero y de mensajes a la variable crs-hated-buffers, por ejemplo .:

(add-to-list 'crs-hated-buffers "*Messages*") 
(add-to-list 'crs-hated-buffers "*scratch*") 
5

respondido a su pregunta específica de Lucas. En mi experiencia personal, el ciclo de búfer es más útil como la pila utilizada más recientemente en lugar de las funciones de ciclo predeterminadas de Emacs. Es decir, los búferes que usó más recientemente deberían aparecer en la parte superior de la pila, de forma similar a cómo funciona alt-tab en Windows.

Existen bastantes paquetes que implementan esto en el wiki. buffer-stack es el que yo recomiendo. Tiene una lista de búferes excluidos por defecto, he incluido mi configuración buffer-stack-suppl, que hace el mismo filtrado de modo mayor. Si hace preguntas sobre buffer-stack, haré todo lo posible para ayudar.

+0

¿Cómo se especifica un comodín cuando pido buffer-pila de ignorar siempre/untrack ciertos tampones? p.ej. si quiero pedirle que agregue para destrabar la lista * .html ¿cómo hago eso? – incandescentman

1

Bueno, si usa ido-mode para alternar entre buffers, puede configurar ido-ignore-buffers para que coincida con los buffers que desea ignorar. De la documentación:

Lista de expresiones regulares o funciones que coinciden con nombres de almacenamiento intermedio para ignorar. Por ejemplo, el comportamiento tradicional no es enumerar almacenamientos intermedios cuyos nombres comienzan en con un espacio, para el cual la expresión regular es "` ". Consulte el archivo de origen para funciones de ejemplo que filtran nombres de búfer.

Para obtener más información sobre ido-mode véase: Introduction to ido-mode

3

Todos los tampones no hice uso, tales como el principio, los mensajes y las terminaciones, metido con mi flujo de trabajo.

He logrado deshacerme por completo de ellos, sin romper emacs de ninguna manera.

Publicado primera here, y pegado abajo:

colocar esto en tu.emacs:

;; Makes *scratch* empty. 
(setq initial-scratch-message "") 

;; Removes *scratch* from buffer after the mode has been set. 
(defun remove-scratch-buffer() 
    (if (get-buffer "*scratch*") 
     (kill-buffer "*scratch*"))) 
(add-hook 'after-change-major-mode-hook 'remove-scratch-buffer) 

;; Removes *messages* from the buffer. 
(setq-default message-log-max nil) 
(kill-buffer "*Messages*") 

;; Removes *Completions* from buffer after you've opened a file. 
(add-hook 'minibuffer-exit-hook 
     '(lambda() 
     (let ((buffer "*Completions*")) 
      (and (get-buffer buffer) 
       (kill-buffer buffer))))) 

;; Don't show *Buffer list* when opening multiple files at the same time. 
(setq inhibit-startup-buffer-menu t) 

;; Show only one active window when opening multiple files at the same time. 
(add-hook 'window-setup-hook 'delete-other-windows) 

Bono:

;; No more typing the whole yes or no. Just y or n will do. 
(fset 'yes-or-no-p 'y-or-n-p) 
+0

SÍ SÍ SÍ ¡GRACIAS! –

Cuestiones relacionadas