From 833efc5e7de3cd42530a8bf4790d774308e5656c Mon Sep 17 00:00:00 2001 From: Daniel Mendler Date: Tue, 30 Jan 2024 17:54:20 +0100 Subject: Add cape-wrap-inside-code and cape-capf-inside-code --- CHANGELOG.org | 4 ++++ README.org | 1 + cape.el | 19 +++++++++++++------ 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))) -- cgit v1.0