[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))))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] trunk r115540: * lisp/emulation/cua-rect.el (cua-rectangle-mark-mode): New minor mode.,
Stefan Monnier <=