newcomment.el (comment-line): New command on C-x C-;.

This commit is contained in:
Artur Malabarba 2015-02-08 19:03:17 -02:00
parent 61320cc95c
commit 97cb255360
3 changed files with 39 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2015-02-08 Artur Malabarba <bruce.connor.am@gmail.com>
* newcomment.el (comment-line): New command.
* bindings.el (ctl-x-map): Bind to `C-x C-;'.
2015-02-08 Oleh Krehel <ohwoeowho@gmail.com>
* outline.el (outline-show-entry): Fix one invisible char for the

View file

@ -1130,6 +1130,7 @@ if `inhibit-field-text-motion' is non-nil."
(define-key esc-map "j" 'indent-new-comment-line)
(define-key esc-map "\C-j" 'indent-new-comment-line)
(define-key ctl-x-map ";" 'comment-set-column)
(define-key ctl-x-map "C-;" 'comment-line)
(define-key ctl-x-map "f" 'set-fill-column)
(define-key ctl-x-map "$" 'set-selective-display)

View file

@ -1451,6 +1451,38 @@ unless optional argument SOFT is non-nil."
(end-of-line 0)
(insert comend))))))))))))
;;;###autoload
(defun comment-line (n)
"Comment or uncomment current line and leave point after it.
With positive prefix, apply to N lines including current one.
With negative prefix, apply to -N lines above. Also, further
consecutive invocations of this command will inherit the negative
argument.
If region is active, comment lines in active region instead.
Unlike `comment-dwim', this always comments whole lines."
(interactive "p")
(if (use-region-p)
(comment-or-uncomment-region
(save-excursion
(goto-char (region-beginning))
(line-beginning-position))
(save-excursion
(goto-char (region-end))
(line-end-position)))
(when (and (eq last-command 'comment-line-backward)
(natnump n))
(setq n (- n)))
(let ((range
(list (line-beginning-position)
(goto-char (line-end-position n)))))
(comment-or-uncomment-region
(apply #'min range)
(apply #'max range)))
(forward-line 1)
(back-to-indentation)
(unless (natnump n) (setq this-command 'comment-line-backward)))
(provide 'newcomment)
;;; newcomment.el ends here