emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] trunk r115540: * lisp/emulation/cua-rect.el (cua-rectangle


From: Stefan Monnier
Subject: [Emacs-diffs] trunk r115540: * lisp/emulation/cua-rect.el (cua-rectangle-mark-mode): New minor mode.
Date: Mon, 16 Dec 2013 02:24:16 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 115540
revision-id: address@hidden
parent: address@hidden
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Sun 2013-12-15 21:24:08 -0500
message:
  * lisp/emulation/cua-rect.el (cua-rectangle-mark-mode): New minor mode.
  (cua--deactivate-rectangle): Don't deactivate the mark.
  (cua-set-rectangle-mark): Don't set mark-active since
  cua--activate-rectangle already does it for us.
  (cua--rectangle-highlight-for-redisplay): Unhighlight a previous
  non-rectangular region.
  
  * lisp/emulation/cua-base.el (cua-repeat-replace-region):
  Use with-current-buffer.
  
  * lisp/net/gnutls.el: Use cl-lib.
  (gnutls-negotiate): `mapcan' -> cl-mapcan.
modified:
  etc/NEWS                       news-20100311060928-aoit31wvzf25yr1z-1
  lisp/ChangeLog                 changelog-20091113204419-o5vbwnq5f7feedwu-1432
  lisp/emulation/cua-base.el     cuabase.el-20091113204419-o5vbwnq5f7feedwu-2415
  lisp/emulation/cua-rect.el     cuarect.el-20091113204419-o5vbwnq5f7feedwu-2417
  lisp/net/gnutls.el             gnutls.el-20100926054902-dzayyj6wycit6kzn-5
  lisp/rect.el                   rect.el-20091113204419-o5vbwnq5f7feedwu-83
=== modified file 'etc/NEWS'
--- a/etc/NEWS  2013-12-13 21:41:35 +0000
+++ b/etc/NEWS  2013-12-16 02:24:08 +0000
@@ -254,11 +254,12 @@
 * Changes in Specialized Modes and Packages in Emacs 24.4
 
 ** CUA-mode
-CUA-mode was changed to make use of delete-selection-mode and
+*** CUA-mode was changed to make use of delete-selection-mode and
 shift-select-mode.  So you can now enable it independently from
 transient-mark-mode, delete-selection-mode, and shift-select-mode.
 As a result, cua-highlight-region-shift-only is obsolete
 (you can disable transient-mark-mode to get the same result).
+*** CUA's rectangles can now be used via `cua-rectangle-mark-mode'.
 
 ** `delete-selection-mode' can be used without transient-mark-mode.
 

=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2013-12-14 19:55:19 +0000
+++ b/lisp/ChangeLog    2013-12-16 02:24:08 +0000
@@ -1,3 +1,18 @@
+2013-12-16  Stefan Monnier  <address@hidden>
+
+       * emulation/cua-rect.el (cua-rectangle-mark-mode): New minor mode.
+       (cua--deactivate-rectangle): Don't deactivate the mark.
+       (cua-set-rectangle-mark): Don't set mark-active since
+       cua--activate-rectangle already does it for us.
+       (cua--rectangle-highlight-for-redisplay): Unhighlight a previous
+       non-rectangular region.
+
+       * emulation/cua-base.el (cua-repeat-replace-region):
+       Use with-current-buffer.
+
+       * net/gnutls.el: Use cl-lib.
+       (gnutls-negotiate): `mapcan' -> cl-mapcan.
+
 2013-12-14  Teodor Zlatanov  <address@hidden>
 
        * emacs-lisp/package.el (package-built-in-p): Support both

=== modified file 'lisp/emulation/cua-base.el'
--- a/lisp/emulation/cua-base.el        2013-12-11 14:49:01 +0000
+++ b/lisp/emulation/cua-base.el        2013-12-16 02:24:08 +0000
@@ -971,9 +971,8 @@
 of text."
   (interactive "P")
   (when cua--last-deleted-region-pos
-    (save-excursion
+    (with-current-buffer (car cua--last-deleted-region-pos)
       (save-restriction
-       (set-buffer (car cua--last-deleted-region-pos))
        (widen)
        ;; Find the text that replaced the region via the undo list.
        (let ((ul buffer-undo-list)

=== modified file 'lisp/emulation/cua-rect.el'
--- a/lisp/emulation/cua-rect.el        2013-12-11 14:49:01 +0000
+++ b/lisp/emulation/cua-rect.el        2013-12-16 02:24:08 +0000
@@ -78,7 +78,7 @@
       (push (list 'apply 0 s e
                  'cua--rect-undo-handler
                  (copy-sequence cua--rectangle) t s e)
-         buffer-undo-list))))
+            buffer-undo-list))))
 
 (defun cua--rect-undo-handler (rect on s e)
   (if (setq on (not on))
@@ -89,6 +89,21 @@
              'cua--rect-undo-handler rect on s e)
        buffer-undo-list))
 
