我定义了一个函数,并希望将该区域作为optional参数.
(defun my-grep-select(&optional beg end)
(interactive "r")
(if mark-active
(....)
(....))
Run Code Online (Sandbox Code Playgroud)
如果标记处于活动状态,我想grep缓冲区中的select chars;如果标记未激活,我想grep缓冲区中光标下的字.
但在这种情况下:我打开文件并没有选择任何东西,然后运行命令my-grep-select,emacs抱怨:
The mark is not set now, so there is no region
Run Code Online (Sandbox Code Playgroud)
我怎样才能消除这种抱怨?谢谢.
正确的方法可能是:
(defun my-grep-select(&optional beg end)
(interactive
(if (use-region-p) (list (region-beginning) (region-end))
(list <wordbegin> <wordend>)))
...)
Run Code Online (Sandbox Code Playgroud)
您无需使用(interactive "r")。相反,您可以使用(region-active-p)或类似方法检查区域是否处于活动状态,然后使用(region-beginning),然后(region-end) 执行其他操作。
当区域处于活动状态并且传递了一组不同的参数时,也许可以选择...