@@ -18,6 +18,7 @@ features below.
18
18
Marksman ** works on MacOS, Linux, and Windows** and is distributed as a ** self-contained binary** for each OS.
19
19
20
20
The server provides assistance with:
21
+
21
22
* Markdown inline links:
22
23
``` md
23
24
This is [inline link](/some-file.md#some-heading).
@@ -43,10 +44,11 @@ for wiki-links to detect broken references and duplicate/ambiguous headings.
43
44
44
45
* VSCode via [ Marksman VSCode] [ mn-vscode ] .
45
46
* Neovim:
46
- * via [ mason.nvim] [ mason-nvim ] (automatic server installation) (Requires [ mason-lspconfig.nvim] [ mason-nvim-lsp-config ] )
47
+ * via [ mason.nvim] [ mason-nvim ] (automatic server installation) (
48
+ Requires [ mason-lspconfig.nvim] [ mason-nvim-lsp-config ] )
47
49
* via [ nvim-lspconfig] [ nvim-marksman ] ,
48
50
* via [ CoC-marksman] [ coc-marksman ] .
49
- * Emacs:
51
+ * Emacs:
50
52
* via [ LSP Mode] ( https://emacs-lsp.github.io/lsp-mode/page/lsp-marksman/ ) (automatic server installation).
51
53
52
54
Example config for ` use-package ` users:
@@ -65,7 +67,8 @@ for wiki-links to detect broken references and duplicate/ambiguous headings.
65
67
(add-to-list 'eglot-server-programs '(markdown-mode . ("marksman")))
66
68
(add-hook 'markdown-mode-hook #'eglot-ensure)
67
69
````
68
- * [Helix](https://helix-editor.com/) supports Marksman out of the box. However, you need add `marksman` binary to your `PATH` manually.
70
+ * [Helix](https://helix-editor.com/) supports Marksman out of the box. However, you need add `marksman` binary to
71
+ your `PATH` manually.
69
72
* Sublime Text via [LSP-marksman][sublime-marksman] (automatic server
70
73
installation).
71
74
@@ -110,8 +113,8 @@ generally most features should work equaly in all editors.
110
113
- ** Hover preview** :
111
114
![ Hover] ( assets/readme/gifs/hover.gif )
112
115
- ** Completion** :
113
- * ![ Completion Markdown] ( assets/readme/gifs/completion-markdown.gif )
114
- * ![ Completion Wiki] ( assets/readme/gifs/completion-wiki.gif )
116
+ * ![ Completion Markdown] ( assets/readme/gifs/completion-markdown.gif )
117
+ * ![ Completion Wiki] ( assets/readme/gifs/completion-wiki.gif )
115
118
- ** Find references** :
116
119
![ Find references] ( assets/readme/gifs/find-references.gif )
117
120
- ** Project-wide diagnostics** :
@@ -125,32 +128,45 @@ generally most features should work equaly in all editors.
125
128
126
129
- ✅ Document symbols from headings.
127
130
- ✅ Workspace symbols from headings.
128
- * Query matching is subsequence-based, that is ` lsp ` will match both ` LSP ` and ` Low Seismic Profile ` .
131
+ * Query matching is subsequence-based, that is ` lsp ` will match both ` LSP ` and ` Low Seismic Profile ` .
129
132
- ✅ Completion for links (inline, reference, wiki).
130
133
- ✅ Hover prevew for links.
131
134
- ✅ "Go to definition" for links.
132
135
- ✅ "Find references" for headings and links.
133
136
- ✅ Diagnostics for wiki-links.
134
137
- ✅ Support multi-folder workspaces.
135
138
- ✅ Custom parser for more fine-grained note structure.
136
- - 🗓 Code Lens with "# references" on headings.
139
+ - 🗓 Code Lens with "# references" on headings.
137
140
- ✅ Rename refactor.
138
- - 🗓 Add support for images (diagnostics, completion, goto).
139
- - 🗓 Add "check" command for standalone workspace checking.
140
- - 🗓 Add "build" command that rewrites all cross-references into proper
141
+ - 🗓 Add support for images (diagnostics, completion, goto).
142
+ - 🗓 Add "check" command for standalone workspace checking.
143
+ - 🗓 Add "build" command that rewrites all cross-references into proper
141
144
relative markdown links for further embedding into a static site generator
142
145
such as Jekyll or Hakyll.
143
- - 🗓 Support for Jupyter notebooks.
146
+ - 🗓 Support for Jupyter notebooks.
144
147
145
148
### Configuration
149
+
146
150
See [ Configuration] ( docs/configuration.md ) docs for more details.
147
151
152
+ ### Wiki links
153
+
154
+ Alongside regular markdown links, Marksman also supports wiki-style links, e.g. `` [[some-doc]] ``
155
+ or `` [[#some-heading]] `` . This is particularly convenient when working with a Zettelkasten-like repository of markdown
156
+ notes, as it streamlines linking and cross-linking of notes. This is what tool like [ Obsidian] [ obsidian ]
157
+ and [ Emanote] [ emanote ] use.
158
+
159
+ By default Marksman uses a document ** title's slug** when referencing a document, however there is an configuration
160
+ setting to use a ** file name** or a file path instead. This functionality is currently ** experimental** and may change
161
+ in future depending on user's feedback. See [ Configuration] ( docs/configuration.md ) for more details.
162
+
148
163
### Code actions
149
164
150
165
Code actions usually can be enabled/disabled via a configuration option. See
151
166
[ configuration] ( #configuration ) for more details.
152
167
153
168
#### Table of Contents
169
+
154
170
Marksman has a code action to create and update a table of contents of a document.
155
171
156
172
![ Table of Contents] ( assets/readme/gifs/toc.gif )
@@ -169,16 +185,18 @@ files<sup>[4](#fn4)</sup>. Marksman has a custom **single-file mode** that
169
185
provides a * subset* of language features for markdown files open outside of any
170
186
project. This works well for small one-off edits or when opening random
171
187
markdown files. However, when you have several interconnected documents do
172
- consider setting up a project folder for them for an improved experience.
188
+ consider setting up a project folder for them for an improved experience.
173
189
174
190
How a folder (aka project, aka root) is found varies between editors, but
175
191
usually it's either
192
+
176
193
1 . a root of a VCS repository (applicable to all languages),
177
194
2 . a folder with ` .marksman.toml ` marker file (specific to Marksman
178
195
integrations).
179
196
180
197
When Marksman doesn't provide cross-file language assist for your files and you
181
198
don't understand why, you can either:
199
+
182
200
1 . check your project into version control, or
183
201
2 . create a ` .marksman.toml ` at the root folder of your project, or
184
202
3 . refer to your editor/LSP client documentation regarding how a project root
@@ -221,17 +239,25 @@ LSP but it's not a part of the spec at least until and including v3.17.
221
239
[ original-zn ] : https://github.com/artempyanykh/zeta-note
222
240
223
241
[ nvim-marksman ] : https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#marksman
242
+
224
243
[ mason-nvim ] : https://github.com/williamboman/mason.nvim
244
+
225
245
[ mason-nvim-lsp-config ] : https://github.com/williamboman/mason-lspconfig.nvim
226
246
227
247
[ lsp-main ] : https://microsoft.github.io/language-server-protocol/
228
248
229
249
[ helix-editor ] : https://helix-editor.com
250
+
230
251
[ helix-marksman-pr ] : https://github.com/helix-editor/helix/pull/3499
231
252
232
253
[ coc-marksman ] : https://github.com/yaegassy/coc-marksman
233
254
234
255
[ eglot ] : https://github.com/joaotavora/eglot
256
+
235
257
[ eglot-marksman-pr ] : https://github.com/joaotavora/eglot/pull/1013
236
258
237
259
[ sublime-marksman ] : https://github.com/bitsper2nd/LSP-marksman
260
+
261
+ [ obsidian ] : https://obsidian.md
262
+
263
+ [ emanote ] : https://emanote.srid.ca
0 commit comments