summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeo Liu <sdl.web@gmail.com>2014-04-12 12:07:53 +0800
committerLeo Liu <sdl.web@gmail.com>2014-04-12 12:07:53 +0800
commit2e611da66e0192a8a63437dbc8f116314cadb71d (patch)
treefd1de5233fbfbae6e0c9c86720fc54d055ae354d
parentf628e17c4b814d93b40515af62ab1dbb2ca62226 (diff)
downloademacs-2e611da66e0192a8a63437dbc8f116314cadb71d.tar.gz
Don't break emacs <= 24.3 just yet
* progmodes/octave.el (completion-table-with-cache): Define if not available. (octave-goto-function-definition) (octave-sync-function-file-names) (octave-find-definition-default-filename): Backquote upattern for compatibility.
-rw-r--r--lisp/ChangeLog9
-rw-r--r--lisp/progmodes/octave.el50
2 files changed, 40 insertions, 19 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 2c5b40ef86a..6ccf81c9c35 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,12 @@
+2014-04-12 Leo Liu <sdl.web@gmail.com>
+
+ * progmodes/octave.el (completion-table-with-cache): Define if not
+ available.
+ (octave-goto-function-definition)
+ (octave-sync-function-file-names)
+ (octave-find-definition-default-filename): Backquote upattern for
+ compatibility.
+
2014-04-11 Michael Albinus <michael.albinus@gmx.de>
* net/tramp-sh.el (tramp-sh-handle-file-truename): Quote the file
diff --git a/lisp/progmodes/octave.el b/lisp/progmodes/octave.el
index 123aac03eae..3fdcec219d3 100644
--- a/lisp/progmodes/octave.el
+++ b/lisp/progmodes/octave.el
@@ -40,7 +40,19 @@
(unless (fboundp 'user-error)
(defalias 'user-error 'error))
(unless (fboundp 'delete-consecutive-dups)
- (defalias 'delete-consecutive-dups 'delete-dups)))
+ (defalias 'delete-consecutive-dups 'delete-dups))
+ (unless (fboundp 'completion-table-with-cache)
+ (defun completion-table-with-cache (fun &optional ignore-case)
+ ;; See eg bug#11906.
+ (let* (last-arg last-result
+ (new-fun
+ (lambda (arg)
+ (if (and last-arg (string-prefix-p last-arg arg ignore-case))
+ last-result
+ (prog1
+ (setq last-result (funcall fun arg))
+ (setq last-arg arg))))))
+ (completion-table-dynamic new-fun)))))
(eval-when-compile
(unless (fboundp 'setq-local)
(defmacro setq-local (var val)
@@ -1048,8 +1060,8 @@ directory and makes this the current buffer's default directory."
(unless found (goto-char orig))
found))))
(pcase (and buffer-file-name (file-name-extension buffer-file-name))
- ("cc" (funcall search
- "\\_<DEFUN\\(?:_DLD\\)?\\s-*(\\s-*\\(\\(?:\\sw\\|\\s_\\)+\\)" 1))
+ (`"cc" (funcall search
+ "\\_<DEFUN\\(?:_DLD\\)?\\s-*(\\s-*\\(\\(?:\\sw\\|\\s_\\)+\\)" 1))
(t (funcall search octave-function-header-regexp 3)))))
(defun octave-function-file-p ()
@@ -1118,19 +1130,19 @@ q: Don't fix\n" func file))
(read-char-choice
"Which name to use? (a/b/q) " '(?a ?b ?q))))))
(pcase c
- (?a (let ((newname (expand-file-name
- (concat func (file-name-extension
- buffer-file-name t)))))
- (when (or (not (file-exists-p newname))
- (yes-or-no-p
- (format "Target file %s exists; proceed? " newname)))
- (when (file-exists-p buffer-file-name)
- (rename-file buffer-file-name newname t))
- (set-visited-file-name newname))))
- (?b (save-excursion
- (goto-char name-start)
- (delete-region name-start name-end)
- (insert file)))))))))
+ (`?a (let ((newname (expand-file-name
+ (concat func (file-name-extension
+ buffer-file-name t)))))
+ (when (or (not (file-exists-p newname))
+ (yes-or-no-p
+ (format "Target file %s exists; proceed? " newname)))
+ (when (file-exists-p buffer-file-name)
+ (rename-file buffer-file-name newname t))
+ (set-visited-file-name newname))))
+ (`?b (save-excursion
+ (goto-char name-start)
+ (delete-region name-start name-end)
+ (insert file)))))))))
(defun octave-update-function-file-comment (beg end)
"Query replace function names in function file comment."
@@ -1789,19 +1801,19 @@ If the environment variable OCTAVE_SRCDIR is set, it is searched first."
(defun octave-find-definition-default-filename (name)
"Default value for `octave-find-definition-filename-function'."
(pcase (file-name-extension name)
- ("oct"
+ (`"oct"
(octave-find-definition-default-filename
(concat "libinterp/dldfcn/"
(file-name-sans-extension (file-name-nondirectory name))
".cc")))
- ("cc"
+ (`"cc"
(let ((file (or (locate-file name (octave-source-directories))
(locate-file (file-name-nondirectory name)
(octave-source-directories)))))
(or (and file (file-exists-p file))
(error "File `%s' not found" name))
file))
- ("mex"
+ (`"mex"
(if (yes-or-no-p (format "File `%s' may be binary; open? "
(file-name-nondirectory name)))
name