2013-02-16 13 views
5

In Emacs, esiste un comando per aprire il file aperto più di recente? Come un visit-most-recent-file?In Emacs, c'è un comando per visitare il file aperto più di recente?

Nota che non voglio visualizzare un ELENCO dei file recenti e quindi selezionarne uno. Voglio visitare automaticamente l'ultimo aperto.

Sarebbe bello visitare un file aperto di recente (che non è più in un buffer corrente) con un singolo tasto. E quindi essere in grado di visitare il prossimo file aperto di recente richiamando di nuovo il tasto, e così via.

In modo da premere quattro volte il tasto (ad esempio A-UP), è possibile aprire automaticamente i primi quattro file nell'elenco dei miei file recenti.

Riesco a fare un po 'di cose già facendo sfogliando i file recenti, premendo C-x C-f UP RET, ma sarebbe bello farlo in un unico tasto (ad esempio A-UP).

risposta

3

Costruzione off di risposta di pokita,

(defun visit-most-recent-file() 
    "Visits the most recently open file in `recentf-list' that is not already being visited." 
    (interactive) 
    (let ((buffer-file-name-list (mapcar 'buffer-file-name (buffer-list))) 
     most-recent-filename) 
    (dolist (filename recentf-list) 
     (unless (memq filename buffer-file-name-list) 
     (setq most-recent-filename filename) 
     (return))) 
    (find-file most-recent-filename))) 

non ho ancora testato questo molto.

+0

Holy cow, che funziona! Grazie! – incandescentman

2

È possibile farlo utilizzando il pacchetto recentf:

(require 'recentf) 
(defvar my-recentf-counter 0) 
(global-set-key (kbd "<M-up>") 
     (lambda() 
      (interactive) 
      (setq my-recentf-counter (1+ my-recentf-counter)) 
      (recentf-open-most-recent-file my-recentf-counter))) 

Si dovrà probabilmente affrontare il problema che ci sono file nella lista "recente", che non si è interessati a (roba temporanea che è stato salvato su uscendo da Emacs). Utilizzare la variabile recentf-exclude per escludere tali file dall'elenco dei file aperti di recente.

+0

Grazie! Questo tipo di lavoro ECCETTO CHE abbiamo bisogno di un modo per resettare la lista dei f recenti. Ad esempio, se premo , apre il mio file più recente. Se poi apporto le modifiche di cui ho bisogno, salva il file, elimina il buffer, quindi premi in un secondo momento quando devo aprirlo di nuovo, apre il mio file NEXT più recente, invece di riaprire il file su cui stavo lavorando anche se THAT FILE è ora il più recente. Soluzione? – incandescentman

+1

Si potrebbe fare (add-hook 'kill-buffer-hook (lambda() (setq my-recentf-counter 0))), ma ho la sensazione che presto vedrete anche altri problemi. Sto solo usando recentf-interactive-complete e sono felice di questo. In alternativa, dal momento che stai usando ido, dai un'occhiata alla variabile ido-virtual-buffers in Emacsen più recente. – pokita

Problemi correlati