2013-02-16 3 views
5

В Emacs есть команда открыть самый недавно открытый файл? Как visit-most-recent-file?В Emacs есть ли команда, чтобы посетить недавно открытый файл?

Обратите внимание, что я не хочу просматривать список последних файлов, а затем выбрать один из них. Я хочу автоматически посетить недавно открывшийся.

Было бы здорово посетить недавно открытый файл (который больше не находится в текущем буфере) с одним нажатием клавиши. И затем сможете посетить следующий недавно открытый файл, снова нажав клавишу и т. Д.

Так что, нажав эту клавишу четыре раза (например, A-UP), я могу автоматически открыть четыре верхних файла в списке последних файлов.

Я могу как-то сделать это, просмотрев последние файлы, нажав C-x C-f UP RET, но было бы здорово сделать это одним нажатием клавиши (например, A-UP).

ответ

3

здание от ответа 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))) 

Я не проверял это очень много.

+0

Святая корова, это работает! Спасибо! – incandescentman

2

Вы можете сделать это с помощью пакета 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))) 

Вы, вероятно, столкнуться с проблемой, что есть файлы в «последнем» списке, который вы не заинтересованы в (временном материале, который был сохранен на выход из Emacs). Используйте переменную recentf-exclude, чтобы исключить эти файлы из списка недавно открытых файлов.

+0

Спасибо! Подобные работы ЗА ИСКЛЮЧЕНИЕМ, КОТОРЫЙ нам нужен способ сбросить список последних-f. то есть, если я нажимаю , он успешно открывает мой последний файл. Если я затем сделаю необходимые изменения, сохраните файл, удалите буфер, а затем нажмите позже, когда мне нужно его снова открыть, он открывает мой последний файл NEXT вместо того, чтобы повторно открыть файл, над которым я работал хотя THAT FILE теперь самый последний. Решение? – incandescentman

+1

Вы можете сделать (add-hook 'kill-buffer-hook (lambda() (setq my-recentf-counter 0))), но у меня есть догадка, что вы тоже скоро увидите другие проблемы. Я просто использую recentf-interactive-complete и доволен этим. Кроме того, поскольку вы используете ido, взгляните на переменную ido-virtual-buffers в новом Emacsen. – pokita

Смежные вопросы