Wiki.vim Versions Save

A wiki plugin for Vim

v0.9

3 weeks ago

It's been way too long since I made a release. Still, there has been a lot of improvements and updates. The main highlights of this update are:

  • The g:wiki_select_method has become much more powerful.
  • Added WikiLinkIncomingToggle and WikiLinkIncomingHover.
  • Added WikiLinkAdd.

Important: This is the final release of wiki.vim that supports older Vim and neovim versions. Starting now, I will bump the version requirements to Vim 9.1 and Neovim 0.9.5. I am aware that these are very recent versions, but I want to have that flexibility. Users who for some reason need to or want to use older version should stay on the v0.9 tag.

Features

  • UI
    • Added :WikiLinkAdd with corresponding mapping and API method (#329)
    • Added g:wiki_ui_method for choosing ui backends (#317)
    • [breaking] Generalized g:wiki_select_method
      • This allows custom backends for Wiki{Pages,Tags,Toc}
      • This adds support for Telescope as a select method
      • See :help wiki-advanced-config-3 for an example on how to customize the select method with fzf-lua.
  • Link graph
    • Added incoming links functionality (#313)
      • :help WikiLinkIncomingToggle
      • :help WikiLinkIncomingHover
    • Change default depth for WikiGraph{In,Out}
  • API changes
    • [breaking] Renamed Wiki#toc#get_section_at to wiki#toc#get_section
    • Improved wiki#toc#gather_entries
    • Improve filetype specifications for wiki#toc#... (#346)
    • Skip fenced code blocks in wiki#link#get_all_from_lines
  • Other
    • Added initial support for BibDesk links (#341)
    • Added the activated link to the template context (#342)
      • :help wiki-templates-context

Bug Fixes

  • Wrapped fd path in quotes to handle spaces in the path (#336)
  • Improved formatted echos
  • Ensure folds are disabled in popups
  • Fixed regression in wiki#graph#check_orphans (#322)
  • Removed empty anchors from urls (#323)
  • Only remove first toc entry if it makes sense
  • Fixed bug with handling windows paths in wiki#paths#relative (#340)

Acknowledgements

I would like to give a special thanks to @camfowler who contributed with the PR #336.

v0.8

9 months ago

This is a significant update that brings several breaking changes! I'm quite proud of the updates and I believe they both very much improves wiki.vim as a plugin for users, and also makes it easier to continue future maintenance and improvement. I've tried to highlight the most important changes below, but the gist, in short:

  • Much more flexible handling of links and URLs with new options:
    • g:wiki_link_creation
    • g:wiki_link_schemes
    • g:wiki_link_default_schemes
  • Better UI for Neovim with popups for actions to input, confirm or select stuff.
  • Better docs!
  • Lots of other changes and improvements!

Also, wiki.vim is no longer considered "simple". That is, the slogan A simple wiki plugin for Vim is now A wiki plugin for Vim. :rocket:

Features

  • Breaking changes
    • Added new option g:wiki_link_creation (#296, #299)
      This option provides a more flexible filetype dependent behaviour. It also deprecates four other options and thus makes configuring wiki.vim easier for most people. And since the new option provides sensible defaults, it also means most people will require less customization.

      The following options are deprecated:

      • g:wiki_map_text_to_link
      • g:wiki_map_create_page
      • g:wiki_link_extension
      • g:wiki_link_target_type
    • Changed the word toggle to transform, e.g. <plug>(wiki-link-toggle) is now <plug>(wiki-link-transform).
      The word "toggle" is not a good word for the act of changing a link from one type to another. Transform may not be perfect, but at least it is much better.

      This changes two options:

      • g:wiki_link_togglesg:wiki_link_transforms
      • g:wiki_link_toggle_on_followg:wiki_link_transform_on_follow
    • Changed default of g:wiki_write_on_nav to 1

    • Refactored significant parts of the code. These are mostly hygienic changes that makes it easier to continue development and perform other improvements. But I believe they make things simpler to reason about. Highlights:

      • Changed how URL handlers/resolvers are implemented (#302, #304)
        The old style was somewhat convoluted in that the URLs were unnecessarily entwined with the link concept. The new implementation more properly separates the concepts. This is a major step towards allowing more flexibility for users to define their own URL resolvers and handlers.

        In the process, the g:wiki_resolver and g:wiki_file_handler options were removed! The new option g:wiki_link_schemes replaces both of these. Also, g:wiki_month_names was renamed to g:wiki_template_month_names.

        The documentation has also been revised and there are a couple of advanced configuration examples that should be helpful for users who want to customize things.

      • The concept of a "link matcher" is changed to "link definition" and the matcher is converted to a "pure" function. All link definitions are gather in autoload/wiki/link/def.vim.

      • All link templates (for inserting a link) are gathered in the corresponding autoload/wiki/link/template.vim.

      • The link templates must now accept three arguments, the third argument is the origin link itself. This allows to use templates in a more functional way and makes the data flow clearer. Note: This means that anyone who used their own g:wiki_link_transforms functions will need to adjust them to accept the third argument.

  • Added new option g:wiki_link_default_schemes (#301, #303)
    This allows a flexible way to specify default schemes for each link, per filetype if desired.
  • Added Neovim-specific UI elements with a floating window popup for input, confirm and select actions.
  • Added visual mode version of :WikiLinkExtractHeader (#280)
  • Added :WikiGraphCheckOrphans (#311)
  • Added wiki#buffer#refresh_incoming_links (#313)
  • Use scratch buffer to show link data (#301)
  • Other minor things:
    • Changed name wiki#complete#linkwiki#complete#url
    • Allow argument for :WikiOpen
    • Added wiki#link#get_all_from_range
    • Added wiki#graph#get_backlinks_enriched
    • Added :wiki#u#associate_by

Performance

  • Improve performance of wiki#graph#check_orphans
  • Improve graph cache_links_in refresh mechanism

Bug Fixes

  • Use fd -I to respect .gitignore for completion (#307)
  • Complete links for all chosen filetypes (#312)
  • Ensure the cache_links_in graph is properly read before refreshing the graph data
  • Use inputlist() for ui#select when buffered
  • Use silent! to ignore potential errors in url#follow
  • A few other minor fixes

Documentation

  • Large improvements to the documentation
    • Improved descriptions of links and urls (#301)
    • Improved the structure and flow of sections
    • Added some advanced configuration examples
  • Fixed typo in example (#314)

Acknowledgements

As always, I much appreciate contribution from the community, and I would like to thank in particular those who contributed PRs: @jiz40h (#314).

v0.7

1 year ago

I'm planning some relatively large changes in future work, see e.g. #296, #297, #301, and #302. I believe these will be very good changes that will allow much more user flexibility and keep wiki.vim more filetype agnostic than before.

However, since these are major updates, I believe it is useful to make a small release now that allows users to pin their local versions to a stable release. I would not be surprised if I push some bugs while developing, so pinning to this release may give a more stable experience for those who don't want to be surprised.

Features

  • Breaking change: Use absolute paths for journal.link_*_parser
  • Add support for separate root directory for the journal (#273)
  • Generalize the TOC feature (#295, #288)
  • Allow "edit in vim" for file handler, see :help g:wiki_viewer
  • Use modern jobs backends for Zotero viewer

Documentation

  • Added a comment about JabRef integration (#286)
  • Removed broken ToC link in README (#293)

Acknowledgements

As before I would like to give a special thanks to those who contributes with PRs: @BeTmAsTeR (#293) and @saccarosium (#295).

v0.6

1 year ago

It's time for a new release. This release brings a few important updates, including one important breaking change (see #289): The default filetype is now Markdown, instead of the previous .wiki. This should be more aligned with user expectations and I believe it would reduce the required configuration for most users.

Notice that those who use the wiki filetype and want to still do that now likely need to apply some configuration, e.g.:

let g:wiki_filetypes = ['wiki']
let g:wiki_link_target_type = 'wiki'
let g:wiki_link_extension = ''

Features

  • Breaking changes!
    • Changed default filetype to Markdown (#289)
    • Added g:wiki_journal_index option (#260)
      • The option g:wiki_journal.index_use_journal_scheme is deprecated!
    • Unified the "search" commands WikiPages, WikiTags, and WikiToc and thereby deprecated WikiFzf* variants.
    • Removed support for CtrlP (:CtrlPWiki) and for Unite and Denite
      • I don't want to keep support for these interfaces. I instead want to provide an API that makes it easy to build such interfaces on top for those who are interested.
  • Added support for neovim's vim.ui.select (#281, #282)
    • Add configuration option g:wiki_select_method for Wiki{Pages,Tags,Toc}
  • Added g:wiki_journal_index.link_text_parser and g:wiki_journal_index.link_url_parser (#260)
    • This adds a flexible way to specify how :WikiJournalIndex should determine the link text and url of the recognized links.
  • Added g:wiki_fzf_tags_opts (#157, #269)
    • Allows to pass additional options to Fzf in :WikiTags (with Fzf backend). This is useful e.g. to add a previewer.
  • Allowed to disable specified mappings with the g:wiki_mappings_... options (#159)
  • Implemented a less strict reference url detector (#275)
  • Allowed . inside shortcites (https://github.com/lervag/wiki-ft.vim/issues/13)

Bug Fixes

  • Ensure g:wiki_cache_root is expanded before use (#261)
  • Properly initialize :WikiClearCache command
  • Avoid looking for missing keys in cache
  • Some minor bugs and issues (#264)
  • Recognize links also when line starts with inline code (#267)
  • Only navigate to existing nodes with WikiJournal{Next,Prev} (#266)
  • Rely on journal interface for weekly template
  • Force case sensitive regexes where necessary (#272)
  • Fix issue with :WikiTagRename (#285)

Documentation

  • Clarified g:wiki_root example (#261)
  • Extend :help wiki-intro-guide with a section about the journal (#270)
  • Several minor improvements (#265, #268, #271, #281)

Acknowledgements

Again there has been several contributions from the community, and as before I would like to give a special thanks to everyone who contributes with PRs: @step- (#268, #269), @mizhozan (#271), @cwolfe3 (#277), @saccarosium (#281), and @trev-dev (#285).

v0.5

1 year ago

It's been way too long since the last release, so here's a new one. It brings a lot of changes, both minor and major. I've tried to summarize things somewhat:

Features

  • Breaking changes!
    • Rewrote the graph utilities. These features should be much better now. E.g.:
      • :WikiGraph* Graph commands in general
      • :WikiGraphRelated: Command to show related pages
    • Change g:wiki_tags* -> g:wiki_tag*
    • Rename 'g:wiki_map_link_create' to 'g:wiki_map_text_to_link' (#233)
      • This options is now also more general and better.
  • Improved template feature (e.g. user functions; #181, #83)
  • Improve navigation code (#183)
  • Improve tag parsers (#189, #175, #188, #193)
  • Upgrade caching mechanism
  • Improved ToC parsing
  • Use cached uname call (#195)
  • Rely on new jobs backend for system calls
  • Add g:wiki_journal.index_use_journal_scheme (#206)
  • Use netrw#BrowseX as generic url handler (#214)
  • Support bracketed url syntax (#213)
  • Better reference link support
  • Allow split modifiers for :WikiLinkFollowSplit (#223)
  • Add :WikiLinkFollowTab (#204)
  • Allow math in markdown link text
  • Slightly better error message (#241)
  • Give feedback on reload
  • Slightly adjust word link toggler
  • Add utility group_by function
  • Add <f2> for rename section
  • More log functionality
  • Improve link toggle on text (#245)
    • See :help WikiLinkToggle for improved docs.
  • Ignore case on anchor search (#246)
  • Support for journal hierarchies (#231)
  • Journal urls now support anchor
  • Add wiki#rx#bolditalic variants (#186)
  • Support for org-mode links (#247)

Bug Fixes

  • A lot of minor bug fixes!
  • Handle E325 in #url#wiki.follow (#166)
  • Use g:wiki_viewer._ as fallback for file scheme (#171)
  • Consistent use of getcurpos (#172)
  • Remove scheme for file scheme handler (#171)
  • Proper string handling (#178)
  • Ignore zotero search when root dir unavailable (#177)
  • Avoid endless loop on fugitive buffers (#187)
  • Minor regression (#189)
  • Use consistent ascending sort for journal index (#178)
  • Handle rename within subdirs (#170)
  • Don't try to follow empty links
  • Revert syntax to support older versions (#194, #193)
  • Minor issue with toc
  • Wrong sorting in WikiJournalIndex (#207)
  • Handle problem during cache read (#217)
  • Error in cache (#217)
  • :WikiJournalIndex respect wiki_link_extension (#219)
  • Error in extension handling for wiki resolver (#208)
  • Wrong extensions ordering for wiki resolver (#208)
  • Expand the template source paths (#229)
  • Don't append extension on directory link (#233)
  • Create link in unrooted buffer (#234)
  • Use nomagic for fzf path substitution (#243)
  • Support for shorthand tags (#244)
  • Complete with default tag parser (#244)
  • Problem with journal summary template
  • Regression with journal index (#251)
  • Shaky caching for update_links (#250)
  • Improve page rename (#250)
  • Another minor issue with journal index (#251)
  • Add strptime implementation for windows (#252)
  • Better test for strptime (#253)
  • Improve robustness of strptime_implicit (#255)

Documentation

  • Add help text for ncm2 setup (#163)
  • Improve docs on g:wiki_viewer
  • Add (subjective) intro guide (#150, #210)
  • Improve help on use for markdown (#190)
  • List plugins that work well with wiki.vim (#220)
  • Clarify option type for map options (#221, #174)
  • Explain journal summary structure requirement (#203)
  • Several general improvements to docs

Acknowledgements

There has been several contributions from the community. I would like to give a special thanks to everyone who contributes with PRs: @anjiro (#168, #172, #180, #186, #193, #196, #197, #201), @digital-carver (#169), @savq (#174), @Ginner (#182, #185), @jeffmm (#192), @MosaicMan (#198), @endter (#204), @agorf (#210, #211), @aignas (#173, #216), @jgilchrist (#221), @troiganto (#247, #248), @Alanxyz (#259).

v0.4

2 years ago

This is a small release, but it brings a breaking change: The list functionality is now separated from wiki.vim into its own plugin, lists.vim. This change is warranted, as wiki.vim is meant to handle links, not lists. For more info, see the discussion in #131.

After updating to this release, please consider to add the lists.vim plugin if those features were useful for you.

v0.3

2 years ago

This is a minor release with a few improvements, changes, and fixes:

Features

  • Add support for Windows and handle &shellescape issues (#151, #153, #156, #158)
  • Allow custom fzf options for :WikiFzfPages through g:wiki_fzf_pages_opts (#157)
  • Add command and mapping to set link text from header of the target page (#149):
    • :WikiLinkExctractHeader
    • <plug>(wiki-link-extract-header) (by default <leader>wlh)

Fixes

  • Fixed issue where wiki.vim overrides user mappings (#159)
  • Fixed some minor issues with :WikiFzfPages (#155)
  • Fixed issue with adoc link parsing (#135)
  • Fixed an issue with list move up/down (wiki#list#move)

Other

  • Some improvements to the docs
  • Improved the link matcher code

Thank you to everyone who has contributed with issues/bug reports/feature suggestions!

v0.2

3 years ago

It's time for a new release. There's been a lot of changes, mostly minor fixes, rebasing, maintenance, and improvements to the docs. Some of the more significant updates:

  • Use more proper language: e.g. "follow a link" instead of "open a link" and "file handler" instead of "file opener"
    • Changed: Renamed option g:wiki_file_open to g:wiki_file_handler
    • Changed: Renamed event WikiLinkOpened to WikiLinkFollowed
  • Added :WikiGraphCheckLinks (#145)
  • Added :WikiListMove(Up|Down)
  • Added event WikiBufferInitialized
  • Added option g:wiki_global_load to allow to disable loading wiki.vim outside the g:wiki_root specified wiki (#132)
  • Added option g:wiki_link_toggles to allow custom toggles (#72)
  • Added option g:wiki_resolver, allows to override the wiki page resolver (#148)
  • Added completion source for coc.nvim
  • Added initial support for asciidoc links (#112, #110)
  • Improved :WikiFzfPages - e.g. allow to create new notes (#133, #143)
  • Improved :WikiPageRename - it now supports new directories (#108)
  • Improved chooser UI
  • Improved option g:wiki_root - more consistent (#78)

There were ~200 commits, so there's a lot more updates since v0.1. Thank you to everyone who has contributed!

I'll aim to make the releases more frequent in the future, so that I can better describe all the important changes.

v0.1

3 years ago

This is the first release of wiki.vim. The current version should generally work well. In the future, breaking changes and major updates will lead to new releases.