2012-09-22 103 views
1

下面的函数应该在行的开始处插入一个#,如果不是,它应该到行尾并插入一个#。这是为什么不工作(它总是去年底并插入#散列字符的Emacs函数

(defun end-of-line-hash() 
    (interactive) 
    (if (beginning-of-line) 
     (insert "#") 
    (end-of-line) 
    (insert "#")) 
) 
(global-set-key (kbd "#") 'end-of-line-hash) 

回答

3

功能beginning-of-line移动光标到该行的开头。它可能返回nil。试试这个。

(defun end-of-line-hash() 
    (interactive) 
    (if (= (point) (line-beginning-position)) 
     (insert "#") 
    (end-of-line) 
    (insert "#")) 
) 
+0

就是这样,谢谢。 – PascalVKooten

+0

您是否知道如何通过首先检查是否选择某个区域来扩展此项?如果选择了一个区域,它应该运行“注释区域”。这将使哈希字符全能:) – PascalVKooten

+0

我真的做到了!我会将它发布在答案:)(这是我在Emacs中完成的最先进的东西) – PascalVKooten

0

随着rwb的答案的帮助:

(defun hash-character-ESS() 
    (interactive) 
    (if (region-active-p) 
     (comment-region (region-beginning) (region-end)) 
    (if (= (point) (line-beginning-position)) 
     (insert "#") 
     (end-of-line) 
     (insert "#"))) 
) 

1)如果文本被选中,commen该地区。 2)如果point(光标)位于行的开头,则在那里插入#字符。

3)如果point不是前两个中的任何一个,则将#放在行尾。