Active Topics

 


Reply
Thread Tools
Jaffa's Avatar
Posts: 2,535 | Thanked: 6,681 times | Joined on Mar 2008 @ UK
#21
Originally Posted by Bundyo View Post
The fuss is that Vala can offer simplicity, speed and OO at the same time.
Agreed.

So back on the original topic - i did automate building Vala projects in scratchbox and running them on tablet directly from Monodevelop (will work with every editor that can run scripts).
I think what sets aside a good language from a great language is tools. That's why I increasingly prefer Java to Groovy/Python/Ruby or - shock horror - Perl.

Vala, being a statically typed, compiled language can have the same powerful IDE support that Java has. The other thing which distinguishes a good platform is the libraries. The port of Java's Collections API to libgee, making it usable from Vala was a great idea IMHO.

Anyway, back to IDEs. Eclipse has spoilt me, so my ideal Vala IDE would be similar (possibly even an Eclipse plugin - why develop all the accoutrement rather than concentrate on the language itself). Can Monodevelop/Anjuta/Val(a)IDE do:
  • Syntax highlighting
  • Outline view of the current class/file.
  • Code complete for classes/methods in the same file
  • Code complete for classes/methods in the same project
  • Code complete for classes/methods in included vapi files
  • As-you-type compilation and error reporting
  • Interactive debugging in the IDE using breakpoints, with variable inspection etc.
  • Refactoring of method signatures/classes with the changes rippled through the rest of the project
  • Management of dependent VAPIs
  • Production of a waf config/Makefile or something which can be used to build the project (including the pkg-config lines etc) outside of the IDE

Gedit does the first one. With a plugin, it does the second - ish.

I'd be very happy to push - or even help develop - plugins for a proper IDE to do that: I think it'd give the tablet a really powerful development tool. Dynamic languages like Ruby and Python can't easily have the same powerful IDE support (due to the exact same features which make them so powerful for the other tasks).

TBH, it doesn't matter what the language is: if there's an easy to use IDE with a powerful modern programming language, we might see a lot more apps being developed.
__________________
Andrew Flegg -- mailto:andrew@bleb.org | http://www.bleb.org
 
Bundyo's Avatar
Posts: 4,708 | Thanked: 4,649 times | Joined on Oct 2007 @ Bulgaria
#22
Completely agree with you.

There is a good free/non-free IDE for Python/Ruby/Perl - Komodo, not as good as Eclipse, but it has the main things in place. Vala however still has nothing. Val(a)IDE is far from being usable and i couldn't find anything else than Monodevelop, Emacs and VI support for it. Monodevelop is closer to what i want it to do, but its Vala plugin is targeted to the 2.0 alpha and doesn't have even code completion yet. And code completion is one of the important things to have when learning a new language. At least it has project support in place, along with syntax highlighting and other goodies supported by the IDE and not related to Vala. And as much as i like Eclipse for its other features, its project system is really convoluted.

Then again, maybe Monodevelop Vala plugin has completion, but i wasn't successful in activating it.

EDIT: This is interesting:
http://mail.gnome.org/archives/vala-...er/001093.html
__________________
Technically, there are three determinate states the cat could be in: Alive, Dead, and Bloody Furious.

Last edited by Bundyo; 2008-07-12 at 12:10.
 
Jaffa's Avatar
Posts: 2,535 | Thanked: 6,681 times | Joined on Mar 2008 @ UK
#23
Yeah, I'd seen that thread. Unfortunately it doesn't seem to go anywhere and the original poster's website makes no mention of Vala at all.

My attempts to get Monodevelop working seem to have stalled: it's all compiled, but fails to startup properly:

Extension node not found in path: /MonoDevelop/Ide/Commands
There's an Eclipse plugin for Vala, called Valable which has basic syntax highlighting, but doesn't seem to have had any commits recently. Got it running, but there's nothing it gives over Gedit at the moment.
__________________
Andrew Flegg -- mailto:andrew@bleb.org | http://www.bleb.org
 
Bundyo's Avatar
Posts: 4,708 | Thanked: 4,649 times | Joined on Oct 2007 @ Bulgaria
#24
Nightly sources and openSUSE rpms here:
http://mono.ximian.com/monobuild/sna...ownload-trunk/

I'm using them, what distro are you on?

EDIT: Something with apt-get it seems

EDIT EDIT: Seems i've been mistaken, the class browser is working. At least i can browse the Libosso VAPI (I updated the libosso VAPI originally made by one of the Canola guys to work with 0.3.4, should i upload it somewhere, i'm also trying to create a VAPI for hildon-desktop, but it looks like i should first go through some Xorg libs).

EDIT EDIT EDIT: Strangely enough i can only see libosso (which is a VAPI i keep in the project structure). There is also autocompletion for it... That can only mean two things: bug or i'm not doing something right.

