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

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

[elpa] master b1a1953 67/78: Customize extra chars for avy-goto-subword-


From: Oleh Krehel
Subject: [elpa] master b1a1953 67/78: Customize extra chars for avy-goto-subword-1
Date: Sat, 23 Jan 2016 14:00:22 +0000

branch: master
commit b1a1953e1c20578b0d866d538b6045b42f4de4ef
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>

    Customize extra chars for avy-goto-subword-1
    
    * avy.el (avy-subword-extra-word-chars): New defcustom.
    (avy-goto-subword-0): Modify the syntax table temporarily using
    `avy-subword-extra-word-chars'.
    
    Fixes #116
---
 avy.el |   33 +++++++++++++++++++++------------
 1 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/avy.el b/avy.el
index bd04228..4426a22 100644
--- a/avy.el
+++ b/avy.el
@@ -955,6 +955,11 @@ The window scope is determined by `avy-all-windows' (ARG 
negates it)."
 (declare-function subword-backward "subword")
 (defvar subword-backward-regexp)
 
+(defcustom avy-subword-extra-word-chars '(?{ ?= ?} ?* ?: ?> ?<)
+  "A list of characters that should temporarily match \"\\w\".
+This variable is used by `avy-goto-subword-0' and `avy-goto-subword-1'."
+  :type '(repeat character))
+
 ;;;###autoload
 (defun avy-goto-subword-0 (&optional arg predicate)
   "Jump to a word or subword start.
@@ -971,18 +976,22 @@ should return true."
            
"\\(\\(\\W\\|[[:lower:][:digit:]]\\)\\([!-/:@`~[:upper:]]+\\W*\\)\\|\\W\\w+\\)")
           candidates)
       (avy-dowindows arg
-        (let ((ws (window-start))
-              window-cands)
-          (save-excursion
-            (goto-char (window-end (selected-window) t))
-            (subword-backward)
-            (while (> (point) ws)
-              (when (or (null predicate)
-                        (and predicate (funcall predicate)))
-                (unless (get-char-property (point) 'invisible)
-                  (push (cons (point) (selected-window)) window-cands)))
-              (subword-backward)))
-          (setq candidates (nconc candidates window-cands))))
+        (let ((syn-tbl (copy-syntax-table)))
+          (dolist (char avy-subword-extra-word-chars)
+            (modify-syntax-entry char "w" syn-tbl))
+          (with-syntax-table syn-tbl
+            (let ((ws (window-start))
+                  window-cands)
+              (save-excursion
+                (goto-char (window-end (selected-window) t))
+                (subword-backward)
+                (while (> (point) ws)
+                  (when (or (null predicate)
+                            (and predicate (funcall predicate)))
+                    (unless (get-char-property (point) 'invisible)
+                      (push (cons (point) (selected-window)) window-cands)))
+                  (subword-backward)))
+              (setq candidates (nconc candidates window-cands))))))
       (avy--process candidates (avy--style-fn avy-style)))))
 
 ;;;###autoload



reply via email to

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