如何在emacs C ++模式下开始评论之前到达行尾?

时间:2014-06-28 16:47:26

标签: c++ emacs

在实践中,我经常遇到以下情况:

statement_line /*..some comments..*/

有时我需要跳转到只是将statement_line的结尾传递给:添加一些代码,或删除整个注释区域。

是否有键盘快捷键可以执行此操作? (我知道 C-s; Ret 适用于以&#34 ;;&#34结尾的statement_line;但并非所有情况都是如此。例如if(...) /*...comments...*/

提前致谢。

3 个答案:

答案 0 :(得分:1)

试试这段代码:

(defun end-of-statement ()
  (interactive)
  (beginning-of-line)
  (if (comment-search-forward (line-end-position) t)
      (re-search-backward "//\\|/\\*")
    (end-of-line))
  (skip-chars-backward " \t"))

我刚刚写了它,所以它可能需要一些调整,但它看起来 此刻很好。

答案 1 :(得分:1)

不是对您的问题的完整答案,但对于您要删除评论的情况,您可以使用C-u M-;(又名comment-kill)。

答案 2 :(得分:1)

我有一个命令在行尾和代码结束之间跳转。它适用于大多数编程模式。

(defun end-of-line-code ()
  (interactive "^")
  (require 'newcomment)
  (if comment-start-skip
      (save-match-data
        (let* ((bolpos (line-beginning-position)))
          (end-of-line)
          (if (comment-search-backward bolpos 'noerror)
              (search-backward-regexp comment-start-skip bolpos 'noerror))
          (skip-syntax-backward " " bolpos)))
    (end-of-line)))

(defun end-of-line-or-code ()
  "Move to EOL, or if already there, to EOL sans comments."
  (interactive "^")
  (if (eolp) ;; test me here
      (end-of-line-code)
    (end-of-line)))
(put 'end-of-line-or-code 'CUA 'move)

(defun jpk/prog-mode-hook ()
  ...
  (local-set-key (kbd "C-e") 'end-of-line-or-code)
  ...
  )

(add-hook 'prog-mode-hook 'jpk/prog-mode-hook)

我有一个类似的命令,它在行的开头和文本的开头之间反弹,如果你有兴趣我可以发帖。