aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman2002-01-26 22:47:39 +0000
committerRichard M. Stallman2002-01-26 22:47:39 +0000
commitcb96f0941af51dbe1d8084ce488c766f67dcb728 (patch)
treea0c4f09ad52f833f43e8962f99a1c167ef4d199a
parentb090d7925af7db73444eef735ddf18c907635e75 (diff)
downloademacs-cb96f0941af51dbe1d8084ce488c766f67dcb728.tar.gz
emacs-cb96f0941af51dbe1d8084ce488c766f67dcb728.zip
(pc-selection-mode-hook)
(pc-select-saved-settings-alist, pc-select-map) (pc-select-saved-global-map, pc-select-key-bindings-alist) (pc-select-default-key-bindings, pc-select-extra-key-bindings) (pc-select-meta-moves-sexps-key-bindings) (pc-select-tty-key-bindings, pc-select-old-M-delete-binding): New variables. (pc-select-define-keys, pc-select-restore-keys): New functions. (pc-select-add-to-alist, pc-select-save-and-set-var) (pc-select-save-and-set-mode, pc-select-restore-var) (pc-select-restore-mode): New macros. (pc-selection-mode): Completely rewrote the body of the function; the main goal was to make pc-selection-mode "turn-off"-able, like other minor modes. Use define-minore-mode instead of just a defun. Store the key bindings into four alists: pc-select-default-key-bindings, pc-select-extra-key-bindings, pc-select-meta-moves-sexps-key-bindings, and pc-select-tty-key-bindings; then have the pc-select-define-keys function walk those alists instead of calling define-key repeatedly. When the mode is turned on, set the keybindings in global-map and remember the old keybindings; when the mode is turned off, restore the previously-saved keybindings. (pc-selection-mode defcustom): Reflect the fact that the mode is now "turn-off"-able.
-rw-r--r--lisp/emulation/pc-select.el455
1 files changed, 325 insertions, 130 deletions
diff --git a/lisp/emulation/pc-select.el b/lisp/emulation/pc-select.el
index 9911666e92e..90865f2bdee 100644
--- a/lisp/emulation/pc-select.el
+++ b/lisp/emulation/pc-select.el
@@ -2,7 +2,7 @@
2;;; (or MAC GUI or MS-windoze (bah)) look-and-feel 2;;; (or MAC GUI or MS-windoze (bah)) look-and-feel
3;;; including key bindings. 3;;; including key bindings.
4 4
5;; Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc. 5;; Copyright (C) 1995, 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
6 6
7;; Author: Michael Staats <michael@thp.Uni-Duisburg.DE> 7;; Author: Michael Staats <michael@thp.Uni-Duisburg.DE>
8;; Keywords: convenience emulation 8;; Keywords: convenience emulation
@@ -108,6 +108,151 @@ This gives mostly Emacs-like behaviour with only the selection keys enabled."
108 :type 'boolean 108 :type 'boolean
109 :group 'pc-select) 109 :group 'pc-select)
110 110
111(defcustom pc-selection-mode-hook nil
112 "The hook to run when pc-selection-mode is toggled."
113 :type 'hook
114 :group 'pc-select)
115
116(defvar pc-select-saved-settings-alist nil
117 "The values of the variables before `pc-selection-mode' was toggled on.
118When `pc-selection-mode' is toggled on, it sets quite a few variables
119for its own purposes. This alist holds the original values of the
120variables `pc-selection-mode' had set, so that these variables can be
121restored to their original values when `pc-selection-mode' is toggled off.")
122
123(defvar pc-select-map nil
124 "The keymap used as the global map when `pc-selection-mode' is on." )
125
126(defvar pc-select-saved-global-map nil
127 "The global map that was in effect when `pc-selection-mode' was toggled on.")
128
129(defvar pc-select-key-bindings-alist nil
130 "This alist holds all the key bindings `pc-selection-mode' sets.")
131
132(defvar pc-select-default-key-bindings nil
133 "These key bindings always get set by `pc-selection-mode'.")
134
135(unless pc-select-default-key-bindings
136 (let ((lst
137 ;; This is to avoid confusion with the delete-selection-mode
138 ;; On simple displays you cant see that a region is active and
139 ;; will be deleted on the next keypress IMHO especially for
140 ;; copy-region-as-kill this is confusing.
141 ;; The same goes for exchange-point-and-mark
142 '(("\M-w" . copy-region-as-kill-nomark)
143 ("\C-x\C-x" . exchange-point-and-mark-nomark)
144 ([S-right] . forward-char-mark)
145 ([right] . forward-char-nomark)
146 ([C-S-right] . forward-word-mark)
147 ([C-right] . forward-word-nomark)
148 ([S-left] . backward-char-mark)
149 ([left] . backward-char-nomark)
150 ([C-S-left] . backward-word-mark)
151 ([C-left] . backward-word-nomark)
152 ([S-down] . next-line-mark)
153 ([down] . next-line-nomark)
154
155 ([S-end] . end-of-line-mark)
156 ([end] . end-of-line-nomark)
157 ([S-C-end] . end-of-buffer-mark)
158 ([C-end] . end-of-buffer-nomark)
159 ([S-M-end] . end-of-buffer-mark)
160 ([M-end] . end-of-buffer-nomark)
161
162 ([S-next] . scroll-up-mark)
163 ([next] . scroll-up-nomark)
164
165 ([S-up] . previous-line-mark)
166 ([up] . previous-line-nomark)
167
168 ([S-home] . beginning-of-line-mark)
169 ([home] . beginning-of-line-nomark)
170 ([S-C-home] . beginning-of-buffer-mark)
171 ([C-home] . beginning-of-buffer-nomark)
172 ([S-M-home] . beginning-of-buffer-mark)
173 ([M-home] . beginning-of-buffer-nomark)
174
175 ([M-S-down] . forward-line-mark)
176 ([M-down] . forward-line-nomark)
177 ([M-S-up] . backward-line-mark)
178 ([M-up] . backward-line-nomark)
179
180 ([S-prior] . scroll-down-mark)
181 ([prior] . scroll-down-nomark)
182
183 ;; Next four lines are from Pete Forman.
184 ([C-down] . forward-paragraph-nomark) ; KNextPara cDn
185 ([C-up] . backward-paragraph-nomark) ; KPrevPara cUp
186 ([S-C-down] . forward-paragraph-mark)
187 ([S-C-up] . backward-paragraph-mark))))
188
189 (setq pc-select-default-key-bindings lst)))
190
191(defvar pc-select-extra-key-bindings nil
192 "Key bindings to set only if `pc-select-selection-keys-only' is nil.")
193
194;; The following keybindings are for standard ISO keyboards
195;; as they are used with IBM compatible PCs, IBM RS/6000,
196;; MACs, many X-Stations and probably more
197(unless pc-select-extra-key-bindings
198 (let ((lst
199 '(([S-insert] . yank)
200 ([C-insert] . copy-region-as-kill)
201 ([S-delete] . kill-region)
202
203 ;; The following bindings are useful on Sun Type 3 keyboards
204 ;; They implement the Get-Delete-Put (copy-cut-paste)
205 ;; functions from sunview on the L6, L8 and L10 keys
206 ;; Sam Steingold <sds@gnu.org> says that f16 is copy and f18 is paste.
207 ([f16] . copy-region-as-kill)
208 ([f18] . yank)
209 ([f20] . kill-region)
210
211 ;; The following bindings are from Pete Forman.
212 ([f6] . other-window) ; KNextPane F6
213 ([C-delete] . kill-line) ; KEraseEndLine cDel
214 ("\M-\d" . undo) ; KUndo aBS
215
216 ;; The following binding is taken from pc-mode.el
217 ;; as suggested by RMS.
218 ;; I only used the one that is not covered above.
219 ([C-M-delete] . kill-sexp)
220 ;; Next line proposed by Eli Barzilay
221 ([C-escape] . electric-buffer-list))))
222
223 (setq pc-select-extra-key-bindings lst)))
224
225(defvar pc-select-meta-moves-sexps-key-bindings
226 '((([M-S-right] . forward-sexp-mark)
227 ([M-right] . forward-sexp-nomark)
228 ([M-S-left] . backward-sexp-mark)
229 ([M-left] . backward-sexp-nomark))
230 (([M-S-right] . forward-word-mark)
231 ([M-right] . forward-word-nomark)
232 ([M-S-left] . backward-word-mark)
233 ([M-left] . backward-word-nomark)))
234 "The list of key bindings controlled by `pc-select-meta-moves-sexp'.
235The bindings in the car of this list get installed if
236`pc-select-meta-moves-sexp' is t, the bindings in the cadr of this
237list get installed otherwise.")
238
239;; This is for tty. We don't turn on normal-erase-is-backspace,
240;; but bind keys as pc-selection-mode did before
241;; normal-erase-is-backspace was invented, to keep us back
242;; compatible.
243(defvar pc-select-tty-key-bindings
244 '(([delete] . delete-char) ; KDelete Del
245 ([C-backspace] . backward-kill-word))
246 "The list of key bindings controlled by `pc-select-selection-keys-only'.
247These key bindings get installed when running in a tty, but only if
248`pc-select-selection-keys-only' is nil.")
249
250(defvar pc-select-old-M-delete-binding nil
251 "Holds the old mapping of [M-delete] in the `function-key-map'.
252This variable holds the value associated with [M-delete] in the
253`function-key-map' before `pc-selection-mode' had changed that
254association.")
255
111;;;; 256;;;;
112;; misc 257;; misc
113;;;; 258;;;;
@@ -606,8 +751,81 @@ Don't use this command in Lisp programs!
606 (point-min)))) 751 (point-min))))
607 (if arg (forward-line 1))) 752 (if arg (forward-line 1)))
608 753
754
755(defun pc-select-define-keys (alist keymap)
756 "Make KEYMAP have the key bindings specified in ALIST."
757 (let ((lst alist))
758 (while lst
759 (define-key keymap (caar lst) (cdar lst))
760 (setq lst (cdr lst)))))
761
762(defun pc-select-restore-keys (alist keymap saved-map)
763 "Use ALIST to restore key bindings from SAVED-MAP into KEYMAP.
764Go through all the key bindings in ALIST, and, for each key
765binding, if KEYMAP and ALIST still agree on the key binding,
766restore the previous value of that key binding from SAVED-MAP."
767 (let ((lst alist))
768 (while lst
769 (when (equal (lookup-key keymap (caar lst)) (cdar lst))
770 (define-key keymap (caar lst) (lookup-key saved-map (caar lst))))
771 (setq lst (cdr lst)))))
772
773(defmacro pc-select-add-to-alist (alist var val)
774 "Ensure that ALIST contains the cons cell (VAR . VAL).
775If a cons cell whose car is VAR is already on the ALIST, update the
776cdr of that cell with VAL. Otherwise, make a new cons cell
777\(VAR . VAL), and prepend it onto ALIST."
778 (let ((elt (make-symbol "elt")))
779 `(let ((,elt (assq ',var ,alist)))
780 (if ,elt
781 (setcdr ,elt ,val)
782 (setq ,alist (cons (cons ',var ,val) ,alist))))))
783
784(defmacro pc-select-save-and-set-var (var newval)
785 "Set VAR to NEWVAL; save the old value.
786The old value is saved on the `pc-select-saved-settings-alist'."
787 `(when (boundp ',var)
788 (pc-select-add-to-alist pc-select-saved-settings-alist ,var ,var)
789 (setq ,var ,newval)))
790
791(defmacro pc-select-save-and-set-mode (mode &optional arg mode-var)
792 "Call the function MODE; save the old value of the variable MODE.
793MODE is presumed to be a function which turns on a minor mode. First,
794save the value of the variable MODE on `pc-select-saved-settings-alist'.
795Then, if ARG is specified, call MODE with ARG, otherwise call it with
796nil as an argument. If MODE-VAR is specified, save the value of the
797variable MODE-VAR (instead of the value of the variable MODE) on
798`pc-select-saved-settings-alist'."
799 `(when (fboundp ',mode)
800 (pc-select-add-to-alist pc-select-saved-settings-alist
801 ,mode
802 (or (and (boundp ',mode) ,mode)
803 ,mode-var))
804 (,mode ,arg)))
805
806(defmacro pc-select-restore-var (var)
807 "Restore the previous value of the variable VAR.
808Look up VAR's previous value in `pc-select-saved-settings-alist', and,
809if the value is found, set VAR to that value."
810 (let ((elt (make-symbol "elt")))
811 `(let ((,elt (assq ',var pc-select-saved-settings-alist)))
812 (unless (null ,elt)
813 (setq ,var (cdr ,elt))))))
814
815(defmacro pc-select-restore-mode (mode)
816 "Restore the previous state (either on or off) of the minor mode MODE.
817Look up the value of the variable MODE on `pc-select-saved-settings-alist'.
818If the value is non-nil, call the function MODE with an argument of
8191, otherwise call it with an argument of -1."
820 (let ((elt (make-symbol "elt")))
821 `(when (fboundp ',mode)
822 (let ((,elt (assq ',mode pc-select-saved-settings-alist)))
823 (unless (null ,elt)
824 (,mode (if (cdr ,elt) 1 -1)))))))
825
826
609;;;###autoload 827;;;###autoload
610(defun pc-selection-mode () 828(define-minor-mode pc-selection-mode
611 "Change mark behaviour to emulate Motif, MAC or MS-Windows cut and paste style. 829 "Change mark behaviour to emulate Motif, MAC or MS-Windows cut and paste style.
612 830
613This mode enables Delete Selection mode and Transient Mark mode. 831This mode enables Delete Selection mode and Transient Mark mode.
@@ -649,135 +867,111 @@ In addition, certain other PC bindings are imitated (to avoid this, set
649the variable `pc-select-selection-keys-only' to t after loading pc-select.el 867the variable `pc-select-selection-keys-only' to t after loading pc-select.el
650but before calling `pc-selection-mode'): 868but before calling `pc-selection-mode'):
651 869
652 F6 `other-window' 870 F6 other-window
653 DELETE `delete-char' 871 DELETE delete-char
654 C-DELETE `kill-line' 872 C-DELETE kill-line
655 M-DELETE `kill-word' 873 M-DELETE kill-word
656 C-M-DELETE `kill-sexp' 874 C-M-DELETE kill-sexp
657 C-BACKSPACE `backward-kill-word' 875 C-BACKSPACE backward-kill-word
658 M-BACKSPACE `undo'" 876 M-BACKSPACE undo"
659 ;; FIXME: make into a proper minor mode (i.e. undoable).
660 ;; FIXME: bring pc-bindings-mode here ? 877 ;; FIXME: bring pc-bindings-mode here ?
661 (interactive) 878 nil nil nil
662 ;; 879
663 ;; keybindings 880 :group 'pc-select
664 ;; 881 :global t
665 882
666 ;; This is to avoid confusion with the delete-selection-mode 883 (if pc-selection-mode
667 ;; On simple displays you can't see that a region is active and 884 (if (null pc-select-key-bindings-alist)
668 ;; will be deleted on the next keypress. IMHO especially for 885 (progn
669 ;; copy-region-as-kill this is confusing. 886 (setq pc-select-map (copy-keymap (current-global-map))
670 ;; The same goes for exchange-point-and-mark 887 pc-select-saved-global-map (copy-keymap (current-global-map)))
671 (define-key global-map "\M-w" 'copy-region-as-kill-nomark) 888
672 (define-key global-map "\C-x\C-x" 'exchange-point-and-mark-nomark) 889 (setq pc-select-key-bindings-alist
673 ;; The following keybindings are for standard ISO keyboards 890 (append pc-select-default-key-bindings
674 ;; as they are used with IBM compatible PCs, IBM RS/6000, 891 (if pc-select-selection-keys-only
675 ;; MACs, many X-Stations and probably more 892 nil
676 (define-key global-map [S-right] 'forward-char-mark) 893 pc-select-extra-key-bindings)
677 (define-key global-map [right] 'forward-char-nomark) 894 (if pc-select-meta-moves-sexps
678 (define-key global-map [C-S-right] 'forward-word-mark) 895 (car pc-select-meta-moves-sexps-key-bindings)
679 (define-key global-map [C-right] 'forward-word-nomark) 896 (cadr pc-select-meta-moves-sexps-key-bindings))
680 (define-key global-map [S-left] 'backward-char-mark) 897 (if (or pc-select-selection-keys-only
681 (define-key global-map [left] 'backward-char-nomark) 898 (eq window-system 'x)
682 (define-key global-map [C-S-left] 'backward-word-mark) 899 (memq system-name '(ms-dos windows-nt)))
683 (define-key global-map [C-left] 'backward-word-nomark) 900 nil
684 (cond (pc-select-meta-moves-sexps 901 pc-select-tty-key-bindings)))
685 (define-key global-map [M-S-right] 'forward-sexp-mark) 902
686 (define-key global-map [M-right] 'forward-sexp-nomark) 903 (pc-select-define-keys pc-select-key-bindings-alist pc-select-map)
687 (define-key global-map [M-S-left] 'backward-sexp-mark) 904 (use-global-map pc-select-map)
688 (define-key global-map [M-left] 'backward-sexp-nomark)) 905
689 (t 906 (unless (or pc-select-selection-keys-only
690 (define-key global-map [M-S-right] 'forward-word-mark) 907 (eq window-system 'x)
691 (define-key global-map [M-right] 'forward-word-nomark) 908 (memq system-name '(ms-dos windows-nt)))
692 (define-key global-map [M-S-left] 'backward-word-mark) 909 ;; it is not clear that we need the following line
693 (define-key global-map [M-left] 'backward-word-nomark))) 910 ;; I hope it doesn't do too much harm to leave it in, though...
694 911 (setq pc-select-old-M-delete-binding
695 (define-key global-map [S-down] 'next-line-mark) 912 (lookup-key function-key-map [M-delete]))
696 (define-key global-map [down] 'next-line-nomark) 913 (define-key function-key-map [M-delete] [?\M-d]))
697 914
698 (define-key global-map [S-end] 'end-of-line-mark) 915 (when (and (not pc-select-selection-keys-only)
699 (define-key global-map [end] 'end-of-line-nomark) 916 (or (eq window-system 'x)
700 (global-set-key [S-C-end] 'end-of-buffer-mark) 917 (memq system-name '(ms-dos windows-nt)))
701 (global-set-key [C-end] 'end-of-buffer-nomark) 918 (fboundp 'normal-erase-is-backspace-mode))
702 (global-set-key [S-M-end] 'end-of-buffer-mark) 919 (pc-select-save-and-set-mode normal-erase-is-backspace-mode 1
703 (global-set-key [M-end] 'end-of-buffer-nomark) 920 normal-erase-is-backspace))
704 921 ;; the original author also had this above:
705 (define-key global-map [S-next] 'scroll-up-mark) 922 ;; (setq-default normal-erase-is-backspace t)
706 (define-key global-map [next] 'scroll-up-nomark) 923 ;; However, the documentation for the variable says that
707 924 ;; "setting it with setq has no effect", so I'm removing it.
708 (define-key global-map [S-up] 'previous-line-mark) 925
709 (define-key global-map [up] 'previous-line-nomark) 926 (pc-select-save-and-set-var highlight-nonselected-windows nil)
710 927 (pc-select-save-and-set-var transient-mark-mode t)
711 (define-key global-map [S-home] 'beginning-of-line-mark) 928 (pc-select-save-and-set-var mark-even-if-inactive t)
712 (define-key global-map [home] 'beginning-of-line-nomark) 929 (pc-select-save-and-set-mode delete-selection-mode 1))
713 (global-set-key [S-C-home] 'beginning-of-buffer-mark) 930 ;;else
714 (global-set-key [C-home] 'beginning-of-buffer-nomark) 931 ;; If the user turned on pc-selection-mode a second time
715 (global-set-key [S-M-home] 'beginning-of-buffer-mark) 932 ;; do not clobber the values of the variables that were
716 (global-set-key [M-home] 'beginning-of-buffer-nomark) 933 ;; saved from before pc-selection mode was activated --
717 934 ;; just make sure the values are the way we like them.
718 (define-key global-map [M-S-down] 'forward-line-mark) 935 (setq pc-select-map (copy-keymap (current-global-map)))
719 (define-key global-map [M-down] 'forward-line-nomark) 936 (pc-select-define-keys pc-select-key-bindings-alist pc-select-map)
720 (define-key global-map [M-S-up] 'backward-line-mark) 937 (use-global-map pc-select-map)
721 (define-key global-map [M-up] 'backward-line-nomark) 938 (unless (or pc-select-selection-keys-only
722 939 (eq window-system 'x)
723 (define-key global-map [S-prior] 'scroll-down-mark) 940 (memq system-name '(ms-dos windows-nt)))
724 (define-key global-map [prior] 'scroll-down-nomark) 941 ;; it is not clear that we need the following line
725 942 ;; I hope it doesn't do too much harm to leave it in, though...
726 ;; Next four lines are from Pete Forman. 943 (define-key function-key-map [M-delete] [?\M-d]))
727 (global-set-key [C-down] 'forward-paragraph-nomark) ; KNextPara cDn 944 (when (and (not pc-select-selection-keys-only)
728 (global-set-key [C-up] 'backward-paragraph-nomark) ; KPrevPara cUp 945 (or (eq window-system 'x)
729 (global-set-key [S-C-down] 'forward-paragraph-mark) 946 (memq system-name '(ms-dos windows-nt)))
730 (global-set-key [S-C-up] 'backward-paragraph-mark) 947 (fboundp 'normal-erase-is-backspace-mode))
731
732 (unless pc-select-selection-keys-only
733 ;; We are behaving like normal-erase-is-backspace-mode, so
734 ;; say so explicitly. But don't do that on a Unix tty, since
735 ;; some of them have keyboards that by default already behave
736 ;; as if normal-erase-is-backspace mode is on, and turning it
737 ;; a second time screws them up.
738 (if (or (eq window-system 'x)
739 (memq system-name '(ms-dos windows-nt macos)))
740 (progn
741 (setq-default normal-erase-is-backspace t)
742 (normal-erase-is-backspace-mode 1)) 948 (normal-erase-is-backspace-mode 1))
743 ;; This is for tty. We don't turn on normal-erase-is-backspace, 949 (setq highlight-nonselected-windows nil)
744 ;; but bind keys as pc-selection-mode did before 950 (setq transient-mark-mode t)
745 ;; normal-erase-is-backspace was invented, to keep us back 951 (setq mark-even-if-inactive t)
746 ;; compatible. 952 (delete-selection-mode 1))
747 (global-set-key [delete] 'delete-char) ; KDelete Del 953 ;;else
748 (define-key function-key-map [M-delete] [?\M-d]) 954 (when pc-select-key-bindings-alist
749 (global-set-key [C-backspace] 'backward-kill-word)) 955 (when (and (not pc-select-selection-keys-only)
750 (define-key global-map [S-insert] 'yank) 956 (or (eq window-system 'x)
751 (define-key global-map [C-insert] 'copy-region-as-kill) 957 (memq system-name '(ms-dos windows-nt))))
752 (define-key global-map [S-delete] 'kill-region) 958 (pc-select-restore-mode normal-erase-is-backspace-mode))
753 959
754 ;; The following bindings are useful on Sun Type 3 keyboards 960 (setq pc-select-map (copy-keymap (current-global-map)))
755 ;; They implement the Get-Delete-Put (copy-cut-paste) 961 (pc-select-restore-keys
756 ;; functions from sunview on the L6, L8 and L10 keys 962 pc-select-key-bindings-alist pc-select-map pc-select-saved-global-map)
757 ;; Sam Steingold <sds@gnu.org> says that f16 is copy and f18 is paste. 963 (use-global-map pc-select-map)
758 (define-key global-map [f16] 'copy-region-as-kill) 964
759 (define-key global-map [f18] 'yank) 965 (pc-select-restore-var highlight-nonselected-windows)
760 (define-key global-map [f20] 'kill-region) 966 (pc-select-restore-var transient-mark-mode)
761 967 (pc-select-restore-var mark-even-if-inactive)
762 ;; The following bindings are from Pete Forman. 968 (pc-select-restore-mode delete-selection-mode)
763 (global-set-key [f6] 'other-window) ; KNextPane F6 969 (and pc-select-old-M-delete-binding
764 (global-set-key [C-delete] 'kill-line) ; KEraseEndLine cDel 970 (define-key function-key-map [M-delete]
765 (global-set-key "\M-\d" 'undo) ; KUndo aBS 971 pc-select-old-M-delete-binding))
766 972 (setq pc-select-key-bindings-alist nil
767 ;; The following binding is taken from pc-mode.el 973 pc-select-saved-settings-alist nil))))
768 ;; as suggested by RMS. 974
769 ;; I only used the one that is not covered above.
770 (global-set-key [C-M-delete] 'kill-sexp)
771 ;; Next line proposed by Eli Barzilay
772 (global-set-key [C-escape] 'electric-buffer-list))
773 ;;
774 ;; setup
775 ;;
776 ;; Next line proposed by Eli Barzilay
777 (setq highlight-nonselected-windows nil)
778 (transient-mark-mode 1)
779 (setq mark-even-if-inactive t)
780 (delete-selection-mode 1))
781 975
782;;;###autoload 976;;;###autoload
783(defcustom pc-selection-mode nil 977(defcustom pc-selection-mode nil
@@ -787,7 +981,8 @@ and cursor movement commands.
787This mode enables Delete Selection mode and Transient Mark mode. 981This mode enables Delete Selection mode and Transient Mark mode.
788You must modify via \\[customize] for this variable to have an effect." 982You must modify via \\[customize] for this variable to have an effect."
789 :set (lambda (symbol value) 983 :set (lambda (symbol value)
790 (if value (pc-selection-mode))) 984 (pc-selection-mode (if value 1 -1)))
985 :initialize 'custom-initialize-default
791 :type 'boolean 986 :type 'boolean
792 :group 'pc-select 987 :group 'pc-select
793 :require 'pc-select) 988 :require 'pc-select)