%PDF- %PDF-
Direktori : /usr/local/share/emacs/27.2/lisp/emacs-lisp/ |
Current File : //usr/local/share/emacs/27.2/lisp/emacs-lisp/easy-mmode.elc |
;ELC ;;; Compiled ;;; in Emacs version 27.2 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; #@202 Turn the symbol MODE into a string intended for the user. If provided, LIGHTER will be used to help choose capitalization by, replacing its case-insensitive matches with the literal string in LIGHTER. (defalias 'easy-mmode-pretty-mode-name #[(mode &optional lighter) "\304\305\306\307\310\305\311\312\313 !#!#\314P\305\315\316\n#;\204! \n\2020 \305\317\312#\305\320!\n\304\211%*\207" [case-fold-search mode name lighter t replace-regexp-in-string "-Minor" " minor" capitalize "toggle-\\|-mode\\'" "" symbol-name " mode" "\\`Global-" "Global " "\\`\\s-+\\|\\s-+\\'" regexp-quote] 9 (#$ . 409)]) (defconst easy-mmode--arg-docstring "\n\nIf called interactively, enable %s if ARG is positive, and\ndisable it if ARG is zero or negative. If called from Lisp,\nalso enable the mode if ARG is omitted or nil, and toggle it\nif ARG is `toggle'; disable the mode otherwise.") (defalias 'easy-mmode--mode-docstring #[(doc mode-pretty-name keymap-sym) "\206 \306\307 \n#\310\311\312\313#)\266\203\203 \202q \311\314\305!\205' \211\250\2033 \2024 \315\306 \"\316\317!\203` \320\321!rq\210\322\216c\210\317ed\323\312$\210\324 +\202b \325\326\327P\311\211\330&-)\207" [doc mode-pretty-name keymap-sym inhibit-changing-match-data fill-prefix emacs-lisp-docstring-fill-column format "Toggle %s on or off.\n\n\\{%s}" "\\bARG\\b" nil t string-match boundp 65 fboundp fill-region generate-new-buffer " *temp*" #[nil "\301!\205 \302!\207" [#1=#:temp-buffer buffer-name kill-buffer] 2] left buffer-string replace-regexp-in-string "\\(\n\n\\|\\'\\)\\(.\\|\n\\)*\\'" "\\1" 1 docs-fc fill-column easy-mmode--arg-docstring argdoc #1# filled] 8]) (defalias 'easy-mmode-define-minor-mode 'define-minor-mode) #@3691 Define a new minor mode MODE. This defines the toggle command MODE and (by default) a control variable MODE (you can override this with the :variable keyword, see below). DOC is the documentation for the mode toggle command. The defined mode command takes one optional (prefix) argument. Interactively with no prefix argument, it toggles the mode. A prefix argument enables the mode if the argument is positive, and disables it otherwise. When called from Lisp, the mode command toggles the mode if the argument is `toggle', disables the mode if the argument is a non-positive integer, and enables the mode otherwise (including if the argument is omitted or nil or a positive integer). If DOC is nil, give the mode command a basic doc-string documenting what its argument does. If the word "ARG" does not appear in DOC, a paragraph is added to DOC explaining usage of the mode argument. Optional INIT-VALUE is the initial value of the mode's variable. Note that the minor mode function won't be called by setting this option, so the value *reflects* the minor mode's natural initial state, rather than *setting* it. In the vast majority of cases it should be nil. Optional LIGHTER is displayed in the mode line when the mode is on. Optional KEYMAP is the default keymap bound to the mode keymap. If non-nil, it should be a variable name (whose value is a keymap), or an expression that returns either a keymap or a list of (KEY . BINDING) pairs where KEY and BINDING are suitable for `define-key'. If you supply a KEYMAP argument that is not a symbol, this macro defines the variable MODE-map and gives it the value that KEYMAP specifies. BODY contains code to execute each time the mode is enabled or disabled. It is executed after toggling the mode, and before running MODE-hook. Before the actual body code, you can write keyword arguments, i.e. alternating keywords and values. If you provide BODY, then you must provide (even if just nil) INIT-VALUE, LIGHTER, and KEYMAP, or provide at least one keyword argument, or both; otherwise, BODY would be misinterpreted as the first omitted argument. The following special keywords are supported (other keywords are passed to `defcustom' if the minor mode is global): :group GROUP Custom group name to use in all generated `defcustom' forms. Defaults to MODE without the possible trailing "-mode". Don't use this default group name unless you have written a `defgroup' to define that group properly. :global GLOBAL If non-nil specifies that the minor mode is not meant to be buffer-local, so don't make the variable MODE buffer-local. By default, the mode is buffer-local. :init-value VAL Same as the INIT-VALUE argument. Not used if you also specify :variable. :lighter SPEC Same as the LIGHTER argument. :keymap MAP Same as the KEYMAP argument. :require SYM Same as in `defcustom'. :variable PLACE The location to use instead of the variable MODE to store the state of the mode. This can be simply a different named variable, or a generalized variable. PLACE can also be of the form (GET . SET), where GET is an expression that returns the current state, and SET is a function that takes one argument, the new state, and sets it. If you specify a :variable, this function does not define a MODE variable (nor any of the terms used in :variable). :after-hook A single lisp form which is evaluated after the mode hooks have been run. It should not be quoted. For example, you could write (define-minor-mode foo-mode "If enabled, foo on you!" :lighter " Foo" :require \='foo :global t :group \='hassle :version "27.5" ...BODY CODE...) (defalias 'define-minor-mode '(macro . #[(mode doc &optional init-value lighter keymap &rest body) "\306!\203! \203 \n BBB\202 \nD\307\211\307\202@ \306\n!\2034 \n BB\307\211\202@ \306 !\203@ B\307\310\311!\312 !@\313 \n\"A\307\211BC\307\211DE\307\211FG\307\211HI\314 DJ K L\315M\307N\316@\317P!O\316@\320P!P\316@\321P!Q\307\211RS\307T\306@\211R!\203\210AR\322\267\202t\211A\242\202\231 \323\211A\242!\202\231 \211A\242\211B\203\231 9\203\231 \324 DJ\325\326 DDK\202\231 \211A\242G\202\231 \327\211A\242DC\202\231 \330\211A\242DD\202\231 E\331\211A\242D\244E\202\231 \332\211A\242DF\202\231 \211A\242M\202\231 \211A\242\202\231 \211A\242\211I\243\211T\203LT9\204Y\333T!\204Y\334IDJIK\202\231 I@K\335\336IADDJ\202\231 \211A\242N\202\231 RHBH\211A\242HBH\202\231 \203\225 9\203\225 \202\233\316@\337P!SC\204\245\340CD\204\255\341DE\204\300\331\326\316\342\343\344@#!DDEF\204\310\345F\346I\203\322\307\202B\204\354\346\347\350 \351\352A #F\353\326 DDF\202\354\205\362\355PU\356 \351UA \211$\357CDEFM\315=?\205\360MDH\237&)BBBB\361L\362\363GBB\364VAS#\365\366\f\367BC\357J\370\371\372KD\373BBBC\"\357\374\326OD\370K\326PD\326QDFE\370\375\346B\205lI?\205l\376\326 DD\377\201` \201a \372\201b \f\201c BBDE\366\201d B\203\214\344\202\217\201e DC\201f \351\201g A\"\370K\201h BB\201i BBBEEEEDN\205\266NC#BBB\201j K\257\347\350O\201k BB\377\201l \326OD\201m BB\201n \326OD\201o \351\201p L\"FE 9?\205\350S\366\201q DC\201r BB\351\201s @\"FK:\203\207K@\211W\325=\203\201KA\211X:\203{X@\211Y:\203uY@\211Z\326=\203oYA\211[:\203i[@\\[A\211]\204cXA\211^\204]\\\202_K)\202eK*\202kK)\202qK)\202wK)\202}K)\202\203K)\202\211K\211_9\204\244\n\204\230 \205\326\201t \201u K\"\202\326\201v \201w \326_D\326\nD \203\272S\202\306\370\201x \326SDDSE\307 L=?\205\323\326LD\257D)\257.\207" [init-value keymap lighter body last-message mode keywordp nil make-symbol "last-message" symbol-name easy-mmode-pretty-mode-name setq t intern "-hook" "-on-hook" "-off-hook" #s(hash-table size 12 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:init-value 173 :lighter 182 :global 193 :extra-args 224 :set 234 :initialize 246 :group 258 :type 273 :require 285 :keymap 295 :variable 304 :after-hook 362)) purecopy setq-default default-value quote :set :initialize :group :type functionp setf funcall function "-map" (:set #'custom-set-minor-mode) (:initialize 'custom-initialize-default) replace-regexp-in-string "-mode\\'" "" (:type 'boolean) progn :autoload-end defvar format "Non-nil if %s is enabled.\nUse the command `%s' to change this variable." make-variable-buffer-local "Non-nil if %s is enabled.\nSee the `%s' command\nfor a description of this minor mode." "\nSetting this variable directly does not take effect;\neither customize it (see the info node `Easy Customization')\nor call the function `%s'." defcustom append :require defun &optional arg easy-mmode--mode-docstring (interactive (list (or current-prefix-arg 'toggle))) let ((current-message)) if (eq arg 'toggle) not ((> (prefix-numeric-value arg) 0)) run-hooks (called-interactively-p 'any) customize-mark-as-set unless mode-name pretty-name globalp set initialize group type extra-args extra-keywords variable setter getter modefun require after-hook hook hook-on hook-off keyw keymap-sym tmp base-doc-string doc #1=#:x8 #2=#:x9 #3=#:x10 #4=#:x11 #5=#:x12 #6=#:x13 #7=#:x14 #8=#:x15 modevar and (current-message) equal ((current-message)) local " in current buffer" message "%s %%sabled%%s" ("en" "dis") (local) (force-mode-line-update) (nil) get ('variable-documentation) put 'variable-documentation "Hook run after entering or leaving `%s'.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" m ((cond ((keymapp m) m) ((listp m) (easy-mmode-define-keymap m)) (t (error "Invalid keymap %S" m)))) "Keymap for `%s'." error ":lighter and :keymap unsupported with mode expression %S" with-no-warnings add-minor-mode boundp] 27 (#$ . 2147)])) (byte-code "\300\301\302\303#\304\301\305\306#\210\307\310\311\"\210\307\312\311\"\207" [function-put define-minor-mode doc-string-elt 2 put edebug-form-spec (&define name string-or-null-p [&optional [¬ keywordp] sexp &optional [¬ keywordp] sexp &optional [¬ keywordp] sexp] [&rest [keywordp sexp]] def-body) defalias easy-mmode-define-global-mode define-globalized-minor-mode define-global-minor-mode] 5) #@1444 Make a global mode GLOBAL-MODE corresponding to buffer-local minor MODE. TURN-ON is a function that will be called with no args in every buffer and that should try to turn MODE on if applicable for that buffer. Each of KEY VALUE is a pair of CL-style keyword arguments. As the minor mode defined by this function is always global, any :global keyword is ignored. Other keywords have the same meaning as in `define-minor-mode', which see. In particular, :group specifies the custom group. The most useful keywords are those that are passed on to the `defcustom'. It normally makes no sense to pass the :lighter or :keymap keywords to `define-globalized-minor-mode', since these are usually passed to the buffer-local version of the minor mode. BODY contains code to execute each time the mode is enabled or disabled. It is executed after toggling the mode, and before running GLOBAL-MODE-hook. If MODE's set-up depends on the major mode in effect when it was enabled, then disabling and reenabling MODE should make MODE work correctly with the current major mode. This is important to prevent problems with derived modes, that is, major modes that call another major mode in their body. When a major mode is initialized, MODE is actually turned on just after running the major mode's hook. However, MODE is not turned on if the hook has explicitly disabled it. (fn GLOBAL-MODE MODE TURN-ON [KEY VALUE]... BODY...) (defalias 'define-globalized-minor-mode '(macro . #[(global-mode mode turn-on &rest body) "\306!\306\n!\307\n!\307!\310\211@A\311 \312P!B\311 \313P!C\311 \314P!D\311 \315P!E\311\316P!F\311\317P!G\311\306\n!\320P!H\310I\321J@\211I!\203\226 J\211AJ\210I\322\267\202\200 @\323J\211AJ\242D\244@\202L J\211AJ\210\202L IABAJ\211AJ\242ABA\202L \324\211\325\326D\327BB\330\331H\332BB\333\326HDD\257\334\335\336\f \fK\n\f&\337\340\341@A\237\342\324\343\344\326CDE\343\345\326DDE\343\346\326EDEF\347\350\326CDE\347\351\326DDE\347\352\326EDE\257\353\354\355\356\342\357\360KDD\361\n\211\362BEFEEDJ$BBBBB\330\363G\364BB\365G\310\366G\367BBF\325\326GD\370\326DF\343\326FD\326GDE\331B\371BB\365C\310\372\373BDC\366B\374BB\353\375\361\376\355\356\377G\377\201L H\201M BB\342\n\324\n\201N B\357\360KDDE\357\360KDDFEE\366H\201O BBFEEFF\325\326CD\201P \326DF\365D\310CC\347\201Q \326DDE\257\325\326DD\201R \326DF\365E\310\201S \326BD\201T BB\343\201U \326DDE\257\325\326ED\201V \326DF\257.\207" [global-mode global-mode-name mode mode-name pretty-name pretty-global-name symbol-name easy-mmode-pretty-mode-name nil intern "-buffers" "-enable-in-buffers" "-check-buffers" "-cmhh" "-hook" "-set-explicitly" "-major-mode" keywordp #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:group 101 :global 118)) :group progn put quote ('globalized-minor-mode t) :autoload-end defvar (nil) make-variable-buffer-local define-minor-mode format "Toggle %s in all buffers.\nWith prefix ARG, enable %s if ARG is positive;\notherwise, disable it. If called from Lisp, enable the mode if\nARG is omitted or nil.\n\n%s is enabled in all buffers where\n`%s' would do it.\nSee `%s' for more information on %s." :global t append if add-hook 'after-change-major-mode-hook 'find-file-hook 'change-major-mode-hook remove-hook 'after-change-major-mode-hook 'find-file-hook 'change-major-mode-hook dolist (buf (buffer-list)) with-current-buffer buf funcall function when (-1) defvar-local (nil) defun setq (t) 'definition-name (nil) let buffers (nil) (buf buffers) (buffer-live-p buf) unless group extra-keywords MODE-buffers MODE-enable-in-buffers MODE-check-buffers MODE-cmhh minor-MODE-hook MODE-set-explicitly MODE-major-mode keyw body turn-on eq (major-mode) (-1) (major-mode) 'definition-name 'post-command-hook 'definition-name add-to-list ((current-buffer)) 'post-command-hook 'definition-name] 33 (#$ . 10483)])) (byte-code "\300\301\302\303#\300\207" [function-put define-globalized-minor-mode doc-string-elt 2] 4) (defalias 'easy-mmode-set-keymap-parents #[(m parents) "\302 A\203 \303 !\202 @\"\207" [m parents set-keymap-parent make-composed-keymap] 4]) #@590 Return a keymap built from bindings BS. BS must be a list of (KEY . BINDING) where KEY and BINDINGS are suitable for `define-key'. Optional NAME is passed to `make-sparse-keymap'. Optional map M can be used to modify an existing map. ARGS is a list of additional keyword arguments. Valid keywords and arguments are: :name Name of the keymap; overrides NAME argument. :dense Non-nil for a dense keymap. :inherit Parent keymap. :group Ignored. :suppress Non-nil to call `suppress-keymap' on keymap, `nodigits' to suppress digits as prefix arguments. (defalias 'easy-mmode-define-keymap #[(bs &optional name m args) "\306\211\211\203= \211A\242\211A\242\211\307\267\2024 \f\2029 \f\2029 \f\2029 \f\2029 \2029 \310\311 \"\210*\202 \312!\204] \313\" \203W \314!\202[ \315!\203i \316\317=\"\210\306\211\203\374 @\211@A\211:\203\214 \202\217 C\306\211\203\362 @\2119\203\255 \320 $\210\202\351 \204\307 \312\321 \"!\204\351 \322 #\210\202\351 \321 \"\211?\206\335 \247\206\335 \323=)\203\351 \322 #\210A\211\204\227 ,A\211\204t *\312\n!\203\f\324\n\"\210\202\n:\203\325\n\"\210+\207" [suppress dense inherit args val key nil #s(hash-table size 5 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:name 28 :dense 34 :inherit 39 :suppress 44 :group 49)) message "Unknown argument %s in defmap" keymapp append make-keymap make-sparse-keymap suppress-keymap nodigits substitute-key-definition lookup-key define-key undefined set-keymap-parent easy-mmode-set-keymap-parents name m bs b --dolist-tail-- binding keys global-map o] 6 (#$ . 14685)]) #@172 Define a constant M whose value is the result of `easy-mmode-define-keymap'. The M, BS, and ARGS arguments are as per that function. DOC is the constant's documentation. (defalias 'easy-mmode-defmap '(macro . #[(m bs doc &rest args) "\304\305 \306\307\310\311DDE\312\nB\257F\207" [m bs args doc defconst easy-mmode-define-keymap nil if boundp quote list] 9 (#$ . 16387)])) (byte-code "\300\301\302\303#\300\207" [function-put easy-mmode-defmap lisp-indent-function 1] 4) (defalias 'easy-mmode-define-syntax #[(css args) "\306\307\310\"!\307\311\"\312\211\203? @\211@\fA\313!\203/ \314\315\"\210\2027 \316\n#\210* A\211\204 * \203S \317\n 9\203P J\202Q \"\210\n*\207" [args parent st css cs --dolist-tail-- make-syntax-table plist-get :copy :inherit nil sequencep mapc #[(c) "\303 \n#\207" [c syntax st modify-syntax-entry] 4] modify-syntax-entry set-char-table-parent syntax char] 5]) #@113 Define variable ST as a syntax-table. CSS contains a list of syntax specifications of the form (CHAR . SYNTAX). (defalias 'easy-mmode-defsyntax '(macro . #[(st css doc &rest args) "\304\305\306\307 \310\nBEFE\207" [st css args doc progn (autoload 'easy-mmode-define-syntax "easy-mmode") defconst easy-mmode-define-syntax list] 8 (#$ . 17311)])) (byte-code "\300\301\302\303#\300\207" [function-put easy-mmode-defsyntax lisp-indent-function 1] 4) #@691 Define BASE-next and BASE-prev to navigate in the buffer. RE determines the places the commands should move point to. NAME should describe the entities matched by RE. It is used to build the docstrings of the two functions. BASE-next also tries to make sure that the whole entry is visible by searching for its end (by calling ENDFUN if provided or by looking for the next entry) and recentering if necessary. ENDFUN should return the end position (with or without moving point). NARROWFUN non-nil means to check for narrowing before moving, and if found, do `widen' first and then call NARROWFUN with no args after moving. BODY is executed after moving to the destination location. (defalias 'easy-mmode-define-navigation '(macro . #[(base re &optional name endfun narrowfun &rest body) "\306!\307 \310P!\307 \311P!\312 \204 \313\314\315\316\317 \"\320\321\322\323\n\324B\322\3258D\326BB\f\322\327\3308\331BBD\322\3258D\332\3339\205K \334\3359DD\336BBD\337\340 EF\341\342\343\344\345\333\3469\203i \334\3359DD\202o \3308\347BBD\350BBDC\351BBE\257!:BBBBB\257\352\353D\354\353DF\314\n\355\316\356 \206\230 \"\357\360\322\361\362B\f\363\3648\365BB\337\366 EE!:BBBB\257\352\353\nD\367\353DF\257,\207" [base base-name prev-sym next-sym when-narrowed name symbol-name intern "-prev" "-next" #[(body) "\204 \207\302\303 \304\305\306\307DDEF\207" [narrowfun body let ((was-narrowed (prog1 (buffer-narrowed-p) (widen)))) when was-narrowed funcall function] 8] progn defun (&optional count) format "Go to the next COUNT'th %s.\nInteractively, COUNT is the prefix numeric argument, and defaults to 1." (interactive "p") (unless count (setq count 1)) if (< count 0) ((- count)) looking-at ((setq count (1+ count))) not re-search-forward (nil t count) goto-char or funcall function ((point-max)) user-error "No next %s" (goto-char (match-beginning 0)) when (and (eq (current-buffer) (window-buffer)) (called-interactively-p 'interactive)) let endpt save-excursion (nil t 2) ((point-max)) ((unless (pos-visible-in-window-p endpt nil t) (let ((ws (window-start))) (recenter '(0)) (if (< (window-start) ws) (set-window-start nil ws))))) put quote 'definition-name (&optional count) "Go to the previous COUNT'th %s.\nInteractively, COUNT is the prefix numeric argument, and defaults to 1." (interactive "p") (unless count (setq count 1)) (< count 0) ((- count)) unless re-search-backward (nil t count) "No previous %s" 'definition-name re endfun body] 25 (#$ . 17766)])) (byte-code "\300\301\302\303#\304\301\305\306#\210\307\310!\207" [function-put easy-mmode-define-navigation lisp-indent-function 5 put edebug-form-spec (exp exp exp def-form def-form def-body) provide easy-mmode] 5)