1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-22 10:26:20 +00:00

* cedet/semantic/ia.el (semantic-ia-complete-symbol-menu): Use posn-at-point

instead of senator-completion-menu-point-as-event; un-comment, tho keep
the "no smart completion" fallback commented since it still doesn't work.
This commit is contained in:
Stefan Monnier 2014-06-19 18:07:09 -04:00
parent da20e0f1a8
commit cb5f7e19f2
2 changed files with 47 additions and 39 deletions

View File

@ -1,3 +1,9 @@
2014-06-19 Stefan Monnier <monnier@iro.umontreal.ca>
* semantic/ia.el (semantic-ia-complete-symbol-menu): Use posn-at-point
instead of senator-completion-menu-point-as-event; un-comment, tho keep
the "no smart completion" fallback commented since it still doesn't work.
2014-05-01 Glenn Morris <rgm@gnu.org>
* ede.el (ede-project-directories, ede-check-project-directory):

View File

@ -150,45 +150,47 @@ Completion options are calculated with `semantic-analyze-possible-completions'."
:group 'semantic
:type semantic-format-tag-custom-list)
;; Disabled - see http://debbugs.gnu.org/14522
;; ;;;###autoload
;; (defun semantic-ia-complete-symbol-menu (point)
;; "Complete the current symbol via a menu based at POINT.
;; Completion options are calculated with `semantic-analyze-possible-completions'."
;; (interactive "d")
;; (require 'imenu)
;; (let* ((a (semantic-analyze-current-context point))
;; (syms (semantic-analyze-possible-completions a))
;; )
;; ;; Complete this symbol.
;; (if (not syms)
;; (progn
;; (message "No smart completions found. Trying Senator.")
;; (when (semantic-analyze-context-p a)
;; ;; This is a quick way of getting a nice completion list
;; ;; in the menu if the regular context mechanism fails.
;; (senator-completion-menu-popup)))
;;
;; (let* ((menu
;; (mapcar
;; (lambda (tag)
;; (cons
;; (funcall semantic-ia-completion-menu-format-tag-function tag)
;; (vector tag)))
;; syms))
;; (ans
;; (imenu--mouse-menu
;; ;; XEmacs needs that the menu has at least 2 items. So,
;; ;; include a nil item that will be ignored by imenu.
;; (cons nil menu)
;; (senator-completion-menu-point-as-event)
;; "Completions")))
;; (when ans
;; (if (not (semantic-tag-p ans))
;; (setq ans (aref (cdr ans) 0)))
;; (delete-region (car (oref a bounds)) (cdr (oref a bounds)))
;; (semantic-ia-insert-tag ans))
;; ))))
;;;###autoload
(defun semantic-ia-complete-symbol-menu (point)
"Complete the current symbol via a menu based at POINT.
Completion options are calculated with `semantic-analyze-possible-completions'."
(interactive "d")
(require 'imenu)
(let* ((a (semantic-analyze-current-context point))
(syms (semantic-analyze-possible-completions a))
)
;; Complete this symbol.
(if (not syms)
(progn
(message "No smart completions found.")
;; Disabled - see http://debbugs.gnu.org/14522
;; (message "No smart completions found. Trying Senator.")
;; (when (semantic-analyze-context-p a)
;; ;; This is a quick way of getting a nice completion list
;; ;; in the menu if the regular context mechanism fails.
;; (senator-completion-menu-popup))
)
(let* ((menu
(mapcar
(lambda (tag)
(cons
(funcall semantic-ia-completion-menu-format-tag-function tag)
(vector tag)))
syms))
(ans
(imenu--mouse-menu
;; XEmacs needs that the menu has at least 2 items. So,
;; include a nil item that will be ignored by imenu.
(cons nil menu)
`(down-mouse-1 ,(posn-at-point))
"Completions")))
(when ans
(if (not (semantic-tag-p ans))
(setq ans (aref (cdr ans) 0)))
(delete-region (car (oref a bounds)) (cdr (oref a bounds)))
(semantic-ia-insert-tag ans))
))))
;;; Completions Tip
;;