1
1
mirror of https://gitlab.gnome.org/GNOME/gimp.git synced 2025-10-06 01:12:40 +02:00

Compare commits

...

3 Commits

Author SHA1 Message Date
Jehan
c682d27c54 etc: make the new bash-completion file work for all variants of our executables.
In particular make it also work with the `gimp-console` and with all
symlink names.

Also rename the bash completion file using the full application version
so that it will be possible to install several such completion files
side by side.
2025-05-14 09:20:20 -03:00
Jehan
277e5124d2 etc: fix unknown meson option.
This fixes:

> […]/gimp/etc/meson.build:31:39: ERROR: dependency.get_variable got unknown keyword arguments "define_variable"

This MR was years-old. Maybe this option got renamed since that time.
2025-05-14 09:20:20 -03:00
Niels De Graef
a9053603fa Add a Bash completion file 2025-05-14 09:20:20 -03:00
2 changed files with 122 additions and 0 deletions

90
etc/bash_completion.in Normal file
View 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

View File

@@ -19,3 +19,35 @@ install_data(
],
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