Add function to open root index file

Call up `require 'zettelkasten'.open_index()` to open the file.
Pass along a file name `require 'zettelkasten'.open_index('home')` to
open said file at the zettel root instead.
This commit is contained in:
Marty Oehme 2021-07-26 22:26:15 +02:00
parent 98eeaf6fc7
commit aad77cff07
Signed by: Marty
GPG key ID: B7538B8F50A1C800
3 changed files with 45 additions and 8 deletions

View file

@ -77,7 +77,6 @@ where at the top the currently effective options with their defaults and availab
## up next ## up next
* action.lua testing
* note listing * note listing
* note jumping (existing to existing) * note jumping (existing to existing)
@ -85,7 +84,8 @@ where at the top the currently effective options with their defaults and availab
* [ ] note creation (new anchor) * [ ] note creation (new anchor)
* [x] create anchor * [x] create anchor
* [x] *unique* anchor creation * [x] *unique* anchor creation checking existing zettels
* [ ] unique anchor creation for multiple quick-repetition link creation (see [#anchor creation] section)
* [ ] implement custom anchor creation function to go with custom anchor regex (turn anchor options into objects similar to parsers, to let *them* do the work) * [ ] implement custom anchor creation function to go with custom anchor regex (turn anchor options into objects similar to parsers, to let *them* do the work)
* [x] create link (md / wiki) * [x] create link (md / wiki)
* [ ] note listing (anchors / titles, no anchor) * [ ] note listing (anchors / titles, no anchor)
@ -112,21 +112,32 @@ where at the top the currently effective options with their defaults and availab
* [x] link detection/following (under word, next on line) * [x] link detection/following (under word, next on line)
* [ ] recursive dir lookup for zettel * [ ] recursive dir lookup for zettel
* [x] zettel anchor regex * [x] zettel anchor regex
* [ ] open zettel root directory / index page
* [x] index.md at root directory
* [x] custom index page name option
## TODO: maintenance ## TODO: maintenance
* [ ] remove hard-coding of option vimnames in tests, now that we can dynamically change this through a single table * [ ] remove hard-coding of option vimnames in tests, now that we can dynamically change this through a single table
* anchor creation ## Anchor Creation
* *must* be unique * *must* be unique
* default: 10 digits, usually current date+time (YYMMDDHHmm) * default: 10 digits, usually current date+time (YYMMDDHHmm)
* but, if multiple links created within one minute (or other circumstances), this would duplicate * but, if multiple links created within one minute (or other circumstances), this would duplicate
* thus, duplicate-check before creating a new anchor * thus, duplicate-check before creating a new anchor
* go through all existing zettels and check id
* but also, what if generating multiple new zettels quickly after another? (e.g. vim macro)
* then new zettel do not exist as a file yet, thus can not be checked for
* possibly unique anchor function should check both files and existing anchor id's in currently open zettel (e.g. in links)
* can not possibly check in all other zettels, and should rarely be necessary for zettel creation
* then, merge the two existing lists and check for uniqueness in merged list?
* if duplicated, generate first *non*-duplicated link (recursive?) * if duplicated, generate first *non*-duplicated link (recursive?)
* try to move *backwards* through minutes not forward * try to move *backwards* through minutes not forward
* i.e. if 2030101200 exists move to 2030101159, 2030101158, ... * i.e. if 2030101200 exists move to 2030101159, 2030101158, ...
* if moving backwards, we do not take away id space from *future* note creation * if moving backwards, we do not take away id space from *future* note creation
* if moving forwards, every zettel created within a minute would delay next zettel creation *another* minute * if moving forwards, every zettel created within a minute would delay next zettel creation *another* minute
* to decide: should zettel creation create a zettel in current working dir or at zettel root dir? or set by option? * to decide: should zettel creation create a zettel in current working dir or at zettel root dir? or set by option?
* [ ] (CODE) switch -- comments to --- doc comments for function descriptions etc * [ ] (CODE) switch -- comments to --- doc comments for function descriptions etc
@ -153,7 +164,13 @@ where at the top the currently effective options with their defaults and availab
* [ ] file/directory exception list for gathering files, which will be ignored * [ ] file/directory exception list for gathering files, which will be ignored
* [ ] 'strict' mode *only* matching and following valid anchor links * [ ] 'strict' mode *only* matching and following valid anchor links
* [ ] link creation - remove special marks, make customizable (e.g. i- will: help. -> i--will:-help..md [currently] -> i-will-help.md [possibly]) * [ ] link creation - remove special marks, make customizable (e.g. i- will: help. -> i--will:-help..md [currently] -> i-will-help.md [possibly])
* [ ] option to automatically save on switching zettel, making link jumping/ zettel creation easier
* [ ] function exposed to jump cursor to next/previous link
* [ ] index file functionality
* [ ] several default options (index, home, wiki, ..)
* [ ] optionally look for index file in sub-directories (could allow 'zettel' being directories as well)
* [ ] if not existing could be auto-populated by adjacent zettel links (e.g. in same directory; backlinked; ..)
## Developing / Debugging ## Developing / Debugging

View file

@ -52,4 +52,19 @@ function A.make_link(visual)
start_col)) start_col))
end end
return {open = A.open, open_selected = A.open_selected, make_link = A.make_link} -- Opens an index.md file at the zettelkasten root directory whether it
-- exists or not.
function A.open_index_file(name)
local link = {
ref = o.zettel().rootdir .. "/" .. (name or "index") ..
o.zettel().extension
}
A.open(link)
end
return {
open = A.open,
open_selected = A.open_selected,
open_index_file = A.open_index_file,
make_link = A.make_link
}

View file

@ -28,10 +28,15 @@ function ZK.open_or_make_link(visual)
if not ZK.open_link() then ZK.make_link(visual) end if not ZK.open_link() then ZK.make_link(visual) end
end end
-- Open index file at zettel root directory. If title is passed in opens
-- `title`.<extension> file, otherwise defaults to `index`.<extension>.
function ZK.open_index(title) return action.open_index_file(title) end
return { return {
get_zettel_list = ZK.get_zettel_list, get_zettel_list = ZK.get_zettel_list,
get_anchor = ZK.get_anchor, get_anchor = ZK.get_anchor,
open_link = ZK.open_link, open_link = ZK.open_link,
make_link = ZK.make_link, make_link = ZK.make_link,
open_or_make_link = ZK.open_or_make_link open_or_make_link = ZK.open_or_make_link,
open_index = ZK.open_index
} }