I use vim as an editor for DM files, and I've given them C highlighting to get the important keywords a decent color. I'd like to try my hand at a .vim highlighting file some day, but the thought of doing that for DM just gives me all kinds of itches to run away screaming.
Beyond syntax highlighting, I found a few issues at first:
1) The DreamMaker command is long and ugly (Starts with a big letter, etc)
2) Zipping stuff up requires you type zip library_name.zip *.dm *.dme - That can be shortened ^^
3) If you have a repository with your game, and it uses libraries, then those libraries don't get downloaded automatically. DreamDownload doesn't download them automatically either.
4) If you use a library someone else wrote, but they have bug(s) they haven't fixed, and you want to deploy your code so others can use it, then you'll need to tell them to fix the code!
5) Jumping between files takes time
For some of this, I wrote a simple Makefile. This is the 'basic' template version:
TARGET=$(notdir $(basename $(CURDIR))) all: DreamMaker $(TARGET).dme clean: rm -rf $(TARGET).zip rm -rf $(TARGET).dmb rm -rf $(TARGET).rsc zip: rm -rf $(TARGET).zip zip -R $(TARGET).zip *.dm *.dme
To compile: Type make (:make inside vim works as well; I've bound :make to F5).
To zip the project up, type make zip
To remove dmb, rsc and zip files, type make clean.
The Makefile will assume that your .dme file is named exactly the same as the directory its in - If that isn't the case, the Makefile will screw things up.
In order to get around the issue of library dependencies, my own game has a 'make depend', that looks like this:
depend: DreamDownload byond://Alathon.services DreamDownload byond://Alathon.telnet_input DreamDownload byond://Alathon.callwrapper DreamDownload byond://AbyssDragon.Parser cp parser.patch ~/.byond/lib/abyssdragon/parser cd ~/.byond/lib/abyssdragon/parser && patch -p1 -i parser.patch Parser.dm
It will download the libraries I need, and will patch AbyssDragon.Parser because theres a bug with numbers in there. The patch was created by running 'diff -Naur oldfile fixedfile >> parser.patch', and can be applied as you can see, with the patch command. Patches are handy stuff!
I can also really suggest autojump. It makes moving around your hard-drive a *lot* faster, if you're not a cd or two away from where you want to be.
As for actually working in vim, I use a VIM plugin called winmanager, you can find a patched up version of it here. Below is an example screenshot of me inside a project, with a few files open (They're listed in the 'File List' in the bottom left), and the file browser in general on the left side.
I've mapped the file browser to an easy key (F2), so that I can open and close it at will - If I need more screen real-estate to work on some code, I hit F2 and it closes. I need to switch to a file? I hit F2 and it opens right back up the way it was. It also works with mouse interaction, so you can click on files to open them.
Click to view VIM screenshot
Huh?