Elastic tabstops news

News about elastic tabstops: a better way to indent and align code


Tue 2009-12-22 23:52 CET

Programming fonts: proportional vs monospaced

One of the main reasons why I originally invented elastic tabstops was because I'm a big fan of using proportional fonts for programming. As programmers we spend most of our time looking at code and in my opinion proportional fonts make this an easier and more pleasant experience. The creators of Smalltalk, Oberon and Plan 9's Acme seem to agree.

I've made some screenshots of Gedit using my elastic tabstops plugin (minimum-width: 32, padding-width: 8) and the zenburn theme with some different fonts I have installed on this Ubuntu system. The C file displayed is here.

So that's the list. I hope you'll agree that proportional fonts are much easier to read than monospaced ones. You can use them for coding now (as long as no one tries to align text for anything other than indentation), and if elastic tabstops catch on you'll be able to use them for aligning text as well as indenting. I'm working on a plugin for Eclipse now (since a blocking missing feature has now been implemented), so depending on which tools you use that day may be coming soon.

Discuss (3 comments)

[] permanent link


Sun 2009-06-07 19:31 CET

Support for more editors in the works

Visual Studio 2010
Following my last post last year (I really should try and post more frequently), someone from the Visual Studio development team at Microsoft got in contact with me (thanks Noah!). It looks like I will be able to implement elastic tabstops in Visual Studio after all, since VS 2010 should allow me to set non-uniform tabstops on different lines. I think I'll wait until the final version's released before I do anything else.

Eclipse
I had a look into what it would take to get elastic tabstops working on Eclipse. Unfortunately it looks like SWT (the toolkit Eclipse uses) will not let one set non-uniform tabstops on different lines, which is a pre-requisite for the implementation of elastic tabstops. If you're an Eclipse developer (or feel like creating an account) you can vote this bug up here.

NetBeans
In contrast with Eclipse, NetBeans uses Swing, which is a toolkit that already supports the implementation of elastic tabstops (as can be seen in my demo applet here). When I get time I'll try and look into writing a plugin for this IDE.

Another editor supports elastic tabstops - Code Browser
Marc Kerbiquet emailed me last month to tell me that he'd added elastic tabstops to his editor: Code Browser. He's also written a rather nice advocacy page. Since it's cross platform this is probably the first editor to support elastic tabstops that runs on Windows. (There's also Gedit on Windows, which I'd like to see get more attention.)

Plans for an editor of my own
I'm planning to start work on a new cross-platform editor which will of course support elastic tabstops. I have a few innovations I'd like to try, but I also intend to borrow ideas from the best, and I'll also make it scriptable so people can extend it as they see fit. The reason for this is that changing every single editor that exists is impossible, but by making an easily scriptable cross-platform editor which supports elastic tabstops from the start it should be possible for people to script it to feel like their favourite editor. Watch this space...
Discuss (9 comments)

[] permanent link


Wed 2008-10-15 16:20 CET

An update and a request for help

Well, it's been a while so I figured I should give everyone an update. Just over a year ago I released a plugin for Gedit. It works fine, but there are a couple of issues with it, the main one being that Gedit currently only exists on Linux and other X based platforms, and no ports exist for Windows or Mac OS X. The second issue is that it uses an inefficient yet relatively straight forward algorithm which recalculates everything every time the text changes (like my Java demo). As a result I decided to make a better solution that is cross platform and caches the information it needs properly. I've decided to use PyGTK (the Python bindings for GTK) to make my own editor and I hope to have something I can share with you soon. Once my Python implementation is finished I'll also be able to replace the C based Gedit plugin with something which is faster and less work for me to maintain. Also, to make it easier for people to see the idea in action I've reworked my Java demo on the main elastic tabstops page so it can be embedded in the page as an applet.

In other news, my job was outsourced a couple of weeks ago, and while I don't think I'll have too much trouble finding another one, I thought I'd use the time off as an opportunity to see if I can advance my goal of getting elastic tabstops adopted in a major editor. I believe that the concept of elastic tabstops is a real improvement over the status quo, as presumably do some Visual Studio users, Visual Assist X (a Visual Studio add-in) users, Slashdot editors, Eclipse developers, ex Microsoft Excel program managers and many others. Since developers for Microsoft's platform pretty much all use Visual Studio exclusively, it occurs to me that elastic tabstops could be adopted without developers for the platform suffering from the chicken and egg problem that developers on other platforms may face. So, if you work at Microsoft (or know someone who does) now would be a great time to speak to someone on the Visual Studio team about getting them to help me add this feature.

Let's see if we can make things better for programmers.
Discuss (15 comments)

[] permanent link


Sun 2007-09-16 16:59 CET

A proper elastic tabstops plugin for gedit

Right, following Paolo Maggi's suggestion on the gedit mailing list, I've turned the gedit patch into a proper plugin and made the following fixes:
* Other chars than just \n can now terminate paragraphs
* Italic and bold characters are now handled properly
* The minimum width and padding width values can now be configured using gconf
Go to nickgravgaard.com/elastictabstops/#gedit for more information, and please email me if you have any problems.
Discuss (12 comments)

[] permanent link


Mon 2007-05-28 16:31 CET

Introducing elastic tabstops in gedit

I've been pretty quiet for a while, but that's because I've been busy hacking gedit to support elastic tabstops. I've also made a plugin for gedit that allows users to work on projects which use spaces for alignment. To see a screencast of it in action or to download it, visit nickgravgaard.com/elastictabstops/#gedit
Discuss (18 comments)

[] permanent link


Mon 2006-07-10 13:53 CET

New demo of elastic tabstops solves previous version's blank line issue

Judging from the feedback I've received so far, many people liked the concept but complained that the demo implementation meant they had to insert blank lines where they wouldn't normally. Well, I've been working on this for a few days and have come up with a variation on the previous system. Whereas the original system split the text into blocks (whenever it found a blank line), lined up all of the tabs in each block and then stretched each tabstop to fit the widest piece of text in each column, the new version takes advantage of the nested nature of code. As before, it works by creating an array from the text using tabs as the delimiter, but this time it finds a column block by looping through each column individually until it finds a missing tab and then it resizes that column block to fit the widest piece of text it contains. The result is a system that doesn't need all the blank lines that the first version did and makes better use of horizontal space. It also minimises the amount of text that moves on other lines when text is modified.

Please try the new version and give me your feedback. If you'd like to compare it with the old version you can try that here...

grid lines
Discuss (23 comments)

[] permanent link


Fri 2006-07-07 02:58 CET

Post about first public version of elastic tabstops

Okay, it's been suggested I create a way for people to give some feedback, so here it is. Please leave a comment...
Discuss (60 comments)

[] permanent link


RSS feed