如何评论/取消注释行或区域而不完全标记我要评论的区域

时间:2015-01-24 20:38:15

标签: emacs elisp

可能重复Emacs comment/uncomment current line

我想在上面的问题中找到与Gerstmann的答案类似的东西,但如果该区域的末端不是该行的结尾,那么答案就不会很好。例如,使用Gerstmann函数进行评论

(global-set-key (kbd "C-;") 'backward-delete-char-untabify)
(global-set-key (kbd "C-c C-c") 'comment-or-uncomment-region-or-line)

带有区域

(global-set-key (kbd "C-;") '(STARTPOINT)backward-delete-char-untabify)
(global-set-key (kbd "C-c C-c") 'comment-or-uncomment-(ENDPOINT)region-or-line)

将导致

(global-set-key (kbd "C-;") ';; backward-delete-char-untabify)
;; (global-set-key (kbd "C-c C-c") 'comment-or-uncomment-
        region-or-line)

我希望它是这样的

;; (global-set-key (kbd "C-;") 'backward-delete-char-untabify)
;; (global-set-key (kbd "C-c C-c") 'comment-or-uncomment-region-or-line)    

我怎样才能做到这一点,类似于取消注释,同样的事情是取消注释区域触及的线条上的所有内容。我确信有些情况可能不是评论方法,但目前这对我来说似乎更好。

1 个答案:

答案 0 :(得分:0)

你选择了一个糟糕的例子,因为与某些语言不同,LISP不是基于行的。所以用你的方法,从

开始
(progn
  ~(foo)
  (bar)|)

你得到:

(progn
  ;; (foo)
  ;; (bar))

这是一个错误。

无论如何,这里是代码,也许你可以将它用于Python或其他东西:

(defun comment-line-based (beg end)
  (interactive "r")
  (let (deactivate-mark)
    (goto-char beg)
    (beginning-of-line)
    (set-mark (point))
    (goto-char end)
    (end-of-line)
    (comment-dwim nil))
  (deactivate-mark))

它应该适用于评论和取消评论。

相关问题