-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
runtime(groff): Add compiler plugin for groff
Groff MOM (Macros for Manuscripts) is a macro package for the GNU troff (groff) typesetting system, a light-weight alternative to LaTeX for professional-quality documents. closes: vim#15646 Signed-off-by: Konfekt <[email protected]> Signed-off-by: Christian Brabandt <[email protected]>
- Loading branch information
Showing
4 changed files
with
61 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
" Vim compiler file | ||
" Compiler: Groff | ||
" Maintainer: Konfekt | ||
" Last Change: 2024 Sep 8 | ||
" | ||
" Expects output file extension, say `:make html` or `:make pdf`. | ||
" Supported devices as of Sept 2024 are: (x)html, pdf, ps, dvi, lj4, lbp ... | ||
" Adjust command-line flags, language, encoding by buffer-local/global variables | ||
" groff_compiler_args, groff_compiler_lang, and groff_compiler_encoding, | ||
" which default to '', &spelllang and 'utf8'. | ||
|
||
if exists("current_compiler") | ||
finish | ||
endif | ||
|
||
let s:keepcpo = &cpo | ||
set cpo&vim | ||
|
||
let current_compiler = 'groff' | ||
|
||
silent! function s:groff_compiler_lang() | ||
let lang = get(b:, 'groff_compiler_lang', | ||
\ &spell ? matchstr(&spelllang, '^\a\a') : '') | ||
if lang ==# 'en' | let lang = '' | endif | ||
return empty(lang) ? '' : '-m'..lang | ||
endfunction | ||
|
||
" Requires output format (= device) to be set by user after :make. | ||
execute 'CompilerSet makeprg=groff'..escape( | ||
\ ' '..s:groff_compiler_lang().. | ||
\ ' -K'..get(b:, 'groff_compiler_encoding', get(g:, 'groff_compiler_encoding', 'utf8')).. | ||
\ ' '..get(b:, 'groff_compiler_args', get(g:, 'groff_compiler_args', '')).. | ||
\ ' -mom -T$* -- %:S > %:r:S.$*', ' ') | ||
" From Gavin Freeborn's https://github.com/Gavinok/vim-troff under Vim License | ||
" https://github.com/Gavinok/vim-troff/blob/91017b1423caa80aba541c997909a4f810edd275/compiler/troff.vim#L39 | ||
CompilerSet errorformat=%o:<standard\ input>\ (%f):%l:%m, | ||
\%o:\ <standard\ input>\ (%f):%l:%m, | ||
\%o:%f:%l:%m, | ||
\%o:\ %f:%l:%m, | ||
\%f:%l:\ macro\ %trror:%m, | ||
\%f:%l:%m, | ||
\%W%tarning:\ file\ '%f'\\,\ around\ line\ %l:,%Z%m | ||
|
||
let &cpo = s:keepcpo | ||
unlet s:keepcpo |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters