mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-03 17:33:25 +00:00
Merge branch 'wip/nielsdg/bash-completion' into 'master'
WIP: Add a Bash completion file See merge request GNOME/gimp!266
This commit is contained in:
commit
1c1a7f59cc
2 changed files with 122 additions and 0 deletions
90
etc/bash_completion.in
Normal file
90
etc/bash_completion.in
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
__gimp()
|
||||||
|
{
|
||||||
|
COMPREPLY=()
|
||||||
|
local current="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
local prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||||
|
|
||||||
|
# GIMP options, sorted alphabetically
|
||||||
|
#
|
||||||
|
# Note that we don't specify short options here, since they're quite unintuitive
|
||||||
|
options=(
|
||||||
|
"--as-new"
|
||||||
|
"--batch"
|
||||||
|
"--batch-interpreter"
|
||||||
|
"--console-messages"
|
||||||
|
"--debug-handlers"
|
||||||
|
"--dump-gimprc"
|
||||||
|
"--dump-gimprc-manpage"
|
||||||
|
"--dump-gimprc-system"
|
||||||
|
"--dump-pdb-procedures-deprecated"
|
||||||
|
"--g-fatal-warnings"
|
||||||
|
"--gimprc"
|
||||||
|
"--help"
|
||||||
|
"--help-all"
|
||||||
|
"--help-gegl"
|
||||||
|
"--help-gtk"
|
||||||
|
"--license"
|
||||||
|
"--new-instance"
|
||||||
|
"--no-cpu-accel"
|
||||||
|
"--no-data"
|
||||||
|
"--no-fonts"
|
||||||
|
"--no-interface"
|
||||||
|
"--no-shm"
|
||||||
|
"--no-splash"
|
||||||
|
"--pdb-compat-mode"
|
||||||
|
"--session"
|
||||||
|
"--show-playground"
|
||||||
|
"--stack-trace-mode"
|
||||||
|
"--system-gimprc"
|
||||||
|
"--verbose"
|
||||||
|
"--version"
|
||||||
|
)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Different completions for specific options
|
||||||
|
#
|
||||||
|
case "${prev}" in
|
||||||
|
# Options that shouldn't be used in combination with something else
|
||||||
|
help | license | version)
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
# Expect a filename
|
||||||
|
gimprc | session | system-gimprc)
|
||||||
|
COMPREPLY=( $(compgen -f -- ${current}) )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
# Expect *some* argument, so don't complete
|
||||||
|
b | batch | display)
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
batch-interpreter)
|
||||||
|
# FIXME: we should try to get the list of interpreters somehow
|
||||||
|
local interpreters=$(gimp --LIST_INTERPRETERS)
|
||||||
|
COMPREPLY=("python-fu-eval" "plug-in-script-fu-eval")
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Default: complete with either an option "-W" or a filename "-f"
|
||||||
|
COMPREPLY=($(compgen -W "${options[*]}" -f -- ${current}))
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
complete -F __gimp @GIMP_MAIN_EXE@
|
||||||
|
if command -v @GIMP_SYMLINK1@ 2>&1 > /dev/null
|
||||||
|
then
|
||||||
|
complete -F __gimp @GIMP_SYMLINK1@
|
||||||
|
complete -F __gimp @GIMP_SYMLINK2@
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v @GIMP_CONSOLE_EXE@ 2>&1 > /dev/null
|
||||||
|
then
|
||||||
|
complete -F __gimp @GIMP_CONSOLE_EXE@
|
||||||
|
if command -v @GIMP_CONSOLE_SYMLINK1@ 2>&1 > /dev/null
|
||||||
|
then
|
||||||
|
complete -F __gimp @GIMP_CONSOLE_SYMLINK1@
|
||||||
|
complete -F __gimp @GIMP_CONSOLE_SYMLINK2@
|
||||||
|
fi
|
||||||
|
fi
|
|
@ -19,3 +19,35 @@ install_data(
|
||||||
],
|
],
|
||||||
install_dir: gimpsysconfdir,
|
install_dir: gimpsysconfdir,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Bash completion
|
||||||
|
have_bash = find_program('bash', required : false).found() # For completion scripts
|
||||||
|
bash_comp_dep = dependency('bash-completion', version: '>=2.0', required: false)
|
||||||
|
if have_bash
|
||||||
|
|
||||||
|
bash_comp_inst_dir = ''
|
||||||
|
if bash_comp_dep.found()
|
||||||
|
bash_comp_dir_override = bash_comp_dep.version().version_compare('>= 2.10') ? ['datadir', get_option('datadir')] : ['prefix', get_option('prefix')]
|
||||||
|
bash_comp_inst_dir = bash_comp_dep.get_variable('completionsdir', pkgconfig_define: bash_comp_dir_override)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if bash_comp_inst_dir == ''
|
||||||
|
message('Found bash-completion but the .pc file did not set \'completionsdir\', fallback to a predefined path')
|
||||||
|
bash_comp_inst_dir = get_option('datadir') / 'bash-completion' / 'completions'
|
||||||
|
endif
|
||||||
|
|
||||||
|
bash_completion_conf = configuration_data()
|
||||||
|
bash_completion_conf.set('GIMP_MAIN_EXE', gimpmain_exe_name)
|
||||||
|
bash_completion_conf.set('GIMP_SYMLINK1', 'gimp-' + gimp_app_version_major.to_string())
|
||||||
|
bash_completion_conf.set('GIMP_SYMLINK2', 'gimp')
|
||||||
|
|
||||||
|
bash_completion_conf.set('GIMP_CONSOLE_EXE', gimpconsole_exe_name)
|
||||||
|
bash_completion_conf.set('GIMP_CONSOLE_SYMLINK1', 'gimp-console-' + gimp_app_version_major.to_string())
|
||||||
|
bash_completion_conf.set('GIMP_CONSOLE_SYMLINK2', 'gimp-console')
|
||||||
|
|
||||||
|
configure_file(input : 'bash_completion.in',
|
||||||
|
output: 'gimp-' + gimp_app_version,
|
||||||
|
configuration: bash_completion_conf,
|
||||||
|
install: true,
|
||||||
|
install_dir: bash_comp_inst_dir)
|
||||||
|
endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue