[wingide-users] Autocomplete python more liberally
Jonathan Mozes
jon at rayv.com
Sun Nov 30 08:11:25 MST 2008
What about implementing ipython's ipy_greedycompleter?
This is less 'relaxed' than a word list driven completer, but is more
powerful than the current (code, not shell) completer.
Jon
-----Original Message-----
From: wingide-users-bounces at wingware.com
[mailto:wingide-users-bounces at wingware.com] On Behalf Of Wingware
Support
Sent: Wednesday, November 26, 2008 05:12
To: Peter Bengtsson
Cc: wingide-users at wingware.com
Subject: Re: [wingide-users] Autocomplete python more liberally
Peter Bengtsson wrote:
> I'm realizing more and more how great Wing is but I'm also realizing
> how much I miss the autocomplete.
> How about a custom plugin script that I can bind to a keyboard command
> that takes as a parameter the word the cursor is at and the whole
> buffer as a string?
> I'm happy to get my hands dirty if I can get some assistance.
A primitive word list driven completer is possible using the scripting
API but it's not possible to integrate that well with the regular
auto-completer.
I've appended below a sample script that uses the argument entry
facility at bottom of the editor window to provide simple word-list
driven completion based on the current file contents.
If you put this into the 'scripts' folder in your user settings
directory (which varies in location and is listed 5th in Wing's
About box) and do Reload All Scripts from the Edit menu, then
you can bind a key binding to the command word-list-completion.
It shows a completer once you start typing.
This is just a toy, really, but I thought it may be useful and/or
interesting.
--
Stephan Deibel
Wingware | Python IDE
Advancing Software Development
www.wingware.com
====================================
# Example of using arginfo to provide word list driven autocompletion
# via a script
import string
import wingapi
def word_list_completion(word):
ed = wingapi.gApplication.GetActiveEditor()
start, end = ed.GetSelection()
doc = wingapi.gApplication.GetActiveDocument()
doc.DeleteChars(start, end-1)
doc.InsertChars(start, word)
ed.SetSelection(start + len(word), start + len(word))
def _ArgInfo_word_list_completion():
from wingutils import datatype
from guiutils import formbuilder
from command import commandmgr
doc = wingapi.gApplication.GetActiveDocument()
txt = doc.GetText()
class CWordMap:
def __init__(self, chars):
self.chars = set(chars)
def __getitem__(self, char):
if unichr(char) in self.chars:
return char
else:
return u' '
trans = CWordMap(unicode(string.letters + string.digits + '_'))
txt = txt.translate(trans)
words = txt.split()
choices = set()
for word in words:
choices.add(word)
arginfo = {
'word': commandmgr.CArgInfo(
"Word", datatype.CType(''),
formbuilder.CSmallTextGui(choices=list(choices)),
"Word:", 'internal'
)
}
return arginfo
word_list_completion.arginfo = _ArgInfo_word_list_completion
_________________________________________________
Wing IDE users list
http://wingware.com/lists/wingide
More information about the wingide-users
mailing list