69ead3bf3c
Problem: VimwikiTOC and follow_link do not support header (anchor) with link in their body Solution: - VimwikiTOC (easy): Create function base.vim s:clean_header_text that converts [DESC](URL) -> DESC - follow_link (hard): -- [[URL]]: was already working due to punctuation removal. -- [DESC](URL): Search for a potential `]([^)]*)` after every character
332 lines
5.6 KiB
Plaintext
332 lines
5.6 KiB
Plaintext
# VimwikiTOC {{{1
|
|
#
|
|
# Just generate the TOC
|
|
# See: link_* for link movement and creation
|
|
#
|
|
# TODO (10min) test if g:vimwiki_to_header well readen
|
|
# TODO (10min) test vimviki_toc_link_format
|
|
# TODO (1h) test if really wiki dependant (for 2 diffrent wikis)
|
|
#
|
|
# Doc: from #664:
|
|
# -- 1. It downcases the string => OK: from previous big collection
|
|
# -- 2. remove anything that is not a letter, number, space or hyphen (see the source for how Unicode is handled) => from 'bad characters'
|
|
# -- 3. changes any space to a hyphen => OK: from previous big
|
|
# -- 4. If that is not unique, add "-1", "-2", "-3",... to make it unique => TODO not implemented
|
|
#
|
|
#
|
|
# TODO if link in heading
|
|
#Given vimwiki (Two same heading {{{1):
|
|
# # Pre [link](anything no parenthesis) Post
|
|
#
|
|
#Execute (Set syntax markdown && Set sw=8):
|
|
# call SetSyntax('markdown')
|
|
# set sw=8
|
|
# VimwikiTOC
|
|
#
|
|
#Expect (Suffix -1 and -2):
|
|
#
|
|
#
|
|
#
|
|
#
|
|
# Start {{{1
|
|
|
|
Given vimwiki (With link header (#182) {{{1):
|
|
# A [link](anything here) B
|
|
# t[link](anything here)
|
|
|
|
## 7.4.1528
|
|
|
|
Execute (VimwikiTOC: Set syntax markdown && Set sw=8):
|
|
call SetSyntax('markdown')
|
|
set sw=8
|
|
VimwikiTOC
|
|
|
|
Expect vimwiki (With link header (#182) {{{1):
|
|
# Contents
|
|
|
|
- [A link B](#a-link-b)
|
|
- [tlink](#tlink)
|
|
- [7.4.1528](#741528)
|
|
|
|
# A [link](anything here) B
|
|
# t[link](anything here)
|
|
|
|
## 7.4.1528
|
|
|
|
|
|
|
|
Given vimwiki (Underline header (SetExt) (#209) {{{1):
|
|
First with spaces
|
|
=====
|
|
|
|
toto
|
|
|
|
Second
|
|
-------
|
|
toto
|
|
|
|
Third
|
|
-----
|
|
toto
|
|
|
|
Four
|
|
=====
|
|
toto
|
|
Last
|
|
----
|
|
|
|
Execute (Set syntax markdown && Set sw=8):
|
|
call SetSyntax('markdown')
|
|
set sw=8
|
|
VimwikiTOC
|
|
|
|
Expect (Heading SetExt created):
|
|
# Contents
|
|
|
|
- [First with spaces](#first-with-spaces)
|
|
- [Second](#second)
|
|
- [Third](#third)
|
|
- [Four](#four)
|
|
- [Last](#last)
|
|
|
|
First with spaces
|
|
=====
|
|
|
|
toto
|
|
|
|
Second
|
|
-------
|
|
toto
|
|
|
|
Third
|
|
-----
|
|
toto
|
|
|
|
Four
|
|
=====
|
|
toto
|
|
Last
|
|
----
|
|
|
|
|
|
|
|
Given vimwiki (Two same heading (#968) {{{1):
|
|
# One
|
|
toto
|
|
# ONE
|
|
like
|
|
## oNe
|
|
you
|
|
|
|
Execute (Set syntax markdown && Set sw=8):
|
|
call SetSyntax('markdown')
|
|
set sw=8
|
|
VimwikiTOC
|
|
|
|
Expect (Suffix -2 and -3):
|
|
# Contents
|
|
|
|
- [One](#one)
|
|
- [ONE](#one-2)
|
|
- [oNe](#one-3)
|
|
|
|
# One
|
|
toto
|
|
# ONE
|
|
like
|
|
## oNe
|
|
you
|
|
|
|
|
|
Given vimwiki (Heading with many bad caracters {{{1):
|
|
# One !@#@#(!%#&$^(!@
|
|
## Two !!~!!:"@!>@!>?<
|
|
|
|
Execute (Set syntax markdown && VimwikiTOC):
|
|
call SetSyntax('markdown')
|
|
set sw=8
|
|
VimwikiTOC
|
|
|
|
Expect (Bad characters are removed):
|
|
# Contents
|
|
|
|
- [One !@#@#(!%#&$^(!@](#one-)
|
|
- [Two !!~!!:"@!>@!>?<](#two-)
|
|
|
|
# One !@#@#(!%#&$^(!@
|
|
## Two !!~!!:"@!>@!>?<
|
|
|
|
|
|
# Large previous tests {{{1
|
|
|
|
Execute (Reset TOC header to default):
|
|
call vimwiki#vars#set_wikilocal('toc_header', 'Contents')
|
|
|
|
Given vimwiki (Headings):
|
|
# Header 1
|
|
random text
|
|
## Header 1.1
|
|
random text
|
|
### Header 1.1.1
|
|
random text
|
|
|
|
# Header 2
|
|
### Header 2.1.1
|
|
|
|
Execute (Set syntax markdown && Set sw=8):
|
|
call SetSyntax('markdown')
|
|
set sw=8
|
|
|
|
Execute (VimwikiTOC):
|
|
VimwikiTOC
|
|
|
|
Expect (With a TOC sw=8):
|
|
# Contents
|
|
|
|
- [Header 1](#header-1)
|
|
- [Header 1.1](#header-11)
|
|
- [Header 1.1.1](#header-111)
|
|
- [Header 2](#header-2)
|
|
- [Header 2.1.1](#header-211)
|
|
|
|
# Header 1
|
|
random text
|
|
## Header 1.1
|
|
random text
|
|
### Header 1.1.1
|
|
random text
|
|
|
|
# Header 2
|
|
### Header 2.1.1
|
|
|
|
Execute (Set sw=4 && VimwikiTOC):
|
|
set sw=4
|
|
VimwikiTOC
|
|
|
|
Expect (With a TOC sw=4):
|
|
# Contents
|
|
|
|
- [Header 1](#header-1)
|
|
- [Header 1.1](#header-11)
|
|
- [Header 1.1.1](#header-111)
|
|
- [Header 2](#header-2)
|
|
- [Header 2.1.1](#header-211)
|
|
|
|
# Header 1
|
|
random text
|
|
## Header 1.1
|
|
random text
|
|
### Header 1.1.1
|
|
random text
|
|
|
|
# Header 2
|
|
### Header 2.1.1
|
|
|
|
Do (Destroy some stuff):
|
|
jj
|
|
dd
|
|
jj
|
|
dd
|
|
|
|
Execute (VimwikiTOC):
|
|
VimwikiTOC
|
|
|
|
Expect (Brand new TOC):
|
|
# Contents
|
|
|
|
- [Header 1](#header-1)
|
|
- [Header 1.1](#header-11)
|
|
- [Header 1.1.1](#header-111)
|
|
- [Header 2](#header-2)
|
|
- [Header 2.1.1](#header-211)
|
|
|
|
# Header 1
|
|
random text
|
|
## Header 1.1
|
|
random text
|
|
### Header 1.1.1
|
|
random text
|
|
|
|
# Header 2
|
|
### Header 2.1.1
|
|
|
|
|
|
Execute (Let toc_header = Sommaire && VimwikiTOC):
|
|
call vimwiki#vars#set_wikilocal('toc_header', 'Sommaire')
|
|
VimwikiTOC
|
|
|
|
Expect (Append a Sommaire && Leave Contents alone):
|
|
# Sommaire
|
|
|
|
- [Header 1](#header-1)
|
|
- [Header 1.1](#header-11)
|
|
- [Header 1.1.1](#header-111)
|
|
- [Header 2](#header-2)
|
|
- [Header 2.1.1](#header-211)
|
|
|
|
# Header 1
|
|
random text
|
|
## Header 1.1
|
|
random text
|
|
### Header 1.1.1
|
|
random text
|
|
|
|
# Header 2
|
|
### Header 2.1.1
|
|
|
|
Do (Destroy some stuff):
|
|
jj
|
|
dd
|
|
jj
|
|
dd
|
|
|
|
Execute (VimwikiTOC):
|
|
VimwikiTOC
|
|
|
|
Expect (Brand new TOC with sommaire):
|
|
# Sommaire
|
|
|
|
- [Header 1](#header-1)
|
|
- [Header 1.1](#header-11)
|
|
- [Header 1.1.1](#header-111)
|
|
- [Header 2](#header-2)
|
|
- [Header 2.1.1](#header-211)
|
|
|
|
# Header 1
|
|
random text
|
|
## Header 1.1
|
|
random text
|
|
### Header 1.1.1
|
|
random text
|
|
|
|
# Header 2
|
|
### Header 2.1.1
|
|
|
|
|
|
Execute (call vimwiki#vars#set_global('toc_header_level', 6):
|
|
call vimwiki#vars#set_wikilocal('toc_header_level', 6)
|
|
VimwikiTOC
|
|
# Reset default
|
|
call vimwiki#vars#set_wikilocal('toc_header_level', 1)
|
|
|
|
Expect (Content prepended):
|
|
###### Sommaire
|
|
|
|
- [Header 1](#header-1)
|
|
- [Header 1.1](#header-11)
|
|
- [Header 1.1.1](#header-111)
|
|
- [Header 2](#header-2)
|
|
- [Header 2.1.1](#header-211)
|
|
|
|
# Header 1
|
|
random text
|
|
## Header 1.1
|
|
random text
|
|
### Header 1.1.1
|
|
random text
|
|
|
|
# Header 2
|
|
### Header 2.1.1
|
|
|
|
" vim: sw=2 foldmethod=marker foldlevel=30 foldignore=#
|