emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master eb0d10d: Put combine-change-calls around comment-re


From: Alan Mackenzie
Subject: [Emacs-diffs] master eb0d10d: Put combine-change-calls around comment-region and uncomment-region
Date: Tue, 3 Apr 2018 12:39:44 -0400 (EDT)

branch: master
commit eb0d10d567af76967d8e738e51a79ef4998470b7
Author: Alan Mackenzie <address@hidden>
Commit: Alan Mackenzie <address@hidden>

    Put combine-change-calls around comment-region and uncomment-region
    
    * lisp/newcomment.el (comment-combine-change-calls): New buffer local
    variable.
    (uncomment-region-default-1, comment-region-default-1): Functions renamed 
from
    uncomment-region-default and comment-region-default.
    (uncomment-region-default, comment-region-default): New functions, which 
call
    the above either enclosed in combine-change-calls or not.
---
 lisp/newcomment.el | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/lisp/newcomment.el b/lisp/newcomment.el
index 9eb6875..0e983fd 100644
--- a/lisp/newcomment.el
+++ b/lisp/newcomment.el
@@ -159,6 +159,14 @@ The function has no args.
 Applicable at least in modes for languages like fixed-format Fortran where
 comments always start in column zero.")
 
+(defvar-local comment-combine-change-calls t
+  "If non-nil (the default), use `combine-change-calls' around
+  calls of `comment-region-function' and
+  `uncomment-region-function'.  This Substitutes a single call to
+  each of the hooks `before-change-functions' and
+  `after-change-functions' in place of those hooks being called
+  for each individual buffer change.")
+
 (defvar comment-region-function 'comment-region-default
   "Function to comment a region.
 Its args are the same as those of `comment-region', but BEG and END are
@@ -898,7 +906,7 @@ comment markers."
     (save-excursion
       (funcall uncomment-region-function beg end arg))))
 
-(defun uncomment-region-default (beg end &optional arg)
+(defun uncomment-region-default-1 (beg end &optional arg)
   "Uncomment each line in the BEG .. END region.
 The numeric prefix ARG can specify a number of chars to remove from the
 comment markers."
@@ -995,6 +1003,15 @@ comment markers."
          (goto-char (point-max))))))
   (set-marker end nil))
 
+(defun uncomment-region-default (beg end &optional arg)
+  "Uncomment each line in the BEG .. END region.
+The numeric prefix ARG can specify a number of chars to remove from the
+comment markers."
+  (if comment-combine-change-calls
+      (combine-change-calls beg end (uncomment-region-default-1 beg end arg))
+    (uncomment-region-default-1 beg end arg)))
+
+
 (defun comment-make-bol-ws (len)
   "Make a white-space string of width LEN for use at BOL.
 When `indent-tabs-mode' is non-nil, tab characters will be used."
@@ -1191,7 +1208,7 @@ changed with `comment-style'."
     ;; FIXME: maybe we should call uncomment depending on ARG.
     (funcall comment-region-function beg end arg)))
 
-(defun comment-region-default (beg end &optional arg)
+(defun comment-region-default-1 (beg end &optional arg)
   (let* ((numarg (prefix-numeric-value arg))
         (style (cdr (assoc comment-style comment-styles)))
         (lines (nth 2 style))
@@ -1260,6 +1277,11 @@ changed with `comment-style'."
         lines
         indent))))))
 
+(defun comment-region-default (beg end &optional arg)
+  (if comment-combine-change-calls
+      (combine-change-calls beg end (comment-region-default-1 beg end arg))
+    (comment-region-default-1 beg end arg)))
+
 ;;;###autoload
 (defun comment-box (beg end &optional arg)
   "Comment out the BEG .. END region, putting it inside a box.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]