;ELC ;;; Compiled ;;; in Emacs version 26.3 ;;; 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 "\303\304!\210\303\305!\210\306\236\211\203\211\307\241\210\202\306\307B\211\262B\210\306 \236\211\203.\211\307\241\210\2027\306\307B\211\262 B\210\306\n\236\310\203G\241\210\202P\306B\211\262\nB\210\207" [el-search--heuristic-matchers el-search--inverse-heuristic-matchers el-search--pcase-macros require thunk el-search string-lines nil #[257 "\300\301!\302\303\304\305\306D\307BBEF\207" [make-symbol "string" and (string) let with-temp-buffer insert ((count-lines (point-min) (point-max)))] 10 "Matches any string whose line count is matched by PATTERN.\n\nExamples: (string-lines 1) matches one-line strings.\n(string-lines (pred (>= 5))) matches strings consisting of not\nmore than 5 lines.\n\n(fn PATTERN)"]] 4) #@202 Helper for the "append" pattern type. When a splitting of LIST into two lists L1, L2 exist so that Li is matched by MATCHERi, return (L1 L2) for such Li, else return nil. (fn MATCHER1 MATCHER2 LIST) (defalias 'el-search--split #[771 "\300\301\211$\211\262\204;:\203;\302!\211A\211\203*\301\241\210\211\262\2026\303\304\"\262@B\262\266\202\207" [#[1028 "\300\"\205\300\"\205D\207" [el-search--match-p] 7 "\n\n(fn MATCHER1 MATCHER2 LIST1 LIST2)"] nil last butlast 1] 12 (#$ . 1163)]) (byte-code "\303\236\211\203\211\304\241\210\202\303\304B\211\262B\210\303 \236\211\203&\211\304\241\210\202/\303\304B\211\262 B\210\303\n\236\305\203?\241\210\202H\303B\211\262\nB\266\306\307\310\311\312DD\313\314\315\316\317&\207" [el-search--heuristic-matchers el-search--inverse-heuristic-matchers el-search--pcase-macros append nil #[128 "\211\204\300\207\211\301\232\203\302\207\211@A\211\204\211\202JA\204D\303\304\305\306\307\310!\310@!#\311\312CB\312@CBDCBEE\202J\313\313BE\266\202\207" [(pred null) (_) (pred listp) and (pred listp) app apply-partially el-search--split el-search-make-matcher \` \, append] 13 "Matches any list factorable into lists matched by PATTERNS in order.\n\nPATTERNS is a list of patterns P1..Pn. Match any list L for that\nlists L1..Ln exist that are matched by P1..Pn in order and L is\nequal to the concatenation of L1..Ln. Ln is allowed to be no\nlist.\n\nWhen different ways of matching are possible, it is unspecified\nwhich one is chosen.\n\nExample: the pattern\n\n (append '(1 2 3) x (app car-safe 7))\n\nmatches the list (1 2 3 4 5 6 7 8 9), binding `x' to (4 5 6).\n\n(fn &rest PATTERNS)"] custom-declare-variable el-search-lazy-l funcall function #[0 "\300\207" [t] 1] "Whether to interpret symbols and strings specially in `l'.\n\nWhen non-nil, the default, `l' based pattern types interpret\nsymbols and strings as special LPATS: a SYMBOL matches any symbol\nS matched by SYMBOL's name interpreted as a regexp, and a STRING\nmatches any string matched by the STRING interpreted as a regexp.\n\nWhen nil, symbols and strings act as standard `pcase' patterns." :group el-search :type boolean] 8) #@13 (fn EXPR) (defalias 'el-search--transform-nontrivial-lpat #[257 "\203\2119\203\301!\211\302D\262\207\211;\203\303D\207\207\207" [el-search-lazy-l symbol-name symbol string] 5 (#$ . 3380)]) (byte-code "\303\236\304\203\241\210\202\303B\211\262B\266\303 \236\211\203(\211\305\241\210\2021\303\305B\211\262 B\210\303\n\236\306\203A\241\210\202J\303B\211\262\nB\210\207" [el-search--heuristic-matchers el-search--inverse-heuristic-matchers el-search--pcase-macros l #[128 "\300\301\302\303\304!\305\"\306\307%\207" [make-byte-code 514 "\301\302\303\304\305\306\"\307\"\310\311%\300\"\207" vconcat vector [cl-every make-byte-code 257 "\211\302>\203\303\207\304\305!!\300\301\"\207" vconcat vector [($ ^ _\? _ __) t el-search-heuristic-matcher el-search--transform-nontrivial-lpat] 4 "\n\n(fn LPAT)"] 10 "\n\n(fn FILE-NAME-OR-BUFFER ATOMS-THUNK)"] 7 "\n\n(fn &rest LPATS)"] nil #[128 "\300\211\242\301=\203\302\262A\262\303!\242\304=\203\"\302\262\305\306\"\262\307\211?\205*\310\311\312\"?\2055\313#B\207" [nil ^ t last $ butlast 1 append (_) mapcar #[257 "\211\300=\203\301\207\211\301=\203\302\207\211\303=\203\304\207\305\306\307!CBCCB\207" [__ _ `(,_) _\? (or 'nil `(,_)) \` \, el-search--transform-nontrivial-lpat] 5 "\n\n(fn ELT)"] (_)] 9 "Alternative pattern type for matching lists.\nMatch any list with subsequent elements matched by all LPATS in\norder.\n\nThe idea is to be able to search for pieces of code (i.e. lists)\nwith very brief input by using a specialized syntax.\n\nAn LPAT can take the following forms (the special interpretation\nof symbols and strings can be turned off by binding or\ncustomizing `el-search-lazy-l' to nil):\n\nSYMBOL Matches any symbol S matched by SYMBOL's name interpreted\n as a regexp.\n'SYMBOL Matches the SYMBOL.\nSTRING Matches any string matched by STRING interpreted as a\n regexp.\n_ Matches any list element.\n__ Matches any number (including zero) of list elements.\n^ Matches zero elements, but only at the beginning of a list.\n Only allowed as the first of the LPATS.\n$ Matches zero elements, but only at the end of a list.\n Only allowed as the last of the LPATS.\nPAT Anything else is interpreted as a standard pattern and\n matches one list element matched by it. Note: If\n matching PAT binds any symbols, occurrences in any\n following patterns are not turned into equivalence tests;\n the scope of symbol bindings is limited to the PAT\n itself.\n\nExample: To match defuns that contain \"hl\" in the defined name\nand have at least one mandatory, but also optional arguments, you\ncould use this pattern:\n\n (l ^ 'defun hl (l _ &optional))\n\n(fn &rest LPATS)"]] 4) (defvar el-search--cached-changes nil nil) (byte-code "\300\301!\210\302\303\304\305\306DD\307\310\311\312\313&\210\314\315\316\317!\"\207" [make-variable-buffer-local el-search--cached-changes custom-declare-variable el-search-change-revision-transformer-function funcall function #[0 "\300\207" [nil] 1] "Transformer function for the REVISION argument of `change' and `changed'.\n\nWhen specified, this function is called with two arguments - the\nREVISION argument passed to `change' or `changed' and the current\nfile name - and the return value is used as REVISION argument for\nthese patterns.\n\nThe default value is nil." :group el-search :type (choice (const :tag "No transformer" nil) (function :tag "User specified function")) defalias el-search--file-truename-wstm el-search-with-short-term-memory file-truename] 8) #@119 Return a list of files that changed relative to COMMIT. COMMIT defaults to HEAD. (fn REPO-ROOT-DIR &optional COMMIT) (defalias 'el-search--changed-files-in-repo #[513 "\211\206\302\262\303\304 \211\305P\303C\306\307\310\311\312\"\313\"\314$\216\2031\211\304 \240\210\315\316\"\210\317\320\321\322\323\324\325\326 !\"!\327\330#\322\323\324\331\326!\"!\327\330#\332\333$\")\266\202*\207" [message-log-max default-directory "HEAD" nil current-message " [Calling VCS...]" make-byte-code 0 "\300\205\301\242\203\302\303\301\242\"\207\302\304!\207" vconcat vector [message #1="%s" nil] 3 message #1# mapcar expand-file-name cl-nintersection split-string shell-command-to-string format "git diff -z --name-only %s --" shell-quote-argument "" t "git diff -z --name-only 4b825dc642cb6eb9a060e54bf8d69288fbee4904 %s --" :test equal] 17 (#$ . 7011)]) #@80 Return non-nil when FILE has changed relative to REVISION. (fn FILE REVISION) (defalias 'el-search--file-changed-p #[514 "\301!\262\302!\211\205\\\303!\304\305!r\211q\210\306\307\310\311\312!\313\"\314$\216\315\316C\317p&\320U*\262\205[\304\305!r\211q\210\306\307\310\311\312!\321\"\314$\216\315\316C\317p&\320U*\262)\207" [default-directory el-search--file-truename-wstm vc-backend file-name-directory generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 vc-call-backend diff nil 1 [buffer-name kill-buffer]] 11 (#$ . 7882)]) #@217 Return the changed regions in the current buffer's file. The return value is a list of conses (START . END) of all changes relative to REVISION. Uses variable `el-search--cached-changes' for caching. (fn REVISION) (defalias 'el-search--changes-from-diff-hl #[257 "\305! :\203 @\306 D\232\203 A\202z\307 \203!\310\311!\210\312\313!\210\312\314!\210\214~\210\212\n\2038\n\"\2029\211\315C\316C\315b\210\306 D\317 \"\205r\320\316\321\322\323\324\325\326\n\n\"\327\"\330\331%\3321n\333!\334 )0\202p\210\316\"\"B\211A)\266\203*)\207" [buffer-file-name el-search--cached-changes el-search-change-revision-transformer-function diff-hl-reference-revision default-directory el-search--file-truename-wstm visited-file-modtime buffer-modified-p user-error "Buffer is modified - please save" require vc diff-hl 1 nil el-search--file-changed-p delq mapcar make-byte-code 257 "\211@A\211@A\211@A\302=?\2056\211\300\242Zy\210\301`\240\210Sy\210\300\303\304#\240\210\305\301\242!\305\306 !B\266\203\207" vconcat vector [delete + -1 copy-marker line-end-position] 15 "\n\n(fn ARG0)" (error) file-name-directory diff-hl-changes] 15 (#$ . 8508)]) #@22 (fn POSN REVISION) (defalias 'el-search--change-p #[514 "\301 \203\302=\205l\303\304!\207\214~\210\305!\306!\307C\307C\310\311\312\313\314\n#\315\"\316\317%\266\202\203R@AW\204I@AW\203R\320!\204R\211A\262\210\202/\205i@@X\206i\320!\205i@@X\266\203)\207" [this-command buffer-modified-p el-search-pattern user-error "Buffer is modified - please save" el-search--changes-from-diff-hl el-search--end-of-sexp nil make-byte-code 256 "\211\203\301\242\207\301\242\204\302\303\212\300b\210\304p!)!\240\210\301\305\240\210\302\242\207" vconcat vector [el-search--atomic-p el-search-read t] 5 "\n\n(fn &optional CHECK)" thunk-force] 14 (#$ . 9680)]) #@22 (fn POSN REVISION) (defalias 'el-search--changed-p #[514 "\301 \203\302=\2057\303\304!\207\214~\210\305!\211\203)\211@AX\203)\211A\266\202\202\211\2054\211@@\306!W\262)\207" [this-command buffer-modified-p el-search-pattern user-error "Buffer is modified - please save" el-search--changes-from-diff-hl el-search--end-of-sexp] 6 (#$ . 10366)]) #@27 (fn &optional REVISION) (defalias 'el-search-change--heuristic-matcher #[256 "\211\206\300\301\302!\301\303\304\305\306\307\"\310\"\311\312%!\303\313\314\306\307!\315\"\316\317%\207" ["HEAD" el-search-with-short-term-memory el-search--changed-files-in-repo make-byte-code 257 "\304\305!\210\211;\203 \211\202\306!\211\205\\\307!\262\310!\311!\211\205C\31211\313\314\n#0\202C\211A@\314=\204@\315@A\"\210\316\262\211\205Y\317\320\321\"\301 \206S\322\300\"\"\"\266\202)\207" vconcat vector [default-directory el-search-change-revision-transformer-function require vc buffer-file-name el-search--file-truename-wstm file-name-directory vc-backend (vc-not-supported) vc-call-backend root signal nil cl-some apply-partially file-equal-p #[514 "\207" #1=[] 3 "\n\n(fn REV _)"]] 11 "\n\n(fn FILE-NAME-OR-BUFFER)" 514 "\300!\207" #1# 4 "\n\n(fn FILE-NAME-OR-BUFFER _)"] 11 (#$ . 10731)]) (byte-code "\303\236\211\203\211\304\241\210\202\303\304B\211\262B\210\303 \236\211\203&\211\305\241\210\202/\303\305B\211\262 B\210\303\n\236\306\203?\241\210\202H\303B\211\262\nB\266\307\236\211\203X\211\305\241\210\202a\307\305B\211\262B\210\307 \236\211\203p\211\305\241\210\202y\307\305B\211\262 B\210\307\n\236\310\203\211\241\210\202\222\307B\211\262\nB\266\311\236\211\203\242\211\304\241\210\202\253\311\304B\211\262B\210\311 \236\211\203\272\211\305\241\210\202\303\311\305B\211\262 B\210\311\n\236\312\203\323\241\210\202\334\311B\211\262\nB\266\313\236\211\203\354\211\305\241\210\202\365\313\305B\211\262B\210\313 \236\211\203\211\305\241\210\202 \313\305B\211\262 B\210\313\n\236\314\203\241\210\202&\313B\211\262\nB\266\315\236\211\2036\211\305\241\210\202?\315\305B\211\262B\210\315 \236\211\203N\211\305\241\210\202W\315\305B\211\262 B\210\315\n\236\316\203g\241\210\202p\315B\211\262\nB\266\317\236\211\203\200\211\305\241\210\202\211\317\305B\211\262B\210\317 \236\211\203\230\211\305\241\210\202\241\317\305B\211\262 B\210\317\n\236\320\203\261\241\210\202\272\317B\211\262\nB\210\207" [el-search--heuristic-matchers el-search--inverse-heuristic-matchers el-search--pcase-macros change--1 el-search-change--heuristic-matcher nil #[256 "\300\301\302\206\303ED\207" [guard el-search--change-p (point) "HEAD"] 5 "\n\n(fn &optional REVISION)"] change #[256 "\300\301\302DE\207" [and (filename) change--1] 5 "Matches the object if its text is part of a file change.\n\nMatches anything that changed relative to REVISION.\nNever matches in a modified buffer.\n\nRequires library \"diff-hl\". REVISION defaults to the file's\nrepository's HEAD commit and is a revision string. Customize\n`el-search-change-revision-transformer-function' to control how\nREVISION is interpreted.\n\nThis pattern-type does currently only work for git versioned\nfiles.\n\n(fn &optional REVISION)"] changed--1 #[256 "\300\301\302\206\303ED\207" [guard el-search--changed-p (point) "HEAD"] 5 "\n\n(fn &optional REVISION)"] changed #[256 "\300\301\302DE\207" [and (filename) changed--1] 5 "Matches the object if its text contains a file change.\n\nMatches anything that textually contains a change relative to\nREVISION. Never matches in a modified buffer.\n\nRequires library \"diff-hl\". REVISION defaults to the file's\nrepository's HEAD commit and is a revision string. Customize\n`el-search-change-revision-transformer-function' to control how\nREVISION is interpreted.\n\nThis pattern-type does currently only work for git versioned\nfiles.\n\n(fn &optional REVISION)"] outermost #[513 "\300\301\302\303\304\305\306\307\310\311\312\f\206 !D\313BBE\314BBBDDDE\207" [and not guard save-excursion condition-case nil progn (backward-up-list) el-search--match-p quote el-search-make-matcher ((save-excursion (el-search-read (current-buffer)))) ((scan-error))] 15 "Matches when PATTERN matches but the parent sexp does not.\nFor toplevel expressions, this is equivalent to PATTERN.\n\nOptional NOT-PATTERN defaults to PATTERN; when given, match when\nPATTERN matches but the parent sexp is not matched by\nNOT-PATTERN.\n\n\nThis pattern is useful to match only the outermost expression\nwhen subexpressions would match recursively. For\nexample, (outermost _) matches only top-level expressions.\nAnother example: For the `change' pattern, any subexpression of a\nmatch is typically also an according change. Wrapping the\n`change' pattern into `outermost' prevents el-search from\ndescending into any found expression - only the outermost\nexpression matching the `change' pattern will be matched.\n\n(fn PATTERN &optional NOT-PATTERN)"] top-level #[0 "\300\207" [(outermost _)] 1 "Matches any toplevel expression."]] 4) #@18 (fn KEYS EXPR) (defalias 'el-search--match-key-sequence #[514 "\211;\203 \211\202Q\300!\203\211\202Q\211:\203P\211@\211\301=\205KA\211:\205I\211@\211;\205GA\211?\205E\3021A\301!0\202C\210\303\262\262\262\262\262\202Q\303\211\205_\304\305\306\307D\"\"\207" [vectorp kbd (error) nil apply equal mapcar #[257 "\3001 \301!0\207\210\302\207" [(error) key-description nil] 3 "\n\n(fn KEYS)"]] 9 (#$ . 15500)]) (byte-code "\303\236\211\203\211\304\241\210\202\303\304B\211\262B\210\303 \236\211\203&\211\304\241\210\202/\303\304B\211\262 B\210\303\n\236\305\203?\241\210\202H\303B\211\262\nB\266\306\236\211\203X\211\304\241\210\202a\306\304B\211\262B\210\306 \236\211\203p\211\304\241\210\202y\306\304B\211\262 B\210\306\n\236\307\203\211\241\210\202\222\306B\211\262\nB\210\207" [el-search--heuristic-matchers el-search--inverse-heuristic-matchers el-search--pcase-macros keys nil #[257 "\211\242\300=\203\300A@!\262\301\302C\303\304$\210\305\306DD\207" [kbd el-search-defpattern--check-args "keys" #[257 "\211;\206\300!\207" [vectorp] 3 "\n\n(fn X)"] "argument not a string or vector" pred el-search--match-key-sequence] 6 "Matches descriptions of the KEY-SEQUENCE.\nKEY-SEQUENCE is a string or vector representing a key sequence,\nor an expression of the form (kbd STRING).\n\nMatch any description of the same key sequence in any of these\nformats.\n\nExample: the pattern\n\n (keys (kbd \"C-s\"))\n\nmatches any of these expressions:\n\n \"\\C-s\"\n \"\"\n (kbd \"C-s\")\n [(control ?s)]\n\n(fn KEY-SEQUENCE)"] de-morgan #[256 "\300\301!\300\302!\300\303!\304\305\306\304\307ECB\306CBBCB\310\304\311D\312\313\314 DDDED\310\315\316C\317\320BBEED\321\322\313DE\205o\323=?\205o\321 \305\312\306\324\325\326BB\327BBCB\330\331\332ECBDDCBECBBBBB\207" [make-symbol "functor" "nots" "arg" and \` \, (or 'or 'and) guard consp not cdr last cl-every lambda pcase ((`(not ,_) t)) let (pred identity) _ if eq ('or) ('and 'or) \,@ mapcar #'cadr] 18 "Matches forms that can be simplified by applying de Morgan.\nMatched are all expressions of the form\n\n (or (not A1) (not A2) ...)\n\nand\n\n (and (not B1) (not B2) ...)\n\nwhere at least two `not' expressions are present.\n\nREPLACEMENT, when specified, should be a variable, and will be\nbound to a semantically equivalent expression with de Morgan's\nlaw been applied, namely\n\n (not (and A1 A2 ...))\n\nor\n\n (not (or B1 B2 ...))\n\nrespectively.\n\nNote that when `el-search-query-replace'ing with this pattern\ntype, it's possible that de Morgan can be applied again, so you\nmay want to check that.\n\n(fn &optional REPLACEMENT)"]] 4) #@13 (fn EXPR) (defalias 'el-search--nested-if-1 #[257 "\300:\203\260@\211\301=\203\244A\211:\203\230\211@A\211:\203\214\211@A\211:\203q\211@\211:\203e\211@\211\301=\203YA\211\204L\211D\302!B\266\203\202T  #\262\202`#\262\202l#\262\202\207\211\204\200\211DC\266\202\202\207#\266\202\202\223\303\304\"\262\266\202\202\237\303\304\"\262\262\202\253\303\304\"\262\262\202\267\303\304\"\262\207" [#[771 "\211D\300BD\207" [t] 6 "\n\n(fn ELSE THEN CONDITION)"] if el-search--nested-if-1 error "No clause matching `%S'"] 17 (#$ . 18210)]) (byte-code "\303\236\211\203\211\304\241\210\202\303\304B\211\262B\210\303 \236\211\203&\211\304\241\210\202/\303\304B\211\262 B\210\303\n\236\305\203?\241\210\202H\303B\211\262\nB\266\306\236\211\203X\211\304\241\210\202a\306\304B\211\262B\210\306 \236\211\203p\211\304\241\210\202y\306\304B\211\262 B\210\306\n\236\307\203\211\241\210\202\222\306B\211\262\nB\266\310\311!\207" [el-search--heuristic-matchers el-search--inverse-heuristic-matchers el-search--pcase-macros -nested-if nil #[256 "\300\204 \211\202#\301\302!\303\304\305E\306\307\310\311CBBCBEF\262\207" [`(if ,_ ,_ (if ,_ ,_ ,_ \, _)) make-symbol "cases" and app el-search--nested-if-1 let \` cond \,] 12 "\n\n(fn &optional VAR)"] iffy-if #[256 "\211\206\300\262\301\302!\301\303!\301\304!\305\306D\307\310\311\312\313 CBD\313CBECB\314\310\315\313 CB\313 CBECBEE\307\310\311\313 CB\313 CBECB\314 \310\316\313\fCB\313\fCBECBEE\307\310\311\313\nCB\313\nCB\317\313 CBBFCB\314\n\310\317\313 CB\313 CBD\313\fCBBBCBEE\257\207" [_ make-symbol "condition" "then" "clauses" or -nested-if and \` if not \, let unless when cond] 17 "Matches `if'-clauses that could be replaced with a more suitable form.\n\nMatch `if' clauses that would fit better into either `cond',\n`when' or `unless'. With symbol VAR given, bind that to such a\nsemantically equivalent expression suitable to replace the\ncurrent match.\n\n(fn &optional VAR)"] provide el-search-x] 4)