2010-09-29 49 views
1

我希望将整个无形文本删除delete-charbackward-delete-char。任何简单的方法?如何通过删除命令彻底删除emacs中的无形文本?

(put-text-property (point-at-bol) (point-at-eol) 'intangible t) 

kill-wordbackward-kill-word将删除无形的文字,我想的*-char命令来这样做。

在我构建的用户界面中,一些关键文本是不可见的和无形的。因此,当用户在隐藏的,无形的文本之后(之前)按下DELC-d)时,整个文本应该消失。

谢谢!

回答

1

使用Emacs的,没有任何初始化文件,以及您所提供的(put-text...代码,我可以在该行的开头的Mx删除字符删除炭),并在该月底删除字符与Mx向后删除字符删除(好吧,那真的是delete-backward-char))。

在澄清问题的编辑:

这两种意见,将删除整个无形区片:

(defadvice delete-char (around delete-char-intangible activate) 
    "when about to delete a char that's intangible, delete the whole region 
Only do this when #chars is 1" 
    (if (and (= (ad-get-arg 0) 1) 
      (get-text-property (point) 'intangible)) 
     (kill-region (point) (save-excursion (forward-char 1) (point))) 
    ad-do-it)) 

(defadvice delete-backward-char (around delete-backward-char-intangible activate) 
    "when about to delete a char that's intangible, delete the whole region 
Only do this interactively and when #chars is 1" 
    (if (and (= (ad-get-arg 0) 1) (> (point) (point-min)) 
      (get-text-property (- (point) 1) 'intangible)) 
     (kill-region (point) (save-excursion (backward-char 1) (point))) 
    ad-do-it)) 

建议检查,以确保该命令被调用的参数1,只有这样才会删除整个无形区域,否则就表现正常。

+0

对不起,不是很精确。我希望删除命令删除整个无形文本,不仅仅是 的一部分。在我正在构建的用户界面中,一些关键文本是隐形和无形的。所以当用户 按下DEL(C-d)之后(之前)隐藏的无形文本时,整个文本应该消失。 谢谢。 – VitoshKa 2010-09-29 19:23:08

+0

谢谢Trey,它的工作原理! – VitoshKa 2010-09-30 07:52:14