;;; meta-mode.el --- major mode for editing Metafont or MetaPost sources
-;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
;; Free Software Foundation, Inc.
;; Author: Ulrik Vieth <vieth@thphy.uni-duesseldorf.de>
(close (nth 3 entry))
(begin (match-beginning sub))
(end (match-end sub))
- (pattern (meta-match-buffer 0))
- (symbol (buffer-substring begin end))
- (list (funcall (nth 2 entry)))
- (completion (try-completion symbol list)))
- (cond ((eq completion t)
- (and close
- (not (looking-at (regexp-quote close)))
- (insert close)))
- ((null completion)
- (error "Can't find completion for \"%s\"" pattern))
- ((not (string-equal symbol completion))
- (delete-region begin end)
- (insert completion)
- (and close
- (eq (try-completion completion list) t)
- (not (looking-at (regexp-quote close)))
- (insert close)))
- (t
- (message "Making completion list...")
- (let ((list (all-completions symbol list nil)))
- (with-output-to-temp-buffer "*Completions*"
- (display-completion-list list symbol)))
- (message "Making completion list... done"))))
+ (list (funcall (nth 2 entry))))
+ (completion-in-region
+ begin end
+ (if (zerop (length close)) list
+ (apply-partially 'completion-table-with-terminator
+ close list))))
(funcall (nth 1 entry)))))