emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/cape caa5500e0b: Add cape-symbol-wrapper and cape--symb


From: ELPA Syncer
Subject: [elpa] externals/cape caa5500e0b: Add cape-symbol-wrapper and cape--symbol-exit
Date: Wed, 19 Oct 2022 06:57:23 -0400 (EDT)

branch: externals/cape
commit caa5500e0bc766050794e922c88f23c352dcffbf
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    Add cape-symbol-wrapper and cape--symbol-exit
---
 cape.el | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/cape.el b/cape.el
index 4738af6b18..b3d96dd06a 100644
--- a/cape.el
+++ b/cape.el
@@ -94,6 +94,12 @@ The buffers are scanned for completion candidates by 
`cape-line'."
                  (const :tag "Buffers with same major mode" 
cape--buffers-major-mode)
                  (function :tag "Custom function")))
 
+(defcustom cape-symbol-wrapper
+  '((org-mode . ?=)
+    (markdown-mode . ?`))
+  "Wrapper characters for symbols."
+  :type '(alist :key-type symbol :value-type (choice character string)))
+
 ;;;; Helpers
 
 (defmacro cape--silent (&rest body)
@@ -271,10 +277,22 @@ If INTERACTIVE is nil the function acts like a Capf."
 
 (defvar cape--symbol-properties
   (list :annotation-function #'cape--symbol-annotation
+        :exit-function #'cape--symbol-exit
         :company-kind #'cape--symbol-kind
         :exclusive 'no)
   "Completion extra properties for `cape-symbol'.")
 
+(defun cape--symbol-exit (name status)
+  "Wrap symbol NAME with `cape-symbol-wrapper' buffers.
+STATUS is the exit status."
+  (when-let (((not (eq status 'exact)))
+             (c (cl-loop for (m . c) in cape-symbol-wrapper
+                         if (derived-mode-p m) return c)))
+    (save-excursion
+      (backward-char (length name))
+      (insert c))
+    (insert c)))
+
 (defun cape--symbol-kind (sym)
   "Return kind of SYM."
   (setq sym (intern-soft sym))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]