From 67021af6b83f239ca4f6da2390494e139320e1f9 Mon Sep 17 00:00:00 2001 From: Alisue Date: Sun, 24 Sep 2023 17:41:54 +0900 Subject: [PATCH] :boom: Change behavior of default arguments of commands Now default arguments are used only when no arguments are given and [&] (ampersand) feature is removed. We are planning to add a "persistent arguments" feature as an alternative. --- denops/gin/command/branch/main.ts | 40 +++++++++--------------- denops/gin/command/browse/main.ts | 24 ++++++--------- denops/gin/command/chaperon/main.ts | 40 +++++++++--------------- denops/gin/command/diff/main.ts | 40 +++++++++--------------- denops/gin/command/edit/main.ts | 40 +++++++++--------------- denops/gin/command/log/main.ts | 40 +++++++++--------------- denops/gin/command/patch/main.ts | 40 +++++++++--------------- denops/gin/command/status/main.ts | 40 +++++++++--------------- denops/gin/util/cmd.ts | 7 ----- doc/gin.txt | 48 +++++++++++++++++++---------- 10 files changed, 147 insertions(+), 212 deletions(-) diff --git a/denops/gin/command/branch/main.ts b/denops/gin/command/branch/main.ts index 89ac306f..b3a687aa 100644 --- a/denops/gin/command/branch/main.ts +++ b/denops/gin/command/branch/main.ts @@ -1,6 +1,10 @@ import type { Denops } from "https://deno.land/x/denops_std@v5.0.1/mod.ts"; import * as helper from "https://deno.land/x/denops_std@v5.0.1/helper/mod.ts"; -import { assert, is } from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^"; +import { + assert, + ensure, + is, +} from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^"; import * as vars from "https://deno.land/x/denops_std@v5.0.1/variable/mod.ts"; import { builtinOpts, @@ -10,11 +14,7 @@ import { validateOpts, } from "https://deno.land/x/denops_std@v5.0.1/argument/mod.ts"; -import { - normCmdArgs, - parseDisableDefaultArgs, - parseSilent, -} from "../../util/cmd.ts"; +import { normCmdArgs, parseSilent } from "../../util/cmd.ts"; import { exec } from "./command.ts"; import { edit } from "./edit.ts"; @@ -26,14 +26,10 @@ export function main(denops: Denops): void { assert(mods, is.String, { name: "mods" }); assert(args, is.ArrayOf(is.String), { name: "args" }); const silent = parseSilent(mods); - const [disableDefaultArgs, realArgs] = parseDisableDefaultArgs(args); return helper.ensureSilent(denops, silent, () => { return helper.friendlyCall( denops, - () => - command(denops, bang, mods, realArgs, { - disableDefaultArgs, - }), + () => command(denops, bang, mods, args), ); }); }, @@ -56,28 +52,22 @@ const allowedFlags = [ "no-abbrev", ]; -type CommandOptions = { - disableDefaultArgs?: boolean; -}; - async function command( denops: Denops, bang: string, mods: string, args: string[], - options: CommandOptions = {}, ): Promise { - if (!options.disableDefaultArgs) { - const defaultArgs = await vars.g.get( - denops, - "gin_branch_default_args", - [], + if (args.length === 0) { + args = ensure( + await vars.g.get(denops, "gin_branch_default_args", []), + is.ArrayOf(is.String), + { + name: "g:gin_branch_default_args", + }, ); - assert(defaultArgs, is.ArrayOf(is.String), { - name: "g:gin_branch_default_args", - }); - args = [...defaultArgs, ...args]; } + const [opts, flags, residue] = parse(await normCmdArgs(denops, args)); validateOpts(opts, [ "worktree", diff --git a/denops/gin/command/browse/main.ts b/denops/gin/command/browse/main.ts index a4f6728c..a16936d9 100644 --- a/denops/gin/command/browse/main.ts +++ b/denops/gin/command/browse/main.ts @@ -14,7 +14,7 @@ import { validateFlags, validateOpts, } from "https://deno.land/x/denops_std@v5.0.1/argument/mod.ts"; -import { normCmdArgs, parseDisableDefaultArgs } from "../../util/cmd.ts"; +import { normCmdArgs } from "../../util/cmd.ts"; import { exec } from "./command.ts"; type Range = readonly [number, number]; @@ -27,12 +27,10 @@ export function main(denops: Denops): void { "browse:command": (args, range) => { assert(args, is.ArrayOf(is.String), { name: "args" }); assert(range, is.OneOf([is.Undefined, isRange]), { name: "range" }); - const [disableDefaultArgs, realArgs] = parseDisableDefaultArgs(args); return helper.friendlyCall( denops, () => - command(denops, realArgs, { - disableDefaultArgs, + command(denops, args, { range, }), ); @@ -41,7 +39,6 @@ export function main(denops: Denops): void { } type CommandOptions = { - disableDefaultArgs?: boolean; range?: Range; }; @@ -50,17 +47,16 @@ async function command( args: string[], options: CommandOptions = {}, ): Promise { - if (!options.disableDefaultArgs) { - const defaultArgs = await vars.g.get( - denops, - "gin_browse_default_args", - [], + if (args.length === 0) { + args = ensure( + await vars.g.get(denops, "gin_browse_default_args", []), + is.ArrayOf(is.String), + { + name: "g:gin_browse_default_args", + }, ); - assert(defaultArgs, is.ArrayOf(is.String), { - name: "g:gin_browse_default_args", - }); - args = [...defaultArgs, ...args]; } + const [opts, flags, residue] = parse(await normCmdArgs(denops, args)); validateFlags(flags, [ "remote", diff --git a/denops/gin/command/chaperon/main.ts b/denops/gin/command/chaperon/main.ts index ff37efd0..d068c5b4 100644 --- a/denops/gin/command/chaperon/main.ts +++ b/denops/gin/command/chaperon/main.ts @@ -1,18 +1,18 @@ import type { Denops } from "https://deno.land/x/denops_std@v5.0.1/mod.ts"; import * as vars from "https://deno.land/x/denops_std@v5.0.1/variable/mod.ts"; import * as helper from "https://deno.land/x/denops_std@v5.0.1/helper/mod.ts"; -import { assert, is } from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^"; +import { + assert, + ensure, + is, +} from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^"; import { builtinOpts, formatOpts, parse, validateOpts, } from "https://deno.land/x/denops_std@v5.0.1/argument/mod.ts"; -import { - normCmdArgs, - parseDisableDefaultArgs, - parseSilent, -} from "../../util/cmd.ts"; +import { normCmdArgs, parseSilent } from "../../util/cmd.ts"; import { exec } from "./command.ts"; export function main(denops: Denops): void { @@ -22,43 +22,33 @@ export function main(denops: Denops): void { assert(bang, is.String, { name: "bang" }); assert(mods, is.String, { name: "mods" }); assert(args, is.ArrayOf(is.String), { name: "args" }); - const [disableDefaultArgs, realArgs] = parseDisableDefaultArgs(args); const silent = parseSilent(mods); return helper.ensureSilent(denops, silent, () => { return helper.friendlyCall( denops, - () => - command(denops, bang, mods, realArgs, { - disableDefaultArgs, - }), + () => command(denops, bang, mods, args), ); }); }, }; } -type CommandOptions = { - disableDefaultArgs?: boolean; -}; - async function command( denops: Denops, bang: string, mods: string, args: string[], - options: CommandOptions = {}, ): Promise { - if (!options.disableDefaultArgs) { - const defaultArgs = await vars.g.get( - denops, - "gin_chaperon_default_args", - [], + if (args.length === 0) { + args = ensure( + await vars.g.get(denops, "gin_chaperon_default_args", []), + is.ArrayOf(is.String), + { + name: "g:gin_chaperon_default_args", + }, ); - assert(defaultArgs, is.ArrayOf(is.String), { - name: "g:gin_chaperon_default_args", - }); - args = [...defaultArgs, ...args]; } + const [opts, _, residue] = parse(await normCmdArgs(denops, args)); validateOpts(opts, [ "worktree", diff --git a/denops/gin/command/diff/main.ts b/denops/gin/command/diff/main.ts index 9cff5346..486ebb2f 100644 --- a/denops/gin/command/diff/main.ts +++ b/denops/gin/command/diff/main.ts @@ -1,5 +1,9 @@ import type { Denops } from "https://deno.land/x/denops_std@v5.0.1/mod.ts"; -import { assert, is } from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^"; +import { + assert, + ensure, + is, +} from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^"; import * as helper from "https://deno.land/x/denops_std@v5.0.1/helper/mod.ts"; import * as vars from "https://deno.land/x/denops_std@v5.0.1/variable/mod.ts"; import { @@ -9,11 +13,7 @@ import { validateFlags, validateOpts, } from "https://deno.land/x/denops_std@v5.0.1/argument/mod.ts"; -import { - normCmdArgs, - parseDisableDefaultArgs, - parseSilent, -} from "../../util/cmd.ts"; +import { normCmdArgs, parseSilent } from "../../util/cmd.ts"; import { exec } from "./command.ts"; import { edit } from "./edit.ts"; import { read } from "./read.ts"; @@ -26,15 +26,11 @@ export function main(denops: Denops): void { assert(bang, is.String, { name: "bang" }); assert(mods, is.String, { name: "mods" }); assert(args, is.ArrayOf(is.String), { name: "args" }); - const [disableDefaultArgs, realArgs] = parseDisableDefaultArgs(args); const silent = parseSilent(mods); return helper.ensureSilent(denops, silent, () => { return helper.friendlyCall( denops, - () => - command(denops, bang, mods, realArgs, { - disableDefaultArgs, - }), + () => command(denops, bang, mods, args), ); }); }, @@ -81,28 +77,22 @@ const allowedFlags = [ "ignore-submodules", ]; -type CommandOptions = { - disableDefaultArgs?: boolean; -}; - async function command( denops: Denops, bang: string, mods: string, args: string[], - options: CommandOptions = {}, ): Promise { - if (!options.disableDefaultArgs) { - const defaultArgs = await vars.g.get( - denops, - "gin_diff_default_args", - [], + if (args.length === 0) { + args = ensure( + await vars.g.get(denops, "gin_diff_default_args", []), + is.ArrayOf(is.String), + { + name: "g:gin_diff_default_args", + }, ); - assert(defaultArgs, is.ArrayOf(is.String), { - name: "g:gin_diff_default_args", - }); - args = [...defaultArgs, ...args]; } + const [opts, flags, residue] = parse(await normCmdArgs(denops, args)); validateOpts(opts, [ "processor", diff --git a/denops/gin/command/edit/main.ts b/denops/gin/command/edit/main.ts index 50153cfc..d6154bec 100644 --- a/denops/gin/command/edit/main.ts +++ b/denops/gin/command/edit/main.ts @@ -1,5 +1,9 @@ import type { Denops } from "https://deno.land/x/denops_std@v5.0.1/mod.ts"; -import { assert, is } from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^"; +import { + assert, + ensure, + is, +} from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^"; import * as vars from "https://deno.land/x/denops_std@v5.0.1/variable/mod.ts"; import * as helper from "https://deno.land/x/denops_std@v5.0.1/helper/mod.ts"; import { @@ -8,11 +12,7 @@ import { parseOpts, validateOpts, } from "https://deno.land/x/denops_std@v5.0.1/argument/mod.ts"; -import { - normCmdArgs, - parseDisableDefaultArgs, - parseSilent, -} from "../../util/cmd.ts"; +import { normCmdArgs, parseSilent } from "../../util/cmd.ts"; import { exec } from "./command.ts"; import { edit } from "./edit.ts"; import { read } from "./read.ts"; @@ -25,15 +25,11 @@ export function main(denops: Denops): void { assert(bang, is.String, { name: "bang" }); assert(mods, is.String, { name: "mods" }); assert(args, is.ArrayOf(is.String), { name: "args" }); - const [disableDefaultArgs, realArgs] = parseDisableDefaultArgs(args); const silent = parseSilent(mods); return helper.ensureSilent(denops, silent, () => { return helper.friendlyCall( denops, - () => - command(denops, bang, mods, realArgs, { - disableDefaultArgs, - }), + () => command(denops, bang, mods, args), ); }); }, @@ -55,28 +51,22 @@ export function main(denops: Denops): void { }; } -type CommandOptions = { - disableDefaultArgs?: boolean; -}; - async function command( denops: Denops, bang: string, mods: string, args: string[], - options: CommandOptions = {}, ): Promise { - if (!options.disableDefaultArgs) { - const defaultArgs = await vars.g.get( - denops, - "gin_edit_default_args", - [], + if (args.length === 0) { + args = ensure( + await vars.g.get(denops, "gin_edit_default_args", []), + is.ArrayOf(is.String), + { + name: "g:gin_edit_default_args", + }, ); - assert(defaultArgs, is.ArrayOf(is.String), { - name: "g:gin_edit_default_args", - }); - args = [...defaultArgs, ...args]; } + const [opts, residue] = parseOpts(await normCmdArgs(denops, args)); validateOpts(opts, [ "worktree", diff --git a/denops/gin/command/log/main.ts b/denops/gin/command/log/main.ts index b7fd12a8..c66f9846 100644 --- a/denops/gin/command/log/main.ts +++ b/denops/gin/command/log/main.ts @@ -1,7 +1,11 @@ import type { Denops } from "https://deno.land/x/denops_std@v5.0.1/mod.ts"; +import { + assert, + ensure, + is, +} from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^"; import { unnullish } from "https://deno.land/x/unnullish@v1.0.1/unnullish.ts"; import * as helper from "https://deno.land/x/denops_std@v5.0.1/helper/mod.ts"; -import { assert, is } from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^"; import * as vars from "https://deno.land/x/denops_std@v5.0.1/variable/mod.ts"; import { builtinOpts, @@ -10,11 +14,7 @@ import { validateFlags, validateOpts, } from "https://deno.land/x/denops_std@v5.0.1/argument/mod.ts"; -import { - normCmdArgs, - parseDisableDefaultArgs, - parseSilent, -} from "../../util/cmd.ts"; +import { normCmdArgs, parseSilent } from "../../util/cmd.ts"; import { exec } from "./command.ts"; import { edit } from "./edit.ts"; import { read } from "./read.ts"; @@ -26,15 +26,11 @@ export function main(denops: Denops): void { assert(bang, is.String, { name: "bang" }); assert(mods, is.String, { name: "mods" }); assert(args, is.ArrayOf(is.String), { name: "args" }); - const [disableDefaultArgs, realArgs] = parseDisableDefaultArgs(args); const silent = parseSilent(mods); return helper.ensureSilent(denops, silent, () => { return helper.friendlyCall( denops, - () => - command(denops, bang, mods, realArgs, { - disableDefaultArgs, - }), + () => command(denops, bang, mods, args), ); }); }, @@ -251,28 +247,22 @@ const allowedFlags = [ "ita-invisible-in-index", ]; -type CommandOptions = { - disableDefaultArgs?: boolean; -}; - async function command( denops: Denops, bang: string, mods: string, args: string[], - options: CommandOptions = {}, ): Promise { - if (!options.disableDefaultArgs) { - const defaultArgs = await vars.g.get( - denops, - "gin_log_default_args", - [], + if (args.length === 0) { + args = ensure( + await vars.g.get(denops, "gin_log_default_args", []), + is.ArrayOf(is.String), + { + name: "g:gin_log_default_args", + }, ); - assert(defaultArgs, is.ArrayOf(is.String), { - name: "g:gin_log_default_args", - }); - args = [...defaultArgs, ...args]; } + const [opts, flags, residue] = parse(await normCmdArgs(denops, args)); validateOpts(opts, [ "worktree", diff --git a/denops/gin/command/patch/main.ts b/denops/gin/command/patch/main.ts index 2cc55125..dc855162 100644 --- a/denops/gin/command/patch/main.ts +++ b/denops/gin/command/patch/main.ts @@ -1,6 +1,10 @@ import type { Denops } from "https://deno.land/x/denops_std@v5.0.1/mod.ts"; +import { + assert, + ensure, + is, +} from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^"; import * as helper from "https://deno.land/x/denops_std@v5.0.1/helper/mod.ts"; -import { assert, is } from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^"; import * as vars from "https://deno.land/x/denops_std@v5.0.1/variable/mod.ts"; import { builtinOpts, @@ -8,11 +12,7 @@ import { parse, validateOpts, } from "https://deno.land/x/denops_std@v5.0.1/argument/mod.ts"; -import { - normCmdArgs, - parseDisableDefaultArgs, - parseSilent, -} from "../../util/cmd.ts"; +import { normCmdArgs, parseSilent } from "../../util/cmd.ts"; import { exec } from "./command.ts"; export function main(denops: Denops): void { @@ -22,43 +22,33 @@ export function main(denops: Denops): void { assert(bang, is.String, { name: "bang" }); assert(mods, is.String, { name: "mods" }); assert(args, is.ArrayOf(is.String), { name: "args" }); - const [disableDefaultArgs, realArgs] = parseDisableDefaultArgs(args); const silent = parseSilent(mods); return helper.ensureSilent(denops, silent, () => { return helper.friendlyCall( denops, - () => - command(denops, bang, mods, realArgs, { - disableDefaultArgs, - }), + () => command(denops, bang, mods, args), ); }); }, }; } -type CommandOptions = { - disableDefaultArgs?: boolean; -}; - async function command( denops: Denops, bang: string, mods: string, args: string[], - options: CommandOptions = {}, ): Promise { - if (!options.disableDefaultArgs) { - const defaultArgs = await vars.g.get( - denops, - "gin_patch_default_args", - [], + if (args.length === 0) { + args = ensure( + await vars.g.get(denops, "gin_patch_default_args", []), + is.ArrayOf(is.String), + { + name: "g:gin_patch_default_args", + }, ); - assert(defaultArgs, is.ArrayOf(is.String), { - name: "g:gin_patch_default_args", - }); - args = [...defaultArgs, ...args]; } + const [opts, _, residue] = parse(await normCmdArgs(denops, args)); validateOpts(opts, [ "worktree", diff --git a/denops/gin/command/status/main.ts b/denops/gin/command/status/main.ts index da1becd1..4dc5d6e8 100644 --- a/denops/gin/command/status/main.ts +++ b/denops/gin/command/status/main.ts @@ -1,6 +1,10 @@ import type { Denops } from "https://deno.land/x/denops_std@v5.0.1/mod.ts"; +import { + assert, + ensure, + is, +} from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^"; import * as helper from "https://deno.land/x/denops_std@v5.0.1/helper/mod.ts"; -import { assert, is } from "https://deno.land/x/unknownutil@v3.9.0/mod.ts#^"; import * as vars from "https://deno.land/x/denops_std@v5.0.1/variable/mod.ts"; import { builtinOpts, @@ -9,11 +13,7 @@ import { validateFlags, validateOpts, } from "https://deno.land/x/denops_std@v5.0.1/argument/mod.ts"; -import { - normCmdArgs, - parseDisableDefaultArgs, - parseSilent, -} from "../../util/cmd.ts"; +import { normCmdArgs, parseSilent } from "../../util/cmd.ts"; import { exec } from "./command.ts"; import { edit } from "./edit.ts"; @@ -24,15 +24,11 @@ export function main(denops: Denops): void { assert(bang, is.String, { name: "bang" }); assert(mods, is.String, { name: "mods" }); assert(args, is.ArrayOf(is.String), { name: "args" }); - const [disableDefaultArgs, realArgs] = parseDisableDefaultArgs(args); const silent = parseSilent(mods); return helper.ensureSilent(denops, silent, () => { return helper.friendlyCall( denops, - () => - command(denops, bang, mods, realArgs, { - disableDefaultArgs, - }), + () => command(denops, bang, mods, args), ); }); }, @@ -54,28 +50,22 @@ const allowedFlags = [ "find-renames", ]; -type CommandOptions = { - disableDefaultArgs?: boolean; -}; - async function command( denops: Denops, bang: string, mods: string, args: string[], - options: CommandOptions = {}, ): Promise { - if (!options.disableDefaultArgs) { - const defaultArgs = await vars.g.get( - denops, - "gin_status_default_args", - [], + if (args.length === 0) { + args = ensure( + await vars.g.get(denops, "gin_status_default_args", []), + is.ArrayOf(is.String), + { + name: "g:gin_status_default_args", + }, ); - assert(defaultArgs, is.ArrayOf(is.String), { - name: "g:gin_status_default_args", - }); - args = [...defaultArgs, ...args]; } + const [opts, flags, residue] = parse(await normCmdArgs(denops, args)); validateOpts(opts, [ "worktree", diff --git a/denops/gin/util/cmd.ts b/denops/gin/util/cmd.ts index d2b4a75a..00910eb2 100644 --- a/denops/gin/util/cmd.ts +++ b/denops/gin/util/cmd.ts @@ -2,13 +2,6 @@ import type { Denops } from "https://deno.land/x/denops_std@v5.0.1/mod.ts"; import { Silent } from "https://deno.land/x/denops_std@v5.0.1/helper/mod.ts"; import { expand } from "./expand.ts"; -export function parseDisableDefaultArgs(args: string[]): [boolean, string[]] { - if (args.at(0) === "&") { - return [true, args.slice(1)]; - } - return [false, args]; -} - export function parseSilent(mods: string): Silent { if (mods.indexOf("silent!") !== -1) { return "silent!"; diff --git a/doc/gin.txt b/doc/gin.txt index 38d86280..8e98fecf 100644 --- a/doc/gin.txt +++ b/doc/gin.txt @@ -143,7 +143,7 @@ COMMANDS *gin-commands* Use a bang (!) to forcibly open a buffer. *:GinBranch* -:GinBranch[!][&] [{++option}...] [{flags}] [-- {pattern}...] +:GinBranch[!] [{++option}...] [{flags}] [-- {pattern}...] Open a "gin-branch" buffer to show a branch list. If {pattern} is given, it is used as a shell wildcard to restrict the output to matching branches. If multiple patterns are given, a branch is shown @@ -165,11 +165,12 @@ COMMANDS *gin-commands* to see mappings or disable by |g:gin_branch_disable_default_mappings|. Users can specify default arguments by |g:gin_branch_default_args|. + See |gin-commands-default-args| for detail. + Use a bang (!) to forcibly open a buffer. - Use an ampersand (&) to temporary disable default arguments. *:GinBrowse* -:GinBrowse[&] [{++option}...] [{flags}] [{commitish}] +:GinBrowse [{++option}...] [{flags}] [{commitish}] Open a system browser to visit the hosting service webpage of the repository. If no {commitish} is given, it defaults to HEAD. @@ -199,7 +200,7 @@ COMMANDS *gin-commands* arbitrary domain (e.g. GitHub Enterprise). Users can specify default arguments by |g:gin_browse_default_args|. - Use an ampersand (&) to temporary disable default arguments. + See |gin-commands-default-args| for detail. *:GinCd* *:GinLcd* @@ -211,7 +212,7 @@ COMMANDS *gin-commands* directory. Commands call |cd|, |lcd|, and |tcd| respectively. *:GinChaperon* -:GinChaperon[!][&] [++{option}...] {path} +:GinChaperon[!] [++{option}...] {path} Open three main buffers (THEIRS, WORKTREE, and OURS) and three supplemental buffers to solve conflicts on {path}. @@ -240,16 +241,18 @@ COMMANDS *gin-commands* |(gin-diffget)| Assigned to "do" in default. Users can specify default arguments by |g:gin_chaperon_default_args|. + See |gin-commands-default-args| for detail. + Use a bang (!) to forcibly open a buffer. - Use an ampersand (&) to temporary disable default arguments. Use |g:gin_chaperon_supplement_disable| to disable supplemental buffers. + Use |g:gin_chaperon_supplement_height| to regulate the height of supplemental buffers. *:GinDiff* -:GinDiff[!][&] [{++option}...] [{flags}] [{commitish}] [-- {path}...] +:GinDiff[!] [{++option}...] [{flags}] [{commitish}] [-- {path}...] Open a "gin-diff" buffer to show changes between the working tree and the index or a tree, changes between the index and a tree, changes between two trees. @@ -289,11 +292,12 @@ COMMANDS *gin-commands* |(gin-diffjump-new)| Assigned to "" in default. Users can specify default arguments by |g:gin_diff_default_args|. + See |gin-commands-default-args| for detail. + Use a bang (!) to forcibly open a buffer. - Use an ampersand (&) to temporary disable default arguments. *:GinEdit* -:GinEdit[!][&] [{++option}...] [{commitish}] {path} +:GinEdit[!] [{++option}...] [{commitish}] {path} Open a "gin-edit" buffer to show a corresponding content of {path} in the index or the commitish. If no {commitish} is specified, it opens a buffer that shows content @@ -305,11 +309,12 @@ COMMANDS *gin-commands* See |gin-commands-options| for common {++option}. Users can specify default arguments by |g:gin_edit_default_args|. + See |gin-commands-default-args| for detail. + Use a bang (!) to forcibly open a buffer. - Use an ampersand (&) to temporary disable default arguments. *:GinLog* -:GinLog[!][&] [{++option}...] [{commitish}] [-- {pathspec}...] +:GinLog[!] [{++option}...] [{commitish}] [-- {pathspec}...] Open a "gin-log" buffer to show a git log. The following options are valid as {++option}: @@ -325,11 +330,12 @@ COMMANDS *gin-commands* to see mappings or disable by |g:gin_log_disable_default_mappings|. Users can specify default arguments by |g:gin_log_default_args|. + See |gin-commands-default-args| for detail. + Use a bang (!) to forcibly open a buffer. - Use an ampersand (&) to temporary disable default arguments. *:GinPatch* -:GinPatch[!][&] [{++option}...] {path} +:GinPatch[!] [{++option}...] {path} Open three buffers (HEAD, INDEX, and WORKTREE) to patch changes of {path}. @@ -360,11 +366,12 @@ COMMANDS *gin-commands* |(gin-diffget)| Assigned to "do" in default. Users can specify default arguments by |g:gin_patch_default_args|. + See |gin-commands-default-args| for detail. + Use a bang (!) to forcibly open a buffer. - Use an ampersand (&) to temporary disable default arguments. *:GinStatus* -:GinStatus[!][&] [{++option}...] [{flags}] [-- {pathspec}...] +:GinStatus[!] [{++option}...] [{flags}] [-- {pathspec}...] Open a "gin-status" buffer to show a status. See |gin-commands-options| for common {++option}. @@ -383,8 +390,9 @@ COMMANDS *gin-commands* to see mappings or disable by |g:gin_status_disable_default_mappings|. Users can specify default arguments by |g:gin_status_default_args|. + See |gin-commands-default-args| for detail. + Use a bang (!) to forcibly open a buffer. - Use an ampersand (&) to temporary disable default arguments. *gin-commands-options* Gin supports several options starts with double plus signs (++) as: @@ -464,6 +472,14 @@ Users can define "GinLocal" buffer local command on those buffers like autocmd BufReadCmd ginlog://* call s:define_gin_local() augroup END < + *gin-commands-default-args* +Users can specify default arguments that is used when no arguments are given +for each Gin commands by variable like "g: gin_{command}_default_args". +For example, to specify default arguments for |:GinLog|, use +"g:gin_log_default_args" variable like +> + let g:gin_log_default_args = ['--graph', '--decorate'] +< ----------------------------------------------------------------------------- VARIABLES *gin-variables*