About Snaked

Snaked (snake editor) is light and minimalist editor inspired by Scribes, indented mostly for python developers, but other users may find it useful too.

Motivation

Why I start this project? I was need a good python editor for a long time, tried many IDEs but nothing fits my requests: fast, quick project navigation, flexible code assist tuning, easy to extend.

  • PyDev. Almost ideal solution. But very hard to extend.
  • Netbeans. It’s only a toy. Poor editing capabilities. Very poor auto completion.
  • PyCharm. Only one project for instance. I too often edit modules from several projects simultaneously.
  • Vim + ropevim. May be this is funny, but it is very slow, especially on my netbook with syntax highlight and bracket matching enabled. Also hard to extend. However, I love vim, really, it’s editing experience is cool and I use it for all my non coding tasks.
  • Emacs + ropemacs. It is new environment completely. Too much time to learn.
  • WingIDE. Auto complete is very good. Other features are terribly implemented.

Some words about Scribes. This editor impress me. It shows how one have to design editors (from UI point). Moreover, I started to develop plugins for my needs. For extending I could use my existing PyGtk experience. It seemed dream come true, but few reasons force me to start hack Snaked.

  • Scribes internal architecture. Many little classes with spread out behavior responsibility. Message passing based on GObject signals leads to very long path to investigate how some features are implemented.
  • Overall code style. Ignoring PEP8. Groundless using of private attributes. A little whitespace in code. Scribes sources are hard to read. Pointless gtk main loop invocation. Manual object destruction. Too much boilerplate code, tons of copypasting.
  • Strange author’s opinion about plugins and it’s dependencies distribution.

And after some thoughts about estimated lines count in own light gtksourceview wrapper, I decide to write Snaked.

Goals

  • As little code base as possible. GtkSourceView gives enough features. Editor core should only implement editor and project abstractions, provide plugin system and preferences dialogs for editor settings, shortcut configuration and for choosing active plugins from available extensions.
  • Clean and maintainable code design.
  • Tabs! I’m using awesome tiling wm, so Scribes lacking of tabs is not a problem for me. But many users complain about it.
  • Speed. All development will be made on Atom Netbook. Scribes is too slow on this hardware.
  • Memory footprint. Scribes internals is too complicated to trace all object references and editor leaks like bloody shit. Weakrefs will save the world.
  • Flexible plugin system based on standard python packaging practices.

What does minimalist mean?

First of all it is an absence of user interface noise. During file edit you only need to see text view. Toolbar, menubar, statusbar or project browser are useless. Hence main Snaked principle – you see what you need to see.

In the second you do not need a feature which provided by other tool. For example project browser (to look at project structure or to do file operations) will never be implemented, because File Managers are intended for such tasks.

And third minor claim: there are no any widgets designed for controlling with mouse. For example tab close buttons, toolbars and so on.

However, minimalist doesn’t mean feature poor. I have a bunch of ideas increasing developer productivity which are waiting to be implemented. If you also have suggestions I’ll listen them with pleasure.

Table Of Contents

Previous topic

Snaked user manual

Next topic

Installation

This Page