mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-05-23 13:11:15 -03:00
Compare commits
68 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3478f78a05 | ||
|
|
19cedb01bc | ||
|
|
cb24c4a863 | ||
|
|
93478e7c51 | ||
|
|
4eac5f4d9d | ||
|
|
e76370b3b7 | ||
|
|
1e3153c3fb | ||
|
|
d0a95e4fde | ||
|
|
7174ebbb4b | ||
|
|
e81cec1633 | ||
|
|
02c04550fd | ||
|
|
b0bfc7758a | ||
|
|
cbf21b13d7 | ||
|
|
14f3c3e13e | ||
|
|
05ea6e9e66 | ||
|
|
74d2e6d5d8 | ||
|
|
1b8f9c2b03 | ||
|
|
491158dfad | ||
|
|
7fa08e31c6 | ||
|
|
7ac9ce7ffb | ||
|
|
197779697d | ||
|
|
96fabe4b29 | ||
|
|
4a4d35b625 | ||
|
|
92739a06e2 | ||
|
|
244e9586ca | ||
|
|
13a2ccae66 | ||
|
|
ed34845b10 | ||
|
|
74b104c9f6 | ||
|
|
1f8cdf85b6 | ||
|
|
dc02a8ce35 | ||
|
|
65e726324a | ||
|
|
fe3c42af9e | ||
|
|
28c7e7173f | ||
|
|
a897a26daa | ||
|
|
ffce214362 | ||
|
|
bdb8e4847f | ||
|
|
9750d8c3ad | ||
|
|
dadec16661 | ||
|
|
b5cd2763db | ||
|
|
a08dd70354 | ||
|
|
5b39d1fc6a | ||
|
|
38513de954 | ||
|
|
cc1ae25c3a | ||
|
|
002fa0e791 | ||
|
|
0589de7523 | ||
|
|
4e7e0139fd | ||
|
|
c044e1d433 | ||
|
|
fb0edf564e | ||
|
|
969ce68d5d | ||
|
|
6ef2e04518 | ||
|
|
bc84fe9407 | ||
|
|
38e8416da5 | ||
|
|
cf0e07aecd | ||
|
|
8e014bbf97 | ||
|
|
f9013ad7a6 | ||
|
|
8d2d50573a | ||
|
|
d25965afba | ||
|
|
6f895935a9 | ||
|
|
70ebc969f9 | ||
|
|
6d01138797 | ||
|
|
779f1371a1 | ||
|
|
5d24a846e3 | ||
|
|
c4f1c25a87 | ||
|
|
7d754b2865 | ||
|
|
232e38f105 | ||
|
|
725afc71fd | ||
|
|
6d60eaf04e | ||
|
|
7c1d8cf4f1 |
2
.github/workflows/autolabel_prs.yml
vendored
2
.github/workflows/autolabel_prs.yml
vendored
@@ -10,7 +10,7 @@ jobs:
|
||||
steps:
|
||||
- name: Set label and milestone
|
||||
id: set-label-milestone
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8, build_tools/update-dependencies.sh
|
||||
with:
|
||||
script: |
|
||||
const completionsLabel = 'completions';
|
||||
|
||||
8
.github/workflows/build_docker_images.yml
vendored
8
.github/workflows/build_docker_images.yml
vendored
@@ -37,10 +37,10 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
-
|
||||
name: Login to Container registry
|
||||
uses: docker/login-action@v3
|
||||
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0, build_tools/update-dependencies.sh
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
@@ -48,14 +48,14 @@ jobs:
|
||||
-
|
||||
name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
|
||||
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0, build_tools/update-dependencies.sh
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.NAMESPACE }}/${{ matrix.target }}
|
||||
flavor: |
|
||||
latest=true
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/build-push-action@v6
|
||||
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0, build_tools/update-dependencies.sh
|
||||
with:
|
||||
context: docker/context
|
||||
push: true
|
||||
|
||||
4
.github/workflows/lint-dependencies.yml
vendored
4
.github/workflows/lint-dependencies.yml
vendored
@@ -16,8 +16,8 @@ jobs:
|
||||
cargo-deny:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: EmbarkStudios/cargo-deny-action@v2
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
- uses: EmbarkStudios/cargo-deny-action@44db170f6a7d12a6e90340e9e0fca1f650d34b14 # v2.0.15, build_tools/update-dependencies.sh
|
||||
with:
|
||||
command: check licenses
|
||||
arguments: --all-features --locked --exclude-dev
|
||||
|
||||
10
.github/workflows/lint.yml
vendored
10
.github/workflows/lint.yml
vendored
@@ -9,7 +9,7 @@ jobs:
|
||||
format:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
- uses: ./.github/actions/rust-toolchain@stable
|
||||
with:
|
||||
components: rustfmt
|
||||
@@ -35,11 +35,13 @@ jobs:
|
||||
- rust_version: "msrv"
|
||||
features: ""
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
- uses: ./.github/actions/rust-toolchain
|
||||
with:
|
||||
toolchain_channel: ${{ matrix.rust_version }}
|
||||
components: clippy
|
||||
- name: Update package database
|
||||
run: sudo apt-get update
|
||||
- name: Install deps
|
||||
run: |
|
||||
sudo apt install gettext
|
||||
@@ -49,8 +51,10 @@ jobs:
|
||||
rustdoc:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
- uses: ./.github/actions/rust-toolchain@stable
|
||||
- name: Update package database
|
||||
run: sudo apt-get update
|
||||
- name: Install deps
|
||||
run: |
|
||||
sudo apt install gettext
|
||||
|
||||
2
.github/workflows/lockthreads.yml
vendored
2
.github/workflows/lockthreads.yml
vendored
@@ -18,7 +18,7 @@ jobs:
|
||||
pull-requests: write # for dessant/lock-threads to lock PRs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: dessant/lock-threads@v4
|
||||
- uses: dessant/lock-threads@f5f995c727ac99a91dec92781a8e34e7c839a65e # v6.0.0, build_tools/update-dependencies.sh
|
||||
with:
|
||||
github-token: ${{ github.token }}
|
||||
issue-inactive-days: '365'
|
||||
|
||||
22
.github/workflows/release.yml
vendored
22
.github/workflows/release.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
||||
name: Pre-release checks
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
with:
|
||||
# Workaround for https://github.com/actions/checkout/issues/882
|
||||
ref: ${{ inputs.version }}
|
||||
@@ -36,10 +36,12 @@ jobs:
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
tarball-name: ${{ steps.version.outputs.tarball-name }}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
with:
|
||||
# Workaround for https://github.com/actions/checkout/issues/882
|
||||
ref: ${{ inputs.version }}
|
||||
- name: Update package database
|
||||
run: sudo apt-get update
|
||||
- name: Install dependencies
|
||||
run: sudo apt install cmake gettext ninja-build python3-pip
|
||||
- uses: ./.github/actions/install-sphinx
|
||||
@@ -61,7 +63,7 @@ jobs:
|
||||
sed -n 2p "$relnotes" | grep -q '^$'
|
||||
sed -i 1,2d "$relnotes"
|
||||
- name: Upload tarball artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0, build_tools/update-dependencies.sh
|
||||
with:
|
||||
name: source-tarball
|
||||
path: |
|
||||
@@ -74,7 +76,7 @@ jobs:
|
||||
name: Build single-file fish for Linux
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
with:
|
||||
# Workaround for https://github.com/actions/checkout/issues/882
|
||||
ref: ${{ inputs.version }}
|
||||
@@ -82,6 +84,8 @@ jobs:
|
||||
uses: ./.github/actions/rust-toolchain@stable
|
||||
with:
|
||||
targets: x86_64-unknown-linux-musl,aarch64-unknown-linux-musl
|
||||
- name: Update package database
|
||||
run: sudo apt-get update
|
||||
- name: Install dependencies
|
||||
run: sudo apt install crossbuild-essential-arm64 gettext musl-tools
|
||||
- uses: ./.github/actions/install-sphinx
|
||||
@@ -100,7 +104,7 @@ jobs:
|
||||
tar -cazf fish-$(git describe)-linux-$arch.tar.xz \
|
||||
-C target/$arch-unknown-linux-musl/release fish
|
||||
done
|
||||
- uses: actions/upload-artifact@v4
|
||||
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0, build_tools/update-dependencies.sh
|
||||
with:
|
||||
name: Static builds for Linux
|
||||
path: fish-${{ inputs.version }}-linux-*.tar.xz
|
||||
@@ -114,19 +118,19 @@ jobs:
|
||||
name: Create release draft
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
with:
|
||||
# Workaround for https://github.com/actions/checkout/issues/882
|
||||
ref: ${{ inputs.version }}
|
||||
- name: Download all artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0, build_tools/update-dependencies.sh
|
||||
with:
|
||||
merge-multiple: true
|
||||
path: /tmp/artifacts
|
||||
- name: List artifacts
|
||||
run: find /tmp/artifacts -type f
|
||||
- name: Create draft release
|
||||
uses: softprops/action-gh-release@v2
|
||||
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0, build_tools/update-dependencies.sh
|
||||
with:
|
||||
tag_name: ${{ inputs.version }}
|
||||
name: fish ${{ inputs.version }}
|
||||
@@ -142,7 +146,7 @@ jobs:
|
||||
runs-on: macos-latest
|
||||
environment: macos-codesign
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
with:
|
||||
# Workaround for https://github.com/actions/checkout/issues/882
|
||||
ref: ${{ inputs.version }}
|
||||
|
||||
19
.github/workflows/test.yml
vendored
19
.github/workflows/test.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
||||
ubuntu:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
- uses: ./.github/actions/rust-toolchain@oldest-supported
|
||||
- name: Install deps
|
||||
uses: ./.github/actions/install-dependencies
|
||||
@@ -44,18 +44,19 @@ jobs:
|
||||
ubuntu-32bit-static-pcre2:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
- uses: ./.github/actions/rust-toolchain@oldest-supported
|
||||
with:
|
||||
targets: "i586-unknown-linux-gnu"
|
||||
- name: Update package database
|
||||
run: sudo apt-get update
|
||||
- name: Install deps
|
||||
uses: ./.github/actions/install-dependencies
|
||||
with:
|
||||
include_pcre: false
|
||||
include_sphinx: false
|
||||
- name: Install g++-multilib
|
||||
run: |
|
||||
sudo apt install g++-multilib
|
||||
run: sudo apt install g++-multilib
|
||||
- name: cmake
|
||||
env:
|
||||
CFLAGS: "-m32"
|
||||
@@ -80,13 +81,15 @@ jobs:
|
||||
RUSTFLAGS: "-Zsanitizer=address"
|
||||
# RUSTFLAGS: "-Zsanitizer=memory -Zsanitizer-memory-track-origins"
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
# All -Z options require running nightly
|
||||
- uses: dtolnay/rust-toolchain@nightly
|
||||
with:
|
||||
# ASAN uses `cargo build -Zbuild-std` which requires the rust-src component
|
||||
# this is comma-separated
|
||||
components: rust-src
|
||||
- name: Update package database
|
||||
run: sudo apt-get update
|
||||
- name: Install deps
|
||||
uses: ./.github/actions/install-dependencies
|
||||
with:
|
||||
@@ -128,7 +131,7 @@ jobs:
|
||||
# of crates.io, so give this a try. It's also sometimes significantly faster on all platforms.
|
||||
CARGO_NET_GIT_FETCH_WITH_CLI: true
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
- uses: ./.github/actions/rust-toolchain@oldest-supported
|
||||
- name: Install deps
|
||||
run: |
|
||||
@@ -155,8 +158,8 @@ jobs:
|
||||
run:
|
||||
shell: msys2 {0}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: msys2/setup-msys2@v2
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2, build_tools/update-dependencies.sh
|
||||
- uses: msys2/setup-msys2@4f806de0a5a7294ffabaff804b38a9b435a73bda # v2.30.0, build_tools/update-dependencies.sh
|
||||
with:
|
||||
update: true
|
||||
msystem: MSYS
|
||||
|
||||
3
AGENTS.md
Normal file
3
AGENTS.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Coding style
|
||||
|
||||
- Use comments sparingly. Don't explain what the code is doing, rather explain why.
|
||||
@@ -1,3 +1,25 @@
|
||||
fish 4.5.0 (released February 17, 2026)
|
||||
=======================================
|
||||
|
||||
This is mostly a patch release for Vi mode regressions in 4.4.0 but other minor behavior changes are included as well.
|
||||
|
||||
Interactive improvements
|
||||
------------------------
|
||||
- :kbd:`ctrl-l` no longer cancels history search (:issue:`12436`).
|
||||
- History search cursor positioning now works correctly with characters of arbitrary width.
|
||||
|
||||
Deprecations and removed features
|
||||
---------------------------------
|
||||
- fish no longer reads the terminfo database to alter behaviour based on the :envvar:`TERM` environment variable, and does not depend on ncurses or terminfo. The ``ignore-terminfo`` feature flag, introduced and enabled by default in fish 4.1, is now permanently enabled. fish may no longer work correctly on Data General Dasher D220 and Wyse WY-350 terminals, but should continue to work on all known terminal emulators released in the 21st century.
|
||||
|
||||
Regression fixes:
|
||||
-----------------
|
||||
- (from 4.4.0) Vi mode ``d,f`` key binding did not work (:issue:`12417`).
|
||||
- (from 4.4.0) Vi mode ``c,w`` key binding wrongly deleted trailing spaces (:issue:`12443`).
|
||||
- (from 4.4.0) Vi mode crash on ``c,i,w`` after accepting autosuggestion (:issue:`12430`).
|
||||
- (from 4.4.0) ``fish_vi_key_bindings`` called with a mode argument produced an error (:issue:`12413`).
|
||||
- (from 4.0.0) Build on Illumos (:issue:`12410`).
|
||||
|
||||
fish 4.4.0 (released February 03, 2026)
|
||||
=======================================
|
||||
|
||||
@@ -15,7 +37,7 @@ Interactive improvements
|
||||
New or improved bindings
|
||||
------------------------
|
||||
- Vi mode word movements (``w``, ``W``, ``e``, and ``E``) are now largely in line with Vim. The only exception is that underscores are treated as word separators (:issue:`12269`).
|
||||
- New special input functions to support these movements: ``forward-word-vi``, ``kill-word-vi``, ``forward-bigword-vi``, ``kill-bigword-vi``, ````forward-word-end``, ``backward-word-end``, ``forward-bigword-end``, ``backward-bigword-end``, ````kill-a-word``, ``kill-inner-word``, ``kill-a-bigword``, and ``kill-inner-bigword``.
|
||||
- New special input functions to support these movements: ``forward-word-vi``, ``kill-word-vi``, ``forward-bigword-vi``, ``kill-bigword-vi``, ``forward-word-end``, ``backward-word-end``, ``forward-bigword-end``, ``backward-bigword-end``, ``kill-a-word``, ``kill-inner-word``, ``kill-a-bigword``, and ``kill-inner-bigword``.
|
||||
- Vi mode key bindings now support counts for movement and deletion commands (e.g. `d3w` or `3l`), via a new operator mode (:issue:`2192`).
|
||||
- New ``catpuccin-*`` color themes.
|
||||
|
||||
|
||||
117
Cargo.lock
generated
117
Cargo.lock
generated
@@ -260,7 +260,7 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
|
||||
|
||||
[[package]]
|
||||
name = "fish"
|
||||
version = "4.4.0"
|
||||
version = "4.5.0"
|
||||
dependencies = [
|
||||
"assert_matches",
|
||||
"bitflags",
|
||||
@@ -290,13 +290,13 @@ dependencies = [
|
||||
"num-traits",
|
||||
"once_cell",
|
||||
"pcre2",
|
||||
"phf_codegen 0.13.1",
|
||||
"phf_codegen",
|
||||
"portable-atomic",
|
||||
"rand 0.9.2",
|
||||
"rand",
|
||||
"rsconf",
|
||||
"rust-embed",
|
||||
"serial_test",
|
||||
"terminfo",
|
||||
"unicode-width",
|
||||
"unix_path",
|
||||
"xterm-color",
|
||||
]
|
||||
@@ -352,7 +352,7 @@ name = "fish-gettext"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"fish-gettext-maps",
|
||||
"phf 0.13.1",
|
||||
"phf",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -370,8 +370,8 @@ version = "0.0.0"
|
||||
dependencies = [
|
||||
"fish-build-helper",
|
||||
"fish-gettext-mo-file-parser",
|
||||
"phf 0.13.1",
|
||||
"phf_codegen 0.13.1",
|
||||
"phf",
|
||||
"phf_codegen",
|
||||
"rsconf",
|
||||
]
|
||||
|
||||
@@ -395,7 +395,7 @@ name = "fish-tempfile"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"nix",
|
||||
"rand 0.9.2",
|
||||
"rand",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -403,7 +403,7 @@ name = "fish-util"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"fish-widestring",
|
||||
"rand 0.9.2",
|
||||
"rand",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -437,12 +437,6 @@ dependencies = [
|
||||
"widestring",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fnv"
|
||||
version = "1.0.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
||||
|
||||
[[package]]
|
||||
name = "foldhash"
|
||||
version = "0.2.0"
|
||||
@@ -599,12 +593,6 @@ version = "2.7.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
|
||||
|
||||
[[package]]
|
||||
name = "minimal-lexical"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
||||
|
||||
[[package]]
|
||||
name = "nix"
|
||||
version = "0.31.1"
|
||||
@@ -617,16 +605,6 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nom"
|
||||
version = "7.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
"minimal-lexical",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.2.19"
|
||||
@@ -703,32 +681,13 @@ dependencies = [
|
||||
"pkg-config",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf"
|
||||
version = "0.11.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
|
||||
dependencies = [
|
||||
"phf_shared 0.11.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf"
|
||||
version = "0.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf"
|
||||
dependencies = [
|
||||
"phf_shared 0.13.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf_codegen"
|
||||
version = "0.11.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
|
||||
dependencies = [
|
||||
"phf_generator 0.11.3",
|
||||
"phf_shared 0.11.3",
|
||||
"phf_shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -737,18 +696,8 @@ version = "0.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1"
|
||||
dependencies = [
|
||||
"phf_generator 0.13.1",
|
||||
"phf_shared 0.13.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf_generator"
|
||||
version = "0.11.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
|
||||
dependencies = [
|
||||
"phf_shared 0.11.3",
|
||||
"rand 0.8.5",
|
||||
"phf_generator",
|
||||
"phf_shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -758,16 +707,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737"
|
||||
dependencies = [
|
||||
"fastrand",
|
||||
"phf_shared 0.13.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf_shared"
|
||||
version = "0.11.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
|
||||
dependencies = [
|
||||
"siphasher",
|
||||
"phf_shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -824,15 +764,6 @@ version = "5.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"rand_core 0.6.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.9.2"
|
||||
@@ -840,7 +771,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
|
||||
dependencies = [
|
||||
"rand_chacha",
|
||||
"rand_core 0.9.5",
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -850,15 +781,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
|
||||
dependencies = [
|
||||
"ppv-lite86",
|
||||
"rand_core 0.9.5",
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.6.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.9.5"
|
||||
@@ -1087,18 +1012,6 @@ dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "terminfo"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d4ea810f0692f9f51b382fff5893887bb4580f5fa246fde546e0b13e7fcee662"
|
||||
dependencies = [
|
||||
"fnv",
|
||||
"nom",
|
||||
"phf 0.11.3",
|
||||
"phf_codegen 0.11.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "2.0.18"
|
||||
|
||||
22
Cargo.toml
22
Cargo.toml
@@ -39,7 +39,17 @@ libc = "0.2.177"
|
||||
# disabling default features uses the stdlib instead, but it doubles the time to rewrite the history
|
||||
# files as of 22 April 2024.
|
||||
lru = "0.16.2"
|
||||
nix = { version = "0.31.1", default-features = false, features = ["event", "fs", "inotify", "hostname", "resource", "process", "signal", "term", "user"] }
|
||||
nix = { version = "0.31.1", default-features = false, features = [
|
||||
"event",
|
||||
"fs",
|
||||
"inotify",
|
||||
"hostname",
|
||||
"resource",
|
||||
"process",
|
||||
"signal",
|
||||
"term",
|
||||
"user",
|
||||
] }
|
||||
num-traits = "0.2.19"
|
||||
once_cell = "1.19.0"
|
||||
pcre2 = { git = "https://github.com/fish-shell/rust-pcre2", tag = "0.2.9-utf32", default-features = false, features = [
|
||||
@@ -62,8 +72,6 @@ rust-embed = { version = "8.11.0", features = [
|
||||
"interpolate-folder-path",
|
||||
] }
|
||||
serial_test = { version = "3", default-features = false }
|
||||
# We need 0.9.0 specifically for some crash fixes.
|
||||
terminfo = "0.9.0"
|
||||
widestring = "1.2.0"
|
||||
unicode-segmentation = "1.12.0"
|
||||
unicode-width = "0.2.0"
|
||||
@@ -80,7 +88,7 @@ debug = true
|
||||
|
||||
[package]
|
||||
name = "fish"
|
||||
version = "4.4.0"
|
||||
version = "4.5.0"
|
||||
edition.workspace = true
|
||||
rust-version.workspace = true
|
||||
default-run = "fish"
|
||||
@@ -116,7 +124,7 @@ num-traits.workspace = true
|
||||
once_cell.workspace = true
|
||||
pcre2.workspace = true
|
||||
rand.workspace = true
|
||||
terminfo.workspace = true
|
||||
unicode-width.workspace = true
|
||||
xterm-color.workspace = true
|
||||
|
||||
[target.'cfg(not(target_has_atomic = "64"))'.dependencies]
|
||||
@@ -194,7 +202,7 @@ cloned_instead_of_copied = "warn"
|
||||
explicit_into_iter_loop = "warn"
|
||||
format_push_string = "warn"
|
||||
implicit_clone = "warn"
|
||||
len_without_is_empty = "allow" # we're not a library crate
|
||||
len_without_is_empty = "allow" # we're not a library crate
|
||||
let_and_return = "allow"
|
||||
manual_assert = "warn"
|
||||
manual_range_contains = "allow"
|
||||
@@ -207,7 +215,9 @@ ptr_offset_by_literal = "warn"
|
||||
ref_option = "warn"
|
||||
semicolon_if_nothing_returned = "warn"
|
||||
stable_sort_primitive = "warn"
|
||||
str_to_string = "warn"
|
||||
unnecessary_semicolon = "warn"
|
||||
unused_trait_names = "warn"
|
||||
|
||||
# We do not want to use the e?print(ln)?! macros.
|
||||
# These lints flag their use.
|
||||
|
||||
18
Dockerfile
18
Dockerfile
@@ -1,18 +0,0 @@
|
||||
FROM centos:latest
|
||||
|
||||
# Build dependency
|
||||
RUN yum update -y &&\
|
||||
yum install -y epel-release &&\
|
||||
yum install -y clang cmake3 gcc-c++ make &&\
|
||||
yum clean all
|
||||
|
||||
# Test dependency
|
||||
RUN yum install -y expect vim-common
|
||||
|
||||
ADD . /src
|
||||
WORKDIR /src
|
||||
|
||||
# Build fish
|
||||
RUN cmake3 . &&\
|
||||
make &&\
|
||||
make install
|
||||
8
build.rs
8
build.rs
@@ -159,16 +159,14 @@ fn join_if_relative(parent_if_relative: &Path, path: String) -> PathBuf {
|
||||
}
|
||||
|
||||
let prefix = overridable_path("PREFIX", |env_prefix| {
|
||||
Some(PathBuf::from(
|
||||
env_prefix.unwrap_or("/usr/local".to_string()),
|
||||
))
|
||||
Some(PathBuf::from(env_prefix.unwrap_or("/usr/local".to_owned())))
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
overridable_path("SYSCONFDIR", |env_sysconfdir| {
|
||||
Some(join_if_relative(
|
||||
&prefix,
|
||||
env_sysconfdir.unwrap_or("/etc/".to_string()),
|
||||
env_sysconfdir.unwrap_or("/etc/".to_owned()),
|
||||
))
|
||||
});
|
||||
|
||||
@@ -199,5 +197,5 @@ fn get_version() -> String {
|
||||
)
|
||||
.unwrap()
|
||||
.trim_ascii_end()
|
||||
.to_string()
|
||||
.to_owned()
|
||||
}
|
||||
|
||||
@@ -23,6 +23,6 @@
|
||||
<p>
|
||||
<code>chsh -s /usr/local/bin/fish</code>
|
||||
</p>
|
||||
<p>Enjoy! Bugs can be reported on <a href="https://github.org/fish-shell/fish-shell/">GitHub</a>.</p>
|
||||
<p>Enjoy! Bugs can be reported on <a href="https://github.com/fish-shell/fish-shell/">GitHub</a>.</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -90,7 +90,7 @@ Created by ./build_tools/release.sh $version"
|
||||
}
|
||||
|
||||
sed -i "s/^version = \".*\"/version = \"$1\"/g" Cargo.toml
|
||||
cargo fetch --offline
|
||||
cargo fetch --offline # bumps the version in Cargo.lock
|
||||
if [ "$1" = "$version" ]; then
|
||||
# debchange is a Debian script to manage the Debian changelog, but
|
||||
# it's too annoying to install everywhere. Just do it by hand.
|
||||
@@ -110,6 +110,8 @@ fi
|
||||
git add CHANGELOG.rst Cargo.toml Cargo.lock
|
||||
CreateCommit "Release $version"
|
||||
|
||||
# Tags must be full objects, not lightweight tags, for
|
||||
# git_version-gen.sh to work.
|
||||
git -c "user.signingKey=$committer" \
|
||||
tag --sign --message="Release $version" $version
|
||||
|
||||
|
||||
@@ -13,9 +13,31 @@ sort --version-sort </dev/null
|
||||
# TODO This is copied from .github/actions/install-sphinx/action.yml
|
||||
uv lock --check --exclude-newer="$(awk -F'"' <uv.lock '/^exclude-newer[[:space:]]*=/ {print $2}')"
|
||||
|
||||
update_gh_action() {
|
||||
repo=$1
|
||||
version=$(curl -fsS "https://api.github.com/repos/$repo/releases/latest" | jq -r .tag_name)
|
||||
[ -n "$version" ]
|
||||
tag_oid=$(git ls-remote "https://github.com/$repo.git" "refs/tags/$version" | cut -f1)
|
||||
[ -n "$tag_oid" ]
|
||||
find .github/workflows -name '*.yml' -type f -exec \
|
||||
sed -i "s|uses: $repo@\S\+\( \+#.*\)\?|\
|
||||
uses: $repo@$tag_oid # $version, build_tools/update-dependencies.sh|g" {} +
|
||||
}
|
||||
update_gh_action actions/checkout
|
||||
update_gh_action actions/github-script
|
||||
update_gh_action actions/upload-artifact
|
||||
update_gh_action actions/download-artifact
|
||||
update_gh_action docker/login-action
|
||||
update_gh_action docker/build-push-action
|
||||
update_gh_action docker/metadata-action
|
||||
update_gh_action EmbarkStudios/cargo-deny-action
|
||||
update_gh_action dessant/lock-threads
|
||||
update_gh_action softprops/action-gh-release
|
||||
update_gh_action msys2/setup-msys2
|
||||
|
||||
updatecli "${@:-apply}"
|
||||
|
||||
uv lock # Python version constraints may have changed.
|
||||
# Python version constraints may have changed.
|
||||
uv lock --upgrade --exclude-newer="$(date --date='7 days ago' --iso-8601)"
|
||||
|
||||
from_gh() {
|
||||
|
||||
@@ -18,14 +18,14 @@ set(VARS_FOR_CARGO_SPHINX_WRAPPER
|
||||
|
||||
add_custom_target(sphinx-docs
|
||||
COMMAND env ${VARS_FOR_CARGO_SPHINX_WRAPPER}
|
||||
cargo xtask html-docs --fish-indent=${FISH_INDENT_FOR_BUILDING_DOCS}
|
||||
${Rust_CARGO} xtask html-docs --fish-indent=${FISH_INDENT_FOR_BUILDING_DOCS}
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
DEPENDS ${SPHINX_HTML_FISH_INDENT_DEP}
|
||||
COMMENT "Building HTML documentation with Sphinx")
|
||||
|
||||
add_custom_target(sphinx-manpages
|
||||
COMMAND env ${VARS_FOR_CARGO_SPHINX_WRAPPER}
|
||||
cargo xtask man-pages
|
||||
${Rust_CARGO} xtask man-pages
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
COMMENT "Building man pages with Sphinx")
|
||||
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
fish (4.5.0-1) stable; urgency=medium
|
||||
|
||||
* Release of new version 4.5.0.
|
||||
|
||||
See https://github.com/fish-shell/fish-shell/releases/tag/4.5.0 for details.
|
||||
|
||||
-- Johannes Altmanninger <aclopte@gmail.com> Tue, 17 Feb 2026 11:32:33 +1100
|
||||
|
||||
fish (4.4.0-1) stable; urgency=medium
|
||||
|
||||
* Release of new version 4.4.0.
|
||||
|
||||
@@ -16,14 +16,12 @@ export DEB_BUILD_MAINT_OPTIONS=optimize=-lto
|
||||
# Setting the build system is still required, because otherwise the GNUmakefile gets picked up
|
||||
override_dh_auto_configure:
|
||||
ln -s cargo-vendor/vendor vendor
|
||||
ln -s cargo-vendor/.cargo .cargo
|
||||
dh_auto_configure -- -DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DRust_CARGO=$$(command -v cargo-1.85 || command -v cargo) \
|
||||
-DRust_COMPILER=$$(command -v rustc-1.85 || command -v rustc)
|
||||
|
||||
override_dh_clean:
|
||||
dh_clean --exclude=Cargo.toml.orig
|
||||
-unlink .cargo
|
||||
-unlink vendor
|
||||
|
||||
override_dh_auto_test:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use std::{borrow::Cow, env, os::unix::ffi::OsStrExt, path::Path};
|
||||
use std::{borrow::Cow, env, os::unix::ffi::OsStrExt as _, path::Path};
|
||||
|
||||
pub fn env_var(name: &str) -> Option<String> {
|
||||
let err = match env::var(name) {
|
||||
|
||||
@@ -43,7 +43,7 @@ fn build_man(sec1_dir: &Path) {
|
||||
];
|
||||
|
||||
rsconf::rebuild_if_env_changed("FISH_BUILD_DOCS");
|
||||
if env_var("FISH_BUILD_DOCS") == Some("0".to_string()) {
|
||||
if env_var("FISH_BUILD_DOCS") == Some("0".to_owned()) {
|
||||
rsconf::warn!("Skipping man pages because $FISH_BUILD_DOCS is set to 0");
|
||||
return;
|
||||
}
|
||||
@@ -62,7 +62,7 @@ fn build_man(sec1_dir: &Path) {
|
||||
Err(e) if e.kind() == std::io::ErrorKind::NotFound => {
|
||||
assert_ne!(
|
||||
env_var("FISH_BUILD_DOCS"),
|
||||
Some("1".to_string()),
|
||||
Some("1".to_owned()),
|
||||
"Could not find sphinx-build required to build man pages.\n\
|
||||
Install Sphinx or disable building the docs by setting $FISH_BUILD_DOCS=0."
|
||||
);
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
use std::io::Read;
|
||||
use std::ops::{Deref, DerefMut};
|
||||
use std::os::fd::{AsRawFd, BorrowedFd, RawFd};
|
||||
use std::os::unix::ffi::OsStrExt;
|
||||
use std::os::unix::ffi::OsStrExt as _;
|
||||
use std::sync::OnceLock;
|
||||
use std::sync::atomic::{AtomicI32, AtomicU32, Ordering};
|
||||
use std::{env, mem, time};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
extern crate proc_macro;
|
||||
use fish_tempfile::random_filename;
|
||||
use proc_macro::TokenStream;
|
||||
use std::{ffi::OsString, io::Write, path::PathBuf};
|
||||
use std::{ffi::OsString, io::Write as _, path::PathBuf};
|
||||
|
||||
fn unescape_multiline_rust_string(s: String) -> String {
|
||||
if !s.contains('\n') {
|
||||
|
||||
@@ -22,7 +22,7 @@ fn embed_localizations(cache_dir: &Path) {
|
||||
use fish_gettext_mo_file_parser::parse_mo_file;
|
||||
use std::{
|
||||
fs::File,
|
||||
io::{BufWriter, Write},
|
||||
io::{BufWriter, Write as _},
|
||||
};
|
||||
|
||||
let po_dir = fish_build_helper::workspace_root()
|
||||
|
||||
@@ -6,8 +6,7 @@
|
||||
|
||||
type Catalog = &'static phf::Map<&'static str, &'static str>;
|
||||
|
||||
static LANGUAGE_PRECEDENCE: LazyLock<Mutex<Vec<(&'static str, Catalog)>>> =
|
||||
LazyLock::new(|| Mutex::new(vec![]));
|
||||
static LANGUAGE_PRECEDENCE: Mutex<Vec<(&'static str, Catalog)>> = Mutex::new(Vec::new());
|
||||
|
||||
pub fn gettext(message_str: &'static str) -> Option<&'static str> {
|
||||
let language_precedence = LANGUAGE_PRECEDENCE.lock().unwrap();
|
||||
|
||||
@@ -51,7 +51,7 @@ macro_rules! sprintf {
|
||||
{
|
||||
// May be no args!
|
||||
#[allow(unused_imports)]
|
||||
use $crate::ToArg;
|
||||
use $crate::ToArg as _;
|
||||
$crate::printf_c_locale(
|
||||
$target,
|
||||
$fmt,
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
use std::fmt::{self, Write};
|
||||
use std::mem;
|
||||
use std::result::Result;
|
||||
use unicode_segmentation::UnicodeSegmentation;
|
||||
use unicode_width::UnicodeWidthStr;
|
||||
use unicode_segmentation::UnicodeSegmentation as _;
|
||||
use unicode_width::UnicodeWidthStr as _;
|
||||
|
||||
#[cfg(feature = "widestring")]
|
||||
use widestring::Utf32Str as wstr;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use crate::arg::ToArg;
|
||||
use crate::locale::{C_LOCALE, EN_US_LOCALE, Locale};
|
||||
use crate::{Error, FormatString, sprintf_locale};
|
||||
use crate::{Error, FormatString as _, sprintf_locale};
|
||||
use std::f64::consts::{E, PI, TAU};
|
||||
use std::ffi::CStr;
|
||||
use std::fmt;
|
||||
@@ -13,7 +13,7 @@ macro_rules! sprintf_check {
|
||||
$(,)? // optional trailing comma
|
||||
) => {
|
||||
{
|
||||
use unicode_width::UnicodeWidthStr;
|
||||
use unicode_width::UnicodeWidthStr as _;
|
||||
let mut target = String::new();
|
||||
let mut args = [$($arg.to_arg()),*];
|
||||
let len = $crate::printf_c_locale(
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
path::PathBuf,
|
||||
};
|
||||
|
||||
use rand::distr::{Alphanumeric, Distribution};
|
||||
use rand::distr::{Alphanumeric, Distribution as _};
|
||||
|
||||
pub struct TempFile {
|
||||
file: File,
|
||||
@@ -114,7 +114,7 @@ pub fn new_dir() -> std::io::Result<TempDir> {
|
||||
mod tests {
|
||||
use std::{
|
||||
fs::File,
|
||||
io::{Read, Seek, Write},
|
||||
io::{Read as _, Seek as _, Write as _},
|
||||
};
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//! Generic utilities library.
|
||||
|
||||
use fish_widestring::prelude::*;
|
||||
use rand::{SeedableRng, rngs::SmallRng};
|
||||
use rand::{SeedableRng as _, rngs::SmallRng};
|
||||
use std::cmp::Ordering;
|
||||
use std::time;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use clap::{Parser, Subcommand};
|
||||
use fish_build_helper::as_os_strs;
|
||||
use std::{path::PathBuf, process::Command};
|
||||
use xtask::{CommandExt, cargo};
|
||||
use xtask::{CommandExt as _, cargo};
|
||||
|
||||
#[derive(Parser)]
|
||||
#[command(
|
||||
|
||||
@@ -102,7 +102,7 @@ The following options are available:
|
||||
**--preset** should only be used in full binding sets (like when working on ``fish_vi_key_bindings``).
|
||||
|
||||
**-s** or **--silent**
|
||||
Silences some of the error messages, including for unknown key names and unbound sequences.
|
||||
Silences error message for unbound sequences.
|
||||
|
||||
**--color** *WHEN*
|
||||
Controls when to use syntax highlighting colors when listing bindings.
|
||||
@@ -401,6 +401,13 @@ The following special input functions are available:
|
||||
``self-insert-notfirst``
|
||||
inserts the matching sequence into the command line, unless the cursor is at the beginning
|
||||
|
||||
``get-key``
|
||||
sets :envvar:`fish_key` to the key that was pressed to trigger this binding. Example use::
|
||||
|
||||
for i in (seq 0 9)
|
||||
bind $i get-key 'commandline -i "#$fish_key"' 'set -eg fish_key'
|
||||
end
|
||||
|
||||
``suppress-autosuggestion``
|
||||
remove the current autosuggestion. Returns true if there was a suggestion to remove.
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ Description
|
||||
|
||||
The ``fish_mode_prompt`` function outputs the mode indicator for use in vi mode.
|
||||
|
||||
The default ``fish_mode_prompt`` function will output indicators about the current vi editor mode displayed to the left of the regular prompt. Define your own function to customize the appearance of the mode indicator. The ``$fish_bind_mode variable`` can be used to determine the current mode. It will be one of ``default``, ``insert``, ``replace_one``, ``replace``, ``visual``, or ``operator``.
|
||||
The default ``fish_mode_prompt`` function will output indicators about the current vi editor mode displayed to the left of the regular prompt. Define your own function to customize the appearance of the mode indicator. The ``$fish_bind_mode`` variable can be used to determine the current mode. It will be one of ``default``, ``insert``, ``replace_one``, ``replace``, ``visual``, or ``operator``.
|
||||
|
||||
You can also define an empty ``fish_mode_prompt`` function to remove the vi mode indicators::
|
||||
|
||||
@@ -55,7 +55,7 @@ Example
|
||||
case visual
|
||||
set_color --bold brmagenta
|
||||
echo 'V'
|
||||
case operator
|
||||
case operator f F t T
|
||||
set_color --bold cyan
|
||||
echo 'N'
|
||||
case '*'
|
||||
|
||||
@@ -2044,7 +2044,7 @@ Here is what they mean:
|
||||
- ``remove-percent-self`` turns off the special ``%self`` expansion. It was introduced in 4.0. To get fish's pid, you can use the :envvar:`fish_pid` variable.
|
||||
- ``test-require-arg`` removes :doc:`builtin test <cmds/test>`'s one-argument form (``test "string"``. It was introduced in 4.0. To test if a string is non-empty, use ``test -n "string"``. If disabled, any call to ``test`` that would change sends a :ref:`debug message <debugging-fish>` of category "deprecated-test", so starting fish with ``fish --debug=deprecated-test`` can be used to find offending calls.
|
||||
- ``mark-prompt`` makes fish report to the terminal the beginning and and of both shell prompts and command output.
|
||||
- ``ignore-terminfo`` disables lookup of $TERM in the terminfo database. Use ``no-ignore-terminfo`` to turn it back on.
|
||||
- ``ignore-terminfo`` was introduced in fish 4.1 and cannot be turned off since fish 4.5. It can still be tested for compatibility, but a ``no-ignore-terminfo`` value will be ignored. The flag disabled lookup of $TERM in the terminfo database.
|
||||
- ``query-term`` allows fish to query the terminal by writing escape sequences and reading the terminal's response.
|
||||
This enables features such as :ref:`scrolling <term-compat-cursor-position-report>`.
|
||||
If you use an incompatible terminal, you can -- for the time being -- work around it by running (once) ``set -Ua fish_features no-query-term``.
|
||||
|
||||
@@ -100,12 +100,12 @@ msgid "%s %s: unrecognized feature '%s'"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %d):"
|
||||
msgstr "%s (Zeile %d):"
|
||||
msgid "%s (line %d)"
|
||||
msgstr "%s (Zeile %d)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %u):"
|
||||
msgstr "%s (Zeile %u):"
|
||||
msgid "%s (line %u)"
|
||||
msgstr "%s (Zeile %u)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s and %s are mutually exclusive"
|
||||
@@ -141,7 +141,7 @@ msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s"
|
||||
msgstr ""
|
||||
msgstr "%s: %s"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s %s: options cannot be used together"
|
||||
@@ -1460,12 +1460,12 @@ msgid "Standard input"
|
||||
msgstr "Standardeingabe"
|
||||
|
||||
#, c-format
|
||||
msgid "Standard input (line %d):"
|
||||
msgid "Standard input (line %d)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Startup (line %d):"
|
||||
msgstr "Start (Zeile %d):"
|
||||
msgid "Startup (line %d)"
|
||||
msgstr "Start (Zeile %d)"
|
||||
|
||||
msgid "State"
|
||||
msgstr "Status"
|
||||
@@ -6344,9 +6344,6 @@ msgstr ""
|
||||
msgid "Aggregate sources for all modules in an aggregator project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggregate the consumed space of one or more directories or files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggressive scan options"
|
||||
msgstr ""
|
||||
|
||||
@@ -13175,9 +13172,6 @@ msgstr ""
|
||||
msgid "Count hard links multiple times"
|
||||
msgstr "Harte Links mehrfach zählen"
|
||||
|
||||
msgid "Count hard-linked files each time they are seen"
|
||||
msgstr ""
|
||||
|
||||
msgid "Count hidden files, too"
|
||||
msgstr ""
|
||||
|
||||
@@ -16301,6 +16295,9 @@ msgstr ""
|
||||
msgid "Disable chat search background indexer"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable check for unique upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable color"
|
||||
msgstr ""
|
||||
|
||||
@@ -17429,9 +17426,6 @@ msgstr ""
|
||||
msgid "Display answers as exclamation points and missing packets as dots"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display apparent size instead of disk usage"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display architecture specific information"
|
||||
msgstr ""
|
||||
|
||||
@@ -17579,6 +17573,9 @@ msgstr ""
|
||||
msgid "Display debugging information"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display debugging messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display deduplication histogram"
|
||||
msgstr ""
|
||||
|
||||
@@ -17714,9 +17711,6 @@ msgstr ""
|
||||
msgid "Display help and debug options"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display help and exit\t"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display help for Git Sizer"
|
||||
msgstr ""
|
||||
|
||||
@@ -18065,6 +18059,9 @@ msgstr ""
|
||||
msgid "Display hook variables"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display hosts listed in configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display image centered on a backdrop"
|
||||
msgstr ""
|
||||
|
||||
@@ -19307,9 +19304,6 @@ msgstr ""
|
||||
msgid "Do not compress the uid/gid table"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not compute total column for multiple inputs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not configure any interfaces"
|
||||
msgstr ""
|
||||
|
||||
@@ -20480,9 +20474,6 @@ msgstr ""
|
||||
msgid "Do not sort file arguments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not sort paths by their size in bytes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not sort the result"
|
||||
msgstr ""
|
||||
|
||||
@@ -20636,6 +20627,9 @@ msgstr "Pakete nicht aktualisieren"
|
||||
msgid "Do not upload binaries"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not use \"abshi2\" pattern"
|
||||
msgstr ""
|
||||
|
||||
@@ -20861,6 +20855,9 @@ msgstr ""
|
||||
msgid "Do not write FETCH_HEAD file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a log file for uploads"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a ~/.fehbg file"
|
||||
msgstr ""
|
||||
|
||||
@@ -21230,6 +21227,9 @@ msgstr ""
|
||||
msgid "Don't check if travis client is up to date"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't check the signatures or upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't clear the playlist"
|
||||
msgstr ""
|
||||
|
||||
@@ -24425,6 +24425,9 @@ msgstr ""
|
||||
msgid "Enable the JIT compiler"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the Lintian verification check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the bitrate management engine"
|
||||
msgstr ""
|
||||
|
||||
@@ -24458,6 +24461,9 @@ msgstr ""
|
||||
msgid "Enable the live reloading in the development server, but only re-build files that have changed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the local install check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the necessary sparse-checkout config settings"
|
||||
msgstr ""
|
||||
|
||||
@@ -30845,9 +30851,6 @@ msgstr ""
|
||||
msgid "If project list is specified, also build projects that depend on projects on the list"
|
||||
msgstr ""
|
||||
|
||||
msgid "If set, we will not cross filesystems or traverse mount points"
|
||||
msgstr ""
|
||||
|
||||
msgid "If source path is a directory, publish all its content recursively"
|
||||
msgstr ""
|
||||
|
||||
@@ -33482,9 +33485,6 @@ msgstr ""
|
||||
msgid "Launch the Protontricks GUI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch the terminal user interface"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch utility at startup and reload on file change"
|
||||
msgstr ""
|
||||
|
||||
@@ -39722,9 +39722,6 @@ msgstr ""
|
||||
msgid "One or more Kitchen Driver gems to be installed or added to a Gemfile "
|
||||
msgstr ""
|
||||
|
||||
msgid "One or more absolute directories to ignore"
|
||||
msgstr ""
|
||||
|
||||
msgid "Only match processes whose effective user ID is listed"
|
||||
msgstr ""
|
||||
|
||||
@@ -44108,9 +44105,6 @@ msgstr ""
|
||||
msgid "Print additional fields"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print additional statistics about the file traversal to stderr"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print all active monitors"
|
||||
msgstr ""
|
||||
|
||||
@@ -44690,9 +44684,6 @@ msgstr ""
|
||||
msgid "Print help message and exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help message or the help of the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help of uncommon options"
|
||||
msgstr ""
|
||||
|
||||
@@ -45689,6 +45680,9 @@ msgstr ""
|
||||
msgid "Print the domain's hostname"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the dput configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the drive capabilities for SCSI-3/mmc compliant drives"
|
||||
msgstr ""
|
||||
|
||||
@@ -50624,6 +50618,9 @@ msgstr ""
|
||||
msgid "Request distinct server name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request dry-run of dinstall after upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request given address in DHCP DISCOVER message"
|
||||
msgstr ""
|
||||
|
||||
@@ -66242,9 +66239,6 @@ msgstr ""
|
||||
msgid "The age recipient the new group should contain. Can be specified more than once"
|
||||
msgstr ""
|
||||
|
||||
msgid "The amount of threads to use"
|
||||
msgstr ""
|
||||
|
||||
msgid "The architecture reported by uname in the container"
|
||||
msgstr ""
|
||||
|
||||
@@ -66356,9 +66350,6 @@ msgstr ""
|
||||
msgid "The format to convert to"
|
||||
msgstr ""
|
||||
|
||||
msgid "The format with which to print byte counts"
|
||||
msgstr ""
|
||||
|
||||
msgid "The full cost-based query optimiser is enabled."
|
||||
msgstr ""
|
||||
|
||||
@@ -68948,6 +68939,9 @@ msgstr ""
|
||||
msgid "Upload finished packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload host"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload locally saved terminal session to asciinema.org"
|
||||
msgstr ""
|
||||
|
||||
@@ -68963,6 +68957,9 @@ msgstr ""
|
||||
msgid "Upload stemcell"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to a delayed queue"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to server"
|
||||
msgstr ""
|
||||
|
||||
@@ -70472,6 +70469,9 @@ msgstr ""
|
||||
msgid "Use paired-single floating-point instructions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for FTP"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for data transfers"
|
||||
msgstr ""
|
||||
|
||||
@@ -78557,7 +78557,7 @@ msgstr ""
|
||||
msgid "reset branch name to parent branch name"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset cache (DNS\t)"
|
||||
msgid "reset cache"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset terminal state"
|
||||
|
||||
@@ -100,12 +100,12 @@ msgid "%s %s: unrecognized feature '%s'"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %d):"
|
||||
msgstr "%s (line %d):"
|
||||
msgid "%s (line %d)"
|
||||
msgstr "%s (line %d)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %u):"
|
||||
msgstr "%s (line %u):"
|
||||
msgid "%s (line %u)"
|
||||
msgstr "%s (line %u)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s and %s are mutually exclusive"
|
||||
@@ -1460,11 +1460,11 @@ msgid "Standard input"
|
||||
msgstr "Standard input"
|
||||
|
||||
#, c-format
|
||||
msgid "Standard input (line %d):"
|
||||
msgid "Standard input (line %d)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Startup (line %d):"
|
||||
msgid "Startup (line %d)"
|
||||
msgstr ""
|
||||
|
||||
msgid "State"
|
||||
@@ -6344,9 +6344,6 @@ msgstr ""
|
||||
msgid "Aggregate sources for all modules in an aggregator project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggregate the consumed space of one or more directories or files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggressive scan options"
|
||||
msgstr ""
|
||||
|
||||
@@ -13175,9 +13172,6 @@ msgstr ""
|
||||
msgid "Count hard links multiple times"
|
||||
msgstr "Count hard links multiple times"
|
||||
|
||||
msgid "Count hard-linked files each time they are seen"
|
||||
msgstr ""
|
||||
|
||||
msgid "Count hidden files, too"
|
||||
msgstr ""
|
||||
|
||||
@@ -16301,6 +16295,9 @@ msgstr ""
|
||||
msgid "Disable chat search background indexer"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable check for unique upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable color"
|
||||
msgstr ""
|
||||
|
||||
@@ -17429,9 +17426,6 @@ msgstr ""
|
||||
msgid "Display answers as exclamation points and missing packets as dots"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display apparent size instead of disk usage"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display architecture specific information"
|
||||
msgstr ""
|
||||
|
||||
@@ -17579,6 +17573,9 @@ msgstr ""
|
||||
msgid "Display debugging information"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display debugging messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display deduplication histogram"
|
||||
msgstr "Display deduplication histogram"
|
||||
|
||||
@@ -17714,9 +17711,6 @@ msgstr "Display help about darcs and darcs commands"
|
||||
msgid "Display help and debug options"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display help and exit\t"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display help for Git Sizer"
|
||||
msgstr ""
|
||||
|
||||
@@ -18065,6 +18059,9 @@ msgstr ""
|
||||
msgid "Display hook variables"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display hosts listed in configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display image centered on a backdrop"
|
||||
msgstr ""
|
||||
|
||||
@@ -19307,9 +19304,6 @@ msgstr ""
|
||||
msgid "Do not compress the uid/gid table"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not compute total column for multiple inputs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not configure any interfaces"
|
||||
msgstr ""
|
||||
|
||||
@@ -20480,9 +20474,6 @@ msgstr ""
|
||||
msgid "Do not sort file arguments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not sort paths by their size in bytes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not sort the result"
|
||||
msgstr ""
|
||||
|
||||
@@ -20636,6 +20627,9 @@ msgstr "Do not upgrade packages"
|
||||
msgid "Do not upload binaries"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not use \"abshi2\" pattern"
|
||||
msgstr ""
|
||||
|
||||
@@ -20861,6 +20855,9 @@ msgstr ""
|
||||
msgid "Do not write FETCH_HEAD file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a log file for uploads"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a ~/.fehbg file"
|
||||
msgstr ""
|
||||
|
||||
@@ -21230,6 +21227,9 @@ msgstr ""
|
||||
msgid "Don't check if travis client is up to date"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't check the signatures or upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't clear the playlist"
|
||||
msgstr ""
|
||||
|
||||
@@ -24425,6 +24425,9 @@ msgstr ""
|
||||
msgid "Enable the JIT compiler"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the Lintian verification check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the bitrate management engine"
|
||||
msgstr ""
|
||||
|
||||
@@ -24458,6 +24461,9 @@ msgstr ""
|
||||
msgid "Enable the live reloading in the development server, but only re-build files that have changed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the local install check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the necessary sparse-checkout config settings"
|
||||
msgstr ""
|
||||
|
||||
@@ -30845,9 +30851,6 @@ msgstr ""
|
||||
msgid "If project list is specified, also build projects that depend on projects on the list"
|
||||
msgstr ""
|
||||
|
||||
msgid "If set, we will not cross filesystems or traverse mount points"
|
||||
msgstr ""
|
||||
|
||||
msgid "If source path is a directory, publish all its content recursively"
|
||||
msgstr ""
|
||||
|
||||
@@ -33482,9 +33485,6 @@ msgstr ""
|
||||
msgid "Launch the Protontricks GUI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch the terminal user interface"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch utility at startup and reload on file change"
|
||||
msgstr ""
|
||||
|
||||
@@ -39722,9 +39722,6 @@ msgstr ""
|
||||
msgid "One or more Kitchen Driver gems to be installed or added to a Gemfile "
|
||||
msgstr ""
|
||||
|
||||
msgid "One or more absolute directories to ignore"
|
||||
msgstr ""
|
||||
|
||||
msgid "Only match processes whose effective user ID is listed"
|
||||
msgstr ""
|
||||
|
||||
@@ -44108,9 +44105,6 @@ msgstr ""
|
||||
msgid "Print additional fields"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print additional statistics about the file traversal to stderr"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print all active monitors"
|
||||
msgstr ""
|
||||
|
||||
@@ -44690,9 +44684,6 @@ msgstr ""
|
||||
msgid "Print help message and exit"
|
||||
msgstr "Print help message and exit"
|
||||
|
||||
msgid "Print help message or the help of the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help of uncommon options"
|
||||
msgstr ""
|
||||
|
||||
@@ -45689,6 +45680,9 @@ msgstr ""
|
||||
msgid "Print the domain's hostname"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the dput configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the drive capabilities for SCSI-3/mmc compliant drives"
|
||||
msgstr ""
|
||||
|
||||
@@ -50624,6 +50618,9 @@ msgstr ""
|
||||
msgid "Request distinct server name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request dry-run of dinstall after upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request given address in DHCP DISCOVER message"
|
||||
msgstr ""
|
||||
|
||||
@@ -66242,9 +66239,6 @@ msgstr ""
|
||||
msgid "The age recipient the new group should contain. Can be specified more than once"
|
||||
msgstr ""
|
||||
|
||||
msgid "The amount of threads to use"
|
||||
msgstr ""
|
||||
|
||||
msgid "The architecture reported by uname in the container"
|
||||
msgstr ""
|
||||
|
||||
@@ -66356,9 +66350,6 @@ msgstr ""
|
||||
msgid "The format to convert to"
|
||||
msgstr ""
|
||||
|
||||
msgid "The format with which to print byte counts"
|
||||
msgstr ""
|
||||
|
||||
msgid "The full cost-based query optimiser is enabled."
|
||||
msgstr ""
|
||||
|
||||
@@ -68948,6 +68939,9 @@ msgstr ""
|
||||
msgid "Upload finished packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload host"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload locally saved terminal session to asciinema.org"
|
||||
msgstr ""
|
||||
|
||||
@@ -68963,6 +68957,9 @@ msgstr ""
|
||||
msgid "Upload stemcell"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to a delayed queue"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to server"
|
||||
msgstr ""
|
||||
|
||||
@@ -70472,6 +70469,9 @@ msgstr ""
|
||||
msgid "Use paired-single floating-point instructions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for FTP"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for data transfers"
|
||||
msgstr ""
|
||||
|
||||
@@ -78557,7 +78557,7 @@ msgstr ""
|
||||
msgid "reset branch name to parent branch name"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset cache (DNS\t)"
|
||||
msgid "reset cache"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset terminal state"
|
||||
|
||||
@@ -229,12 +229,12 @@ msgid "%s %s: unrecognized feature '%s'"
|
||||
msgstr "%s %s : fonctionnalité non reconnue « %s »"
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %d):"
|
||||
msgstr "%s (ligne %d) :"
|
||||
msgid "%s (line %d)"
|
||||
msgstr "%s (ligne %d)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %u):"
|
||||
msgstr "%s (ligne %u) :"
|
||||
msgid "%s (line %u)"
|
||||
msgstr "%s (ligne %u)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s and %s are mutually exclusive"
|
||||
@@ -1589,11 +1589,11 @@ msgid "Standard input"
|
||||
msgstr "Entrée standard"
|
||||
|
||||
#, c-format
|
||||
msgid "Standard input (line %d):"
|
||||
msgid "Standard input (line %d)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Startup (line %d):"
|
||||
msgid "Startup (line %d)"
|
||||
msgstr ""
|
||||
|
||||
msgid "State"
|
||||
@@ -6473,9 +6473,6 @@ msgstr ""
|
||||
msgid "Aggregate sources for all modules in an aggregator project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggregate the consumed space of one or more directories or files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggressive scan options"
|
||||
msgstr ""
|
||||
|
||||
@@ -13304,9 +13301,6 @@ msgstr ""
|
||||
msgid "Count hard links multiple times"
|
||||
msgstr "Compter plusieurs fois les liens matériels"
|
||||
|
||||
msgid "Count hard-linked files each time they are seen"
|
||||
msgstr ""
|
||||
|
||||
msgid "Count hidden files, too"
|
||||
msgstr ""
|
||||
|
||||
@@ -16430,6 +16424,9 @@ msgstr ""
|
||||
msgid "Disable chat search background indexer"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable check for unique upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable color"
|
||||
msgstr "Désactiver la couleur"
|
||||
|
||||
@@ -17558,9 +17555,6 @@ msgstr ""
|
||||
msgid "Display answers as exclamation points and missing packets as dots"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display apparent size instead of disk usage"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display architecture specific information"
|
||||
msgstr ""
|
||||
|
||||
@@ -17708,6 +17702,9 @@ msgstr "Afficher les symboles réservés au débogueur"
|
||||
msgid "Display debugging information"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display debugging messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display deduplication histogram"
|
||||
msgstr "Afficher l’histogramme de déduplication"
|
||||
|
||||
@@ -17843,9 +17840,6 @@ msgstr "Afficher une aide pour darcs et ses commandes"
|
||||
msgid "Display help and debug options"
|
||||
msgstr "Afficher l’aide et les options de débogage"
|
||||
|
||||
msgid "Display help and exit\t"
|
||||
msgstr "Afficher l’aide et quitter\t"
|
||||
|
||||
msgid "Display help for Git Sizer"
|
||||
msgstr ""
|
||||
|
||||
@@ -18194,6 +18188,9 @@ msgstr ""
|
||||
msgid "Display hook variables"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display hosts listed in configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display image centered on a backdrop"
|
||||
msgstr ""
|
||||
|
||||
@@ -19436,9 +19433,6 @@ msgstr ""
|
||||
msgid "Do not compress the uid/gid table"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not compute total column for multiple inputs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not configure any interfaces"
|
||||
msgstr ""
|
||||
|
||||
@@ -20609,9 +20603,6 @@ msgstr ""
|
||||
msgid "Do not sort file arguments"
|
||||
msgstr "Lister les fichiers dans l’ordre de l’archive"
|
||||
|
||||
msgid "Do not sort paths by their size in bytes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not sort the result"
|
||||
msgstr ""
|
||||
|
||||
@@ -20765,6 +20756,9 @@ msgstr "Ne pas mettre à jour les paquets"
|
||||
msgid "Do not upload binaries"
|
||||
msgstr "Ne pas téléverser les binaires"
|
||||
|
||||
msgid "Do not upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not use \"abshi2\" pattern"
|
||||
msgstr "Ne pas utiliser le motif « abshi2 »"
|
||||
|
||||
@@ -20990,6 +20984,9 @@ msgstr ""
|
||||
msgid "Do not write FETCH_HEAD file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a log file for uploads"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a ~/.fehbg file"
|
||||
msgstr "Ne pas écrire de fichier ~/.fehbg"
|
||||
|
||||
@@ -21359,6 +21356,9 @@ msgstr ""
|
||||
msgid "Don't check if travis client is up to date"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't check the signatures or upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't clear the playlist"
|
||||
msgstr ""
|
||||
|
||||
@@ -24554,6 +24554,9 @@ msgstr ""
|
||||
msgid "Enable the JIT compiler"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the Lintian verification check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the bitrate management engine"
|
||||
msgstr ""
|
||||
|
||||
@@ -24587,6 +24590,9 @@ msgstr ""
|
||||
msgid "Enable the live reloading in the development server, but only re-build files that have changed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the local install check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the necessary sparse-checkout config settings"
|
||||
msgstr ""
|
||||
|
||||
@@ -30974,9 +30980,6 @@ msgstr ""
|
||||
msgid "If project list is specified, also build projects that depend on projects on the list"
|
||||
msgstr ""
|
||||
|
||||
msgid "If set, we will not cross filesystems or traverse mount points"
|
||||
msgstr ""
|
||||
|
||||
msgid "If source path is a directory, publish all its content recursively"
|
||||
msgstr ""
|
||||
|
||||
@@ -33611,9 +33614,6 @@ msgstr ""
|
||||
msgid "Launch the Protontricks GUI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch the terminal user interface"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch utility at startup and reload on file change"
|
||||
msgstr ""
|
||||
|
||||
@@ -39851,9 +39851,6 @@ msgstr ""
|
||||
msgid "One or more Kitchen Driver gems to be installed or added to a Gemfile "
|
||||
msgstr ""
|
||||
|
||||
msgid "One or more absolute directories to ignore"
|
||||
msgstr ""
|
||||
|
||||
msgid "Only match processes whose effective user ID is listed"
|
||||
msgstr ""
|
||||
|
||||
@@ -44237,9 +44234,6 @@ msgstr ""
|
||||
msgid "Print additional fields"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print additional statistics about the file traversal to stderr"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print all active monitors"
|
||||
msgstr ""
|
||||
|
||||
@@ -44819,9 +44813,6 @@ msgstr ""
|
||||
msgid "Print help message and exit"
|
||||
msgstr "Afficher un message d’aide et quitter"
|
||||
|
||||
msgid "Print help message or the help of the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help of uncommon options"
|
||||
msgstr ""
|
||||
|
||||
@@ -45818,6 +45809,9 @@ msgstr "Afficher la description d’une clé"
|
||||
msgid "Print the domain's hostname"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the dput configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the drive capabilities for SCSI-3/mmc compliant drives"
|
||||
msgstr ""
|
||||
|
||||
@@ -50753,6 +50747,9 @@ msgstr ""
|
||||
msgid "Request distinct server name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request dry-run of dinstall after upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request given address in DHCP DISCOVER message"
|
||||
msgstr "Demander l’adresse spécifiée dans les messages DHCP DISCOVER"
|
||||
|
||||
@@ -66371,9 +66368,6 @@ msgstr ""
|
||||
msgid "The age recipient the new group should contain. Can be specified more than once"
|
||||
msgstr ""
|
||||
|
||||
msgid "The amount of threads to use"
|
||||
msgstr ""
|
||||
|
||||
msgid "The architecture reported by uname in the container"
|
||||
msgstr ""
|
||||
|
||||
@@ -66485,9 +66479,6 @@ msgstr ""
|
||||
msgid "The format to convert to"
|
||||
msgstr ""
|
||||
|
||||
msgid "The format with which to print byte counts"
|
||||
msgstr ""
|
||||
|
||||
msgid "The full cost-based query optimiser is enabled."
|
||||
msgstr ""
|
||||
|
||||
@@ -69077,6 +69068,9 @@ msgstr ""
|
||||
msgid "Upload finished packages"
|
||||
msgstr "Téléverser les paquets achevés"
|
||||
|
||||
msgid "Upload host"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload locally saved terminal session to asciinema.org"
|
||||
msgstr ""
|
||||
|
||||
@@ -69092,6 +69086,9 @@ msgstr ""
|
||||
msgid "Upload stemcell"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to a delayed queue"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to server"
|
||||
msgstr "Téléverser vers le serveur"
|
||||
|
||||
@@ -70601,6 +70598,9 @@ msgstr ""
|
||||
msgid "Use paired-single floating-point instructions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for FTP"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for data transfers"
|
||||
msgstr ""
|
||||
|
||||
@@ -78686,7 +78686,7 @@ msgstr ""
|
||||
msgid "reset branch name to parent branch name"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset cache (DNS\t)"
|
||||
msgid "reset cache"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset terminal state"
|
||||
|
||||
@@ -96,12 +96,12 @@ msgid "%s %s: unrecognized feature '%s'"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %d):"
|
||||
msgstr "%s (linia %d):"
|
||||
msgid "%s (line %d)"
|
||||
msgstr "%s (linia %d)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %u):"
|
||||
msgstr "%s (linia %u):"
|
||||
msgid "%s (line %u)"
|
||||
msgstr "%s (linia %u)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s and %s are mutually exclusive"
|
||||
@@ -1456,11 +1456,11 @@ msgid "Standard input"
|
||||
msgstr "Standardowe wejście"
|
||||
|
||||
#, c-format
|
||||
msgid "Standard input (line %d):"
|
||||
msgid "Standard input (line %d)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Startup (line %d):"
|
||||
msgid "Startup (line %d)"
|
||||
msgstr ""
|
||||
|
||||
msgid "State"
|
||||
@@ -6340,9 +6340,6 @@ msgstr ""
|
||||
msgid "Aggregate sources for all modules in an aggregator project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggregate the consumed space of one or more directories or files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggressive scan options"
|
||||
msgstr ""
|
||||
|
||||
@@ -13171,9 +13168,6 @@ msgstr ""
|
||||
msgid "Count hard links multiple times"
|
||||
msgstr ""
|
||||
|
||||
msgid "Count hard-linked files each time they are seen"
|
||||
msgstr ""
|
||||
|
||||
msgid "Count hidden files, too"
|
||||
msgstr ""
|
||||
|
||||
@@ -16297,6 +16291,9 @@ msgstr ""
|
||||
msgid "Disable chat search background indexer"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable check for unique upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable color"
|
||||
msgstr ""
|
||||
|
||||
@@ -17425,9 +17422,6 @@ msgstr ""
|
||||
msgid "Display answers as exclamation points and missing packets as dots"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display apparent size instead of disk usage"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display architecture specific information"
|
||||
msgstr ""
|
||||
|
||||
@@ -17575,6 +17569,9 @@ msgstr ""
|
||||
msgid "Display debugging information"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display debugging messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display deduplication histogram"
|
||||
msgstr ""
|
||||
|
||||
@@ -17710,9 +17707,6 @@ msgstr ""
|
||||
msgid "Display help and debug options"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display help and exit\t"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display help for Git Sizer"
|
||||
msgstr ""
|
||||
|
||||
@@ -18061,6 +18055,9 @@ msgstr ""
|
||||
msgid "Display hook variables"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display hosts listed in configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display image centered on a backdrop"
|
||||
msgstr ""
|
||||
|
||||
@@ -19303,9 +19300,6 @@ msgstr ""
|
||||
msgid "Do not compress the uid/gid table"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not compute total column for multiple inputs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not configure any interfaces"
|
||||
msgstr ""
|
||||
|
||||
@@ -20476,9 +20470,6 @@ msgstr ""
|
||||
msgid "Do not sort file arguments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not sort paths by their size in bytes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not sort the result"
|
||||
msgstr ""
|
||||
|
||||
@@ -20632,6 +20623,9 @@ msgstr ""
|
||||
msgid "Do not upload binaries"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not use \"abshi2\" pattern"
|
||||
msgstr ""
|
||||
|
||||
@@ -20857,6 +20851,9 @@ msgstr ""
|
||||
msgid "Do not write FETCH_HEAD file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a log file for uploads"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a ~/.fehbg file"
|
||||
msgstr ""
|
||||
|
||||
@@ -21226,6 +21223,9 @@ msgstr ""
|
||||
msgid "Don't check if travis client is up to date"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't check the signatures or upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't clear the playlist"
|
||||
msgstr ""
|
||||
|
||||
@@ -24421,6 +24421,9 @@ msgstr ""
|
||||
msgid "Enable the JIT compiler"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the Lintian verification check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the bitrate management engine"
|
||||
msgstr ""
|
||||
|
||||
@@ -24454,6 +24457,9 @@ msgstr ""
|
||||
msgid "Enable the live reloading in the development server, but only re-build files that have changed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the local install check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the necessary sparse-checkout config settings"
|
||||
msgstr ""
|
||||
|
||||
@@ -30841,9 +30847,6 @@ msgstr ""
|
||||
msgid "If project list is specified, also build projects that depend on projects on the list"
|
||||
msgstr ""
|
||||
|
||||
msgid "If set, we will not cross filesystems or traverse mount points"
|
||||
msgstr ""
|
||||
|
||||
msgid "If source path is a directory, publish all its content recursively"
|
||||
msgstr ""
|
||||
|
||||
@@ -33478,9 +33481,6 @@ msgstr ""
|
||||
msgid "Launch the Protontricks GUI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch the terminal user interface"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch utility at startup and reload on file change"
|
||||
msgstr ""
|
||||
|
||||
@@ -39718,9 +39718,6 @@ msgstr ""
|
||||
msgid "One or more Kitchen Driver gems to be installed or added to a Gemfile "
|
||||
msgstr ""
|
||||
|
||||
msgid "One or more absolute directories to ignore"
|
||||
msgstr ""
|
||||
|
||||
msgid "Only match processes whose effective user ID is listed"
|
||||
msgstr ""
|
||||
|
||||
@@ -44104,9 +44101,6 @@ msgstr ""
|
||||
msgid "Print additional fields"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print additional statistics about the file traversal to stderr"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print all active monitors"
|
||||
msgstr ""
|
||||
|
||||
@@ -44686,9 +44680,6 @@ msgstr ""
|
||||
msgid "Print help message and exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help message or the help of the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help of uncommon options"
|
||||
msgstr ""
|
||||
|
||||
@@ -45685,6 +45676,9 @@ msgstr ""
|
||||
msgid "Print the domain's hostname"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the dput configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the drive capabilities for SCSI-3/mmc compliant drives"
|
||||
msgstr ""
|
||||
|
||||
@@ -50620,6 +50614,9 @@ msgstr ""
|
||||
msgid "Request distinct server name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request dry-run of dinstall after upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request given address in DHCP DISCOVER message"
|
||||
msgstr ""
|
||||
|
||||
@@ -66238,9 +66235,6 @@ msgstr ""
|
||||
msgid "The age recipient the new group should contain. Can be specified more than once"
|
||||
msgstr ""
|
||||
|
||||
msgid "The amount of threads to use"
|
||||
msgstr ""
|
||||
|
||||
msgid "The architecture reported by uname in the container"
|
||||
msgstr ""
|
||||
|
||||
@@ -66352,9 +66346,6 @@ msgstr ""
|
||||
msgid "The format to convert to"
|
||||
msgstr ""
|
||||
|
||||
msgid "The format with which to print byte counts"
|
||||
msgstr ""
|
||||
|
||||
msgid "The full cost-based query optimiser is enabled."
|
||||
msgstr ""
|
||||
|
||||
@@ -68944,6 +68935,9 @@ msgstr ""
|
||||
msgid "Upload finished packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload host"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload locally saved terminal session to asciinema.org"
|
||||
msgstr ""
|
||||
|
||||
@@ -68959,6 +68953,9 @@ msgstr ""
|
||||
msgid "Upload stemcell"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to a delayed queue"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to server"
|
||||
msgstr ""
|
||||
|
||||
@@ -70468,6 +70465,9 @@ msgstr ""
|
||||
msgid "Use paired-single floating-point instructions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for FTP"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for data transfers"
|
||||
msgstr ""
|
||||
|
||||
@@ -78553,7 +78553,7 @@ msgstr ""
|
||||
msgid "reset branch name to parent branch name"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset cache (DNS\t)"
|
||||
msgid "reset cache"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset terminal state"
|
||||
|
||||
@@ -101,12 +101,12 @@ msgid "%s %s: unrecognized feature '%s'"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %d):"
|
||||
msgstr "%s (linha %d):"
|
||||
msgid "%s (line %d)"
|
||||
msgstr "%s (linha %d)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %u):"
|
||||
msgstr "%s (linha %u):"
|
||||
msgid "%s (line %u)"
|
||||
msgstr "%s (linha %u)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s and %s are mutually exclusive"
|
||||
@@ -1461,11 +1461,11 @@ msgid "Standard input"
|
||||
msgstr "Entrada padrão"
|
||||
|
||||
#, c-format
|
||||
msgid "Standard input (line %d):"
|
||||
msgid "Standard input (line %d)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Startup (line %d):"
|
||||
msgid "Startup (line %d)"
|
||||
msgstr ""
|
||||
|
||||
msgid "State"
|
||||
@@ -6345,9 +6345,6 @@ msgstr ""
|
||||
msgid "Aggregate sources for all modules in an aggregator project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggregate the consumed space of one or more directories or files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggressive scan options"
|
||||
msgstr ""
|
||||
|
||||
@@ -13176,9 +13173,6 @@ msgstr ""
|
||||
msgid "Count hard links multiple times"
|
||||
msgstr "Count hard links multiple times"
|
||||
|
||||
msgid "Count hard-linked files each time they are seen"
|
||||
msgstr ""
|
||||
|
||||
msgid "Count hidden files, too"
|
||||
msgstr ""
|
||||
|
||||
@@ -16302,6 +16296,9 @@ msgstr ""
|
||||
msgid "Disable chat search background indexer"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable check for unique upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable color"
|
||||
msgstr ""
|
||||
|
||||
@@ -17430,9 +17427,6 @@ msgstr ""
|
||||
msgid "Display answers as exclamation points and missing packets as dots"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display apparent size instead of disk usage"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display architecture specific information"
|
||||
msgstr ""
|
||||
|
||||
@@ -17580,6 +17574,9 @@ msgstr ""
|
||||
msgid "Display debugging information"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display debugging messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display deduplication histogram"
|
||||
msgstr ""
|
||||
|
||||
@@ -17715,9 +17712,6 @@ msgstr ""
|
||||
msgid "Display help and debug options"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display help and exit\t"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display help for Git Sizer"
|
||||
msgstr ""
|
||||
|
||||
@@ -18066,6 +18060,9 @@ msgstr ""
|
||||
msgid "Display hook variables"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display hosts listed in configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display image centered on a backdrop"
|
||||
msgstr ""
|
||||
|
||||
@@ -19308,9 +19305,6 @@ msgstr ""
|
||||
msgid "Do not compress the uid/gid table"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not compute total column for multiple inputs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not configure any interfaces"
|
||||
msgstr ""
|
||||
|
||||
@@ -20481,9 +20475,6 @@ msgstr ""
|
||||
msgid "Do not sort file arguments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not sort paths by their size in bytes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not sort the result"
|
||||
msgstr ""
|
||||
|
||||
@@ -20637,6 +20628,9 @@ msgstr ""
|
||||
msgid "Do not upload binaries"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not use \"abshi2\" pattern"
|
||||
msgstr ""
|
||||
|
||||
@@ -20862,6 +20856,9 @@ msgstr ""
|
||||
msgid "Do not write FETCH_HEAD file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a log file for uploads"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a ~/.fehbg file"
|
||||
msgstr ""
|
||||
|
||||
@@ -21231,6 +21228,9 @@ msgstr ""
|
||||
msgid "Don't check if travis client is up to date"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't check the signatures or upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't clear the playlist"
|
||||
msgstr ""
|
||||
|
||||
@@ -24426,6 +24426,9 @@ msgstr ""
|
||||
msgid "Enable the JIT compiler"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the Lintian verification check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the bitrate management engine"
|
||||
msgstr ""
|
||||
|
||||
@@ -24459,6 +24462,9 @@ msgstr ""
|
||||
msgid "Enable the live reloading in the development server, but only re-build files that have changed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the local install check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the necessary sparse-checkout config settings"
|
||||
msgstr ""
|
||||
|
||||
@@ -30846,9 +30852,6 @@ msgstr ""
|
||||
msgid "If project list is specified, also build projects that depend on projects on the list"
|
||||
msgstr ""
|
||||
|
||||
msgid "If set, we will not cross filesystems or traverse mount points"
|
||||
msgstr ""
|
||||
|
||||
msgid "If source path is a directory, publish all its content recursively"
|
||||
msgstr ""
|
||||
|
||||
@@ -33483,9 +33486,6 @@ msgstr ""
|
||||
msgid "Launch the Protontricks GUI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch the terminal user interface"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch utility at startup and reload on file change"
|
||||
msgstr ""
|
||||
|
||||
@@ -39723,9 +39723,6 @@ msgstr ""
|
||||
msgid "One or more Kitchen Driver gems to be installed or added to a Gemfile "
|
||||
msgstr ""
|
||||
|
||||
msgid "One or more absolute directories to ignore"
|
||||
msgstr ""
|
||||
|
||||
msgid "Only match processes whose effective user ID is listed"
|
||||
msgstr ""
|
||||
|
||||
@@ -44109,9 +44106,6 @@ msgstr ""
|
||||
msgid "Print additional fields"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print additional statistics about the file traversal to stderr"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print all active monitors"
|
||||
msgstr ""
|
||||
|
||||
@@ -44691,9 +44685,6 @@ msgstr ""
|
||||
msgid "Print help message and exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help message or the help of the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help of uncommon options"
|
||||
msgstr ""
|
||||
|
||||
@@ -45690,6 +45681,9 @@ msgstr ""
|
||||
msgid "Print the domain's hostname"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the dput configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the drive capabilities for SCSI-3/mmc compliant drives"
|
||||
msgstr ""
|
||||
|
||||
@@ -50625,6 +50619,9 @@ msgstr ""
|
||||
msgid "Request distinct server name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request dry-run of dinstall after upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request given address in DHCP DISCOVER message"
|
||||
msgstr ""
|
||||
|
||||
@@ -66243,9 +66240,6 @@ msgstr ""
|
||||
msgid "The age recipient the new group should contain. Can be specified more than once"
|
||||
msgstr ""
|
||||
|
||||
msgid "The amount of threads to use"
|
||||
msgstr ""
|
||||
|
||||
msgid "The architecture reported by uname in the container"
|
||||
msgstr ""
|
||||
|
||||
@@ -66357,9 +66351,6 @@ msgstr ""
|
||||
msgid "The format to convert to"
|
||||
msgstr ""
|
||||
|
||||
msgid "The format with which to print byte counts"
|
||||
msgstr ""
|
||||
|
||||
msgid "The full cost-based query optimiser is enabled."
|
||||
msgstr ""
|
||||
|
||||
@@ -68949,6 +68940,9 @@ msgstr ""
|
||||
msgid "Upload finished packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload host"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload locally saved terminal session to asciinema.org"
|
||||
msgstr ""
|
||||
|
||||
@@ -68964,6 +68958,9 @@ msgstr ""
|
||||
msgid "Upload stemcell"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to a delayed queue"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to server"
|
||||
msgstr ""
|
||||
|
||||
@@ -70473,6 +70470,9 @@ msgstr ""
|
||||
msgid "Use paired-single floating-point instructions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for FTP"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for data transfers"
|
||||
msgstr ""
|
||||
|
||||
@@ -78558,7 +78558,7 @@ msgstr ""
|
||||
msgid "reset branch name to parent branch name"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset cache (DNS\t)"
|
||||
msgid "reset cache"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset terminal state"
|
||||
|
||||
@@ -97,11 +97,11 @@ msgid "%s %s: unrecognized feature '%s'"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %d):"
|
||||
msgstr "%s (rad %d):"
|
||||
msgid "%s (line %d)"
|
||||
msgstr "%s (rad %d)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %u):"
|
||||
msgid "%s (line %u)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
@@ -1457,11 +1457,11 @@ msgid "Standard input"
|
||||
msgstr "Standard in"
|
||||
|
||||
#, c-format
|
||||
msgid "Standard input (line %d):"
|
||||
msgid "Standard input (line %d)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Startup (line %d):"
|
||||
msgid "Startup (line %d)"
|
||||
msgstr ""
|
||||
|
||||
msgid "State"
|
||||
@@ -6341,9 +6341,6 @@ msgstr ""
|
||||
msgid "Aggregate sources for all modules in an aggregator project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggregate the consumed space of one or more directories or files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggressive scan options"
|
||||
msgstr ""
|
||||
|
||||
@@ -13172,9 +13169,6 @@ msgstr ""
|
||||
msgid "Count hard links multiple times"
|
||||
msgstr "Räkna hårda länkar alla gånger de förekommer"
|
||||
|
||||
msgid "Count hard-linked files each time they are seen"
|
||||
msgstr ""
|
||||
|
||||
msgid "Count hidden files, too"
|
||||
msgstr ""
|
||||
|
||||
@@ -16298,6 +16292,9 @@ msgstr ""
|
||||
msgid "Disable chat search background indexer"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable check for unique upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable color"
|
||||
msgstr ""
|
||||
|
||||
@@ -17426,9 +17423,6 @@ msgstr ""
|
||||
msgid "Display answers as exclamation points and missing packets as dots"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display apparent size instead of disk usage"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display architecture specific information"
|
||||
msgstr ""
|
||||
|
||||
@@ -17576,6 +17570,9 @@ msgstr ""
|
||||
msgid "Display debugging information"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display debugging messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display deduplication histogram"
|
||||
msgstr ""
|
||||
|
||||
@@ -17711,9 +17708,6 @@ msgstr ""
|
||||
msgid "Display help and debug options"
|
||||
msgstr "Visa hjälp och debug-val"
|
||||
|
||||
msgid "Display help and exit\t"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display help for Git Sizer"
|
||||
msgstr ""
|
||||
|
||||
@@ -18062,6 +18056,9 @@ msgstr ""
|
||||
msgid "Display hook variables"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display hosts listed in configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display image centered on a backdrop"
|
||||
msgstr ""
|
||||
|
||||
@@ -19304,9 +19301,6 @@ msgstr ""
|
||||
msgid "Do not compress the uid/gid table"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not compute total column for multiple inputs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not configure any interfaces"
|
||||
msgstr ""
|
||||
|
||||
@@ -20477,9 +20471,6 @@ msgstr ""
|
||||
msgid "Do not sort file arguments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not sort paths by their size in bytes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not sort the result"
|
||||
msgstr ""
|
||||
|
||||
@@ -20633,6 +20624,9 @@ msgstr "Upgradera inte paket"
|
||||
msgid "Do not upload binaries"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not use \"abshi2\" pattern"
|
||||
msgstr ""
|
||||
|
||||
@@ -20858,6 +20852,9 @@ msgstr ""
|
||||
msgid "Do not write FETCH_HEAD file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a log file for uploads"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a ~/.fehbg file"
|
||||
msgstr ""
|
||||
|
||||
@@ -21227,6 +21224,9 @@ msgstr ""
|
||||
msgid "Don't check if travis client is up to date"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't check the signatures or upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't clear the playlist"
|
||||
msgstr ""
|
||||
|
||||
@@ -24422,6 +24422,9 @@ msgstr ""
|
||||
msgid "Enable the JIT compiler"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the Lintian verification check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the bitrate management engine"
|
||||
msgstr ""
|
||||
|
||||
@@ -24455,6 +24458,9 @@ msgstr ""
|
||||
msgid "Enable the live reloading in the development server, but only re-build files that have changed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the local install check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the necessary sparse-checkout config settings"
|
||||
msgstr ""
|
||||
|
||||
@@ -30842,9 +30848,6 @@ msgstr ""
|
||||
msgid "If project list is specified, also build projects that depend on projects on the list"
|
||||
msgstr ""
|
||||
|
||||
msgid "If set, we will not cross filesystems or traverse mount points"
|
||||
msgstr ""
|
||||
|
||||
msgid "If source path is a directory, publish all its content recursively"
|
||||
msgstr ""
|
||||
|
||||
@@ -33479,9 +33482,6 @@ msgstr ""
|
||||
msgid "Launch the Protontricks GUI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch the terminal user interface"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch utility at startup and reload on file change"
|
||||
msgstr ""
|
||||
|
||||
@@ -39719,9 +39719,6 @@ msgstr ""
|
||||
msgid "One or more Kitchen Driver gems to be installed or added to a Gemfile "
|
||||
msgstr ""
|
||||
|
||||
msgid "One or more absolute directories to ignore"
|
||||
msgstr ""
|
||||
|
||||
msgid "Only match processes whose effective user ID is listed"
|
||||
msgstr ""
|
||||
|
||||
@@ -44105,9 +44102,6 @@ msgstr ""
|
||||
msgid "Print additional fields"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print additional statistics about the file traversal to stderr"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print all active monitors"
|
||||
msgstr ""
|
||||
|
||||
@@ -44687,9 +44681,6 @@ msgstr ""
|
||||
msgid "Print help message and exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help message or the help of the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help of uncommon options"
|
||||
msgstr ""
|
||||
|
||||
@@ -45686,6 +45677,9 @@ msgstr ""
|
||||
msgid "Print the domain's hostname"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the dput configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the drive capabilities for SCSI-3/mmc compliant drives"
|
||||
msgstr ""
|
||||
|
||||
@@ -50621,6 +50615,9 @@ msgstr ""
|
||||
msgid "Request distinct server name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request dry-run of dinstall after upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request given address in DHCP DISCOVER message"
|
||||
msgstr ""
|
||||
|
||||
@@ -66239,9 +66236,6 @@ msgstr ""
|
||||
msgid "The age recipient the new group should contain. Can be specified more than once"
|
||||
msgstr ""
|
||||
|
||||
msgid "The amount of threads to use"
|
||||
msgstr ""
|
||||
|
||||
msgid "The architecture reported by uname in the container"
|
||||
msgstr ""
|
||||
|
||||
@@ -66353,9 +66347,6 @@ msgstr ""
|
||||
msgid "The format to convert to"
|
||||
msgstr ""
|
||||
|
||||
msgid "The format with which to print byte counts"
|
||||
msgstr ""
|
||||
|
||||
msgid "The full cost-based query optimiser is enabled."
|
||||
msgstr ""
|
||||
|
||||
@@ -68945,6 +68936,9 @@ msgstr ""
|
||||
msgid "Upload finished packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload host"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload locally saved terminal session to asciinema.org"
|
||||
msgstr ""
|
||||
|
||||
@@ -68960,6 +68954,9 @@ msgstr ""
|
||||
msgid "Upload stemcell"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to a delayed queue"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to server"
|
||||
msgstr ""
|
||||
|
||||
@@ -70469,6 +70466,9 @@ msgstr ""
|
||||
msgid "Use paired-single floating-point instructions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for FTP"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for data transfers"
|
||||
msgstr ""
|
||||
|
||||
@@ -78554,7 +78554,7 @@ msgstr ""
|
||||
msgid "reset branch name to parent branch name"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset cache (DNS\t)"
|
||||
msgid "reset cache"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset terminal state"
|
||||
|
||||
@@ -121,12 +121,12 @@ msgid "%s %s: unrecognized feature '%s'"
|
||||
msgstr "%s %s: 未识别的特性 '%s'"
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %d):"
|
||||
msgstr "%s (行 %d):"
|
||||
msgid "%s (line %d)"
|
||||
msgstr "%s (行 %d)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %u):"
|
||||
msgstr "%s (行 %u):"
|
||||
msgid "%s (line %u)"
|
||||
msgstr "%s (行 %u)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s and %s are mutually exclusive"
|
||||
@@ -1481,12 +1481,12 @@ msgid "Standard input"
|
||||
msgstr "标准输入"
|
||||
|
||||
#, c-format
|
||||
msgid "Standard input (line %d):"
|
||||
msgstr "标准输入 (行 %d):"
|
||||
msgid "Standard input (line %d)"
|
||||
msgstr "标准输入 (行 %d)"
|
||||
|
||||
#, c-format
|
||||
msgid "Startup (line %d):"
|
||||
msgstr "启动 (行 %d):"
|
||||
msgid "Startup (line %d)"
|
||||
msgstr "启动 (行 %d)"
|
||||
|
||||
msgid "State"
|
||||
msgstr "状态"
|
||||
@@ -6368,9 +6368,6 @@ msgstr ""
|
||||
msgid "Aggregate sources for all modules in an aggregator project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggregate the consumed space of one or more directories or files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggressive scan options"
|
||||
msgstr ""
|
||||
|
||||
@@ -13199,9 +13196,6 @@ msgstr ""
|
||||
msgid "Count hard links multiple times"
|
||||
msgstr ""
|
||||
|
||||
msgid "Count hard-linked files each time they are seen"
|
||||
msgstr ""
|
||||
|
||||
msgid "Count hidden files, too"
|
||||
msgstr ""
|
||||
|
||||
@@ -16325,6 +16319,9 @@ msgstr ""
|
||||
msgid "Disable chat search background indexer"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable check for unique upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable color"
|
||||
msgstr ""
|
||||
|
||||
@@ -17453,9 +17450,6 @@ msgstr ""
|
||||
msgid "Display answers as exclamation points and missing packets as dots"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display apparent size instead of disk usage"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display architecture specific information"
|
||||
msgstr ""
|
||||
|
||||
@@ -17603,6 +17597,9 @@ msgstr ""
|
||||
msgid "Display debugging information"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display debugging messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display deduplication histogram"
|
||||
msgstr ""
|
||||
|
||||
@@ -17738,9 +17735,6 @@ msgstr ""
|
||||
msgid "Display help and debug options"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display help and exit\t"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display help for Git Sizer"
|
||||
msgstr ""
|
||||
|
||||
@@ -18089,6 +18083,9 @@ msgstr ""
|
||||
msgid "Display hook variables"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display hosts listed in configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display image centered on a backdrop"
|
||||
msgstr ""
|
||||
|
||||
@@ -19331,9 +19328,6 @@ msgstr ""
|
||||
msgid "Do not compress the uid/gid table"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not compute total column for multiple inputs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not configure any interfaces"
|
||||
msgstr ""
|
||||
|
||||
@@ -20504,9 +20498,6 @@ msgstr ""
|
||||
msgid "Do not sort file arguments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not sort paths by their size in bytes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not sort the result"
|
||||
msgstr ""
|
||||
|
||||
@@ -20660,6 +20651,9 @@ msgstr ""
|
||||
msgid "Do not upload binaries"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not use \"abshi2\" pattern"
|
||||
msgstr ""
|
||||
|
||||
@@ -20885,6 +20879,9 @@ msgstr ""
|
||||
msgid "Do not write FETCH_HEAD file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a log file for uploads"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a ~/.fehbg file"
|
||||
msgstr ""
|
||||
|
||||
@@ -21254,6 +21251,9 @@ msgstr ""
|
||||
msgid "Don't check if travis client is up to date"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't check the signatures or upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't clear the playlist"
|
||||
msgstr ""
|
||||
|
||||
@@ -24449,6 +24449,9 @@ msgstr ""
|
||||
msgid "Enable the JIT compiler"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the Lintian verification check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the bitrate management engine"
|
||||
msgstr ""
|
||||
|
||||
@@ -24482,6 +24485,9 @@ msgstr ""
|
||||
msgid "Enable the live reloading in the development server, but only re-build files that have changed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the local install check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the necessary sparse-checkout config settings"
|
||||
msgstr ""
|
||||
|
||||
@@ -30869,9 +30875,6 @@ msgstr ""
|
||||
msgid "If project list is specified, also build projects that depend on projects on the list"
|
||||
msgstr ""
|
||||
|
||||
msgid "If set, we will not cross filesystems or traverse mount points"
|
||||
msgstr ""
|
||||
|
||||
msgid "If source path is a directory, publish all its content recursively"
|
||||
msgstr ""
|
||||
|
||||
@@ -33506,9 +33509,6 @@ msgstr ""
|
||||
msgid "Launch the Protontricks GUI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch the terminal user interface"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch utility at startup and reload on file change"
|
||||
msgstr ""
|
||||
|
||||
@@ -39746,9 +39746,6 @@ msgstr ""
|
||||
msgid "One or more Kitchen Driver gems to be installed or added to a Gemfile "
|
||||
msgstr ""
|
||||
|
||||
msgid "One or more absolute directories to ignore"
|
||||
msgstr ""
|
||||
|
||||
msgid "Only match processes whose effective user ID is listed"
|
||||
msgstr ""
|
||||
|
||||
@@ -44132,9 +44129,6 @@ msgstr ""
|
||||
msgid "Print additional fields"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print additional statistics about the file traversal to stderr"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print all active monitors"
|
||||
msgstr ""
|
||||
|
||||
@@ -44714,9 +44708,6 @@ msgstr ""
|
||||
msgid "Print help message and exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help message or the help of the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help of uncommon options"
|
||||
msgstr ""
|
||||
|
||||
@@ -45713,6 +45704,9 @@ msgstr ""
|
||||
msgid "Print the domain's hostname"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the dput configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the drive capabilities for SCSI-3/mmc compliant drives"
|
||||
msgstr ""
|
||||
|
||||
@@ -50648,6 +50642,9 @@ msgstr ""
|
||||
msgid "Request distinct server name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request dry-run of dinstall after upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request given address in DHCP DISCOVER message"
|
||||
msgstr ""
|
||||
|
||||
@@ -66266,9 +66263,6 @@ msgstr ""
|
||||
msgid "The age recipient the new group should contain. Can be specified more than once"
|
||||
msgstr ""
|
||||
|
||||
msgid "The amount of threads to use"
|
||||
msgstr ""
|
||||
|
||||
msgid "The architecture reported by uname in the container"
|
||||
msgstr ""
|
||||
|
||||
@@ -66380,9 +66374,6 @@ msgstr ""
|
||||
msgid "The format to convert to"
|
||||
msgstr ""
|
||||
|
||||
msgid "The format with which to print byte counts"
|
||||
msgstr ""
|
||||
|
||||
msgid "The full cost-based query optimiser is enabled."
|
||||
msgstr ""
|
||||
|
||||
@@ -68972,6 +68963,9 @@ msgstr ""
|
||||
msgid "Upload finished packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload host"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload locally saved terminal session to asciinema.org"
|
||||
msgstr ""
|
||||
|
||||
@@ -68987,6 +68981,9 @@ msgstr ""
|
||||
msgid "Upload stemcell"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to a delayed queue"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to server"
|
||||
msgstr ""
|
||||
|
||||
@@ -70496,6 +70493,9 @@ msgstr ""
|
||||
msgid "Use paired-single floating-point instructions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for FTP"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for data transfers"
|
||||
msgstr ""
|
||||
|
||||
@@ -78581,7 +78581,7 @@ msgstr ""
|
||||
msgid "reset branch name to parent branch name"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset cache (DNS\t)"
|
||||
msgid "reset cache"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset terminal state"
|
||||
|
||||
@@ -94,12 +94,12 @@ msgid "%s %s: unrecognized feature '%s'"
|
||||
msgstr "%s %s:不認識的功能「%s」"
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %d):"
|
||||
msgstr "%s(第 %d 行):"
|
||||
msgid "%s (line %d)"
|
||||
msgstr "%s(第 %d 行)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s (line %u):"
|
||||
msgstr "%s(第 %u 行):"
|
||||
msgid "%s (line %u)"
|
||||
msgstr "%s(第 %u 行)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s and %s are mutually exclusive"
|
||||
@@ -1456,12 +1456,12 @@ msgid "Standard input"
|
||||
msgstr "標準輸入流"
|
||||
|
||||
#, c-format
|
||||
msgid "Standard input (line %d):"
|
||||
msgstr "標準輸入流(第 %d 行):"
|
||||
msgid "Standard input (line %d)"
|
||||
msgstr "標準輸入流(第 %d 行)"
|
||||
|
||||
#, c-format
|
||||
msgid "Startup (line %d):"
|
||||
msgstr "啟動命令稿(第 %d 行):"
|
||||
msgid "Startup (line %d)"
|
||||
msgstr "啟動命令稿(第 %d 行)"
|
||||
|
||||
msgid "State"
|
||||
msgstr "狀態"
|
||||
@@ -6345,9 +6345,6 @@ msgstr ""
|
||||
msgid "Aggregate sources for all modules in an aggregator project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggregate the consumed space of one or more directories or files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Aggressive scan options"
|
||||
msgstr ""
|
||||
|
||||
@@ -13176,9 +13173,6 @@ msgstr ""
|
||||
msgid "Count hard links multiple times"
|
||||
msgstr ""
|
||||
|
||||
msgid "Count hard-linked files each time they are seen"
|
||||
msgstr ""
|
||||
|
||||
msgid "Count hidden files, too"
|
||||
msgstr ""
|
||||
|
||||
@@ -16302,6 +16296,9 @@ msgstr ""
|
||||
msgid "Disable chat search background indexer"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable check for unique upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Disable color"
|
||||
msgstr ""
|
||||
|
||||
@@ -17430,9 +17427,6 @@ msgstr ""
|
||||
msgid "Display answers as exclamation points and missing packets as dots"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display apparent size instead of disk usage"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display architecture specific information"
|
||||
msgstr ""
|
||||
|
||||
@@ -17580,6 +17574,9 @@ msgstr ""
|
||||
msgid "Display debugging information"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display debugging messages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display deduplication histogram"
|
||||
msgstr ""
|
||||
|
||||
@@ -17715,9 +17712,6 @@ msgstr ""
|
||||
msgid "Display help and debug options"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display help and exit\t"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display help for Git Sizer"
|
||||
msgstr ""
|
||||
|
||||
@@ -18066,6 +18060,9 @@ msgstr ""
|
||||
msgid "Display hook variables"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display hosts listed in configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display image centered on a backdrop"
|
||||
msgstr ""
|
||||
|
||||
@@ -19308,9 +19305,6 @@ msgstr ""
|
||||
msgid "Do not compress the uid/gid table"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not compute total column for multiple inputs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not configure any interfaces"
|
||||
msgstr ""
|
||||
|
||||
@@ -20481,9 +20475,6 @@ msgstr ""
|
||||
msgid "Do not sort file arguments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not sort paths by their size in bytes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not sort the result"
|
||||
msgstr ""
|
||||
|
||||
@@ -20637,6 +20628,9 @@ msgstr ""
|
||||
msgid "Do not upload binaries"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not use \"abshi2\" pattern"
|
||||
msgstr ""
|
||||
|
||||
@@ -20862,6 +20856,9 @@ msgstr ""
|
||||
msgid "Do not write FETCH_HEAD file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a log file for uploads"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write a ~/.fehbg file"
|
||||
msgstr ""
|
||||
|
||||
@@ -21231,6 +21228,9 @@ msgstr ""
|
||||
msgid "Don't check if travis client is up to date"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't check the signatures or upload the files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't clear the playlist"
|
||||
msgstr ""
|
||||
|
||||
@@ -24426,6 +24426,9 @@ msgstr ""
|
||||
msgid "Enable the JIT compiler"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the Lintian verification check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the bitrate management engine"
|
||||
msgstr ""
|
||||
|
||||
@@ -24459,6 +24462,9 @@ msgstr ""
|
||||
msgid "Enable the live reloading in the development server, but only re-build files that have changed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the local install check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable the necessary sparse-checkout config settings"
|
||||
msgstr ""
|
||||
|
||||
@@ -30846,9 +30852,6 @@ msgstr ""
|
||||
msgid "If project list is specified, also build projects that depend on projects on the list"
|
||||
msgstr ""
|
||||
|
||||
msgid "If set, we will not cross filesystems or traverse mount points"
|
||||
msgstr ""
|
||||
|
||||
msgid "If source path is a directory, publish all its content recursively"
|
||||
msgstr ""
|
||||
|
||||
@@ -33483,9 +33486,6 @@ msgstr ""
|
||||
msgid "Launch the Protontricks GUI"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch the terminal user interface"
|
||||
msgstr ""
|
||||
|
||||
msgid "Launch utility at startup and reload on file change"
|
||||
msgstr ""
|
||||
|
||||
@@ -39723,9 +39723,6 @@ msgstr ""
|
||||
msgid "One or more Kitchen Driver gems to be installed or added to a Gemfile "
|
||||
msgstr ""
|
||||
|
||||
msgid "One or more absolute directories to ignore"
|
||||
msgstr ""
|
||||
|
||||
msgid "Only match processes whose effective user ID is listed"
|
||||
msgstr ""
|
||||
|
||||
@@ -44109,9 +44106,6 @@ msgstr ""
|
||||
msgid "Print additional fields"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print additional statistics about the file traversal to stderr"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print all active monitors"
|
||||
msgstr ""
|
||||
|
||||
@@ -44691,9 +44685,6 @@ msgstr ""
|
||||
msgid "Print help message and exit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help message or the help of the given subcommand(s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print help of uncommon options"
|
||||
msgstr ""
|
||||
|
||||
@@ -45690,6 +45681,9 @@ msgstr ""
|
||||
msgid "Print the domain's hostname"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the dput configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print the drive capabilities for SCSI-3/mmc compliant drives"
|
||||
msgstr ""
|
||||
|
||||
@@ -50625,6 +50619,9 @@ msgstr ""
|
||||
msgid "Request distinct server name"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request dry-run of dinstall after upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Request given address in DHCP DISCOVER message"
|
||||
msgstr ""
|
||||
|
||||
@@ -66243,9 +66240,6 @@ msgstr ""
|
||||
msgid "The age recipient the new group should contain. Can be specified more than once"
|
||||
msgstr ""
|
||||
|
||||
msgid "The amount of threads to use"
|
||||
msgstr ""
|
||||
|
||||
msgid "The architecture reported by uname in the container"
|
||||
msgstr ""
|
||||
|
||||
@@ -66357,9 +66351,6 @@ msgstr ""
|
||||
msgid "The format to convert to"
|
||||
msgstr ""
|
||||
|
||||
msgid "The format with which to print byte counts"
|
||||
msgstr ""
|
||||
|
||||
msgid "The full cost-based query optimiser is enabled."
|
||||
msgstr ""
|
||||
|
||||
@@ -68949,6 +68940,9 @@ msgstr ""
|
||||
msgid "Upload finished packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload host"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload locally saved terminal session to asciinema.org"
|
||||
msgstr ""
|
||||
|
||||
@@ -68964,6 +68958,9 @@ msgstr ""
|
||||
msgid "Upload stemcell"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to a delayed queue"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload to server"
|
||||
msgstr ""
|
||||
|
||||
@@ -70473,6 +70470,9 @@ msgstr ""
|
||||
msgid "Use paired-single floating-point instructions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for FTP"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use passive mode for data transfers"
|
||||
msgstr ""
|
||||
|
||||
@@ -78558,7 +78558,7 @@ msgstr ""
|
||||
msgid "reset branch name to parent branch name"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset cache (DNS\t)"
|
||||
msgid "reset cache"
|
||||
msgstr ""
|
||||
|
||||
msgid "reset terminal state"
|
||||
|
||||
@@ -3,12 +3,12 @@ name = "fish-shell"
|
||||
version = "0.0.0"
|
||||
# NOTE: versions for Python and Sphinx are specified for reproducibility.
|
||||
# Lower versions will work too.
|
||||
requires-python = ">=3.11" # updatecli.d/python.yml
|
||||
requires-python = ">=3.12"
|
||||
dependencies = []
|
||||
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
"sphinx>=9.0", # updatecli.d/python.yml
|
||||
"sphinx>=9.1", # updatecli.d/python.yml
|
||||
"sphinx-markdown-builder",
|
||||
]
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
# This grep tries to match nonempty lines that do not start with hash
|
||||
complete -c chsh -s s -l shell -x -a "(string match -r '^[^#].*' < /etc/shells)" -d "Specify your login shell"
|
||||
complete -c chsh -s u -l help -d "Display help and exit "
|
||||
complete -c chsh -s u -l help -d "Display help and exit"
|
||||
complete -c chsh -s v -l version -d "Display version and exit"
|
||||
complete -x -c chsh -a "(__fish_complete_users)"
|
||||
|
||||
|
||||
19
share/completions/dput.fish
Normal file
19
share/completions/dput.fish
Normal file
@@ -0,0 +1,19 @@
|
||||
complete -c dput -s c -l config -d "Configuration file" -r
|
||||
complete -c dput -s d -l debug -d "Display debugging messages"
|
||||
complete -c dput -s D -l dinstall -d "Request dry-run of dinstall after upload"
|
||||
complete -c dput -s f -l force -d "Disable check for unique upload"
|
||||
complete -c dput -s h -l help -d "Display help"
|
||||
complete -c dput -s H -l host-list -d "Display hosts listed in configuration"
|
||||
complete -c dput -s l -l lintian -d "Enable the Lintian verification check"
|
||||
complete -c dput -s U -l no-upload-log -d "Do not write a log file for uploads"
|
||||
complete -c dput -s o -l check-only -d "Don't check the signatures or upload the files"
|
||||
complete -c dput -s p -l print -d "Print the dput configuration"
|
||||
complete -c dput -s P -l passive -d "Use passive mode for FTP"
|
||||
complete -c dput -s s -l simulate -d "Do not upload the files"
|
||||
complete -c dput -s e -l delayed -d "Upload to a delayed queue" -r
|
||||
complete -c dput -s v -l version -d "Print the version"
|
||||
complete -c dput -s V -l check-version -d "Enable the local install check"
|
||||
|
||||
complete -c dput -x -a '(dput --host-list | string match --regex --groups-only "(.+) => .*")' -d "Upload host" -n __fish_is_first_arg
|
||||
# dput validates that filenames end in .changes
|
||||
complete -c dput -x -a '(complete -C"\'\' $(commandline -ct)" | string match -re "(?:/|.changes)\$")'
|
||||
@@ -24,4 +24,4 @@ user\t'name or uid'
|
||||
"
|
||||
complete -c dscacheutil -o configuration -d 'print current config' -f -n '[ (commandline -xpc | count) -le 1 ]'
|
||||
complete -c dscacheutil -o statistics -d 'prints cache stats' -f -n '[ (commandline -xpc | count) -le 1 ]'
|
||||
complete -c dscacheutil -o flushcache -d 'reset cache (DNS )' -f -k -n '[ (commandline -xpc | count) -le 1 ]'
|
||||
complete -c dscacheutil -o flushcache -d 'reset cache' -f -k -n '[ (commandline -xpc | count) -le 1 ]'
|
||||
|
||||
@@ -1,35 +1 @@
|
||||
# Options
|
||||
|
||||
set -l _sub_commands "aggregate a interactive i"
|
||||
complete -c dua -n 'not __fish_seen_subcommand_from help' -s A -l apparent-size -d 'Display apparent size instead of disk usage'
|
||||
complete -c dua -n 'not __fish_seen_subcommand_from help' -s f -l format -f -r -d "The format with which to print byte counts" -a "
|
||||
metric\t'uses 1000 as base'
|
||||
binary\t'use 1024 as base'
|
||||
bytes\t'plain bytes without any formatting'
|
||||
GB\t'only gigabytes'
|
||||
GiB\t'only gibibytes'
|
||||
MB\t'only megabytes'
|
||||
MiB\t'only mebibytes'
|
||||
"
|
||||
|
||||
complete -c dua -n 'not __fish_seen_subcommand_from help' -s h -l help -d 'Print help information'
|
||||
complete -c dua -n 'not __fish_seen_subcommand_from help' -s i -l ignore-dirs -r -F -d 'One or more absolute directories to ignore'
|
||||
complete -c dua -n 'not __fish_seen_subcommand_from help' -s l -l count-hard-links -d 'Count hard-linked files each time they are seen'
|
||||
complete -c dua -n 'not __fish_seen_subcommand_from help' -s t -l threads -r -f -d 'The amount of threads to use'
|
||||
complete -c dua -n 'not __fish_seen_subcommand_from help' -s V -l version -d 'Print version information'
|
||||
complete -c dua -n 'not __fish_seen_subcommand_from help' -s x -l stay-on-filesystem -d 'If set, we will not cross filesystems or traverse mount points'
|
||||
|
||||
# Subcommands
|
||||
|
||||
complete -c dua -a aggregate -n "not __fish_seen_subcommand_from $_sub_commands help" -d 'Aggregate the consumed space of one or more directories or files'
|
||||
complete -c dua -a a -n "not __fish_seen_subcommand_from $_sub_commands help" -d 'Aggregate the consumed space of one or more directories or files'
|
||||
|
||||
complete -c dua -n '__fish_seen_subcommand_from a aggregate' -l no-sort -d 'Do not sort paths by their size in bytes'
|
||||
complete -c dua -n '__fish_seen_subcommand_from a aggregate' -l no-total -d 'Do not compute total column for multiple inputs'
|
||||
complete -c dua -n '__fish_seen_subcommand_from a aggregate' -l stats -d 'Print additional statistics about the file traversal to stderr'
|
||||
|
||||
complete -c dua -a help -n "not __fish_seen_subcommand_from $_sub_commands" -f -d 'Print help message or the help of the given subcommand(s)'
|
||||
complete -c dua -n "__fish_seen_subcommand_from help" -n "not __fish_any_arg_in $_sub_commands" -x -a "$_sub_commands"
|
||||
|
||||
complete -c dua -a interactive -n "not __fish_seen_subcommand_from $_sub_commands help" -d 'Launch the terminal user interface'
|
||||
complete -c dua -a i -n "not __fish_seen_subcommand_from $_sub_commands help" -d 'Launch the terminal user interface'
|
||||
dua completions fish | source
|
||||
|
||||
@@ -779,10 +779,17 @@ function __fish_git_stash_not_using_subcommand
|
||||
or return 2
|
||||
set cmd $cmd[(contains -i -- "stash" $cmd)..-1]
|
||||
set -q cmd[2]
|
||||
or return 0
|
||||
contains -- $cmd[2] list show pop apply clear drop create save branch push
|
||||
and return 1
|
||||
return 0
|
||||
end
|
||||
|
||||
function __fish_git_stash_is_push
|
||||
__fish_git_stash_not_using_subcommand
|
||||
or __fish_git_stash_using_command push
|
||||
end
|
||||
|
||||
function __fish_git_complete_worktrees
|
||||
__fish_git worktree list --porcelain | string replace --regex --filter '^worktree\s*' ''
|
||||
end
|
||||
@@ -2425,16 +2432,16 @@ complete -f -c git -n '__fish_git_using_command stash' -n __fish_git_stash_not_u
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n __fish_git_stash_not_using_subcommand -a branch -d 'Create a new branch from a stash'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n __fish_git_stash_not_using_subcommand -a push -d 'Create a new stash with given files'
|
||||
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n '__fish_git_stash_using_command apply branch drop pop show' -ka '(__fish_git_complete_stashes)'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n __fish_git_stash_is_push -a '(__fish_git_files modified deleted modified-staged-deleted)'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n __fish_git_stash_is_push -s a -l all -d 'Stash ignored and untracked files'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n __fish_git_stash_is_push -s k -l keep-index -d 'Keep changes in index intact'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n __fish_git_stash_is_push -s p -l patch -d 'Interactively select hunks'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n __fish_git_stash_is_push -s m -l message -d 'Add a description'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n __fish_git_stash_is_push -l no-keep-index -d 'Don\'t keep changes in index intact'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n __fish_git_stash_is_push -s S -l staged -d 'Stash only staged changes'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n __fish_git_stash_is_push -s u -l include-untracked -d 'Stash untracked files'
|
||||
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n '__fish_git_stash_using_command push' -a '(__fish_git_files modified deleted modified-staged-deleted)'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n '__fish_git_stash_using_command push' -s a -l all -d 'Stash ignored and untracked files'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n '__fish_git_stash_using_command push' -s k -l keep-index -d 'Keep changes in index intact'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n '__fish_git_stash_using_command push' -s p -l patch -d 'Interactively select hunks'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n '__fish_git_stash_using_command push' -s m -l message -d 'Add a description'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n '__fish_git_stash_using_command push' -l no-keep-index -d 'Don\'t keep changes in index intact'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n '__fish_git_stash_using_command push' -s S -l staged -d 'Stash only staged changes'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n '__fish_git_stash_using_command push' -s u -l include-untracked -d 'Stash untracked files'
|
||||
complete -f -c git -n '__fish_git_using_command stash' -n '__fish_git_stash_using_command apply branch drop pop show' -ka '(__fish_git_complete_stashes)'
|
||||
|
||||
### config
|
||||
complete -f -c git -n __fish_git_needs_command -a config -d 'Set and read git configuration variables'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
complete -c rfkill -xa 'block unblock list event help' -n 'not __fish_seen_subcommand_from block unblock list event help'
|
||||
complete -c rfkill -n '__fish_seen_subcommand_from block unblock list' -d 'device group' -xa "all wifi wlan bluetooth uwb ultrawideband wimax wwan gps fm (rfkill list | string replace : \t)"
|
||||
complete -c rfkill -n '__fish_seen_subcommand_from block unblock toggle list' -d 'device group' -xa "all wifi wlan bluetooth uwb ultrawideband wimax wwan gps fm (rfkill list | string replace : \t)"
|
||||
complete -c rfkill -s V -l version -d 'Print version'
|
||||
complete -c rfkill -s h -l help -d 'Print help'
|
||||
complete -c rfkill -s J -l json -d 'JSON output'
|
||||
|
||||
@@ -1,16 +1,8 @@
|
||||
# localization: skip(private)
|
||||
set -l erase_to_end_of_screen "$(
|
||||
if status test-feature ignore-terminfo
|
||||
echo \e\[J
|
||||
else if type -q tput
|
||||
tput ed
|
||||
end
|
||||
)"
|
||||
|
||||
function __fish_echo --inherit-variable erase_to_end_of_screen --description 'run the given command after the current commandline and redraw the prompt'
|
||||
function __fish_echo --description 'run the given command after the current commandline and redraw the prompt'
|
||||
set -l line (commandline --line)
|
||||
string >&2 repeat -N \n --count=(math (commandline | count) - $line + 1)
|
||||
printf %s $erase_to_end_of_screen >&2
|
||||
echo -n \e\[J >&2
|
||||
$argv >&2
|
||||
string >&2 repeat -N \n --count=(math (count (fish_prompt)) - 1)
|
||||
string >&2 repeat -N \n --count=(math $line - 1)
|
||||
|
||||
@@ -18,7 +18,7 @@ function fish_default_mode_prompt --description "Display vi prompt mode"
|
||||
case visual
|
||||
set_color --bold magenta
|
||||
echo '[V]'
|
||||
case operator
|
||||
case operator f F t T
|
||||
set_color --bold cyan
|
||||
echo '[N]'
|
||||
end
|
||||
|
||||
@@ -53,7 +53,7 @@ function fish_vi_yank_selection
|
||||
end
|
||||
|
||||
function fish_vi_exec_motion
|
||||
argparse linewise -- $argv
|
||||
argparse --stop-nonopt linewise -- $argv
|
||||
or return
|
||||
|
||||
set -l motion $argv
|
||||
@@ -83,7 +83,7 @@ function fish_vi_exec_motion
|
||||
else
|
||||
set -l use_selection true
|
||||
set -l swap_case_hack
|
||||
switch $motion
|
||||
switch $motion[1]
|
||||
case forward-word-vi forward-bigword-vi
|
||||
if test $__fish_vi_operator = swap-case
|
||||
set swap_case_hack (string replace -r -- '^forward-((?:big)?word)-vi$' '$1' $motion)
|
||||
@@ -93,50 +93,75 @@ function fish_vi_exec_motion
|
||||
set motion (string replace -- forward kill $motion)
|
||||
end
|
||||
end
|
||||
set -l motion_cmd
|
||||
switch $motion[1]
|
||||
case commandline
|
||||
set motion_cmd $motion
|
||||
case '*'
|
||||
set motion_cmd commandline -f $motion
|
||||
end
|
||||
if $use_selection
|
||||
commandline -f begin-selection
|
||||
else
|
||||
commandline -f begin-undo-group
|
||||
end
|
||||
set -l ok true
|
||||
switch $__fish_vi_operator
|
||||
case delete
|
||||
for i in (seq $total)
|
||||
commandline -f $motion
|
||||
$motion_cmd || { set ok false; break }
|
||||
end
|
||||
if $use_selection
|
||||
if $ok && $use_selection
|
||||
commandline -f kill-selection
|
||||
end
|
||||
case change
|
||||
for i in (seq $total)
|
||||
commandline -f $motion
|
||||
switch $motion[1]
|
||||
case kill-word-vi
|
||||
for i in (seq $total)
|
||||
if test $i -eq $total
|
||||
commandline -f kill-word
|
||||
else
|
||||
$motion_cmd
|
||||
end
|
||||
end
|
||||
case '*'
|
||||
for i in (seq $total)
|
||||
$motion_cmd || { set ok false; break }
|
||||
end
|
||||
end
|
||||
if $use_selection
|
||||
commandline -f kill-selection
|
||||
if $ok
|
||||
if $use_selection
|
||||
commandline -f kill-selection
|
||||
end
|
||||
set fish_bind_mode insert
|
||||
end
|
||||
set fish_bind_mode insert
|
||||
case yank
|
||||
for i in (seq $total)
|
||||
commandline -f $motion
|
||||
$motion_cmd || { set ok false; break }
|
||||
end
|
||||
if $use_selection
|
||||
fish_vi_yank_selection
|
||||
else
|
||||
commandline -f yank
|
||||
if $ok
|
||||
if $use_selection
|
||||
fish_vi_yank_selection
|
||||
else
|
||||
commandline -f yank
|
||||
end
|
||||
end
|
||||
case swap-case
|
||||
for i in (seq $total)
|
||||
commandline -f $motion
|
||||
$motion_cmd || { set ok false; break }
|
||||
end
|
||||
if set -q swap_case_hack[1]
|
||||
set -l word $swap_case_hack
|
||||
commandline -f \
|
||||
backward-$word \
|
||||
forward-$word-end \
|
||||
togglecase-selection \
|
||||
backward-$word \
|
||||
forward-$word-vi
|
||||
else
|
||||
commandline -f togglecase-selection
|
||||
if $ok
|
||||
if set -q swap_case_hack[1]
|
||||
set -l word $swap_case_hack
|
||||
commandline -f \
|
||||
backward-$word \
|
||||
forward-$word-end \
|
||||
togglecase-selection \
|
||||
backward-$word \
|
||||
forward-$word-vi
|
||||
else
|
||||
commandline -f togglecase-selection
|
||||
end
|
||||
end
|
||||
end
|
||||
if $use_selection
|
||||
@@ -266,7 +291,9 @@ function fish_vi_key_bindings --description 'vi-like key bindings for fish'
|
||||
# Inherit shared key bindings.
|
||||
# Do this first so vi-bindings win over default.
|
||||
for mode in insert default visual
|
||||
__fish_shared_key_bindings -s -M $mode
|
||||
__fish_shared_key_bindings -M $mode
|
||||
__fish_per_os_bind --preset -M $mode ctrl-right forward-token forward-word-vi
|
||||
# ctrl-left is same as emacs mode
|
||||
end
|
||||
|
||||
# Add a way to switch from insert to normal (command) mode.
|
||||
@@ -283,304 +310,307 @@ function fish_vi_key_bindings --description 'vi-like key bindings for fish'
|
||||
commandline -f repaint-mode
|
||||
end
|
||||
'
|
||||
bind -s --preset -M insert escape $on_escape
|
||||
bind -s --preset -M insert ctrl-\[ $on_escape
|
||||
bind --preset -M insert escape $on_escape
|
||||
bind --preset -M insert ctrl-\[ $on_escape
|
||||
|
||||
# Default (command) mode
|
||||
bind -s --preset :,q exit
|
||||
bind -s --preset -m insert ctrl-c clear-commandline repaint-mode
|
||||
bind --preset :,q exit
|
||||
bind --preset -m insert ctrl-c clear-commandline repaint-mode
|
||||
|
||||
bind -s --preset -M default escape 'set -g __fish_vi_count'
|
||||
bind -s --preset -M default ctrl-\[ 'set -g __fish_vi_count'
|
||||
bind --preset -M default escape 'set -g __fish_vi_count'
|
||||
bind --preset -M default ctrl-\[ 'set -g __fish_vi_count'
|
||||
|
||||
for i in (seq 1 9)
|
||||
bind -s --preset -M default $i "fish_vi_arg_digit $i"
|
||||
bind --preset -M default $i "fish_vi_arg_digit $i"
|
||||
end
|
||||
# 0 is special: it is 'beginning-of-line' unless we are already counting (e.g. 10)
|
||||
bind -s --preset -M default 0 "if test -n \"\$__fish_vi_count\"; fish_vi_arg_digit 0; else; commandline -f beginning-of-line; end"
|
||||
bind --preset -M default 0 "if test -n \"\$__fish_vi_count\"; fish_vi_arg_digit 0; else; commandline -f beginning-of-line; end"
|
||||
|
||||
# --- Movement with Count Support ---
|
||||
bind -s --preset -M default h 'fish_vi_run_count backward-char'
|
||||
bind -s --preset -M default l 'fish_vi_run_count forward-char'
|
||||
bind --preset -M default h 'fish_vi_run_count backward-char'
|
||||
bind --preset -M default l 'fish_vi_run_count forward-char'
|
||||
|
||||
bind -s --preset -M default k 'fish_vi_run_count up-or-search'
|
||||
bind -s --preset -M default j 'fish_vi_run_count down-or-search'
|
||||
bind --preset -M default k 'fish_vi_run_count up-or-search'
|
||||
bind --preset -M default j 'fish_vi_run_count down-or-search'
|
||||
|
||||
bind -s --preset -M default b 'fish_vi_run_count backward-word'
|
||||
bind -s --preset -M default B 'fish_vi_run_count backward-bigword'
|
||||
bind -s --preset -M default g,e 'fish_vi_run_count backward-word-end'
|
||||
bind -s --preset -M default g,E 'fish_vi_run_count backward-bigword-end'
|
||||
bind --preset -M default b 'fish_vi_run_count backward-word'
|
||||
bind --preset -M default B 'fish_vi_run_count backward-bigword'
|
||||
bind --preset -M default g,e 'fish_vi_run_count backward-word-end'
|
||||
bind --preset -M default g,E 'fish_vi_run_count backward-bigword-end'
|
||||
|
||||
bind -s --preset -M default w 'fish_vi_run_count forward-word-vi'
|
||||
bind -s --preset -M default W 'fish_vi_run_count forward-bigword-vi'
|
||||
bind --preset -M default w 'fish_vi_run_count forward-word-vi'
|
||||
bind --preset -M default W 'fish_vi_run_count forward-bigword-vi'
|
||||
|
||||
bind -s --preset -M default e 'fish_vi_run_count forward-word-end'
|
||||
bind -s --preset -M default E 'fish_vi_run_count forward-bigword-end'
|
||||
bind --preset -M default e 'fish_vi_run_count forward-word-end'
|
||||
bind --preset -M default E 'fish_vi_run_count forward-bigword-end'
|
||||
|
||||
bind -s --preset -M default x 'fish_vi_run_count delete-char'
|
||||
bind -s --preset -M default X 'fish_vi_run_count backward-delete-char'
|
||||
bind --preset -M default x 'fish_vi_run_count delete-char'
|
||||
bind --preset -M default X 'fish_vi_run_count backward-delete-char'
|
||||
|
||||
bind -s --preset -m insert enter execute
|
||||
bind -s --preset -m insert ctrl-j execute
|
||||
bind -s --preset -m insert ctrl-m execute
|
||||
bind -s --preset -m insert o 'set fish_cursor_end_mode exclusive' insert-line-under repaint-mode
|
||||
bind -s --preset -m insert O 'set fish_cursor_end_mode exclusive' insert-line-over repaint-mode
|
||||
bind -s --preset -m insert i repaint-mode
|
||||
bind -s --preset -m insert I beginning-of-line repaint-mode
|
||||
bind -s --preset -m insert a 'set fish_cursor_end_mode exclusive' forward-single-char repaint-mode
|
||||
bind -s --preset -m insert A 'set fish_cursor_end_mode exclusive' end-of-line repaint-mode
|
||||
bind -s --preset -m visual v begin-selection repaint-mode
|
||||
bind --preset -m insert enter execute
|
||||
bind --preset -m insert ctrl-j execute
|
||||
bind --preset -m insert ctrl-m execute
|
||||
bind --preset -m insert o 'set fish_cursor_end_mode exclusive' insert-line-under repaint-mode
|
||||
bind --preset -m insert O 'set fish_cursor_end_mode exclusive' insert-line-over repaint-mode
|
||||
bind --preset -m insert i repaint-mode
|
||||
bind --preset -m insert I beginning-of-line repaint-mode
|
||||
bind --preset -m insert a 'set fish_cursor_end_mode exclusive' forward-single-char repaint-mode
|
||||
bind --preset -m insert A 'set fish_cursor_end_mode exclusive' end-of-line repaint-mode
|
||||
bind --preset -m visual v begin-selection repaint-mode
|
||||
|
||||
bind -s --preset g,g beginning-of-buffer
|
||||
bind -s --preset G end-of-buffer
|
||||
bind --preset g,g beginning-of-buffer
|
||||
bind --preset G end-of-buffer
|
||||
|
||||
for key in $eol_keys
|
||||
bind -s --preset $key end-of-line
|
||||
bind --preset $key end-of-line
|
||||
end
|
||||
# Note: 0 is handled in the numeric section above
|
||||
for key in \^ g\^ _
|
||||
bind -s --preset $key beginning-of-line
|
||||
bind --preset $key beginning-of-line
|
||||
end
|
||||
|
||||
bind -s --preset u undo
|
||||
bind -s --preset ctrl-r redo
|
||||
bind --preset u undo
|
||||
bind --preset ctrl-r redo
|
||||
|
||||
bind -s --preset [ history-token-search-backward
|
||||
bind -s --preset ] history-token-search-forward
|
||||
bind -s --preset -m insert / history-pager repaint-mode
|
||||
bind --preset [ history-token-search-backward
|
||||
bind --preset ] history-token-search-forward
|
||||
bind --preset -m insert / history-pager repaint-mode
|
||||
|
||||
__fish_per_os_bind --preset $argv ctrl-right forward-token forward-word-vi
|
||||
# ctrl-left is same as emacs mode
|
||||
|
||||
bind -s --preset -M insert ctrl-n accept-autosuggestion
|
||||
bind --preset -M insert ctrl-n accept-autosuggestion
|
||||
|
||||
# Vi/Vim doesn't support these keys in insert mode but that seems silly so we do so anyway.
|
||||
bind -s --preset -M insert home beginning-of-line
|
||||
bind -s --preset -M default home beginning-of-line
|
||||
bind -s --preset -M insert end end-of-line
|
||||
bind -s --preset -M default end end-of-line
|
||||
bind --preset -M insert home beginning-of-line
|
||||
bind --preset -M default home beginning-of-line
|
||||
bind --preset -M insert end end-of-line
|
||||
bind --preset -M default end end-of-line
|
||||
|
||||
bind -s --preset -M insert delete delete-char
|
||||
bind -s --preset -M default delete delete-char
|
||||
bind --preset -M insert delete delete-char
|
||||
bind --preset -M default delete delete-char
|
||||
|
||||
# Backspace deletes a char in insert mode, but not in normal/default mode.
|
||||
bind -s --preset -M insert backspace backward-delete-char
|
||||
bind -s --preset -M insert shift-backspace backward-delete-char
|
||||
bind -s --preset -M default backspace backward-char
|
||||
bind -s --preset -M insert ctrl-h backward-delete-char
|
||||
bind -s --preset -M default ctrl-h backward-char
|
||||
bind --preset -M insert backspace backward-delete-char
|
||||
bind --preset -M insert shift-backspace backward-delete-char
|
||||
bind --preset -M default backspace backward-char
|
||||
bind --preset -M insert ctrl-h backward-delete-char
|
||||
bind --preset -M default ctrl-h backward-char
|
||||
|
||||
# Operators & Operator Mode
|
||||
bind -s --preset -M default d 'fish_vi_start_operator delete'
|
||||
bind -s --preset -M default c 'fish_vi_start_operator change'
|
||||
bind -s --preset -M default y 'fish_vi_start_operator yank'
|
||||
bind -s --preset -M default g,\~ 'fish_vi_start_operator swap-case'
|
||||
bind --preset -M default d 'fish_vi_start_operator delete'
|
||||
bind --preset -M default c 'fish_vi_start_operator change'
|
||||
bind --preset -M default y 'fish_vi_start_operator yank'
|
||||
bind --preset -M default g,\~ 'fish_vi_start_operator swap-case'
|
||||
|
||||
bind -s --preset -M operator escape fish_vi_operator_cancel
|
||||
bind -s --preset -M operator ctrl-\[ fish_vi_operator_cancel
|
||||
bind --preset -M operator escape fish_vi_operator_cancel
|
||||
bind --preset -M operator ctrl-\[ fish_vi_operator_cancel
|
||||
|
||||
for i in (seq 1 9)
|
||||
bind -s --preset -M operator $i "fish_vi_arg_digit $i"
|
||||
bind --preset -M operator $i "fish_vi_arg_digit $i"
|
||||
end
|
||||
bind -s --preset -M operator 0 "if test -n \"\$__fish_vi_count\"; fish_vi_arg_digit 0; else; fish_vi_exec_motion beginning-of-line; end"
|
||||
bind --preset -M operator 0 "if test -n \"\$__fish_vi_count\"; fish_vi_arg_digit 0; else; fish_vi_exec_motion beginning-of-line; end"
|
||||
|
||||
bind -s --preset -M operator h 'fish_vi_exec_motion backward-char'
|
||||
bind -s --preset -M operator l 'fish_vi_exec_motion forward-char'
|
||||
bind -s --preset -M operator k 'fish_vi_exec_motion up-line'
|
||||
bind -s --preset -M operator j 'fish_vi_exec_motion down-line'
|
||||
bind -s --preset -M operator b 'fish_vi_exec_motion backward-word'
|
||||
bind -s --preset -M operator B 'fish_vi_exec_motion backward-bigword'
|
||||
bind -s --preset -M operator g,e 'fish_vi_exec_motion backward-word-end'
|
||||
bind -s --preset -M operator g,E 'fish_vi_exec_motion backward-bigword-end'
|
||||
bind -s --preset -M operator w 'fish_vi_exec_motion forward-word-vi'
|
||||
bind -s --preset -M operator W 'fish_vi_exec_motion forward-bigword-vi'
|
||||
bind -s --preset -M operator e 'fish_vi_exec_motion forward-word-end'
|
||||
bind -s --preset -M operator E 'fish_vi_exec_motion forward-bigword-end'
|
||||
bind --preset -M operator h 'fish_vi_exec_motion backward-char'
|
||||
bind --preset -M operator l 'fish_vi_exec_motion forward-char'
|
||||
bind --preset -M operator k 'fish_vi_exec_motion up-line'
|
||||
bind --preset -M operator j 'fish_vi_exec_motion down-line'
|
||||
bind --preset -M operator b 'fish_vi_exec_motion backward-word'
|
||||
bind --preset -M operator B 'fish_vi_exec_motion backward-bigword'
|
||||
bind --preset -M operator g,e 'fish_vi_exec_motion backward-word-end'
|
||||
bind --preset -M operator g,E 'fish_vi_exec_motion backward-bigword-end'
|
||||
bind --preset -M operator w 'fish_vi_exec_motion forward-word-vi'
|
||||
bind --preset -M operator W 'fish_vi_exec_motion forward-bigword-vi'
|
||||
bind --preset -M operator e 'fish_vi_exec_motion forward-word-end'
|
||||
bind --preset -M operator E 'fish_vi_exec_motion forward-bigword-end'
|
||||
|
||||
bind -s --preset -M operator 0 'fish_vi_exec_motion beginning-of-line'
|
||||
bind -s --preset -M operator \^ 'fish_vi_exec_motion beginning-of-line'
|
||||
bind -s --preset -M operator \$ 'fish_vi_exec_motion end-of-line'
|
||||
bind --preset -M operator 0 'fish_vi_exec_motion beginning-of-line'
|
||||
bind --preset -M operator \^ 'fish_vi_exec_motion beginning-of-line'
|
||||
bind --preset -M operator \$ 'fish_vi_exec_motion end-of-line'
|
||||
|
||||
bind -s --preset -M operator f 'fish_vi_exec_motion forward-jump'
|
||||
bind -s --preset -M operator F 'fish_vi_exec_motion backward-jump'
|
||||
bind -s --preset -M operator t 'fish_vi_exec_motion forward-jump-till'
|
||||
bind -s --preset -M operator T 'fish_vi_exec_motion backward-jump-till'
|
||||
bind -s --preset -M operator ';' 'fish_vi_exec_motion repeat-jump'
|
||||
bind -s --preset -M operator , 'fish_vi_exec_motion repeat-jump-reverse'
|
||||
bind --preset -M operator f --sets-mode f ''
|
||||
bind --preset -M operator F --sets-mode F ''
|
||||
bind --preset -M operator t --sets-mode t ''
|
||||
bind --preset -M operator T --sets-mode T ''
|
||||
|
||||
bind -s --preset -M operator d 'fish_vi_exec_motion --linewise'
|
||||
bind -s --preset -M operator c 'fish_vi_exec_motion --linewise'
|
||||
bind -s --preset -M operator y 'fish_vi_exec_motion --linewise'
|
||||
bind -s --preset -M operator \~ 'fish_vi_exec_motion --linewise'
|
||||
bind --preset -M f '' get-key 'fish_vi_exec_motion commandline --forward-jump=$fish_key' 'set -eg fish_key'
|
||||
bind --preset -M F '' get-key 'fish_vi_exec_motion commandline --backward-jump=$fish_key' 'set -eg fish_key'
|
||||
bind --preset -M t '' get-key 'fish_vi_exec_motion commandline --forward-jump-till=$fish_key' 'set -eg fish_key'
|
||||
bind --preset -M T '' get-key 'fish_vi_exec_motion commandline --backward-jump-till=$fish_key' 'set -eg fish_key'
|
||||
|
||||
bind -s --preset D kill-line
|
||||
bind -s --preset d,\$ kill-line
|
||||
bind -s --preset d,\^ backward-kill-line
|
||||
bind -s --preset d,0 backward-kill-line
|
||||
bind --preset -M operator ';' 'fish_vi_exec_motion repeat-jump'
|
||||
bind --preset -M operator , 'fish_vi_exec_motion repeat-jump-reverse'
|
||||
|
||||
bind -s --preset d,i,w kill-inner-word
|
||||
bind -s --preset d,i,W kill-inner-bigword
|
||||
bind -s --preset d,a,w kill-a-word
|
||||
bind -s --preset d,a,W kill-a-bigword
|
||||
bind -s --preset d,i,b jump-till-matching-bracket and jump-till-matching-bracket and begin-selection jump-till-matching-bracket kill-selection end-selection
|
||||
bind -s --preset d,a,b jump-to-matching-bracket and jump-to-matching-bracket and begin-selection jump-to-matching-bracket kill-selection end-selection
|
||||
bind -s --preset d,i backward-jump-till and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection
|
||||
bind -s --preset d,a backward-jump and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection
|
||||
bind -s --preset 'd,;' begin-selection repeat-jump kill-selection end-selection
|
||||
bind -s --preset 'd,comma' begin-selection repeat-jump-reverse kill-selection end-selection
|
||||
bind --preset -M operator d 'fish_vi_exec_motion --linewise'
|
||||
bind --preset -M operator c 'fish_vi_exec_motion --linewise'
|
||||
bind --preset -M operator y 'fish_vi_exec_motion --linewise'
|
||||
bind --preset -M operator \~ 'fish_vi_exec_motion --linewise'
|
||||
|
||||
bind -s --preset -m insert s delete-char repaint-mode
|
||||
bind -s --preset -m insert S kill-inner-line repaint-mode
|
||||
bind -s --preset -m insert C kill-line repaint-mode
|
||||
bind -s --preset -m insert c,\$ kill-line repaint-mode
|
||||
bind -s --preset -m insert c,\^ backward-kill-line repaint-mode
|
||||
bind -s --preset -m insert c,0 backward-kill-line repaint-mode
|
||||
bind --preset D kill-line
|
||||
bind --preset d,\$ kill-line
|
||||
bind --preset d,\^ backward-kill-line
|
||||
bind --preset d,0 backward-kill-line
|
||||
|
||||
bind -s --preset -m insert c,i,w kill-inner-word repaint-mode
|
||||
bind -s --preset -m insert c,i,W kill-inner-bigword repaint-mode
|
||||
bind -s --preset -m insert c,a,w kill-a-word repaint-mode
|
||||
bind -s --preset -m insert c,a,W kill-a-bigword repaint-mode
|
||||
bind -s --preset -m insert c,i,b jump-till-matching-bracket and jump-till-matching-bracket and begin-selection jump-till-matching-bracket kill-selection end-selection
|
||||
bind -s --preset -m insert c,a,b jump-to-matching-bracket and jump-to-matching-bracket and begin-selection jump-to-matching-bracket kill-selection end-selection
|
||||
bind -s --preset -m insert c,i backward-jump-till and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection repaint-mode
|
||||
bind -s --preset -m insert c,a backward-jump and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection repaint-mode
|
||||
bind --preset d,i,w kill-inner-word
|
||||
bind --preset d,i,W kill-inner-bigword
|
||||
bind --preset d,a,w kill-a-word
|
||||
bind --preset d,a,W kill-a-bigword
|
||||
bind --preset d,i,b jump-till-matching-bracket and jump-till-matching-bracket and begin-selection jump-till-matching-bracket kill-selection end-selection
|
||||
bind --preset d,a,b jump-to-matching-bracket and jump-to-matching-bracket and begin-selection jump-to-matching-bracket kill-selection end-selection
|
||||
bind --preset d,i backward-jump-till and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection
|
||||
bind --preset d,a backward-jump and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection
|
||||
bind --preset 'd,;' begin-selection repeat-jump kill-selection end-selection
|
||||
bind --preset 'd,comma' begin-selection repeat-jump-reverse kill-selection end-selection
|
||||
|
||||
bind -s --preset \~ togglecase-char forward-single-char
|
||||
bind -s --preset g,u downcase-word
|
||||
bind -s --preset g,U upcase-word
|
||||
bind --preset -m insert s delete-char repaint-mode
|
||||
bind --preset -m insert S kill-inner-line repaint-mode
|
||||
bind --preset -m insert C kill-line repaint-mode
|
||||
bind --preset -m insert c,\$ kill-line repaint-mode
|
||||
bind --preset -m insert c,\^ backward-kill-line repaint-mode
|
||||
bind --preset -m insert c,0 backward-kill-line repaint-mode
|
||||
|
||||
bind -s --preset J end-of-line delete-char
|
||||
bind -s --preset K 'man (commandline -t) 2>/dev/null; or echo -n \a'
|
||||
bind --preset -m insert c,i,w kill-inner-word repaint-mode
|
||||
bind --preset -m insert c,i,W kill-inner-bigword repaint-mode
|
||||
bind --preset -m insert c,a,w kill-a-word repaint-mode
|
||||
bind --preset -m insert c,a,W kill-a-bigword repaint-mode
|
||||
bind --preset -m insert c,i,b jump-till-matching-bracket and jump-till-matching-bracket and begin-selection jump-till-matching-bracket kill-selection end-selection
|
||||
bind --preset -m insert c,a,b jump-to-matching-bracket and jump-to-matching-bracket and begin-selection jump-to-matching-bracket kill-selection end-selection
|
||||
bind --preset -m insert c,i backward-jump-till and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection repaint-mode
|
||||
bind --preset -m insert c,a backward-jump and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection repaint-mode
|
||||
|
||||
bind --preset \~ togglecase-char forward-single-char
|
||||
bind --preset g,u downcase-word
|
||||
bind --preset g,U upcase-word
|
||||
|
||||
bind --preset J end-of-line delete-char
|
||||
bind --preset K 'man (commandline -t) 2>/dev/null; or echo -n \a'
|
||||
|
||||
# yy handled by operator mode
|
||||
for seq in '",*,y,y' '",*,Y' '",+,y,y' '",+,Y'
|
||||
bind -s --preset $seq fish_clipboard_copy
|
||||
bind --preset $seq fish_clipboard_copy
|
||||
end
|
||||
bind -s --preset Y kill-whole-line yank
|
||||
bind -s --preset y,\$ kill-line yank
|
||||
bind -s --preset y,\^ backward-kill-line yank
|
||||
bind -s --preset y,0 backward-kill-line yank
|
||||
bind -s --preset y,i,w kill-inner-word yank
|
||||
bind -s --preset y,i,W kill-inner-bigword yank
|
||||
bind -s --preset y,a,w kill-a-word yank
|
||||
bind -s --preset y,a,W kill-a-bigword yank
|
||||
bind -s --preset y,i,b jump-till-matching-bracket and jump-till-matching-bracket and begin-selection jump-till-matching-bracket fish_vi_yank_selection end-selection
|
||||
bind -s --preset y,a,b jump-to-matching-bracket and jump-to-matching-bracket and begin-selection jump-to-matching-bracket fish_vi_yank_selection end-selection
|
||||
bind -s --preset y,i backward-jump-till and repeat-jump-reverse and begin-selection repeat-jump fish_vi_yank_selection end-selection
|
||||
bind -s --preset y,a backward-jump and repeat-jump-reverse and begin-selection repeat-jump fish_vi_yank_selection end-selection
|
||||
bind --preset Y kill-whole-line yank
|
||||
bind --preset y,\$ kill-line yank
|
||||
bind --preset y,\^ backward-kill-line yank
|
||||
bind --preset y,0 backward-kill-line yank
|
||||
bind --preset y,i,w kill-inner-word yank
|
||||
bind --preset y,i,W kill-inner-bigword yank
|
||||
bind --preset y,a,w kill-a-word yank
|
||||
bind --preset y,a,W kill-a-bigword yank
|
||||
bind --preset y,i,b jump-till-matching-bracket and jump-till-matching-bracket and begin-selection jump-till-matching-bracket fish_vi_yank_selection end-selection
|
||||
bind --preset y,a,b jump-to-matching-bracket and jump-to-matching-bracket and begin-selection jump-to-matching-bracket fish_vi_yank_selection end-selection
|
||||
bind --preset y,i backward-jump-till and repeat-jump-reverse and begin-selection repeat-jump fish_vi_yank_selection end-selection
|
||||
bind --preset y,a backward-jump and repeat-jump-reverse and begin-selection repeat-jump fish_vi_yank_selection end-selection
|
||||
|
||||
bind -s --preset % jump-to-matching-bracket
|
||||
bind -s --preset f forward-jump
|
||||
bind -s --preset F backward-jump
|
||||
bind -s --preset t forward-jump-till
|
||||
bind -s --preset T backward-jump-till
|
||||
bind -s --preset ';' repeat-jump
|
||||
bind -s --preset , repeat-jump-reverse
|
||||
bind --preset % jump-to-matching-bracket
|
||||
bind --preset f forward-jump
|
||||
bind --preset F backward-jump
|
||||
bind --preset t forward-jump-till
|
||||
bind --preset T backward-jump-till
|
||||
bind --preset ';' repeat-jump
|
||||
bind --preset , repeat-jump-reverse
|
||||
|
||||
# in emacs yank means paste
|
||||
# in vim p means paste *after* current character, so go forward a char before pasting
|
||||
# also in vim, P means paste *at* current position (like at '|' with cursor = line),
|
||||
# \ so there's no need to go back a char, just paste it without moving
|
||||
bind -s --preset p 'set -g fish_cursor_end_mode exclusive' forward-char 'set -g fish_cursor_end_mode inclusive' yank
|
||||
bind -s --preset P yank
|
||||
bind -s --preset g,p yank-pop
|
||||
bind --preset p 'set -g fish_cursor_end_mode exclusive' forward-char 'set -g fish_cursor_end_mode inclusive' yank
|
||||
bind --preset P yank
|
||||
bind --preset g,p yank-pop
|
||||
|
||||
# same vim 'pasting' note as upper
|
||||
bind -s --preset '",*,p' 'set -g fish_cursor_end_mode exclusive' forward-char 'set -g fish_cursor_end_mode inclusive' fish_clipboard_paste
|
||||
bind -s --preset '",*,P' fish_clipboard_paste
|
||||
bind -s --preset '",+,p' 'set -g fish_cursor_end_mode exclusive' forward-char 'set -g fish_cursor_end_mode inclusive' fish_clipboard_paste
|
||||
bind -s --preset '",+,P' fish_clipboard_paste
|
||||
bind --preset '",*,p' 'set -g fish_cursor_end_mode exclusive' forward-char 'set -g fish_cursor_end_mode inclusive' fish_clipboard_paste
|
||||
bind --preset '",*,P' fish_clipboard_paste
|
||||
bind --preset '",+,p' 'set -g fish_cursor_end_mode exclusive' forward-char 'set -g fish_cursor_end_mode inclusive' fish_clipboard_paste
|
||||
bind --preset '",+,P' fish_clipboard_paste
|
||||
|
||||
#
|
||||
# Lowercase r, enters replace_one mode
|
||||
#
|
||||
bind -s --preset -m replace_one r repaint-mode
|
||||
bind -s --preset -M replace_one -m default '' 'set -g fish_cursor_end_mode exclusive' delete-char self-insert backward-char repaint-mode 'set -g fish_cursor_end_mode inclusive'
|
||||
bind -s --preset -M replace_one -m default enter 'set -g fish_cursor_end_mode exclusive' 'commandline -f delete-char; commandline -i \n; commandline -f backward-char' repaint-mode 'set -g fish_cursor_end_mode inclusive'
|
||||
bind -s --preset -M replace_one -m default ctrl-j 'set -g fish_cursor_end_mode exclusive' 'commandline -f delete-char; commandline -i \n; commandline -f backward-char' repaint-mode 'set -g fish_cursor_end_mode inclusive'
|
||||
bind -s --preset -M replace_one -m default ctrl-m 'set -g fish_cursor_end_mode exclusive' 'commandline -f delete-char; commandline -i \n; commandline -f backward-char' repaint-mode 'set -g fish_cursor_end_mode inclusive'
|
||||
bind -s --preset -M replace_one -m default escape cancel repaint-mode
|
||||
bind -s --preset -M replace_one -m default ctrl-\[ cancel repaint-mode
|
||||
bind --preset -m replace_one r repaint-mode
|
||||
bind --preset -M replace_one -m default '' 'set -g fish_cursor_end_mode exclusive' delete-char self-insert backward-char repaint-mode 'set -g fish_cursor_end_mode inclusive'
|
||||
bind --preset -M replace_one -m default enter 'set -g fish_cursor_end_mode exclusive' 'commandline -f delete-char; commandline -i \n; commandline -f backward-char' repaint-mode 'set -g fish_cursor_end_mode inclusive'
|
||||
bind --preset -M replace_one -m default ctrl-j 'set -g fish_cursor_end_mode exclusive' 'commandline -f delete-char; commandline -i \n; commandline -f backward-char' repaint-mode 'set -g fish_cursor_end_mode inclusive'
|
||||
bind --preset -M replace_one -m default ctrl-m 'set -g fish_cursor_end_mode exclusive' 'commandline -f delete-char; commandline -i \n; commandline -f backward-char' repaint-mode 'set -g fish_cursor_end_mode inclusive'
|
||||
bind --preset -M replace_one -m default escape cancel repaint-mode
|
||||
bind --preset -M replace_one -m default ctrl-\[ cancel repaint-mode
|
||||
|
||||
#
|
||||
# Uppercase R, enters replace mode
|
||||
#
|
||||
bind -s --preset -m replace R repaint-mode
|
||||
bind -s --preset -M replace '' delete-char self-insert
|
||||
bind -s --preset -M replace -m insert enter execute repaint-mode
|
||||
bind -s --preset -M replace -m insert ctrl-j execute repaint-mode
|
||||
bind -s --preset -M replace -m insert ctrl-m execute repaint-mode
|
||||
bind -s --preset -M replace -m default escape cancel repaint-mode
|
||||
bind -s --preset -M replace -m default ctrl-\[ cancel repaint-mode
|
||||
bind --preset -m replace R repaint-mode
|
||||
bind --preset -M replace '' delete-char self-insert
|
||||
bind --preset -M replace -m insert enter execute repaint-mode
|
||||
bind --preset -M replace -m insert ctrl-j execute repaint-mode
|
||||
bind --preset -M replace -m insert ctrl-m execute repaint-mode
|
||||
bind --preset -M replace -m default escape cancel repaint-mode
|
||||
bind --preset -M replace -m default ctrl-\[ cancel repaint-mode
|
||||
# in vim (and maybe in vi), <BS> deletes the changes
|
||||
# but this binding just move cursor backward, not delete the changes
|
||||
bind -s --preset -M replace backspace backward-char
|
||||
bind -s --preset -M replace shift-backspace backward-char
|
||||
bind --preset -M replace backspace backward-char
|
||||
bind --preset -M replace shift-backspace backward-char
|
||||
|
||||
#
|
||||
# Increment or decrement number under the cursor with ctrl+x ctrl+a
|
||||
#
|
||||
bind -s --preset -M default ctrl-a fish_vi_inc
|
||||
bind -s --preset -M default ctrl-x fish_vi_dec
|
||||
bind --preset -M default ctrl-a fish_vi_inc
|
||||
bind --preset -M default ctrl-x fish_vi_dec
|
||||
|
||||
#
|
||||
# visual mode
|
||||
#
|
||||
bind -s --preset -M visual h backward-char
|
||||
bind -s --preset -M visual l forward-char
|
||||
bind --preset -M visual h backward-char
|
||||
bind --preset -M visual l forward-char
|
||||
|
||||
bind -s --preset -M visual k up-line
|
||||
bind -s --preset -M visual j down-line
|
||||
bind --preset -M visual k up-line
|
||||
bind --preset -M visual j down-line
|
||||
|
||||
bind -s --preset -M visual b backward-word
|
||||
bind -s --preset -M visual B backward-bigword
|
||||
bind -s --preset -M visual g,e backward-word-end
|
||||
bind -s --preset -M visual g,E backward-bigword-end
|
||||
bind -s --preset -M visual w forward-word-vi
|
||||
bind -s --preset -M visual W forward-bigword-vi
|
||||
bind -s --preset -M visual e forward-word-end
|
||||
bind -s --preset -M visual E forward-bigword-end
|
||||
bind -s --preset -M visual o swap-selection-start-stop repaint-mode
|
||||
bind --preset -M visual b backward-word
|
||||
bind --preset -M visual B backward-bigword
|
||||
bind --preset -M visual g,e backward-word-end
|
||||
bind --preset -M visual g,E backward-bigword-end
|
||||
bind --preset -M visual w forward-word-vi
|
||||
bind --preset -M visual W forward-bigword-vi
|
||||
bind --preset -M visual e forward-word-end
|
||||
bind --preset -M visual E forward-bigword-end
|
||||
bind --preset -M visual o swap-selection-start-stop repaint-mode
|
||||
|
||||
bind -s --preset -M visual % jump-to-matching-bracket
|
||||
bind -s --preset -M visual f forward-jump
|
||||
bind -s --preset -M visual t forward-jump-till
|
||||
bind -s --preset -M visual F backward-jump
|
||||
bind -s --preset -M visual T backward-jump-till
|
||||
bind -s --preset -M visual ';' repeat-jump
|
||||
bind -s --preset -M visual , repeat-jump-reverse
|
||||
bind --preset -M visual % jump-to-matching-bracket
|
||||
bind --preset -M visual f forward-jump
|
||||
bind --preset -M visual t forward-jump-till
|
||||
bind --preset -M visual F backward-jump
|
||||
bind --preset -M visual T backward-jump-till
|
||||
bind --preset -M visual ';' repeat-jump
|
||||
bind --preset -M visual , repeat-jump-reverse
|
||||
|
||||
for key in $eol_keys
|
||||
bind -s --preset -M visual $key end-of-line
|
||||
bind --preset -M visual $key end-of-line
|
||||
end
|
||||
for key in $bol_keys
|
||||
bind -s --preset -M visual $key beginning-of-line
|
||||
bind --preset -M visual $key beginning-of-line
|
||||
end
|
||||
|
||||
bind -s --preset -M visual -m default v end-selection repaint-mode
|
||||
bind -s --preset -M visual -m insert i end-selection repaint-mode
|
||||
bind -s --preset -M visual -m insert I end-selection beginning-of-line repaint-mode
|
||||
bind -s --preset -M visual -m insert c kill-selection end-selection repaint-mode
|
||||
bind -s --preset -M visual -m insert s kill-selection end-selection repaint-mode
|
||||
bind -s --preset -M visual -m default d kill-selection end-selection backward-char repaint-mode
|
||||
bind -s --preset -M visual -m default x kill-selection end-selection repaint-mode
|
||||
bind -s --preset -M visual -m default X kill-whole-line end-selection repaint-mode
|
||||
bind -s --preset -M visual -m default y fish_vi_yank_selection end-selection repaint-mode
|
||||
bind -s --preset -M visual -m default '",*,y' "fish_clipboard_copy; commandline -f end-selection repaint-mode"
|
||||
bind -s --preset -M visual -m default '",+,y' "fish_clipboard_copy; commandline -f end-selection repaint-mode"
|
||||
bind -s --preset -M visual -m default \~ togglecase-selection end-selection repaint-mode
|
||||
bind -s --preset -M visual -m default g,u downcase-selection end-selection repaint-mode
|
||||
bind -s --preset -M visual -m default g,U upcase-selection end-selection repaint-mode
|
||||
bind --preset -M visual -m default v end-selection repaint-mode
|
||||
bind --preset -M visual -m insert i end-selection repaint-mode
|
||||
bind --preset -M visual -m insert I end-selection beginning-of-line repaint-mode
|
||||
bind --preset -M visual -m insert c kill-selection end-selection repaint-mode
|
||||
bind --preset -M visual -m insert s kill-selection end-selection repaint-mode
|
||||
bind --preset -M visual -m default d kill-selection end-selection backward-char repaint-mode
|
||||
bind --preset -M visual -m default x kill-selection end-selection repaint-mode
|
||||
bind --preset -M visual -m default X kill-whole-line end-selection repaint-mode
|
||||
bind --preset -M visual -m default y fish_vi_yank_selection end-selection repaint-mode
|
||||
bind --preset -M visual -m default '",*,y' "fish_clipboard_copy; commandline -f end-selection repaint-mode"
|
||||
bind --preset -M visual -m default '",+,y' "fish_clipboard_copy; commandline -f end-selection repaint-mode"
|
||||
bind --preset -M visual -m default \~ togglecase-selection end-selection repaint-mode
|
||||
bind --preset -M visual -m default g,u downcase-selection end-selection repaint-mode
|
||||
bind --preset -M visual -m default g,U upcase-selection end-selection repaint-mode
|
||||
|
||||
bind -s --preset -M visual -m default ctrl-c end-selection repaint-mode
|
||||
bind -s --preset -M visual -m default escape end-selection repaint-mode
|
||||
bind -s --preset -M visual -m default ctrl-\[ end-selection repaint-mode
|
||||
bind --preset -M visual -m default ctrl-c end-selection repaint-mode
|
||||
bind --preset -M visual -m default escape end-selection repaint-mode
|
||||
bind --preset -M visual -m default ctrl-\[ end-selection repaint-mode
|
||||
|
||||
# Make it easy to turn an unexecuted command into a comment in the shell history. Also, remove
|
||||
# the commenting chars so the command can be further edited then executed.
|
||||
bind -s --preset -M default \# __fish_toggle_comment_commandline
|
||||
bind -s --preset -M visual \# __fish_toggle_comment_commandline
|
||||
bind -s --preset -M replace \# __fish_toggle_comment_commandline
|
||||
bind --preset -M default \# __fish_toggle_comment_commandline
|
||||
bind --preset -M visual \# __fish_toggle_comment_commandline
|
||||
bind --preset -M replace \# __fish_toggle_comment_commandline
|
||||
|
||||
# Set the cursor shape
|
||||
# After executing once, this will have defined functions listening for the variable.
|
||||
|
||||
@@ -86,7 +86,7 @@ function fish_prompt
|
||||
switch $fish_bind_mode
|
||||
case default
|
||||
set mode (set_color --bold red)N
|
||||
case operator
|
||||
case operator f F t T
|
||||
set mode (set_color --bold cyan)N
|
||||
case insert
|
||||
set mode (set_color --bold green)I
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
use crate::io::IoChain;
|
||||
use crate::parser::Parser;
|
||||
use crate::wutil::{FileId, INVALID_FILE_ID, file_id_for_path};
|
||||
use fish_widestring::{L, WExt, WString, wstr};
|
||||
use fish_widestring::{L, WExt as _, WString, wstr};
|
||||
use lru::LruCache;
|
||||
use rust_embed::RustEmbed;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
@@ -477,7 +477,7 @@ macro_rules! run {
|
||||
|
||||
fn touch_file(path: &wstr) {
|
||||
use nix::sys::stat::Mode;
|
||||
use std::io::Write;
|
||||
use std::io::Write as _;
|
||||
|
||||
let mut file = wopen_cloexec(
|
||||
path,
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
env::{
|
||||
EnvMode, Statuses,
|
||||
config_paths::ConfigPaths,
|
||||
environment::{EnvStack, Environment, env_init},
|
||||
environment::{EnvStack, Environment as _, env_init},
|
||||
},
|
||||
eprintf,
|
||||
event::{self, Event},
|
||||
@@ -480,7 +480,6 @@ fn throwing_main() -> i32 {
|
||||
}
|
||||
}
|
||||
features::set_from_string(opts.features.as_utfstr());
|
||||
fish::env_dispatch::read_terminfo_database(EnvStack::globals());
|
||||
proc_init();
|
||||
reader_init(true);
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
use super::prelude::*;
|
||||
use crate::{
|
||||
env::{EnvMode, Environment},
|
||||
env::{EnvMode, Environment as _},
|
||||
fds::{BEST_O_SEARCH, wopen_dir},
|
||||
parser::ParserEnvSetMode,
|
||||
path::path_apply_cdpath,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use super::prelude::*;
|
||||
use super::read::TokenOutputMode;
|
||||
use crate::ast::{self, Kind, Leaf};
|
||||
use crate::ast::{self, Kind, Leaf as _};
|
||||
use crate::common::{UnescapeFlags, UnescapeStringStyle, unescape_string};
|
||||
use crate::complete::Completion;
|
||||
use crate::expand::{ExpandFlags, ExpandResultCode, expand_string};
|
||||
@@ -15,8 +15,9 @@
|
||||
use crate::prelude::*;
|
||||
use crate::proc::is_interactive_session;
|
||||
use crate::reader::{
|
||||
commandline_get_state, commandline_set_buffer, commandline_set_search_field,
|
||||
reader_execute_readline_cmd, reader_showing_suggestion,
|
||||
JumpDirection, JumpPrecision, commandline_get_state, commandline_set_buffer,
|
||||
commandline_set_search_field, reader_execute_readline_cmd, reader_jump,
|
||||
reader_showing_suggestion,
|
||||
};
|
||||
use crate::tokenizer::{TOK_ACCEPT_UNFINISHED, TokenType, Tokenizer};
|
||||
use fish_wcstringutil::join_strings;
|
||||
@@ -262,6 +263,11 @@ pub fn commandline(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr])
|
||||
let mut showing_suggestion = false;
|
||||
|
||||
let mut override_buffer = None;
|
||||
let mut forward_jump = false;
|
||||
let mut backward_jump = false;
|
||||
let mut forward_jump_till = false;
|
||||
let mut backward_jump_till = false;
|
||||
let mut jump_target = None;
|
||||
|
||||
let short_options = L!("abijpctfxorhI:CBELSsP");
|
||||
let long_options: &[WOption] = &[
|
||||
@@ -292,6 +298,10 @@ pub fn commandline(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr])
|
||||
wopt(L!("search-field"), ArgType::NoArgument, '\x03'),
|
||||
wopt(L!("is-valid"), ArgType::NoArgument, '\x01'),
|
||||
wopt(L!("showing-suggestion"), ArgType::NoArgument, '\x04'),
|
||||
wopt(L!("forward-jump"), ArgType::RequiredArgument, '\x07'),
|
||||
wopt(L!("backward-jump"), ArgType::RequiredArgument, '\x08'),
|
||||
wopt(L!("forward-jump-till"), ArgType::RequiredArgument, '\x09'),
|
||||
wopt(L!("backward-jump-till"), ArgType::RequiredArgument, '\x0a'),
|
||||
];
|
||||
|
||||
let mut w = WGetopter::new(short_options, long_options, args);
|
||||
@@ -341,6 +351,22 @@ pub fn commandline(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr])
|
||||
'\x03' => search_field_mode = true,
|
||||
'\x01' => is_valid = true,
|
||||
'\x04' => showing_suggestion = true,
|
||||
'\x07' => {
|
||||
forward_jump = true;
|
||||
jump_target = Some(w.woptarg.unwrap().to_owned());
|
||||
}
|
||||
'\x08' => {
|
||||
backward_jump = true;
|
||||
jump_target = Some(w.woptarg.unwrap().to_owned());
|
||||
}
|
||||
'\x09' => {
|
||||
forward_jump_till = true;
|
||||
jump_target = Some(w.woptarg.unwrap().to_owned());
|
||||
}
|
||||
'\x0a' => {
|
||||
backward_jump_till = true;
|
||||
jump_target = Some(w.woptarg.unwrap().to_owned());
|
||||
}
|
||||
'h' => {
|
||||
builtin_print_help(parser, streams, cmd);
|
||||
return Ok(SUCCESS);
|
||||
@@ -360,6 +386,27 @@ pub fn commandline(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr])
|
||||
_ => panic!(),
|
||||
}
|
||||
}
|
||||
if forward_jump || forward_jump_till || backward_jump || backward_jump_till {
|
||||
let direction = if forward_jump || forward_jump_till {
|
||||
JumpDirection::Forward
|
||||
} else {
|
||||
JumpDirection::Backward
|
||||
};
|
||||
let precision = if forward_jump || backward_jump {
|
||||
JumpPrecision::To
|
||||
} else {
|
||||
JumpPrecision::Till
|
||||
};
|
||||
let target = jump_target.unwrap();
|
||||
let Some(target) = target.chars().next() else {
|
||||
return Err(STATUS_INVALID_ARGS);
|
||||
};
|
||||
return if reader_jump(direction, precision, target) {
|
||||
Ok(SUCCESS)
|
||||
} else {
|
||||
Err(STATUS_CMD_ERROR)
|
||||
};
|
||||
}
|
||||
|
||||
let positional_args = w.argv.len() - w.wopt_index;
|
||||
|
||||
|
||||
@@ -462,7 +462,7 @@ pub fn complete(parser: &Parser, streams: &mut IoStreams, argv: &mut [&wstr]) ->
|
||||
let mut errors = ParseErrorList::new();
|
||||
if detect_parse_errors(condition_string, Some(&mut errors), false).is_err() {
|
||||
for error in errors {
|
||||
let prefix = cmd.to_owned() + L!(": -n '") + &condition_string[..] + L!("': ");
|
||||
let prefix = cmd.to_owned() + L!(": -n '") + &condition_string[..] + L!("'");
|
||||
streams.err.appendln(&error.describe_with_prefix(
|
||||
condition_string,
|
||||
&prefix,
|
||||
@@ -475,11 +475,7 @@ pub fn complete(parser: &Parser, streams: &mut IoStreams, argv: &mut [&wstr]) ->
|
||||
}
|
||||
|
||||
if !comp.is_empty() {
|
||||
let mut prefix = WString::new();
|
||||
prefix.push_utfstr(cmd);
|
||||
prefix.push_str(": ");
|
||||
|
||||
if let Err(err_text) = detect_errors_in_argument_list(&comp, &prefix) {
|
||||
if let Err(err_text) = detect_errors_in_argument_list(&comp, cmd) {
|
||||
streams
|
||||
.err
|
||||
.appendln(&wgettext_fmt!("%s: %s: contains a syntax error", cmd, comp));
|
||||
|
||||
@@ -2,21 +2,23 @@
|
||||
|
||||
use std::ffi::OsStr;
|
||||
use std::fs;
|
||||
use std::io::{Read, Write};
|
||||
use std::os::unix::ffi::OsStrExt;
|
||||
use std::io::{Read, Write as _};
|
||||
use std::os::unix::ffi::OsStrExt as _;
|
||||
|
||||
use crate::locale::set_libc_locales;
|
||||
use crate::panic::panic_handler;
|
||||
|
||||
use super::prelude::*;
|
||||
use crate::ast::{self, AsNode, Ast, Kind, Leaf, Node, NodeVisitor, SourceRangeList, Traversal};
|
||||
use crate::ast::{
|
||||
self, AsNode as _, Ast, Kind, Leaf as _, Node, NodeVisitor, SourceRangeList, Traversal,
|
||||
};
|
||||
use crate::common::{
|
||||
PROGRAM_NAME, ReadExt, UnescapeFlags, UnescapeStringStyle, bytes2wcstring, get_program_name,
|
||||
osstr2wcstring, unescape_string, wcs2bytes,
|
||||
PROGRAM_NAME, ReadExt as _, UnescapeFlags, UnescapeStringStyle, bytes2wcstring,
|
||||
get_program_name, osstr2wcstring, unescape_string, wcs2bytes,
|
||||
};
|
||||
use crate::env::EnvStack;
|
||||
use crate::env::env_init;
|
||||
use crate::env::environment::Environment;
|
||||
use crate::env::environment::Environment as _;
|
||||
use crate::expand::INTERNAL_SEPARATOR;
|
||||
use crate::future_feature_flags;
|
||||
use crate::global_safety::RelaxedAtomicBool;
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
use crate::{
|
||||
builtins::shared::BUILTIN_ERR_UNKNOWN,
|
||||
common::{PROGRAM_NAME, get_program_name, osstr2wcstring, shell_modes},
|
||||
env::{EnvStack, Environment, env_init},
|
||||
env::{EnvStack, Environment as _, env_init},
|
||||
future_feature_flags,
|
||||
input_common::{
|
||||
CharEvent, ImplicitEvent, InputEventQueue, InputEventQueuer, KeyEvent, QueryResultEvent,
|
||||
match_key_event_to_key,
|
||||
CharEvent, ImplicitEvent, InputEventQueue, InputEventQueuer as _, KeyEvent,
|
||||
QueryResultEvent, match_key_event_to_key,
|
||||
},
|
||||
key::{Key, char_to_symbol},
|
||||
nix::isatty,
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
use crate::ast::BlockStatement;
|
||||
use crate::common::{valid_func_name, valid_var_name};
|
||||
use crate::complete::complete_add_wrapper;
|
||||
use crate::env::environment::Environment;
|
||||
use crate::env::environment::Environment as _;
|
||||
use crate::env::is_read_only;
|
||||
use crate::event::{self, EventDescription, EventHandler};
|
||||
use crate::function;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
use crate::proc::{HAVE_PROC_STAT, Job, clock_ticks_to_seconds, proc_get_jiffies};
|
||||
use crate::wutil::fish_wcstoi;
|
||||
use fish_wgetopt::{ArgType, WGetopter, WOption, wopt};
|
||||
use fish_widestring::{L, WExt, WString, wstr};
|
||||
use fish_widestring::{L, WExt as _, WString, wstr};
|
||||
use std::num::NonZeroU32;
|
||||
|
||||
/// Print modes for the jobs builtin.
|
||||
@@ -43,7 +43,7 @@ fn cpu_use(j: &Job) -> f64 {
|
||||
fn builtin_jobs_print(j: &Job, mode: JobsPrintMode, header: bool, streams: &mut IoStreams) {
|
||||
let pgid = match j.get_pgid() {
|
||||
Some(pgid) => pgid.to_string(),
|
||||
None => "-".to_string(),
|
||||
None => "-".to_owned(),
|
||||
};
|
||||
|
||||
let mut out = WString::new();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use crate::env::environment::Environment;
|
||||
use crate::env::environment::Environment as _;
|
||||
use std::fs::Metadata;
|
||||
use std::os::unix::prelude::{FileTypeExt, MetadataExt};
|
||||
use std::os::unix::prelude::{FileTypeExt as _, MetadataExt as _};
|
||||
use std::time::SystemTime;
|
||||
|
||||
use super::prelude::*;
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
wcstoi::{Options as WcstoiOpts, wcstoi_partial},
|
||||
wstr_offset_in,
|
||||
};
|
||||
use fish_printf::{ToArg, sprintf_locale};
|
||||
use fish_printf::{ToArg as _, sprintf_locale};
|
||||
use fish_widestring::{decode_byte_from_char, encode_byte_to_char};
|
||||
|
||||
/// Return true if `c` is an octal digit.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
use errno::errno;
|
||||
|
||||
use super::prelude::*;
|
||||
use crate::{env::Environment, wutil::wrealpath};
|
||||
use crate::{env::Environment as _, wutil::wrealpath};
|
||||
|
||||
// The pwd builtin. Respect -P to resolve symbolic links. Respect -L to not do that (the default).
|
||||
const short_options: &wstr = L!("LPh");
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
use crate::wutil;
|
||||
use fish_util::get_seeded_rng;
|
||||
use rand::rngs::SmallRng;
|
||||
use rand::{Rng, RngCore};
|
||||
use rand::{Rng as _, RngCore as _};
|
||||
use std::sync::{LazyLock, Mutex};
|
||||
|
||||
static RNG: LazyLock<Mutex<SmallRng>> =
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
use crate::common::unescape_string;
|
||||
use crate::common::valid_var_name;
|
||||
use crate::env::EnvMode;
|
||||
use crate::env::Environment;
|
||||
use crate::env::Environment as _;
|
||||
use crate::env::READ_BYTE_LIMIT;
|
||||
use crate::env::{EnvVar, EnvVarFlags};
|
||||
use crate::input_common::DecodeState;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
use errno::errno;
|
||||
|
||||
use super::prelude::*;
|
||||
use crate::env::Environment;
|
||||
use crate::env::Environment as _;
|
||||
use crate::{
|
||||
path::path_apply_working_directory,
|
||||
wutil::{normalize_path, wrealpath},
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
use super::prelude::*;
|
||||
use crate::common::bytes2wcstring;
|
||||
use crate::screen::{is_dumb, only_grayscale};
|
||||
use crate::terminal::{Outputter, use_terminfo};
|
||||
use crate::terminal::Outputter;
|
||||
use crate::text_face::{
|
||||
self, PrintColorsArgs, SpecifiedTextFace, TextFace, TextStyling, parse_text_face_and_options,
|
||||
};
|
||||
@@ -63,7 +63,7 @@ pub fn set_color(parser: &Parser, streams: &mut IoStreams, argv: &mut [&wstr]) -
|
||||
|
||||
use text_face::ParseError::*;
|
||||
use text_face::ParsedArgs::*;
|
||||
let (specified_face, is_reset) =
|
||||
let (specified_face, with_reset) =
|
||||
match parse_text_face_and_options(argv, /*is_builtin=*/ true) {
|
||||
Ok(SetFace(face)) => (face, false),
|
||||
Ok(ResetFace) => (SpecifiedTextFace::default(), true),
|
||||
@@ -126,19 +126,18 @@ pub fn set_color(parser: &Parser, streams: &mut IoStreams, argv: &mut [&wstr]) -
|
||||
|
||||
// Note that for historical reasons "set_color normal" reset all colors/attributes. So does
|
||||
// "set_color reset" (undocumented).
|
||||
if is_reset {
|
||||
outp.reset_text_face();
|
||||
}
|
||||
|
||||
outp.set_text_face_no_magic(TextFace::new(
|
||||
specified_face.fg.unwrap_or(Color::None),
|
||||
specified_face.bg.unwrap_or(Color::None),
|
||||
specified_face.underline_color.unwrap_or(Color::None),
|
||||
specified_face.style.unwrap_or_default(),
|
||||
));
|
||||
outp.set_text_face_no_magic(
|
||||
TextFace::new(
|
||||
specified_face.fg.unwrap_or(Color::None),
|
||||
specified_face.bg.unwrap_or(Color::None),
|
||||
specified_face.underline_color.unwrap_or(Color::None),
|
||||
specified_face.style.unwrap_or_default(),
|
||||
),
|
||||
with_reset,
|
||||
);
|
||||
|
||||
if specified_face.fg.is_some() && outp.contents().is_empty() {
|
||||
assert!(is_dumb() || only_grayscale() || use_terminfo());
|
||||
assert!(is_dumb() || only_grayscale());
|
||||
// We need to do *something* or the lack of any output messes up
|
||||
// when the cartesian product here would make "foo" disappear:
|
||||
// $ echo (set_color foo)bar
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
use errno::errno;
|
||||
use fish_common::assert_sorted_by_name;
|
||||
use fish_widestring::L;
|
||||
use std::io::{BufRead, BufReader, Read};
|
||||
use std::io::{BufRead as _, BufReader, Read as _};
|
||||
|
||||
pub type BuiltinCmd = fn(&Parser, &mut IoStreams, &mut [&wstr]) -> BuiltinResult;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use std::os::fd::AsRawFd;
|
||||
use std::os::fd::AsRawFd as _;
|
||||
|
||||
use crate::{
|
||||
common::{FilenameRef, escape},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use super::string;
|
||||
use crate::builtins::shared::BuiltinResultExt;
|
||||
use crate::builtins::shared::BuiltinResultExt as _;
|
||||
use crate::io::IoChain;
|
||||
use crate::io::{IoStreams, OutputStream, StringOutputStream};
|
||||
use crate::prelude::*;
|
||||
|
||||
@@ -24,7 +24,7 @@ pub mod common {
|
||||
pub const DATA: libc::c_int = libc::RLIMIT_DATA as _;
|
||||
pub const FSIZE: libc::c_int = libc::RLIMIT_FSIZE as _;
|
||||
cfg_if!(
|
||||
if #[cfg(cygwin)] {
|
||||
if #[cfg(any(cygwin, target_os = "illumos"))] {
|
||||
pub const MEMLOCK: libc::c_int = -1;
|
||||
} else {
|
||||
pub const MEMLOCK: libc::c_int = libc::RLIMIT_MEMLOCK as _;
|
||||
@@ -34,7 +34,7 @@ pub mod common {
|
||||
pub const STACK: libc::c_int = libc::RLIMIT_STACK as _;
|
||||
pub const CPU: libc::c_int = libc::RLIMIT_CPU as _;
|
||||
cfg_if!(
|
||||
if #[cfg(cygwin)] {
|
||||
if #[cfg(any(cygwin, target_os = "illumos"))] {
|
||||
pub const NPROC: libc::c_int = -1;
|
||||
} else {
|
||||
pub const NPROC: libc::c_int = libc::RLIMIT_NPROC as _;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
use crate::key;
|
||||
use crate::parse_util::escape_string_with_quote;
|
||||
use crate::prelude::*;
|
||||
use crate::terminal::Output;
|
||||
use crate::terminal::Outputter;
|
||||
use crate::termsize::Termsize;
|
||||
use crate::wildcard::{ANY_CHAR, ANY_STRING, ANY_STRING_RECURSIVE};
|
||||
use crate::wutil::fish_iswalnum;
|
||||
@@ -1088,16 +1088,16 @@ pub fn valid_func_name(name: &wstr) -> bool {
|
||||
}
|
||||
|
||||
// Output writes always succeed; this adapter allows us to use it in a write-like macro.
|
||||
struct OutputWriteAdapter<'a, T: Output>(&'a mut T);
|
||||
struct OutputterWriteAdapter<'a>(&'a mut Outputter);
|
||||
|
||||
impl<'a, T: Output> std::fmt::Write for OutputWriteAdapter<'a, T> {
|
||||
impl<'a> std::fmt::Write for OutputterWriteAdapter<'a> {
|
||||
fn write_str(&mut self, s: &str) -> std::fmt::Result {
|
||||
self.0.write_bytes(s.as_bytes());
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, T: Output> std::io::Write for OutputWriteAdapter<'a, T> {
|
||||
impl<'a> std::io::Write for OutputterWriteAdapter<'a> {
|
||||
fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
|
||||
self.0.write_bytes(buf);
|
||||
Ok(buf.len())
|
||||
@@ -1107,8 +1107,8 @@ fn flush(&mut self) -> std::io::Result<()> {
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn do_write_to_output(writer: &mut impl Output, args: std::fmt::Arguments<'_>) {
|
||||
let mut adapter = OutputWriteAdapter(writer);
|
||||
pub(crate) fn do_write_to_output(writer: &mut Outputter, args: std::fmt::Arguments<'_>) {
|
||||
let mut adapter = OutputterWriteAdapter(writer);
|
||||
std::fmt::write(&mut adapter, args).unwrap();
|
||||
}
|
||||
|
||||
@@ -1394,7 +1394,7 @@ mod tests {
|
||||
};
|
||||
use fish_util::get_seeded_rng;
|
||||
use fish_widestring::{ENCODE_DIRECT_BASE, L, WString, wstr};
|
||||
use rand::{Rng, RngCore};
|
||||
use rand::{Rng as _, RngCore as _};
|
||||
use std::fmt::Write as _;
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
string_prefixes_string_case_insensitive, string_suffixes_string_case_insensitive,
|
||||
strip_executable_suffix,
|
||||
};
|
||||
use fish_widestring::WExt;
|
||||
use fish_widestring::WExt as _;
|
||||
|
||||
// Completion description strings, mostly for different types of files, such as sockets, block
|
||||
// devices, etc.
|
||||
@@ -2634,7 +2634,7 @@ mod tests {
|
||||
};
|
||||
use crate::abbrs::{self, Abbreviation, with_abbrs_mut};
|
||||
use crate::common::str2wcstring;
|
||||
use crate::env::{EnvMode, EnvSetMode, Environment};
|
||||
use crate::env::{EnvMode, EnvSetMode, Environment as _};
|
||||
use crate::io::IoChain;
|
||||
use crate::operation_context::{
|
||||
EXPANSION_LIMIT_BACKGROUND, EXPANSION_LIMIT_DEFAULT, OperationContext, no_cancel,
|
||||
|
||||
2
src/env/config_paths.rs
vendored
2
src/env/config_paths.rs
vendored
@@ -2,7 +2,7 @@
|
||||
use crate::{flog, flogf};
|
||||
use fish_build_helper::workspace_root;
|
||||
use std::ffi::OsStr;
|
||||
use std::os::unix::ffi::OsStrExt;
|
||||
use std::os::unix::ffi::OsStrExt as _;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::sync::OnceLock;
|
||||
|
||||
|
||||
14
src/env/environment.rs
vendored
14
src/env/environment.rs
vendored
@@ -30,7 +30,7 @@
|
||||
use fish_wcstringutil::join_strings;
|
||||
use libc::c_int;
|
||||
use nix::{
|
||||
NixPath,
|
||||
NixPath as _,
|
||||
unistd::{Uid, User, gethostname},
|
||||
};
|
||||
use std::collections::HashMap;
|
||||
@@ -517,7 +517,15 @@ fn setup_user(global_exported_mode: EnvSetMode, vars: &EnvStack) {
|
||||
|
||||
pub(crate) static FALLBACK_PATH: LazyLock<&[WString]> = LazyLock::new(|| {
|
||||
// _CS_PATH: colon-separated paths to find POSIX utilities. Same as USER_CS_PATH.
|
||||
let cs_path = libc::_CS_PATH;
|
||||
// Fix until rust-lang/libc#4956 is merged
|
||||
cfg_if::cfg_if!(
|
||||
if #[cfg(target_os = "illumos")] {
|
||||
// See https://github.com/illumos/illumos-gate/blob/af641d205ecf080be0d900f89c4f3d2adb84f33f/usr/src/uts/common/sys/unistd.h#L50
|
||||
let cs_path: c_int = 65;
|
||||
} else {
|
||||
let cs_path = libc::_CS_PATH;
|
||||
}
|
||||
);
|
||||
|
||||
let buf_size = unsafe { libc::confstr(cs_path, std::ptr::null_mut(), 0) };
|
||||
let paths: Vec<WString> = if buf_size > 0 {
|
||||
@@ -790,7 +798,7 @@ pub fn env_init(paths: Option<&ConfigPaths>, do_uvars: bool, default_paths: bool
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::{EnvMode, EnvStack, Environment};
|
||||
use super::{EnvMode, EnvStack, Environment as _};
|
||||
use crate::env::EnvSetMode;
|
||||
use crate::prelude::*;
|
||||
use crate::tests::prelude::*;
|
||||
|
||||
2
src/env/var.rs
vendored
2
src/env/var.rs
vendored
@@ -320,7 +320,7 @@ pub fn is_read_only(name: &wstr) -> bool {
|
||||
mod tests {
|
||||
use super::{EnvMode, EnvVar, EnvVarFlags};
|
||||
use crate::env::EnvSetMode;
|
||||
use crate::env::environment::{EnvStack, Environment};
|
||||
use crate::env::environment::{EnvStack, Environment as _};
|
||||
use crate::prelude::*;
|
||||
use crate::tests::prelude::*;
|
||||
use assert_matches::assert_matches;
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
use crate::common::init_special_chars_once;
|
||||
use crate::complete::complete_invalidate_path;
|
||||
use crate::env::{DEFAULT_READ_BYTE_LIMIT, READ_BYTE_LIMIT};
|
||||
use crate::env::{EnvMode, EnvStack, Environment, setenv_lock, unsetenv_lock};
|
||||
use crate::env::{EnvMode, EnvStack, Environment as _, setenv_lock, unsetenv_lock};
|
||||
use crate::flog::flog;
|
||||
use crate::function;
|
||||
use crate::input_common::{update_wait_on_escape_ms, update_wait_on_sequence_key_ms};
|
||||
use crate::locale::{invalidate_numeric_locale, set_libc_locales};
|
||||
use crate::prelude::*;
|
||||
@@ -11,14 +12,10 @@
|
||||
reader_current_data, reader_schedule_prompt_repaint, reader_set_autosuggestion_enabled,
|
||||
reader_set_transient_prompt,
|
||||
};
|
||||
use crate::screen::{
|
||||
IS_DUMB, LAYOUT_CACHE_SHARED, ONLY_GRAYSCALE, screen_set_midnight_commander_hack,
|
||||
};
|
||||
use crate::screen::{IS_DUMB, ONLY_GRAYSCALE, screen_set_midnight_commander_hack};
|
||||
use crate::terminal::ColorSupport;
|
||||
use crate::terminal::use_terminfo;
|
||||
use crate::tty_handoff::xtversion;
|
||||
use crate::wutil::fish_wcstoi;
|
||||
use crate::{function, terminal};
|
||||
use fish_wcstringutil::{bool_from_string, string_prefixes_string};
|
||||
use std::collections::HashMap;
|
||||
use std::sync::atomic::{AtomicBool, Ordering};
|
||||
@@ -35,11 +32,6 @@
|
||||
L!("LOCPATH"),
|
||||
];
|
||||
|
||||
#[rustfmt::skip]
|
||||
const CURSES_VARIABLES: [&wstr; 3] = [
|
||||
L!("TERM"), L!("TERMINFO"), L!("TERMINFO_DIRS")
|
||||
];
|
||||
|
||||
/// Whether to use `posix_spawn()` when possible.
|
||||
static USE_POSIX_SPAWN: AtomicBool = AtomicBool::new(false);
|
||||
|
||||
@@ -58,9 +50,7 @@ macro_rules! vars {
|
||||
table.add_anon(name, vars!(handle_locale_change));
|
||||
}
|
||||
|
||||
for name in CURSES_VARIABLES {
|
||||
table.add_anon(name, handle_term_change);
|
||||
}
|
||||
table.add_anon(L!("TERM"), handle_term_change);
|
||||
|
||||
table.add(L!("TZ"), handle_tz_change);
|
||||
table.add_anon(L!("COLORTERM"), handle_fish_term_change);
|
||||
@@ -337,7 +327,6 @@ fn handle_locale_change(vars: &EnvStack) {
|
||||
fn handle_term_change(vars: &EnvStack, suppress_repaint: bool) {
|
||||
guess_emoji_width(vars);
|
||||
init_terminal(vars);
|
||||
read_terminfo_database(vars);
|
||||
if !suppress_repaint {
|
||||
reader_schedule_prompt_repaint();
|
||||
}
|
||||
@@ -415,7 +404,7 @@ fn run_inits(vars: &EnvStack) {
|
||||
/// Updates our idea of whether we support term256 and term24bit (see issue #10222).
|
||||
fn update_fish_color_support(vars: &EnvStack) {
|
||||
// Detect or infer term256 support. If fish_term256 is set, we respect it. Otherwise, infer it
|
||||
// from $TERM or use terminfo.
|
||||
// from $TERM.
|
||||
|
||||
let term = vars.get_unless_empty(L!("TERM"));
|
||||
let term = term.as_ref().map_or(L!(""), |term| &term.as_list()[0]);
|
||||
@@ -514,32 +503,6 @@ fn init_terminal(vars: &EnvStack) {
|
||||
update_fish_color_support(vars);
|
||||
}
|
||||
|
||||
pub fn read_terminfo_database(vars: &EnvStack) {
|
||||
if !use_terminfo() {
|
||||
return;
|
||||
}
|
||||
|
||||
// The current process' environment needs to be modified because the terminfo crate will
|
||||
// read these variables
|
||||
for var_name in CURSES_VARIABLES {
|
||||
if let Some(value) = vars
|
||||
.getf_unless_empty(var_name, EnvMode::EXPORT)
|
||||
.map(|v| v.as_string())
|
||||
{
|
||||
flog!(term_support, "curses var", var_name, "=", value);
|
||||
setenv_lock(var_name, &value, true);
|
||||
} else {
|
||||
flog!(term_support, "curses var", var_name, "is missing or empty");
|
||||
unsetenv_lock(var_name);
|
||||
}
|
||||
}
|
||||
|
||||
terminal::setup();
|
||||
|
||||
// Invalidate the cached escape sequences since they may no longer be valid.
|
||||
LAYOUT_CACHE_SHARED.lock().unwrap().clear();
|
||||
}
|
||||
|
||||
/// Initialize the locale subsystem
|
||||
fn init_locale(vars: &EnvStack) {
|
||||
let _guard = crate::locale::LOCALE_LOCK.lock().unwrap();
|
||||
|
||||
@@ -9,11 +9,12 @@
|
||||
use crate::wutil::{FileId, INVALID_FILE_ID, file_id_for_file, file_id_for_path_narrow, wrealpath};
|
||||
use fish_wcstringutil::{LineIterator, join_strings};
|
||||
use fish_widestring::decode_byte_from_char;
|
||||
use itertools::Itertools as _;
|
||||
use std::collections::HashSet;
|
||||
use std::collections::hash_map::Entry;
|
||||
use std::ffi::CString;
|
||||
use std::fs::File;
|
||||
use std::io::{Read, Write};
|
||||
use std::io::{Read as _, Write as _};
|
||||
use std::mem::MaybeUninit;
|
||||
|
||||
/// Callback data, reflecting a change in universal variables.
|
||||
@@ -317,21 +318,20 @@ fn serialize_with_vars(vars: &VarTable) -> Vec<u8> {
|
||||
contents.extend_from_slice(UVARS_VERSION_3_0);
|
||||
contents.push(b'\n');
|
||||
|
||||
// Preserve legacy behavior by sorting the values first
|
||||
let mut cloned: Vec<(&wstr, &EnvVar)> =
|
||||
vars.iter().map(|(key, var)| (key.as_ref(), var)).collect();
|
||||
cloned.sort_by(|(lkey, _), (rkey, _)| lkey.cmp(rkey));
|
||||
vars.iter()
|
||||
// Preserve legacy behavior by sorting the values first
|
||||
.sorted_by_key(|(k, _)| *k)
|
||||
.for_each(|(k, v)| {
|
||||
// Append the entry. Note that append_file_entry may fail,
|
||||
// but that only affects one variable; soldier on.
|
||||
append_file_entry(
|
||||
v.get_flags(),
|
||||
k,
|
||||
&encode_serialized(v.as_list()),
|
||||
&mut contents,
|
||||
);
|
||||
});
|
||||
|
||||
for (key, var) in cloned {
|
||||
// Append the entry. Note that append_file_entry may fail, but that only affects one
|
||||
// variable; soldier on.
|
||||
append_file_entry(
|
||||
var.get_flags(),
|
||||
key,
|
||||
&encode_serialized(var.as_list()),
|
||||
&mut contents,
|
||||
);
|
||||
}
|
||||
contents
|
||||
}
|
||||
|
||||
|
||||
@@ -380,7 +380,7 @@ pub fn get_desc(parser: &Parser, evt: &Event) -> WString {
|
||||
format!("signal handler for {} ({})", signal.name(), signal.desc(),)
|
||||
}
|
||||
EventDescription::Variable { name } => format!("handler for variable '{name}'"),
|
||||
EventDescription::ProcessExit { pid: None } => "exit handler for any process".to_string(),
|
||||
EventDescription::ProcessExit { pid: None } => "exit handler for any process".to_owned(),
|
||||
EventDescription::ProcessExit { pid: Some(pid) } => {
|
||||
format!("exit handler for process {pid}")
|
||||
}
|
||||
@@ -392,11 +392,11 @@ pub fn get_desc(parser: &Parser, evt: &Event) -> WString {
|
||||
format!("exit handler for job with pid {pid}")
|
||||
}
|
||||
} else {
|
||||
"exit handler for any job".to_string()
|
||||
"exit handler for any job".to_owned()
|
||||
}
|
||||
}
|
||||
EventDescription::CallerExit { .. } => {
|
||||
"exit handler for command substitution caller".to_string()
|
||||
"exit handler for command substitution caller".to_owned()
|
||||
}
|
||||
EventDescription::Generic { param } => format!("handler for generic event '{param}'"),
|
||||
EventDescription::Any => unreachable!(),
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
ScopeGuard, bytes2wcstring, exit_without_destructors, truncate_at_nul, wcs2bytes, wcs2zstring,
|
||||
write_loop,
|
||||
};
|
||||
use crate::env::{EnvMode, EnvSetMode, EnvStack, Environment, READ_BYTE_LIMIT, Statuses};
|
||||
use crate::env::{EnvMode, EnvSetMode, EnvStack, Environment as _, READ_BYTE_LIMIT, Statuses};
|
||||
#[cfg(have_posix_spawn)]
|
||||
use crate::env_dispatch::use_posix_spawn;
|
||||
use crate::fds::{
|
||||
@@ -47,7 +47,7 @@
|
||||
use crate::tty_handoff::TtyHandoff;
|
||||
use crate::wutil::{fish_wcstol, perror};
|
||||
use errno::{errno, set_errno};
|
||||
use fish_widestring::ToWString;
|
||||
use fish_widestring::ToWString as _;
|
||||
use libc::{
|
||||
EACCES, ENOENT, ENOEXEC, ENOTDIR, EPIPE, EXIT_FAILURE, EXIT_SUCCESS, STDERR_FILENO,
|
||||
STDIN_FILENO, STDOUT_FILENO,
|
||||
@@ -56,10 +56,10 @@
|
||||
use nix::sys::stat;
|
||||
use nix::unistd::getpgrp;
|
||||
use std::ffi::CStr;
|
||||
use std::io::{Read, Write};
|
||||
use std::io::{Read as _, Write as _};
|
||||
use std::mem::MaybeUninit;
|
||||
use std::num::NonZeroU32;
|
||||
use std::os::fd::{AsRawFd, FromRawFd, OwnedFd, RawFd};
|
||||
use std::os::fd::{AsRawFd as _, FromRawFd as _, OwnedFd, RawFd};
|
||||
use std::slice;
|
||||
use std::sync::{
|
||||
Arc, OnceLock,
|
||||
|
||||
@@ -466,8 +466,8 @@ fn drop(&mut self) {
|
||||
mod tests {
|
||||
use crate::portable_atomic::AtomicU64;
|
||||
use std::fs::File;
|
||||
use std::io::Write;
|
||||
use std::os::fd::{AsRawFd, OwnedFd};
|
||||
use std::io::Write as _;
|
||||
use std::os::fd::{AsRawFd as _, OwnedFd};
|
||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||
use std::sync::{Arc, Barrier, Mutex};
|
||||
use std::thread;
|
||||
|
||||
@@ -320,7 +320,7 @@ mod tests {
|
||||
use super::{BorrowedFdFile, FIRST_HIGH_FD, make_autoclose_pipes};
|
||||
use crate::tests::prelude::*;
|
||||
use libc::{F_GETFD, FD_CLOEXEC};
|
||||
use std::os::fd::{AsRawFd, FromRawFd};
|
||||
use std::os::fd::{AsRawFd as _, FromRawFd as _};
|
||||
|
||||
#[test]
|
||||
#[serial]
|
||||
|
||||
@@ -222,7 +222,7 @@ macro_rules! flog {
|
||||
($category:ident, $($elem:expr),+ $(,)*) => {
|
||||
if $crate::flog::categories::$category.enabled.load(std::sync::atomic::Ordering::Relaxed) {
|
||||
#[allow(unused_imports)]
|
||||
use $crate::{flog::{FloggableDisplay, FloggableDebug}};
|
||||
use $crate::{flog::{FloggableDisplay as _, FloggableDebug as _}};
|
||||
let mut output: Vec<u8> = Vec::new();
|
||||
output.extend($crate::flog::categories::$category.name.to_flog_str());
|
||||
output.push(b':');
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
use libc::{O_RDONLY, pid_t};
|
||||
use std::ffi::CStr;
|
||||
use std::num::NonZeroU32;
|
||||
use std::os::unix::fs::MetadataExt;
|
||||
use std::os::unix::fs::MetadataExt as _;
|
||||
use std::time::Duration;
|
||||
|
||||
/// The number of times to try to call fork() before giving up.
|
||||
@@ -526,5 +526,23 @@ fn get_interpreter<'a>(command: &CStr, buffer: &'a mut [u8]) -> Option<&'a CStr>
|
||||
} else {
|
||||
return None;
|
||||
};
|
||||
Some(CStr::from_bytes_with_nul(&buffer[offset..idx.max(offset)]).unwrap())
|
||||
CStr::from_bytes_with_nul(&buffer[offset..idx.max(offset)]).ok()
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::get_interpreter;
|
||||
use std::ffi::CString;
|
||||
use std::os::unix::ffi::OsStrExt as _;
|
||||
|
||||
#[test]
|
||||
fn test_get_interpreter_returns_none_on_embedded_nul() {
|
||||
let script = fish_tempfile::new_file().unwrap();
|
||||
std::fs::write(script.path(), b"#!/bin/\0sh\n").unwrap();
|
||||
|
||||
let command = CString::new(script.path().as_os_str().as_bytes()).unwrap();
|
||||
let mut buffer = [0u8; 64];
|
||||
|
||||
assert!(get_interpreter(command.as_c_str(), &mut buffer).is_none());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ pub fn new(
|
||||
};
|
||||
|
||||
// Set our flags.
|
||||
let mut flags: i32 = 0;
|
||||
let mut flags = 0;
|
||||
flags |= libc::POSIX_SPAWN_SETSIGDEF;
|
||||
flags |= libc::POSIX_SPAWN_SETSIGMASK;
|
||||
if desired_pgid.is_some() {
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
ffi::OsString,
|
||||
fs::{File, OpenOptions},
|
||||
os::{
|
||||
fd::AsRawFd,
|
||||
unix::{ffi::OsStringExt, fs::MetadataExt},
|
||||
fd::AsRawFd as _,
|
||||
unix::{ffi::OsStringExt as _, fs::MetadataExt as _},
|
||||
},
|
||||
path::PathBuf,
|
||||
};
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// autoloading functions in the $fish_function_path. Actual function evaluation is taken care of by
|
||||
// the parser and to some degree the builtin handling library.
|
||||
|
||||
use crate::ast::{self, Node};
|
||||
use crate::ast::{self, Node as _};
|
||||
use crate::autoload::{Autoload, AutoloadResult};
|
||||
use crate::common::{FilenameRef, assert_sync, escape, valid_func_name};
|
||||
use crate::complete::complete_wrap_map;
|
||||
|
||||
@@ -131,9 +131,11 @@ pub struct FeatureMetadata {
|
||||
flag: FeatureFlag::IgnoreTerminfo,
|
||||
name: L!("ignore-terminfo"),
|
||||
groups: L!("4.1"),
|
||||
description: L!("do not look up $TERM in terminfo database"),
|
||||
description: L!(
|
||||
"do not look up $TERM in terminfo database (historical, can no longer be changed)"
|
||||
),
|
||||
default_value: true,
|
||||
read_only: false,
|
||||
read_only: true,
|
||||
},
|
||||
FeatureMetadata {
|
||||
flag: FeatureFlag::QueryTerm,
|
||||
@@ -204,20 +206,26 @@ pub fn set_from_string<'a>(str: impl Into<&'a wstr>) {
|
||||
|
||||
impl Features {
|
||||
const fn new() -> Self {
|
||||
Features {
|
||||
values: [
|
||||
AtomicBool::new(METADATA[0].default_value),
|
||||
AtomicBool::new(METADATA[1].default_value),
|
||||
AtomicBool::new(METADATA[2].default_value),
|
||||
AtomicBool::new(METADATA[3].default_value),
|
||||
AtomicBool::new(METADATA[4].default_value),
|
||||
AtomicBool::new(METADATA[5].default_value),
|
||||
AtomicBool::new(METADATA[6].default_value),
|
||||
AtomicBool::new(METADATA[7].default_value),
|
||||
AtomicBool::new(METADATA[8].default_value),
|
||||
AtomicBool::new(METADATA[9].default_value),
|
||||
],
|
||||
}
|
||||
// TODO: feature(const_array): use std::array::from_fn()
|
||||
use std::mem::{MaybeUninit, transmute};
|
||||
let values = {
|
||||
let mut data: [MaybeUninit<AtomicBool>; METADATA.len()] =
|
||||
[const { MaybeUninit::uninit() }; METADATA.len()];
|
||||
|
||||
let mut i = 0;
|
||||
while i < METADATA.len() {
|
||||
data[i].write(AtomicBool::new(METADATA[i].default_value));
|
||||
i += 1;
|
||||
}
|
||||
|
||||
// SAFETY: `data` is guaranteed initialized by the loop
|
||||
unsafe {
|
||||
transmute::<[MaybeUninit<AtomicBool>; METADATA.len()], [AtomicBool; METADATA.len()]>(
|
||||
data,
|
||||
)
|
||||
}
|
||||
};
|
||||
Features { values }
|
||||
}
|
||||
|
||||
fn test(&self, flag: FeatureFlag) -> bool {
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
use fish_wcstringutil::{
|
||||
string_prefixes_string, string_prefixes_string_case_insensitive, string_suffixes_string,
|
||||
};
|
||||
use fish_widestring::{L, WExt, WString, wstr};
|
||||
use fish_widestring::{L, WExt as _, WString, wstr};
|
||||
use libc::PATH_MAX;
|
||||
use nix::unistd::AccessFlags;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
@@ -435,7 +435,7 @@ mod tests {
|
||||
|
||||
use crate::redirection::RedirectionMode;
|
||||
use std::fs::{self, File, Permissions, create_dir_all};
|
||||
use std::os::unix::fs::PermissionsExt;
|
||||
use std::os::unix::fs::PermissionsExt as _;
|
||||
use std::path::PathBuf;
|
||||
|
||||
struct TempDirWithCtx {
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
use fish_color::Color;
|
||||
use fish_common::{ASCII_MAX, EXPAND_RESERVED_BASE, EXPAND_RESERVED_END};
|
||||
use fish_wcstringutil::string_prefixes_string;
|
||||
use fish_widestring::{L, WExt, WString, wstr};
|
||||
use fish_widestring::{L, WExt as _, WString, wstr};
|
||||
use std::collections::HashMap;
|
||||
use std::collections::hash_map::Entry;
|
||||
|
||||
@@ -1308,7 +1308,7 @@ pub struct HighlightSpec {
|
||||
mod tests {
|
||||
use super::{HighlightColorResolver, HighlightRole, HighlightSpec, highlight_shell};
|
||||
use crate::common::ScopeGuard;
|
||||
use crate::env::{EnvMode, EnvSetMode, Environment};
|
||||
use crate::env::{EnvMode, EnvSetMode, Environment as _};
|
||||
use crate::future_feature_flags::{self, FeatureFlag};
|
||||
use crate::highlight::parse_text_face_for_highlight;
|
||||
use crate::operation_context::{EXPANSION_LIMIT_BACKGROUND, OperationContext};
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
use std::{
|
||||
fs::File,
|
||||
io::Read,
|
||||
io::Read as _,
|
||||
ops::{Deref, DerefMut},
|
||||
os::fd::AsRawFd,
|
||||
os::fd::AsRawFd as _,
|
||||
time::{SystemTime, UNIX_EPOCH},
|
||||
};
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
collections::{BTreeMap, HashMap, HashSet},
|
||||
ffi::{CStr, CString},
|
||||
fs::File,
|
||||
io::{BufRead, BufWriter, Read, Write},
|
||||
io::{BufRead, BufWriter, Read as _, Write as _},
|
||||
mem::MaybeUninit,
|
||||
num::NonZeroUsize,
|
||||
ops::ControlFlow,
|
||||
@@ -41,10 +41,10 @@
|
||||
use bitflags::bitflags;
|
||||
use lru::LruCache;
|
||||
use nix::{fcntl::OFlag, sys::stat::Mode};
|
||||
use rand::Rng;
|
||||
use rand::Rng as _;
|
||||
|
||||
use crate::{
|
||||
ast::{self, Kind, Node},
|
||||
ast::{self, Kind, Node as _},
|
||||
common::{CancelChecker, UnescapeStringStyle, bytes2wcstring, unescape_string, valid_var_name},
|
||||
env::{EnvMode, EnvStack, Environment},
|
||||
expand::{ExpandFlags, expand_one},
|
||||
@@ -295,6 +295,9 @@ enum DeletionScope {
|
||||
struct HistoryImpl {
|
||||
/// The name of this list. Used for picking a suitable filename and for switching modes.
|
||||
name: WString,
|
||||
/// Optional custom directory for the history file. If None, uses path_get_data().
|
||||
/// Primarily for testing.
|
||||
custom_directory: Option<WString>,
|
||||
/// New items. Note that these are NOT discarded on save. We need to keep these around so we can
|
||||
/// distinguish between items in our history and items in the history of other shells that were
|
||||
/// started after we were started.
|
||||
@@ -333,7 +336,11 @@ fn history_file_path(&self) -> std::io::Result<Option<WString>> {
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
let Some(mut path) = path_get_data() else {
|
||||
let mut path = if let Some(custom_dir) = &self.custom_directory {
|
||||
custom_dir.clone()
|
||||
} else if let Some(data_path) = path_get_data() {
|
||||
data_path
|
||||
} else {
|
||||
return Err(std::io::Error::new(
|
||||
std::io::ErrorKind::NotFound,
|
||||
"Error obtaining data directory. This is a manually constructed error which does not indicate why this happened.",
|
||||
@@ -343,7 +350,11 @@ fn history_file_path(&self) -> std::io::Result<Option<WString>> {
|
||||
path.push('/');
|
||||
path.push_utfstr(&self.name);
|
||||
path.push_utfstr(L!("_history"));
|
||||
if let Some(canonicalized_path) = wrealpath(&path) {
|
||||
|
||||
// For custom directories, skip wrealpath since file may not exist yet
|
||||
if self.custom_directory.is_some() {
|
||||
Ok(Some(path))
|
||||
} else if let Some(canonicalized_path) = wrealpath(&path) {
|
||||
Ok(Some(canonicalized_path))
|
||||
} else {
|
||||
Err(std::io::Error::other(format!(
|
||||
@@ -736,9 +747,10 @@ fn save_unless_disabled(&mut self) {
|
||||
self.save(vacuum);
|
||||
}
|
||||
|
||||
fn new(name: WString) -> Self {
|
||||
fn new(name: WString, custom_directory: Option<WString>) -> Self {
|
||||
Self {
|
||||
name,
|
||||
custom_directory,
|
||||
new_items: vec![],
|
||||
first_unwritten_new_item_index: 0,
|
||||
has_pending_item: false,
|
||||
@@ -1210,18 +1222,26 @@ pub fn add_commandline(&self, s: WString) {
|
||||
imp.add(item, false, true);
|
||||
}
|
||||
|
||||
pub fn new(name: &wstr) -> Arc<Self> {
|
||||
Arc::new(Self(Mutex::new(HistoryImpl::new(name.to_owned()))))
|
||||
/// Creates a new History with a custom directory path.
|
||||
/// The history file will be stored at `{directory}/{name}_history`.
|
||||
/// If the directory is None, it will be stored at path_get_data().
|
||||
pub fn new(name: &wstr, directory: Option<WString>) -> Arc<Self> {
|
||||
Arc::new(Self(Mutex::new(HistoryImpl::new(
|
||||
name.to_owned(),
|
||||
directory,
|
||||
))))
|
||||
}
|
||||
|
||||
/// Returns history with the given name, creating it if necessary.
|
||||
/// Returns the history with the given name, creating it if necessary, using the default data directory.
|
||||
/// This uses the HISTORIES global collection. Note it is possible to create a history without
|
||||
/// placing it into this collection.
|
||||
pub fn with_name(name: &wstr) -> Arc<Self> {
|
||||
let mut histories = HISTORIES.lock().unwrap();
|
||||
|
||||
if let Some(hist) = histories.get(name) {
|
||||
Arc::clone(hist)
|
||||
} else {
|
||||
let hist = Self::new(name);
|
||||
let hist = Self::new(name, None);
|
||||
histories.insert(name.to_owned(), Arc::clone(&hist));
|
||||
hist
|
||||
}
|
||||
@@ -1786,21 +1806,19 @@ mod tests {
|
||||
History, HistoryItem, HistorySearch, PathList, PersistenceMode, SearchDirection,
|
||||
SearchFlags, SearchType, VACUUM_FREQUENCY,
|
||||
};
|
||||
use crate::common::{ESCAPE_TEST_CHAR, ScopeGuard, osstr2wcstring, wcs2bytes, wcs2osstring};
|
||||
use crate::common::{ESCAPE_TEST_CHAR, osstr2wcstring, wcs2bytes};
|
||||
use crate::env::{EnvMode, EnvSetMode, EnvStack};
|
||||
use crate::fs::{LockedFile, WriteMethod};
|
||||
use crate::path::path_get_data;
|
||||
use crate::prelude::*;
|
||||
use crate::tests::prelude::*;
|
||||
use fish_build_helper::workspace_root;
|
||||
use fish_wcstringutil::{string_prefixes_string, string_prefixes_string_case_insensitive};
|
||||
use rand::Rng;
|
||||
use rand::Rng as _;
|
||||
use rand::rngs::ThreadRng;
|
||||
use std::collections::VecDeque;
|
||||
use std::ffi::OsString;
|
||||
use std::io::BufReader;
|
||||
use std::sync::Arc;
|
||||
use std::time::UNIX_EPOCH;
|
||||
use std::time::{Duration, SystemTime};
|
||||
use std::time::{Duration, SystemTime, UNIX_EPOCH};
|
||||
|
||||
fn history_contains(history: &History, txt: &wstr) -> bool {
|
||||
for i in 1.. {
|
||||
@@ -1816,6 +1834,11 @@ fn history_contains(history: &History, txt: &wstr) -> bool {
|
||||
false
|
||||
}
|
||||
|
||||
// Helper to create a history with a custom directory, for testing.
|
||||
fn create_test_history(name: &wstr, custom_dir: &wstr) -> Arc<History> {
|
||||
History::new(name, Some(custom_dir.to_owned()))
|
||||
}
|
||||
|
||||
fn random_string(rng: &mut ThreadRng) -> WString {
|
||||
let mut result = WString::new();
|
||||
let max = rng.random_range(1..=32);
|
||||
@@ -1829,9 +1852,10 @@ fn random_string(rng: &mut ThreadRng) -> WString {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_history() {
|
||||
let _cleanup = test_init();
|
||||
let tmpdir = fish_tempfile::new_dir().unwrap();
|
||||
let hist_dir = osstr2wcstring(tmpdir.path());
|
||||
|
||||
macro_rules! test_history_matches {
|
||||
($search:expr, $expected:expr) => {
|
||||
let expected: Vec<&wstr> = $expected;
|
||||
@@ -1858,7 +1882,7 @@ macro_rules! test_history_matches {
|
||||
let nocase = SearchFlags::IGNORE_CASE;
|
||||
|
||||
// Populate a history.
|
||||
let history = History::with_name(L!("test_history"));
|
||||
let history = create_test_history(L!("test_history"), &hist_dir);
|
||||
history.clear();
|
||||
for s in items {
|
||||
history.add_commandline(s.to_owned());
|
||||
@@ -2010,9 +2034,9 @@ fn generate_history_lines(item_count: usize, idx: usize) -> Vec<WString> {
|
||||
result
|
||||
}
|
||||
|
||||
fn pound_on_history(item_count: usize, idx: usize) -> Arc<History> {
|
||||
fn write_history_entries(dir: &wstr, item_count: usize, idx: usize) -> Arc<History> {
|
||||
// Called in child thread to modify history.
|
||||
let hist = History::new(L!("race_test"));
|
||||
let hist = create_test_history(L!("race_test"), dir);
|
||||
let hist_lines = generate_history_lines(item_count, idx);
|
||||
for line in hist_lines {
|
||||
hist.add_commandline(line);
|
||||
@@ -2022,23 +2046,16 @@ fn pound_on_history(item_count: usize, idx: usize) -> Arc<History> {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_history_races() {
|
||||
let _cleanup = test_init();
|
||||
// Place history in a temp directory.
|
||||
let tmpdir = fish_tempfile::new_dir().unwrap();
|
||||
let hist_dir = osstr2wcstring(tmpdir.path());
|
||||
|
||||
let tmp_path = std::env::current_dir()
|
||||
.unwrap()
|
||||
.join("history-races-test-balloon");
|
||||
std::fs::write(&tmp_path, []).unwrap();
|
||||
let _cleanup = ScopeGuard::new((), |()| {
|
||||
std::fs::remove_file(&tmp_path).unwrap();
|
||||
});
|
||||
if LockedFile::new(
|
||||
crate::fs::LockingMode::Exclusive(WriteMethod::RenameIntoPlace),
|
||||
&osstr2wcstring(&tmp_path),
|
||||
)
|
||||
.is_err()
|
||||
{
|
||||
// Skip tests if we can't get an exclusive lock on a file in that directory.
|
||||
let tmp_balloon = tmpdir.path().join("history-races-test-balloon");
|
||||
std::fs::write(&tmp_balloon, []).unwrap();
|
||||
let mode = crate::fs::LockingMode::Exclusive(WriteMethod::RenameIntoPlace);
|
||||
if LockedFile::new(mode, &osstr2wcstring(&tmp_balloon)).is_err() {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2052,12 +2069,13 @@ fn test_history_races() {
|
||||
const ITEM_COUNT: usize = 256;
|
||||
|
||||
// Ensure history is clear.
|
||||
History::new(L!("race_test")).clear();
|
||||
create_test_history(L!("race_test"), &hist_dir).clear();
|
||||
|
||||
let mut children = Vec::with_capacity(RACE_COUNT);
|
||||
for i in 0..RACE_COUNT {
|
||||
let hist_dir = hist_dir.clone();
|
||||
children.push(std::thread::spawn(move || {
|
||||
pound_on_history(ITEM_COUNT, i);
|
||||
write_history_entries(&hist_dir, ITEM_COUNT, i);
|
||||
}));
|
||||
}
|
||||
|
||||
@@ -2074,7 +2092,7 @@ fn test_history_races() {
|
||||
time_barrier();
|
||||
|
||||
// Ensure that we got sane, sorted results.
|
||||
let hist = History::new(L!("race_test"));
|
||||
let hist = create_test_history(L!("race_test"), &hist_dir);
|
||||
|
||||
// History is enumerated from most recent to least
|
||||
// Every item should be the last item in some array
|
||||
@@ -2128,25 +2146,26 @@ fn test_history_races() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_history_external_rewrites() {
|
||||
let _cleanup = test_init();
|
||||
// Place history in a temp directory.
|
||||
let tmpdir = fish_tempfile::new_dir().unwrap();
|
||||
let hist_dir = osstr2wcstring(tmpdir.path());
|
||||
|
||||
// Write some history to disk.
|
||||
{
|
||||
let hist = pound_on_history(VACUUM_FREQUENCY / 2, 0);
|
||||
let hist = write_history_entries(&hist_dir, VACUUM_FREQUENCY / 2, 0);
|
||||
hist.add_commandline("needle".into());
|
||||
hist.save();
|
||||
}
|
||||
std::thread::sleep(Duration::from_secs(1));
|
||||
|
||||
// Read history from disk.
|
||||
let hist = History::new(L!("race_test"));
|
||||
let hist = create_test_history(L!("race_test"), &hist_dir);
|
||||
assert_eq!(hist.item_at_index(1).unwrap().str(), "needle");
|
||||
|
||||
// Add items until we rewrite the file.
|
||||
// In practice this might be done by another shell.
|
||||
pound_on_history(VACUUM_FREQUENCY, 0);
|
||||
write_history_entries(&hist_dir, VACUUM_FREQUENCY, 0);
|
||||
|
||||
for i in 1.. {
|
||||
if hist.item_at_index(i).unwrap().str() == "needle" {
|
||||
@@ -2156,16 +2175,21 @@ fn test_history_external_rewrites() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_history_merge() {
|
||||
let _cleanup = test_init();
|
||||
let tmpdir = fish_tempfile::new_dir().unwrap();
|
||||
let hist_dir = osstr2wcstring(tmpdir.path());
|
||||
|
||||
// In a single fish process, only one history is allowed to exist with the given name But it's
|
||||
// common to have multiple history instances with the same name active in different processes,
|
||||
// e.g. when you have multiple shells open. We try to get that right and merge all their history
|
||||
// together. Test that case.
|
||||
const COUNT: usize = 3;
|
||||
let name = L!("merge_test");
|
||||
let hists = [History::new(name), History::new(name), History::new(name)];
|
||||
let hists = [
|
||||
create_test_history(name, &hist_dir),
|
||||
create_test_history(name, &hist_dir),
|
||||
create_test_history(name, &hist_dir),
|
||||
];
|
||||
let texts = [L!("History 1"), L!("History 2"), L!("History 3")];
|
||||
let alt_texts = [
|
||||
L!("History Alt 1"),
|
||||
@@ -2204,7 +2228,7 @@ fn test_history_merge() {
|
||||
// Make a new history. It should contain everything. The time_barrier() is so that the timestamp
|
||||
// is newer, since we only pick up items whose timestamp is before the birth stamp.
|
||||
time_barrier();
|
||||
let everything = History::new(name);
|
||||
let everything = create_test_history(name, &hist_dir);
|
||||
for text in texts {
|
||||
assert!(history_contains(&everything, text));
|
||||
}
|
||||
@@ -2265,10 +2289,13 @@ fn test_history_merge() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_history_path_detection() {
|
||||
let _cleanup = test_init();
|
||||
// Regression test for #7582.
|
||||
// Temporary directory for the history files.
|
||||
let hist_tmpdir = fish_tempfile::new_dir().unwrap();
|
||||
let hist_dir = Some(osstr2wcstring(hist_tmpdir.path()));
|
||||
|
||||
// Temporary directory for the files we will detect.
|
||||
let tmpdir = fish_tempfile::new_dir().unwrap();
|
||||
|
||||
// Place one valid file in the directory.
|
||||
@@ -2283,7 +2310,7 @@ fn test_history_path_detection() {
|
||||
test_vars.set_one(L!("PWD"), global_mode, wdir_path.clone());
|
||||
test_vars.set_one(L!("HOME"), global_mode, wdir_path.clone());
|
||||
|
||||
let history = History::with_name(L!("path_detection"));
|
||||
let history = History::new(L!("path_detection"), hist_dir);
|
||||
history.clear();
|
||||
assert_eq!(history.size(), 0);
|
||||
history.add_pending_with_file_detection(
|
||||
@@ -2369,30 +2396,31 @@ fn test_history_path_detection() {
|
||||
history.clear();
|
||||
}
|
||||
|
||||
fn install_sample_history(name: &wstr) {
|
||||
let path = path_get_data().expect("Failed to get data directory");
|
||||
fn install_sample_history(name: &wstr, hist_dir: &wstr) {
|
||||
let dst_hist_path: OsString = format!("{}/{}_history", hist_dir, name).into();
|
||||
std::fs::copy(
|
||||
workspace_root()
|
||||
.join("tests")
|
||||
.join(std::str::from_utf8(&wcs2bytes(name)).unwrap()),
|
||||
wcs2osstring(&(path + L!("/") + name + L!("_history"))),
|
||||
dst_hist_path,
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_history_formats() {
|
||||
let _cleanup = test_init();
|
||||
let tmpdir = fish_tempfile::new_dir().unwrap();
|
||||
let hist_dir = osstr2wcstring(tmpdir.path());
|
||||
|
||||
// Test inferring and reading legacy and bash history formats.
|
||||
let name = L!("history_sample_fish_2_0");
|
||||
install_sample_history(name);
|
||||
install_sample_history(name, &hist_dir);
|
||||
let expected: Vec<WString> = vec![
|
||||
"echo this has\\\nbackslashes".into(),
|
||||
"function foo\necho bar\nend".into(),
|
||||
"echo alpha".into(),
|
||||
];
|
||||
let test_history_imported = History::with_name(name);
|
||||
let test_history_imported = create_test_history(name, &hist_dir);
|
||||
assert_eq!(test_history_imported.get_history(), expected);
|
||||
test_history_imported.clear();
|
||||
|
||||
@@ -2411,16 +2439,16 @@ fn test_history_formats() {
|
||||
"history --help".into(),
|
||||
"echo foo".into(),
|
||||
];
|
||||
let test_history_imported_from_bash = History::with_name(L!("bash_import"));
|
||||
let test_history_imported_from_bash = create_test_history(L!("bash_import"), &hist_dir);
|
||||
let file = std::fs::File::open(workspace_root().join("tests/history_sample_bash")).unwrap();
|
||||
test_history_imported_from_bash.populate_from_bash(BufReader::new(file));
|
||||
assert_eq!(test_history_imported_from_bash.get_history(), expected);
|
||||
test_history_imported_from_bash.clear();
|
||||
|
||||
let name = L!("history_sample_corrupt1");
|
||||
install_sample_history(name);
|
||||
install_sample_history(name, &hist_dir);
|
||||
// We simply invoke get_string_representation. If we don't die, the test is a success.
|
||||
let test_history_imported_from_corrupted = History::with_name(name);
|
||||
let test_history_imported_from_corrupted = create_test_history(name, &hist_dir);
|
||||
let expected: Vec<WString> = vec![
|
||||
"no_newline_at_end_of_file".into(),
|
||||
"corrupt_prefix".into(),
|
||||
|
||||
33
src/input.rs
33
src/input.rs
@@ -13,7 +13,7 @@
|
||||
use fish_common::assert_sorted_by_name;
|
||||
use std::mem;
|
||||
use std::sync::{
|
||||
LazyLock, Mutex, MutexGuard,
|
||||
Mutex, MutexGuard,
|
||||
atomic::{AtomicU32, Ordering},
|
||||
};
|
||||
|
||||
@@ -162,6 +162,7 @@ const fn make_md(name: &'static wstr, code: ReadlineCmd) -> InputFunctionMetadat
|
||||
make_md(L!("forward-word"), ReadlineCmd::ForwardWordEmacs),
|
||||
make_md(L!("forward-word-end"), ReadlineCmd::ForwardWordEnd),
|
||||
make_md(L!("forward-word-vi"), ReadlineCmd::ForwardWordVi),
|
||||
make_md(L!("get-key"), ReadlineCmd::GetKey),
|
||||
make_md(L!("history-delete"), ReadlineCmd::HistoryDelete),
|
||||
make_md(L!("history-last-token-search-backward"), ReadlineCmd::HistoryLastTokenSearchBackward),
|
||||
make_md(L!("history-last-token-search-forward"), ReadlineCmd::HistoryLastTokenSearchForward),
|
||||
@@ -238,10 +239,18 @@ pub struct InputMappingSet {
|
||||
preset_mapping_list: Vec<InputMapping>,
|
||||
}
|
||||
|
||||
impl InputMappingSet {
|
||||
const fn new() -> Self {
|
||||
Self {
|
||||
mapping_list: Vec::new(),
|
||||
preset_mapping_list: Vec::new(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Access the singleton input mapping set.
|
||||
pub fn input_mappings() -> MutexGuard<'static, InputMappingSet> {
|
||||
static INPUT_MAPPINGS: LazyLock<Mutex<InputMappingSet>> =
|
||||
LazyLock::new(|| Mutex::new(InputMappingSet::default()));
|
||||
static INPUT_MAPPINGS: Mutex<InputMappingSet> = Mutex::new(InputMappingSet::new());
|
||||
INPUT_MAPPINGS.lock().unwrap()
|
||||
}
|
||||
|
||||
@@ -698,7 +707,9 @@ pub fn read_char(&mut self) -> CharEvent {
|
||||
let evt = self.readch();
|
||||
match evt {
|
||||
CharEvent::Readline(ref readline_event) => match readline_event.cmd {
|
||||
ReadlineCmd::SelfInsert | ReadlineCmd::SelfInsertNotFirst => {
|
||||
ReadlineCmd::SelfInsert
|
||||
| ReadlineCmd::SelfInsertNotFirst
|
||||
| ReadlineCmd::GetKey => {
|
||||
// Typically self-insert is generated by the generic (empty) binding.
|
||||
// However if it is generated by a real sequence, then insert that sequence.
|
||||
let seq = readline_event.seq.chars().map(CharEvent::from_char);
|
||||
@@ -721,6 +732,20 @@ pub fn read_char(&mut self) -> CharEvent {
|
||||
kevt.input_style = CharInputStyle::NotFirst;
|
||||
}
|
||||
}
|
||||
if readline_event.cmd == ReadlineCmd::GetKey {
|
||||
if let CharEvent::Key(kevt) = res {
|
||||
return CharEvent::Command(sprintf!(
|
||||
"set -g fish_key %s",
|
||||
escape(
|
||||
&kevt
|
||||
.key
|
||||
.codepoint_text()
|
||||
.map(|c| WString::from_chars(vec![c]))
|
||||
.unwrap_or_default()
|
||||
)
|
||||
));
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
ReadlineCmd::FuncAnd | ReadlineCmd::FuncOr => {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
WSL, bytes2wcstring, fish_reserved_codepoint, is_windows_subsystem_for_linux, read_blocked,
|
||||
shell_modes,
|
||||
};
|
||||
use crate::env::{EnvStack, Environment};
|
||||
use crate::env::{EnvStack, Environment as _};
|
||||
use crate::fd_readable_set::{FdReadableSet, Timeout};
|
||||
use crate::flog::{FloggableDebug, FloggableDisplay, flog};
|
||||
use crate::future_feature_flags::{FeatureFlag, test as feature_test};
|
||||
@@ -107,6 +107,7 @@ pub enum ReadlineCmd {
|
||||
HistoryLastTokenSearchForward,
|
||||
SelfInsert,
|
||||
SelfInsertNotFirst,
|
||||
GetKey,
|
||||
TransposeChars,
|
||||
TransposeWords,
|
||||
UpcaseWord,
|
||||
@@ -1776,7 +1777,7 @@ fn parse_hex_into(out: &mut [u8], hex: &[u8]) -> Option<()> {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::{
|
||||
CharEvent, InputEventQueue, InputEventQueuer, KeyEvent, KeyMatchQuality, ReadlineCmd,
|
||||
CharEvent, InputEventQueue, InputEventQueuer as _, KeyEvent, KeyMatchQuality, ReadlineCmd,
|
||||
match_key_event_to_key, parse_hex,
|
||||
};
|
||||
use crate::key::{Key, Modifiers};
|
||||
|
||||
10
src/io.rs
10
src/io.rs
@@ -11,7 +11,6 @@
|
||||
use crate::proc::JobGroupRef;
|
||||
use crate::redirection::{RedirectionMode, RedirectionSpecList};
|
||||
use crate::signal::SigChecker;
|
||||
use crate::terminal::Output;
|
||||
use crate::topic_monitor::Topic;
|
||||
use crate::wutil::{perror, perror_io, unescape_bytes_and_write_to_fd, wdirname, wstat};
|
||||
use errno::Errno;
|
||||
@@ -20,7 +19,7 @@
|
||||
use nix::sys::stat::Mode;
|
||||
use std::fs::File;
|
||||
use std::io;
|
||||
use std::os::fd::{AsFd, AsRawFd, BorrowedFd, OwnedFd, RawFd};
|
||||
use std::os::fd::{AsFd as _, AsRawFd as _, BorrowedFd, OwnedFd, RawFd};
|
||||
use std::sync::{Arc, LazyLock, Mutex, MutexGuard};
|
||||
|
||||
/// separated_buffer_t represents a buffer of output from commands, prepared to be turned into a
|
||||
@@ -732,13 +731,6 @@ pub fn append_narrow_buffer(&mut self, buffer: &SeparatedBuffer) -> bool {
|
||||
}
|
||||
}
|
||||
|
||||
impl Output for OutputStream {
|
||||
fn write_bytes(&mut self, command_part: &[u8]) {
|
||||
// TODO Retry on interrupt.
|
||||
self.append(&bytes2wcstring(command_part));
|
||||
}
|
||||
}
|
||||
|
||||
/// An output stream for builtins which outputs to an fd.
|
||||
/// Note the fd may be something like stdout; there is no ownership implied here.
|
||||
pub struct FdOutputStream {
|
||||
|
||||
@@ -4,17 +4,17 @@
|
||||
//! previous cuts.
|
||||
|
||||
use std::collections::VecDeque;
|
||||
use std::sync::{LazyLock, Mutex};
|
||||
use std::sync::Mutex;
|
||||
|
||||
use crate::prelude::*;
|
||||
|
||||
struct KillRing(VecDeque<WString>);
|
||||
|
||||
static KILL_RING: LazyLock<Mutex<KillRing>> = LazyLock::new(|| Mutex::new(KillRing::new()));
|
||||
static KILL_RING: Mutex<KillRing> = Mutex::new(KillRing::new());
|
||||
|
||||
impl KillRing {
|
||||
/// Create a new killring.
|
||||
fn new() -> Self {
|
||||
const fn new() -> Self {
|
||||
Self(VecDeque::new())
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ pub unsafe fn set_libc_locales(log_ok: bool) -> bool {
|
||||
if log_ok {
|
||||
crate::flog::flog!(env_locale, {
|
||||
let source = if value == from_environment {
|
||||
"from environment".to_string()
|
||||
"from environment".to_owned()
|
||||
} else {
|
||||
format!("to '{}'", value.to_str().unwrap())
|
||||
};
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use super::{localizable_consts, localizable_string, wgettext, wgettext_fmt};
|
||||
use crate::env::{EnvStack, Environment};
|
||||
use crate::env::{EnvStack, Environment as _};
|
||||
use fish_widestring::{L, WString, wstr};
|
||||
use itertools::Itertools;
|
||||
use itertools::Itertools as _;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::sync::{LazyLock, Mutex};
|
||||
use std::sync::Mutex;
|
||||
|
||||
#[derive(PartialEq, Eq, Clone, Copy)]
|
||||
enum LanguagePrecedenceOrigin {
|
||||
@@ -138,7 +138,7 @@ struct LocalizationState {
|
||||
}
|
||||
|
||||
impl LocalizationState {
|
||||
fn new() -> Self {
|
||||
const fn new() -> Self {
|
||||
Self {
|
||||
precedence_origin: LanguagePrecedenceOrigin::Default,
|
||||
}
|
||||
@@ -322,8 +322,7 @@ fn update_precedence<'a, 'b, 'c: 'a + 'b, LocalizationLanguage: Copy + 'a>(
|
||||
///
|
||||
/// This struct should be updated when the relevant variables change or `status language` is used
|
||||
/// to modify the localization state.
|
||||
static LOCALIZATION_STATE: LazyLock<Mutex<LocalizationState>> =
|
||||
LazyLock::new(|| Mutex::new(LocalizationState::new()));
|
||||
static LOCALIZATION_STATE: Mutex<LocalizationState> = Mutex::new(LocalizationState::new());
|
||||
|
||||
/// Call this when one of `LANGUAGE`, `LC_ALL`, `LC_MESSAGES`, `LANG` changes.
|
||||
/// Updates internal state such that the correct localizations will be used in subsequent
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user