commit 13867a1b216b15085c4afb94772c7cea13b55e37
parent e5ee58a717143ba40f5e2f6945759eba78a698fc
Author: Oscar Benedito <oscar@oscarbenedito.com>
Date:   Sun, 30 Jan 2022 19:05:11 +0100
Updates to vimwiki config and HTML generation
Diffstat:
3 files changed, 28 insertions(+), 13 deletions(-)
diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua
@@ -14,7 +14,7 @@ local ret = require("paq") {
 
 do -- vim-commentary
     vim.cmd [[
-        augroup packer_vimcommentary
+        augroup paq_vimcommentary
             autocmd!
             autocmd FileType apache,crontab setlocal commentstring=#\ %s
         augroup END
@@ -37,15 +37,23 @@ end
 
 
 do -- vimwiki
-    -- first category is used for important meta files to be shown on root,
-    -- last category is used for uncategorized files
-    vim.g.vw_categories = { "Arrel", "Notes", "Temporal", "Receptes", "Blog", "Projectes", "Tecnologia", "Programari", "Altres", "Arxiu", "Sense categoria" }
+    vim.cmd "nmap <Leader>t <Plug>VimwikiVSplitLink"
+    vim.cmd "nnoremap <Leader>wha :VimwikiAll2HTML<CR>"
+
+    vim.cmd [[
+        augroup paq_vimwiki
+            autocmd!
+            autocmd FileType vimwiki
+                \ autocmd! paq_vimwiki BufWritePost <buffer> silent :Vimwiki2HTML
+        augroup END
+    ]]
 
     vim.g.vimwiki_global_ext = 0
     vim.g.vimwiki_folding = "custom"
 
-    vim.cmd "nmap <Leader>t <Plug>VimwikiVSplitLink"
-    vim.cmd "nnoremap <Leader>wha :VimwikiAll2HTML<CR>"
+    -- first category is used for important meta files to be shown on root,
+    -- last category is used for uncategorized files
+    vim.g.vw_categories = { "Arrel", "Notes", "Temporal", "Receptes", "Blog", "Projectes", "Tecnologia", "Programari", "Altres", "Arxiu", "Sense categoria" }
 
     local vw_categories_str = ""
     for _, c in pairs(vim.g.vw_categories) do
diff --git a/.local/share/vimwiki/template.html b/.local/share/vimwiki/template.html
@@ -8,7 +8,7 @@
     <style>
 body {
     margin: 1em auto;
-    max-width: 800px;
+    max-width: 900px;
     line-height: 1.5;
     padding: 0 1em;
     font-family: sans-serif;
@@ -49,6 +49,10 @@ hr {
     border-top: 2px solid #777;
     height: 2px;
 }
+li {
+    margin-top: .25em;
+    margin-bottom: .25em;
+}
 .header {
     text-align: center;
     margin: 2rem 0;
diff --git a/.local/share/vimwiki/wiki2html.py b/.local/share/vimwiki/wiki2html.py
@@ -81,12 +81,15 @@ def make_toc_file(path, wiki_path, categories):
         f.write(text)
 
 
-def href_to_html(match):
+def href_to_html(match, wiki_path, root_path):
     href = match.group(2)
-    if not re.search('://', match.group(2)):
-        href += '.html'
-        if match.group(3):
-            href += '#' + match.group(3).replace(' ', '-').lower()
+    if not re.search('://', href):
+        if re.search('^' + root_path + 'static/', href): # it's a static file, link to it
+            href = wiki_path + href[len(root_path):]
+        else: # it's a vimwiki page, link to the output html
+            href += '.html'
+            if match.group(3):
+                href += '#' + match.group(3).replace(' ', '-').lower()
     return "[{}]({})".format(match.group(1), href)
 
 
@@ -94,7 +97,7 @@ def wiki_to_html(input_file, output_file, template_file, root_path, wiki_path, c
     params, text = get_file_metadata_and_text(input_file, wiki_path, categories)
 
     # format links for HTML
-    text = re.sub('\[([^]]+)\]\(([^)#]*)(?:#([^)]*))?\)', href_to_html, text)
+    text = re.sub('\[([^]]+)\]\(([^)#]*)(?:#([^)]*))?\)', lambda m: href_to_html(m, wiki_path, root_path), text)
     # add support for TODOs
     text = re.sub('^([ \t]*- )\[[ .oO]\] ', lambda m : m.group(1) + '<input type="checkbox" disabled> ', text, flags=re.MULTILINE)
     text = re.sub('^([ \t]*- )\[X\] ', lambda m : m.group(1) + '<input type="checkbox" checked disabled> ', text, flags=re.MULTILINE)