349 |
(defvar key-substitution-in-progress nil |
(defvar key-substitution-in-progress nil |
350 |
"Used internally by substitute-key-definition.") |
"Used internally by substitute-key-definition.") |
351 |
|
|
352 |
(defun substitute-key-definitions (subst keymap &optional oldmap prefix) |
(defun substitute-key-definition (olddef newdef keymap &optional oldmap prefix) |
353 |
"Applies the SUBST remapping to key bindings in KEYMAP. |
"Replace OLDDEF with NEWDEF for any keys in KEYMAP now defined as OLDDEF. |
354 |
SUBST will be a list of elements of the form (OLDDEF . NEWDEF). |
In other words, OLDDEF is replaced with NEWDEF where ever it appears. |
355 |
See `substitue-key-definition'." |
Alternatively, if optional fourth argument OLDMAP is specified, we redefine |
356 |
|
in KEYMAP as NEWDEF those keys which are defined as OLDDEF in OLDMAP. |
357 |
|
|
358 |
|
For most uses, it is simpler and safer to use command remappping like this: |
359 |
|
\(define-key KEYMAP [remap OLDDEF] NEWDEF)" |
360 |
;; Don't document PREFIX in the doc string because we don't want to |
;; Don't document PREFIX in the doc string because we don't want to |
361 |
;; advertise it. It's meant for recursive calls only. Here's its |
;; advertise it. It's meant for recursive calls only. Here's its |
362 |
;; meaning |
;; meaning |
374 |
(map-keymap |
(map-keymap |
375 |
(lambda (char defn) |
(lambda (char defn) |
376 |
(aset prefix1 (length prefix) char) |
(aset prefix1 (length prefix) char) |
377 |
(substitute-key-definitions-key defn subst prefix1 keymap)) |
(substitute-key-definition-key defn olddef newdef prefix1 keymap)) |
378 |
scan))) |
scan))) |
379 |
|
|
380 |
(defun substitute-key-definition (olddef newdef keymap &optional oldmap prefix) |
(defun substitute-key-definition-key (defn olddef newdef prefix keymap) |
381 |
"Replace OLDDEF with NEWDEF for any keys in KEYMAP now defined as OLDDEF. |
(let (inner-def skipped menu-item) |
|
In other words, OLDDEF is replaced with NEWDEF where ever it appears. |
|
|
Alternatively, if optional fourth argument OLDMAP is specified, we redefine |
|
|
in KEYMAP as NEWDEF those keys which are defined as OLDDEF in OLDMAP. |
|
|
|
|
|
For most uses, it is simpler and safer to use command remappping like this: |
|
|
\(define-key KEYMAP [remap OLDDEF] NEWDEF)" |
|
|
;; Don't document PREFIX in the doc string because we don't want to |
|
|
;; advertise it. It's meant for recursive calls only. Here's its |
|
|
;; meaning |
|
|
|
|
|
;; If optional argument PREFIX is specified, it should be a key |
|
|
;; prefix, a string. Redefined bindings will then be bound to the |
|
|
;; original key, with PREFIX added at the front. |
|
|
(substitute-key-definitions (list (cons olddef newdef)) keymap oldmap prefix)) |
|
|
|
|
|
(defun substitute-key-definitions-key (defn subst prefix keymap) |
|
|
(let (inner-def skipped menu-item mapping) |
|
382 |
;; Find the actual command name within the binding. |
;; Find the actual command name within the binding. |
383 |
(if (eq (car-safe defn) 'menu-item) |
(if (eq (car-safe defn) 'menu-item) |
384 |
(setq menu-item defn defn (nth 2 defn)) |
(setq menu-item defn defn (nth 2 defn)) |
388 |
;; Skip past cached key-equivalence data for menu items. |
;; Skip past cached key-equivalence data for menu items. |
389 |
(if (consp (car-safe defn)) |
(if (consp (car-safe defn)) |
390 |
(setq defn (cdr defn)))) |
(setq defn (cdr defn)))) |
391 |
(if (or (setq mapping (assq defn subst)) |
(if (or (eq defn olddef) |
392 |
;; Compare with equal if definition is a key sequence. |
;; Compare with equal if definition is a key sequence. |
393 |
;; That is useful for operating on function-key-map. |
;; That is useful for operating on function-key-map. |
394 |
(and (or (stringp defn) (vectorp defn)) |
(and (or (stringp defn) (vectorp defn)) |
395 |
(setq mapping (assoc defn subst)))) |
(equal defn olddef))) |
396 |
(define-key keymap prefix |
(define-key keymap prefix |
397 |
(if menu-item |
(if menu-item |
398 |
(let ((copy (copy-sequence menu-item))) |
(let ((copy (copy-sequence menu-item))) |
399 |
(setcar (nthcdr 2 copy) (cdr mapping)) |
(setcar (nthcdr 2 copy) newdef) |
400 |
copy) |
copy) |
401 |
(nconc (nreverse skipped) (cdr mapping)))) |
(nconc (nreverse skipped) newdef))) |
402 |
;; Look past a symbol that names a keymap. |
;; Look past a symbol that names a keymap. |
403 |
(setq inner-def |
(setq inner-def |
404 |
(and defn |
(and defn |
414 |
;; Avoid recursively rescanning keymap being scanned. |
;; Avoid recursively rescanning keymap being scanned. |
415 |
(not (memq inner-def key-substitution-in-progress))) |
(not (memq inner-def key-substitution-in-progress))) |
416 |
;; If this one isn't being scanned already, scan it now. |
;; If this one isn't being scanned already, scan it now. |
417 |
(substitute-key-definitions subst keymap inner-def prefix))))) |
(substitute-key-definition olddef newdef keymap inner-def prefix))))) |
418 |
|
|
419 |
(defun define-key-after (keymap key definition &optional after) |
(defun define-key-after (keymap key definition &optional after) |
420 |
"Add binding in KEYMAP for KEY => DEFINITION, right after AFTER's binding. |
"Add binding in KEYMAP for KEY => DEFINITION, right after AFTER's binding. |
753 |
|
|
754 |
;;;; Obsolescent names for functions. |
;;;; Obsolescent names for functions. |
755 |
|
|
|
(defalias 'dot 'point) |
|
|
(defalias 'dot-marker 'point-marker) |
|
|
(defalias 'dot-min 'point-min) |
|
|
(defalias 'dot-max 'point-max) |
|
756 |
(defalias 'window-dot 'window-point) |
(defalias 'window-dot 'window-point) |
757 |
(defalias 'set-window-dot 'set-window-point) |
(defalias 'set-window-dot 'set-window-point) |
758 |
(defalias 'read-input 'read-string) |
(defalias 'read-input 'read-string) |
759 |
(defalias 'send-string 'process-send-string) |
(defalias 'send-string 'process-send-string) |
760 |
(defalias 'send-region 'process-send-region) |
(defalias 'send-region 'process-send-region) |
761 |
(defalias 'show-buffer 'set-window-buffer) |
(defalias 'show-buffer 'set-window-buffer) |
|
(defalias 'buffer-flush-undo 'buffer-disable-undo) |
|
762 |
(defalias 'eval-current-buffer 'eval-buffer) |
(defalias 'eval-current-buffer 'eval-buffer) |
|
(defalias 'compiled-function-p 'byte-code-function-p) |
|
763 |
(defalias 'define-function 'defalias) |
(defalias 'define-function 'defalias) |
764 |
|
|
765 |
(defalias 'sref 'aref) |
(defalias 'sref 'aref) |
766 |
(make-obsolete 'sref 'aref "20.4") |
(make-obsolete 'sref 'aref "20.4") |
767 |
(make-obsolete 'char-bytes "now always returns 1." "20.4") |
(make-obsolete 'char-bytes "now always returns 1." "20.4") |
768 |
(make-obsolete 'chars-in-region "use (abs (- BEG END))." "20.3") |
(make-obsolete 'chars-in-region "use (abs (- BEG END))." "20.3") |
|
(make-obsolete 'dot 'point "before 19.15") |
|
|
(make-obsolete 'dot-max 'point-max "before 19.15") |
|
|
(make-obsolete 'dot-min 'point-min "before 19.15") |
|
|
(make-obsolete 'dot-marker 'point-marker "before 19.15") |
|
|
(make-obsolete 'buffer-flush-undo 'buffer-disable-undo "before 19.15") |
|
769 |
(make-obsolete 'baud-rate "use the `baud-rate' variable instead." "before 19.15") |
(make-obsolete 'baud-rate "use the `baud-rate' variable instead." "before 19.15") |
|
(make-obsolete 'compiled-function-p 'byte-code-function-p "before 19.15") |
|
770 |
(make-obsolete 'define-function 'defalias "20.1") |
(make-obsolete 'define-function 'defalias "20.1") |
|
(make-obsolete 'focus-frame "it does nothing." "19.32") |
|
|
(make-obsolete 'unfocus-frame "it does nothing." "19.32") |
|
771 |
|
|
772 |
(defun insert-string (&rest args) |
(defun insert-string (&rest args) |
773 |
"Mocklisp-compatibility insert function. |
"Mocklisp-compatibility insert function. |
784 |
"Return the value of the `baud-rate' variable." |
"Return the value of the `baud-rate' variable." |
785 |
baud-rate) |
baud-rate) |
786 |
|
|
|
(defalias 'focus-frame 'ignore "") |
|
|
(defalias 'unfocus-frame 'ignore "") |
|
|
|
|
787 |
|
|
788 |
;;;; Obsolescence declarations for variables, and aliases. |
;;;; Obsolescence declarations for variables, and aliases. |
789 |
|
|