And another: After i copied all VAPIs in my project folder (symlink won't do), i have completion and class browser working.
__________________
Technically, there are three determinate states the cat could be in: Alive, Dead, and Bloody Furious.

Last edited by Bundyo; 2008-07-12 at 18:57.
 
Jaffa's Avatar
Posts: 2,535 | Thanked: 6,681 times | Joined on Mar 2008 @ UK
#25
Yeah, using Ubuntu 8.04.

Will try running alien across those nightlies.

Interesting that you can get code complete & browsing across VAPIs within your project structure. Either it's supposed to do it and doesn't know where your system-wide VAPIs are, or it should be a trivial addition to make it work. Alternatively, do you need to add the package in an equivalent of a Java project in Eclipse's Project Properties > Build path > Libraries?

With regard to VAPIs, we were discussing in #maemo about how it should be possible to auto-generate at least a static, procedural API for any given library and .h - probably after at least cpp has done its job (and maybe there's an even better point in the gcc chain in which to intercept and get some data). This'd help with the X.org libs...

For an updated libosso - is the existing one somewhere online? If so, a small patch in mud-builder for it would do, and handle the debianification of it. Alternatively worth submitting upstream? I get the impression that bundling more VAPIs isn't going to be something they're going to reject. Failing that, is it worth a Garage project?
__________________
Andrew Flegg -- mailto:andrew@bleb.org | http://www.bleb.org
 
Bundyo's Avatar
Posts: 4,708 | Thanked: 4,649 times | Joined on Oct 2007 @ Bulgaria
#26
There is Project Options -> Code Generation -> Libraries/Paths. I didn't specify any libs, but i specified the path of libosso and also the general vapi path. Seems it doesn't work with the latter. Kinda buggy yet. When i only had libosso in path, Monodevelop showed it in the class browser and i had completion. Now that i have all the libs in the path, class browser works (updates not very fast and i have to click refresh to get the ahole list in the end), but code completion refuses to show up. Maybe some overflow, will test it more.

About the VAPIs - the process of vapi generation is somewhat automated and can be fully so maybe with a list of libs and namespaces. VAPI metadata files can help even more as to define the variable types in the libs, so that they can be easily rebuilt on the next release. The process of generation is described here, although not very detailed. You can get all types of errors there, like duplicate signal and method names for instance

libosso.vapi is available online (in several versions), so patch will be best (i didn't do much). And yes, Vala project probably will benefit from a growing vapi repository.
__________________
Technically, there are three determinate states the cat could be in: Alive, Dead, and Bloody Furious.
 
Jaffa's Avatar
Posts: 2,535 | Thanked: 6,681 times | Joined on Mar 2008 @ UK
#27
Originally Posted by Bundyo View Post
About the VAPIs - the process of vapi generation is somewhat automated and can be fully so maybe with a list of libs and namespaces. VAPI metadata files can help even more as to define the variable types in the libs, so that they can be easily rebuilt on the next release. The process of generation is described here, although not very detailed. You can get all types of errors there, like duplicate signal and method names for instance
Indeed, but my reading of that - and the manpage - suggests that vapigen can only be used on libraries based on GObject so you can use introspection. There seems to be no mention of automatically converting any library - which is what you'd need for a starting point for the X.org libs.
__________________
Andrew Flegg -- mailto:andrew@bleb.org | http://www.bleb.org
 

The Following User Says Thank You to Jaffa For This Useful Post:
Bundyo's Avatar
Posts: 4,708 | Thanked: 4,649 times | Joined on Oct 2007 @ Bulgaria
#28
Yes, you are right, hadn't thought of that.
__________________
Technically, there are three determinate states the cat could be in: Alive, Dead, and Bloody Furious.
 
Bundyo's Avatar
Posts: 4,708 | Thanked: 4,649 times | Joined on Oct 2007 @ Bulgaria
#29
Just generated VAPI from the smallest X11 include - Xmd.h, seems to work OK, dunno if it will be usable, but I'm gonna try at least to get hildon-desktop VAPI built.
__________________
Technically, there are three determinate states the cat could be in: Alive, Dead, and Bloody Furious.
 
Bundyo's Avatar
Posts: 4,708 | Thanked: 4,649 times | Joined on Oct 2007 @ Bulgaria
#30
I generated a X VAPI, but Vapigen is generating x_[something]_free() for default free function, but as far as i can see, X uses destroy_[something](). I can declare them by hand (there's a free_function declaration in the VAPI)... but that would require much time... Will see if there is any pattern in the function names and if some regular expression can help...

EDIT: Doesn't work with destroy_[something](). However it works with simple free() and i'm able to compile, but can this lead to not freeing resources effectively?
__________________
Technically, there are three determinate states the cat could be in: Alive, Dead, and Bloody Furious.

Last edited by Bundyo; 2008-07-13 at 21:49.
 
Reply


 
Forum Jump


All times are GMT. The time now is 03:22.