Commit Graph

643 Commits

Author SHA1 Message Date
Jiaming Chen acc92fb648 Make auto_tags preserve existing tag section structure 2023-07-10 11:26:40 -04:00
Tinmarino 26adc84dc3 Configure default syntax bloquote marker to include :: (issue #1279) 2023-06-23 12:11:40 -04:00
Julian Prein c5b7f7e76f Fix: Handle multibyte chars properly in get_cells (#1298) (fixes #1297)
Previously vimwiki#tbl#get_cells() would act on `line` as a normal
string (i.e. using `[idx]` and strpart()). This breaks when the column
separator (s:s_rep() or rxTableSep) is a multibyte character like the
vertical box drawing character │. In that case the separator is never
found and only one empty cell is returned. This also affects
vimwiki#tbl#format() which in turn clears the whole table each time the
insert mode is left.

Fix this issue by initially splitting the line into a list of the
characters. Getting the elements with `[idx]` now returns each character
instead of a byte. In addition len() is used in place of strlen() as
well as slicing together with join() instead of strpart().

Fixes: #1297 ("Table formatting breaks on multibyte separator")
2023-06-22 19:10:54 -04:00
Tinmarino 40c2bbdcf3 Fix: HTML convertion for code is stripping newlines (issue #1311)
Initially titled: Can't enable syntax highlighting for codes in HTML files when converting wiki to HTML
2023-06-22 18:36:18 -04:00
Joe Planisky 89315912b1 fix duplicate tag issue #1326 2023-06-22 11:17:58 -04:00
Tinmarino 88620a2be0 Syntax: admit space trailing the yaml delimiters 2023-06-16 11:14:00 -04:00
Tinmarino 298a409b74 Fix: VimwikiGoto completion with file with space (#1229) 2023-06-14 13:04:26 -04:00
Tinmarino 69a5682d6f Merge pull request #1324 from rddunphy/dev
File name prompt fixes
2023-06-14 12:29:28 -04:00
Tinmarino 0700fa4068 Fix: Italics broken with 7a48268 commit (#1331) 2023-06-14 11:43:54 -04:00
Tinmarino 2cff9776e8 Feature: Recognize message:// URLs on Mac #1332 2023-06-14 11:34:57 -04:00
Tinmarino d63948d873 Util: add vimwiki#vars#set_syntaxlocal function for consistency 2023-06-14 10:43:12 -04:00
Luke Atkinson cd9cfd299e Fix vimwiki#diary#calendar_sign when g:vimwiki_list is not set
If a user is happy with the default vimwiki location, they may not set
the g:vimwiki_list global variable. In this case, the
len(g:vimwiki_list) vimwiki#diary#calendar_sign function throws an
error every time it is called. This function is called for every day
displayed in the calendar which is very noisy. Checking if the variable
exists before doing the length check prevents the error and the rest of
the function works fine if the variable is not set.
2023-05-12 22:05:10 -04:00
Tinmarino 7a48268d24 Fix commit 72d0220, breaking syntax for bold due to bad punctuation preceded right flank (issue #1325) 2023-04-19 15:13:50 -04:00
R. David Dunphy ba02c38346 Use fnameescape() instead of escape() in edit_file() 2023-04-02 01:32:03 +01:00
R. David Dunphy 864f066405 Don't escape filenames for goto() 2023-04-02 01:08:36 +01:00
R. David Dunphy 8f651834fd Cancel goto() if input was empty 2023-04-02 00:57:52 +01:00
Brennen Bearnes 11350f572b is_diary_file(): use filereadable() to check a single file
Intended to address #1267 - "get_diary_files() takes very long to
execute on Windows - this leads to very slow link-creation using the
Enter key".

In theory, this should be a performance improvement for link creation on
systems with very slow filesystem access (this came up under Windows, but
ought to be a general optimization).  It does nothing for generating the
entire list of diary files, which by nature has to get the whole list
anyway.

  - Uses a filereadable() call against a path instead of checking the
    results of get_diary_files() for most calls.

  - Introduces is_among_diary_files() for the case where you want to
    check against a get_diary_files() list.

  - is_diary_file() will pass through to is_among_diary_files() if it gets
    invoked with a second parameter, to retain backwards compatibility on
    the off chance anyone has scripted against this behavior.  I'm not sure
    this is necessary, but trying to be cautious with the implicit API
    here.

  - Includes a test/api_base_is_diary_file.vader

My original version of this change assumed that input would be in the
form of "2023-01-01", instead of a fully-qualifed filename.  As it is,
it expects a full path to the file, in keeping with the list returned by
vimwiki#diary#get_diary_files().

Bug: #1267
2023-03-30 17:08:58 -06:00
Tinmarino 72d02207b0 Syntax: Fasten highlighting, from 200ms to 20ms for first screen update
Problem:

The loading of a .md file was slow due to multiple nested lookback.
It is advised in vim help to prefer \zs, see :h /\@<
Anyway, it is useless to nest them.

089.080  000.085  000.085: sourcing /home/mtourneb/.vim/after/syntax/vimwiki.vim
089.264  005.184: opening buffers
089.322  000.058: BufEnter autocommands
089.323  000.001: editing files in windows
089.414  000.091: VimEnter autocommands
089.415  000.001: before starting main loop
303.698  214.283: first screen update
303.700  000.002: --- VIM STARTED ---

Solution:

Remove the function s:expand_delimiter in vars.vim.
It was doing a duplicate job with vimwiki#u#hi_expand_regex
And ... well avoid lookback as much as possible

091.784  000.087  000.087: sourcing /home/mtourneb/.vim/after/syntax/vimwiki.vim
091.991  006.034: opening buffers
092.050  000.059: BufEnter autocommands
092.052  000.002: editing files in windows
092.172  000.120: VimEnter autocommands
092.173  000.001: before starting main loop
112.574  020.401: first screen update
112.578  000.004: --- VIM STARTED ---
2023-03-18 01:50:53 -03:00
Tinmarino f4bd841a4c Tags: improve VimwikiSearchTags which was not using user configuration (issue #1316) (v2) 2023-03-17 22:05:47 -03:00
Tinmarino 5eb5c9c71f Fix: ugly debug echom at start #1317 2023-03-17 19:17:41 -03:00
Tinmarino 8640988c5c Markdown typeface: match closer to GFM specification, also add tests 2023-03-17 16:08:27 -03:00
Tinmarino f5399ffdfa Improve typeface specification closer to GFM and test 2023-03-17 13:44:05 -03:00
Tinmarino 1d35ff035d Fix: Bug: VimwikiGoto without argument creates empty page (issue #1229) 2023-03-17 03:59:05 -03:00
Tinmarino 8374bcfccf Feature: Support for <mark> in Markdown (issue #1261) 2023-03-17 03:46:56 -03:00
Tinmarino cde5dbc92a Feature: permit blockquote automatic continuation (issue #1274) (fixed) 2023-03-17 02:27:08 -03:00
Tinmarino 035b2f15c7 Permit tags in heading #1316 2023-03-17 00:05:48 -03:00
Tinmarino 5db16850da Fix VimwikiAddHeaderLevel map (like 3=), borken by previous 5e564bb10d, (Issue #1270) 2023-03-15 02:06:57 -03:00
Tinmarino 7f1357472d Yaml metadata, fix regex (#1287) 2023-03-15 00:54:49 -03:00
Tinmarino f55e700828 Fix Math inline border cases (Issue #150) 2023-03-13 19:43:43 -03:00
Tinmarino 8bf4d6363c Syntax: Add highlithing for YAML metadata block (#1287) 2023-03-13 16:52:57 -03:00
Tinmarino 6d4208157d CI: Add Typos check and fix some typo 2023-03-12 01:15:28 -03:00
Tinmarino 59402cdf8b Highlight markdown typeface more compliant with Github Flavoured Markdown 2023-03-10 13:54:40 -03:00
Brennen Bearnes 0629b39815 switch to calver; add g:vimwiki_version; tidy version hardcoding
Setting a global for g:vimwiki_version doesn't seem too egregious, and
lets us reference it cleanly elsewhere.

Removes version header from vimwiki.txt and hardcoding in tagfile
generation.

There's still one instance of that left in test/tag.vader that we should
clean up eventually.
2022-12-02 14:46:35 -07:00
Brennen Bearnes 221377f4fa version to 2.6.0; rewrite docs for rolling release
This:

  - Changes version number everywhere I could find it.
  - Reworks get_version() to dispense with stable / dev division.
  - Rewrites CONTRIBUTING.md to describe a new release workflow.

The development/release workflow stuff could use some thought.  It's
clunky at best.  There's sort of an inherent tension between semver-style
version numbers and the rolling release thing - maybe we should just use
commit hash or something date-based?

Still, it's a start.
2022-11-29 22:57:10 -07:00
Brennen Bearnes c21c939b06 resolve_link(): check ext against version with dot (fixes #1256)
It turns out that the target extension here in `ext` has a dot prepended.

Under manual testing, this seems to fix the issue where a wiki with
`markdown_link_ext` set and using `.md` (for example) in links will wind up
taking people to pages with a repeated extension, like `foo.md.md`.

I feel like the repeated use of:

    vimwiki#vars#get_wikilocal('ext', link_infos.index)

here should probably be replaced with a named variable like `target_ext`,
but I wanted to touch the minimum lines of code possible for this fix.
2022-08-15 13:00:11 -06:00
dmitry kim bd65f7dd7c make vimwiki#html#Wiki2HTML respect 'html_filename_parameterization'
Fixes `:Vimwiki2HTMLBrowse` when vimwiki_markdown is in use.
2022-07-18 20:50:00 -06:00
Brennen Bearnes d7ec12645a append extension to links containing "." (fixes #950) (#1236)
If a link contains `.`, then this:

  fnamemodify(link_text, ':e')

will return the last .-separated part of the name as extension, and nothing
else will get appended.  Instead, we check if the extension is empty _or_
doesn't match the extension for the target wiki, in which case we append
the correct one.

This seems like it works, and might not break anything else, given the
branch of the function that it's in.

Co-authored-by: Brennen Bearnes <code@p1k3.com>
2022-07-18 18:08:18 -06:00
Brennen Bearnes 7cfc3eee22 diary: use :drop for :VimwikiMakeDiaryNote
I find this is one of the more common reasons I wind up with way too many
copies of the same file open.

This adds 2 new magic numbers to vimwiki#diary#make_note()'s second
parameter: 4 for `tab drop` and 5 for `drop`.  It also checks to make sure
:drop exists in the current build.
2022-07-18 18:07:02 -06:00
Brennen Bearnes 8e4202847f follow_link: reuse existing tabs with tab drop (closes #238)
Replaces :e in `vimwiki#base#follow_link()` with :drop, making this the
default behavior for pressing <CR> on a link.  Checks for the existence
of :drop first, since this isn't available in some builds.

Adds a new :VimwikiTabDropLink and makes this a default for the keybindings
formerly occupied by :VimwikiTabnewLink; leaving :VimwikiTabnewLink
available for backwards compatibility and anyone who still wants the old
behavior.

Doesn't touch the split window reuse functionality, or the
:VimwikiGoBackLink behavior, although I can see an argument for adding
:drop to the latter.

I've wanted this for a while and happened to notice @davidlmontgomery's
patch from 2016 in #238.  Code has moved around a little since, but I
think this is correct.
2022-07-18 18:07:02 -06:00
Brennen Bearnes 3ac8e1ae14 fixed s:get_links so that it finds both link styles when using markdown syntax 2022-07-18 17:44:04 -06:00
Philipp Oberdiek 4a0901a811 Search for already present tag links
If the tag link section should only be updated, search for an already
existing section and use the present tags for updating the links.
2022-04-09 20:14:04 -04:00
Philipp Oberdiek 7ab9983ddd Make collect_headers a global plugin function
This way it can be used in `tags.vim` to retrieve the headers of the
generated tag link section.
2022-04-09 20:14:04 -04:00
Philipp Oberdiek 0690d8ad51 Add description key to tag link entries 2022-04-09 20:14:04 -04:00
Philipp Oberdiek c19e63b1e9 Make tag links relative to current file #794 (#1162)
Also add a vader test case and update the changelog as well as the list
of contributors.

Co-authored-by: Tinmarino <tinmarino@gmail.com>
2021-12-18 12:11:01 -03:00
Jean-Luc Bastarache ee31d45553 Feature: Add wiki page to buffer list using badd (#1185)
Co-authored-by: Tinmarino <tinmarino@gmail.com>
2021-12-18 12:08:54 -03:00
Tinmarino ecce184493 VimwikiTOC: update-listing in buffer more lazy (after #1155) 2021-12-18 11:53:59 -03:00
Tobias Mersmann 1bea2ce40a fix(update_listing_in_buffer): don't update listing if there are no changes
Before updating a listing, check if the update differs from the existing state.
Only then update the buffer, otherwise return early.

Initial reasoning: If `let g:vimwiki_auto_toc = 1` is set, saving a buffer would always update
the `contents`-section, even if there were no updates in this section. This lead to undesired
undo-behavior.

NOTE: this fix was only tested for the toc-listing.
2021-12-18 11:43:31 -03:00
ysftaha 2141fde8b8 Addresses issue #621 (#1181)
* issue#621: html highlighter

* docs for issue#621

* removing windows support for issue#621

Co-authored-by: Tinmarino <tinmarino@gmail.com>
2021-12-18 11:40:17 -03:00
Thomas Leyh 064a8f7ade Fix wildcard expansion in find_autoload_file
When using vim's native mechanism for `packages`, wildcards (*) are used
in the `runtimepath` since package folders can have arbitrary names.
They were not expanded, thus a path to e.g. `default.tpl` could not be
resolved when calling Vimwiki2HTML.

Resolves vimwiki/vimwiki#1193
2021-12-18 11:31:38 -03:00
Tulio Brunoro 95dd2e0d2c Revert breaking changes to customwiki2html.sh file
There is an extra space when calling the `basename` command, which causes the following error:
```
Vimwiki: 'basename: extra operand ‘md’
Try ''basename --help'' for more information.
```
2021-12-11 20:32:27 -07:00