[maemo-users] [maemo-users] editor

From: Danny Milosavljevic danny_milo at yahoo.com
Date: Fri Jan 26 22:51:23 EET 2007

On Wed, 24 Jan 2007 09:40:20 +0100, Jean-Christian de Rivaz wrote:
> Programing directly on the device is interresting. Maybe porting TCC 
> Tiny C Compiler http://fabrice.bellard.free.fr/tcc/ is appropriate. I 
> use it all the time to do small applications on my desktop computer. 
> It's blazing fast and allow to use C file as you use script. It is not 
> fully compatible with GCC, but far enough for everyday use to me.

Sounds nice...

> But I must say that the first thing that prevent to use the device to do 
> programm is the lack of a good editor adatpted to it. 

Slightly off-topic and maybe? a little bit flamebait, but I have never found an editor adapted for programming that wasn't a pain to use in UN*X.

I'd like to know one... (certainly of all the editors there are for UN*X, there should be one that fits requirement below?)

Of the top of my head it should be able to do:
- Unicode (including double-width characters)
- non-variable width fonts (having a variable width font in any kind of entry field is an accident waiting to happen)
- undo
- virtual word wrapping (and I do mean _words_, not wrapping individual characters, like emacs does the latter)
- If the new line after virtual word wrapping is still too long, then insert a virtual linebreak inside it anyway, until it's fitting into the width of the client area
- syntax highlighting (a simple finite state machine dumpfile is enough, ala "joe's own editor")
- search / replace without 36 random reserved characters (while regexps are nice, being _forced_ to use them is a pain, especially when searching & replacing in a text that is itself a regexp ;))
- command line option to jump to line/column number on load
- command line option for file format (implying config for syntax highlighter, argv[] of tools for it (intellisense, indexer, debugger, ...), ...)
- interface for filling extra columns like:
  - line number
  - breakpoint (modifyable)
  - misc user-defined flag
  - line currently debugging on
  - (subversion) blame annotation
  - (subversion) line last changed on date
  - line the user is currently on
  - line the other people viewing this file are currently on
  - and so on...
- folding of blocks
- virtual concatenation of files (I'd really prefer the _filesystem_ to support that, but...)
- every time someone writes "." and then pauses for 1 second, call external tool (with all the text on stdin?)  (Intellisense :))
- every time I press the Newline key in order to create a new line, repeat the leading whitespace from the line I came from on the new line (and I mean, exactly, not expanding tabs, not grouping spaces into tabs, not trying to backstab me, ...)
- keep the file open while editing, so it shows up inside /proc/<pid>/fd/ (or lsof). No really, nobody's gonna die of that one file descriptor.
- double-clicking on a word selects it. A word is delimited by one of " )}]>". If one really must make it more complex, ignore (only) trailing punctuation in that selection.

User interface:
- no (control-..., whatever) key combinations for essential stuff
- no mode-change keys (that means you, vi) (having to change mode 5 times or more in 1 minute is too much) (that does include not having "stuck" keys like Ctrl-K)
- have function keys that actually do something (and I do mean like Save, Search, ... and not inserting gibberish into the text ;))
- being able to move whereever I want on a line, also within the empty (*cough* "non-existant") parts to the right
- Ctrl+Click on a word -> call a tool, passing the word, file and position
- don't destroy the text buffer when the window is resized (some versions of emacs did that)

Nice to have but not essential:
- autosave
- backup files (I'd really prefer the _filesystem_ to support that, but...)
- session saving support (remote saving, like the desktop saying "save all now" to all applications so that some "make" process uses the new version of the edited files)
- usable without X/framebuffer/graphics terminal

_Not_ to have:
- tabs -> the window manager, not the application, manages windows
- multiple buffers -> the process manager, not the application, manages processes
- single instance optimization -> would mess up automated tool firing up an editor to confirm something (that means you, gedit)
- integrated object browser, cross referencer, spell checker, project manager, build system, word counter, program to calculate the answer to the life, universe and everything ...  (can just do that using another tool :))

> The Note application is unusable to do code and editor in xterm are very annoying because there heavly use CTRL ou ESC that are not easly to do on the device.

Or make any sense to do on a desktop PC, for that matter ;)

Sorry for the rant... :)

No really, if anyone knew an editor that fulfills most of these criteria, I'd like to hear about it.
(then I could stop writing the one based to GtkTreeView I started but never seem to finish)

Hm, maybe with a little evil hacking I can get GtkTextView to support most of that... I wonder... (the folding of blocks is something that will hurt to implement, though...)


More information about the maemo-users mailing list