;;; semantic/complete.el --- Routines for performing tag completion
-;; Copyright (C) 2003-2005, 2007-2012 Free Software Foundation, Inc.
+;; Copyright (C) 2003-2005, 2007-2015 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <zappo@gnu.org>
;; Keywords: syntax
(eval-when-compile
;; For the semantic-find-tags-for-completion macro.
(require 'semantic/find))
+(require 'semantic/db-find) ;For type semanticdb-find-result-with-nil.
;;; Code:
;;(message "Inline Hook installed, but overlay deleted.")
(semantic-complete-inline-exit))
;; Exit if commands caused us to exit the area of interest
- (let ((s (semantic-overlay-start semantic-complete-inline-overlay))
+ (let ((os (semantic-overlay-get semantic-complete-inline-overlay 'semantic-original-start))
+ (s (semantic-overlay-start semantic-complete-inline-overlay))
(e (semantic-overlay-end semantic-complete-inline-overlay))
(b (semantic-overlay-buffer semantic-complete-inline-overlay))
(txt nil)
(cond
;; EXIT when we are no longer in a good place.
((or (not (eq b (current-buffer)))
- (<= (point) s)
- (> (point) e))
+ (< (point) s)
+ (< (point) os)
+ (> (point) e)
+ )
;;(message "Exit: %S %S %S" s e (point))
(semantic-complete-inline-exit)
)
(t
;; Else, show completions now
(semantic-complete-inline-force-display)
-
))))
;; If something goes terribly wrong, clean up after ourselves.
(error (semantic-complete-inline-exit))))
(semantic-overlay-put semantic-complete-inline-overlay
'window-config-start
(current-window-configuration))
+ ;; Save the original start. We need to exit completion if START
+ ;; moves.
+ (semantic-overlay-put semantic-complete-inline-overlay
+ 'semantic-original-start start)
;; Install our command hooks
(add-hook 'pre-command-hook 'semantic-complete-pre-command-hook)
(add-hook 'post-command-hook 'semantic-complete-post-command-hook)
"Calculate the completions for prefix from completionlist.
Output must be in semanticdb Find result format."
;; Must output in semanticdb format
+ (unless completionlist
+ (setq completionlist
+ (or (oref obj cache)
+ (semantic-collector-calculate-cache obj))))
(let ((table (with-current-buffer (oref obj buffer)
semanticdb-current-table))
(result (semantic-find-tags-for-completion
prefix
;; To do this kind of search with a pre-built completion
;; list, we need to strip it first.
- (semanticdb-strip-find-results completionlist)))
- )
+ (semanticdb-strip-find-results completionlist))))
(if result
(list (cons table result)))))
(let ((old nil)
(bl semantic-collector-per-buffer-list))
(while (and bl (null old))
- (if (eq (object-class (car bl)) this)
+ (if (eq (eieio-object-class (car bl)) this)
(setq old (car bl))))
(unless old
(let ((new (call-next-method)))
(insert (semantic-format-tag-summarize tag nil t) "\n\n")
(when table
(insert "From table: \n")
- (insert (object-name table) "\n\n"))
+ (insert (eieio-object-name table) "\n\n"))
(when buf
(insert "In buffer: \n\n")
(insert (format "%S" buf)))
(error nil))
)
+(defvar tooltip-mode)
+
(defmethod semantic-displayor-show-request ((obj semantic-displayor-tooltip))
"A request to show the current tags table."
(if (or (not (featurep 'tooltip)) (not tooltip-mode))
(setq msg "...")))
((eq mode 'verbose)
;; Always show extended match set.
- (oset obj max-tags semantic-displayor-tooltip-max-tags)
+ (oset obj max-tags-initial semantic-displayor-tooltip-max-tags)
(setq max-tags semantic-displayor-tooltip-max-tags)))
(unless msg
(oset obj shown t)
"Return the location of POINT as positioned on the selected frame.
Return a cons cell (X . Y)"
(let* ((frame (selected-frame))
- (left (or (car-safe (cdr-safe (frame-parameter frame 'left)))
- (frame-parameter frame 'left)))
- (top (or (car-safe (cdr-safe (frame-parameter frame 'top)))
+ (toolbarleft
+ (if (eq (cdr (assoc 'tool-bar-position default-frame-alist)) 'left)
+ (tool-bar-pixel-width)
+ 0))
+ (left (+ (or (car-safe (cdr-safe (frame-parameter frame 'left)))
+ (frame-parameter frame 'left))
+ toolbarleft))
+ (top (or (car-safe (cdr-safe (frame-parameter frame 'top)))
(frame-parameter frame 'top)))
(point-pix-pos (posn-x-y (posn-at-point)))
(edges (window-inside-pixel-edges (selected-window))))
(+ (cdr point-pix-pos) (cadr edges) top))))
+(defvar tooltip-frame-parameters)
+(declare-function tooltip-show "tooltip" (text &optional use-echo-area))
+
(defun semantic-displayor-tooltip-show (text)
"Display a tooltip with TEXT near cursor."
(let ((point-pix-pos (semantic-displayor-point-position))
(complst nil))
(when (and thissym (or (not (string= thissym ""))
nextsym))
- ;; Do a quick calcuation of completions.
+ ;; Do a quick calculation of completions.
(semantic-collector-calculate-completions
collector thissym nil)
;; Get the master list
(complst nil))
(when (and thissym (or (not (string= thissym ""))
nextsym))
- ;; Do a quick calcuation of completions.
+ ;; Do a quick calculation of completions.
(semantic-collector-calculate-completions
collector thissym nil)
;; Get the master list