freenode/#clim - IRC Chatlog
Search
17:42:56
contrapunctus
Well, I was wondering...how could one extend the benefits of the Emacs model into applications which work with data not suited to textual representations?
17:43:26
contrapunctus
Like, it's very cool to be able to use the same commands for navigation, search and editing in (almost) all applications (Emacs extensions). But the text buffer model doesn't work for everything - and even when it does, it's sometimes restrictive.
17:43:40
pjb
contrapunctus: well, indeed, emacs is quite magical, in that it's first purpose is to edit text, so it can be used to edit lisp programs.
17:43:54
pjb
contrapunctus: but this doesn't prevent an emacs to deal mainly with some other kind of data.
17:44:21
pjb
contrapunctus: the only thing, is that you will integrate an editor/lisp IDE to be able to edit lisp code within the application.
17:45:14
pjb
The main data structures are partitions -> notes, but you still use common lisp and an integrated text editor to be able to write code.
17:48:16
pjb
Now, if you consider the emacs key bindings (say the default or usual key bindings, but it's also valid for more mode-specific or custom key bindings), some of them are used to navigate a more or less structured text data structure (pages, paragraphs, sentences, words, characters) or (procedure expression symbol character) etc. This is quite an artificial and mode specific mapping.
17:49:18
pjb
This is obviously mapped to the (basically sequential structure of) partitions, so you can also use those key binding there, but even if you have other kind of data structures, you can use those keys in your keymaps.
17:49:53
pjb
But probably, you will have additionnal key bindings, specific to your data structure (eg. to nagivate a tree or a graph or something else).
17:50:38
pjb
This is specific to the mode, ie. the data structure edited by the mode. Even in emacs, it's not always a sequence such as text. There are modes to edit spreadsheets, databases, trees, graphs, etc.
17:51:29
pjb
Of course, there's always a level where you have to edit sequential text (strings), so you have always this basic text editing mode with its key bindings.
17:52:14
pjb
(eg. you can have to edit the title of a video, or some text incrustations, but you can also have to edit the video itself, so you will have different sub-modes).
18:01:31
jackdaniel
or, to be more precise, emacs is a simplification of the model clim strives to achieve
18:16:46
jackdaniel
https://github.com/McCLIM/McCLIM/pull/1039 tadam, here is a pull request which implements something I've started over a year ago, namely separation of the event queue and the input buffer
18:31:34
jackdaniel
its spec is quite lenghty, so rather not very easy. but i.e scymtym's clouseau gives you a good opportunity to introspect McCLIM structures
18:31:38
pjb
contrapunctus: I don't think it can be considered easy to implement and debug, given the time it takes to make a complete implementation (cf. McCLIM, etc).
18:32:10
pjb
contrapunctus: once you understand it well, it's probably easy enough to do a proof-of-concept prototype.
18:32:43
scymtym
contrapunctus: the CLIM specification is vague in many places and requires the implementation to do some complicated things. so it is not easy to implement. debugging on the other hand is mostly easy since you can concentrate on individual modules, draw debugging information everywhere and, as jackdaniel said, use the inspector to see what is going on
18:33:34
jackdaniel
otoh, assuming that the implementation is a) complete, b) stable and that you know abstraction, implementing things in CLIM is fun and easy
18:34:35
jackdaniel
but neither a) and b) is especially true (it is better than it was - hopefully); and there is only a handful of people who know abstractions on satisfying level
18:35:01
scymtym
and i should add that, while pinpointing problems is often easy, finding the /right/ solution often is not easy
18:38:17
scymtym
if we just could pick up the pace. i have so many pending changes (and i'm sure it's the same for others)
18:45:53
contrapunctus
The reason I ask is because I'm thinking of making a set of applications - malleable ( https://malleable.systems ) variants of programs I use regularly. I'm tired of applications being inextensible, hard to debug, consuming more resources than I'd like, and built on inconsistent abstractions...so those are the areas I'd like to focus on. CLIM is one of the ways I figured it could be done.
18:46:13
contrapunctus
(I see the implementation/specification complexity as a factor in the first three...)