我想通过按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在末尾使标记处于活动状态,否则该区域将不会保持突出显示(尽管该点和标记将位于您离开它们的位置)。