[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/el-search c0efb8d 067/332: New user option: el-search-s
From: |
Stefan Monnier |
Subject: |
[elpa] externals/el-search c0efb8d 067/332: New user option: el-search-smart-case-fold-search |
Date: |
Tue, 1 Dec 2020 15:48:13 -0500 (EST) |
branch: externals/el-search
commit c0efb8d59160f81ba5115ab9fa833925bd837407
Author: Michael Heerdegen <michael_heerdegen@web.de>
Commit: Michael Heerdegen <michael_heerdegen@web.de>
New user option: el-search-smart-case-fold-search
---
el-search.el | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/el-search.el b/el-search.el
index 00b1b15..fc9f2bf 100644
--- a/el-search.el
+++ b/el-search.el
@@ -253,9 +253,28 @@ The default value is `exp'."
(t (:background
"DarkSlateGray1")))
"Face for highlighting the other matches.")
+(defcustom el-search-smart-case-fold-search t
+ "Whether to use smart case folding in pattern matching.
+When an \"el-search\" pattern involves regexp matching (like for
+\"string\" or \"source\") and this option is non-nil,
+case-fold-search will be temporarily bound to t if the according
+regexp contains any upper case letter, and nil else. This is
+done independently for every single matching operation.
+
+If nil, the value of `case-fold-search' is decisive."
+ :type 'boolean)
+
;;;; Helpers
+(defun el-search--smart-string-match-p (regexp string)
+ "`string-match-p' taking `el-search-smart-case-fold-search' into account."
+ (let ((case-fold-search (if el-search-smart-case-fold-search
+ (not (let ((case-fold-search nil))
+ (string-match-p "[[:upper:]]" regexp)))
+ case-fold-search)))
+ (string-match-p regexp string)))
+
(defun el-search--print (expr)
(let ((print-quoted t)
(print-length nil)
@@ -569,7 +588,7 @@ matches the list (1 2 3 4 5 6 7 8 9) and binds `x' to (4 5
6)."
`(and (pred stringp)
(pred (lambda (,string)
(cl-every
- (lambda (,regexp) (string-match-p ,regexp ,string))
+ (lambda (,regexp) (el-search--smart-string-match-p ,regexp
,string))
(list ,@regexps)))))))
(el-search-defpattern symbol (&rest regexps)
@@ -614,7 +633,7 @@ of any kind matched by all PATTERNs are also matched.
(defun el-search--match-symbol-file (regexp symbol)
(when-let ((symbol-file (and (symbolp symbol)
(symbol-file symbol))))
- (string-match-p
+ (el-search--smart-string-match-p
(if (symbolp regexp) (concat "\\`" (symbol-name regexp) "\\'") regexp)
(file-name-sans-extension (file-name-nondirectory symbol-file)))))
- [elpa] externals/el-search e81afef 054/332: factor out `el-search--search-pattern-1', (continued)
- [elpa] externals/el-search e81afef 054/332: factor out `el-search--search-pattern-1', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 2b4c194 055/332: remove annoying message on how to repeat el-search, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 30fef15 056/332: use more newlines in `el-search--make-docstring', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search c090afe 057/332: el-search: new pattern type `contains', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 7e13746 058/332: When coming from isearch, don't move to other end, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 5837187 059/332: el-search: bump version to 0.1.3, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 108466e 061/332: Support highlighting of all visible matches, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 177d82e 063/332: use uninterned symbol in `el-search--matcher', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 5517384 065/332: Improve doc of el-search-this-expression-identifier., Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 1e97c09 069/332: Fix for non-interactive calls of el-search-pattern, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search c0efb8d 067/332: New user option: el-search-smart-case-fold-search,
Stefan Monnier <=
- [elpa] externals/el-search 9f8b3d2 071/332: New function el-search--macroexpand-1 for debugging, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 975e2e5 073/332: Rewrite `string' pattern definition, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 2dc14bb 075/332: Rewrite replacement layout restoration, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 14c7cf9 074/332: el-search--check-pattern-args: make arg TYPE a string, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search fc46701 076/332: Replacing: make C-g an alternative key for quitting, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search a61e0eb 079/332: Handle replacements containing another match, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 4325b91 080/332: Rename two functions, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search ba17f50 086/332: Give el-search--s a more meaningful name, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search d25f4d8 082/332: Address compiler warnings, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 2358b72 088/332: Small fix in el-search--setup-minibuffer, Stefan Monnier, 2020/12/01