Подобная повторению функция подражателя для Emacs

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

Править: Путем я предназначаю, чтобы у этого был некоторый способ, в котором D keypress будет действовать точно как повторение (если некоторый другой вход был сделан, повторите, что), в то время как d повторит последнюю вещь, назначенную на последнее D нажатие клавиши.

EDIT2: Если я дергал бы, и затем нажал бы C-x z (в моем способе, также связанном с D), то это повторит рывок. Однако, когда я спустил бы курсор, и я пытаюсь нажать D, он тогда повторяется вниз курсор. В этом случае я хотел бы, чтобы маленький d сделал поведение последнего повторения (то есть, рывок), в то время как D повторится вниз команда курсора. Так, d был бы хранить последняя повторная команда, в то время как D повторил бы последнюю команду.

1
nl ja de
Это не легко объяснимо, но, пожалуйста, попытайтесь прочитать его снова.
добавлено автор PascalVKooten, источник
повторение является функцией и D и d , является ключевыми командами для того способа, если это помогает в разъяснении.
добавлено автор PascalVKooten, источник
Действительно ли это ясно теперь?
добавлено автор PascalVKooten, источник
@event_jr я предоставил ответ для того, что я искал. Это был хороший полезный опыт. Надо надеяться, это убирает его еще больше.
добавлено автор PascalVKooten, источник
Никакая идея, что you' ре на приблизительно.
добавлено автор event_jr, источник
Я пару раз уже прочитал его. Можно ли дать примеры?
добавлено автор event_jr, источник
Хорошо. Я понимаю то, что вы хотите теперь.
добавлено автор event_jr, источник

2 ответы

Моя лучшая попытка. Это работает, хотя это не включило всю обработку ошибок, которую имеет повторение .

(defun Navi-repeat() 

  ;; Checks whether the last repeatable command is the same as repeat var.
  ;; If yes, set repeat-navi to that command, and call it.
  ;; If no, check whether the Navi-repeat variable has been set before: 
  ;;        If bound, call it.
  ;;        If not bound, 
  ;;          give it the value of the last-repeatable command, and call it.

  (interactive)          
  (if (eq last-repeatable-command 'repeat)
      (progn (setq repeat-navi repeat-previous-repeated-command)
         (call-interactively repeat-navi)) 
    (if (boundp 'repeat-navi)
    (call-interactively repeat-navi)
      (progn  (setq repeat-navi last-repeatable-command)
          (call-interactively repeat-navi))
      )  
    )
)
1
добавлено

Это было просто слишком длинно для комментария:

Такое чувство, что вы по существу хотите более короткую версию макроса клавиатуры? Я попытаюсь объяснить кратко, и видеть, близко ли это:

  • C-x ( - start recording the macro.
  • Do whatever you want (may be just a single command). For example, yank something, i.e. M-d
  • C-x ) - finish recording the macro.
  • Now you can C-x e to replay the macro (you can do other stuff after you've recorded the macro, C-x e will do what you have previously recorded (i.e. M-d in this case).

Возможно, можно создать версию стенографии макро-началом макро-концом записи, если вы уверены, что будет только одна команда, но это действительно незначительные улучшения. Как только вы привыкаете к макросу, вы сделаете это подсознательно, так, чтобы одно спасенное нажатие клавиши не имело значения действительно.

Also, if I didn't guess what you were after, this may prove to be interesting to you: http://www.gnu.org/software/emacs/manual/html_node/elisp/Command-History.html

1
добавлено
Я знаю и vidid пользователь макроса. Различие - то, что с макросом у вас должно быть намерение заранее, в то время как эта функция повторения может быть сделана впоследствии и не требует того планирования. Последняя часть могла бы быть полезной все же. Я понимаю, что планирование кажется забавным таким образом, но я действительно полагаю, что это - другой тип технологического процесса.
добавлено автор PascalVKooten, источник
IDE и редакторы — русскоговорящее сообщество
IDE и редакторы — русскоговорящее сообщество
393 участник(ов)

Общаемся, сравниваем и помогаем друг другу решать задачи с продуктами JetBrains, VS Code, Atom, vim, Emacs, Sublime и т.д. Всё в одном месте, ведь каждый из них хорош по своему. См. также: @js_ru, @typescript_ru, @react_js, @nodejs_ru, @javascript_jobs

Emacs — русскоговорящее сообщество
Emacs — русскоговорящее сообщество
288 участник(ов)

Общаемся на темы, посвященные замечательному редактору Emacs. Решаем проблемы, обмениваемся опытом и делимся новостями @emacs_ru_pub. Обсуждаем и другие редакторы или IDE, клавиатуры и эргономику также: @ru_mechcult, @clojure_ru