[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] 06/35: Drop Emacs 23 compatibility
From: |
Dmitry Gutov |
Subject: |
[elpa] 06/35: Drop Emacs 23 compatibility |
Date: |
Sat, 19 Apr 2014 10:12:14 +0000 |
dgutov pushed a commit to branch master
in repository elpa.
commit 0e57458e2c844c53ad92de66c089d84013310391
Author: Dmitry Gutov <address@hidden>
Date: Fri Mar 28 21:15:27 2014 +0200
Drop Emacs 23 compatibility
* Replace `cl-case' with `pcase' in some places: it's more hip and somewhat
faster.
---
.travis.yml | 5 ---
NEWS.md | 1 +
company.el | 81 +++++++++++++++++++++++++++--------------------------------
3 files changed, 38 insertions(+), 49 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index cdf55d1..59d20a1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,15 +4,10 @@ language: emacs-lisp
env:
matrix:
- - EMACS=emacs23
- EMACS=emacs24
- EMACS=emacs-snapshot
install:
- - if [ "$EMACS" = "emacs23" ]; then
- sudo apt-get update -qq &&
- sudo apt-get install -qq emacs23-gtk emacs23-el;
- fi
- if [ "$EMACS" = "emacs24" ]; then
sudo add-apt-repository -y ppa:cassou/emacs &&
sudo apt-get update -qq &&
diff --git a/NEWS.md b/NEWS.md
index c9c942d..76a960f 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -2,6 +2,7 @@
## Next
+* Support for Emacs 23 dropped.
* New user option `company-abort-manual-when-too-short`.
## 2014-03-25 (0.7.3)
diff --git a/company.el b/company.el
index 0ff3e85..5a6d020 100644
--- a/company.el
+++ b/company.el
@@ -7,7 +7,7 @@
;; Version: 0.7.3
;; Keywords: abbrev, convenience, matching
;; URL: http://company-mode.github.io/
-;; Compatibility: GNU Emacs 23.x, GNU Emacs 24.x
+;; Compatibility: GNU Emacs 24.x
;; This file is part of GNU Emacs.
@@ -48,11 +48,11 @@
;; Here is a simple example completing "foo":
;;
;; (defun company-my-backend (command &optional arg &rest ignored)
-;; (case command
-;; (prefix (when (looking-back "foo\\>")
+;; (pcase command
+;; (`prefix (when (looking-back "foo\\>")
;; (match-string 0)))
-;; (candidates (list "foobar" "foobaz" "foobarbaz"))
-;; (meta (format "This value is named %s" arg))))
+;; (`candidates (list "foobar" "foobaz" "foobarbaz"))
+;; (`meta (format "This value is named %s" arg))))
;;
;; Sometimes it is a good idea to mix several back-ends together, for example
to
;; enrich gtags with dabbrev-code results (to emulate local variables).
@@ -801,8 +801,8 @@ means that `company-mode' is always turned on except in
`message-mode' buffers."
(if (eq command 'prefix)
(butlast backends (length (member :with backends)))
(delq :with backends)))
- (case command
- (candidates
+ (pcase command
+ (`candidates
;; Small perf optimization: don't tag the candidates received
;; from the first backend in the group.
(append (apply (car backends) 'candidates args)
@@ -813,14 +813,14 @@ means that `company-mode' is always turned on except in
`message-mode' buffers."
(lambda (str)
(propertize str 'company-backend backend))
(apply backend 'candidates args)))))
- (sorted nil)
- (duplicates t)
- ((prefix ignore-case no-cache require-match)
+ (`sorted nil)
+ (`duplicates t)
+ ((or `prefix `ignore-case `no-cache `require-match)
(let (value)
(dolist (backend backends)
(when (setq value (apply backend command args))
(return value)))))
- (otherwise
+ (_
(let ((arg (car args)))
(when (> (length arg) 0)
(let ((backend (or (get-text-property 0 'company-backend arg)
@@ -1802,15 +1802,10 @@ To show the number next to the candidates in some
back-ends, enable
(defvar company-callback nil)
(make-variable-buffer-local 'company-callback)
-(defvar company-begin-with-marker nil)
-(make-variable-buffer-local 'company-begin-with-marker)
-
(defun company-remove-callback (&optional ignored)
(remove-hook 'company-completion-finished-hook company-callback t)
(remove-hook 'company-completion-cancelled-hook 'company-remove-callback t)
- (remove-hook 'company-completion-finished-hook 'company-remove-callback t)
- (when company-begin-with-marker
- (set-marker company-begin-with-marker nil)))
+ (remove-hook 'company-completion-finished-hook 'company-remove-callback t))
(defun company-begin-backend (backend &optional callback)
"Start a completion at point using BACKEND."
@@ -1839,20 +1834,18 @@ CALLBACK is a function called with the selected result
if the user
successfully completes the input.
Example: \(company-begin-with '\(\"foo\" \"foobar\" \"foobarbaz\"\)\)"
- ;; FIXME: When Emacs 23 is no longer a concern, replace
- ;; `company-begin-with-marker' with a lexical variable; use a lexical
closure.
- (setq company-begin-with-marker (copy-marker (point) t))
- (company-begin-backend
- `(lambda (command &optional arg &rest ignored)
- (cond
- ((eq command 'prefix)
- (when (equal (point) (marker-position company-begin-with-marker))
- (buffer-substring ,(- (point) (or prefix-length 0)) (point))))
- ((eq command 'candidates)
- (all-completions arg ',candidates))
- ((eq command 'require-match)
- ,require-match)))
- callback))
+ (let ((begin-marker (copy-marker (point) t)))
+ (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)))
+ callback)))
(defun company-version (&optional show-version)
"Get the Company version as string.
@@ -2335,10 +2328,10 @@ Returns a negative number if the tooltip should be
displayed above point."
(defun company-preview-frontend (command)
"`company-mode' front-end showing the selection as if it had been inserted."
- (case command
- (pre-command (company-preview-hide))
- (post-command (company-preview-show-at-point (point)))
- (hide (company-preview-hide))))
+ (pcase command
+ (`pre-command (company-preview-hide))
+ (`post-command (company-preview-show-at-point (point)))
+ (`hide (company-preview-hide))))
(defun company-preview-if-just-one-frontend (command)
"`company-preview-frontend', but only shown for single candidates."
@@ -2440,21 +2433,21 @@ Returns a negative number if the tooltip should be
displayed above point."
(defun company-echo-frontend (command)
"`company-mode' front-end showing the candidates in the echo area."
- (case command
- (post-command (company-echo-show-soon 'company-echo-format))
- (hide (company-echo-hide))))
+ (pcase command
+ (`post-command (company-echo-show-soon 'company-echo-format))
+ (`hide (company-echo-hide))))
(defun company-echo-strip-common-frontend (command)
"`company-mode' front-end showing the candidates in the echo area."
- (case command
- (post-command (company-echo-show-soon 'company-echo-strip-common-format))
- (hide (company-echo-hide))))
+ (pcase command
+ (`post-command (company-echo-show-soon 'company-echo-strip-common-format))
+ (`hide (company-echo-hide))))
(defun company-echo-metadata-frontend (command)
"`company-mode' front-end showing the documentation in the echo area."
- (case command
- (post-command (company-echo-show-when-idle 'company-fetch-metadata))
- (hide (company-echo-hide))))
+ (pcase command
+ (`post-command (company-echo-show-when-idle 'company-fetch-metadata))
+ (`hide (company-echo-hide))))
(provide 'company)
;;; company.el ends here
- [elpa] 17/35: company--merge-async: tweak, (continued)
- [elpa] 17/35: company--merge-async: tweak, Dmitry Gutov, 2014/04/19
- [elpa] 19/35: Move company-elisp require, Dmitry Gutov, 2014/04/19
- [elpa] 14/35: Implement async operation for grouped backends, Dmitry Gutov, 2014/04/19
- [elpa] 18/35: company--force-sync: change calling convention, Dmitry Gutov, 2014/04/19
- [elpa] 20/35: Change the summary, Dmitry Gutov, 2014/04/19
- [elpa] 22/35: company--multi-backend-adapter-candidates: bind backend locally, Dmitry Gutov, 2014/04/19
- [elpa] 21/35: Define and use `company-grab-symbol-cons', Dmitry Gutov, 2014/04/19
- [elpa] 23/35: Introduce `company-tooltip-minimum-width', Dmitry Gutov, 2014/04/19
- [elpa] 25/35: Make version string compatible with Emacs < 24.4, Dmitry Gutov, 2014/04/19
- [elpa] 24/35: Lower company-idle-delay, Dmitry Gutov, 2014/04/19
- [elpa] 06/35: Drop Emacs 23 compatibility,
Dmitry Gutov <=
- [elpa] 11/35: Initial support for asynchonous backends (#62), Dmitry Gutov, 2014/04/19
- [elpa] 26/35: Merge pull request #100 from bbatsov/version-fix, Dmitry Gutov, 2014/04/19
- [elpa] 27/35: Try to use the more up-to-date snapshot packages, Dmitry Gutov, 2014/04/19
- [elpa] 29/35: Merge pull request #101 from bbatsov/master, Dmitry Gutov, 2014/04/19
- [elpa] 15/35: Merge branch 'clang-async', Dmitry Gutov, 2014/04/19
- [elpa] 30/35: Fix the test breakage (probably), Dmitry Gutov, 2014/04/19
- [elpa] 31/35: Introduce company-clang-insert-arguments, Dmitry Gutov, 2014/04/19
- [elpa] 05/35: Update NEWS, Dmitry Gutov, 2014/04/19
- [elpa] 34/35: Release 0.8.0, Dmitry Gutov, 2014/04/19
- [elpa] 33/35: Always include company-capf in the backends, Dmitry Gutov, 2014/04/19