Переместить точку в одном буфере на тот же номер строки, что и точка в другом буфере - PullRequest
5 голосов
/ 09 июня 2011

Проблема : у меня есть два буфера, разделенных рядом.Я перемещаюсь в строку в левом буфере и хочу сделать что-то , которое перемещает точку в правом буфере на тот же номер строки.Например, если я в строке 26 в левом буфере, я запускаю какой-то макрос и вуаля, я в строке 26 в правом буфере.

Вещи, которые я пробовал, которые не сработаликак мне понравилось (или вообще):

  • scroll-all-mode.Это работает, если буферы синхронизированы для начала (например, точка находится на одном и том же номере строки в обоих буферах) и если я придерживаюсь основного движения линии.Но он быстро теряет синхронизацию, если я isearch-forward-regexp или page-up / page-down.Если была команда, которая могла бы «повторно синхронизировать», то это решило бы мою проблему.
  • Сохранение текущего номера строки в регистре и использование этого значения регистра в goto-line.Сохранение и восстановление позиций всегда возвращаются в один и тот же буфер.

1 Ответ

6 голосов
/ 09 июня 2011

Этот кусок Emacs Lisp должен делать то, что вы хотите:

(goto-line (line-number-at-pos) (window-buffer (next-window))

Чтобы связать его с последовательностью клавиш,

(global-set-key (kbd "C-c l")
  (lambda ()
    (interactive)
    (goto-line (line-number-at-pos) (window-buffer (next-window)))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...