Skip to content

Update quickfix.{txt,jax} #1899

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jan 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 65 additions & 1 deletion doc/quickfix.jax
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
*quickfix.txt* For Vim バージョン 9.1. Last change: 2024 Dec 16
*quickfix.txt* For Vim バージョン 9.1. Last change: 2024 Dec 27


VIMリファレンスマニュアル by Bram Moolenaar
Expand Down Expand Up @@ -1374,6 +1374,70 @@ Vim コマンドは 'makeprg' [0] に習熟していると、デフォルトア
\ function('GenericPostCompilerCommand'),
\ }

"PostCompilerAction" が利用可能な場合、"PostCompilerActionExecutor" もサポート
される。その値は、常に文字列型の単一のパラメータを宣言し、|:cc| (または |:ll|)
の現在のステータスを確認した後、保留中のポストコンパイラアクションを含む
|:execute| をその引数にディスパッチできるかどうかを決定する関数を指す Funcref
である必要がある: >vim

function! GenericPostCompilerActionExecutor(action) abort
try
cc
catch /\<E42:/
execute a:action
endtry
endfunction

補足として、利用可能な "Pre*Action" (または "*Pre*Command") の一部またはすべて
は |:make| (または同等のもの) の前に実装内で `:doautocmd java_spotbugs_post
User` を実行して、一度だけ実行される |ShellCmdPost| `:autocmd` を定義し、
"PostCompilerActionExecutor" が呼び出されるように手配する。その後、このイベン
トを使用するために `:doautocmd java_spotbugs_post ShellCmdPost` を実行する:
>vim
function! GenericPreCompilerCommand(arguments) abort
if !exists('g:spotbugs_compilation_done')
doautocmd java_spotbugs_post User
execute 'make ' . a:arguments
" :make が同期している場合にのみ doautocmd を実行する。
" 下記の注記を参照
doautocmd java_spotbugs_post ShellCmdPost " XXX: (a)
let g:spotbugs_compilation_done = 1
else
cc
endif
endfunction

function! GenericPreCompilerTestCommand(arguments) abort
if !exists('g:spotbugs_test_compilation_done')
doautocmd java_spotbugs_post User
execute 'make ' . a:arguments
" :make が同期している場合にのみ doautocmd を実行する。
" 下記の注記を参照
doautocmd java_spotbugs_post ShellCmdPost " XXX: (b)
let g:spotbugs_test_compilation_done = 1
else
cc
endif
endfunction

let g:spotbugs_properties = {
\ 'compiler': 'maven',
\ 'DefaultPreCompilerCommand':
\ function('GenericPreCompilerCommand'),
\ 'DefaultPreCompilerTestCommand':
\ function('GenericPreCompilerTestCommand'),
\ 'PostCompilerActionExecutor':
\ function('GenericPostCompilerActionExecutor'),
\ }

`:make` に相当するコマンドが非同期実行が可能で `ShellCmdPost` イベントを消費で
きる場合、非ブロッキング実行の順序を維持するために
`:doautocmd java_spotbugs_post ShellCmdPost` をそのような "*Action" (または
"*Command") 実装 (つまり、リストされている例の `(a)` と `(b)` の行) から削除
し、通知 (以下を参照) を抑制する必要がある。
`ShellCmdPost` `:autocmd` は、その名前を "augroupForPostCompilerAction" キーに
割り当てることで、任意の |:augroup| に関連付けることができる。

デフォルトのアクションが目的のワークフローに適していない場合は、任意の関数を自
分で記述し、その Funcref をサポートされているキー "PreCompilerAction"、
"PreCompilerTestAction"、および "PostCompilerAction" に一致させて続行する。
Expand Down
66 changes: 65 additions & 1 deletion en/quickfix.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
*quickfix.txt* For Vim version 9.1. Last change: 2024 Dec 16
*quickfix.txt* For Vim version 9.1. Last change: 2024 Dec 27


VIM REFERENCE MANUAL by Bram Moolenaar
Expand Down Expand Up @@ -1424,6 +1424,70 @@ of |:make|, and assigning its |Funcref| to the selected key. For example:
\ function('GenericPostCompilerCommand'),
\ }

When "PostCompilerAction" is available, "PostCompilerActionExecutor" is also
supported. Its value must be a Funcref pointing to a function that always
declares a single parameter of type string and decides whether |:execute| can
be dispatched on its argument, containing a pending post-compiler action,
after ascertaining the current status of |:cc| (or |:ll|): >vim

function! GenericPostCompilerActionExecutor(action) abort
try
cc
catch /\<E42:/
execute a:action
endtry
endfunction

Complementary, some or all of the available "Pre*Action"s (or "*Pre*Command"s)
may run `:doautocmd java_spotbugs_post User` in their implementations before
|:make| (or its equivalent) to define a once-only |ShellCmdPost| `:autocmd`
that will arrange for "PostCompilerActionExecutor" to be invoked; and then run
`:doautocmd java_spotbugs_post ShellCmdPost` to consume this event: >vim

function! GenericPreCompilerCommand(arguments) abort
if !exists('g:spotbugs_compilation_done')
doautocmd java_spotbugs_post User
execute 'make ' . a:arguments
" only run doautocmd when :make was synchronous
" see note below
doautocmd java_spotbugs_post ShellCmdPost " XXX: (a)
let g:spotbugs_compilation_done = 1
else
cc
endif
endfunction

function! GenericPreCompilerTestCommand(arguments) abort
if !exists('g:spotbugs_test_compilation_done')
doautocmd java_spotbugs_post User
execute 'make ' . a:arguments
" only run doautocmd when :make was synchronous
" see note below
doautocmd java_spotbugs_post ShellCmdPost " XXX: (b)
let g:spotbugs_test_compilation_done = 1
else
cc
endif
endfunction

let g:spotbugs_properties = {
\ 'compiler': 'maven',
\ 'DefaultPreCompilerCommand':
\ function('GenericPreCompilerCommand'),
\ 'DefaultPreCompilerTestCommand':
\ function('GenericPreCompilerTestCommand'),
\ 'PostCompilerActionExecutor':
\ function('GenericPostCompilerActionExecutor'),
\ }

If a command equivalent of `:make` is capable of asynchronous execution and
consuming `ShellCmdPost` events, `:doautocmd java_spotbugs_post ShellCmdPost`
must be removed from such "*Action" (or "*Command") implementations (i.e. the
lines `(a)` and `(b)` in the listed examples) to retain a sequential order for
non-blocking execution, and any notification (see below) must be suppressed.
A `ShellCmdPost` `:autocmd` can be associated with any |:augroup| by assigning
its name to the "augroupForPostCompilerAction" key.

When default actions are not suited to a desired workflow, proceed by writing
arbitrary functions yourself and matching their Funcrefs to the supported
keys: "PreCompilerAction", "PreCompilerTestAction", and "PostCompilerAction".
Expand Down
Loading