patch 9.1.0865: filetype: org files are not recognized
Commit:
https://github.com/vim/vim/commit/0684800c853ee5bd6e6736389b1a6ebe6a16a741
Author: Luca Saccarola <[email protected]>
Date: Thu Nov 14 22:44:14 2024 +0100
patch 9.1.0865: filetype: org files are not recognized
Problem: filetype: org files are not recognized
Solution: detect '*.org' files as 'org' filetype,
include filetype and syntax plugin
(Luca Saccarola)
closes: #16054
Signed-off-by: Luca Saccarola <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt
index 8b4e25e17..06fc82923 100644
--- a/runtime/doc/filetype.txt
+++ b/runtime/doc/filetype.txt
@@ -1,4 +1,4 @@
-*filetype.txt* For Vim version 9.1. Last change: 2024 Nov 12
+*filetype.txt* For Vim version 9.1. Last change: 2024 Nov 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -843,6 +843,12 @@ To enable folding use this: >
let g:markdown_recommended_style = 0
+ORG *ft-org-plugin*
+
+To enable folding use this: >
+ let g:org_folding = 1
+<
+
PDF *ft-pdf-plugin*
Two maps, <C-]> and <C-T>, are provided to simulate a tag stack for navigating
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 59add1916..897f356bb 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1472,6 +1472,9 @@ au BufNewFile,BufRead
*.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md
\ setf markdown |
\ endif
+" Org (Emacs' org-mode)
+au BufNewFile,BufRead *.org setf org
+
" Mason (it used to include *.comp, are those Mason files?)
au BufNewFile,BufRead *.mason,*.mhtml setf mason
diff --git a/runtime/ftplugin/org.vim b/runtime/ftplugin/org.vim
new file mode 100644
index 000000000..45a5e19d4
--- /dev/null
+++ b/runtime/ftplugin/org.vim
@@ -0,0 +1,37 @@
+" Vim filetype plugin file
+" Language: Org
+" Maintainer: Luca Saccarola <[email protected]>
+" Last Change: 2024 Nov 14
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+if exists('b:undo_ftplugin')
+ let b:undo_ftplugin .= "|setl cms< com< fo< flp<"
+else
+ let b:undo_ftplugin = "setl cms< com< fo< flp<"
+endif
+
+setl commentstring=#\ %s
+setl comments=fb:*,fb:-,fb:+,b:#,b:\:
+
+setl formatoptions+=nql
+setl formatlistpat=^\s*\(\(\d\|\a\)\+[.)]\|[+-]\)\s\+
+
+function OrgFoldExpr()
+ let l:depth = match(getline(v:lnum), '\(^\*\+\)\@<=\( .*$\)\@=')
+ if l:depth > 0 && synIDattr(synID(v:lnum, 1, 1), 'name') =~#
'\m^orgHeadline'
+ return ">" . l:depth
+ endif
+ return "="
+endfunction
+
+if has("folding") && get(g:, 'org_folding', 0)
+ setl foldexpr=OrgFoldExpr()
+ setl foldmethod=expr
+ let b:undo_ftplugin .= "|setl foldexpr< foldmethod<"
+endif
+
+" vim: ts=8 sts=2 sw=2 et
diff --git a/runtime/syntax/org.vim b/runtime/syntax/org.vim
new file mode 100644
index 000000000..89c8de31b
--- /dev/null
+++ b/runtime/syntax/org.vim
@@ -0,0 +1,71 @@
+" Vim syntax file
+" Language: Org
+" Maintainer: Luca Saccarola <[email protected]>
+" Last Change: 2024 Nov 14
+"
+" Reference Specification: Org mode manual
+" GNU Info: `$ info Org`
+" Web: <https://orgmode.org/manual/index.html>
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+let b:current_syntax = 'org'
+
+syn case ignore
+
+" Bold
+syn region orgBold matchgroup=orgBoldDelimiter start="\(^\|[-
'"({\]]\)\@<=\*\ze[^ ]" end="^\@!\*\([^\k\*]\|$\)\@=" keepend
+hi def link orgBold markdownBold
+hi def link orgBoldDelimiter orgBold
+
+" Italic
+syn region orgItalic matchgroup=orgItalicDelimiter start="\(^\|[-
'"({\]]\)\@<=\/\ze[^ ]" end="^\@!\/\([^\k\/]\|$\)\@=" keepend
+hi def link orgItalic markdownItalic
+hi def link orgItalicDelimiter orgItalic
+
+" Strikethrogh
+syn region orgStrikethrough matchgroup=orgStrikethroughDelimiter start="\(^\|[
'"({\]]\)\@<=+\ze[^ ]" end="^\@!+\([^\k+]\|$\)\@=" keepend
+hi def link orgStrikethrough markdownStrike
+hi def link orgStrikethroughDelimiter orgStrikethrough
+
+" Underline
+syn region orgUnderline matchgroup=orgUnderlineDelimiter start="\(^\|[-
'"({\]]\)\@<=_\ze[^ ]" end="^\@!_\([^\k_]\|$\)\@=" keepend
+
+" Headlines
+syn match orgHeadline "^\*\+\s\+.*$" keepend
+hi def link orgHeadline Title
+
+" Line Comment
+syn match orgLineComment /^\s*#\s\+.*$/ keepend
+hi def link orgLineComment Comment
+
+" Block Comment
+syn region orgBlockComment matchgroup=orgBlockCommentDelimiter start="
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/vim_dev/E1tBhsi-005Kj4-4B%40256bit.org.