Emacs - установить отметку на месте редактирования - PullRequest
3 голосов
/ 12 ноября 2011

Я хочу, чтобы emacs добавил последнее место редактирования к кольцу меток, чтобы я мог вернуться к предыдущим местам редактирования.

В идеале это пометит одно место редактирования в строке.Когда я редактирую другую строку, в кольцо добавляется последнее место редактирования в этой строке и т. Д.

Я не знаком с Лиспом, чтобы реализовать это самостоятельно.Если кто-нибудь знает о плагине или может любезно предоставить решение, которое было бы здорово!:)

Ответы [ 3 ]

3 голосов
/ 12 ноября 2011

Вы можете установить пакет goto-last-change , который позволяет последовательно переходить в позиции отмены буфера (места последнего редактирования).

1 голос
/ 12 ноября 2011

Session.el предоставляет эту функциональность, связанную с "Cx C- /" или session-jump-to-last-change.

Session, загружает его в буфер.Я ничего не знаю о том, что делает это глобально.

0 голосов
/ 25 декабря 2011

Я реализую аналогичную функцию, записывая 2 последних места редактирования файла (не для буфера), и циклически изменяю их по запросу.Примерно так же, как затмение (но менее мощное, записано только 2 файла)

emacs-last-edit-location

код:

;;; record two different file's last change. cycle them
(defvar feng-last-change-pos1 nil)
(defvar feng-last-change-pos2 nil)

(defun feng-swap-last-changes ()
  (when feng-last-change-pos2
    (let ((tmp feng-last-change-pos2))
      (setf feng-last-change-pos2 feng-last-change-pos1
            feng-last-change-pos1 tmp))))

(defun feng-goto-last-change ()
  (interactive)
  (when feng-last-change-pos1
    (let* ((buffer (find-file-noselect (car feng-last-change-pos1)))
           (win (get-buffer-window buffer)))
      (if win
          (select-window win)
        (switch-to-buffer-other-window buffer))
      (goto-char (cdr feng-last-change-pos1))
      (feng-swap-last-changes))))

(defun feng-buffer-change-hook (beg end len)
  (let ((bfn (buffer-file-name))
        (file (car feng-last-change-pos1)))
    (when bfn
      (if (or (not file) (equal bfn file)) ;; change the same file
          (setq feng-last-change-pos1 (cons bfn end))
        (progn (setq feng-last-change-pos2 (cons bfn end))
               (feng-swap-last-changes))))))

(add-hook 'after-change-functions 'feng-buffer-change-hook)
;;; just quick to reach
(global-set-key (kbd "M-`") 'feng-goto-last-change)
...