patch 9.1.0865: filetype: org files are not recognized Commit: https://github.com/vim/vim/commit/0684800c853ee5bd6e6736389b1a6ebe6a16a741 Author: Luca Saccarola <github.e4...@aleeas.com> 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 <github.e4...@aleeas.com> Signed-off-by: Christian Brabandt <c...@256bit.org> 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 <github.e4...@aleeas.com> +" 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 <github.e4...@aleeas.com> +" 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 vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1tBhsi-005Kj4-4B%40256bit.org.