summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mendler <mail@daniel-mendler.de>2024-01-30 17:54:20 +0100
committerDaniel Mendler <mail@daniel-mendler.de>2024-01-30 17:54:20 +0100
commit833efc5e7de3cd42530a8bf4790d774308e5656c (patch)
tree69c737dcc765e8a38b04b4ee2d1647fe348724da
parenta687fbeddc0f1dcdc7e4c2d2a69c96243587317d (diff)
Add cape-wrap-inside-code and cape-capf-inside-code
-rw-r--r--CHANGELOG.org4
-rw-r--r--README.org1
-rw-r--r--cape.el19
3 files changed, 18 insertions, 6 deletions
diff --git a/CHANGELOG.org b/CHANGELOG.org
index f93d32f..51ac1db 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -2,6 +2,10 @@
#+author: Daniel Mendler
#+language: en
+* Development
+
+- Add =cape-wrap-inside-code= and =cape-capf-inside-code=.
+
* Version 1.2 (2024-01-23)
- =cape-capf-super=: Bugfixes.
diff --git a/README.org b/README.org
index 655f119..732f718 100644
--- a/README.org
+++ b/README.org
@@ -255,6 +255,7 @@ the Capf transformers with =defalias= to a function symbol.
- ~cape-capf-accept-all~, ~cape-wrap-accept-all~: Create a Capf which accepts every input as valid.
- ~cape-capf-case-fold~, ~cape-wrap-case-fold~: Create a Capf which is case insensitive.
- ~cape-capf-debug~, ~cape-wrap-debug~: Create a Capf which prints debugging messages.
+- ~cape-capf-inside-code~, ~cape-wrap-inside-code~: Ensure that Capf triggers only inside code (not comments).
- ~cape-capf-inside-comment~, ~cape-wrap-inside-comment~: Ensure that Capf triggers only inside comment.
- ~cape-capf-inside-faces~, ~cape-wrap-inside-faces~: Ensure that Capf triggers only inside text with certain faces.
- ~cape-capf-inside-string~, ~cape-wrap-inside-string~: Ensure that Capf triggers only inside a string literal.
diff --git a/cape.el b/cape.el
index ee336c5..d231794 100644
--- a/cape.el
+++ b/cape.el
@@ -1116,6 +1116,12 @@ This function can be used as an advice around an existing Capf."
(funcall capf)))
;;;###autoload
+(defun cape-wrap-inside-code (capf)
+ "Call CAPF only if inside not inside a comment.
+This function can be used as an advice around an existing Capf."
+ (and (not (nth 4 (syntax-ppss))) (funcall capf)))
+
+;;;###autoload
(defun cape-wrap-inside-comment (capf)
"Call CAPF only if inside comment.
This function can be used as an advice around an existing Capf."
@@ -1161,6 +1167,7 @@ This function can be used as an advice around an existing Capf."
;;;###autoload (autoload 'cape-capf-buster "cape")
;;;###autoload (autoload 'cape-capf-case-fold "cape")
;;;###autoload (autoload 'cape-capf-debug "cape")
+;;;###autoload (autoload 'cape-capf-inside-code "cape")
;;;###autoload (autoload 'cape-capf-inside-comment "cape")
;;;###autoload (autoload 'cape-capf-inside-faces "cape")
;;;###autoload (autoload 'cape-capf-inside-string "cape")
@@ -1176,12 +1183,12 @@ This function can be used as an advice around an existing Capf."
(dolist (wrapper (list #'cape-wrap-accept-all #'cape-wrap-buster
#'cape-wrap-case-fold #'cape-wrap-debug
- #'cape-wrap-inside-comment #'cape-wrap-inside-faces
- #'cape-wrap-inside-string #'cape-wrap-nonexclusive
- #'cape-wrap-noninterruptible #'cape-wrap-passthrough
- #'cape-wrap-predicate #'cape-wrap-prefix-length
- #'cape-wrap-properties #'cape-wrap-purify
- #'cape-wrap-silent #'cape-wrap-super))
+ #'cape-wrap-inside-code #'cape-wrap-inside-comment
+ #'cape-wrap-inside-faces #'cape-wrap-inside-string
+ #'cape-wrap-nonexclusive #'cape-wrap-noninterruptible
+ #'cape-wrap-passthrough #'cape-wrap-predicate
+ #'cape-wrap-prefix-length #'cape-wrap-properties
+ #'cape-wrap-purify #'cape-wrap-silent #'cape-wrap-super))
(let ((name (string-remove-prefix "cape-wrap-" (symbol-name wrapper))))
(defalias (intern (format "cape-capf-%s" name))
(lambda (capf &rest args) (lambda () (apply wrapper capf args)))