+;;;###autoload
+(define-minor-mode cua-rectangle-mark-mode
+  "Toggle the region as rectangular.
+Activates the region if needed.  Only lasts until the region is deactivated."
+  :keymap cua--rectangle-keymap
+  (cond
+   (cua-rectangle-mark-mode
+    (add-hook 'deactivate-mark-hook
+              (lambda () (cua-rectangle-mark-mode -1)))
+    (add-hook 'post-command-hook #'cua--rectangle-post-command nil t)
+    (cua-set-rectangle-mark))
+   (t
+    (cua--deactivate-rectangle)
+    (remove-hook 'post-command-hook #'cua--rectangle-post-command t))))
+
 ;;; Rectangle geometry
 
 (defun cua--rectangle-top (&optional val)
@@ -708,8 +723,7 @@
                    killed-rectangle "")))))
 
 (defun cua--activate-rectangle ()
-  ;; Turn on rectangular marking mode by disabling transient mark mode
-  ;; and manually handling highlighting from a post command hook.
+  ;; Set cua--rectangle to indicate we're marking a rectangle.
   ;; Be careful if we are already marking a rectangle.
   (setq cua--rectangle
         (if (and cua--last-rectangle
@@ -725,7 +739,7 @@
 
 (defun cua--deactivate-rectangle ()
   ;; This is used to clean up after `cua--activate-rectangle'.
-  (mapc (function delete-overlay) cua--rectangle-overlays)
+  (mapc #'delete-overlay cua--rectangle-overlays)
   (setq cua--last-rectangle (cons (current-buffer)
                                   (cons (point) ;; cua-save-point
                                         cua--rectangle))
@@ -733,7 +747,10 @@
         cua--rectangle-overlays nil
         cua--status-string nil
         cua--mouse-last-pos nil)
-  (deactivate-mark))
+  ;; FIXME: This call to cua-rectangle-mark-mode is a workaround.
+  ;; Deactivation can happen in various different ways, and we
+  ;; currently don't handle them all in a coherent way.
+  (if cua-rectangle-mark-mode (cua-rectangle-mark-mode -1)))
 
 (defun cua--highlight-rectangle ()
   ;; This function is used to highlight the rectangular region.
@@ -879,7 +896,6 @@
           (push-mark nil nil t)))
     (cua--activate-rectangle)
     (cua--rectangle-set-corners)
-    (setq mark-active t)
     (if cua-enable-rectangle-auto-help
         (cua-help-for-rectangle t))))
 
@@ -1385,7 +1401,7 @@
   (if (not cua--rectangle) (apply orig args)
     ;; When cua--rectangle is active, just don't highlight at all, since we
     ;; already do it elsewhere.
-    ))
+    (funcall redisplay-unhighlight-region-function (nth 3 args))))
 
 (defun cua--rectangle-region-extract (orig &optional delete)
   (cond

=== modified file 'lisp/net/gnutls.el'
--- a/lisp/net/gnutls.el        2013-12-14 18:04:09 +0000
+++ b/lisp/net/gnutls.el        2013-12-16 02:24:08 +0000
@@ -35,7 +35,7 @@
 
 ;;; Code:
 
-(eval-when-compile (require 'cl-lib))
+(require 'cl-lib)
 
 (defgroup gnutls nil
   "Emacs interface to the GnuTLS library."
@@ -210,7 +210,7 @@
                              t)
                             ;; if a list, look for hostname matches
                             ((listp gnutls-verify-error)
-                             (mapcan
+                             (cl-mapcan
                               (lambda (check)
                                 (when (string-match (car check) hostname)
                                   (cdr check)))

=== modified file 'lisp/rect.el'
--- a/lisp/rect.el      2013-12-08 07:32:01 +0000
+++ b/lisp/rect.el      2013-12-16 02:24:08 +0000
@@ -418,9 +418,6 @@
 ;; - lots of commands handle the region without paying attention to its
 ;;   rectangular shape.
 
-(add-hook 'deactivate-mark-hook
-          (lambda () (rectangle-mark-mode -1)))
-
 (add-function :around redisplay-highlight-region-function
               #'rectangle--highlight-for-redisplay)
 (add-function :around redisplay-unhighlight-region-function
@@ -443,6 +440,8 @@
 Activates the region if needed.  Only lasts until the region is deactivated."
   nil nil nil
   (when rectangle-mark-mode
+    (add-hook 'deactivate-mark-hook
+              (lambda () (rectangle-mark-mode -1)))
     (unless (region-active-p)
       (push-mark)
       (activate-mark))))


reply via email to

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