X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/2d1062d1876e4413b95d003720fee25df77e5975..fed6f25d13f4eaa1377521e8f96470cfb4ddb53a:/packages/el-search/el-search.el diff --git a/packages/el-search/el-search.el b/packages/el-search/el-search.el index f6c8c48e0..05378a8a5 100644 --- a/packages/el-search/el-search.el +++ b/packages/el-search/el-search.el @@ -374,14 +374,15 @@ of the definitions is limited to \"el-search\"." (defun el-search--matcher (pattern &rest body) (eval ;use `eval' to allow for user defined pattern types at run time - `(el-search--with-additional-pcase-macros - (let ((byte-compile-debug t) ;make undefined pattern types raise an error - (warning-suppress-log-types '((bytecomp))) - (pcase--dontwarn-upats (cons '_ pcase--dontwarn-upats))) - (byte-compile (lambda (expression) - (pcase expression - (,pattern ,@(or body (list t))) - (_ nil)))))))) + (let ((expression (make-symbol "expression"))) + `(el-search--with-additional-pcase-macros + (let ((byte-compile-debug t) ;make undefined pattern types raise an error + (warning-suppress-log-types '((bytecomp))) + (pcase--dontwarn-upats (cons '_ pcase--dontwarn-upats))) + (byte-compile (lambda (,expression) + (pcase ,expression + (,pattern ,@(or body (list t))) + (_ nil))))))))) (defun el-search--match-p (matcher expression) (funcall matcher expression)) @@ -663,7 +664,9 @@ matches any of these expressions: (defun el-search--s (expr) (cond - ((symbolp expr) `(symbol ,(symbol-name expr))) + ((symbolp expr) `(or (symbol ,(symbol-name expr)) + (,'\` (,'quote (,'\, (symbol ,(symbol-name expr))))) + (,'\` (,'function (,'\, (symbol ,(symbol-name expr))))))) ((stringp expr) `(string ,expr)) (t expr))) @@ -677,8 +680,8 @@ with very brief input by using a specialized syntax. An LPAT can take the following forms: -SYMBOL Matches any symbol matched by SYMBOL's name interpreted as - a regexp +SYMBOL Matches any symbol S matched by SYMBOL's name interpreted + as a regexp. Matches also 'S and #'S for any such S. STRING Matches any string matched by STRING interpreted as a regexp _ Matches any list element @@ -952,8 +955,13 @@ Hit any key to proceed." (barf-if-buffer-read-only) (el-search-search-and-replace-pattern from to mapping)) -(defun el-search--take-over-from-isearch () - (prog1 isearch-string (isearch-exit))) +(defun el-search--take-over-from-isearch (&optional goto-left-end) + (let ((other-end (and goto-left-end isearch-other-end)) + (input isearch-string)) + (isearch-exit) + (when (and other-end (< other-end (point))) + (goto-char other-end)) + input)) ;;;###autoload (defun el-search-search-from-isearch () @@ -968,7 +976,7 @@ Hit any key to proceed." ;;;###autoload (defun el-search-replace-from-isearch () (interactive) - (let ((el-search--initial-mb-contents (concat "'" (el-search--take-over-from-isearch)))) + (let ((el-search--initial-mb-contents (concat "'" (el-search--take-over-from-isearch t)))) (call-interactively #'el-search-query-replace)))