;ELC   
;;; Compiled
;;; in Emacs version 29.4
;;; with all optimizations.



(byte-code "\300\301!\210\300\302!\210\303\304\305\306\307\310\307\311\312\313\314\315&\210\316\317\320\321\322DD\323\324\325\307\304&\210\316\326\320\321\327DD\330\324\331\307\304&\210\316\332\320\321\333DD\334\324\335\307\304&\207" [require cl-lib easy-mmode custom-declare-group bind-key nil "A simple way to manage personal keybindings." :group keyboard convenience :link (emacs-commentary-link :tag "Commentary" "bind-key.el") :version "29.1" custom-declare-variable bind-key-column-widths funcall function #[0 "\300\207" [(18 . 40)] 1 #1=""] "Width of columns in `describe-personal-keybindings'." :type (cons integer integer) bind-key-segregation-regexp #[0 "\300\207" ["\\`\\(\\(C-[chx] \\|M-[gso] \\)\\([CM]-\\)?\\|.+-\\)"] 1 #1#] "Regexp used by \\[describe-personal-keybindings] to divide key sets." regexp bind-key-describe-special-forms #[0 "\300\207" [nil] 1 #1#] "If non-nil, extract docstrings from lambdas, closures and keymaps if possible." boolean] 12)#@36 Keymap for `override-global-mode'.
(defvar override-global-map (make-keymap) (#$ . 1058))#@109 Non-nil if Override-Global mode is enabled.
Use the command `override-global-mode' to change this variable.
(defvar override-global-mode t (#$ . 1154))
(make-variable-buffer-local 'override-global-mode)#@1155 A minor mode for allowing keybindings to override other modes.

The main purpose of this mode is to simplify bindings keys in
such a way that they take precedence over other modes.

To achieve this, the keymap `override-global-map' is added to
`emulation-mode-map-alists', which makes it take precedence over
keymaps in `minor-mode-map-alist'.  Thereby, key bindings get an
even higher precedence than global key bindings defined with
`keymap-global-set' (or, in Emacs 28 or older, `global-set-key').

The macro `bind-key*' (which see) provides a convenient way to
add keys to that keymap.

This is a minor mode.  If called interactively, toggle the
`Override-Global mode' mode.  If the prefix argument is positive,
enable the mode, and if it is zero or negative, disable the mode.

If called from Lisp, toggle the mode if ARG is `toggle'.  Enable
the mode if ARG is nil, omitted, or is a positive number.
Disable the mode if ARG is a negative number.

To check whether the minor mode is enabled in the current buffer,
evaluate `override-global-mode'.

The mode's hook is called both when the mode is enabled and when
it is disabled.

(fn &optional ARG)
(defalias 'override-global-mode #[256 "\302 \303=\203 ?\202 \247\203 \304W\203 \305\202 \306\307\301!\2031 \310\300	\"\2031 \300	B\311\312\203; \313\202< \314\"\210\315\316!\203_ \302 \203P \211\302 \232\203_ \317\320\321\203[ \322\202\\ \323\324$\210\210\325 \210\207" [override-global-mode local-minor-modes current-message toggle 1 nil t boundp delq run-hooks override-global-mode-hook override-global-mode-on-hook override-global-mode-off-hook called-interactively-p any message "%s %sabled%s" "Override-Global mode" "en" "dis" " in current buffer" force-mode-line-update] 7 (#$ . 1364) (byte-code "\203\n \301!\202 \302C\207" [current-prefix-arg prefix-numeric-value toggle] 2)])
(defvar override-global-mode-hook nil)
(byte-code "\302\303N\204\f \304\302\303\305#\210\304\302\306\307#\210\304\302\310\311C#\210\312\313\314\315\300!\205# \311\211%\210\316\317\313	BC\"\207" [override-global-mode-map override-global-map override-global-mode-hook variable-documentation put "Hook run after entering or leaving `override-global-mode'.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" custom-type hook standard-value nil add-minor-mode override-global-mode "" boundp add-to-list emulation-mode-map-alists] 6)#@100 List of bindings performed by `bind-key'.

Elements have the form ((KEY . [MAP]) CMD ORIGINAL-CMD)
(defvar personal-keybindings nil (#$ . 3834))#@884 Bind KEY-NAME to COMMAND in KEYMAP (`global-map' if not passed).

KEY-NAME may be a vector, in which case it is passed straight to
`define-key'.  Or it may be a string to be interpreted as
spelled-out keystrokes, e.g., "C-c C-z".  See the documentation
of `edmacro-mode' for details.

COMMAND must be an interactive function or lambda form.

KEYMAP, if present, should be a keymap variable or symbol.
For example:

  (bind-key "M-h" #\='some-interactive-function my-mode-map)

  (bind-key "M-h" #\='some-interactive-function \='my-mode-map)

If PREDICATE is non-nil, it is a form evaluated to determine when
a key should be bound. It must return non-nil in such cases.
Emacs can evaluate this form at any time that it does redisplay
or operates on menu data structures, so you should write it so it
can safely be called at any time.

(fn KEY-NAME COMMAND &optional KEYMAP PREDICATE)
(defalias 'bind-key '(macro . #[1026 "\300\301!\300\302!\300\303!\300\304!\300\305!\306\nD;\203\" \307\f!\202. \310\311	D	\307DFD\312\310\313\314DE\315DF\316BBD\317\310\320\fD\f\321DF\310\314D\322DFED\323	ED\257\324\325\326\327\330BBD\331\332\333\334\nD\nEEDD\310\326\335\336\337\317\f\340BBEFE	\203\261 \341	\322\342\343\344\345\346\347\350EE\257DF\202\271 \341	F\257\207" [make-symbol "name" "key" "kmap" "kdesc" "binding" let* read-kbd-macro if vectorp or and symbolp symbol-value (global-map) cons stringp key-description quote lookup-key (require 'bind-key) let entry assoc (personal-keybindings) details list unless numberp (setcdr entry details) add-to-list 'personal-keybindings (details) define-key menu-item "" nil :filter lambda (&optional _) when] 26 (#$ . 3985)]))#@127 Unbind the given KEY-NAME, within the KEYMAP (if specified).
See `bind-key' for more details.

(fn KEY-NAME &optional KEYMAP)
(defalias 'unbind-key '(macro . #[513 "\300\301!\300\302!\303D\304\305\306D\307	DF\305\310	D	\311DFEDD\312\305\313D\314DF\315\305\316	\310DE\317\nD\nF\320BBE\321\322\323\324\325\326\327\nEE\330BBE\331BBBB\207" [make-symbol "name" "kdesc" let* cons if stringp key-description symbolp quote bind-key--remove vectorp read-kbd-macro or and symbol-value (global-map) setq personal-keybindings cl-delete-if lambda (k) equal (car k) (personal-keybindings) (nil)] 15 (#$ . 5709)]))#@123 Remove KEY from KEYMAP.

In contrast to `define-key', this function removes the binding from the keymap.

(fn KEY KEYMAP)
(defalias 'bind-key--remove #[514 "\300\301#\210\302\303\"\262G\304U\203 \305\"\207\306\307!!\310\"\311!\204, \312\313\"\210\2119\2035 \211K\262\305\314!\"\210\211G\304U\205G \315\"\207" [define-key nil cl-mapcan #[257 "\211\250\203 \300\301\"\302U\204 \303\304\301\"D\207\211C\207" [logand 134217728 0 27 logxor] 5 "\n\n(fn K)"] 1 delete vconcat butlast lookup-key keymapp error "Not a keymap for %s" last bind-key--remove] 7 (#$ . 6339)])#@109 Similar to `bind-key', but overrides any mode-specific bindings.

(fn KEY-NAME COMMAND &optional PREDICATE)
(defalias 'bind-key* '(macro . #[770 "\300\301\257\207" [bind-key override-global-map] 8 (#$ . 6930)]))#@1497 Bind multiple keys at once.

Accepts keyword arguments:
:map MAP               - a keymap into which the keybindings should be
                         added
:prefix KEY            - prefix key for these bindings
:prefix-map MAP        - name of the prefix map that should be created
                         for these bindings
:prefix-docstring STR  - docstring for the prefix-map variable
:menu-name NAME        - optional menu string for prefix map
:repeat-docstring STR  - docstring for the repeat-map variable
:repeat-map MAP        - name of the repeat map that should be created
                         for these bindings. If specified, the
                         `repeat-map' property of each command bound
                         (within the scope of the `:repeat-map' keyword)
                         is set to this map.
:exit BINDINGS         - Within the scope of `:repeat-map' will bind the
                         key in the repeat map, but will not set the
                         `repeat-map' property of the bound command.
:continue BINDINGS     - Within the scope of `:repeat-map' forces the
                         same behavior as if no special keyword had
                         been used (that is, the command is bound, and
                         it's `repeat-map' property set)
:filter FORM           - optional form to determine when bindings apply

The rest of the arguments are conses of keybinding string and a
function symbol (unquoted).

(fn ARGS KEYMAP)
(defalias 'bind-keys-form #[514 "\301C\301\211C\301\211\211\211C\301C\301\211C\302\303\203\n\203\n@\304=\2034 	\242\2044 A@\240\202\370 @\305=\203F A@\211\262\f\202\370 @\306=\203` \242\307>\204` 	A@\240\202\370 @\310=\203r A@\211\262\202\370 @\311=\203\216 \242\312>\204\216 A@\240\202\370 @\313=\203\241 \313\240\210\314\211\262\202\370 @\315=\203\264 \315\240\210\314\211\262\202\370 @\316=\203\306 A@\211\262\n\202\370 @\317=\203\330 A@\240\210\202\373 @\320=\203\352 A@\211\262\202\370 @\321=\203A@\240\203\211!\262\202 \301\262\202 \266\242\203\203\"\203&\242\204&\322\323!\210\242\2033\2043\322\324!\210\203@\204@\322\325!\210	\242\204L	\240\210\301\211\203\201\326@!\203e\262\301\262\202N\203s@C\244\210\202y@C\262A\262\202N\327\330\242\205\364\331\f\242D\330\205\237\332\333\242D\334FC\203\262\335\333\242D\301FC\202\272\335\333\242DDC\242\203\343\242\336=\204\343	\242\337\333\242D\242\242\257C#\202\362\337\333\242D\301\242\257C#B\205\331\340\f\205\fCBBBC\242\341\342\343%\n\"#\205B\344\330\205*\311D\n\242\203;\321\242\nBB\202=\"\242\"$\262\266\202)\207" [repeat-map nil t cddr :map :prefix-docstring :prefix-map (global-map override-global-map) :repeat-docstring :repeat-map (global-map override-global-map) :continue cdr :exit :prefix :filter :menu-name :package error "Both :prefix-map and :prefix must be supplied" ":continue and :exit require specifying :repeat-map" "If :menu-name is supplied, :prefix must be too" keywordp #[771 "\2035 \242\2035 \300>\2045 \301\302\303DD\304!\305\2429\203( \303\242D\202+ \242\303\304!DEFC\207\207" [(global-map override-global-map) if boundp quote macroexp-progn eval-after-load] 11 "\n\n(fn PKG MAP BINDINGS)"] append defvar put quote 'variable-documentation define-prefix-command global-map bind-key (make-sparse-keymap) cl-mapcan make-closure #[257 "\211A\205	 \305AD\302\242\203 \306@\302\242\300\242\257C\207\303\242\203H \303\242\307=\204H \310\f\205; \301\242\311=?\205; \312\313\314\fDFC\306@\303\242\300\242\257C\"\207\306@\315\300\242\257C\207" [V0 V1 V2 V3 repeat-map function bind-key global-map append :exit put 'repeat-map quote nil] 9 "\n\n(fn FORM)"] bind-keys-form] 28 (#$ . 7153)])#@1496 Bind multiple keys at once.

Accepts keyword arguments:
:map MAP               - a keymap into which the keybindings should be
                         added
:prefix KEY            - prefix key for these bindings
:prefix-map MAP        - name of the prefix map that should be created
                         for these bindings
:prefix-docstring STR  - docstring for the prefix-map variable
:menu-name NAME        - optional menu string for prefix map
:repeat-docstring STR  - docstring for the repeat-map variable
:repeat-map MAP        - name of the repeat map that should be created
                         for these bindings. If specified, the
                         `repeat-map' property of each command bound
                         (within the scope of the `:repeat-map' keyword)
                         is set to this map.
:exit BINDINGS         - Within the scope of `:repeat-map' will bind the
                         key in the repeat map, but will not set the
                         `repeat-map' property of the bound command.
:continue BINDINGS     - Within the scope of `:repeat-map' forces the
                         same behavior as if no special keyword had
                         been used (that is, the command is bound, and
                         it's `repeat-map' property set)
:filter FORM           - optional form to determine when bindings apply

The rest of the arguments are conses of keybinding string and a
function symbol (unquoted).

(fn &rest ARGS)
(defalias 'bind-keys '(macro . #[128 "\300\301\302\"!\207" [macroexp-progn bind-keys-form nil] 5 (#$ . 11050)]))#@244 Bind multiple keys at once, in `override-global-map'.
Accepts the same keyword arguments as `bind-keys' (which see).

This binds keys in such a way that bindings are not overridden by
other modes.  See `override-global-mode'.

(fn &rest ARGS)
(defalias 'bind-keys* '(macro . #[128 "\300\301\302\"!\207" [macroexp-progn bind-keys-form override-global-map] 5 (#$ . 12665)]))#@13 

(fn ELEM)
(defalias 'get-binding-description #[257 "\211<\203? \211@\301>\203 \203 \3028;\203 \3028\207\303\207\211@\304=\2035 \2033 \3058;\2033 \3058\207\306\207\211@\307=\203> \310\207\207\203T \311!\203T \211\312N\211;\203R \207\207\2119\203Z \207\313\207" [bind-key-describe-special-forms (lambda function) 2 "#<lambda>" closure 3 "#<closure>" keymap "#<keymap>" keymapp variable-documentation "#<byte-compiled lambda>"] 3 (#$ . 13044)])#@12 

(fn L R)
(defalias 'compare-keybindings #[514 "\301@@\"\205 \302\303@@\"\301@@\"\205 \302\303@@\"@A@A\2041 \211\2031 \304\211B\207\203= \211\204= \305\304B\207\203Y \211\203Y \306!\306!\230\204Y \306!\306!\231\304B\207\204e \203e \304\211B\207\203q \204q \305\304B\207\203\220 \203\220 \230\203\212 @@@@\231C\207\231\304B\207@@@@\231C\207" [bind-key-segregation-regexp string-match match-string 0 t nil symbol-name] 10 (#$ . 13505)])#@61 Display all the personal keybindings defined by `bind-key'.
(defalias 'describe-personal-keybindings #[0 "r\306\307!q\210p\310 \210\311\211\312\211\312\313 \210\314\315!+\210\211*\316\317\320\321+@\322Z\323\"\321+A\324Z\323\"\321+@S\325\"\321+AS\325\"%!\210\311\326,\327\"\211,\211\205\211@@A@A=\204z \316\317\330@A@@\321\331+@\\+A\\\325\"$!\210\202\212 \203\212 \332\"A\203\212 \316\333!\210\211@@\334@AJ\206\227 \335 \336!\"A@\3378\340!\205\253 \340!\340!\317\211\341+@+A#\317\342\"\230\203\337 \203\323 \230\203\327 \343\202\344 \317\344\"\202\344 \317\345\"$\316\346\347\"\203\366 \350\333\312\211$\202\367 !\266	\211\262A\266\202\202O \262\262\351!)\210\207" [default-directory buffer-read-only buffer-file-name buffer-undo-list inhibit-modification-hooks inhibit-read-only get-buffer-create "*Personal Keybindings*" kill-all-local-variables nil t erase-buffer run-hooks temp-buffer-setup-hook princ format "Key name%s Command%s Comments\n%s %s ---------------------\n" make-string 9 32 8 45 sort #[514 "\300\"@\207" [compare-keybindings] 5 "\n\n(fn L R)"] "\n\n%s: %s\n%s\n\n" 21 compare-keybindings "\n" lookup-key current-global-map read-kbd-macro 2 get-binding-description "%%-%ds%%-%ds%%s\n" "`%s'" "" "was `%s'" "[now: `%s']" string-match "[ 	]+\n" replace-match internal-temp-output-buffer-show standard-output bind-key-column-widths personal-keybindings] 20 (#$ . 13982) nil])
(provide 'bind-key)
