Fixed error in previous commit.
[elpher.git] / NOTES.org
1 #+TITLE: Development notes/ideas
2
3 * Planned improvements
4   
5 ** TODO Make URLs the basic address type.
6 Currently I waste a lot of effort converting between
7 URL and non-URL representations.  This is unnecessary, and
8 actually makes lots of things uglier.
9
10 For example, the bookmarks file contains addresses in Elpher's
11 internal representation, whereas I expect users would prefer
12 it contain URLs.
13
14 So the idea would be for (elpher-node-address node) to be
15 a either a string or a symbol, with symbols used for "special"
16 pages (bookmarks, start page, etc).  The getter functions
17 `elpher-address-selector' etc will still do what they currently
18 do, but will process the URL to do it.
19
20 This also means that non-gopher URLs will be explicitly represented
21 as such: no more abusing the "h" type for these.
22
23 ** TODO Allow multiple elpher buffers
24
25    Shouldn't be too hard, just need elpher-current-node to be
26 buffer-local and allow various buffer-switching procedures to
27 do something sensible.
28    
29 ** TODO Turn on lexical scoping
30
31    A branch exists for this, but there are some compilation kinks
32 to iron out.
33
34 ** TODO Remove "redraw" command
35 This is only necessary for returning from displaying the raw
36 server response.  If I can provide a better way of doing that
37 then we can get rid of redraw entirely.
38
39 ** TODO Replace support for user-specified starting pages
40 This used to be available, but was removed during a refactor.
41
42 * Current issues
43
44 * Completed improvements
45   
46 ** DONE Implement support for telnet entries
47
48 Similar to http entries, telnet entries will be handled by code
49 external to elpher. However it seems I made http entry handling a
50 special case, and I don't want another!  So the only option is to
51 bring both http and telnet entries back into the fold by representing
52 them both as standard nodes and having the grunt work done by getter
53 functions.
54
55 ** DONE Allow users to access selected and current node details.
56    
57 ** DONE Implement bookmark system
58
59   Currently the bookmark page replaces the current page, and it
60   does so silently (i.e. it doesn't become part of the link hierarchy).
61   I think this is a mistake, as it results in confusing behaviour when
62   traversing the link hierarchy after visiting one of the bookmarked links.
63
64   Instead, I think I should
65   1. Make the bookmark page part of the hierarchy, and
66   2. Reinstate the visited node hash table to avoid excess link hierarchy pollution.
67
68   In order to accomplish 1. it will be necessary to make the bookmark page renderer
69   a proper getter function, and one that never caches the contents of the buffer.
70
71   Actually, I might have to think about that a bit more.  I don't know
72   how to answer the question of what the best thing to do with node
73   parent links when using a cached node in place of a new node.  (Maybe
74   I always update node.parent unless parent is already an ancestor of
75   node?)
76
77   
78 ** DONE Support character encoding diversity
79
80 * Old issues
81
82 ** DONE Org mode faces are not present in recent emacs versions
83 Even 26.1 doesn't seem to have these.  This means that, for many
84 users, elpher doesn't show any difference between any of the
85 item types.  Not a major problem at all, but the faces we inherit
86 from should definitely be ones which have been present for much
87 longer.  Perhaps the font lock mode faces are the way to go after
88 all.
89
90 Update: changed all default faces to inherit from font-lock and basic faces.