[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
completion-ui.el question: my vimpulse-show-completion-menu function alw
From: |
Jason Spiro |
Subject: |
completion-ui.el question: my vimpulse-show-completion-menu function always gives me an empty menu |
Date: |
Tue, 13 Mar 2007 04:50:12 -0400 |
Hi all,
I am trying to get menu completion working for Alessandro Piras'
vimpulse.el, available on EmacsWiki. (Menu completion is an
ultra-nice feature. Instead of having to press M-/ over and over
until you get what you want, you get a drop-down menu listing the
completion options. To see what menu completion looks like in Vim,
see
http://en.wikibooks.org/wiki/Learning_the_vi_editor/Vim/Useful_things_for_programmers_to_know)
If you have Toby Cubitt's predictive completion from
http://www.dr-qubit.org/emacs.php installed (incidentally, it's a very
cool package), I would appreciate if you could run this code so you
can answer my question 1 below:
;; Begin code {{{
(require 'completion-ui)
;; Note: This code has an additional bug in addition to the problem I
;; am asking about in this mailing list message:
;; When called with a MAXNUM of nil, this func sometimes fails. (Seems
;; to work the first time, then fail all times after, in such cases.
;; To fix, call with a normal MAXNUM.)
(defun vimpulse-try-hippie-expand-listed-functions (prefix &optional maxnum)
; (interactive "*MString to expand:
;nMaximum number of expansions, or nil for unlimited: ")
(setq expansions nil)
(with-temp-buffer
(insert-string prefix)
(hippie-expand nil)
(unless (string-equal (current-message) "No expansion found")
(while (and
(not (string-equal
(current-message)
"No further expansions found"))
(if maxnum (not (= (length expansions) maxnum))))
;; Hippie-expand was designed to be run interactively. If
;; this-command and last-command are equal, it assumes it's
;; being called as a "repeated use" (additional call without
;; moving the point) and searches for additional expansions
;; with the same prefix. So, make this-command and
;; last-command equal.
(setq this-command last-command)
(hippie-expand nil)
(add-to-list 'expansions (buffer-string))
(buffer-string)
))
expansions))
(defun vimpulse-show-completion-menu ()
(interactive)
(setq-default completion-function
'vimpulse-try-hippie-expand-listed-functions)
(setq completion-function 'vimpulse-try-hippie-expand-listed-functions)
;; is this always necessary? Am I even ever supposed to call it?
(completion-setup-overlay 'prefix)
(completion-show-menu))
;; }}} End code
1. Whenever I start typing a word then run
vimpulse-show-completion-menu I get an empty menu. Why? (Am I using
completion-show-menu wrong? It errors on me if I don't call
completion-setup-overlay first, so I call it first. Should I? In
general, what is the proper way to use completion-show-menu? It's not
perfectly documented.
2. Should menu completion really be part of vimpulse.el, or should I
try to get it into the hippie-expand source base? Or, alternatively,
would someone like to take over maintainership of my attempt to get
menu completion working in Emacs?
Thanks in advance,
Jason
P.S. I am using GNU Emacs 22.0.50.1 (i486-pc-linux-gnu, GTK+ Version
2.10.3) of 2006-09-19 on rothera, modified by Debian. That's 6 months
old. I am using predictive 0.16.2; I downloaded it today.
--
Jason Spiro: computer consulting with a smile.
I also provide training and spyware removal services for homes and businesses.
Call or email for a FREE 5-minute consultation. Satisfaction guaranteed.
+1 (416) 781-5938 / Email: info@jspiro.com / MSN: jasonspiro@hotmail.com
- completion-ui.el question: my vimpulse-show-completion-menu function always gives me an empty menu,
Jason Spiro <=