Skip to contentSkip to conversation

docs: add vim syntax modeline [RFC]

PATCH In review M Hickford via GitGitGadget 5 participants 6 messages Jan 13, 2025 – Jan 16, 2025 Documentation

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 docs: add vim syntax modeline [RFC]

From: M Hickford <[email protected]>

Git documentation is written in AsciiDoc. This format is easily mistaken for the pervasive Markdown.

Add a vim modeline to help editors identify the format and provide syntax highlighting, rendering and autocomplete.

This makes editing the documentation easier for prospective contributors. This is particularly important because new contributors often start with documentation changes.

An alternative could be to move the modeline up or down the file (the location is not important).

A simpler alternative could be to rename files *.adoc. This would have the advantage of being recognised by even more tools.

---
docs: add vim syntax modeline [RFC]

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1874%2Fhickford%2Fasciidoc-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1874/hickford/asciidoc-v1
Pull-Request: https://github.com/git/git/pull/1874

 Documentation/git-add.txt | 1 +
 1 file changed, 1 insertion(+)
Documentation/git-add.txt +1 -0
index 5f2c3592b8d..123c98541b1 100644
@@ -1,5 +1,6 @@
 git-add(1)
 ==========
+// vim: syntax=asciidoc
 
 NAME
 ----

base-commit: fbe8d3079d4a96aeb4e4529cc93cc0043b759a05

Signature · 1 line
gitgitgadget
#1 lore raw
Quoted 7 lines · M Hickford via GitGitGadget

From: M Hickford <[email protected]>

Git documentation is written in AsciiDoc. This format is easily mistaken for the pervasive Markdown.

Add a vim modeline to help editors identify the format and provide syntax highlighting, rendering and autocomplete.

I don't think this is a good idea. To be clear, I use Vim and Neovim (mostly the latter), but I just don't think we should litter our project with editor-specific contents. I know Junio uses Emacs, and other contributors use other things, and there's no uniform syntax that works everywhere. (Nor could there be, because different editors have different names for different languages.)

We also don't set editor-specific ignore files in our .gitignore. Emacs users are responsible for ignoring backup files in the global (per-user) config, Vim users for swap files, and so on.

Quoted 3 lines

This makes editing the documentation easier for prospective contributors. This is particularly important because new contributors often start with documentation changes.

I suspect prospective contributors who are moderately proficient with Vim and its descendants know how to do :setf asciidoc. If this were a different editor that were easier to start with (say, one that didn't have tons of Internet posts asking how to quit it), such as VS Code or even Emacs, then I would be more convinced by this argument.

Quoted 2 lines

A simpler alternative could be to rename files *.adoc. This would have the advantage of being recognised by even more tools.

This I would be in favour of. I use this extension on my personal AsciiDoc files and already have appropriate configuration set up. In conjunction with appropriate settings in our .editorconfig file (to configure indents properly), I think this would be valuable indeed, and, importantly, helpful to users of all editors.

Signature · 2 lines
brian m. carlson (they/them or he/him)
Toronto, Ontario, CA
#2 lore raw
Quoted 30 lines · brian m. carlson
Quoted 7 lines · M Hickford via GitGitGadget

From: M Hickford <[email protected]>

Git documentation is written in AsciiDoc. This format is easily mistaken for the pervasive Markdown.

Add a vim modeline to help editors identify the format and provide syntax highlighting, rendering and autocomplete.

I don't think this is a good idea. To be clear, I use Vim and Neovim (mostly the latter), but I just don't think we should litter our project with editor-specific contents. I know Junio uses Emacs, and other contributors use other things, and there's no uniform syntax that works everywhere. (Nor could there be, because different editors have different names for different languages.)

We also don't set editor-specific ignore files in our .gitignore. Emacs users are responsible for ignoring backup files in the global (per-user) config, Vim users for swap files, and so on.

Quoted 3 lines

This makes editing the documentation easier for prospective contributors. This is particularly important because new contributors often start with documentation changes.

I suspect prospective contributors who are moderately proficient with Vim and its descendants know how to do :setf asciidoc. If this were a different editor that were easier to start with (say, one that didn't have tons of Internet posts asking how to quit it), such as VS Code or even Emacs, then I would be more convinced by this argument.

Quoted 8 lines
Quoted 2 lines

A simpler alternative could be to rename files *.adoc. This would have the advantage of being recognised by even more tools.

This I would be in favour of. I use this extension on my personal AsciiDoc files and already have appropriate configuration set up. In conjunction with appropriate settings in our .editorconfig file (to configure indents properly), I think this would be valuable indeed, and, importantly, helpful to users of all editors.

The more I think about it, I prefer renaming to *.adoc too. It's easy to identify and obviously distinct from Markdown. GitHub and GitLab render adoc files beautifully [1][2]. Visual Studio Code offers to install an extension with syntax highlighting and previewing.

The vim modeline had no effect in Visual Studio Code. It could also be intimidating.

[1] https://github.com/couchbase-guides/how-to-write-a-guide/blob/master/README.adoc
[2] https://docs.gitlab.com/ee/user/asciidoc.html

#3 lore raw
In reply to brian m. carlson
Quoted 4 lines · brian m. carlson
Quoted 2 lines

A simpler alternative could be to rename files *.adoc. This would have the advantage of being recognised by even more tools.

This I would be in favour of.

Sounds quite sensible.

Thanks.

#4 lore raw
Quoted 9 lines · Junio C Hamano
Quoted 4 lines · brian m. carlson
Quoted 2 lines

A simpler alternative could be to rename files *.adoc. This would have the advantage of being recognised by even more tools.

This I would be in favour of.

Sounds quite sensible.

Great, we seem to have reached a consensus in favour of renaming Documentation AsciiDoc files to *.adoc.

I'll leave this to someone more familiar with the documentation build process (or patient to experiment). #leftoverbits

#5 lore raw
In reply to M Hickford via GitGitGadget
Quoted 8 lines · M Hickford via GitGitGadget

From: M Hickford <[email protected]>

Git documentation is written in AsciiDoc. This format is easily mistaken for the pervasive Markdown.

Add a vim modeline to help editors identify the format and provide syntax highlighting, rendering and autocomplete.

FWIW, Vim by default only has a single autocommand for *.txt files, and it's to see if they are help files.

Now, there is a fallback $VIMRUNTIME/scripts.vim mechanism that performs various "heuristic" checks, but I can't find a reference to markdown in it either. So stock Vim treats them as "filetype=text."

Quoted 7 lines

This makes editing the documentation easier for prospective contributors. This is particularly important because new contributors often start with documentation changes.

An alternative could be to move the modeline up or down the file (the location is not important).

Not quite. :help modeline says

The number of lines that are checked can be set with the 'modelines' option. If 'modeline' is off or 'modelines' is 0 no lines are checked.

and the default value of 'modelines' is 5.

Quoted 3 lines

A simpler alternative could be to rename files *.adoc. This would have the advantage of being recognised by even more tools.

Indeed, Vim knows that *.adoc and *.asciidoc are "filetype=asciidoc".

You could also see about submitting a patch to Vim to check *.txt files for asciidoc syntax, or add your own ftdetect rules [1] that say that files with %:p matching "git.*/Documentation" (for example) get the filetype asciidoc.

[1]: https://vi.stackexchange.com/a/23251/10604,
https://vi.stackexchange.com/a/18493/10604,
https://vi.stackexchange.com/a/28109/10604, etc.

Signature · 1 line
D. Ben Knoble