如何知道当前缓冲区有设置标记

时间:2009-12-20 00:51:23

标签: emacs elisp

有没有办法知道有设置标记开始,哪里是lisp

中的起点查询

2 个答案:

答案 0 :(得分:3)

使用变量mark-active

mark-active is a variable defined in `C source code'.
Its value is nil
Local in buffer whole-line-or-region.el; global value is nil

  Automatically becomes buffer-local when set in any fashion.

Documentation:
Non-nil means the mark and region are currently active in this buffer.

您可能还想检查mark === point,如果它确实是您正在寻找的区域:

(if (and mark-active
    (/= (point) (mark)))

如果要编写需要定义区域的函数,可以使用interactive,如下所示:

(defun my-fn-that-requires-a-region (beg end)
  "Some documentation string mentioning BEG and END."
  (interactive "r")
  (message "%d / %d" beg end))

如果以交互方式调用,则必须设置标记或生成错误。以编程方式调用,必须传入任何两个值;没有完成参数验证。

答案 1 :(得分:1)

我建议开启transient-mark-mode

(setq transient-mark-mode t)

transient-mark-mode会突出显示商标与当前点之间的区域。

或者,您可以按C-x C-x在当前点和标记之间跳转,以查看标记的设置位置。