mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-05-31 03:51:14 -03:00
Do not use huge fish list
Using a file is significantly faster. Profiling overview (times in microseconds): - cargo expand: from 4959320 to 4503409 (speedup 1.1) - gettext call pipeline: from 436996 to 13536 (speedup 32.3) - static string pipeline: from 477429 to 404880 (speedup 1.18)
This commit is contained in:
@@ -15,22 +15,25 @@ begin
|
||||
echo ""
|
||||
end >$output_file
|
||||
|
||||
set -l tmpfile (mktemp)
|
||||
# This is a gigantic crime.
|
||||
# We use cargo-expand to get all our wgettext invocations.
|
||||
# This might be replaced once we have a tool which properly handles macro expansions.
|
||||
set -l expanded (cargo expand --lib; for f in fish fish_indent fish_key_reader; cargo expand --bin $f; end)
|
||||
begin cargo expand --lib; for f in fish fish_indent fish_key_reader; cargo expand --bin $f; end; end >$tmpfile
|
||||
|
||||
# Extract any gettext call
|
||||
set -l strs (printf '%s\n' $expanded | grep -A1 wgettext_static_str |
|
||||
set -l strs (grep -A1 wgettext_static_str <$tmpfile |
|
||||
grep 'widestring::internals::core::primitive::str =' |
|
||||
string match -rg '"(.*)"' | string match -rv '^%ls$|^$' |
|
||||
# escaping difference between gettext and cargo-expand: single-quotes
|
||||
string replace -a "\'" "'")
|
||||
|
||||
# Extract any constants
|
||||
set -a strs (string match -rv 'BUILD_VERSION:|PACKAGE_NAME' -- $expanded |
|
||||
set -a strs (string match -rv 'BUILD_VERSION:|PACKAGE_NAME' <$tmpfile |
|
||||
string match -rg 'const [A-Z_]*: &str = "(.*)"' | string replace -a "\'" "'")
|
||||
|
||||
rm $tmpfile
|
||||
|
||||
# Sort the extracted strings and remove duplicates.
|
||||
# This is optional.
|
||||
set -l strs (string join \n -- $strs | sort -u)
|
||||
|
||||
Reference in New Issue
Block a user