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

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

[elpa] 20/52: Add new possible value to `company-dabbrev-code-other-buff


From: Dmitry Gutov
Subject: [elpa] 20/52: Add new possible value to `company-dabbrev-code-other-buffers'
Date: Tue, 01 Jul 2014 11:53:15 +0000

dgutov pushed a commit to branch master
in repository elpa.

commit f855e5a106b853e66e6bbf23acfd5370d3c946cb
Author: Dmitry Gutov <address@hidden>
Date:   Wed Jun 4 05:25:39 2014 +0300

    Add new possible value to `company-dabbrev-code-other-buffers'
    
    #125
---
 NEWS.md                 |    1 +
 company-dabbrev-code.el |   31 ++++++++++++++++++-------------
 company-dabbrev.el      |   26 ++++++++++++++------------
 3 files changed, 33 insertions(+), 25 deletions(-)

diff --git a/NEWS.md b/NEWS.md
index 6db3e21..137319d 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -4,6 +4,7 @@
 
 * `company-clang` uses the standard header search paths by default.
 * New user option `company-tooltip-flip-when-above`.
+* User option `company-dabbrev-code-other-buffers` can have a new value: 
`code`.
 
 ## 2014-04-19 (0.8.0)
 
diff --git a/company-dabbrev-code.el b/company-dabbrev-code.el
index 1039e4a..371d908 100644
--- a/company-dabbrev-code.el
+++ b/company-dabbrev-code.el
@@ -1,6 +1,6 @@
-;;; company-dabbrev-code.el --- dabbrev-like company-mode back-end for code
+;;; company-dabbrev-code.el --- dabbrev-like company-mode back-end for code  
-*- lexical-binding: t -*-
 
-;; Copyright (C) 2009, 2011  Free Software Foundation, Inc.
+;; Copyright (C) 2009, 2011, 2014  Free Software Foundation, Inc.
 
 ;; Author: Nikolaj Schumacher
 
@@ -34,25 +34,26 @@
   :group 'company)
 
 (defcustom company-dabbrev-code-modes
-  '(asm-mode batch-file-mode c++-mode c-mode cperl-mode csharp-mode css-mode
-    emacs-lisp-mode erlang-mode f90-mode fortran-mode haskell-mode java-mode
-    javascript-mode jde-mode js2-mode lisp-mode lua-mode objc-mode perl-mode
-    php-mode prog-mode python-mode ruby-mode scheme-mode shell-script-mode)
+  '(prog-mode
+    batch-file-mode csharp-mode css-mode erlang-mode haskell-mode jde-mode
+    lua-mode python-mode)
   "Modes that use `company-dabbrev-code'.
-In all these modes `company-dabbrev-code' will complete only symbols, not text
-in comments or strings.  In other modes `company-dabbrev-code' will pass 
control
-to other back-ends \(e.g. `company-dabbrev'\).
-Value t means complete in all modes."
+In all these modes (and their derivatives) `company-dabbrev-code' will
+complete only symbols, not text in comments or strings.  In other modes
+`company-dabbrev-code' will pass control to other back-ends
+\(e.g. `company-dabbrev'\).  Value t means complete in all modes."
   :type '(choice (repeat (symbol :tag "Major mode"))
                  (const tag "All modes" t)))
 
 (defcustom company-dabbrev-code-other-buffers t
   "Determines whether `company-dabbrev-code' should search other buffers.
 If `all', search all other buffers.  If t, search buffers with the same
-major mode.
+major mode.  If `code', search all buffers with major modes in
+`company-dabbrev-code-modes', or derived from one of them.
 See also `company-dabbrev-code-time-limit'."
   :type '(choice (const :tag "Off" nil)
                  (const :tag "Same major mode" t)
+                 (const :tag "Code major modes" code)
                  (const :tag "All" all)))
 
 (defcustom company-dabbrev-code-time-limit .1
@@ -83,7 +84,7 @@ comments or strings."
   (cl-case command
     (interactive (company-begin-backend 'company-dabbrev-code))
     (prefix (and (or (eq t company-dabbrev-code-modes)
-                     (apply 'derived-mode-p company-dabbrev-code-modes))
+                     (apply #'derived-mode-p company-dabbrev-code-modes))
                  (or company-dabbrev-code-everywhere
                      (not (company-in-string-or-comment)))
                  (or (company-grab-symbol) 'stop)))
@@ -91,7 +92,11 @@ comments or strings."
                   (company-dabbrev--search
                    (company-dabbrev-code--make-regexp arg)
                    company-dabbrev-code-time-limit
-                   company-dabbrev-code-other-buffers t)))
+                   (pcase company-dabbrev-code-other-buffers
+                     (`t (list major-mode))
+                     (`code company-dabbrev-code-modes)
+                     (`all `all))
+                   t)))
     (ignore-case company-dabbrev-code-ignore-case)
     (duplicates t)))
 
diff --git a/company-dabbrev.el b/company-dabbrev.el
index 401fcc9..7fd20b6 100644
--- a/company-dabbrev.el
+++ b/company-dabbrev.el
@@ -1,6 +1,6 @@
-;;; company-dabbrev.el --- dabbrev-like company-mode completion back-end
+;;; company-dabbrev.el --- dabbrev-like company-mode completion back-end  -*- 
lexical-binding: t -*-
 
-;; Copyright (C) 2009, 2011  Free Software Foundation, Inc.
+;; Copyright (C) 2009, 2011, 2014  Free Software Foundation, Inc.
 
 ;; Author: Nikolaj Schumacher
 
@@ -108,19 +108,19 @@ If you set this value to nil, you may also want to set
             (push match symbols))))
       symbols)))
 
-(defun company-dabbrev--search (regexp &optional limit other-buffers
+(defun company-dabbrev--search (regexp &optional limit other-buffer-modes
                                 ignore-comments)
   (let* ((start (current-time))
          (symbols (company-dabbrev--search-buffer regexp (point) nil start 
limit
                                                   ignore-comments)))
-    (when other-buffers
+    (when other-buffer-modes
       (cl-dolist (buffer (delq (current-buffer) (buffer-list)))
-        (and (or (eq other-buffers 'all)
-                 (eq (buffer-local-value 'major-mode buffer) major-mode))
-             (with-current-buffer buffer
-               (setq symbols
-                     (company-dabbrev--search-buffer regexp nil symbols start
-                                                     limit ignore-comments))))
+        (with-current-buffer buffer
+          (when (or (eq other-buffer-modes 'all)
+                    (apply #'derived-mode-p other-buffer-modes))
+            (setq symbols
+                  (company-dabbrev--search-buffer regexp nil symbols start
+                                                  limit ignore-comments))))
         (and limit
              (> (float-time (time-since start)) limit)
              (cl-return))))
@@ -135,8 +135,10 @@ If you set this value to nil, you may also want to set
     (prefix (company-grab-word))
     (candidates
      (let ((words (company-dabbrev--search (company-dabbrev--make-regexp arg)
-                                         company-dabbrev-time-limit
-                                         company-dabbrev-other-buffers))
+                                           company-dabbrev-time-limit
+                                           (pcase company-dabbrev-other-buffers
+                                             (`t (list major-mode))
+                                             (`all `all))))
            (downcase-p (if (eq company-dabbrev-downcase 'case-replace)
                            case-replace
                          company-dabbrev-downcase)))



reply via email to

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