Hey there all,
Thanks for getting this idea of off the ground Thomas. I'm really pleased that we're starting a potentially fruitful dialogue on this. I think that it's a great idea - particularly for languages where it is simple (I'm thinking html, css here). Also, there has been a lot of talk about whether code completion for dynamic languages such as Ruby is even possible, however I think that if we follow the 80/20 rule, we don't need to aim for perfection, just to help people in the majority of situations.
Also, I'd like to suggest that we actively build a corresponding suite of tests alongside the development of this tool/library/suite.
It would be great to be in a position to say 'hey, the code completion doesn't work as expected for this case, so I've written a test to capture it, and here's a corresponding patch to fix it'. I feel we should follow the Rails implementation methodology and not allow patches/improvements without corresponding tests.
The important things here aren't just that we'd get fixes for things, and tests to make sure the bugs never return, but we start to create a language to help define what we collectively 'expect' from a code completion tool, as I'm sure there is a bit of ambiguity here.
Cheers, Sam Aaron
On 7 Dec 2006, at 3.06 pm, thomas Aylott wrote:
Ok. There are now a bunch of people that have signed on to work on this thing.
Time to start divvying up the workload.
#1: First, we need a Ruby Class for the core essentials of the completion stuff. It needs to: Be an external library that can be called from a hundred different tmCommands Be fully runnable from the terminal by manually passing in all the arguments (so, use the TM_* vars only as fallback) Get the text you're in the middle of writing Get the list of completions based on that text from somewhere (see #2) Show the menu and let you make your selection Return a snippet with the results
#2: To go with the first one, we need to define the format that the list will be in. Plist format, simple or xml or binary This list will either be: the contents of a static file or a command that returns the list in the necessary format (this is where you could write something smart to parse stuff) I'd like to use the .completions file extenstion, maybe .tmCompletions ? Eventually we could pressure Allan into more advanced support for it ;)
Once we have the basic format (#2) and the basic completer (#1), we can… (#3)
#3: Start writing static plist lists of completions. This is not ideal for all languages, obviously, but will make the completer useful quickly. Best for code like HTML that is just what it is. HTML 4 XHTML CSS JavaScript Core Stuff
#3.5: tmCompletions generators. Maybe something that will parse your entire Rails application and manually create a code completion list of all the Classes and methods. Maybe something to convert an hdoc into a codecompletion list
While some people are busy with #3, other people can get on with #4
#4: My real goal of this whole thing. Dynamic lists. I figure this part will take the form of various plugins for various languages and libraries and your own personal code libraries and whatever you like. Could be based on stuff done in #3.5 We need to work with #1 and #2 to make sure everything needed for #4 is available and extendable.
Ok, so who wants to do what? Personally, I want to do all of it, but i have a job and a family and other stuff I need to do. So i guess we should divvy it up and get it done faster.
thomas Aylott — design42 — subtleGradient — CrazyEgg
For new threads USE THIS: textmate@lists.macromates.com (threading gets destroyed and the universe will collapse if you don't) http://lists.macromates.com/mailman/listinfo/textmate