В Emacs есть команда для просмотра последнего открытого файла?

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

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

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

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

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

2 ответа

Решение

Построение ответа покиты,

(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)))

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

Вы можете сделать это с помощью пакета latestf:

(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). Используйте переменную latestf-exclude, чтобы исключить эти файлы из списка недавно открытых файлов.

Другие вопросы по тегам