My First WorkspaceMy primary purpose in trialing zeus was to find an adequate text-based IDE that I could use alongside visual studio that was responsive and handled my current projects and workflow. As the responsive part was handled above, now it was time to dive into actually using it.
My first admission is that I cheated. After opening the initial document and playing around for a while, I just couldn't handle the white, so I jumped ahead and did a bit of configuring. So, the next step is actually going to be that configuration.
Step Three: Configuring the Editor - Part OneI've never understood how people use the standard dark on white- I like the inverse. It's better in the dark (where I love to work) and useable in the light. I'm not sure if I'll be able to get my current visual studio setup (which combines the best of the two IMO)... but I can at least get to where it looks like a terminal. The first thing I did (I learned this time) was to check the forums. There's a lot of help on varied topics- in fact a whole area on
Tutorials, Tips, and Tricks. The cool thing is that it's not just the community, nor is it just the developer- it's the very active developer interacting with a very active community!
It turns out, for the initial setup, having used SlickEdit, it wasn't that big of a deal. Using the menu Options -> DocumentTypes brings up a list of the document types, and once you choose your document type and click edit, the properties for that particular document type comes up. Again, the dialog is a bit overwhelming- but I'm starting to see that I was a bit unfair above. Mouser's screenshot captor has the same problem- because it's VERY powerful, almost deceptively so for something that is as simple as capturing screenshots. Zeus seems to suffer from the same thing. It's a text editor at heart- but it IS an IDE, and seems VERY powerful under the hood. Some things, you just can't break down to a simple format- like trying to get a mechanic used to working on family cars to work on racing cars. There IS a learning curve, but I'm not sure there's a way around it.
Which brings us back to the Tutorials, Tips, and Tricks section of the site- it's very important with things on this level that there be representative involvement (even better if that representative is a developer). This section on the site and the activity there bodes very well for the use of this tool.
Review of Zeus Edit | Review of Zeus Edit | Review of Zeus Edit | Review of Zeus Edit |
menu option | document types | note the extensions | properties dialog |
Back to the actual configuration- the dialog is laid out rather logically. I won't go into everything, but there are a few things of note.
On the General Tab, the Extension section delineates the extensions that this document type applies to; the description is just what it says.
The File New Template is a template that is used whenever you create a document of this type.
Skipping to the General Settings area- this is where you customize how the editor acts, i.e. do I use tabs or spaces- how many spaces are in a tab. Line wrap, margins... there's a lot in this section, but I didn't really have to tweak them at all for the C# type.
On the Templates tab, there are several different templates already defined; they work very simply- just type int he shortcut and space and it is expanded. The interesting thing is that some of the predefined templates seem to execute macros- I'll have to look into that later...
Who am I kidding. It just looks so interesting, I had to try the appc template- very nice! Like metaprogramming in C#, you can actually script out your macros to insert the whole of the program if there is a template that requires it. This one is in LUA, and below is the output.
Review of Zeus EditLooking at the template code, however, I'm going to have to delve into that later:
$MacroExcute<file_untitled.lua $TE>
$ExpandTemplate<$zudzExample\appConsoleCS.tpl>
The next tab is the keywords tab- it defines those special words in this document type that are to be treated as keywords. C# is already populated, so nothing to do there right now. Pretty standard, though nice to see, that it allows you to specify your comment delimiters- not sure what allow nested comments does.
Another aside, normally when you click help in a dialog when you have windows help, it takes you to the topic for the selected control. That is not hooked up in the Zeus help. It takes you to the generic help page, even though there is a specific help section for the DocumentType dialog. Not a big deal, but just something to point out.
The next Tab is the reason that I came into this dialog- Coloring. It's pretty straight forward, and at the same time, very customizable and recognizeable from not only SlickEdit, but the Visual Studio options. To the right is a category of keywords/characters, and to the left is the foreground/background color. The font style and weight can also be set for each. It turns out, I didn't have to do too much- I changed the scheme to black and it was fine! The only thing was I didn't like the font color on the selected line in the default scheme, so I looked around to see how to change that. Scrolling down, it wasn't immediately obvious which one that was- but that's just because of my expectations from other editors. The category was line cursor, where I'd normally see selected line. I changed that and saved that scheme as my own 'Black'. There were also a lot of other color choices in the Display View drop down (for the tools, etc), but it's just the editor I'm picky about.
Review of Zeus Edit | Review of Zeus Edit | Review of Zeus Edit | Review of Zeus Edit |
dialog | pre-installed themes | Display Views | Selected Line |
So I clicked OK, closed the document type dialog, and once I saved the untitled document created by the template as a .cs file, it automagically changed.
Review of Zeus EditBut now that I was in the DocumentType dialog, I figured I'd at least look at the other tabs.
Compiler has the details for the compiler integration- there are quite a few options there, but the defaults from my experience using the command-line vs compiler look good.
Macros has a list of macros- they seem to be written in lua and python if the extensions are any indication, but I force myself to stay away for now.
Mappings is an interesting item - it allows you to assign a document type to an extension-less file by giving it a pseudo file extension. As pre-configured, it's set up for makefile[.mak] and config[.mak].
Tools allows you to add your own custom tools to the tools menu for this particular document type. I think I know where I'm going next as I try to integrate TFS... but I force myself to leave that alone for now.
I'm not sure what the Quick Help tab is used for on first viewing. The stated bit says to "Select the Windows Help, HTML Help, MSDN, or Norton Guide help files to be used by the Quick Help keyword search engine."
It does have a spell check which shows that it can indeed be used to edit your text documents, but I'm here for the IDE, so we bypass that one for now.
Tags Database allows you to configure the tags used by this document type. There's a link to the tags database builder and .NET database builder here also. It already has my created .netdb and the C# dbs configured, so we also leave this alone for now.
So that's the document type dialog in a nutshell. But I'm wondering- one of the things I liked was Brief emulation. If not document type, is there a global editor option? And yes there is. It was right above my document type selection, and is just as featured, so I'll go into that in a bit. Right now, however, my document type is configured, and I have had a glimpse beneath the hood, and see that it's running a very powerful engine.
Rating for Configuration: Part 1 - 9/10 (one point deducted for complexity of dialog and help not being integrated. But I don't know what you could do with the complexity given the power.)Step Four: Configuring the Editor - Part TwoOne of the things that I loved about SlickEdit was the fact that it supported Brief keymappings. Since the old Borland days, I've just been enamored of Brief- however, most editors don't support it out of the box, and because of some of the idiosyncracies, it's hard to just reconfigure an editor to use it. So I had to find out how to enable it. That led to the discovery of yet another settings dialog- this one for general settings.
Review of Zeus EditReview of Zeus EditThe second tab is the one that I'd been looking for- and I see there are a lot of other keymaps defined out of the box, including BriefEx (which I've never learned) and Emacs (which I also tried to learn before deciding I had better things to do with my life). There's also the ability to create your own keymap, and export and import them, which is a nice bit of plating added onto the keymapping feature.
Review of Zeus EditSince I'm here, I'll go through the other tabs in brief (no pun intended)
FTP Hosts lets you define FTP connections for editing files; you can actually do remote editing, though I have less use for that than at one time, it's nice to know it's there.
User Defines holds a few fields that can be accessed for user information in macros and arguments when running tools.
I stumbled across another tab that I need... source control! I've already installed the TFS MSSCCI Provider to utilize with the TFS Command-line tools- it's nice to see that it automatically appears. I'll check to enable that, and look at the advanced options- it basically hooks into the 'Connect to a Team Foundation Server' dialog to choose your TFS server (not showing that because it's barebones and includes some path information) Then it shows the Team Foundation options dialog.
Review of Zeus EditThe debugger tabs let you set up integrated debugging in Zeus... I'll get to that a bit later as that's a bit more than I want to handle in this section.
The Tags tab lets you use something other than ctags; though I'll have no reason to do that, it's nice to know there's the option.
The backup tab has an autobackup option where it can back up periodically- this lets you set that. It also does a backup on save. I'll leave it enabled for right now, but unless I use the periodic, I'll probably disable it since I use source control. Again- nice to know that it is here.
The Fonts tab- pretty standard, but I will change it to use Consolas while we're here.
Triggers is pretty interesting- it allows you to script certain actions- before and after their activation.
Review of Zeus EditAnd the next tab answers something I'd wondered about earlier- what kind of scripting engine is used. It turns out that there are several. By default, it seems to use lua (a good excuse as I'd been wanting to learn lua) but it has python, small c, javascript, rexx(!!!!), ruby, tcl, vb, and wsh. Holy overkill, Batman! That's just incredible!
Review of Zeus EditThe next tab is a letdown after that... but most would be as we go into the pedestrian print options to set your header and footer and whether to print line numbers, etc, etc.
The last tab is labeled Miscellaneous - it has the ability to set up your diff program (it uses winddiff by default for an external diff). It also has an inbuilt diff that is used by default, but this one can override that. It also has a place that you can pare down your navigator (the left pane) a bit, removing those options that you don't use, and a place to set the theme of the navigator.
Though the dialog is just as complex as the file types dialog, it seems to make more innate sense in its layout. I don't know if that's me getting used to Zeus, or if there really is a difference.
One thing I will say after looking at the settings- there's a lot there that you may never touch, but if you need it, it is there. It really hits home that Zeus is an IDE, and wants to be where you spend most of your productive day.
Rating for Configuration: Part 2 - 11/10(I had to do something to reward for that kicking scripting engine dialog.)Step Five: Opening my first workspaceWorkspaces are ZeusEdit's approximation of a solution- a group of projects (where group can mean one) that are opened at the same time and managed by a shell project- the workspace. In addition to managing the project source files that you're currently working on, the workspace manager takes care of keeping the ctags database up to date, and manages builds for all loaded projects (though they can still be built separately).
This is all well and good if Zeus is your only IDE, but no matter how much I like having something to come up quickly and just allow me to code (sort of like a distraction free coding environment) I'm still going to have to use Visual Studio, so how well it opens and manages my current projects is a concern
For my first test, I choose a simple visual studio solution- a query builder common assembly that I created to manage queries based on an object, and generate the requisite SQL with our database specific additions.
The Workspace is managed from a separate menu- instead of the File menu, you use the Workspace menu.
Review of Zeus EditThe dialog defaults to the Zeus workspace type, but it's quick to switch to the Visual Studio type. (One thing that I noticed working with this- I didn't see a way to default this to a selected choice, i.e. I'll most likely always be using Visual Studio solutions. I might have overlooked it, but it hasn't bothered me enough to find out if I am missing an option)
Review of Zeus EditIt takes about 30 seconds to open the workspace and generate the ctags file for it. I also notice that alongside my solution file, there is also now a .zwi file, so ZeusEdit generated a solution in its own format.
Now the workspace manager is filled in with everything that I had in my visual studio solution- including the unit tests, documentation, and unit test configuration files. The class browser is also now functional.
Review of Zeus EditReview of Zeus EditWhen I open a file, the Functions browser becomes active.
Review of Zeus EditThe Files tab also is populated - with just the document that I have open. It seems that I was mistaken and this tab is an arrangement of open files. As I close it, the browser empties again, and as I open multiple files, they are populated. I can see that being very useful...
Review of Zeus EditEditing, is a breeze. The editor is very responsive and the emulation of Brief is spot on. It really makes me want to get to some actual work, rather than just cleaning up some random extra comments that I have lying around. But before I try a larger workspace, I do want to tour the navigation and menus that have become active.
The right click menu is very full featured, with all of the functionality that you'd expect, like jump to declaration, definition, and find all references. There is also a tools, templates, and macros menu- though I do note that the tools menu doesn't include user defined tools on the right click menu.
Review of Zeus EditThe menu is also not responsive, which is probably one of the things that keeps it speedy. What I mean by that is that if you right click on a comment, the declaration, definition, and references menus are still active. Not a big deal.
Review of Zeus EditI haven't set up the compiler, but having noted that there was already a setting in the compiler tab, I figure I might as well try. And it works out of the box- score a big one right there. The output is captured to another tab, and that output is linked to the code. Score another one.
Review of Zeus EditI did notice one thing. As I said, I have extra files in my solution- for documentation that I've created. If I build the whole solution, it chokes on the documentation project, though Visual Studio knows not to build it. I can build the project separately with success, so that's not a problem with a solution of this size, and the larger solutions for the most part don't have that kind of structure. But some do have files that are not included in the build- so I will have to check that.
Review of Zeus EditReview of Zeus EditIt also runs the post build events, so that's a score too- I have the assemblies so that they are copied to a central location for use, and that happened without a hitch.
So far, the first impression with the workspace and the editor are favorable. I do love that it built out of the box with no configuration. I'm concerned about how it treats files that aren't part of the project on build. In this case, the files are packaged a bit differently than most, so this might not be an issue, with most workspaces- but it is an issue.
Rating for Simple Workspace Import experience - 9/10