]> rtime.felk.cvut.cz Git - sojka/company-mode.git/commitdiff
Changed offset calculation to resemble scrolling.
authorNikolaj Schumacher <git@nschum.de>
Thu, 12 Mar 2009 22:04:08 +0000 (23:04 +0100)
committerNikolaj Schumacher <git@nschum.de>
Fri, 20 Mar 2009 08:46:05 +0000 (09:46 +0100)
company.el

index 6166363927e5056c4cde58ae97257845bad45103..97470b4a77d52ca7cd9fbad058c023d7ba78bf26 100644 (file)
 (defsubst company-strip-prefix (str)
   (substring str (length company-prefix)))
 
-(defsubst company-offset (display-limit)
-  (let ((offset (- company-selection display-limit -1)))
-    (max offset 0)))
-
 (defsubst company-reformat (candidate)
   ;; company-ispell needs this, because the results are always lower-case
   ;; It's mory efficient to fix it only when they are displayed.
 (defvar company-pseudo-tooltip-overlay nil)
 (make-variable-buffer-local 'company-pseudo-tooltip-overlay)
 
+(defvar company-tooltip-offset 0)
+(make-variable-buffer-local 'company-tooltip-offset)
+
 ;;; propertize
 
 (defun company-fill-propertize (line width selected)
   (save-excursion
 
     ;; Scroll to offset.
-    (let ((offset (company-offset company-tooltip-limit)))
-      (setq lines (nthcdr offset lines))
-      (decf selection offset))
+    (setq company-tooltip-offset
+          (max (min selection company-tooltip-offset)
+               (- selection -1 company-tooltip-limit)))
+
+    (setq lines (nthcdr company-tooltip-offset lines))
+    (decf selection company-tooltip-offset)
 
     (setq lines (company-fill-propertize-lines column lines selection))
 
     ('pre-command (company-pseudo-tooltip-hide))
     ('post-command (company-pseudo-tooltip-show-at-point
                     (- (point) (length company-prefix))))
-    ('hide (company-pseudo-tooltip-hide))))
+    ('hide (company-pseudo-tooltip-hide)
+           (setq company-tooltip-offset 0))))
 
 (defun company-pseudo-tooltip-unless-just-one-frontend (command)
   (unless (and (eq command 'post-command)