From f275e1c4ea2557eba325f864bf9fc9937b1b029f Mon Sep 17 00:00:00 2001 From: brettlangdon Date: Fri, 8 Aug 2014 07:49:15 -0400 Subject: [PATCH] upgrade company and monokai theme --- .../.dir-locals.el | 0 .../.gitignore | 0 .../.travis.yml | 0 .../ChangeLog | 16 + .../{company-0.8.0 => company-0.8.2}/Makefile | 0 .../{company-0.8.0 => company-0.8.2}/NEWS.md | 22 + .../README.md | 0 .../company-abbrev.el | 0 .../company-autoloads.el | 42 +- .../company-bbdb.el | 0 .../company-capf.el | 45 +- .../company-clang.el | 20 +- .../company-cmake.el | 0 .../company-css.el | 161 +++++- .../company-dabbrev-code.el | 31 +- .../company-dabbrev.el | 29 +- .../company-eclim.el | 6 +- .../company-elisp-tests.el | 0 .../company-elisp.el | 0 .../company-etags.el | 6 +- .../company-files.el | 14 +- .../company-gtags.el | 57 +- .../company-ispell.el | 0 .../company-keywords.el | 1 + .../company-nxml.el | 0 .../company-oddmuse.el | 0 .../company-pkg.el | 2 +- .../company-pysmell.el | 4 +- .../company-ropemacs.el | 0 .../company-semantic.el | 3 +- .../company-template.el | 3 +- .../company-tempo.el | 0 .../company-tests.el | 105 +++- .../company-xcode.el | 3 +- .../company-yasnippet.el | 5 +- .../company.el | 538 +++++++++++------- .../monokai-theme-0.0.11/monokai-theme-pkg.el | 1 - .../monokai-theme-pkg.elc | Bin 506 -> 0 bytes .../monokai-theme-autoloads.el | 13 +- .../monokai-theme-0.0.12/monokai-theme-pkg.el | 1 + .../monokai-theme.el | 10 +- 41 files changed, 775 insertions(+), 363 deletions(-) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/.dir-locals.el (100%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/.gitignore (100%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/.travis.yml (100%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/ChangeLog (94%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/Makefile (100%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/NEWS.md (90%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/README.md (100%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-abbrev.el (100%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-autoloads.el (93%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-bbdb.el (100%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-capf.el (75%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-clang.el (95%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-cmake.el (100%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-css.el (63%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-dabbrev-code.el (76%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-dabbrev.el (86%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-eclim.el (97%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-elisp-tests.el (100%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-elisp.el (100%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-etags.el (96%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-files.el (88%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-gtags.el (55%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-ispell.el (100%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-keywords.el (99%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-nxml.el (100%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-oddmuse.el (100%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-pkg.el (73%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-pysmell.el (95%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-ropemacs.el (100%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-semantic.el (98%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-template.el (98%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-tempo.el (100%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-tests.el (88%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-xcode.el (98%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company-yasnippet.el (95%) rename emacs.d/elpa/{company-0.8.0 => company-0.8.2}/company.el (86%) delete mode 100644 emacs.d/elpa/monokai-theme-0.0.11/monokai-theme-pkg.el delete mode 100644 emacs.d/elpa/monokai-theme-0.0.11/monokai-theme-pkg.elc rename emacs.d/elpa/{monokai-theme-0.0.11 => monokai-theme-0.0.12}/monokai-theme-autoloads.el (67%) create mode 100644 emacs.d/elpa/monokai-theme-0.0.12/monokai-theme-pkg.el rename emacs.d/elpa/{monokai-theme-0.0.11 => monokai-theme-0.0.12}/monokai-theme.el (91%) diff --git a/emacs.d/elpa/company-0.8.0/.dir-locals.el b/emacs.d/elpa/company-0.8.2/.dir-locals.el similarity index 100% rename from emacs.d/elpa/company-0.8.0/.dir-locals.el rename to emacs.d/elpa/company-0.8.2/.dir-locals.el diff --git a/emacs.d/elpa/company-0.8.0/.gitignore b/emacs.d/elpa/company-0.8.2/.gitignore similarity index 100% rename from emacs.d/elpa/company-0.8.0/.gitignore rename to emacs.d/elpa/company-0.8.2/.gitignore diff --git a/emacs.d/elpa/company-0.8.0/.travis.yml b/emacs.d/elpa/company-0.8.2/.travis.yml similarity index 100% rename from emacs.d/elpa/company-0.8.0/.travis.yml rename to emacs.d/elpa/company-0.8.2/.travis.yml diff --git a/emacs.d/elpa/company-0.8.0/ChangeLog b/emacs.d/elpa/company-0.8.2/ChangeLog similarity index 94% rename from emacs.d/elpa/company-0.8.0/ChangeLog rename to emacs.d/elpa/company-0.8.2/ChangeLog index 870cdbf..3d45fd3 100644 --- a/emacs.d/elpa/company-0.8.0/ChangeLog +++ b/emacs.d/elpa/company-0.8.2/ChangeLog @@ -1,3 +1,19 @@ +2014-07-26 Dmitry Gutov + + Merge commit 'b1d019a4c815ac8bdc240d69eaa74eb4e34640e8' from + company-master + +2014-07-01 Dmitry Gutov + + Merge commit '7c14dedc79bf0c6eaad5bf50b80ea80dd721afdc' from company + + Conflicts: + packages/company/company-pysmell.el + +2014-06-14 Stefan Monnier + + * company/company-capf.el: Don't ignore things like semantic-capf. + 2014-04-19 Dmitry Gutov Merge commit '51c140ca9ee32d27cacc7b2b07d4539bf98ae575' from diff --git a/emacs.d/elpa/company-0.8.0/Makefile b/emacs.d/elpa/company-0.8.2/Makefile similarity index 100% rename from emacs.d/elpa/company-0.8.0/Makefile rename to emacs.d/elpa/company-0.8.2/Makefile diff --git a/emacs.d/elpa/company-0.8.0/NEWS.md b/emacs.d/elpa/company-0.8.2/NEWS.md similarity index 90% rename from emacs.d/elpa/company-0.8.0/NEWS.md rename to emacs.d/elpa/company-0.8.2/NEWS.md index 97dc284..fe1313c 100644 --- a/emacs.d/elpa/company-0.8.0/NEWS.md +++ b/emacs.d/elpa/company-0.8.2/NEWS.md @@ -1,5 +1,27 @@ # History of user-visible changes +## 2014-07-26 (0.8.2) + +* New user option `company-occurrence-weight-function`, allowing to tweak the + behavior of the transformer `company-sort-by-occurrence`. +* Setting `company-idle-delay` to `t` is deprecated. Use the value 0 instead. + +## 2014-07-01 (0.8.1) + +* `company-require-match` is not in effect when the new input doesn't continue + the previous prefix, and that prefix was a match. +* The meaning of `company-begin-commands` value t has slightly changed. +* New transformer, `company-sort-by-backend-importance`. +* When grouped back-ends are used, the back-end of the current candidate is + indicated in the mode-line, enclosed in angle brackets. +* New user option `company-gtags-insert-arguments`, t by default. +* `company-css` knows about CSS3. +* `company-gtags` supports `meta` and `annotation`. +* User option `company-dabbrev-code-other-buffers` can have a new value: `code`. +* New user option `company-tooltip-flip-when-above`. +* `company-clang` uses the standard header search paths by default. +* `C-h` is bound to `company-show-doc-buffer` (like `f1`). + ## 2014-04-19 (0.8.0) * `company-capf` is included in `company-backends` in any supported Emacs diff --git a/emacs.d/elpa/company-0.8.0/README.md b/emacs.d/elpa/company-0.8.2/README.md similarity index 100% rename from emacs.d/elpa/company-0.8.0/README.md rename to emacs.d/elpa/company-0.8.2/README.md diff --git a/emacs.d/elpa/company-0.8.0/company-abbrev.el b/emacs.d/elpa/company-0.8.2/company-abbrev.el similarity index 100% rename from emacs.d/elpa/company-0.8.0/company-abbrev.el rename to emacs.d/elpa/company-0.8.2/company-abbrev.el diff --git a/emacs.d/elpa/company-0.8.0/company-autoloads.el b/emacs.d/elpa/company-0.8.2/company-autoloads.el similarity index 93% rename from emacs.d/elpa/company-0.8.0/company-autoloads.el rename to emacs.d/elpa/company-0.8.2/company-autoloads.el index 07bdfa3..9b671a0 100644 --- a/emacs.d/elpa/company-0.8.0/company-autoloads.el +++ b/emacs.d/elpa/company-0.8.2/company-autoloads.el @@ -4,7 +4,7 @@ ;;;### (autoloads (global-company-mode company-mode) "company" "company.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company.el (autoload 'company-mode "company" "\ @@ -58,7 +58,7 @@ See `company-mode' for more information on Company mode. ;;;*** ;;;### (autoloads (company-abbrev) "company-abbrev" "company-abbrev.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-abbrev.el (autoload 'company-abbrev "company-abbrev" "\ @@ -69,7 +69,7 @@ See `company-mode' for more information on Company mode. ;;;*** ;;;### (autoloads (company-bbdb) "company-bbdb" "company-bbdb.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-bbdb.el (autoload 'company-bbdb "company-bbdb" "\ @@ -79,8 +79,8 @@ See `company-mode' for more information on Company mode. ;;;*** -;;;### (autoloads (company-css) "company-css" "company-css.el" (21404 -;;;;;; 17292 0 0)) +;;;### (autoloads (company-css) "company-css" "company-css.el" (21476 +;;;;;; 47345 0 0)) ;;; Generated autoloads from company-css.el (autoload 'company-css "company-css" "\ @@ -91,7 +91,7 @@ See `company-mode' for more information on Company mode. ;;;*** ;;;### (autoloads (company-dabbrev) "company-dabbrev" "company-dabbrev.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-dabbrev.el (autoload 'company-dabbrev "company-dabbrev" "\ @@ -102,7 +102,7 @@ dabbrev-like `company-mode' completion back-end. ;;;*** ;;;### (autoloads (company-dabbrev-code) "company-dabbrev-code" "company-dabbrev-code.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-dabbrev-code.el (autoload 'company-dabbrev-code "company-dabbrev-code" "\ @@ -115,7 +115,7 @@ comments or strings. ;;;*** ;;;### (autoloads (company-elisp) "company-elisp" "company-elisp.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-elisp.el (autoload 'company-elisp "company-elisp" "\ @@ -126,7 +126,7 @@ comments or strings. ;;;*** ;;;### (autoloads (company-etags) "company-etags" "company-etags.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-etags.el (autoload 'company-etags "company-etags" "\ @@ -137,7 +137,7 @@ comments or strings. ;;;*** ;;;### (autoloads (company-files) "company-files" "company-files.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-files.el (autoload 'company-files "company-files" "\ @@ -148,7 +148,7 @@ comments or strings. ;;;*** ;;;### (autoloads (company-gtags) "company-gtags" "company-gtags.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-gtags.el (autoload 'company-gtags "company-gtags" "\ @@ -159,7 +159,7 @@ comments or strings. ;;;*** ;;;### (autoloads (company-ispell) "company-ispell" "company-ispell.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-ispell.el (autoload 'company-ispell "company-ispell" "\ @@ -170,7 +170,7 @@ comments or strings. ;;;*** ;;;### (autoloads (company-keywords) "company-keywords" "company-keywords.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-keywords.el (autoload 'company-keywords "company-keywords" "\ @@ -181,7 +181,7 @@ comments or strings. ;;;*** ;;;### (autoloads (company-nxml) "company-nxml" "company-nxml.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-nxml.el (autoload 'company-nxml "company-nxml" "\ @@ -192,7 +192,7 @@ comments or strings. ;;;*** ;;;### (autoloads (company-oddmuse) "company-oddmuse" "company-oddmuse.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-oddmuse.el (autoload 'company-oddmuse "company-oddmuse" "\ @@ -203,7 +203,7 @@ comments or strings. ;;;*** ;;;### (autoloads (company-pysmell) "company-pysmell" "company-pysmell.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-pysmell.el (autoload 'company-pysmell "company-pysmell" "\ @@ -215,7 +215,7 @@ This requires pysmell.el and pymacs.el. ;;;*** ;;;### (autoloads (company-semantic) "company-semantic" "company-semantic.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-semantic.el (autoload 'company-semantic "company-semantic" "\ @@ -226,7 +226,7 @@ This requires pysmell.el and pymacs.el. ;;;*** ;;;### (autoloads (company-tempo) "company-tempo" "company-tempo.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-tempo.el (autoload 'company-tempo "company-tempo" "\ @@ -237,7 +237,7 @@ This requires pysmell.el and pymacs.el. ;;;*** ;;;### (autoloads (company-xcode) "company-xcode" "company-xcode.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-xcode.el (autoload 'company-xcode "company-xcode" "\ @@ -248,7 +248,7 @@ This requires pysmell.el and pymacs.el. ;;;*** ;;;### (autoloads (company-yasnippet) "company-yasnippet" "company-yasnippet.el" -;;;;;; (21404 17292 0 0)) +;;;;;; (21476 47345 0 0)) ;;; Generated autoloads from company-yasnippet.el (autoload 'company-yasnippet "company-yasnippet" "\ @@ -281,7 +281,7 @@ shadow back-ends that come after it. Recommended usages: ;;;### (autoloads nil nil ("company-capf.el" "company-clang.el" "company-cmake.el" ;;;;;; "company-eclim.el" "company-elisp-tests.el" "company-pkg.el" ;;;;;; "company-ropemacs.el" "company-template.el" "company-tests.el") -;;;;;; (21404 17292 515561 0)) +;;;;;; (21476 47345 572891 0)) ;;;*** diff --git a/emacs.d/elpa/company-0.8.0/company-bbdb.el b/emacs.d/elpa/company-0.8.2/company-bbdb.el similarity index 100% rename from emacs.d/elpa/company-0.8.0/company-bbdb.el rename to emacs.d/elpa/company-0.8.2/company-bbdb.el diff --git a/emacs.d/elpa/company-0.8.0/company-capf.el b/emacs.d/elpa/company-0.8.2/company-capf.el similarity index 75% rename from emacs.d/elpa/company-0.8.0/company-capf.el rename to emacs.d/elpa/company-0.8.2/company-capf.el index 3aaeb13..e27ae7a 100644 --- a/emacs.d/elpa/company-0.8.0/company-capf.el +++ b/emacs.d/elpa/company-0.8.2/company-capf.el @@ -25,20 +25,16 @@ ;;; Code: +(require 'company) (require 'cl-lib) -(defvar company--capf-data nil) -(make-variable-buffer-local 'company--capf-data) - -(defun company--capf-clear-data (&optional _ignore) - (setq company--capf-data nil) - (remove-hook 'company-completion-cancelled-hook 'company--capf-clear-data t) - (remove-hook 'company-completion-finished-hook 'company--capf-clear-data t)) - (defun company--capf-data () - ;; Ignore tags-completion-at-point-function because it subverts company-etags - ;; in the default value of company-backends, where the latter comes later. - (cl-letf* (((default-value 'completion-at-point-functions) nil) + (cl-letf* (((default-value 'completion-at-point-functions) + ;; Ignore tags-completion-at-point-function because it subverts + ;; company-etags in the default value of company-backends, where + ;; the latter comes later. + (remove 'tags-completion-at-point-function + (default-value 'completion-at-point-functions))) (data (run-hook-wrapped 'completion-at-point-functions ;; Ignore misbehaving functions. #'completion--capf-wrapper 'optimist))) @@ -54,12 +50,9 @@ (when res (if (> (nth 2 res) (point)) 'stop - (setq company--capf-data res) - (add-hook 'company-completion-cancelled-hook 'company--capf-clear-data nil t) - (add-hook 'company-completion-finished-hook 'company--capf-clear-data nil t) (buffer-substring-no-properties (nth 1 res) (point)))))) (`candidates - (let ((res company--capf-data)) + (let ((res (company--capf-data))) (when res (let* ((table (nth 3 res)) (pred (plist-get (nthcdr 4 res) :predicate)) @@ -81,7 +74,7 @@ candidates)) candidates))))) (`sorted - (let ((res company--capf-data)) + (let ((res (company--capf-data))) (when res (let ((meta (completion-metadata (buffer-substring (nth 1 res) (nth 2 res)) @@ -104,28 +97,34 @@ (`no-cache t) ;Not much can be done here, as long as we handle ;non-prefix matches. (`meta - (let ((f (plist-get (nthcdr 4 company--capf-data) :company-docsig))) + (let ((f (plist-get (nthcdr 4 (company--capf-data)) :company-docsig))) (when f (funcall f arg)))) (`doc-buffer - (let ((f (plist-get (nthcdr 4 company--capf-data) :company-doc-buffer))) + (let ((f (plist-get (nthcdr 4 (company--capf-data)) :company-doc-buffer))) (when f (funcall f arg)))) (`location - (let ((f (plist-get (nthcdr 4 company--capf-data) :company-location))) + (let ((f (plist-get (nthcdr 4 (company--capf-data)) :company-location))) (when f (funcall f arg)))) (`annotation (save-excursion ;; FIXME: `company-begin' sets `company-point' after calling ;; `company--begin-new'. We shouldn't rely on `company-point' here, - ;; better to cache the capf-data value instead. + ;; better to cache the capf-data value instead. However: we can't just + ;; save the last capf-data value in `prefix', because that command can + ;; get called more often than `candidates', and at any point in the + ;; buffer (https://github.com/company-mode/company-mode/issues/153). + ;; We could try propertizing the returned prefix string, but it's not + ;; passed to `annotation', and `company-prefix' is set only after + ;; `company--strip-duplicates' is called. (when company-point (goto-char company-point)) - (let ((f (plist-get (nthcdr 4 company--capf-data) :annotation-function))) + (let ((f (plist-get (nthcdr 4 (company--capf-data)) :annotation-function))) (when f (funcall f arg))))) (`require-match - (plist-get (nthcdr 4 company--capf-data) :company-require-match)) + (plist-get (nthcdr 4 (company--capf-data)) :company-require-match)) (`init nil) ;Don't bother: plenty of other ways to initialize the code. (`post-completion - (let* ((res company--capf-data) + (let* ((res (company--capf-data)) (exit-function (plist-get (nthcdr 4 res) :exit-function))) (if exit-function (funcall exit-function arg 'finished)))) diff --git a/emacs.d/elpa/company-0.8.0/company-clang.el b/emacs.d/elpa/company-0.8.2/company-clang.el similarity index 95% rename from emacs.d/elpa/company-0.8.0/company-clang.el rename to emacs.d/elpa/company-0.8.2/company-clang.el index 4f0f318..a1a3251 100644 --- a/emacs.d/elpa/company-0.8.0/company-clang.el +++ b/emacs.d/elpa/company-0.8.2/company-clang.el @@ -61,7 +61,9 @@ or automatically through a custom `company-clang-prefix-guesser'." "Major modes which clang may complete.") (defcustom company-clang-insert-arguments t - "When non-nil, insert function arguments as a template after completion.") + "When non-nil, insert function arguments as a template after completion." + :type 'boolean + :package-version '(company . "0.8.0")) ;; prefix ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -145,9 +147,9 @@ or automatically through a custom `company-clang-prefix-guesser'." (let ((meta (company-clang--meta candidate))) (cond ((null meta) nil) - ((string-match ":" meta) - (substring meta (match-beginning 0))) - ((string-match "\\((.*)\\'\\)" meta) + ((string-match "[^:]:[^:]" meta) + (substring meta (1+ (match-beginning 0)))) + ((string-match "\\((.*)[ a-z]*\\'\\)" meta) (match-string 1 meta))))) (defun company-clang--strip-formatting (text) @@ -217,14 +219,14 @@ or automatically through a custom `company-clang-prefix-guesser'." t)))))) (defsubst company-clang--build-complete-args (pos) - (append '("-cc1" "-fsyntax-only" "-code-completion-macros") + (append '("-fsyntax-only" "-Xclang" "-code-completion-macros") (unless (company-clang--auto-save-p) (list "-x" (company-clang--lang-option))) company-clang-arguments (when (stringp company-clang--prefix) (list "-include" (expand-file-name company-clang--prefix))) - '("-code-completion-at") - (list (company-clang--build-location pos)) + (list "-Xclang" (format "-code-completion-at=%s" + (company-clang--build-location pos))) (list (if (company-clang--auto-save-p) buffer-file-name "-")))) (defun company-clang--candidates (prefix callback) @@ -316,9 +318,9 @@ passed via standard input." (post-completion (let ((anno (company-clang--annotation arg))) (when (and company-clang-insert-arguments anno) (insert anno) - (if (string-match ":" anno) + (if (string-match "\\`:[^:]" anno) (company-clang-objc-templatify anno) - (company-template-c-like-templatify anno))))))) + (company-template-c-like-templatify anno))))))) (provide 'company-clang) ;;; company-clang.el ends here diff --git a/emacs.d/elpa/company-0.8.0/company-cmake.el b/emacs.d/elpa/company-0.8.2/company-cmake.el similarity index 100% rename from emacs.d/elpa/company-0.8.0/company-cmake.el rename to emacs.d/elpa/company-0.8.2/company-cmake.el diff --git a/emacs.d/elpa/company-0.8.0/company-css.el b/emacs.d/elpa/company-0.8.2/company-css.el similarity index 63% rename from emacs.d/elpa/company-0.8.0/company-css.el rename to emacs.d/elpa/company-0.8.2/company-css.el index c4154c2..ec48653 100644 --- a/emacs.d/elpa/company-0.8.0/company-css.el +++ b/emacs.d/elpa/company-0.8.2/company-css.el @@ -1,6 +1,6 @@ -;;; company-css.el --- company-mode completion back-end for css-mode +;;; company-css.el --- company-mode completion back-end for css-mode -*- lexical-binding: t -*- -;; Copyright (C) 2009, 2011 Free Software Foundation, Inc. +;; Copyright (C) 2009, 2011, 2014 Free Software Foundation, Inc. ;; Author: Nikolaj Schumacher @@ -32,7 +32,8 @@ "center-right" "right" "far-right" "right-side" "behind" "leftwards" "rightwards") ("background" background-color background-image background-repeat - background-attachment background-position) + background-attachment background-position + background-clip background-origin background-size) ("background-attachment" "scroll" "fixed") ("background-color" color "transparent") ("background-image" uri "none") @@ -85,13 +86,14 @@ ("elevation" angle "below" "level" "above" "higher" "lower") ("empty-cells" "show" "hide") ("float" "left" "right" "none") - ("font" font-style font-variant font-weight font-size "/" line-height + ("font" font-style font-weight font-size "/" line-height font-family "caption" "icon" "menu" "message-box" "small-caption" - "status-bar") + "status-bar" "normal" "small-caps" + ;; CSS3 + font-stretch) ("font-family" family-name generic-family) ("font-size" absolute-size relative-size length percentage) ("font-style" "normal" "italic" "oblique") - ("font-variant" "normal" "small-caps") ("font-weight" "normal" "bold" "bolder" "lighter" "100" "200" "300" "400" "500" "600" "700" "800" "900") ("height" length percentage "auto") @@ -118,7 +120,9 @@ ("outline-color" color "invert") ("outline-style" border-style) ("outline-width" border-width) - ("overflow" "visible" "hidden" "scroll" "auto") + ("overflow" "visible" "hidden" "scroll" "auto" + ;; CSS3: + "no-display" "no-content") ("padding" padding-width) ("padding-bottom" padding-width) ("padding-left" padding-width) @@ -146,7 +150,6 @@ ("stress" number) ("table-layout" "auto" "fixed") ("text-align" "left" "right" "center" "justify") - ("text-decoration" "none" "underline" "overline" "line-through" "blink") ("text-indent" length percentage) ("text-transform" "capitalize" "uppercase" "lowercase" "none") ("top" length percentage "auto") @@ -162,14 +165,137 @@ ("widows" integer) ("width" length percentage "auto") ("word-spacing" "normal" length) - ("z-index" "auto" integer)) + ("z-index" "auto" integer) + ;; CSS3 + ("align-content" align-stretch "space-between" "space-around") + ("align-items" align-stretch "baseline") + ("align-self" align-items "auto") + ("animation" animation-name animation-duration animation-timing-function + animation-delay animation-iteration-count animation-direction + animation-fill-mode) + ("animation-delay" time) + ("animation-direction" "normal" "reverse" "alternate" "alternate-reverse") + ("animation-duration" time) + ("animation-fill-mode" "none" "forwards" "backwards" "both") + ("animation-iteration-count" integer "infinite") + ("animation-name" "none") + ("animation-play-state" "paused" "running") + ("animation-timing-function" transition-timing-function + "step-start" "step-end" "steps(,)") + ("backface-visibility" "visible" "hidden") + ("background-clip" background-origin) + ("background-origin" "border-box" "padding-box" "content-box") + ("background-size" length percentage "auto" "cover" "contain") + ("border-image" border-image-outset border-image-repeat border-image-source + border-image-slice border-image-width) + ("border-image-outset" length) + ("border-image-repeat" "stretch" "repeat" "round" "space") + ("border-image-source" uri "none") + ("border-image-slice" length) + ("border-image-width" length percentage) + ("border-radius" length) + ("border-top-left-radius" length) + ("border-top-right-radius" length) + ("border-bottom-left-radius" length) + ("border-bottom-right-radius" length) + ("box-decoration-break" "slice" "clone") + ("box-shadow" length color) + ("box-sizing" "content-box" "border-box") + ("break-after" "auto" "always" "avoid" "left" "right" "page" "column" + "avoid-page" "avoid-column") + ("break-before" break-after) + ("break-inside" "avoid" "auto") + ("columns" column-width column-count) + ("column-count" integer) + ("column-fill" "auto" "balance") + ("column-gap" length "normal") + ("column-rule" column-rule-width column-rule-style column-rule-color) + ("column-rule-color" color) + ("column-rule-style" border-style) + ("column-rule-width" border-width) + ("column-span" "all" "none") + ("column-width" length "auto") + ("filter" url "blur()" "brightness()" "contrast()" "drop-shadow()" + "grayscale()" "hue-rotate()" "invert()" "opacity()" "saturate()" "sepia()") + ("flex" flex-grow flex-shrink flex-basis) + ("flex-basis" percentage length "auto") + ("flex-direction" "row" "row-reverse" "column" "column-reverse") + ("flex-flow" flex-direction flex-wrap) + ("flex-grow" number) + ("flex-shrink" number) + ("flex-wrap" "nowrap" "wrap" "wrap-reverse") + ("font-feature-setting" normal string number) + ("font-kerning" "auto" "normal" "none") + ("font-language-override" "normal" string) + ("font-size-adjust" "none" number) + ("font-stretch" "normal" "ultra-condensed" "extra-condensed" "condensed" + "semi-condensed" "semi-expanded" "expanded" "extra-expanded" "ultra-expanded") + ("font-synthesis" "none" "weight" "style") + ("font-variant" font-variant-alternates font-variant-caps + font-variant-east-asian font-variant-ligatures font-variant-numeric + font-variant-position) + ("font-variant-alternates" "normal" "historical-forms" "stylistic()" + "styleset()" "character-variant()" "swash()" "ornaments()" "annotation()") + ("font-variant-caps" "normal" "small-caps" "all-small-caps" "petite-caps" + "all-petite-caps" "unicase" "titling-caps") + ("font-variant-east-asian" "jis78" "jis83" "jis90" "jis04" "simplified" + "traditional" "full-width" "proportional-width" "ruby") + ("font-variant-ligatures" "normal" "none" "common-ligatures" + "no-common-ligatures" "discretionary-ligatures" "no-discretionary-ligatures" + "historical-ligatures" "no-historical-ligatures" "contextual" "no-contextual") + ("font-variant-numeric" "normal" "ordinal" "slashed-zero" + "lining-nums" "oldstyle-nums" "proportional-nums" "tabular-nums" + "diagonal-fractions" "stacked-fractions") + ("font-variant-position" "normal" "sub" "super") + ("hyphens" "none" "manual" "auto") + ("justify-content" align-common "space-between" "space-around") + ("line-break" "auto" "loose" "normal" "strict") + ("marquee-direction" "forward" "reverse") + ("marquee-play-count" integer "infinite") + ("marquee-speed" "slow" "normal" "fast") + ("marquee-style" "scroll" "slide" "alternate") + ("opacity" number) + ("order" number) + ("outline-offset" length) + ("overflow-x" overflow) + ("overflow-y" overflow) + ("overflow-style" "auto" "marquee-line" "marquee-block") + ("overflow-wrap" "normal" "break-word") + ("perspective" "none" length) + ("perspective-origin" percentage length "left" "center" "right" "top" "bottom") + ("resize" "none" "both" "horizontal" "vertical") + ("tab-size" integer length) + ("text-align-last" "auto" "start" "end" "left" "right" "center" "justify") + ("text-decoration" text-decoration-color text-decoration-line text-decoration-style) + ("text-decoration-color" color) + ("text-decoration-line" "none" "underline" "overline" "line-through" "blink") + ("text-decoration-style" "solid" "double" "dotted" "dashed" "wavy") + ("text-overflow" "clip" "ellipsis") + ("text-shadow" color length) + ("text-underline-position" "auto" "under" "left" "right") + ("transform" "matrix(,,,,,)" "translate(,)" "translateX()" "translateY()" + "scale()" "scaleX()" "scaleY()" "rotate()" "skewX()" "skewY()" "none") + ("transform-origin" perspective-origin) + ("transform-style" "flat" "preserve-3d") + ("transition" transition-property transition-duration + transition-timing-function transition-delay) + ("transition-delay" time) + ("transition-duration" time) + ("transition-timing-function" + "ease" "linear" "ease-in" "ease-out" "ease-in-out" "cubic-bezier(,,,)") + ("transition-property" "none" "all" identifier) + ("word-wrap" overflow-wrap) + ("word-break" "normal" "break-all" "keep-all")) "A list of CSS properties and their possible values.") (defconst company-css-value-classes '((absolute-size "xx-small" "x-small" "small" "medium" "large" "x-large" "xx-large") + (align-common "flex-start" "flex-end" "center") + (align-stretch align-common "stretch") (border-style "none" "hidden" "dotted" "dashed" "solid" "double" "groove" "ridge" "inset" "outset") + (border-width "thick" "medium" "thin") (color "aqua" "black" "blue" "fuchsia" "gray" "green" "lime" "maroon" "navy" "olive" "orange" "purple" "red" "silver" "teal" "white" "yellow") (counter "counter(,)") @@ -194,7 +320,10 @@ "li" "link" "map" "menu" "meta" "noframes" "noscript" "object" "ol" "optgroup" "option" "p" "param" "pre" "q" "s" "samp" "script" "select" "small" "span" "strike" "strong" "style" "sub" "sup" "table" "tbody" "td" - "textarea" "tfoot" "th" "thead" "title" "tr" "tt" "u" "ul" "var") + "textarea" "tfoot" "th" "thead" "title" "tr" "tt" "u" "ul" "var" + ;; HTML5 + "section" "article" "aside" "header" "footer" "nav" "figure" "figcaption" + "time" "mark" "main") "A list of HTML tags for use in CSS completion.") (defconst company-css-pseudo-classes @@ -213,10 +342,14 @@ (dolist (child (or (cdr (assoc value company-css-value-classes)) (company-css-property-values (symbol-name value)))) - (add-to-list 'results child)) - (add-to-list 'results value))) + (push child results)) + (push value results))) (setq results (sort results 'string<)) - (puthash attribute results company-css-property-cache) + (puthash attribute + (if (fboundp 'delete-consecutive-dups) + (delete-consecutive-dups results) + (delete-dups results)) + company-css-property-cache) results))) ;;; bracket detection @@ -273,7 +406,7 @@ Returns \"\" if no property found, but feasible at this position." ;;; values (defconst company-css-property-value-regexp - "\\_<\\([[:alpha:]-]+\\):\\(?:[^};]*[[:space:]]+\\)?\\([^};]*\\_>\\|\\)\\=" + "\\_<\\([[:alpha:]-]+\\):\\(?:[^{};]*[[:space:]]+\\)?\\([^{};]*\\_>\\|\\)\\=" "A regular expression matching CSS tags.") ;;;###autoload diff --git a/emacs.d/elpa/company-0.8.0/company-dabbrev-code.el b/emacs.d/elpa/company-0.8.2/company-dabbrev-code.el similarity index 76% rename from emacs.d/elpa/company-0.8.0/company-dabbrev-code.el rename to emacs.d/elpa/company-0.8.2/company-dabbrev-code.el index 1039e4a..371d908 100644 --- a/emacs.d/elpa/company-0.8.0/company-dabbrev-code.el +++ b/emacs.d/elpa/company-0.8.2/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/emacs.d/elpa/company-0.8.0/company-dabbrev.el b/emacs.d/elpa/company-0.8.2/company-dabbrev.el similarity index 86% rename from emacs.d/elpa/company-0.8.0/company-dabbrev.el rename to emacs.d/elpa/company-0.8.2/company-dabbrev.el index 401fcc9..ef63d90 100644 --- a/emacs.d/elpa/company-0.8.0/company-dabbrev.el +++ b/emacs.d/elpa/company-0.8.2/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 @@ -64,7 +64,8 @@ If you set this value to nil, you may also want to set `company-dabbrev-ignore-case' to any value other than `keep-prefix'.") (defcustom company-dabbrev-minimum-length (1+ company-minimum-prefix-length) - "The minimum length for the string to be included.") + "The minimum length for the string to be included." + :type 'integer) (defmacro company-dabrev--time-limit-while (test start limit &rest body) (declare (indent 3) (debug t)) @@ -108,19 +109,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 +136,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))) diff --git a/emacs.d/elpa/company-0.8.0/company-eclim.el b/emacs.d/elpa/company-0.8.2/company-eclim.el similarity index 97% rename from emacs.d/elpa/company-0.8.0/company-eclim.el rename to emacs.d/elpa/company-0.8.2/company-eclim.el index 0eaf382..1f1beae 100644 --- a/emacs.d/elpa/company-0.8.0/company-eclim.el +++ b/emacs.d/elpa/company-0.8.2/company-eclim.el @@ -60,11 +60,9 @@ eclim can only complete correctly when the buffer has been saved." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar company-eclim--project-dir 'unknown) -(make-variable-buffer-local 'company-eclim--project-dir) +(defvar-local company-eclim--project-dir 'unknown) -(defvar company-eclim--project-name nil) -(make-variable-buffer-local 'company-eclim--project-name) +(defvar-local company-eclim--project-name nil) (declare-function json-read "json") (defvar json-array-type) diff --git a/emacs.d/elpa/company-0.8.0/company-elisp-tests.el b/emacs.d/elpa/company-0.8.2/company-elisp-tests.el similarity index 100% rename from emacs.d/elpa/company-0.8.0/company-elisp-tests.el rename to emacs.d/elpa/company-0.8.2/company-elisp-tests.el diff --git a/emacs.d/elpa/company-0.8.0/company-elisp.el b/emacs.d/elpa/company-0.8.2/company-elisp.el similarity index 100% rename from emacs.d/elpa/company-0.8.0/company-elisp.el rename to emacs.d/elpa/company-0.8.2/company-elisp.el diff --git a/emacs.d/elpa/company-0.8.0/company-etags.el b/emacs.d/elpa/company-0.8.2/company-etags.el similarity index 96% rename from emacs.d/elpa/company-0.8.0/company-etags.el rename to emacs.d/elpa/company-0.8.2/company-etags.el index 8634103..c7ba608 100644 --- a/emacs.d/elpa/company-0.8.0/company-etags.el +++ b/emacs.d/elpa/company-0.8.2/company-etags.el @@ -42,13 +42,13 @@ buffer automatically." (defcustom company-etags-ignore-case nil "Non-nil to ignore case in completion candidates." - :type 'boolean) + :type 'boolean + :package-version '(company . "0.7.3")) (defvar company-etags-modes '(prog-mode c-mode objc-mode c++-mode java-mode jde-mode pascal-mode perl-mode python-mode)) -(defvar company-etags-buffer-table 'unknown) -(make-variable-buffer-local 'company-etags-buffer-table) +(defvar-local company-etags-buffer-table 'unknown) (defun company-etags-find-table () (let ((file (locate-dominating-file (or buffer-file-name diff --git a/emacs.d/elpa/company-0.8.0/company-files.el b/emacs.d/elpa/company-0.8.2/company-files.el similarity index 88% rename from emacs.d/elpa/company-0.8.0/company-files.el rename to emacs.d/elpa/company-0.8.2/company-files.el index a839f79..3dc4d86 100644 --- a/emacs.d/elpa/company-0.8.0/company-files.el +++ b/emacs.d/elpa/company-0.8.2/company-files.el @@ -59,17 +59,19 @@ (defun company-files-complete (prefix) (let* ((dir (file-name-directory prefix)) (file (file-name-nondirectory prefix)) - candidates) + candidates directories) (unless (equal dir (car company-files-completion-cache)) (dolist (file (company-files-directory-files dir file)) (setq file (concat dir file)) (push file candidates) (when (file-directory-p file) - ;; Add one level of children. - (dolist (child (company-files-directory-files file "")) - (push (concat file - (unless (eq (aref file (1- (length file))) ?/) "/") - child) candidates)))) + (push file directories))) + (dolist (directory (reverse directories)) + ;; Add one level of children. + (dolist (child (company-files-directory-files directory "")) + (push (concat directory + (unless (eq (aref directory (1- (length directory))) ?/) "/") + child) candidates))) (setq company-files-completion-cache (cons dir (nreverse candidates)))) (all-completions prefix (cdr company-files-completion-cache)))) diff --git a/emacs.d/elpa/company-0.8.0/company-gtags.el b/emacs.d/elpa/company-0.8.2/company-gtags.el similarity index 55% rename from emacs.d/elpa/company-0.8.0/company-gtags.el rename to emacs.d/elpa/company-0.8.2/company-gtags.el index 0ae98d7..d2f1e78 100644 --- a/emacs.d/elpa/company-0.8.0/company-gtags.el +++ b/emacs.d/elpa/company-0.8.2/company-gtags.el @@ -1,6 +1,6 @@ ;;; company-gtags.el --- company-mode completion back-end for GNU Global -;; Copyright (C) 2009-2011 Free Software Foundation, Inc. +;; Copyright (C) 2009-2011, 2014 Free Software Foundation, Inc. ;; Author: Nikolaj Schumacher @@ -41,8 +41,12 @@ 'company-gtags-gnu-global-program-name 'company-gtags-executable "earlier") -(defvar company-gtags--tags-available-p 'unknown) -(make-variable-buffer-local 'company-gtags--tags-available-p) +(defcustom company-gtags-insert-arguments t + "When non-nil, insert function arguments as a template after completion." + :type 'boolean + :package-version '(company . "0.8.1")) + +(defvar-local company-gtags--tags-available-p 'unknown) (defvar company-gtags-modes '(c-mode c++-mode jde-mode java-mode php-mode)) @@ -52,24 +56,32 @@ (locate-dominating-file buffer-file-name "GTAGS")) company-gtags--tags-available-p)) -(defun company-gtags-fetch-tags (prefix) +(defun company-gtags--fetch-tags (prefix) (with-temp-buffer (let (tags) (when (= 0 (call-process company-gtags-executable nil - (list (current-buffer) nil) nil "-c" prefix)) - (goto-char (point-min)) - (split-string (buffer-string) "\n" t))))) - -(defun company-gtags-location (tag) - (with-temp-buffer - (when (= 0 (call-process company-gtags-executable nil - (list (current-buffer) nil) nil "-x" tag)) + (list (current-buffer) nil) nil "-xGq" (concat "^" prefix))) (goto-char (point-min)) - (when (looking-at (concat (regexp-quote tag) - "[ \t]+\\([[:digit:]]+\\)" - "[ \t]+\\([^ \t]+\\)")) - (cons (expand-file-name (match-string 2)) - (string-to-number (match-string 1))))))) + (cl-loop while + (re-search-forward (concat + "^" + "\\([^ ]*\\)" ;; completion + "[ \t]+\\([[:digit:]]+\\)" ;; linum + "[ \t]+\\([^ \t]+\\)" ;; file + "[ \t]+\\(.*\\)" ;; definition + "$" + ) nil t) + collect + (propertize (match-string 1) + 'meta (match-string 4) + 'location (cons (expand-file-name (match-string 3)) + (string-to-number (match-string 2))) + )))))) + +(defun company-gtags--annotation (arg) + (let ((meta (get-text-property 0 'meta arg))) + (when (string-match (concat arg "\\((.*)\\).*") meta) + (match-string 1 meta)))) ;;;###autoload (defun company-gtags (command &optional arg &rest ignored) @@ -82,9 +94,16 @@ (not (company-in-string-or-comment)) (company-gtags--tags-available-p) (or (company-grab-symbol) 'stop))) - (candidates (company-gtags-fetch-tags arg)) + (candidates (company-gtags--fetch-tags arg)) (sorted t) - (location (company-gtags-location arg)))) + (duplicates t) + (annotation (company-gtags--annotation arg)) + (meta (get-text-property 0 'meta arg)) + (location (get-text-property 0 'location arg)) + (post-completion (let ((anno (company-gtags--annotation arg))) + (when (and company-gtags-insert-arguments anno) + (insert anno) + (company-template-c-like-templatify anno)))))) (provide 'company-gtags) ;;; company-gtags.el ends here diff --git a/emacs.d/elpa/company-0.8.0/company-ispell.el b/emacs.d/elpa/company-0.8.2/company-ispell.el similarity index 100% rename from emacs.d/elpa/company-0.8.0/company-ispell.el rename to emacs.d/elpa/company-0.8.2/company-ispell.el diff --git a/emacs.d/elpa/company-0.8.0/company-keywords.el b/emacs.d/elpa/company-0.8.2/company-keywords.el similarity index 99% rename from emacs.d/elpa/company-0.8.0/company-keywords.el rename to emacs.d/elpa/company-0.8.2/company-keywords.el index c700af7..f426c06 100644 --- a/emacs.d/elpa/company-0.8.0/company-keywords.el +++ b/emacs.d/elpa/company-0.8.2/company-keywords.el @@ -210,6 +210,7 @@ ;; aliases (js2-mode . javascript-mode) (espresso-mode . javascript-mode) + (js-mode . javascript-mode) (cperl-mode . perl-mode) (jde-mode . java-mode)) "Alist mapping major-modes to sorted keywords for `company-keywords'.") diff --git a/emacs.d/elpa/company-0.8.0/company-nxml.el b/emacs.d/elpa/company-0.8.2/company-nxml.el similarity index 100% rename from emacs.d/elpa/company-0.8.0/company-nxml.el rename to emacs.d/elpa/company-0.8.2/company-nxml.el diff --git a/emacs.d/elpa/company-0.8.0/company-oddmuse.el b/emacs.d/elpa/company-0.8.2/company-oddmuse.el similarity index 100% rename from emacs.d/elpa/company-0.8.0/company-oddmuse.el rename to emacs.d/elpa/company-0.8.2/company-oddmuse.el diff --git a/emacs.d/elpa/company-0.8.0/company-pkg.el b/emacs.d/elpa/company-0.8.2/company-pkg.el similarity index 73% rename from emacs.d/elpa/company-0.8.0/company-pkg.el rename to emacs.d/elpa/company-0.8.2/company-pkg.el index 599c262..f707dcf 100644 --- a/emacs.d/elpa/company-0.8.0/company-pkg.el +++ b/emacs.d/elpa/company-0.8.2/company-pkg.el @@ -1,2 +1,2 @@ ;; Generated package description from company.el -(define-package "company" "0.8.0" "Modular text completion framework" '((emacs "24.1") (cl-lib "0.5")) :url "http://company-mode.github.io/" :keywords '("abbrev" "convenience" "matching")) +(define-package "company" "0.8.2" "Modular text completion framework" '((emacs "24.1") (cl-lib "0.5")) :url "http://company-mode.github.io/" :keywords '("abbrev" "convenience" "matching")) diff --git a/emacs.d/elpa/company-0.8.0/company-pysmell.el b/emacs.d/elpa/company-0.8.2/company-pysmell.el similarity index 95% rename from emacs.d/elpa/company-0.8.0/company-pysmell.el rename to emacs.d/elpa/company-0.8.2/company-pysmell.el index 2f22bf0..8a69e76 100644 --- a/emacs.d/elpa/company-0.8.0/company-pysmell.el +++ b/emacs.d/elpa/company-0.8.2/company-pysmell.el @@ -28,10 +28,10 @@ ;;; Code: (if t (require 'pysmell)) ;Don't load during compilation. +(require 'company) (require 'cl-lib) -(defvar company-pysmell--available-p 'unknown) -(make-variable-buffer-local 'company-pysmell--available-p) +(defvar-local company-pysmell--available-p 'unknown) (defun company-pysmell--available-p () (if (eq company-pysmell--available-p 'unknown) diff --git a/emacs.d/elpa/company-0.8.0/company-ropemacs.el b/emacs.d/elpa/company-0.8.2/company-ropemacs.el similarity index 100% rename from emacs.d/elpa/company-0.8.0/company-ropemacs.el rename to emacs.d/elpa/company-0.8.2/company-ropemacs.el diff --git a/emacs.d/elpa/company-0.8.0/company-semantic.el b/emacs.d/elpa/company-0.8.2/company-semantic.el similarity index 98% rename from emacs.d/elpa/company-0.8.0/company-semantic.el rename to emacs.d/elpa/company-0.8.2/company-semantic.el index 110d4fd..6c020a3 100644 --- a/emacs.d/elpa/company-0.8.0/company-semantic.el +++ b/emacs.d/elpa/company-0.8.2/company-semantic.el @@ -49,9 +49,8 @@ (defvar company-semantic-modes '(c-mode c++-mode jde-mode java-mode)) -(defvar company-semantic--current-tags nil +(defvar-local company-semantic--current-tags nil "Tags for the current context.") -(make-variable-buffer-local 'company-semantic--current-tags) (defun company-semantic-documentation-for-tag (tag) (when (semantic-tag-buffer tag) diff --git a/emacs.d/elpa/company-0.8.0/company-template.el b/emacs.d/elpa/company-0.8.2/company-template.el similarity index 98% rename from emacs.d/elpa/company-0.8.0/company-template.el rename to emacs.d/elpa/company-0.8.2/company-template.el index d689183..576b246 100644 --- a/emacs.d/elpa/company-0.8.0/company-template.el +++ b/emacs.d/elpa/company-0.8.2/company-template.el @@ -35,8 +35,7 @@ (define-key keymap (kbd "TAB") 'company-template-forward-field) keymap)) -(defvar company-template--buffer-templates nil) -(make-variable-buffer-local 'company-template--buffer-templates) +(defvar-local company-template--buffer-templates nil) ;; interactive ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/emacs.d/elpa/company-0.8.0/company-tempo.el b/emacs.d/elpa/company-0.8.2/company-tempo.el similarity index 100% rename from emacs.d/elpa/company-0.8.0/company-tempo.el rename to emacs.d/elpa/company-0.8.2/company-tempo.el diff --git a/emacs.d/elpa/company-0.8.0/company-tests.el b/emacs.d/elpa/company-0.8.2/company-tests.el similarity index 88% rename from emacs.d/elpa/company-0.8.0/company-tests.el rename to emacs.d/elpa/company-0.8.2/company-tests.el index abd9704..005bf3a 100644 --- a/emacs.d/elpa/company-0.8.0/company-tests.el +++ b/emacs.d/elpa/company-0.8.2/company-tests.el @@ -99,6 +99,22 @@ (candidates '("c" "d"))))))) (should (equal (company-call-backend 'candidates "z") '("a" "b" "c" "d"))))) +(ert-deftest company-multi-backend-filters-backends-by-prefix () + (let ((company-backend + (list (lambda (command &optional arg &rest ignore) + (cl-case command + (prefix (cons "z" t)) + (candidates '("a" "b")))) + (lambda (command &optional arg &rest ignore) + (cl-case command + (prefix "t") + (candidates '("c" "d")))) + (lambda (command &optional arg &rest ignore) + (cl-case command + (prefix "z") + (candidates '("e" "f"))))))) + (should (equal (company-call-backend 'candidates "z") '("a" "b" "e" "f"))))) + (ert-deftest company-multi-backend-remembers-candidate-backend () (let ((company-backend (list (lambda (command &optional arg) @@ -183,6 +199,7 @@ (insert "ab") (company-mode) (let (company-frontends + (company-minimum-prefix-length 2) (company-require-match 'company-explicit-action-p) (company-backends (list (lambda (command &optional arg) @@ -191,11 +208,35 @@ (candidates '("abc" "abd"))))))) (company-idle-begin (current-buffer) (selected-window) (buffer-chars-modified-tick) (point)) + (should (eq 2 company-candidates-length)) (let ((last-command-event ?e)) (company-call 'self-insert-command 1)) (should (eq nil company-candidates-length)) (should (eq 4 (point)))))) +(ert-deftest company-dont-require-match-if-old-prefix-ended-and-was-a-match () + (with-temp-buffer + (insert "ab") + (company-mode) + (let (company-frontends + (company-require-match 'company-explicit-action-p) + (company-backends + (list (lambda (command &optional arg) + (cl-case command + (prefix (company-grab-word)) + (candidates '("abc" "ab" "abd")) + (sorted t)))))) + (let (this-command) + (company-complete)) + (let ((last-command-event ?e)) + (company-call 'self-insert-command 1)) + (should (eq 3 company-candidates-length)) + (should (eq 3 (point))) + (let ((last-command-event ? )) + (company-call 'self-insert-command 1)) + (should (null company-candidates-length)) + (should (eq 4 (point)))))) + (ert-deftest company-should-complete-whitelist () (with-temp-buffer (insert "ab") @@ -265,6 +306,7 @@ (let (company-frontends (company-auto-complete 'company-explicit-action-p) (company-auto-complete-chars '(? )) + (company-minimum-prefix-length 2) (company-backends (list (lambda (command &optional arg) (cl-case command @@ -376,6 +418,24 @@ (should (string= (overlay-get ov 'company-after) " 123 \nc 45 c\nddd\n"))))))) +(ert-deftest company-pseudo-tooltip-edit-updates-width () + :tags '(interactive) + (with-temp-buffer + (set-window-buffer nil (current-buffer)) + (let ((company-candidates-length 5) + (company-candidates '("123" "45" "67" "89" "1011")) + (company-backend 'ignore) + (company-tooltip-limit 4) + (company-tooltip-offset-display 'scrollbar)) + (company-pseudo-tooltip-show (company--row) + (company--column) + 0) + (should (eq (overlay-get company-pseudo-tooltip-overlay 'company-width) + 6)) + (company-pseudo-tooltip-edit 4) + (should (eq (overlay-get company-pseudo-tooltip-overlay 'company-width) + 7))))) + (ert-deftest company-preview-show-with-annotations () :tags '(interactive) (with-temp-buffer @@ -401,7 +461,7 @@ (cdr (assoc arg '(("123" . "(4)"))))))) (company-candidates '("123" "45")) company-tooltip-align-annotations) - (company-pseudo-tooltip-show-at-point (point)) + (company-pseudo-tooltip-show-at-point (point) 0) (let ((ov company-pseudo-tooltip-overlay)) ;; With margins. (should (eq (overlay-get ov 'company-width) 8)) @@ -422,7 +482,7 @@ ("67" . "(891011)"))))))) (company-candidates '("123" "45" "67")) (company-tooltip-align-annotations t)) - (company-pseudo-tooltip-show-at-point (point)) + (company-pseudo-tooltip-show-at-point (point) 0) (let ((ov company-pseudo-tooltip-overlay)) ;; With margins. (should (eq (overlay-get ov 'company-width) 13)) @@ -548,6 +608,7 @@ (with-temp-buffer (company-mode) (let (company-frontends + company-transformers (company-backends (list 'company-async-backend))) (company-manual-begin) (should (equal "foo" company-prefix)) @@ -557,6 +618,7 @@ (with-temp-buffer (company-mode) (let (company-frontends + company-transformers (company-backends (list 'company-async-backend))) (company-idle-begin (current-buffer) (selected-window) (buffer-chars-modified-tick) (point)) @@ -575,7 +637,6 @@ (should (null company-candidates)) (insert "a") (sleep-for 0.1) - (should (null company-prefix)) (should (null company-candidates))))) (ert-deftest company-idle-begin-async-allows-immediate-callbacks () @@ -653,6 +714,44 @@ (let ((company-backend (list immediate))) (should (equal '("f") (company-call-backend 'candidates "foo"))))))) +;;; Transformers + +(ert-deftest company-occurrence-prefer-closest-above () + (with-temp-buffer + (save-window-excursion + (set-window-buffer nil (current-buffer)) + (insert "foo0 +foo1 +") + (save-excursion + (insert " +foo3 +foo2")) + (let ((company-backend 'company-dabbrev) + (company-occurrence-weight-function + 'company-occurrence-prefer-closest-above)) + (should (equal '("foo1" "foo0" "foo3" "foo2" "foo4") + (company-sort-by-occurrence + '("foo0" "foo1" "foo2" "foo3" "foo4")))))))) + +(ert-deftest company-occurrence-prefer-any-closest () + (with-temp-buffer + (save-window-excursion + (set-window-buffer nil (current-buffer)) + (insert "foo0 +foo1 +") + (save-excursion + (insert " +foo3 +foo2")) + (let ((company-backend 'company-dabbrev) + (company-occurrence-weight-function + 'company-occurrence-prefer-any-closest)) + (should (equal '("foo1" "foo3" "foo0" "foo2" "foo4") + (company-sort-by-occurrence + '("foo0" "foo1" "foo2" "foo3" "foo4")))))))) + ;;; Template (ert-deftest company-template-removed-after-the-last-jump () diff --git a/emacs.d/elpa/company-0.8.0/company-xcode.el b/emacs.d/elpa/company-0.8.2/company-xcode.el similarity index 98% rename from emacs.d/elpa/company-0.8.0/company-xcode.el rename to emacs.d/elpa/company-0.8.2/company-xcode.el index 7a985aa..91ae60b 100644 --- a/emacs.d/elpa/company-0.8.0/company-xcode.el +++ b/emacs.d/elpa/company-0.8.2/company-xcode.el @@ -62,8 +62,7 @@ valid in most contexts." (const "Structure") (const "Type") (const "Union") (const "Variable") (const "Function"))) -(defvar company-xcode-project 'unknown) -(make-variable-buffer-local 'company-xcode-project) +(defvar-local company-xcode-project 'unknown) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/emacs.d/elpa/company-0.8.0/company-yasnippet.el b/emacs.d/elpa/company-0.8.2/company-yasnippet.el similarity index 95% rename from emacs.d/elpa/company-0.8.0/company-yasnippet.el rename to emacs.d/elpa/company-0.8.2/company-yasnippet.el index 4730b21..741a160 100644 --- a/emacs.d/elpa/company-0.8.0/company-yasnippet.el +++ b/emacs.d/elpa/company-0.8.2/company-yasnippet.el @@ -82,7 +82,10 @@ shadow back-ends that come after it. Recommended usages: ;; How many trigger keys start with non-symbol characters anyway? (and yas-minor-mode (company-grab-symbol))) - (annotation (concat " -> " (get-text-property 0 'yas-annotation arg))) + (annotation + (concat + (unless company-tooltip-align-annotations " -> ") + (get-text-property 0 'yas-annotation arg))) (candidates (company-yasnippet--candidates arg)) (post-completion (let ((template (get-text-property 0 'yas-template arg))) diff --git a/emacs.d/elpa/company-0.8.0/company.el b/emacs.d/elpa/company-0.8.2/company.el similarity index 86% rename from emacs.d/elpa/company-0.8.0/company.el rename to emacs.d/elpa/company-0.8.2/company.el index 632b7dc..7b48347 100644 --- a/emacs.d/elpa/company-0.8.0/company.el +++ b/emacs.d/elpa/company-0.8.2/company.el @@ -5,7 +5,7 @@ ;; Author: Nikolaj Schumacher ;; Maintainer: Dmitry Gutov ;; URL: http://company-mode.github.io/ -;; Version: 0.8.0 +;; Version: 0.8.2 ;; Keywords: abbrev, convenience, matching ;; Package-Requires: ((emacs "24.1") (cl-lib "0.5")) @@ -81,6 +81,19 @@ (add-to-list 'debug-ignored-errors "^Cannot complete at point$") (add-to-list 'debug-ignored-errors "^No other back-end$") +;;; Compatibility +(eval-and-compile + ;; `defvar-local' for Emacs 24.2 and below + (unless (fboundp 'defvar-local) + (defmacro defvar-local (var val &optional docstring) + "Define VAR as a buffer-local variable with default value VAL. +Like `defvar' but additionally marks the variable as being automatically +buffer-local wherever it is set." + (declare (debug defvar) (doc-string 3)) + `(progn + (defvar ,var ,val ,docstring) + (make-variable-buffer-local ',var))))) + (defgroup company nil "Extensible inline text completion mechanism" :group 'abbrev @@ -180,23 +193,22 @@ "Face used for the common part of completions in the echo area.") (defun company-frontends-set (variable value) - ;; uniquify - (let ((remainder value)) - (setcdr remainder (delq (car remainder) (cdr remainder)))) - (and (memq 'company-pseudo-tooltip-unless-just-one-frontend value) - (memq 'company-pseudo-tooltip-frontend value) - (error "Pseudo tooltip frontend cannot be used twice")) - (and (memq 'company-preview-if-just-one-frontend value) - (memq 'company-preview-frontend value) - (error "Preview frontend cannot be used twice")) - (and (memq 'company-echo value) - (memq 'company-echo-metadata-frontend value) - (error "Echo area cannot be used twice")) - ;; preview must come last - (dolist (f '(company-preview-if-just-one-frontend company-preview-frontend)) - (when (memq f value) - (setq value (append (delq f value) (list f))))) - (set variable value)) + ;; Uniquify. + (let ((value (delete-dups (copy-sequence value)))) + (and (memq 'company-pseudo-tooltip-unless-just-one-frontend value) + (memq 'company-pseudo-tooltip-frontend value) + (error "Pseudo tooltip frontend cannot be used twice")) + (and (memq 'company-preview-if-just-one-frontend value) + (memq 'company-preview-frontend value) + (error "Preview frontend cannot be used twice")) + (and (memq 'company-echo value) + (memq 'company-echo-metadata-frontend value) + (error "Echo area cannot be used twice")) + ;; Preview must come last. + (dolist (f '(company-preview-if-just-one-frontend company-preview-frontend)) + (when (cdr (memq f value)) + (setq value (append (delq f value) (list f))))) + (set variable value))) (defcustom company-frontends '(company-pseudo-tooltip-unless-just-one-frontend company-preview-if-just-one-frontend @@ -236,7 +248,7 @@ The visualized data is stored in `company-prefix', `company-candidates', (function :tag "custom function" nil)))) (defcustom company-tooltip-limit 10 - "The maximum number of candidates in the tooltip" + "The maximum number of candidates in the tooltip." :type 'integer) (defcustom company-tooltip-minimum 6 @@ -247,7 +259,8 @@ If this many lines are not available, prefer to display the tooltip above." (defcustom company-tooltip-minimum-width 0 "The minimum width of the tooltip's inner area. This doesn't include the margins and the scroll bar." - :type 'integer) + :type 'integer + :package-version '(company . "0.8.0")) (defcustom company-tooltip-margin 1 "Width of margin columns to show around the toolip." @@ -262,7 +275,13 @@ This doesn't include the margins and the scroll bar." (defcustom company-tooltip-align-annotations nil "When non-nil, align annotations to the right tooltip border." - :type 'boolean) + :type 'boolean + :package-version '(company . "0.7.1")) + +(defcustom company-tooltip-flip-when-above nil + "Whether to flip the tooltip when it's above the current line." + :type 'boolean + :package-version '(company . "0.8.1")) (defvar company-safe-backends '((company-abbrev . "Abbrev") @@ -309,6 +328,11 @@ This doesn't include the margins and the scroll bar." company-oddmuse company-files company-dabbrev) "The list of active back-ends (completion engines). +Only one back-end is used at a time. The choice depends on the order of +the items in this list, and on the values they return in response to the +`prefix' command (see below). But a back-end can also be a \"grouped\" +one (see below). + `company-begin-backend' can be used to start a specific back-end, `company-other-backend' will skip to the next matching back-end in the list. @@ -319,7 +343,7 @@ of the following: `prefix': The back-end should return the text to be completed. It must be text immediately before point. Returning nil passes control to the next back-end. The function should return `stop' if it should complete but -cannot \(e.g. if it is in the middle of a string\). Instead of a string, +cannot (e.g. if it is in the middle of a string). Instead of a string, the back-end may return a cons where car is the prefix and cdr is used in `company-minimum-prefix-length' test. It must be either number or t, and in the latter case the test automatically succeeds. @@ -432,6 +456,8 @@ Each function gets called with the return value of the previous one." :type '(choice (const :tag "None" nil) (const :tag "Sort by occurrence" (company-sort-by-occurrence)) + (const :tag "Sort by back-end importance" + (company-sort-by-backend-importance)) (repeat :tag "User defined" (function)))) (defcustom company-completion-started-hook nil @@ -462,7 +488,8 @@ back-end, consider using the `post-completion' command instead." "If enabled, cancel a manually started completion when the prefix gets shorter than both `company-minimum-prefix-length' and the length of the prefix it was started from." - :type 'boolean) + :type 'boolean + :package-version '(company . "0.8.0")) (defcustom company-require-match 'company-explicit-action-p "If enabled, disallow non-matching input. @@ -517,16 +544,16 @@ A character that is part of a valid candidate never triggers auto-completion." (defcustom company-idle-delay .5 "The idle delay in seconds until completion starts automatically. -A value of nil means no idle completion, t means show candidates -immediately when a prefix of `company-minimum-prefix-length' is reached." +The prefix still has to satisfy `company-minimum-prefix-length' before that +happens. The value of nil means no idle completion." :type '(choice (const :tag "never (nil)" nil) - (const :tag "immediate (t)" t) + (const :tag "immediate (0)" 0) (number :tag "seconds"))) (defcustom company-begin-commands '(self-insert-command org-self-insert-command) "A list of commands after which idle completion is allowed. -If this is t, it can show completions after any command. See -`company-idle-delay'. +If this is t, it can show completions after any command except a few from a +pre-defined list. See `company-idle-delay'. Alternatively, any command with a non-nil `company-begin' property is treated as if it was on this list." @@ -594,12 +621,15 @@ asynchronous call into synchronous.") (define-key keymap [tab] 'company-complete-common) (define-key keymap (kbd "TAB") 'company-complete-common) (define-key keymap (kbd "") 'company-show-doc-buffer) + (define-key keymap (kbd "C-h") 'company-show-doc-buffer) (define-key keymap "\C-w" 'company-show-location) (define-key keymap "\C-s" 'company-search-candidates) (define-key keymap "\C-\M-s" 'company-filter-candidates) (dotimes (i 10) (define-key keymap (vector (+ (aref (kbd "M-0") 0) i)) - `(lambda () (interactive) (company-complete-number ,i)))) + `(lambda () + (interactive) + (company-complete-number ,(if (zerop i) 10 i))))) keymap) "Keymap that is enabled during an active completion.") @@ -632,8 +662,7 @@ asynchronous call into synchronous.") (defvar company-default-lighter " company") -(defvar company-lighter company-default-lighter) -(make-variable-buffer-local 'company-lighter) +(defvar-local company-lighter company-default-lighter) ;;;###autoload (define-minor-mode company-mode @@ -663,6 +692,9 @@ keymap during active completions (`company-active-map'): nil company-lighter company-mode-map (if company-mode (progn + (when (eq company-idle-delay t) + (setq company-idle-delay 0) + (warn "Setting `company-idle-delay' to t is deprecated. Set it to 0 instead.")) (add-hook 'pre-command-hook 'company-pre-command nil t) (add-hook 'post-command-hook 'company-post-command nil t) (mapc 'company-init-backend company-backends)) @@ -707,8 +739,7 @@ means that `company-mode' is always turned on except in `message-mode' buffers." ;;; keymaps ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar company-my-keymap nil) -(make-variable-buffer-local 'company-my-keymap) +(defvar-local company-my-keymap nil) (defvar company-emulation-alist '((t . nil))) @@ -762,8 +793,7 @@ means that `company-mode' is always turned on except in `message-mode' buffers." ;;; backends ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar company-backend nil) -(make-variable-buffer-local 'company-backend) +(defvar-local company-backend nil) (defun company-grab (regexp &optional expression limit) (when (looking-back regexp limit) @@ -858,7 +888,8 @@ means that `company-mode' is always turned on except in `message-mode' buffers." (defun company--multi-backend-adapter-candidates (backends prefix) (let ((pairs (cl-loop for backend in (cdr backends) - when (equal (funcall backend 'prefix) + when (equal (company--prefix-str + (funcall backend 'prefix)) prefix) collect (cons (funcall backend 'candidates prefix) (let ((b backend)) @@ -867,7 +898,7 @@ means that `company-mode' is always turned on except in `message-mode' buffers." (lambda (str) (propertize str 'company-backend b)) candidates))))))) - (when (equal (funcall (car backends) 'prefix) prefix) + (when (equal (company--prefix-str (funcall (car backends) 'prefix)) prefix) ;; Small perf optimization: don't tag the candidates received ;; from the first backend in the group. (push (cons (funcall (car backends) 'candidates prefix) @@ -906,53 +937,43 @@ means that `company-mode' is always turned on except in `message-mode' buffers." (setcar cell (funcall mapper res)) (funcall finisher))))))))))))) +(defun company--prefix-str (prefix) + (or (car-safe prefix) prefix)) + ;;; completion mechanism ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar company-prefix nil) -(make-variable-buffer-local 'company-prefix) +(defvar-local company-prefix nil) -(defvar company-candidates nil) -(make-variable-buffer-local 'company-candidates) +(defvar-local company-candidates nil) -(defvar company-candidates-length nil) -(make-variable-buffer-local 'company-candidates-length) +(defvar-local company-candidates-length nil) -(defvar company-candidates-cache nil) -(make-variable-buffer-local 'company-candidates-cache) +(defvar-local company-candidates-cache nil) -(defvar company-candidates-predicate nil) -(make-variable-buffer-local 'company-candidates-predicate) +(defvar-local company-candidates-predicate nil) -(defvar company-common nil) -(make-variable-buffer-local 'company-common) +(defvar-local company-common nil) -(defvar company-selection 0) -(make-variable-buffer-local 'company-selection) +(defvar-local company-selection 0) -(defvar company-selection-changed nil) -(make-variable-buffer-local 'company-selection-changed) +(defvar-local company-selection-changed nil) -(defvar company--manual-action nil +(defvar-local company--manual-action nil "Non-nil, if manual completion took place.") -(make-variable-buffer-local 'company--manual-action) -(defvar company--manual-prefix nil) -(make-variable-buffer-local 'company--manual-prefix) +(defvar-local company--manual-prefix nil) (defvar company--auto-completion nil "Non-nil when current candidate is being inserted automatically. Controlled by `company-auto-complete'.") -(defvar company--point-max nil) -(make-variable-buffer-local 'company--point-max) +(defvar-local company--point-max nil) -(defvar company-point nil) -(make-variable-buffer-local 'company-point) +(defvar-local company-point nil) (defvar company-timer nil) -(defvar company-added-newline nil) -(make-variable-buffer-local 'company-added-newline) +(defvar-local company-added-newline nil) (defsubst company-strip-prefix (str) (substring str (length company-prefix))) @@ -992,15 +1013,12 @@ can retrieve meta-data for them." candidate)) (defun company--should-complete () - (and (not (or buffer-read-only overriding-terminal-local-map + (and (eq company-idle-delay 'now) + (not (or buffer-read-only overriding-terminal-local-map overriding-local-map)) ;; Check if in the middle of entering a key combination. (or (equal (this-command-keys-vector) []) (not (keymapp (key-binding (this-command-keys-vector))))) - (eq company-idle-delay t) - (or (eq t company-begin-commands) - (memq this-command company-begin-commands) - (and (symbolp this-command) (get this-command 'company-begin))) (not (and transient-mark-mode mark-active)))) (defun company--should-continue () @@ -1010,7 +1028,8 @@ can retrieve meta-data for them." (not (memq this-command (cdr company-continue-commands))) (or (memq this-command company-begin-commands) (memq this-command company-continue-commands) - (string-match-p "\\`company-" (symbol-name this-command)))))) + (and (symbolp this-command) + (string-match-p "\\`company-" (symbol-name this-command))))))) (defun company-call-frontends (command) (dolist (frontend company-frontends) @@ -1025,10 +1044,20 @@ can retrieve meta-data for them." (mod selection company-candidates-length) (max 0 (min (1- company-candidates-length) selection)))) (when (or force-update (not (equal selection company-selection))) + (company--update-group-lighter (nth selection company-candidates)) (setq company-selection selection company-selection-changed t) (company-call-frontends 'update))) +(defun company--update-group-lighter (candidate) + (when (listp company-backend) + (let ((backend (or (get-text-property 0 'company-backend candidate) + (car company-backend)))) + (when (and backend (symbolp backend)) + (let ((name (replace-regexp-in-string "company-\\|-company" "" + (symbol-name backend)))) + (setq company-lighter (format " company-<%s>" name))))))) + (defun company-apply-predicate (candidates predicate) (let (new) (dolist (c candidates) @@ -1112,7 +1141,7 @@ can retrieve meta-data for them." (cdr c) (lambda (candidates) (if (not (and candidates (eq res 'done))) - ;; Fetcher called us right back. + ;; Fetcher called us back right away. (setq res candidates) (setq company-backend backend company-candidates-cache @@ -1162,43 +1191,92 @@ can retrieve meta-data for them." (setq c (funcall tr c))) c)) +(defcustom company-occurrence-weight-function + #'company-occurrence-prefer-closest-above + "Function to weigh matches in `company-sort-by-occurrence'. +It's called with three arguments: cursor position, the beginning and the +end of the match." + :type '(choice + (const :tag "First above point, then below point" + company-occurrence-prefer-closest-above) + (const :tag "Prefer closest in any direction" + company-occurrence-prefer-any-closest))) + +(defun company-occurrence-prefer-closest-above (pos match-beg match-end) + "Give priority to the matches above point, then those below point." + (if (< match-beg pos) + (- pos match-end) + (- match-beg (window-start)))) + +(defun company-occurrence-prefer-any-closest (pos _match-beg match-end) + "Give priority to the matches closest to the point." + (abs (- pos match-end))) + (defun company-sort-by-occurrence (candidates) "Sort CANDIDATES according to their occurrences. Searches for each in the currently visible part of the current buffer and -gives priority to the closest ones above point, then closest ones below -point. The rest of the list is appended unchanged. +prioritizes the matches according to `company-occurrence-weight-function'. +The rest of the list is appended unchanged. Keywords and function definition names are ignored." - (let* (occurs + (let* ((w-start (window-start)) + (w-end (window-end)) + (start-point (point)) + occurs (noccurs - (cl-delete-if - (lambda (candidate) - (when (or - (save-excursion - (progn (forward-line 0) - (search-backward candidate (window-start) t))) - (save-excursion - (search-forward candidate (window-end) t))) - (let ((beg (match-beginning 0)) - (end (match-end 0))) - (when (save-excursion - (goto-char end) - (and (not (memq (get-text-property (point) 'face) - '(font-lock-function-name-face - font-lock-keyword-face))) - (let* ((prefix (company-call-backend 'prefix)) - (prefix (or (car-safe prefix) prefix))) - (and (stringp prefix) - (= (length prefix) (- end beg)))))) - (push (cons candidate (if (< beg (point)) - (- (point) end) - (- beg (window-start)))) - occurs) - t)))) - candidates))) + (save-excursion + (cl-delete-if + (lambda (candidate) + (when (catch 'done + (goto-char w-start) + (while (search-forward candidate w-end t) + (when (and (not (eq (point) start-point)) + (save-match-data + (company--occurrence-predicate))) + (throw 'done t)))) + (push + (cons candidate + (funcall company-occurrence-weight-function + start-point + (match-beginning 0) + (match-end 0))) + occurs) + t)) + candidates)))) (nconc (mapcar #'car (sort occurs (lambda (e1 e2) (<= (cdr e1) (cdr e2))))) noccurs))) +(defun company--occurrence-predicate () + (let ((beg (match-beginning 0)) + (end (match-end 0))) + (save-excursion + (goto-char end) + (and (not (memq (get-text-property (1- (point)) 'face) + '(font-lock-function-name-face + font-lock-keyword-face))) + (let ((prefix (company--prefix-str + (company-call-backend 'prefix)))) + (and (stringp prefix) + (= (length prefix) (- end beg)))))))) + +(defun company-sort-by-backend-importance (candidates) + "Sort CANDIDATES as two priority groups. +If `company-backend' is a function, do nothing. If it's a list, move +candidates from back-ends before keyword `:with' to the front. Candidates +from the rest of the back-ends in the group, if any, will be left at the end." + (if (functionp company-backend) + candidates + (let ((low-priority (cdr (memq :with company-backend)))) + (if (null low-priority) + candidates + (sort candidates + (lambda (c1 c2) + (and + (let ((b2 (get-text-property 0 'company-backend c2))) + (and b2 (memq b2 low-priority))) + (let ((b1 (get-text-property 0 'company-backend c1))) + (or (not b1) (not (memq b1 low-priority))))))))))) + (defun company-idle-begin (buf win tick pos) (and (eq buf (current-buffer)) (eq win (selected-window)) @@ -1212,10 +1290,9 @@ Keywords and function definition names are ignored." (defun company-auto-begin () (and company-mode (not company-candidates) - (let ((company-idle-delay t) - (company-begin-commands t)) + (let ((company-idle-delay 'now)) (condition-case-unless-debug err - (company-begin) + (company--perform) (error (message "Company: An error occurred in auto-begin") (message "%s" (error-message-string err)) (company-cancel)) @@ -1280,7 +1357,7 @@ Keywords and function definition names are ignored." company-point) company-prefix))) -(defun company--continue-failed () +(defun company--continue-failed (new-prefix) (let ((input (buffer-substring-no-properties (point) company-point))) (cond ((company-auto-complete-p input) @@ -1290,19 +1367,25 @@ Keywords and function definition names are ignored." (let ((company--auto-completion t)) (company-complete-selection)) nil)) + ((and (or (not (company-require-match-p)) + ;; Don't require match if the new prefix + ;; doesn't continue the old one, and the latter was a match. + (<= (length new-prefix) (length company-prefix))) + (member company-prefix company-candidates)) + ;; Last input was a success, + ;; but we're treating it as an abort + input anyway, + ;; like the `unique' case below. + (company-cancel 'non-unique)) ((company-require-match-p) - ;; wrong incremental input, but required match + ;; Wrong incremental input, but required match. (delete-char (- (length input))) (ding) (message "Matching input is required") company-candidates) - ((equal company-prefix (car company-candidates)) - ;; last input was actually success - (company-cancel company-prefix)) (t (company-cancel))))) (defun company--good-prefix-p (prefix) - (and (stringp (or (car-safe prefix) prefix)) ;excludes 'stop + (and (stringp (company--prefix-str prefix)) ;excludes 'stop (or (eq (cdr-safe prefix) t) (let ((len (or (cdr-safe prefix) (length prefix)))) (if company--manual-prefix @@ -1318,14 +1401,17 @@ Keywords and function definition names are ignored." (setq company-candidates-cache nil)) (let* ((new-prefix (company-call-backend 'prefix)) (c (when (and (company--good-prefix-p new-prefix) - (setq new-prefix (or (car-safe new-prefix) new-prefix)) + (setq new-prefix (company--prefix-str new-prefix)) (= (- (point) (length new-prefix)) (- company-point (length company-prefix)))) (company-calculate-candidates new-prefix)))) (cond ((eq c t) ;; t means complete/unique. - (company-cancel new-prefix)) + ;; Handle it like completion was aborted, to differentiate from user + ;; calling one of Company's commands to insert the candidate, + ;; not to trigger template expansion, etc. + (company-cancel 'unique)) ((consp c) ;; incremental match (setq company-prefix new-prefix) @@ -1333,7 +1419,7 @@ Keywords and function definition names are ignored." c) ((not (company--incremental-p)) (company-cancel)) - (t (company--continue-failed))))) + (t (company--continue-failed new-prefix))))) (defun company--begin-new () (let (prefix c) @@ -1352,25 +1438,25 @@ Keywords and function definition names are ignored." (company--multi-backend-adapter backend 'prefix))) (when prefix (when (company--good-prefix-p prefix) - (setq prefix (or (car-safe prefix) prefix) + (setq company-prefix (company--prefix-str prefix) company-backend backend - c (company-calculate-candidates prefix)) + c (company-calculate-candidates company-prefix)) ;; t means complete/unique. We don't start, so no hooks. (if (not (consp c)) (when company--manual-action (message "No completion found")) - (setq company-prefix prefix) (when company--manual-action (setq company--manual-prefix prefix)) - (when (symbolp backend) - (setq company-lighter (concat " " (symbol-name backend)))) + (if (symbolp backend) + (setq company-lighter (concat " " (symbol-name backend))) + (company--update-group-lighter (car c))) (company-update-candidates c) (run-hook-with-args 'company-completion-started-hook (company-explicit-action-p)) (company-call-frontends 'show))) (cl-return c))))) -(defun company-begin () +(defun company--perform () (or (and company-candidates (company--continue)) (and (company--should-complete) (company--begin-new))) (when company-candidates @@ -1394,47 +1480,44 @@ Keywords and function definition names are ignored." ;; Only set unmodified when tick remained the same since insert, ;; and the buffer wasn't modified before. (set-buffer-modified-p nil)) - (when company-prefix - (if (stringp result) - (progn - (company-call-backend 'pre-completion result) - (run-hook-with-args 'company-completion-finished-hook result) - (company-call-backend 'post-completion result)) - (run-hook-with-args 'company-completion-cancelled-hook result))) - (setq company-added-newline nil - company-backend nil - company-prefix nil - company-candidates nil - company-candidates-length nil - company-candidates-cache nil - company-candidates-predicate nil - company-common nil - company-selection 0 - company-selection-changed nil - company--manual-action nil - company--manual-prefix nil - company-lighter company-default-lighter - company--point-max nil - company-point nil) - (when company-timer - (cancel-timer company-timer)) - (company-search-mode 0) - (company-call-frontends 'hide) - (company-enable-overriding-keymap nil) + (unwind-protect + (when company-prefix + (if (stringp result) + (progn + (company-call-backend 'pre-completion result) + (run-hook-with-args 'company-completion-finished-hook result) + (company-call-backend 'post-completion result)) + (run-hook-with-args 'company-completion-cancelled-hook result))) + (setq company-added-newline nil + company-backend nil + company-prefix nil + company-candidates nil + company-candidates-length nil + company-candidates-cache nil + company-candidates-predicate nil + company-common nil + company-selection 0 + company-selection-changed nil + company--manual-action nil + company--manual-prefix nil + company-lighter company-default-lighter + company--point-max nil + company-point nil) + (when company-timer + (cancel-timer company-timer)) + (company-search-mode 0) + (company-call-frontends 'hide) + (company-enable-overriding-keymap nil)) ;; Make return value explicit. nil) (defun company-abort () (interactive) - (company-cancel t) - ;; Don't start again, unless started manually. - (setq company-point (point))) + (company-cancel 'abort)) (defun company-finish (result) (company--insert-candidate result) - (company-cancel result) - ;; Don't start again, unless started manually. - (setq company-point (point))) + (company-cancel result)) (defsubst company-keep (command) (and (symbolp command) (get command 'company-keep))) @@ -1459,13 +1542,12 @@ Keywords and function definition names are ignored." (condition-case err (progn (unless (equal (point) company-point) - (company-begin)) + (let (company-idle-delay) ; Against misbehavior while debugging. + (company--perform))) (if company-candidates (company-call-frontends 'post-command) (and (numberp company-idle-delay) - (or (eq t company-begin-commands) - (memq this-command company-begin-commands)) - (not (equal (point) company-point)) + (company--should-begin) (setq company-timer (run-with-timer company-idle-delay nil 'company-idle-begin @@ -1476,19 +1558,31 @@ Keywords and function definition names are ignored." (company-cancel)))) (company-install-map)) +(defvar company--begin-inhibit-commands '(company-abort + company-complete-mouse + company-complete + company-complete-common + company-complete-selection + company-complete-number) + "List of commands after which idle completion is (still) disabled when +`company-begin-commands' is t.") + +(defun company--should-begin () + (if (eq t company-begin-commands) + (not (memq this-command company--begin-inhibit-commands)) + (or + (memq this-command company-begin-commands) + (and (symbolp this-command) (get this-command 'company-begin))))) + ;;; search ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar company-search-string nil) -(make-variable-buffer-local 'company-search-string) +(defvar-local company-search-string nil) -(defvar company-search-lighter " Search: \"\"") -(make-variable-buffer-local 'company-search-lighter) +(defvar-local company-search-lighter " Search: \"\"") -(defvar company-search-old-map nil) -(make-variable-buffer-local 'company-search-old-map) +(defvar-local company-search-old-map nil) -(defvar company-search-old-selection 0) -(make-variable-buffer-local 'company-search-old-selection) +(defvar-local company-search-old-selection 0) (defun company-search (text lines) (let ((quoted (regexp-quote text)) @@ -1504,9 +1598,9 @@ Keywords and function definition names are ignored." (setq company-search-string (concat (or company-search-string "") (string last-command-event)) company-search-lighter (concat " Search: \"" company-search-string - "\"")) + "\"")) (let ((pos (company-search company-search-string - (nthcdr company-selection company-candidates)))) + (nthcdr company-selection company-candidates)))) (if (null pos) (ding) (company-set-selection (+ company-selection pos) t)))) @@ -1516,8 +1610,8 @@ Keywords and function definition names are ignored." (interactive) (company-search-assert-enabled) (let ((pos (company-search company-search-string - (cdr (nthcdr company-selection - company-candidates))))) + (cdr (nthcdr company-selection + company-candidates))))) (if (null pos) (ding) (company-set-selection (+ company-selection pos 1) t)))) @@ -1527,9 +1621,9 @@ Keywords and function definition names are ignored." (interactive) (company-search-assert-enabled) (let ((pos (company-search company-search-string - (nthcdr (- company-candidates-length - company-selection) - (reverse company-candidates))))) + (nthcdr (- company-candidates-length + company-selection) + (reverse company-candidates))))) (if (null pos) (ding) (company-set-selection (- company-selection pos 1) t)))) @@ -1600,7 +1694,8 @@ Keywords and function definition names are ignored." (define-key keymap [escape] meta-map)) (define-key keymap (vector meta-prefix-char t) 'company-search-other-char) (define-key keymap "\e\e\e" 'company-search-other-char) - (define-key keymap [escape escape escape] 'company-search-other-char) + (define-key keymap [escape escape escape] 'company-search-other-char) + (define-key keymap (kbd "DEL") 'company-search-other-char) (define-key keymap "\C-g" 'company-search-abort) (define-key keymap "\C-s" 'company-search-repeat-forward) @@ -1790,7 +1885,7 @@ inserted." To show the number next to the candidates in some back-ends, enable `company-show-numbers'." (when (company-manual-begin) - (and (< n 1) (> n company-candidates-length) + (and (or (< n 1) (> n company-candidates-length)) (error "No candidate number %d" n)) (cl-decf n) (company-finish (nth n company-candidates)))) @@ -1828,8 +1923,7 @@ To show the number next to the candidates in some back-ends, enable ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar company-last-metadata nil) -(make-variable-buffer-local 'company-last-metadata) +(defvar-local company-last-metadata nil) (defun company-fetch-metadata () (let ((selected (nth company-selection company-candidates))) @@ -1904,8 +1998,7 @@ To show the number next to the candidates in some back-ends, enable ;;; package functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar company-callback nil) -(make-variable-buffer-local 'company-callback) +(defvar-local company-callback nil) (defun company-remove-callback (&optional ignored) (remove-hook 'company-completion-finished-hook company-callback t) @@ -1943,13 +2036,13 @@ Example: \(company-begin-with '\(\"foo\" \"foobar\" \"foobarbaz\"\)\)" (company-begin-backend (lambda (command &optional arg &rest ignored) (pcase command - (`prefix - (when (equal (point) (marker-position begin-marker)) - (buffer-substring (- (point) (or prefix-length 0)) (point)))) - (`candidates - (all-completions arg candidates)) - (`require-match - require-match))) + (`prefix + (when (equal (point) (marker-position begin-marker)) + (buffer-substring (- (point) (or prefix-length 0)) (point)))) + (`candidates + (all-completions arg candidates)) + (`require-match + require-match))) callback))) (defun company-version (&optional show-version) @@ -1966,11 +2059,9 @@ If SHOW-VERSION is non-nil, show the version in the echo area." ;;; pseudo-tooltip ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar company-pseudo-tooltip-overlay nil) -(make-variable-buffer-local 'company-pseudo-tooltip-overlay) +(defvar-local company-pseudo-tooltip-overlay nil) -(defvar company-tooltip-offset 0) -(make-variable-buffer-local 'company-tooltip-offset) +(defvar-local company-tooltip-offset 0) (defun company-tooltip--lines-update-offset (selection num-lines limit) (cl-decf limit 2) @@ -2113,6 +2204,9 @@ If SHOW-VERSION is non-nil, show the version in the echo area." (defun company--replacement-string (lines old column nl &optional align-top) (cl-decf column company-tooltip-margin) + (when (and align-top company-tooltip-flip-when-above) + (setq lines (reverse lines))) + (let ((width (length (car lines))) (remaining-cols (- (+ (company--window-width) (window-hscroll)) column))) @@ -2260,7 +2354,7 @@ If SHOW-VERSION is non-nil, show the version in the echo area." (propertize (concat (company-space-string company-tooltip-margin) (company-safe-substring text 0 width) (company-space-string company-tooltip-margin)) - 'face 'company-tooltip)) + 'face 'company-tooltip)) ;; show @@ -2269,16 +2363,19 @@ If SHOW-VERSION is non-nil, show the version in the echo area." (- (nth 3 edges) (nth 1 edges)))) (defsubst company--window-width () - (- (window-width) - (cond - ((display-graphic-p) 0) - ;; Account for the line continuation column. - ((version< "24.3.1" emacs-version) 1) + (let ((ww (window-width))) + ;; Account for the line continuation column. + (when (zerop (cadr (window-fringes))) + (cl-decf ww)) + (unless (or (display-graphic-p) + (version< "24.3.1" emacs-version)) ;; Emacs 24.3 and earlier included margins ;; in window-width when in TTY. - (t (1+ (let ((margins (window-margins))) - (+ (or (car margins) 0) - (or (cdr margins) 0)))))))) + (cl-decf ww + (let ((margins (window-margins))) + (+ (or (car margins) 0) + (or (cdr margins) 0))))) + ww)) (defun company--pseudo-tooltip-height () "Calculate the appropriate tooltip height. @@ -2322,16 +2419,20 @@ Returns a negative number if the tooltip should be displayed above point." (overlay-put ov 'company-column column) (overlay-put ov 'company-height height))))) -(defun company-pseudo-tooltip-show-at-point (pos) +(defun company-pseudo-tooltip-show-at-point (pos column-offset) (let ((row (company--row pos)) - (col (company--column pos))) + (col (- (company--column pos) column-offset))) + (when (< col 0) (setq col 0)) (company-pseudo-tooltip-show (1+ row) col company-selection))) (defun company-pseudo-tooltip-edit (selection) - (let ((height (overlay-get company-pseudo-tooltip-overlay 'company-height))) + (let* ((height (overlay-get company-pseudo-tooltip-overlay 'company-height)) + (lines (company--create-lines selection (abs height)))) + (overlay-put company-pseudo-tooltip-overlay 'company-width + (string-width (car lines))) (overlay-put company-pseudo-tooltip-overlay 'company-after (apply 'company--replacement-string - (company--create-lines selection (abs height)) + lines (overlay-get company-pseudo-tooltip-overlay 'company-replacement-args))))) @@ -2358,29 +2459,30 @@ Returns a negative number if the tooltip should be displayed above point." (overlay-put company-pseudo-tooltip-overlay 'window (selected-window)))) (defun company-pseudo-tooltip-guard () - (buffer-substring-no-properties - (point) (overlay-start company-pseudo-tooltip-overlay))) + (list + (save-excursion (beginning-of-visual-line)) + (let ((ov company-pseudo-tooltip-overlay)) + (when (>= (overlay-get ov 'company-height) 0) + (buffer-substring-no-properties (point) (overlay-start ov)))))) (defun company-pseudo-tooltip-frontend (command) "`company-mode' front-end similar to a tooltip but based on overlays." (cl-case command (pre-command (company-pseudo-tooltip-hide-temporarily)) (post-command - (let ((old-height (if (overlayp company-pseudo-tooltip-overlay) - (overlay-get company-pseudo-tooltip-overlay - 'company-height) - 0)) - (new-height (company--pseudo-tooltip-height))) - (unless (and (>= (* old-height new-height) 0) - (>= (abs old-height) (abs new-height)) - (equal (company-pseudo-tooltip-guard) - (overlay-get company-pseudo-tooltip-overlay - 'company-guard))) - ;; Redraw needed. - (company-pseudo-tooltip-show-at-point (- (point) - (length company-prefix))) - (overlay-put company-pseudo-tooltip-overlay - 'company-guard (company-pseudo-tooltip-guard)))) + (unless (when (overlayp company-pseudo-tooltip-overlay) + (let* ((ov company-pseudo-tooltip-overlay) + (old-height (overlay-get ov 'company-height)) + (new-height (company--pseudo-tooltip-height))) + (and + (>= (* old-height new-height) 0) + (>= (abs old-height) (abs new-height)) + (equal (company-pseudo-tooltip-guard) + (overlay-get ov 'company-guard))))) + ;; Redraw needed. + (company-pseudo-tooltip-show-at-point (point) (length company-prefix)) + (overlay-put company-pseudo-tooltip-overlay + 'company-guard (company-pseudo-tooltip-guard))) (company-pseudo-tooltip-unhide)) (hide (company-pseudo-tooltip-hide) (setq company-tooltip-offset 0)) @@ -2395,8 +2497,7 @@ Returns a negative number if the tooltip should be displayed above point." ;;; overlay ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar company-preview-overlay nil) -(make-variable-buffer-local 'company-preview-overlay) +(defvar-local company-preview-overlay nil) (defun company-preview-show-at-point (pos) (company-preview-hide) @@ -2453,8 +2554,7 @@ Returns a negative number if the tooltip should be displayed above point." ;;; echo ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar company-echo-last-msg nil) -(make-variable-buffer-local 'company-echo-last-msg) +(defvar-local company-echo-last-msg nil) (defvar company-echo-timer nil) diff --git a/emacs.d/elpa/monokai-theme-0.0.11/monokai-theme-pkg.el b/emacs.d/elpa/monokai-theme-0.0.11/monokai-theme-pkg.el deleted file mode 100644 index 57b8571..0000000 --- a/emacs.d/elpa/monokai-theme-0.0.11/monokai-theme-pkg.el +++ /dev/null @@ -1 +0,0 @@ -(define-package "monokai-theme" "0.0.11" "REQUIRES EMACS 24: Monokai Color Theme for Emacs." 'nil) diff --git a/emacs.d/elpa/monokai-theme-0.0.11/monokai-theme-pkg.elc b/emacs.d/elpa/monokai-theme-0.0.11/monokai-theme-pkg.elc deleted file mode 100644 index 0c549a1a0245202a68338c5cc8930a8010181f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 506 zcmbtRK~BRk5bQZ0;5y0)q{eDfkSIA-Q4W>pfwnwgv7N@MV@I|Ng4eT65fb9qJ*{`f zGiy)PJl8jq$t0_)3bpSCW3?I&#-Zs+M!f3~jdv*T#X>yH#C(K5OzJ?^!Vk&x=8F<@ zqR2*Y-KPY|8P~E7r3^v zEW1^@HBJ`;$s-*!^4>dtBvYhL_c}*D6P(1Hn{D&*y52TBG@DhujU=Z P8)&&3^AtIpv3J=w!VHr9 diff --git a/emacs.d/elpa/monokai-theme-0.0.11/monokai-theme-autoloads.el b/emacs.d/elpa/monokai-theme-0.0.12/monokai-theme-autoloads.el similarity index 67% rename from emacs.d/elpa/monokai-theme-0.0.11/monokai-theme-autoloads.el rename to emacs.d/elpa/monokai-theme-0.0.12/monokai-theme-autoloads.el index b85cdfe..cde41e3 100644 --- a/emacs.d/elpa/monokai-theme-0.0.11/monokai-theme-autoloads.el +++ b/emacs.d/elpa/monokai-theme-0.0.12/monokai-theme-autoloads.el @@ -1,19 +1,26 @@ ;;; monokai-theme-autoloads.el --- automatically extracted autoloads ;; ;;; Code: -(add-to-list 'load-path (or (file-name-directory #$) (car load-path))) + -;;;### (autoloads nil "monokai-theme" "monokai-theme.el" (21395 22572 -;;;;;; 708218 691000)) +;;;### (autoloads nil "monokai-theme" "monokai-theme.el" (21476 47345 +;;;;;; 0 0)) ;;; Generated autoloads from monokai-theme.el (when load-file-name (add-to-list 'custom-theme-load-path (file-name-as-directory (file-name-directory load-file-name))) (when (not window-system) (custom-set-faces '(default ((t (:background nil))))))) ;;;*** +;;;### (autoloads nil nil ("monokai-theme-pkg.el") (21476 47345 162983 +;;;;;; 0)) + +;;;*** + +(provide 'monokai-theme-autoloads) ;; Local Variables: ;; version-control: never ;; no-byte-compile: t ;; no-update-autoloads: t +;; coding: utf-8 ;; End: ;;; monokai-theme-autoloads.el ends here diff --git a/emacs.d/elpa/monokai-theme-0.0.12/monokai-theme-pkg.el b/emacs.d/elpa/monokai-theme-0.0.12/monokai-theme-pkg.el new file mode 100644 index 0000000..e1aaff9 --- /dev/null +++ b/emacs.d/elpa/monokai-theme-0.0.12/monokai-theme-pkg.el @@ -0,0 +1 @@ +(define-package "monokai-theme" "0.0.12" "DEPRECATED: Monokai Color Theme for Emacs." (quote nil)) diff --git a/emacs.d/elpa/monokai-theme-0.0.11/monokai-theme.el b/emacs.d/elpa/monokai-theme-0.0.12/monokai-theme.el similarity index 91% rename from emacs.d/elpa/monokai-theme-0.0.11/monokai-theme.el rename to emacs.d/elpa/monokai-theme-0.0.12/monokai-theme.el index 3c1f4a6..01a9eff 100644 --- a/emacs.d/elpa/monokai-theme-0.0.11/monokai-theme.el +++ b/emacs.d/elpa/monokai-theme-0.0.12/monokai-theme.el @@ -1,10 +1,10 @@ -;;; monokai-theme.el --- REQUIRES EMACS 24: Monokai Color Theme for Emacs. +;;; monokai-theme.el --- DEPRECATED: Monokai Color Theme for Emacs. ;; Copyright (C) 2012 Lorenzo Villani. ;; ;; Author: Lorenzo Villani ;; URL: https://github.com/lvillani/el-monokai-theme -;; Version: 0.0.11 +;; Version: 0.0.12 ;; ;; This program is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -21,6 +21,12 @@ (unless (>= 24 emacs-major-version) (error "monokai-theme requires Emacs 24 or later.")) + +(warn "monokai-theme.el: THIS PROJECT IS BEING DISCONTINUED") +(warn "monokai-theme.el: Please switch to monokai-theme from MELPA") +(warn "monokai-theme.el: For more information see: https://github.com/lvillani/el-monokai-theme") + + (deftheme monokai "Monokai color theme")