%PDF- %PDF-
Direktori : /usr/local/share/emacs/27.2/lisp/emacs-lisp/ |
Current File : //usr/local/share/emacs/27.2/lisp/emacs-lisp/elint.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. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301\302\303\304\305\306\307&\210\310\311\312\313\314DD\315\316\317\320\321\306\301& \210\310\322\312\313\323DD\324\316\325\320\326\306\301\327\330&\210\310\331\312\313\332DD\333\316\334\320\335\327\330\306\301&\210\310\336\312\313\337DD\340\316\341\320\342\306\301\327\330&\207" [custom-declare-group elint nil "Linting for Emacs Lisp." :prefix "elint-" :group maint custom-declare-variable elint-log-buffer funcall function #[0 "\300\207" [#1="*Elint*"] 1 #1#] "The buffer in which to log lint messages." :type string :safe stringp elint-scan-preloaded #[0 "\300\207" [t] 1] "Non-nil means to scan `preloaded-file-list' when initializing.\nOtherwise, just scan the DOC file for functions and variables.\nThis is faster, but less accurate, since it misses undocumented features.\nThis may result in spurious warnings about unknown functions, etc." boolean booleanp :version "23.2" elint-ignored-warnings #[0 "\300\207" [nil] 1] "If non-nil, a list of issue types that Elint should ignore.\nThis is useful if Elint has trouble understanding your code and\nyou need to suppress lots of spurious warnings. The valid list elements\nare as follows, and suppress messages about the indicated features:\n undefined-functions - calls to unknown functions\n unbound-reference - reference to unknown variables\n unbound-assignment - assignment to unknown variables\n macro-expansions - failure to expand macros\n empty-let - let-bindings with empty variable lists" (choice (const :tag "Don't suppress any warnings" nil) (repeat :tag "List of issues to ignore" (choice (const undefined-functions :tag "Calls to unknown functions") (const unbound-reference :tag "Reference to unknown variables") (const unbound-assignment :tag "Assignment to unknown variables") (const macro-expansion :tag "Failure to expand macros") (const empty-let :tag "Let-binding with empty varlist")))) #[257 "\211?\206 \211<\205 \211\300\301\"\232\207" [mapcar #[257 "\211\300>\205 \211\207" [(undefined-functions unbound-reference unbound-assignment macro-expansion empty-let)] 3 "\n\n(fn E)"]] 5 "\n\n(fn VALUE)"] elint-directory-skip-re #[0 "\300\207" [#2="\\(ldefs-boot\\|loaddefs\\)\\.el\\'"] 1 #2#] "If non-nil, a regexp matching files to skip when linting a directory." (choice (const :tag "Lint all files" nil) (regexp :tag "Regexp to skip")) string-or-null-p] 12) #@131 Standard variables, excluding `elint-builtin-variables'. These are variables that we cannot detect automatically for some reason. (defconst elint-standard-variables '(vc-mode local-write-file-hooks activate-menubar-hook buffer-name-history coding-system-history extended-command-history yes-or-no-p-history) (#$ . 2792)) #@180 List of built-in variables. Set by `elint-initialize'. This is actually all those documented in the DOC file, which includes built-in variables and those from dumped Lisp files. (defvar elint-builtin-variables nil (#$ . 3120)) #@62 List of `loaddefs.el' variables. Set by `elint-initialize'. (defvar elint-autoloaded-variables nil (#$ . 3354)) #@124 Environment defined by the preloaded (dumped) Lisp files. Set by `elint-initialize', if `elint-scan-preloaded' is non-nil. (defvar elint-preloaded-env nil (#$ . 3474)) #@60 Those built-ins for which we can't find arguments, if any. (defconst elint-unknown-builtin-args '((encode-time time &rest obsolescent-arguments)) (#$ . 3648)) #@66 Errors without `error-message' or `error-conditions' properties. (defvar elint-extra-errors '(file-locked file-supersession ftp-error) (#$ . 3813)) #@130 Regexp matching elements of `preloaded-file-list' to ignore. We ignore them because they contain no definitions of use to Elint. (defconst elint-preloaded-skip-re "\\(?:/char\\(?:acters\\|prop\\)\\|c\\(?:p51932\\|us-start\\)\\|eucjp-ms\\|l\\(?:anguage/\\|oad\\(?:\\(?:defs\\|up\\)\\.el\\)\\)\\|mule-conf\\)" (#$ . 3968)) #@105 Create a top form. FORM is the form, and POS is the point where it starts in the buffer. (fn FORM POS) (defalias 'elint-make-top-form #[514 "B\207" [] 4 (#$ . 4296)]) (put 'elint-make-top-form 'byte-optimizer 'byte-compile-inline-expand) #@50 Extract the form from a TOP-FORM. (fn TOP-FORM) (defalias 'elint-top-form-form #[257 "\211@\207" [] 2 (#$ . 4543)]) (put 'elint-top-form-form 'byte-optimizer 'byte-compile-inline-expand) #@54 Extract the position from a TOP-FORM. (fn TOP-FORM) (defalias 'elint-top-form-pos #[257 "\211A\207" [] 2 (#$ . 4737)]) (put 'elint-top-form-pos 'byte-optimizer 'byte-compile-inline-expand) #@30 Create an empty environment. (defalias 'elint-make-env #[0 "\300C\300\211E\207" [nil] 3 (#$ . 4933)]) (put 'elint-make-env 'byte-optimizer 'byte-compile-inline-expand) #@98 Augment ENV with NEWENV. None of them is modified, and the new env is returned. (fn ENV NEWENV) (defalias 'elint-env-add-env #[514 "\300@@\"\300A@A@\"\300AA@AA@\"E\207" [append] 7 (#$ . 5107)]) (put 'elint-env-add-env 'byte-optimizer 'byte-compile-inline-expand) #@106 Augment ENV with the variable VAR. The new environment is returned, the old is unmodified. (fn ENV VAR) (defalias 'elint-env-add-var #[514 "\211C@BAB\207" [] 4 (#$ . 5384)]) (put 'elint-env-add-var 'byte-optimizer 'byte-compile-inline-expand) #@110 Augment ENV with the variable VAR. ENV is modified so VAR is seen everywhere. ENV is returned. (fn ENV VAR) (defalias 'elint-env-add-global-var #[514 "@CC\244\210\207" [] 4 (#$ . 5637)]) (put 'elint-env-add-global-var 'byte-optimizer 'byte-compile-inline-expand) #@116 Non-nil if ENV contains the variable VAR. Actually, a list with VAR as a single element is returned. (fn ENV VAR) (defalias 'elint-env-find-var #[514 "\211@\236\207" [] 4 (#$ . 5911)]) (put 'elint-env-find-var 'byte-optimizer 'byte-compile-inline-expand) #@143 Augment ENV with the function FUNC, which has the arguments ARGS. The new environment is returned, the old is unmodified. (fn ENV FUNC ARGS) (defalias 'elint-env-add-func #[771 "@DA@BAA@E\207" [] 6 (#$ . 6175)]) (put 'elint-env-add-func 'byte-optimizer 'byte-compile-inline-expand) #@104 Non-nil if ENV contains the function FUNC. Actually, a list of (FUNC ARGS) is returned. (fn ENV FUNC) (defalias 'elint-env-find-func #[514 "\211A@\236\207" [] 4 (#$ . 6470)]) (put 'elint-env-find-func 'byte-optimizer 'byte-compile-inline-expand) #@179 Augment ENV with the macro named MACRO. DEF is the macro definition (a lambda expression or similar). The new environment is returned, the old is unmodified. (fn ENV MACRO DEF) (defalias 'elint-env-add-macro #[771 "@A@BAA@BE\207" [] 7 (#$ . 6725)]) (put 'elint-env-add-macro 'byte-optimizer 'byte-compile-inline-expand) #@97 Return the macro environment of ENV. This environment can be passed to `macroexpand'. (fn ENV) (defalias 'elint-env-macro-env #[257 "\211AA@\207" [] 2 (#$ . 7057)]) (put 'elint-env-macro-env 'byte-optimizer 'byte-compile-inline-expand) #@48 Non-nil if ENV contains MACRO. (fn ENV MACRO) (defalias 'elint-env-macrop #[514 "\211\211AA@\262\236\207" [] 5 (#$ . 7300)]) (put 'elint-env-macrop 'byte-optimizer 'byte-compile-inline-expand) #@32 Lint the file FILE. (fn FILE) (defalias 'elint-file #[257 "\306!\262\204\f \307 \210\310!\211\311 \210)\312\313!\210r\nq\210 \230\2045 \314\315\316 \"\313\"\210\314\315\317\"\313\"\210\211)\210\320\321\"\322\323\"\210\204N \314\320\324\325 #\313\"\210\326\327!r\211q\210\330\331\332\333\334!\335\"\336$\216\337!\210\340\f]\341 p\330\331\342\333\334\"\343\"\336$\216\344)!\210\345\346\347 \"\210)\266,\210\312 \210\322\350\"\207" [elint-builtin-variables default-directory elint-log-buffer noninteractive max-lisp-eval-depth buffer-file-name expand-file-name elint-initialize file-name-directory elint-display-log elint-set-mode-line t elint-log-message format-message "\f\nLeaving directory `%s'" "Entering directory `%s'" format "Linting file %s" message "%s..." "\f\n%s at %s" current-time-string generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 insert-file-contents 1000 syntax-table "r\301q\210\302\300!)\207" [set-syntax-table] set-syntax-table mapc elint-top-form elint-update-env "%s...done" emacs-lisp-mode-syntax-table] 12 (#$ . 7502) "fElint file: "]) #@107 Lint all the .el files in DIRECTORY. A complicated directory may require a lot of memory. (fn DIRECTORY) (defalias 'elint-directory #[257 "\302\303\302\"\211\2039 \211@\304\305\"\2032 \306!\2032 \307!\2042 \304 \"\203. \310\311\"\210\2022 \312!\210A\266\202\202 \210)\313 \207" [elint-running elint-directory-skip-re t directory-files string-match "\\.el\\'" file-readable-p auto-save-file-name-p message "Skipping file %s" elint-file elint-set-mode-line] 6 (#$ . 8668) "DElint directory: "]) #@77 Lint the current buffer. If necessary, this first calls `elint-initialize'. (defalias 'elint-current-buffer #[0 "\204 \301 \210\302\303\304\305 \206 \306 \"!\210\307 \210\310\311!\210\312\313\314 \"\210\310 \210\315\316\311\"\207" [elint-builtin-variables elint-initialize elint-clear-log format "Linting %s" buffer-file-name buffer-name elint-display-log elint-set-mode-line t mapc elint-top-form elint-update-env elint-log-message "\nLinting finished.\n"] 4 (#$ . 9178) nil]) #@80 Lint the function at point. If necessary, this first calls `elint-initialize'. (defalias 'elint-defun #[0 "\204 \301 \210\212\302 \204 \303\304!\210`\305p!\306 \210\307 \210\310B\266\202!\266\202)\207" [elint-builtin-variables elint-initialize beginning-of-defun error "Lint what?" read elint-display-log elint-update-env elint-top-form] 7 (#$ . 9665) nil]) #@70 The environment of an elisp buffer. Will be local in linted buffers. (defvar elint-buffer-env nil (#$ . 10036)) #@61 The top forms in a buffer. Will be local in linted buffers. (defvar elint-buffer-forms nil (#$ . 10154)) #@113 The last time the buffers env was updated. Is measured in buffer-modified-ticks and is local in linted buffers. (defvar elint-last-env-time nil (#$ . 10266)) #@77 List of all libraries this buffer has required, or that have been provided. (defvar elint-features nil (#$ . 10430)) #@170 Update the elint environment in the current buffer. Don't do anything if the buffer hasn't been changed since this function was called the last time. Returns the forms. (defalias 'elint-update-env #[0 "\305\303p\"\203 \305\301p\"\203 \305\300p\"\203 \306 U\203 \207\307\301!\210\310 \307\302!\210\311\307\303!\210\312 !\f\203T \f\313@@\"\313A@A@\"\313AA@AA@\"E\266\307\300!\210\306 \207" [elint-last-env-time elint-buffer-forms elint-features elint-buffer-env elint-preloaded-env local-variable-p buffer-modified-tick make-local-variable elint-get-top-forms nil elint-init-env append] 7 (#$ . 10554)]) #@50 Collect all the top forms in the current buffer. (defalias 'elint-get-top-forms #[0 "\212\301eb\210\302 \203C `h\303U\203 \304\305\303\306p!#\210\202? \30713 \306p!B\266\202B\211\2620\202>