2009-12-20 76 views
1

有没有办法知道有设置标志开始,哪里是在口齿不清怎么知道当前缓冲区已经设置标志

+0

你能说清楚你需要什么吗?编写ELISP脚本?或者使用Emacs? – 2009-12-29 00:35:00

+0

个人我只是想单键绑定不同的用法,这取决于mark-active – leedit 2010-01-02 02:05:44

回答

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. 

您可能还需要检查,如果标记===点,如果它真的是你正在寻找一个区域:

(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

起始点查询我建议你打开transient-mark-mode

(setq transient-mark-mode t) 

transient-mark-mode将突出显示标记和当前点之间的区域。

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

+0

感谢瑞恩,如何在lisp中编程知道标记模式是现在标记 – leedit 2009-12-20 02:29:48

相关问题