From 4b72c12bf8e7231aba333ee1c2c354c35c0dd77c Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 11 Dec 2013 09:42:34 -0500 Subject: [PATCH] * lisp/delsel.el (delete-selection-mode): Don't enable transient-mark-mode. (delete-selection-helper): Make sure yank starts at the top of the deleted region. (minibuffer-keyboard-quit): Use region-active-p. --- etc/NEWS | 12 +++++++----- lisp/ChangeLog | 5 +++++ lisp/delsel.el | 17 ++++++++++------- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 8ee102487a..b446d2709b 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -247,7 +247,7 @@ You can pick the name of the function and the variables with `C-x 4 a'. * Changes in Specialized Modes and Packages in Emacs 24.4 -** The backtrace debugger can display local vars with `v'. +** `delete-selection-mode' can be used without transient-mark-mode. ** prolog-use-smie has been removed, along with the non-SMIE indentation code. @@ -257,10 +257,6 @@ file and letting SMIE learn from it. ** sh-script now uses its SMIE indentation algorithm by default. -** The debugger's `e' command evaluates the code in the context at point. -This includes using the lexical environment at point, which means that -`e' now lets you access lexical variables as well. - ** `eshell' now supports visual subcommands and options Eshell has been able to handle "visual" commands (interactive, non-line oriented commands such as top that require display @@ -318,6 +314,12 @@ Use `electric-indent-mode' instead. ** completing-read-multiple's separator can now be a regexp. The default separator is changed to allow surrounding spaces around the comma. +** The backtrace debugger and local variables: +*** The debugger's `e' command evaluates the code in the context at point. +This includes using the lexical environment at point, which means that +`e' now lets you access lexical variables as well. +*** The backtrace debugger can display local vars with `v'. + ** Battery *** Battery information via the BSD `apm' utility is now supported. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2b1b2fe97c..fa825ccaf3 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,10 @@ 2013-12-11 Stefan Monnier + * delsel.el (delete-selection-mode): Don't enable transient-mark-mode. + (delete-selection-helper): Make sure yank starts at the top of the + deleted region. + (minibuffer-keyboard-quit): Use region-active-p. + * emacs-lisp/trace.el (trace-make-advice): Don't deactivate the mark. * simple.el (normal-erase-is-backspace-mode): Map kp-delete identically diff --git a/lisp/delsel.el b/lisp/delsel.el index f0c6996834..87e84e59de 100644 --- a/lisp/delsel.el +++ b/lisp/delsel.el @@ -71,8 +71,7 @@ any selection." :global t :group 'editing-basics (if (not delete-selection-mode) (remove-hook 'pre-command-hook 'delete-selection-pre-hook) - (add-hook 'pre-command-hook 'delete-selection-pre-hook) - (transient-mark-mode t))) + (add-hook 'pre-command-hook 'delete-selection-pre-hook))) (defun delete-active-region (&optional killp) "Delete the active region. @@ -122,7 +121,11 @@ If KILLP in not-nil, the active region is killed instead of deleted." (fboundp 'mouse-region-match) (mouse-region-match)) (current-kill 1)) - (delete-active-region)) + (let ((pos (copy-marker (region-beginning)))) + (delete-active-region) + ;; If the region was, say, rectangular, make sure we yank + ;; from the top, to "replace". + (goto-char pos))) ((eq type 'supersede) (let ((empty-region (= (point) (mark)))) (delete-active-region) @@ -192,7 +195,7 @@ See `delete-selection-helper'." In Delete Selection mode, if the mark is active, just deactivate it; then it takes a second \\[keyboard-quit] to abort the minibuffer." (interactive) - (if (and delete-selection-mode transient-mark-mode mark-active) + (if (and delete-selection-mode (region-active-p)) (setq deactivate-mark t) (abort-recursive-edit))) @@ -209,9 +212,9 @@ then it takes a second \\[keyboard-quit] to abort the minibuffer." (define-key minibuffer-local-completion-map "\C-g" 'abort-recursive-edit) (define-key minibuffer-local-must-match-map "\C-g" 'abort-recursive-edit) (define-key minibuffer-local-isearch-map "\C-g" 'abort-recursive-edit) - (dolist (sym '(self-insert-command insert-char quoted-insert yank clipboard-yank - insert-register - reindent-then-newline-and-indent newline-and-indent newline open-line)) + (dolist (sym '(self-insert-command insert-char quoted-insert yank + clipboard-yank insert-register newline-and-indent + reindent-then-newline-and-indent newline open-line)) (put sym 'delete-selection nil)) ;; continue standard unloading nil) -- 2.20.1