X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=elpher.git;a=blobdiff_plain;f=NOTES.org;h=a0358ab1b45c6ff4d405ab2cd6b5719353cc688c;hp=fbc0eb2f98bb8790080e6ac34a83a92a3e1fcafd;hb=021bacb32d0eb7a797c289097f3d348c0665e0bc;hpb=bd0bf4a6cafd0d545eca2fd0256b6be9db2c4432 diff --git a/NOTES.org b/NOTES.org index fbc0eb2..a0358ab 100644 --- a/NOTES.org +++ b/NOTES.org @@ -1,33 +1,56 @@ #+TITLE: Development notes/ideas -* Bookmarks +* Planned improvements -Currently the bookmark page replaces the current page, and it -does so silently (i.e. it doesn't become part of the link hierarchy). -I think this is a mistake, as it results in confusing behaviour when -traversing the link hierarchy after visiting one of the bookmarked links. +** TODO Allow multiple elpher buffers -Instead, I think I should -1. Make the bookmark page part of the hierarchy, and -2. Reinstate the visited node hash table to avoid excess link hierarchy pollution. + Shouldn't be too hard, just need elpher-current-node to be +buffer-local and allow various buffer-switching procedures to +do something sensible. + +** TODO Remove "redraw" command +This is only necessary for returning from displaying the raw +server response. If I can provide a better way of doing that +then we can get rid of redraw entirely. -In order to accomplish 1. it will be necessary to make the bookmark page renderer -a proper getter function, and one that never caches the contents of the buffer. +** TODO Replace support for user-specified starting pages +This used to be available, but was removed during a refactor. -Actually, I might have to think about that a bit more. I don't know -how to answer the question of what the best thing to do with node -parent links when using a cached node in place of a new node. (Maybe -I always update node.parent unless parent is already an ancestor of -node?) +** TODO Allow for grouping of bookmarks +To support this I'd like to add a bookmark page specific +set of keybindings. Currently all bindings available on +the bookmark page are available everywhere else. But +expanding and collapsing bookmark groups sounds like it +might need more specific bindings. -** TODO Complete bookmark support implementation -This is really important, as I can't merge other developments -in this dev branch back into the master branch as long as this is -incomplete. +** IN-PROGRESS Implement Gemini support [88%] + +Here is the checklist of features required before release: +- [X] basic genimi transactions +- [ ] gemini transactions requiring client certificates +- [X] gemini input handling +- [X] gemini map files (text/gemini) +- [X] Support for plain text responses (text/*) +- [X] Support for image responses (text/image) +- [X] Support for mime-specified character encodeing +- [X] Saving responses to disk +- [X] Viewing raw responses + +The last few will be made infinitely easier if we factor the +gopher "getter" code differently. + +* Current issues -* Selectors +* Completed improvements + +** DONE Turn on lexical scoping + A branch exists for this, but there are some compilation kinks +to iron out. + + ** DONE Implement support for telnet entries + Similar to http entries, telnet entries will be handled by code external to elpher. However it seems I made http entry handling a special case, and I don't want another! So the only option is to @@ -35,10 +58,62 @@ bring both http and telnet entries back into the fold by representing them both as standard nodes and having the grunt work done by getter functions. -* Pain points +** DONE Allow users to access selected and current node details. + +** DONE Implement bookmark system + + Currently the bookmark page replaces the current page, and it + does so silently (i.e. it doesn't become part of the link hierarchy). + I think this is a mistake, as it results in confusing behaviour when + traversing the link hierarchy after visiting one of the bookmarked links. + + Instead, I think I should + 1. Make the bookmark page part of the hierarchy, and + 2. Reinstate the visited node hash table to avoid excess link hierarchy pollution. + + In order to accomplish 1. it will be necessary to make the bookmark page renderer + a proper getter function, and one that never caches the contents of the buffer. + + Actually, I might have to think about that a bit more. I don't know + how to answer the question of what the best thing to do with node + parent links when using a cached node in place of a new node. (Maybe + I always update node.parent unless parent is already an ancestor of + node?) + -A list of annoyances that need to be fixed. +** DONE Support character encoding diversity + +** DONE Make URLs the basic address type. +Currently I waste a lot of effort converting between +URL and non-URL representations. This is unnecessary, and +actually makes lots of things uglier. + +For example, the bookmarks file contains addresses in Elpher's +internal representation, whereas I expect users would prefer +it contain URLs. + +So the idea would be for (elpher-node-address node) to be +a either a string or a symbol, with symbols used for "special" +pages (bookmarks, start page, etc). The getter functions +`elpher-address-selector' etc will still do what they currently +do, but will process the URL to do it. + +This also means that non-gopher URLs will be explicitly represented +as such: no more abusing the "h" type for these. + +* Old issues + +** DONE Org mode faces are not present in recent emacs versions +Even 26.1 doesn't seem to have these. This means that, for many +users, elpher doesn't show any difference between any of the +item types. Not a major problem at all, but the faces we inherit +from should definitely be ones which have been present for much +longer. Perhaps the font lock mode faces are the way to go after +all. + +Update: changed all default faces to inherit from font-lock and basic faces. -1. There's no way to determine the address of the current node. -2. There's no way to determin the address of child node without using the mouse. -3. Only one elpher buffer can exist at one time. +** DONE URL-centric addressing breaks bookmark file compatibility + +Need a way to allow people to rescue their old bookmark files +following this update.