# HG changeset patch # User Chong Yidong # Date 1260050460 0 # Node ID a72f79f8918535b7063a755aaab84d15f856cabe # Parent 137fd69c176adf5fc60538a9a936f0593b6679df * bindings.el (complete-symbol): Call semantic-ia-complete-symbol if possible. * cedet/semantic/ia.el (semantic-ia-complete-symbol): Make argument optional. diff -r 137fd69c176a -r a72f79f89185 lisp/ChangeLog --- a/lisp/ChangeLog Sat Dec 05 21:33:48 2009 +0000 +++ b/lisp/ChangeLog Sat Dec 05 22:01:00 2009 +0000 @@ -1,5 +1,11 @@ 2009-12-05 Chong Yidong + * bindings.el (complete-symbol): Call semantic-ia-complete-symbol + if possible. + + * cedet/semantic/ia.el (semantic-ia-complete-symbol): Make + argument optional. + * shell.el (shell): Require ansi-color (Bug#5113). * ansi-color.el (ansi-color-for-comint-mode): Default to t. diff -r 137fd69c176a -r a72f79f89185 lisp/bindings.el --- a/lisp/bindings.el Sat Dec 05 21:33:48 2009 +0000 +++ b/lisp/bindings.el Sat Dec 05 22:01:00 2009 +0000 @@ -671,23 +671,28 @@ (define-key esc-map "\t" 'complete-symbol) -(defun complete-symbol (arg) "\ -Perform tags completion on the text around point. -Completes to the set of names listed in the current tags table. -The string to complete is chosen in the same way as the default -for \\[find-tag] (which see). +(defun complete-symbol (arg) + "Perform tags completion on the text around point. +If a tags table is loaded, call `complete-tag'. +Otherwise, if Semantic is active, call `semantic-ia-complete-symbol'. With a prefix argument, this command does completion within the collection of symbols listed in the index of the manual for the language you are using." (interactive "P") - (if arg - (info-complete-symbol) - (if (fboundp 'complete-tag) - (complete-tag) - ;; Don't autoload etags if we have no tags table. - (error "%s" (substitute-command-keys - "No tags table loaded; use \\[visit-tags-table] to load one"))))) + (cond (arg + (info-complete-symbol)) + ((or tags-table-list tags-file-name) + (complete-tag)) + ((and (fboundp 'semantic-ia-complete-symbol) + (fboundp 'semantic-active-p) + (semantic-active-p)) + (semantic-ia-complete-symbol)) + (t + (error "%s" + (substitute-command-keys + "No completions available; use \\[visit-tags-table] \ +or \\[semantic-mode]"))))) ;; Reduce total amount of space we must allocate during this function ;; that we will not need to keep permanently. diff -r 137fd69c176a -r a72f79f89185 lisp/cedet/semantic/ia.el --- a/lisp/cedet/semantic/ia.el Sat Dec 05 21:33:48 2009 +0000 +++ b/lisp/cedet/semantic/ia.el Sat Dec 05 22:01:00 2009 +0000 @@ -105,19 +105,21 @@ symbols)) ;;;###autoload -(defun semantic-ia-complete-symbol (point) - "Complete the current symbol at POINT. +(defun semantic-ia-complete-symbol (&optional pos) + "Complete the current symbol at POS. +If POS is nil, default to point. Completion options are calculated with `semantic-analyze-possible-completions'." (interactive "d") + (or pos (setq pos (point))) ;; Calculating completions is a two step process. ;; ;; The first analyzer the current context, which finds tags ;; for all the stuff that may be references by the code around - ;; POINT. + ;; POS. ;; ;; The second step derives completions from that context. - (let* ((a (semantic-analyze-current-context point)) - (syms (semantic-ia-get-completions a point)) + (let* ((a (semantic-analyze-current-context pos)) + (syms (semantic-ia-get-completions a pos)) (pre (car (reverse (oref a prefix)))) ) ;; If PRE was actually an already completed symbol, it doesn't diff -r 137fd69c176a -r a72f79f89185 lisp/progmodes/etags.el --- a/lisp/progmodes/etags.el Sat Dec 05 21:33:48 2009 +0000 +++ b/lisp/progmodes/etags.el Sat Dec 05 22:01:00 2009 +0000 @@ -2027,7 +2027,6 @@ (interactive) (quit-window t (selected-window))) -;; Note, there is another definition of this function in bindings.el. ;;;###autoload (defun complete-tag () "Perform tags completion on the text around point.