我想通过按C-Space +移动箭头键来执行与操作相同的操作,但是要使用elisp。

找不到正确的功能(如果它们只是在逻辑上被分组在命名空间中或以某种方式标记了……)。哪一个?

最佳答案

您可以使用C-h k键将击键转换为elisp。

您会注意到用于设置标记set-mark-command的elisp函数采用一个非可选参数。 Emacs使用特殊的interactive函数来允许elisp函数自然地用参数编写。这使它们通用并且易于在其他elisp程序中重用,同时仍然可以直接从击键调用。它还具有一些内置的C-u前缀逻辑。

对于set-mark-command,它的第一个功能是(interactive "P"),这意味着从键盘调用时,前缀作为参数传递。您可以使用以下方法在elisp中直接模拟此操作:

(set-mark-command nil)


例如,要在elisp中选择当前行:

(defun my-select-current-line ()
  (interactive)
  (move-beginning-of-line nil)
  (set-mark-command nil)
  (move-end-of-line nil)
  (setq deactivate-mark nil))


请注意,您必须告诉emacs在末尾使标记处于活动状态,否则该区域将不会保持突出显示(尽管该点和标记将位于您离开它们的位置)。

08-25 22:28