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

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

[elpa] master 5b736e9 024/173: Introduce company-dabbrev-ignore-invisibl


From: Dmitry Gutov
Subject: [elpa] master 5b736e9 024/173: Introduce company-dabbrev-ignore-invisible
Date: Thu, 23 Jun 2016 00:28:35 +0000 (UTC)

branch: master
commit 5b736e9c124d0b8c2e8d63fe9bded2d8ba799cf7
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>

    Introduce company-dabbrev-ignore-invisible
---
 NEWS.md            |    1 +
 company-dabbrev.el |   21 ++++++++++++++-------
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/NEWS.md b/NEWS.md
index 409dca8..755e1fe 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -2,6 +2,7 @@
 
 ## Next
 
+* New user option `company-dabbrev-ignore-invisible`.
 * `company-ropemacs` was removed. `ropemacs` supports completion via
   `completion-at-point-functions` starting with version 0.8.
 * `company-pysmell` was removed.
diff --git a/company-dabbrev.el b/company-dabbrev.el
index 7519caf..7dd874b 100644
--- a/company-dabbrev.el
+++ b/company-dabbrev.el
@@ -74,6 +74,11 @@ This variable affects both `company-dabbrev' and 
`company-dabbrev-code'."
   :type 'integer
   :package-version '(company . "0.8.3"))
 
+(defcustom company-dabbrev-ignore-invisible nil
+  "Non-nil to skip invisible text."
+  :type 'boolean
+  :package-version '(company . "0.9.0"))
+
 (defmacro company-dabrev--time-limit-while (test start limit &rest body)
   (declare (indent 3) (debug t))
   `(let ((company-time-limit-while-counter 0))
@@ -95,25 +100,27 @@ This variable affects both `company-dabbrev' and 
`company-dabbrev-code'."
 (defun company-dabbrev--search-buffer (regexp pos symbols start limit
                                        ignore-comments)
   (save-excursion
-    (let (match)
+    (cl-flet ((maybe-collect-match
+               ()
+               (let ((match (match-string-no-properties 0)))
+                 (when (and (>= (length match) company-dabbrev-minimum-length)
+                            (not (and company-dabbrev-ignore-invisible
+                                      (invisible-p (match-beginning 0)))))
+                   (push match symbols)))))
       (goto-char (if pos (1- pos) (point-min)))
       ;; search before pos
       (company-dabrev--time-limit-while (re-search-backward regexp nil t)
           start limit
-        (setq match (match-string-no-properties 0))
         (if (and ignore-comments (company-in-string-or-comment))
             (goto-char (nth 8 (syntax-ppss)))
-          (when (>= (length match) company-dabbrev-minimum-length)
-            (push match symbols))))
+          (maybe-collect-match)))
       (goto-char (or pos (point-min)))
       ;; search after pos
       (company-dabrev--time-limit-while (re-search-forward regexp nil t)
           start limit
-        (setq match (match-string-no-properties 0))
         (if (and ignore-comments (company-in-string-or-comment))
             (re-search-forward "\\s>\\|\\s!\\|\\s\"" nil t)
-          (when (>= (length match) company-dabbrev-minimum-length)
-            (push match symbols))))
+          (maybe-collect-match)))
       symbols)))
 
 (defun company-dabbrev--search (regexp &optional limit other-buffer-modes



reply via email to

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