X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/cb753c3ace486a17e1f3fbb3cbee29dfd20ae68d..ebecf964123ab7b4e6deec85aa2f2fd58eddea29:/packages/company/company.el diff --git a/packages/company/company.el b/packages/company/company.el index 39a3a17c2..40fdfa707 100644 --- a/packages/company/company.el +++ b/packages/company/company.el @@ -215,6 +215,7 @@ If this many lines are not available, prefer to display the tooltip above." '((company-abbrev . "Abbrev") (company-capf . "completion-at-point-functions") (company-clang . "Clang") + (company-cmake . "CMake") (company-css . "CSS") (company-dabbrev . "dabbrev for plain text") (company-dabbrev-code . "dabbrev for code") @@ -243,8 +244,8 @@ If this many lines are not available, prefer to display the tooltip above." (return t)))))) (defcustom company-backends '(company-elisp company-nxml company-css - company-semantic company-clang company-eclim - company-xcode company-ropemacs + company-eclim company-semantic company-clang + company-xcode company-ropemacs company-cmake (company-gtags company-etags company-dabbrev-code company-keywords) company-oddmuse company-files company-dabbrev) @@ -523,11 +524,33 @@ keymap during active completions (`company-active-map'): (company-cancel) (kill-local-variable 'company-point))) +(defcustom company-global-modes t + "Modes for which `company-mode' mode is turned on by `global-company-mode'. +If nil, means no modes. If t, then all major modes have it turned on. +If a list, it should be a list of `major-mode' symbol names for which +`company-mode' should be automatically turned on. The sense of the list is +negated if it begins with `not'. For example: + (c-mode c++-mode) +means that `company-mode' is turned on for buffers in C and C++ modes only. + (not message-mode) +means that `company-mode' is always turned on except in `message-mode' buffers." + :type '(choice (const :tag "none" nil) + (const :tag "all" t) + (set :menu-tag "mode specific" :tag "modes" + :value (not) + (const :tag "Except" not) + (repeat :inline t (symbol :tag "mode"))))) + ;;;###autoload (define-globalized-minor-mode global-company-mode company-mode company-mode-on) (defun company-mode-on () - (unless (or noninteractive (eq (aref (buffer-name) 0) ?\s)) + (when (and (not (or noninteractive (eq (aref (buffer-name) 0) ?\s))) + (cond ((eq company-global-modes t) + t) + ((eq (car-safe company-global-modes) 'not) + (not (memq major-mode (cdr company-global-modes)))) + (t (memq major-mode company-global-modes)))) (company-mode 1))) (defsubst company-assert-enabled () @@ -1817,7 +1840,7 @@ Returns a negative number if the tooltip should be displayed above point." (overlay-put ov 'company-replacement-args args) (let ((lines (company--create-lines selection (abs height)))) - (overlay-put ov 'company-before + (overlay-put ov 'company-after (apply 'company--replacement-string lines args)) (overlay-put ov 'company-width (string-width (car lines)))) @@ -1831,7 +1854,7 @@ Returns a negative number if the tooltip should be displayed above point." (defun company-pseudo-tooltip-edit (selection) (let ((height (overlay-get company-pseudo-tooltip-overlay 'company-height))) - (overlay-put company-pseudo-tooltip-overlay 'company-before + (overlay-put company-pseudo-tooltip-overlay 'company-after (apply 'company--replacement-string (company--create-lines selection (abs height)) (overlay-get company-pseudo-tooltip-overlay @@ -1845,7 +1868,8 @@ Returns a negative number if the tooltip should be displayed above point." (defun company-pseudo-tooltip-hide-temporarily () (when (overlayp company-pseudo-tooltip-overlay) (overlay-put company-pseudo-tooltip-overlay 'invisible nil) - (overlay-put company-pseudo-tooltip-overlay 'before-string nil))) + (overlay-put company-pseudo-tooltip-overlay 'line-prefix nil) + (overlay-put company-pseudo-tooltip-overlay 'after-string nil))) (defun company-pseudo-tooltip-unhide () (when company-pseudo-tooltip-overlay @@ -1854,8 +1878,8 @@ Returns a negative number if the tooltip should be displayed above point." (overlay-put company-pseudo-tooltip-overlay 'priority 1) ;; No (extra) prefix for the first line. (overlay-put company-pseudo-tooltip-overlay 'line-prefix "") - (overlay-put company-pseudo-tooltip-overlay 'before-string - (overlay-get company-pseudo-tooltip-overlay 'company-before)) + (overlay-put company-pseudo-tooltip-overlay 'after-string + (overlay-get company-pseudo-tooltip-overlay 'company-after)) (overlay-put company-pseudo-tooltip-overlay 'window (selected-window)))) (defun company-pseudo-tooltip-guard ()