Compare commits
168 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
91b402f575 | ||
|
|
f9cb0d14dc | ||
|
|
39875daec2 | ||
|
|
c4fe1e958a | ||
|
|
efbd482116 | ||
|
|
962a540d76 | ||
|
|
4b6f3f1d16 | ||
|
|
9d95410aa4 | ||
|
|
c922202ea2 | ||
|
|
fcc4276db3 | ||
|
|
6836599733 | ||
|
|
86dcb1878c | ||
|
|
efedcd1e6f | ||
|
|
dc4734448b | ||
|
|
105d65e29b | ||
|
|
86ae6858ab | ||
|
|
0802e00f2a | ||
|
|
8fd37e42a6 | ||
|
|
01be43047f | ||
|
|
e29f33ef51 | ||
|
|
71c10dcd58 | ||
|
|
dd40b1af5b | ||
|
|
871e6c6cf9 | ||
|
|
01e9670212 | ||
|
|
7e0eb5271e | ||
|
|
07faa961a0 | ||
|
|
2fbc69c9ad | ||
|
|
158947e294 | ||
|
|
d42b047f78 | ||
|
|
6c16ccaf61 | ||
|
|
f554a7c709 | ||
|
|
959817472d | ||
|
|
4a1bcc67b4 | ||
|
|
00285c035a | ||
|
|
3e2012914e | ||
|
|
9d9381fb28 | ||
|
|
c23aebdf99 | ||
|
|
72cefe6b72 | ||
|
|
3e194b1068 | ||
|
|
c2734dc03c | ||
|
|
3d224e42e7 | ||
|
|
ea7bf9aa8a | ||
|
|
ff41e9d853 | ||
|
|
c79edc0df9 | ||
|
|
317351c745 | ||
|
|
f3cba4a205 | ||
|
|
15e988810e | ||
|
|
fd836aab13 | ||
|
|
7ab76a8604 | ||
|
|
794c304479 | ||
|
|
8d23fcb603 | ||
|
|
c3c3478810 | ||
|
|
aef812446b | ||
|
|
a5b6c2d6e9 | ||
|
|
c4921023b1 | ||
|
|
f9981bbc8e | ||
|
|
4368ad34df | ||
|
|
f1dbca200c | ||
|
|
ea5084d1f1 | ||
|
|
002fddecde | ||
|
|
78954f86c2 | ||
|
|
48581f2ba9 | ||
|
|
365d58a539 | ||
|
|
b03970f41f | ||
|
|
a1f4259e68 | ||
|
|
ab4ebb62ee | ||
|
|
f07a1ed903 | ||
|
|
9e041457a5 | ||
|
|
46f530e517 | ||
|
|
5943c57173 | ||
|
|
3c79e33aeb | ||
|
|
77e7a40af2 | ||
|
|
18cd55dbc4 | ||
|
|
08bd9114c1 | ||
|
|
22db4a3c57 | ||
|
|
bd8b6c6b05 | ||
|
|
bc182ae56e | ||
|
|
a9d01da661 | ||
|
|
cb51add7ae | ||
|
|
b7205b6426 | ||
|
|
23be1889d1 | ||
|
|
af58a9f5e9 | ||
|
|
71a0a552cf | ||
|
|
863e85e00a | ||
|
|
aca677de0e | ||
|
|
ff6f277a4d | ||
|
|
28e75c5f31 | ||
|
|
b7cffc8434 | ||
|
|
880cf88ea6 | ||
|
|
9d83ca5ca2 | ||
|
|
b2fbb7c32d | ||
|
|
12f6f20552 | ||
|
|
964b7b5d7b | ||
|
|
0646047b68 | ||
|
|
b2ff915fe4 | ||
|
|
c91081d0e5 | ||
|
|
7088926316 | ||
|
|
fe05143f5d | ||
|
|
b2e55ed1d6 | ||
|
|
3e60f03d94 | ||
|
|
2c976d0de4 | ||
|
|
82ebaa79b0 | ||
|
|
8c8772c6b3 | ||
|
|
52169dbc28 | ||
|
|
75661a66a1 | ||
|
|
4cc3ab7401 | ||
|
|
309332a32e | ||
|
|
ac18dff65a | ||
|
|
e4502b6037 | ||
|
|
f4f175332c | ||
|
|
12c6417587 | ||
|
|
374f06ffd8 | ||
|
|
b5efce0765 | ||
|
|
e551e71d7e | ||
|
|
70afdfc127 | ||
|
|
068c0604c9 | ||
|
|
91900b9a5c | ||
|
|
aa5c9310f5 | ||
|
|
84a8ee4353 | ||
|
|
664701eb75 | ||
|
|
3c0f8000e1 | ||
|
|
211ceea602 | ||
|
|
b8a653a377 | ||
|
|
30bac359dc | ||
|
|
466b5f531a | ||
|
|
8ea5f27745 | ||
|
|
f89662722d | ||
|
|
d13f135295 | ||
|
|
8e29c35a04 | ||
|
|
80a0c355cf | ||
|
|
54b6c0c0e7 | ||
|
|
575961c791 | ||
|
|
f6e1dd11f4 | ||
|
|
b90145672d | ||
|
|
02abcf381f | ||
|
|
06aa378056 | ||
|
|
96898d7324 | ||
|
|
7cb43f286e | ||
|
|
bf21df1c7b | ||
|
|
a8fdfd4fcb | ||
|
|
68b3585e1d | ||
|
|
c84526dd29 | ||
|
|
be7ef8a19e | ||
|
|
e09000a786 | ||
|
|
30f012d8bc | ||
|
|
bde5832216 | ||
|
|
af3ccc2845 | ||
|
|
c0f0a34ea3 | ||
|
|
418400075a | ||
|
|
1578ea9d97 | ||
|
|
e2cf84d0a0 | ||
|
|
0effd2faf9 | ||
|
|
a4c0119786 | ||
|
|
742e8722b3 | ||
|
|
b435da0b4f | ||
|
|
955c02dff7 | ||
|
|
9c0d057e3d | ||
|
|
4292eea714 | ||
|
|
9a2260d6cf | ||
|
|
25f6539645 | ||
|
|
a603175c6c | ||
|
|
abd2d7d453 | ||
|
|
c9eaff0a8a | ||
|
|
8c116bbe79 | ||
|
|
3abbe31fe0 | ||
|
|
347e8c1e7d | ||
|
|
3d472d8675 | ||
|
|
0172ff5542 |
3
.github/MAINTAINERS
vendored
3
.github/MAINTAINERS
vendored
@@ -350,6 +350,7 @@ runtime/ftplugin/vdf.vim @ObserverOfTime
|
||||
runtime/ftplugin/vim.vim @dkearns
|
||||
runtime/ftplugin/wget.vim @dkearns
|
||||
runtime/ftplugin/wget2.vim @dkearns
|
||||
runtime/ftplugin/wks.vim @anakin4747
|
||||
runtime/ftplugin/xcompose.vim @ObserverOfTime
|
||||
runtime/ftplugin/xml.vim @chrisbra
|
||||
runtime/ftplugin/xs.vim @petdance
|
||||
@@ -471,6 +472,7 @@ runtime/syntax/shared/hgcommitDiff.vim @vegerot
|
||||
runtime/syntax/abaqus.vim @costerwi
|
||||
runtime/syntax/abnf.vim @A4-Tacks
|
||||
runtime/syntax/aidl.vim @dpelle
|
||||
runtime/syntax/amiga.vim @sodero
|
||||
runtime/syntax/ant.vim @dkearns
|
||||
runtime/syntax/antlr4.vim @jiangyinzuo
|
||||
runtime/syntax/arduino.vim @johshoff
|
||||
@@ -710,6 +712,7 @@ runtime/syntax/vroom.vim @dbarnett
|
||||
runtime/syntax/wdl.vim @zenmatic
|
||||
runtime/syntax/wget.vim @dkearns
|
||||
runtime/syntax/wget2.vim @dkearns
|
||||
runtime/syntax/wks.vim @anakin4747
|
||||
runtime/syntax/xbl.vim @dkearns
|
||||
runtime/syntax/xcompose.vim @ObserverOfTime
|
||||
runtime/syntax/xml.vim @chrisbra
|
||||
|
||||
324
.github/actions/build_vim_on_linux/action.yml
vendored
Normal file
324
.github/actions/build_vim_on_linux/action.yml
vendored
Normal file
@@ -0,0 +1,324 @@
|
||||
name: Build Vim on Linux
|
||||
description: Build Vim on Linux
|
||||
|
||||
inputs:
|
||||
features:
|
||||
description: Vim features
|
||||
required: true
|
||||
compiler:
|
||||
description: Compiler
|
||||
required: true
|
||||
architecture:
|
||||
description: Architecture
|
||||
required: false
|
||||
extra:
|
||||
description: Extra flags
|
||||
required: true
|
||||
shadow:
|
||||
description: Shadow directory
|
||||
required: false
|
||||
interface:
|
||||
description: Interface of language interpreter
|
||||
required: false
|
||||
lua_ver:
|
||||
description: Lua version
|
||||
required: false
|
||||
python3:
|
||||
description: Python3 ABI type
|
||||
required: false
|
||||
coverage:
|
||||
description: Enable coverage
|
||||
required: false
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Check Filelist (for packaging)
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Check Filelist (for packaging)'
|
||||
# If any files in the repository are not listed in Filelist this will
|
||||
# exit with an error code and list the missing entries.
|
||||
make -f ci/unlisted.make
|
||||
echo '::endgroup::'
|
||||
|
||||
- name: Check hlgroups (are any new hlgroups added, but not handled in highlight.c)
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Check hlgroups (are any new hlgroups added, but not handled in highlight.c)'
|
||||
# If any highlight groups have been documented, but not handled in
|
||||
# highlight.c, nor listed as 'intentionally left out' in hlgroups.ignore,
|
||||
# exit with an error code and list the missing entries.
|
||||
make -C ci -f hlgroups.make
|
||||
echo '::endgroup::'
|
||||
|
||||
- name: Report executable syntax tests
|
||||
if: contains(fromJSON(inputs.extra), 'syn_test_execs')
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Report executable syntax tests'
|
||||
# Search and list all found executable syntax tests, and exit with
|
||||
# an error code.
|
||||
make -C runtime/syntax executables
|
||||
echo '::endgroup::'
|
||||
|
||||
- name: Add i386 packages to dpkg
|
||||
if: inputs.architecture == 'i386'
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Add i386 packages to dpkg'
|
||||
sudo dpkg --add-architecture i386
|
||||
echo '::endgroup::'
|
||||
|
||||
- name: Uninstall snap
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Uninstall snap'
|
||||
sudo bash ci/remove_snap.sh
|
||||
echo '::endgroup::'
|
||||
|
||||
- name: Enable debug packages
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Enable debug packages'
|
||||
# Some of the ASAN suppressions are in libraries linked with dlopen
|
||||
# and symbolization of them requires these debug packages.
|
||||
sudo apt install ubuntu-dbgsym-keyring
|
||||
sudo cp ci/ddebs.list /etc/apt/sources.list.d/ddebs.list
|
||||
sudo cp ci/pinned-pkgs /etc/apt/preferences.d/pinned-pkgs
|
||||
echo '::endgroup::'
|
||||
|
||||
- name: Install packages
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Install packages'
|
||||
# This is added by default, and it is often broken, but we don't need anything from it
|
||||
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
|
||||
PKGS=( \
|
||||
gettext \
|
||||
x11-utils \
|
||||
labwc \
|
||||
wl-clipboard \
|
||||
wayland-utils \
|
||||
libgtk-3-dev:${{ inputs.architecture }} \
|
||||
libgtk-3-bin:${{ inputs.architecture }} \
|
||||
desktop-file-utils \
|
||||
libc6-dbgsym:${{ inputs.architecture }} \
|
||||
libtool-bin \
|
||||
libncurses-dev:${{ inputs.architecture }} \
|
||||
libxt-dev:${{ inputs.architecture }} \
|
||||
libegl-mesa0:${{ inputs.architecture }} \
|
||||
libegl1:${{ inputs.architecture }} \
|
||||
libegl1-mesa-dev:${{ inputs.architecture }} \
|
||||
libepoxy-dev:${{ inputs.architecture }} \
|
||||
libwayland-egl1:${{ inputs.architecture }} \
|
||||
libwayland-client0:${{ inputs.architecture }} \
|
||||
libwayland-cursor0:${{ inputs.architecture }} \
|
||||
locales-all \
|
||||
software-properties-common \
|
||||
)
|
||||
if ${{ contains(fromJSON(inputs.extra), 'asan') }} && ${{ contains(inputs.architecture, 'native') }}; then
|
||||
PKGS+=( \
|
||||
libepoxy0-dbgsym:${{ inputs.architecture }} \
|
||||
libxdamage1-dbgsym:${{ inputs.architecture }} \
|
||||
libxcb1-dbgsym:${{ inputs.architecture }} \
|
||||
libgtk-3-bin-dbgsym:${{ inputs.architecture }} \
|
||||
libgtk-3-0t64-dbgsym:${{ inputs.architecture }} \
|
||||
libglib2.0-0t64-dbgsym:${{ inputs.architecture }} \
|
||||
libglib2.0-bin-dbgsym:${{ inputs.architecture }} \
|
||||
libglib2.0-dev-bin-dbgsym:${{ inputs.architecture }} \
|
||||
)
|
||||
fi
|
||||
if ${{ inputs.features == 'huge' }}; then
|
||||
LUA_VER=${{ inputs.lua_ver || '5.4' }}
|
||||
PKGS+=( \
|
||||
autoconf \
|
||||
gdb \
|
||||
lcov \
|
||||
libcanberra-dev \
|
||||
libperl-dev \
|
||||
python3-dev \
|
||||
liblua${LUA_VER}-dev \
|
||||
lua${LUA_VER} \
|
||||
ruby-dev \
|
||||
tcl-dev \
|
||||
cscope \
|
||||
libsodium-dev \
|
||||
attr \
|
||||
libattr1-dev
|
||||
)
|
||||
fi
|
||||
if ${{ contains(fromJSON(inputs.extra), 'proto') }}; then
|
||||
PKGS+=( python3-clang )
|
||||
fi
|
||||
sudo apt-get update && sudo apt-get upgrade -y --allow-downgrades && sudo apt-get install -y --allow-downgrades "${PKGS[@]}"
|
||||
|
||||
- name: Install gcc-${{ env.GCC_VER }}
|
||||
if: inputs.compiler == 'gcc'
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Install gcc-${{ env.GCC_VER }}'
|
||||
# ubuntu-toolchain-r/test PPA for gcc-13 compiler
|
||||
# disabled because the installation failed, causing test failures
|
||||
# sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y gcc-${{ env.GCC_VER }}:${{ inputs.architecture }}
|
||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ env.GCC_VER }} 100
|
||||
sudo update-alternatives --set gcc /usr/bin/gcc-${{ env.GCC_VER }}
|
||||
echo '::endgroup::'
|
||||
|
||||
- name: Install clang-${{ env.CLANG_VER }}
|
||||
if: inputs.compiler == 'clang'
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Install clang-${{ env.CLANG_VER }}'
|
||||
. /etc/lsb-release
|
||||
curl -fsSL https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/llvm-archive-keyring.gpg > /dev/null
|
||||
echo "Types: deb
|
||||
URIs: https://apt.llvm.org/${DISTRIB_CODENAME}/
|
||||
Suites: llvm-toolchain-${DISTRIB_CODENAME}-${{ env.CLANG_VER }}
|
||||
Components: main
|
||||
Signed-By: /usr/share/keyrings/llvm-archive-keyring.gpg" | sudo tee /etc/apt/sources.list.d/llvm-toolchain.sources > /dev/null
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y clang-${{ env.CLANG_VER }} llvm-${{ env.CLANG_VER }}
|
||||
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${{ env.CLANG_VER }} 100
|
||||
sudo update-alternatives --set clang /usr/bin/clang-${{ env.CLANG_VER }}
|
||||
sudo update-alternatives --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-${{ env.CLANG_VER }} 100
|
||||
sudo update-alternatives --install /usr/bin/asan_symbolize asan_symbolize /usr/bin/asan_symbolize-${{ env.CLANG_VER }} 100
|
||||
echo '::endgroup::'
|
||||
|
||||
- name: Set up environment
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Set up environment'
|
||||
mkdir -p "${LOG_DIR}"
|
||||
mkdir -p "${HOME}/bin"
|
||||
echo "${HOME}/bin" >> $GITHUB_PATH
|
||||
(
|
||||
echo "LINUX_VERSION=$(uname -r)"
|
||||
echo "NPROC=$(getconf _NPROCESSORS_ONLN)"
|
||||
echo "TMPDIR=$(mktemp -d -p /tmp)"
|
||||
|
||||
case "${{ inputs.features }}" in
|
||||
tiny)
|
||||
echo "TEST=testtiny"
|
||||
if ${{ contains(fromJSON(inputs.extra), 'nogui') }}; then
|
||||
CONFOPT="--disable-gui"
|
||||
fi
|
||||
;;
|
||||
normal)
|
||||
;;
|
||||
huge)
|
||||
echo "TEST=scripttests test_libvterm indenttest syntaxtest"
|
||||
INTERFACE=${{ inputs.interface || 'yes' }}
|
||||
if ${{ inputs.python3 == 'stable-abi' }}; then
|
||||
PYTHON3_CONFOPT="--with-python3-stable-abi=3.8"
|
||||
fi
|
||||
# The ubuntu-24.04 CI runner does not provide a python2 package.
|
||||
CONFOPT="--enable-perlinterp=${INTERFACE} --enable-pythoninterp=no --enable-python3interp=${INTERFACE} --enable-rubyinterp=${INTERFACE} --enable-luainterp=${INTERFACE} --enable-tclinterp=${INTERFACE} ${PYTHON3_CONFOPT}"
|
||||
;;
|
||||
esac
|
||||
|
||||
if ${{ contains(fromJSON(inputs.extra), 'no_x11_wl') }}; then
|
||||
CONFOPT="${CONFOPT} --without-x --disable-gui --without-wayland --enable-socketserver"
|
||||
fi
|
||||
if ${{ inputs.coverage == true }}; then
|
||||
CFLAGS="${CFLAGS} --coverage -DUSE_GCOV_FLUSH"
|
||||
echo "LDFLAGS=--coverage"
|
||||
fi
|
||||
if ${{ contains(fromJSON(inputs.extra), 'uchar') }}; then
|
||||
CFLAGS="${CFLAGS} -funsigned-char"
|
||||
fi
|
||||
if ${{ contains(fromJSON(inputs.extra), 'testgui') }}; then
|
||||
echo "TEST=-C src testgui"
|
||||
fi
|
||||
if ${{ contains(fromJSON(inputs.extra), 'unittests') }}; then
|
||||
echo "TEST=unittests"
|
||||
fi
|
||||
if ${{ contains(fromJSON(inputs.extra), 'asan') }}; then
|
||||
echo "SANITIZER_CFLAGS=-g -O0 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize-recover=all -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer"
|
||||
echo "ASAN_OPTIONS=print_stacktrace=1:log_path=${LOG_DIR}/asan"
|
||||
echo "UBSAN_OPTIONS=print_stacktrace=1:log_path=${LOG_DIR}/ubsan"
|
||||
echo "LSAN_OPTIONS=suppressions=${GITHUB_WORKSPACE}/src/testdir/lsan-suppress.txt"
|
||||
fi
|
||||
if ${{ contains(fromJSON(inputs.extra), 'vimtags') }}; then
|
||||
echo "TEST=-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim"
|
||||
fi
|
||||
if ${{ contains(fromJSON(inputs.extra), 'proto') }}; then
|
||||
echo "TEST=-C src protoclean proto"
|
||||
fi
|
||||
echo "CFLAGS=${CFLAGS}"
|
||||
echo "CONFOPT=${CONFOPT}"
|
||||
# Disables GTK attempt to integrate with the accessibility service that does run in CI.
|
||||
echo "NO_AT_BRIDGE=1"
|
||||
) >> $GITHUB_ENV
|
||||
echo '::endgroup::'
|
||||
|
||||
- name: Set up system
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Set up system'
|
||||
if [[ ${CC} = clang ]]; then
|
||||
# Use llvm-cov instead of gcov when compiler is clang.
|
||||
ln -fs /usr/bin/llvm-cov ${HOME}/bin/gcov
|
||||
fi
|
||||
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0
|
||||
sudo usermod -a -G audio "${USER}"
|
||||
sudo bash ci/setup-xvfb.sh
|
||||
echo '::endgroup::'
|
||||
|
||||
- name: Check autoconf
|
||||
if: contains(fromJSON(inputs.extra), 'unittests')
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Check autoconf'
|
||||
make -C src autoconf
|
||||
echo '::endgroup::'
|
||||
|
||||
- name: Set up shadow dir
|
||||
if: inputs.shadow
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Set up shadow dir'
|
||||
make -C src shadow
|
||||
echo "SRCDIR=${{ inputs.shadow }}" >> $GITHUB_ENV
|
||||
echo "SHADOWOPT=-C ${{ inputs.shadow }}" >> $GITHUB_ENV
|
||||
echo '::endgroup::'
|
||||
|
||||
- name: Configure
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Configure'
|
||||
./configure --with-features=${{ inputs.features }} ${CONFOPT} --enable-fail-if-missing
|
||||
# Append various warning flags to CFLAGS.
|
||||
sed -i -f ci/config.mk.sed ${SRCDIR}/auto/config.mk
|
||||
sed -i -f ci/config.mk.${CC}.sed ${SRCDIR}/auto/config.mk
|
||||
if [[ ${CC} = clang ]]; then
|
||||
# Suppress some warnings produced by clang 12 and later.
|
||||
sed -i -f ci/config.mk.clang-12.sed ${SRCDIR}/auto/config.mk
|
||||
fi
|
||||
echo '::endgroup::'
|
||||
|
||||
- name: Build
|
||||
if: (!contains(fromJSON(inputs.extra), 'unittests'))
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Build'
|
||||
make ${SHADOWOPT} -j${NPROC}
|
||||
echo '::endgroup::'
|
||||
|
||||
- name: Check version
|
||||
if: (!contains(fromJSON(inputs.extra), 'unittests'))
|
||||
shell: bash
|
||||
run: |
|
||||
echo '::group::Check version'
|
||||
"${SRCDIR}"/vim --version
|
||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
|
||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
|
||||
if ${{ inputs.features == 'huge' }}; then
|
||||
# Also check that optional and dynamic features are configured and working
|
||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 \
|
||||
-c "let g:required=['gettext', 'sodium', 'sound', 'perl', 'python3', 'lua', 'ruby', 'tcl']" \
|
||||
-S ci/if_feat_check.vim -c quit
|
||||
fi
|
||||
echo '::endgroup::'
|
||||
9
.github/actions/test_artifacts/action.yml
vendored
9
.github/actions/test_artifacts/action.yml
vendored
@@ -1,4 +1,4 @@
|
||||
name: 'test_artifacts'
|
||||
name: "test_artifacts"
|
||||
description: "Upload failed test artifacts"
|
||||
runs:
|
||||
using: "composite"
|
||||
@@ -40,9 +40,10 @@ runs:
|
||||
# A file, directory or wildcard pattern that describes what
|
||||
# to upload.
|
||||
path: |
|
||||
${{ github.workspace }}/runtime/indent/testdir/*.fail
|
||||
${{ github.workspace }}/runtime/syntax/testdir/failed/*
|
||||
${{ github.workspace }}/src/testdir/failed/*
|
||||
${{ github.workspace }}/logs/**/*.symbolized
|
||||
${{ github.workspace }}/runtime/indent/testdir/*.fail
|
||||
${{ github.workspace }}/runtime/syntax/testdir/failed/*
|
||||
${{ github.workspace }}/src/testdir/failed/*
|
||||
# The desired behavior if no files are found using the
|
||||
# provided path.
|
||||
if-no-files-found: ignore
|
||||
|
||||
357
.github/workflows/ci.yml
vendored
357
.github/workflows/ci.yml
vendored
@@ -2,7 +2,7 @@ name: GitHub CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ['**']
|
||||
branches: ["**"]
|
||||
pull_request:
|
||||
|
||||
# Cancels all previous workflow runs for pull requests that have not completed.
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
LEAK_CFLAGS: -DEXITFREE
|
||||
LOG_DIR: ${{ github.workspace }}/logs
|
||||
TERM: xterm
|
||||
DISPLAY: ':99'
|
||||
DISPLAY: ":99"
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
|
||||
strategy:
|
||||
@@ -67,12 +67,6 @@ jobs:
|
||||
coverage: true
|
||||
interface: dynamic
|
||||
extra: [uchar, testgui]
|
||||
- features: huge
|
||||
compiler: clang
|
||||
# Lua5.1 is the most widely used version (since it's what LuaJIT is
|
||||
# compatible with), so ensure it works
|
||||
lua_ver: '5.1'
|
||||
extra: [asan]
|
||||
- features: huge
|
||||
compiler: gcc
|
||||
coverage: true
|
||||
@@ -90,254 +84,26 @@ jobs:
|
||||
extra: [no_x11_wl]
|
||||
|
||||
steps:
|
||||
- name: Checkout repository from github
|
||||
- name: Checkout repository from GitHub
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Check Filelist (for packaging)
|
||||
run: |
|
||||
# If any files in the repository are not listed in Filelist this will
|
||||
# exit with an error code and list the missing entries.
|
||||
make -f ci/unlisted.make
|
||||
|
||||
- name: Check hlgroups (are any new hlgroups added, but not handled in highlight.c)
|
||||
run: |
|
||||
# If any highlight groups have been documented, but not handled in
|
||||
# highlight.c, nor listed as 'intentionally left out' in hlgroups.ignore,
|
||||
# exit with an error code and list the missing entries.
|
||||
make -C ci -f hlgroups.make
|
||||
|
||||
- name: Report executable syntax tests
|
||||
if: contains(matrix.extra, 'syn_test_execs')
|
||||
run: |
|
||||
# Search and list all found executable syntax tests, and exit with
|
||||
# an error code.
|
||||
make -C runtime/syntax executables
|
||||
|
||||
- run: sudo dpkg --add-architecture i386
|
||||
if: matrix.architecture == 'i386'
|
||||
|
||||
- name: Uninstall snap
|
||||
run: |
|
||||
sudo bash ci/remove_snap.sh
|
||||
|
||||
- name: Enable debug packages
|
||||
run: |
|
||||
# Some of the ASAN suppressions are in libraries linked with dlopen
|
||||
# and symbolization of them requires these debug packages.
|
||||
sudo apt install ubuntu-dbgsym-keyring
|
||||
sudo cp ci/ddebs.list /etc/apt/sources.list.d/ddebs.list
|
||||
sudo cp ci/pinned-pkgs /etc/apt/preferences.d/pinned-pkgs
|
||||
|
||||
- name: Install packages
|
||||
run: |
|
||||
# This is added by default, and it is often broken, but we don't need anything from it
|
||||
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
|
||||
PKGS=( \
|
||||
gettext \
|
||||
x11-utils \
|
||||
labwc \
|
||||
wl-clipboard \
|
||||
wayland-utils \
|
||||
libgtk-3-dev:${{ matrix.architecture }} \
|
||||
libgtk-3-bin:${{ matrix.architecture }} \
|
||||
desktop-file-utils \
|
||||
libc6-dbgsym:${{ matrix.architecture }} \
|
||||
libtool-bin \
|
||||
libncurses-dev:${{ matrix.architecture }} \
|
||||
libxt-dev:${{ matrix.architecture }} \
|
||||
libegl-mesa0:${{ matrix.architecture }} \
|
||||
libegl1:${{ matrix.architecture }} \
|
||||
libegl1-mesa-dev:${{ matrix.architecture }} \
|
||||
libepoxy-dev:${{ matrix.architecture }} \
|
||||
libwayland-egl1:${{ matrix.architecture }} \
|
||||
libwayland-client0:${{ matrix.architecture }} \
|
||||
libwayland-cursor0:${{ matrix.architecture }} \
|
||||
locales-all \
|
||||
software-properties-common \
|
||||
)
|
||||
if ${{ contains(matrix.extra, 'asan') }} && ${{ contains(matrix.architecture, 'native') }}; then
|
||||
PKGS+=( \
|
||||
libepoxy0-dbgsym:${{ matrix.architecture }} \
|
||||
libxdamage1-dbgsym:${{ matrix.architecture }} \
|
||||
libxcb1-dbgsym:${{ matrix.architecture }} \
|
||||
libgtk-3-bin-dbgsym:${{ matrix.architecture }} \
|
||||
libgtk-3-0t64-dbgsym:${{ matrix.architecture }} \
|
||||
libglib2.0-0t64-dbgsym:${{ matrix.architecture }} \
|
||||
libglib2.0-bin-dbgsym:${{ matrix.architecture }} \
|
||||
libglib2.0-dev-bin-dbgsym:${{ matrix.architecture }} \
|
||||
)
|
||||
fi
|
||||
if ${{ matrix.features == 'huge' }}; then
|
||||
LUA_VER=${{ matrix.lua_ver || '5.4' }}
|
||||
PKGS+=( \
|
||||
autoconf \
|
||||
gdb \
|
||||
lcov \
|
||||
libcanberra-dev \
|
||||
libperl-dev \
|
||||
python3-dev \
|
||||
liblua${LUA_VER}-dev \
|
||||
lua${LUA_VER} \
|
||||
ruby-dev \
|
||||
tcl-dev \
|
||||
cscope \
|
||||
libsodium-dev \
|
||||
attr \
|
||||
libattr1-dev
|
||||
)
|
||||
fi
|
||||
if ${{ contains(matrix.extra, 'proto') }}; then
|
||||
PKGS+=( python3-clang )
|
||||
fi
|
||||
sudo apt-get update && sudo apt-get upgrade -y --allow-downgrades && sudo apt-get install -y --allow-downgrades "${PKGS[@]}"
|
||||
|
||||
- name: Install gcc-${{ env.GCC_VER }}
|
||||
if: matrix.compiler == 'gcc'
|
||||
run: |
|
||||
# ubuntu-toolchain-r/test PPA for gcc-13 compiler
|
||||
# disabled because the installation failed, causing test failures
|
||||
# sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y gcc-${{ env.GCC_VER }}:${{ matrix.architecture }}
|
||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ env.GCC_VER }} 100
|
||||
sudo update-alternatives --set gcc /usr/bin/gcc-${{ env.GCC_VER }}
|
||||
|
||||
- name: Install clang-${{ env.CLANG_VER }}
|
||||
if: matrix.compiler == 'clang'
|
||||
run: |
|
||||
. /etc/lsb-release
|
||||
curl -fsSL https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/llvm-archive-keyring.gpg > /dev/null
|
||||
echo "Types: deb
|
||||
URIs: https://apt.llvm.org/${DISTRIB_CODENAME}/
|
||||
Suites: llvm-toolchain-${DISTRIB_CODENAME}-${{ env.CLANG_VER }}
|
||||
Components: main
|
||||
Signed-By: /usr/share/keyrings/llvm-archive-keyring.gpg" | sudo tee /etc/apt/sources.list.d/llvm-toolchain.sources > /dev/null
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y clang-${{ env.CLANG_VER }} llvm-${{ env.CLANG_VER }}
|
||||
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${{ env.CLANG_VER }} 100
|
||||
sudo update-alternatives --set clang /usr/bin/clang-${{ env.CLANG_VER }}
|
||||
sudo update-alternatives --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-${{ env.CLANG_VER }} 100
|
||||
sudo update-alternatives --install /usr/bin/asan_symbolize asan_symbolize /usr/bin/asan_symbolize-${{ env.CLANG_VER }} 100
|
||||
|
||||
- name: Set up environment
|
||||
run: |
|
||||
mkdir -p "${LOG_DIR}"
|
||||
mkdir -p "${HOME}/bin"
|
||||
echo "${HOME}/bin" >> $GITHUB_PATH
|
||||
(
|
||||
echo "LINUX_VERSION=$(uname -r)"
|
||||
echo "NPROC=$(getconf _NPROCESSORS_ONLN)"
|
||||
echo "TMPDIR=$(mktemp -d -p /tmp)"
|
||||
|
||||
case "${{ matrix.features }}" in
|
||||
tiny)
|
||||
echo "TEST=testtiny"
|
||||
if ${{ contains(matrix.extra, 'nogui') }}; then
|
||||
CONFOPT="--disable-gui"
|
||||
fi
|
||||
;;
|
||||
normal)
|
||||
;;
|
||||
huge)
|
||||
echo "TEST=scripttests test_libvterm indenttest syntaxtest"
|
||||
INTERFACE=${{ matrix.interface || 'yes' }}
|
||||
if ${{ matrix.python3 == 'stable-abi' }}; then
|
||||
PYTHON3_CONFOPT="--with-python3-stable-abi=3.8"
|
||||
fi
|
||||
# The ubuntu-24.04 CI runner does not provide a python2 package.
|
||||
CONFOPT="--enable-perlinterp=${INTERFACE} --enable-pythoninterp=no --enable-python3interp=${INTERFACE} --enable-rubyinterp=${INTERFACE} --enable-luainterp=${INTERFACE} --enable-tclinterp=${INTERFACE} ${PYTHON3_CONFOPT}"
|
||||
;;
|
||||
esac
|
||||
|
||||
if ${{ contains(matrix.extra, 'no_x11_wl') }}; then
|
||||
CONFOPT="${CONFOPT} --without-x --disable-gui --without-wayland --enable-socketserver"
|
||||
fi
|
||||
if ${{ matrix.coverage == true }}; then
|
||||
CFLAGS="${CFLAGS} --coverage -DUSE_GCOV_FLUSH"
|
||||
echo "LDFLAGS=--coverage"
|
||||
fi
|
||||
if ${{ contains(matrix.extra, 'uchar') }}; then
|
||||
CFLAGS="${CFLAGS} -funsigned-char"
|
||||
fi
|
||||
if ${{ contains(matrix.extra, 'testgui') }}; then
|
||||
echo "TEST=-C src testgui"
|
||||
fi
|
||||
if ${{ contains(matrix.extra, 'unittests') }}; then
|
||||
echo "TEST=unittests"
|
||||
fi
|
||||
if ${{ contains(matrix.extra, 'asan') }}; then
|
||||
echo "SANITIZER_CFLAGS=-g -O0 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize-recover=all -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer"
|
||||
echo "ASAN_OPTIONS=print_stacktrace=1:log_path=${LOG_DIR}/asan"
|
||||
echo "UBSAN_OPTIONS=print_stacktrace=1:log_path=${LOG_DIR}/ubsan"
|
||||
echo "LSAN_OPTIONS=suppressions=${GITHUB_WORKSPACE}/src/testdir/lsan-suppress.txt"
|
||||
fi
|
||||
if ${{ contains(matrix.extra, 'vimtags') }}; then
|
||||
echo "TEST=-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim"
|
||||
fi
|
||||
if ${{ contains(matrix.extra, 'proto') }}; then
|
||||
echo "TEST=-C src protoclean proto"
|
||||
fi
|
||||
echo "CFLAGS=${CFLAGS}"
|
||||
echo "CONFOPT=${CONFOPT}"
|
||||
# Disables GTK attempt to integrate with the accessibility service that does run in CI.
|
||||
echo "NO_AT_BRIDGE=1"
|
||||
) >> $GITHUB_ENV
|
||||
|
||||
- name: Set up system
|
||||
run: |
|
||||
if [[ ${CC} = clang ]]; then
|
||||
# Use llvm-cov instead of gcov when compiler is clang.
|
||||
ln -fs /usr/bin/llvm-cov ${HOME}/bin/gcov
|
||||
fi
|
||||
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0
|
||||
sudo usermod -a -G audio "${USER}"
|
||||
sudo bash ci/setup-xvfb.sh
|
||||
|
||||
- name: Check autoconf
|
||||
if: contains(matrix.extra, 'unittests')
|
||||
run: |
|
||||
make -C src autoconf
|
||||
|
||||
- name: Set up shadow dir
|
||||
if: matrix.shadow
|
||||
run: |
|
||||
make -C src shadow
|
||||
echo "SRCDIR=${{ matrix.shadow }}" >> $GITHUB_ENV
|
||||
echo "SHADOWOPT=-C ${{ matrix.shadow }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
./configure --with-features=${{ matrix.features }} ${CONFOPT} --enable-fail-if-missing
|
||||
# Append various warning flags to CFLAGS.
|
||||
sed -i -f ci/config.mk.sed ${SRCDIR}/auto/config.mk
|
||||
sed -i -f ci/config.mk.${CC}.sed ${SRCDIR}/auto/config.mk
|
||||
if [[ ${CC} = clang ]]; then
|
||||
# Suppress some warnings produced by clang 12 and later.
|
||||
sed -i -f ci/config.mk.clang-12.sed ${SRCDIR}/auto/config.mk
|
||||
fi
|
||||
|
||||
- name: Build
|
||||
if: (!contains(matrix.extra, 'unittests'))
|
||||
run: |
|
||||
make ${SHADOWOPT} -j${NPROC}
|
||||
|
||||
- name: Check version
|
||||
if: (!contains(matrix.extra, 'unittests'))
|
||||
run: |
|
||||
"${SRCDIR}"/vim --version
|
||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
|
||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
|
||||
if ${{ matrix.features == 'huge' }}; then
|
||||
# Also check that optional and dynamic features are configured and working
|
||||
"${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 \
|
||||
-c "let g:required=['gettext', 'sodium', 'sound', 'perl', 'python3', 'lua', 'ruby', 'tcl']" \
|
||||
-S ci/if_feat_check.vim -c quit
|
||||
fi
|
||||
timeout-minutes: 15
|
||||
uses: ./.github/actions/build_vim_on_linux
|
||||
with:
|
||||
features: ${{ matrix.features }}
|
||||
compiler: ${{ matrix.compiler }}
|
||||
architecture: ${{ matrix.architecture }}
|
||||
extra: ${{ toJSON(matrix.extra) }}
|
||||
shadow: ${{ matrix.shadow }}
|
||||
interface: ${{ matrix.interface }}
|
||||
lua_ver: ${{ matrix.lua_ver }}
|
||||
python3: ${{ matrix.python3 }}
|
||||
coverage: ${{ matrix.coverage }}
|
||||
|
||||
- name: Test
|
||||
timeout-minutes: 45
|
||||
run: |
|
||||
make ${SHADOWOPT} ${TEST}
|
||||
timeout-minutes: 20
|
||||
run: make ${SHADOWOPT} ${TEST}
|
||||
|
||||
# Enable to debug failing tests live and ssh into the CI runners
|
||||
# - name: Setup tmate session
|
||||
@@ -346,7 +112,8 @@ jobs:
|
||||
# with:
|
||||
# limit-access-to-actor: true
|
||||
|
||||
- if: ${{ !cancelled() }}
|
||||
- name: Upload failed test artifacts
|
||||
if: ${{ !cancelled() }}
|
||||
uses: ./.github/actions/test_artifacts
|
||||
|
||||
- name: Vim tags
|
||||
@@ -405,20 +172,78 @@ jobs:
|
||||
- name: Codecov
|
||||
timeout-minutes: 20
|
||||
if: matrix.coverage
|
||||
uses: codecov/codecov-action@v5
|
||||
uses: codecov/codecov-action@v6
|
||||
with:
|
||||
flags: linux,${{ matrix.features }}-${{ matrix.compiler }}-${{ join(matrix.extra, '-') }}
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
|
||||
linux-asan:
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
env:
|
||||
CC: clang
|
||||
CLANG_VER: 21
|
||||
SRCDIR: ./src
|
||||
LEAK_CFLAGS: -DEXITFREE
|
||||
LOG_DIR: ${{ github.workspace }}/logs
|
||||
TERM: xterm
|
||||
DISPLAY: ":99"
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
testset:
|
||||
- tinytests
|
||||
- newtests.1
|
||||
- newtests.2
|
||||
|
||||
steps:
|
||||
- name: Checkout repository from GitHub
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Build
|
||||
timeout-minutes: 15
|
||||
uses: ./.github/actions/build_vim_on_linux
|
||||
with:
|
||||
features: huge
|
||||
compiler: clang
|
||||
extra: '["asan"]'
|
||||
# Lua5.1 is the most widely used version (since it's what LuaJIT is
|
||||
# compatible with), so ensure it works
|
||||
lua_ver: "5.1"
|
||||
|
||||
- name: Test (tinytests)
|
||||
if: matrix.testset == 'tinytests'
|
||||
timeout-minutes: 20
|
||||
run: make ${TEST} NEW_TESTS_RES=
|
||||
|
||||
- name: Test (newtests)
|
||||
if: startsWith(matrix.testset, 'newtests')
|
||||
timeout-minutes: 20
|
||||
env:
|
||||
JOB_INDEX: ${{ strategy.job-index }}
|
||||
JOB_TOTAL: ${{ strategy.job-total }}
|
||||
run: |
|
||||
set -x
|
||||
make -C src/testdir SCRIPTS_TINY_OUT= \
|
||||
NEW_TESTS_RES="$(python3 ci/gen_testset.py $((JOB_TOTAL-1)) | jq -r --argjson i $((JOB_INDEX-1)) '.[$i]|join(" ")')"
|
||||
|
||||
- name: ASan logs
|
||||
if: contains(matrix.extra, 'asan') && !cancelled()
|
||||
if: ${{ !cancelled() }}
|
||||
run: |
|
||||
for f in $(grep -lR '#[[:digit:]]* *0x[[:xdigit:]]*' "${LOG_DIR}"); do
|
||||
echo "$f"
|
||||
asan_symbolize -l "$f"
|
||||
(
|
||||
echo "$f"
|
||||
asan_symbolize -l "$f"
|
||||
) | tee "$f".symbolized
|
||||
false # in order to fail a job
|
||||
done
|
||||
|
||||
- name: Upload failed test artifacts
|
||||
if: ${{ !cancelled() }}
|
||||
uses: ./.github/actions/test_artifacts
|
||||
|
||||
macos:
|
||||
runs-on: ${{ matrix.runner }}
|
||||
|
||||
@@ -436,7 +261,7 @@ jobs:
|
||||
runner: [macos-15-intel, macos-26]
|
||||
|
||||
steps:
|
||||
- name: Checkout repository from github
|
||||
- name: Checkout repository from GitHub
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Install packages
|
||||
@@ -503,7 +328,8 @@ jobs:
|
||||
run: |
|
||||
make ${TEST}
|
||||
|
||||
- if: ${{ !cancelled() }}
|
||||
- name: Upload failed test artifacts
|
||||
if: ${{ !cancelled() }}
|
||||
uses: ./.github/actions/test_artifacts
|
||||
|
||||
windows:
|
||||
@@ -513,7 +339,7 @@ jobs:
|
||||
# Interfaces
|
||||
# Lua
|
||||
LUA_VER: 54
|
||||
LUA_VER_DOT: '5.4'
|
||||
LUA_VER_DOT: "5.4"
|
||||
LUA_RELEASE: 5.4.2
|
||||
LUA32_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win32_dllw6_lib.zip
|
||||
LUA64_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win64_dllw6_lib.zip
|
||||
@@ -522,16 +348,16 @@ jobs:
|
||||
LUA_DIR_SLASH: D:/Lua
|
||||
# Python 2
|
||||
PYTHON_VER: 27
|
||||
PYTHON_VER_DOT: '2.7'
|
||||
PYTHON_VER_DOT: "2.7"
|
||||
PYTHON_DIR: 'C:\Python27'
|
||||
# Python 3
|
||||
PYTHON3_VER: 313
|
||||
PYTHON3_VER_DOT: '3.13'
|
||||
PYTHON3_VER_DOT: "3.13"
|
||||
# Other dependencies
|
||||
# winpty
|
||||
WINPTY_URL: https://github.com/rprichard/winpty/releases/download/0.4.3/winpty-0.4.3-msvc2015.zip
|
||||
# libsodium
|
||||
SODIUM_VER: '1.0.20'
|
||||
SODIUM_VER: "1.0.20"
|
||||
# SODIUM_MSVC_URL: https://download.libsodium.org/libsodium/releases/libsodium-%SODIUM_VER%-stable-msvc.zip
|
||||
SODIUM_MSVC_URL: https://github.com/jedisct1/libsodium/releases/download/%SODIUM_VER%-RELEASE/libsodium-%SODIUM_VER%-msvc.zip
|
||||
SODIUM_MSVC_VER: v143
|
||||
@@ -619,7 +445,7 @@ jobs:
|
||||
msystem: ${{ env.MSYSTEM }}
|
||||
release: false
|
||||
|
||||
- name: Checkout repository from github
|
||||
- name: Checkout repository from GitHub
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Create a list of download URLs
|
||||
@@ -833,7 +659,8 @@ jobs:
|
||||
nmake -nologo -f Make_mvc.mak tiny VIMPROG=..\vim || exit 1
|
||||
)
|
||||
|
||||
- if: ${{ !cancelled() }}
|
||||
- name: Upload failed test artifacts
|
||||
if: ${{ !cancelled() }}
|
||||
uses: ./.github/actions/test_artifacts
|
||||
|
||||
- name: Generate gcov files
|
||||
@@ -846,7 +673,7 @@ jobs:
|
||||
- name: Codecov
|
||||
timeout-minutes: 20
|
||||
if: matrix.coverage
|
||||
uses: codecov/codecov-action@v5
|
||||
uses: codecov/codecov-action@v6
|
||||
with:
|
||||
directory: src
|
||||
flags: windows,${{ matrix.toolchain }}-${{ matrix.arch }}-${{ matrix.features }}
|
||||
|
||||
4
Filelist
4
Filelist
@@ -13,6 +13,7 @@ SRC_ALL = \
|
||||
.github/workflows/codeql-analysis.yml \
|
||||
.github/workflows/coverity.yml \
|
||||
.github/workflows/link-check.yml \
|
||||
.github/actions/build_vim_on_linux/action.yml \
|
||||
.github/actions/test_artifacts/action.yml \
|
||||
.github/dependabot.yml \
|
||||
.gitignore \
|
||||
@@ -23,6 +24,7 @@ SRC_ALL = \
|
||||
.editorconfig \
|
||||
ci/appveyor.bat \
|
||||
ci/config.mk*.sed \
|
||||
ci/gen_testset.py \
|
||||
ci/if_ver*.vim \
|
||||
ci/if_feat_check.vim \
|
||||
ci/lychee.toml \
|
||||
@@ -440,6 +442,7 @@ SRC_ALL = \
|
||||
src/libvterm/t/66screen_extent.test \
|
||||
src/libvterm/t/67screen_dbl_wh.test \
|
||||
src/libvterm/t/68screen_termprops.test \
|
||||
src/libvterm/t/69screen_pushline.test \
|
||||
src/libvterm/t/69screen_reflow.test \
|
||||
src/libvterm/t/90vttest_01-movement-1.test \
|
||||
src/libvterm/t/90vttest_01-movement-2.test \
|
||||
@@ -678,6 +681,7 @@ SRC_AMI = \
|
||||
src/Make_ami.mak \
|
||||
src/os_amiga.c \
|
||||
src/os_amiga.h \
|
||||
src/os_amiga_stubs.c \
|
||||
src/proto/os_amiga.pro \
|
||||
src/testdir/Make_amiga.mak \
|
||||
src/testdir/util/amiga.vim \
|
||||
|
||||
15
SECURITY.md
15
SECURITY.md
@@ -2,9 +2,16 @@
|
||||
|
||||
## Reporting a vulnerability
|
||||
|
||||
If you want to report a security issue, please privately disclose the issue to the vim-security mailing list
|
||||
vim-security@googlegroups.com
|
||||
|
||||
This is a private list, read only by the maintainers, but anybody can post, after moderation.
|
||||
If you want to report a security issue, please privately disclose the issue either via:
|
||||
- The vim-security mailing list: vim-security@googlegroups.com
|
||||
This is a private list, read only by the maintainers, but anybody can post.
|
||||
- [GitHub Security Advisories](https://github.com/vim/vim/security/advisories/new)
|
||||
|
||||
**Please don't publicly disclose the issue until it has been addressed by us.**
|
||||
|
||||
## Guidelines for reporting
|
||||
- Clearly explain **why** the behaviour is a security issue, not just that a bug exists.
|
||||
- Keep reports concise and focused.
|
||||
- Do not flood us with a list of issues. Report them one by one to ensure to not overwhelm us with the work load.
|
||||
- Do **not** submit AI-generated reports without carefully reviewing them first. Low-quality or
|
||||
speculative reports waste maintainer time and will be closed without action, and repeat offenders **will be banned**.
|
||||
|
||||
43
ci/gen_testset.py
Normal file
43
ci/gen_testset.py
Normal file
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import itertools
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
|
||||
|
||||
def generate_testset(n):
|
||||
cp = subprocess.run(["make", "-C", "src/testdir", "-npq"], capture_output=True)
|
||||
|
||||
tests = set()
|
||||
for line in cp.stdout.decode().split("\n"):
|
||||
if re.match(r"^(NEW_TESTS_RES|TEST_VIM9_RES) = ", line):
|
||||
tests.update(re.findall(r"\btest\w+\.res\b", line))
|
||||
|
||||
tests = sorted(list(tests))
|
||||
# move test_alot*.res to the end
|
||||
tests = (
|
||||
[t for t in tests if not t.startswith("test_alot")]
|
||||
+ [t for t in tests if t.startswith("test_alot_")]
|
||||
+ ["test_alot.res"]
|
||||
)
|
||||
targets = tests
|
||||
|
||||
if n > 1:
|
||||
targets = [ts for ts in itertools.batched(tests, n)]
|
||||
targets = [[t for t in ts if t] for ts in itertools.zip_longest(*targets)]
|
||||
|
||||
return targets
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("n", type=int, nargs="?", default=1)
|
||||
args = parser.parse_args()
|
||||
|
||||
print(json.dumps(generate_testset(args.n)))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -1,4 +1,4 @@
|
||||
README.ru.txt для версии 9.1 программы Vim — Vi IMproved.
|
||||
Краткое описание для версии 9.2 программы Vim — Vi IMproved.
|
||||
|
||||
|
||||
ЧТО ТАКОЕ РЕДАКТОР VIM?
|
||||
@@ -10,8 +10,8 @@ README.ru.txt для версии 9.1 программы Vim — Vi IMproved.
|
||||
наименований файлов и команд, операции с произвольными блоками текста,
|
||||
встроенный язык программирования и т. д. Также доступен графический интерфейс
|
||||
пользователя (GUI). И при этом сохраняется совместимость с редактором Vi,
|
||||
и те, у кого Vi «в крови», будут чувствовать себя как дома. Подробности о
|
||||
различиях с редактором Vi см. в файле "runtime/doc/vi_diff.txt".
|
||||
и те, у кого Vi «в крови», будут чувствовать себя как дома. Подробности
|
||||
о различиях с редактором Vi см. в файле "runtime/doc/vi_diff.txt".
|
||||
|
||||
Этот редактор очень удобен для работы с исходным кодом программ, а также
|
||||
разного рода других текстовых файлов. Все команды вводятся набором обычных
|
||||
@@ -25,9 +25,9 @@ README.ru.txt для версии 9.1 программы Vim — Vi IMproved.
|
||||
функционала (обычно называемый vim.tiny). Данная сборка чаще всего используется
|
||||
во многих дистрибутивах Linux в качестве предустановленного редактора vi.
|
||||
|
||||
Редактор Vim работает в ОС MS Windows (7, 8, 10, 11), macOS, Haiku, VMS и
|
||||
практически во всех UNIX-подобных системах. А перенос на другие платформы не
|
||||
должен представлять особой сложности.
|
||||
Редактор Vim работает в ОС MS Windows (7, 8, 10, 11), macOS, Haiku, VMS
|
||||
и практически во всех UNIX-подобных системах. А перенос на другие платформы
|
||||
не должен представлять особой сложности.
|
||||
Предыдущие версии редактора Vim работают в операционных системах OS/2, MS-DOS,
|
||||
MS Windows 95/98/Me/NT/2000/XP/Vista, AmigaDOS, Atari MiNT, BeOS и RISC OS.
|
||||
Но поддержка этих версий больше не осуществляется.
|
||||
@@ -45,11 +45,11 @@ MS Windows 95/98/Me/NT/2000/XP/Vista, AmigaDOS, Atari MiNT, BeOS и RISC OS.
|
||||
программы. Этот архив включает в себя документацию, файлы подсветки синтаксиса
|
||||
и другие файлы, которые используются редактором во время работы. Чтобы
|
||||
запустить программу Vim, вы должны получить либо архив с исполняемыми файлами,
|
||||
либо архив с исходным кодом. Какой из них вам нужен, зависит от того, на какой
|
||||
системе вы хотите запустить редактор Vim, и есть ли для этой системы
|
||||
либо архив с исходным кодом. Какой из них вам нужен, зависит от того,
|
||||
на какой системе вы хотите запустить редактор Vim, и есть ли для этой системы
|
||||
исполняемые файлы или вы должны компилировать программу самостоятельно.
|
||||
Чтобы узнать о доступных в настоящее время пакетах программы, посмотрите на
|
||||
веб‐странице https://www.vim.org/download.php.
|
||||
Чтобы узнать о доступных в настоящее время пакетах программы, посмотрите
|
||||
на веб‐странице https://www.vim.org/download.php.
|
||||
|
||||
Несколько полезных мест, где можно получить последнюю версию редактора Vim:
|
||||
* Посмотрите в git-хранилище на GitHub: https://github.com/vim/vim.
|
||||
@@ -61,8 +61,8 @@ https://github.com/vim/vim-win32-installer/releases.
|
||||
КОМПИЛЯЦИЯ РЕДАКТОРА Vim
|
||||
|
||||
Если для вашей системы уже есть готовые исполняемые файлы, вам не нужно самому
|
||||
компилировать редактор Vim. Если вы скачали архив с исходным кодом, то всё
|
||||
необходимое для компиляции программы Vim находится в каталоге "src".
|
||||
компилировать редактор Vim. Если вы скачали архив с исходным кодом,
|
||||
то всё необходимое для компиляции программы Vim находится в каталоге "src".
|
||||
Инструкции смотрите в файле src/INSTALL.
|
||||
|
||||
|
||||
@@ -85,12 +85,12 @@ README_vms.txt VMS
|
||||
|
||||
ДОКУМЕНТАЦИЯ ПО РЕДАКТОРУ Vim
|
||||
|
||||
Учебник Vim — это часовой практический курс для начинающих. Как правило, для
|
||||
работы с ним нужно набрать команду "vimtutor". Чтобы получить дополнительную
|
||||
информацию, смотрите раздел документации ":help tutor".
|
||||
Учебник Vim — это часовой практический курс для начинающих. Как правило,
|
||||
для работы с ним нужно набрать команду "vimtutor". Чтобы получить
|
||||
дополнительную информацию, смотрите раздел документации ":help tutor".
|
||||
|
||||
Лучше всего воспользоваться командой ":help" в редакторе Vim. Если у вас ещё
|
||||
нет исполняемого файла программы, прочитайте файл "runtime/doc/help.txt".
|
||||
Лучше всего воспользоваться командой ":help" в редакторе Vim. Если у вас
|
||||
ещё нет исполняемого файла программы, прочитайте файл "runtime/doc/help.txt".
|
||||
В нём содержатся отсылки на другие полезные файлы документации. Руководство
|
||||
пользователя можно читать как книгу, и оно рекомендуется для обучения работе
|
||||
с редактором Vim. Смотрите ":help user-manual".
|
||||
@@ -100,7 +100,7 @@ README_vms.txt VMS
|
||||
|
||||
Редактор Vim является благотворительным программным обеспечением.
|
||||
Использование и копирование программы Vim не ограничено, однако рекомендуется
|
||||
сделать добровольное пожертвование для нуждающихся детей в Уганде. Чтобы узнать
|
||||
сделать добровольное пожертвование для нуждающихся детей в Уганде. Чтобы узнать
|
||||
подробности, прочитайте, пожалуйста, файл "runtime/doc/uganda.txt" (введите
|
||||
команду ":help uganda" в редакторе Vim).
|
||||
|
||||
@@ -125,8 +125,8 @@ README_vms.txt VMS
|
||||
будет способствовать повышению заинтересованности команды разработчиков
|
||||
в продолжении работы над редактором Vim!
|
||||
|
||||
Самая свежая информация об оказании финансовой поддержки публикуется на
|
||||
веб-сайте программы Vim:
|
||||
Самая свежая информация об оказании финансовой поддержки публикуется
|
||||
на веб-сайте программы Vim:
|
||||
https://www.vim.org/sponsor/
|
||||
|
||||
|
||||
@@ -142,8 +142,8 @@ README_vms.txt VMS
|
||||
Последние новости о редакторе Vim можно найти на его домашней странице:
|
||||
https://www.vim.org/
|
||||
|
||||
Если у вас возникли вопросы, посмотрите полезные советы или документацию по
|
||||
редактору Vim:
|
||||
Если у вас возникли вопросы, посмотрите полезные советы или документацию
|
||||
по редактору Vim:
|
||||
https://www.vim.org/docs.php
|
||||
https://vim.fandom.com/wiki/Vim_Tips_Wiki
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@ vim9script
|
||||
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
|
||||
# Former Maintainers: Nikolai Weibull <now@bitwi.se>
|
||||
# Latest Revision: 2026 Feb 03
|
||||
# Last Change:
|
||||
# 2026 Mar 30 by Vim project: Use fnameescape for the Log command
|
||||
|
||||
# Typesetting {{{
|
||||
import autoload './typeset.vim'
|
||||
@@ -33,7 +35,7 @@ export def Log(bufname: string)
|
||||
var logpath = typeset.LogPath(bufname)
|
||||
|
||||
if filereadable(logpath)
|
||||
execute 'edit' typeset.LogPath(bufname)
|
||||
execute 'edit' .. fnameescape(typeset.LogPath(bufname))
|
||||
return
|
||||
endif
|
||||
|
||||
|
||||
42
runtime/autoload/dist/ft.vim
vendored
42
runtime/autoload/dist/ft.vim
vendored
@@ -3,7 +3,7 @@ vim9script
|
||||
# Vim functions for file type detection
|
||||
#
|
||||
# Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
# Last Change: 2026 Mar 20
|
||||
# Last Change: 2026 Apr 03
|
||||
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
# These functions are moved here from runtime/filetype.vim to make startup
|
||||
@@ -11,6 +11,18 @@ vim9script
|
||||
|
||||
var prolog_pattern = '^\s*\(:-\|%\+\(\s\|$\)\|\/\*\)\|\.\s*$'
|
||||
|
||||
def IsObjectScriptRoutine(): bool
|
||||
var line1 = getline(1)
|
||||
line1 = substitute(line1, '^\ufeff', '', '')
|
||||
if line1 =~? '^\s*routine\>'
|
||||
return true
|
||||
endif
|
||||
if line1 =~? '\<iris\>'
|
||||
return true
|
||||
endif
|
||||
return join(getline(1, 3), '') =~# '%RO'
|
||||
enddef
|
||||
|
||||
export def Check_inp()
|
||||
if getline(1) =~ '%%'
|
||||
setf tex
|
||||
@@ -75,6 +87,18 @@ export def FTasm()
|
||||
exe "setf " .. fnameescape(b:asmsyntax)
|
||||
enddef
|
||||
|
||||
export def FTmac()
|
||||
if exists("g:filetype_mac")
|
||||
exe "setf " .. g:filetype_mac
|
||||
else
|
||||
if IsObjectScriptRoutine()
|
||||
setf objectscript_routine
|
||||
else
|
||||
FTasm()
|
||||
endif
|
||||
endif
|
||||
enddef
|
||||
|
||||
export def FTasmsyntax()
|
||||
# see if the file contains any asmsyntax=foo overrides. If so, change
|
||||
# b:asmsyntax appropriately
|
||||
@@ -871,6 +895,10 @@ export def FTinc()
|
||||
if exists("g:filetype_inc")
|
||||
exe "setf " .. g:filetype_inc
|
||||
else
|
||||
if IsObjectScriptRoutine()
|
||||
setf objectscript_routine
|
||||
return
|
||||
endif
|
||||
for lnum in range(1, min([line("$"), 20]))
|
||||
var line = getline(lnum)
|
||||
if line =~? "perlscript"
|
||||
@@ -940,6 +968,16 @@ export def FTi()
|
||||
setf progress
|
||||
enddef
|
||||
|
||||
export def FTint()
|
||||
if exists("g:filetype_int")
|
||||
exe "setf " .. g:filetype_int
|
||||
elseif IsObjectScriptRoutine()
|
||||
setf objectscript_routine
|
||||
else
|
||||
setf hex
|
||||
endif
|
||||
enddef
|
||||
|
||||
var ft_pascal_comments = '^\s*\%({\|(\*\|//\)'
|
||||
var ft_pascal_keywords = '^\s*\%(program\|unit\|library\|uses\|begin\|procedure\|function\|const\|type\|var\)\>'
|
||||
|
||||
@@ -2637,6 +2675,8 @@ const ft_from_ext = {
|
||||
"rst": "rst",
|
||||
# RTF
|
||||
"rtf": "rtf",
|
||||
# ObjectScript Routine
|
||||
"rtn": "objectscript_routine",
|
||||
# Ruby
|
||||
"rb": "ruby",
|
||||
"rbw": "ruby",
|
||||
|
||||
4
runtime/autoload/dist/script.vim
vendored
4
runtime/autoload/dist/script.vim
vendored
@@ -4,7 +4,7 @@ vim9script
|
||||
# Invoked from "scripts.vim" in 'runtimepath'
|
||||
#
|
||||
# Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
# Last Change: 2025 Dec 22
|
||||
# Last Change: 2026 Apr 09
|
||||
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
export def DetectFiletype()
|
||||
@@ -115,7 +115,7 @@ export def Exe2filetype(name: string, line1: string): string
|
||||
return 'php'
|
||||
|
||||
# Python
|
||||
elseif name =~ 'python'
|
||||
elseif name =~ 'python' || (name == 'uv' && line1 =~ '\<uv run\>')
|
||||
return 'python'
|
||||
|
||||
# Groovy
|
||||
|
||||
12
runtime/autoload/dist/vim9.vim
vendored
12
runtime/autoload/dist/vim9.vim
vendored
@@ -3,7 +3,7 @@ vim9script
|
||||
# Vim runtime support library
|
||||
#
|
||||
# Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
# Last Change: 2026 Mar 10
|
||||
# Last Change: 2026 Apr 06
|
||||
|
||||
export def IsSafeExecutable(filetype: string, executable: string): bool
|
||||
if empty(exepath(executable))
|
||||
@@ -62,7 +62,7 @@ if has('unix')
|
||||
export def Launch(args: string)
|
||||
# Use job_start, because using !xdg-open is known not to work with zsh
|
||||
# ignore signals on exit
|
||||
job_start(split(args), {'stoponexit': ''})
|
||||
job_start(['sh', '-c', args], {'stoponexit': '', 'in_io': 'null', 'out_io': 'null', 'err_io': 'null'})
|
||||
enddef
|
||||
endif
|
||||
elseif has('win32')
|
||||
@@ -139,13 +139,7 @@ export def Open(file: string)
|
||||
setlocal shell&
|
||||
defer setbufvar('%', '&shell', shell)
|
||||
endif
|
||||
if has('unix') && !has('win32unix') && !exists('$WSL_DISTRO_NAME')
|
||||
# Linux: using job_start, so do not use shellescape.
|
||||
Launch($"{Viewer()} {file}")
|
||||
else
|
||||
# Windows/WSL/Cygwin: NEEDS shellescape because Launch uses '!'
|
||||
Launch($"{Viewer()} {shellescape(file, 1)}")
|
||||
endif
|
||||
Launch($"{Viewer()} {shellescape(file, 1)}")
|
||||
enddef
|
||||
|
||||
# Uncomment this line to check for compilation errors early
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
" Last Change:
|
||||
" 2025 Oct 27 by Vim project: don't use rustfmt as 'formatprg' by default
|
||||
" 2026 Jan 25 by Vim project: don't hide rustfmt errors, restore default var
|
||||
"
|
||||
" 2026 Mar 30 by Vim project: use fnameescape for :chdir commands
|
||||
"
|
||||
" Adapted from https://github.com/fatih/vim-go
|
||||
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
|
||||
@@ -135,7 +135,7 @@ function! s:RunRustfmt(command, tmpname, from_writepre)
|
||||
" chdir to the directory of the file
|
||||
let l:has_lcd = haslocaldir()
|
||||
let l:prev_cd = getcwd()
|
||||
execute 'lchdir! '.expand('%:h')
|
||||
execute 'lchdir! ' . fnameescape(expand('%:h'))
|
||||
|
||||
let l:buffer = getline(1, '$')
|
||||
if exists("*systemlist")
|
||||
@@ -215,6 +215,7 @@ function! s:RunRustfmt(command, tmpname, from_writepre)
|
||||
endif
|
||||
|
||||
" Restore the current directory if needed
|
||||
let l:prev_cd = fnameescape(l:prev_cd)
|
||||
if a:tmpname ==# ''
|
||||
if l:has_lcd
|
||||
execute 'lchdir! '.l:prev_cd
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
" 2025 Jul 16 by Vim Project: update minimum vim version
|
||||
" 2026 Feb 06 by Vim Project: consider 'nowrapscan' (#19333)
|
||||
" 2026 Feb 07 by Vim Project: make the path traversal detection more robust (#19341)
|
||||
" 2026 Apr 06 by Vim Project: fix bugs with lz4 support (#19925)
|
||||
" 2026 Apr 09 by Vim Project: fix bugs with zstd support (#19930)
|
||||
" 2026 Apr 09 by Vim Project: fix bug with dotted filename (#19930)
|
||||
"
|
||||
" Contains many ideas from Michael Toren's <tar.vim>
|
||||
"
|
||||
@@ -610,113 +613,120 @@ fun! tar#Extract()
|
||||
return
|
||||
endif
|
||||
|
||||
let tarball = expand("%")
|
||||
let tarbase = substitute(tarball,'\..*$','','')
|
||||
|
||||
let extractcmd= s:WinPath(g:tar_extractcmd)
|
||||
if filereadable(tarbase.".tar")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar ".shellescape(fname))
|
||||
let tarball = expand("%")
|
||||
if !filereadable(tarball)
|
||||
let &report= repkeep
|
||||
return
|
||||
endif
|
||||
|
||||
if tarball =~# "\.tar$"
|
||||
call system(extractcmd." ".shellescape(tarball)." ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarbase}.tar {fname}: failed!")
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarball} {fname}: failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ". fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tgz")
|
||||
elseif tarball =~# "\.tgz$"
|
||||
let extractcmd= substitute(extractcmd,"-","-z","")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tgz ".shellescape(fname))
|
||||
call system(extractcmd." ".shellescape(tarball)." ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarbase}.tgz {fname}: failed!")
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarball} {fname}: failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.gz")
|
||||
elseif tarball =~# "\.tar\.gz$"
|
||||
let extractcmd= substitute(extractcmd,"-","-z","")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.gz ".shellescape(fname))
|
||||
call system(extractcmd." ".shellescape(tarball)." ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarbase}.tar.gz {fname}: failed!")
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarball} {fname}: failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tbz")
|
||||
elseif tarball =~# "\.tbz$"
|
||||
let extractcmd= substitute(extractcmd,"-","-j","")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tbz ".shellescape(fname))
|
||||
call system(extractcmd." ".shellescape(tarball)." ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarbase}.tbz {fname}: failed!")
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarball} {fname}: failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.bz2")
|
||||
elseif tarball =~# "\.tar\.bz2$"
|
||||
let extractcmd= substitute(extractcmd,"-","-j","")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.bz2 ".shellescape(fname))
|
||||
call system(extractcmd." ".shellescape(tarball)." ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarbase}.tar.bz2 {fname}: failed!")
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarball} {fname}: failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.bz3")
|
||||
elseif tarball =~# "\.tar\.bz3$"
|
||||
let extractcmd= substitute(extractcmd,"-","-j","")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.bz3 ".shellescape(fname))
|
||||
call system(extractcmd." ".shellescape(tarball)." ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarbase}.tar.bz3 {fname}: failed!")
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarball} {fname}: failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".txz")
|
||||
elseif tarball =~# "\.txz$"
|
||||
let extractcmd= substitute(extractcmd,"-","-J","")
|
||||
call system(extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname))
|
||||
call system(extractcmd." ".shellescape(tarball)." ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarbase}.txz {fname}: failed!")
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarball} {fname}: failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.xz")
|
||||
elseif tarball =~# "\.tar\.xz$"
|
||||
let extractcmd= substitute(extractcmd,"-","-J","")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname))
|
||||
call system(extractcmd." ".shellescape(tarball)." ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarbase}.tar.xz {fname}: failed!")
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarball} {fname}: failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tzst")
|
||||
let extractcmd= substitute(extractcmd,"-","--zstd","")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tzst ".shellescape(fname))
|
||||
elseif tarball =~# "\.tzst$"
|
||||
let extractcmd= substitute(extractcmd,"-","--zstd -","")
|
||||
call system(extractcmd." ".shellescape(tarball)." ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarbase}.tzst {fname}: failed!")
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarball} {fname}: failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.zst")
|
||||
let extractcmd= substitute(extractcmd,"-","--zstd","")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.zst ".shellescape(fname))
|
||||
elseif tarball =~# "\.tar\.zst$"
|
||||
let extractcmd= substitute(extractcmd,"-","--zstd -","")
|
||||
call system(extractcmd." ".shellescape(tarball)." ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarbase}.tar.zst {fname}: failed!")
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarball} {fname}: failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tlz4")
|
||||
let extractcmd= substitute(extractcmd,"-","-I lz4","")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tlz4 ".shellescape(fname))
|
||||
elseif tarball =~# "\.tlz4$"
|
||||
if has("linux")
|
||||
let extractcmd= substitute(extractcmd,"-","-I lz4 -","")
|
||||
endif
|
||||
call system(extractcmd." ".shellescape(tarball)." ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarbase}.tlz4 {fname}: failed!")
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarball} {fname}: failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
elseif filereadable(tarbase.".tar.lz4")
|
||||
let extractcmd= substitute(extractcmd,"-","-I lz4","")
|
||||
call system(extractcmd." ".shellescape(tarbase).".tar.lz4".shellescape(fname))
|
||||
elseif tarball =~# "\.tar\.lz4$"
|
||||
if has("linux")
|
||||
let extractcmd= substitute(extractcmd,"-","-I lz4 -","")
|
||||
endif
|
||||
call system(extractcmd." ".shellescape(tarball)." ".shellescape(fname))
|
||||
if v:shell_error != 0
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarbase}.tar.lz4 {fname}: failed!")
|
||||
call s:Msg('tar#Extract', 'error', $"{extractcmd} {tarball} {fname}: failed!")
|
||||
else
|
||||
echo "***note*** successfully extracted ".fname
|
||||
endif
|
||||
|
||||
@@ -3,6 +3,8 @@ vim9script
|
||||
# Language: Generic TeX typesetting engine
|
||||
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
|
||||
# Latest Revision: 2026 Feb 19
|
||||
# Last Change:
|
||||
# 2026 Mar 30 by Vim project: Use fnameescape for the ProcessOutput command
|
||||
|
||||
# Constants and helpers {{{
|
||||
const SLASH = !exists("+shellslash") || &shellslash ? '/' : '\'
|
||||
@@ -60,7 +62,7 @@ def ProcessOutput(qfid: number, wd: string, efm: string, ch: channel, msg: strin
|
||||
endif
|
||||
|
||||
# Make sure the working directory is correct
|
||||
silent execute "lcd" wd
|
||||
silent execute "lcd" .. fnameescape(wd)
|
||||
setqflist([], 'a', {'id': qfid, 'lines': [msg], 'efm': efm})
|
||||
silent lcd -
|
||||
enddef
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
|
||||
" Last Change:
|
||||
" 2025 Feb 28 by Vim Project: add support for bzip3 (#16755)
|
||||
" 2026 Apr 05 by Vim Project: Detect path traversal attacks
|
||||
" 2026 Apr 09 by Vim Project: Detect more path traversal attacks
|
||||
" Copyright: (c) 2004-2011 by Charles E. Campbell
|
||||
" The VIM LICENSE applies to Vimball.vim, and Vimball.txt
|
||||
" (see |copyright|) except use "Vimball" instead of "Vim".
|
||||
@@ -18,15 +20,14 @@ if &cp || exists("g:loaded_vimball")
|
||||
finish
|
||||
endif
|
||||
let g:loaded_vimball = "v37"
|
||||
if v:version < 702
|
||||
if v:version < 704
|
||||
echohl WarningMsg
|
||||
echo "***warning*** this version of vimball needs vim 7.2"
|
||||
echo "***warning*** this version of vimball needs vim 7.4"
|
||||
echohl Normal
|
||||
finish
|
||||
endif
|
||||
let s:keepcpo= &cpo
|
||||
set cpo&vim
|
||||
"DechoTabOn
|
||||
|
||||
" =====================================================================
|
||||
" Constants: {{{1
|
||||
@@ -47,20 +48,6 @@ if !exists("s:USAGE")
|
||||
let g:netrw_cygwin= 0
|
||||
endif
|
||||
endif
|
||||
|
||||
" set up g:vimball_mkdir if the mkdir() call isn't defined
|
||||
if !exists("*mkdir")
|
||||
if exists("g:netrw_local_mkdir")
|
||||
let g:vimball_mkdir= g:netrw_local_mkdir
|
||||
elseif executable("mkdir")
|
||||
let g:vimball_mkdir= "mkdir"
|
||||
elseif executable("makedir")
|
||||
let g:vimball_mkdir= "makedir"
|
||||
endif
|
||||
if !exists(g:vimball_mkdir)
|
||||
call vimball#ShowMesg(s:WARNING,"(vimball) g:vimball_mkdir undefined")
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
" =====================================================================
|
||||
@@ -81,7 +68,6 @@ endif
|
||||
" filesize
|
||||
" [file]
|
||||
fun! vimball#MkVimball(line1,line2,writelevel,...) range
|
||||
" call Dfunc("MkVimball(line1=".a:line1." line2=".a:line2." writelevel=".a:writelevel." vimballname<".a:1.">) a:0=".a:0)
|
||||
if a:1 =~ '\.vim$' || a:1 =~ '\.txt$'
|
||||
let vbname= substitute(a:1,'\.\a\{3}$','.vmb','')
|
||||
else
|
||||
@@ -90,15 +76,12 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
|
||||
if vbname !~ '\.vmb$'
|
||||
let vbname= vbname.'.vmb'
|
||||
endif
|
||||
" call Decho("vbname<".vbname.">")
|
||||
if !a:writelevel && a:1 =~ '[\/]'
|
||||
call vimball#ShowMesg(s:ERROR,"(MkVimball) vimball name<".a:1."> should not include slashes; use ! to insist")
|
||||
" call Dret("MkVimball : vimball name<".a:1."> should not include slashes")
|
||||
return
|
||||
endif
|
||||
if !a:writelevel && filereadable(vbname)
|
||||
call vimball#ShowMesg(s:ERROR,"(MkVimball) file<".vbname."> exists; use ! to insist")
|
||||
" call Dret("MkVimball : file<".vbname."> already exists; use ! to insist")
|
||||
return
|
||||
endif
|
||||
|
||||
@@ -120,17 +103,14 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
|
||||
" record current tab, initialize while loop index
|
||||
let curtabnr = tabpagenr()
|
||||
let linenr = a:line1
|
||||
" call Decho("curtabnr=".curtabnr)
|
||||
|
||||
while linenr <= a:line2
|
||||
let svfile = getline(linenr)
|
||||
" call Decho("svfile<".svfile.">")
|
||||
|
||||
if !filereadable(svfile)
|
||||
call vimball#ShowMesg(s:ERROR,"unable to read file<".svfile.">")
|
||||
call s:ChgDir(curdir)
|
||||
call vimball#RestoreSettings()
|
||||
" call Dret("MkVimball")
|
||||
call s:ChgDir(curdir)
|
||||
call vimball#RestoreSettings()
|
||||
return
|
||||
endif
|
||||
|
||||
@@ -145,20 +125,18 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
|
||||
|
||||
let lastline= line("$") + 1
|
||||
if lastline == 2 && getline("$") == ""
|
||||
call setline(1,'" Vimball Archiver by Charles E. Campbell')
|
||||
call setline(2,'UseVimball')
|
||||
call setline(3,'finish')
|
||||
let lastline= line("$") + 1
|
||||
call setline(1,'" Vimball Archiver by Charles E. Campbell')
|
||||
call setline(2,'UseVimball')
|
||||
call setline(3,'finish')
|
||||
let lastline= line("$") + 1
|
||||
endif
|
||||
call setline(lastline ,substitute(svfile,'$',' [[[1',''))
|
||||
call setline(lastline+1,0)
|
||||
|
||||
" write the file from the tab
|
||||
" call Decho("exe $r ".fnameescape(svfile))
|
||||
exe "$r ".fnameescape(svfile)
|
||||
|
||||
call setline(lastline+1,line("$") - lastline - 1)
|
||||
" call Decho("lastline=".lastline." line$=".line("$"))
|
||||
|
||||
" restore to normal tab
|
||||
exe "tabn ".curtabnr
|
||||
@@ -170,13 +148,10 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
|
||||
call s:ChgDir(curdir)
|
||||
setlocal ff=unix
|
||||
if a:writelevel
|
||||
" call Decho("exe w! ".fnameescape(vbname))
|
||||
exe "w! ".fnameescape(vbname)
|
||||
else
|
||||
" call Decho("exe w ".fnameescape(vbname))
|
||||
exe "w ".fnameescape(vbname)
|
||||
endif
|
||||
" call Decho("Vimball<".vbname."> created")
|
||||
echo "Vimball<".vbname."> created"
|
||||
|
||||
" remove the evidence
|
||||
@@ -187,7 +162,6 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
|
||||
" restore options
|
||||
call vimball#RestoreSettings()
|
||||
|
||||
" call Dret("MkVimball")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
@@ -195,17 +169,9 @@ endfun
|
||||
" (invoked the the UseVimball command embedded in
|
||||
" vimballs' prologue)
|
||||
fun! vimball#Vimball(really,...)
|
||||
" call Dfunc("vimball#Vimball(really=".a:really.") a:0=".a:0)
|
||||
|
||||
if v:version < 701 || (v:version == 701 && !exists('*fnameescape'))
|
||||
echoerr "your vim is missing the fnameescape() function (pls upgrade to vim 7.2 or later)"
|
||||
" call Dret("vimball#Vimball : needs 7.1 with patch 299 or later")
|
||||
return
|
||||
endif
|
||||
|
||||
if getline(1) !~ '^" Vimball Archiver'
|
||||
echoerr "(Vimball) The current file does not appear to be a Vimball!"
|
||||
" call Dret("vimball#Vimball")
|
||||
return
|
||||
endif
|
||||
|
||||
@@ -215,7 +181,6 @@ fun! vimball#Vimball(really,...)
|
||||
let vimballfile = expand("%:tr")
|
||||
|
||||
" set up vimball tab
|
||||
" call Decho("setting up vimball tab")
|
||||
tabnew
|
||||
sil! file Vimball
|
||||
let vbtabnr= tabpagenr()
|
||||
@@ -227,21 +192,18 @@ fun! vimball#Vimball(really,...)
|
||||
" If, however, the user did not specify a full path, set the home to be below the current directory
|
||||
let home= expand(a:1)
|
||||
if has("win32") || has("win95") || has("win64") || has("win16")
|
||||
if home !~ '^\a:[/\\]'
|
||||
let home= getcwd().'/'.a:1
|
||||
endif
|
||||
if home !~ '^\a:[/\\]'
|
||||
let home= getcwd().'/'.a:1
|
||||
endif
|
||||
elseif home !~ '^/'
|
||||
let home= getcwd().'/'.a:1
|
||||
let home= getcwd().'/'.a:1
|
||||
endif
|
||||
else
|
||||
let home= vimball#VimballHome()
|
||||
endif
|
||||
" call Decho("home<".home.">")
|
||||
|
||||
" save current directory and remove older same-named vimball, if any
|
||||
let curdir = getcwd()
|
||||
" call Decho("home<".home.">")
|
||||
" call Decho("curdir<".curdir.">")
|
||||
|
||||
call s:ChgDir(home)
|
||||
let s:ok_unablefind= 1
|
||||
@@ -260,56 +222,49 @@ fun! vimball#Vimball(really,...)
|
||||
endif
|
||||
|
||||
" apportion vimball contents to various files
|
||||
" call Decho("exe tabn ".curtabnr)
|
||||
exe "tabn ".curtabnr
|
||||
" call Decho("linenr=".linenr." line$=".line("$"))
|
||||
while 1 < linenr && linenr < line("$")
|
||||
let fname = substitute(getline(linenr),'\t\[\[\[1$','','')
|
||||
let fname = substitute(fname,'\\','/','g')
|
||||
let fname = resolve(simplify(fname))
|
||||
let fsize = substitute(getline(linenr+1),'^\(\d\+\).\{-}$','\1','')+0
|
||||
let fenc = substitute(getline(linenr+1),'^\d\+\s*\(\S\{-}\)$','\1','')
|
||||
let filecnt = filecnt + 1
|
||||
" call Decho("fname<".fname."> fsize=".fsize." filecnt=".filecnt. " fenc=".fenc)
|
||||
" Do not allow a leading / or .. anywhere in the file name
|
||||
if fname =~ '\.\.' || fname =~ '^/'
|
||||
echomsg "(Vimball) Path Traversal Attack detected, aborting..."
|
||||
exe "tabn ".curtabnr
|
||||
bw! Vimball
|
||||
call s:ChgDir(curdir)
|
||||
return
|
||||
endif
|
||||
|
||||
if a:really
|
||||
echomsg "extracted <".fname.">: ".fsize." lines"
|
||||
else
|
||||
echomsg "would extract <".fname.">: ".fsize." lines"
|
||||
endif
|
||||
" call Decho("using L#".linenr.": will extract file<".fname.">")
|
||||
" call Decho("using L#".(linenr+1).": fsize=".fsize)
|
||||
|
||||
" Allow AsNeeded/ directory to take place of plugin/ directory
|
||||
" when AsNeeded/filename is filereadable or was present in VimballRecord
|
||||
if fname =~ '\<plugin/'
|
||||
let anfname= substitute(fname,'\<plugin/','AsNeeded/','')
|
||||
if filereadable(anfname) || (exists("s:VBRstring") && s:VBRstring =~# anfname)
|
||||
" call Decho("using anfname<".anfname."> instead of <".fname.">")
|
||||
let fname= anfname
|
||||
endif
|
||||
let anfname= substitute(fname,'\<plugin/','AsNeeded/','')
|
||||
if filereadable(anfname) || (exists("s:VBRstring") && s:VBRstring =~# anfname)
|
||||
let fname= anfname
|
||||
endif
|
||||
endif
|
||||
|
||||
" make directories if they don't exist yet
|
||||
if a:really
|
||||
" call Decho("making directories if they don't exist yet (fname<".fname.">)")
|
||||
let fnamebuf= substitute(fname,'\\','/','g')
|
||||
let dirpath = substitute(home,'\\','/','g')
|
||||
" call Decho("init: fnamebuf<".fnamebuf.">")
|
||||
" call Decho("init: dirpath <".dirpath.">")
|
||||
let dirpath = substitute(home,'\\','/','g')
|
||||
while fnamebuf =~ '/'
|
||||
let dirname = dirpath."/".substitute(fnamebuf,'/.*$','','')
|
||||
let dirpath = dirname
|
||||
let dirpath = dirname
|
||||
let fnamebuf = substitute(fnamebuf,'^.\{-}/\(.*\)$','\1','')
|
||||
" call Decho("dirname<".dirname.">")
|
||||
" call Decho("dirpath<".dirpath.">")
|
||||
if !isdirectory(dirname)
|
||||
" call Decho("making <".dirname.">")
|
||||
if exists("g:vimball_mkdir")
|
||||
call system(g:vimball_mkdir." ".shellescape(dirname))
|
||||
else
|
||||
call mkdir(dirname)
|
||||
endif
|
||||
call s:RecordInVar(home,"rmdir('".dirname."')")
|
||||
call mkdir(dirname)
|
||||
call s:RecordInVar(home,"rmdir('".dirname."')")
|
||||
endif
|
||||
endwhile
|
||||
endif
|
||||
@@ -319,13 +274,11 @@ fun! vimball#Vimball(really,...)
|
||||
" (skip over path/filename and qty-lines)
|
||||
let linenr = linenr + 2
|
||||
let lastline = linenr + fsize - 1
|
||||
" call Decho("exe ".linenr.",".lastline."yank a")
|
||||
" no point in handling a zero-length file
|
||||
if lastline >= linenr
|
||||
exe "silent ".linenr.",".lastline."yank a"
|
||||
|
||||
" copy "a" buffer into tab
|
||||
" call Decho('copy "a buffer into tab#'.vbtabnr)
|
||||
exe "tabn ".vbtabnr
|
||||
setlocal ma
|
||||
sil! %d
|
||||
@@ -336,38 +289,31 @@ fun! vimball#Vimball(really,...)
|
||||
" write tab to file
|
||||
if a:really
|
||||
let fnamepath= home."/".fname
|
||||
" call Decho("exe w! ".fnameescape(fnamepath))
|
||||
if fenc != ""
|
||||
exe "silent w! ++enc=".fnameescape(fenc)." ".fnameescape(fnamepath)
|
||||
else
|
||||
exe "silent w! ".fnameescape(fnamepath)
|
||||
endif
|
||||
echo "wrote ".fnameescape(fnamepath)
|
||||
call s:RecordInVar(home,"call delete('".fnamepath."')")
|
||||
if fenc != ""
|
||||
exe "silent w! ++enc=".fnameescape(fenc)." ".fnameescape(fnamepath)
|
||||
else
|
||||
exe "silent w! ".fnameescape(fnamepath)
|
||||
endif
|
||||
echo "wrote ".fnameescape(fnamepath)
|
||||
call s:RecordInVar(home,"call delete('".fnamepath."')")
|
||||
endif
|
||||
|
||||
" return to tab with vimball
|
||||
" call Decho("exe tabn ".curtabnr)
|
||||
exe "tabn ".curtabnr
|
||||
|
||||
" set up help if it's a doc/*.txt file
|
||||
" call Decho("didhelp<".didhelp."> fname<".fname.">")
|
||||
if a:really && didhelp == "" && fname =~ 'doc/[^/]\+\.\(txt\|..x\)$'
|
||||
let didhelp= substitute(fname,'^\(.*\<doc\)[/\\][^.]*\.\(txt\|..x\)$','\1','')
|
||||
" call Decho("didhelp<".didhelp.">")
|
||||
let didhelp= substitute(fname,'^\(.*\<doc\)[/\\][^.]*\.\(txt\|..x\)$','\1','')
|
||||
endif
|
||||
endif
|
||||
|
||||
" update for next file
|
||||
" call Decho("update linenr= [linenr=".linenr."] + [fsize=".fsize."] = ".(linenr+fsize))
|
||||
let linenr= linenr + fsize
|
||||
endwhile
|
||||
|
||||
" set up help
|
||||
" call Decho("about to set up help: didhelp<".didhelp.">")
|
||||
if didhelp != ""
|
||||
let htpath= home."/".didhelp
|
||||
" call Decho("exe helptags ".htpath)
|
||||
exe "helptags ".fnameescape(htpath)
|
||||
echo "did helptags"
|
||||
endif
|
||||
@@ -388,8 +334,6 @@ fun! vimball#Vimball(really,...)
|
||||
exe "sil! tabc! ".vbtabnr
|
||||
call vimball#RestoreSettings()
|
||||
call s:ChgDir(curdir)
|
||||
|
||||
" call Dret("vimball#Vimball")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
@@ -399,23 +343,18 @@ endfun
|
||||
" Usage: RmVimball (assume current file is a vimball; remove)
|
||||
" RmVimball vimballname
|
||||
fun! vimball#RmVimball(...)
|
||||
" call Dfunc("vimball#RmVimball() a:0=".a:0)
|
||||
if exists("g:vimball_norecord")
|
||||
" call Dret("vimball#RmVimball : (g:vimball_norecord)")
|
||||
return
|
||||
endif
|
||||
|
||||
if a:0 == 0
|
||||
let curfile= expand("%:tr")
|
||||
" call Decho("case a:0=0: curfile<".curfile."> (used expand(%:tr))")
|
||||
else
|
||||
if a:1 =~ '[\/]'
|
||||
call vimball#ShowMesg(s:USAGE,"RmVimball vimballname [path]")
|
||||
" call Dret("vimball#RmVimball : suspect a:1<".a:1.">")
|
||||
return
|
||||
endif
|
||||
let curfile= a:1
|
||||
" call Decho("case a:0=".a:0.": curfile<".curfile.">")
|
||||
endif
|
||||
if curfile =~ '\.vmb$'
|
||||
let curfile= substitute(curfile,'\.vmb','','')
|
||||
@@ -428,75 +367,60 @@ fun! vimball#RmVimball(...)
|
||||
let home= vimball#VimballHome()
|
||||
endif
|
||||
let curdir = getcwd()
|
||||
" call Decho("home <".home.">")
|
||||
" call Decho("curfile<".curfile.">")
|
||||
" call Decho("curdir <".curdir.">")
|
||||
|
||||
call s:ChgDir(home)
|
||||
if filereadable(".VimballRecord")
|
||||
" call Decho(".VimballRecord is readable")
|
||||
" call Decho("curfile<".curfile.">")
|
||||
keepalt keepjumps 1split
|
||||
sil! keepalt keepjumps e .VimballRecord
|
||||
let keepsrch= @/
|
||||
" call Decho('search for ^\M'.curfile.'.\m: ')
|
||||
" call Decho('search for ^\M'.curfile.'.\m{vba|vmb}: ')
|
||||
" call Decho('search for ^\M'.curfile.'\m[-0-9.]*\.{vba|vmb}: ')
|
||||
if search('^\M'.curfile."\m: ".'cw')
|
||||
let foundit= 1
|
||||
let foundit= 1
|
||||
elseif search('^\M'.curfile.".\mvmb: ",'cw')
|
||||
let foundit= 2
|
||||
let foundit= 2
|
||||
elseif search('^\M'.curfile.'\m[-0-9.]*\.vmb: ','cw')
|
||||
let foundit= 2
|
||||
let foundit= 2
|
||||
elseif search('^\M'.curfile.".\mvba: ",'cw')
|
||||
let foundit= 1
|
||||
let foundit= 1
|
||||
elseif search('^\M'.curfile.'\m[-0-9.]*\.vba: ','cw')
|
||||
let foundit= 1
|
||||
let foundit= 1
|
||||
else
|
||||
let foundit = 0
|
||||
endif
|
||||
if foundit
|
||||
if foundit == 1
|
||||
let exestring = substitute(getline("."),'^\M'.curfile.'\m\S\{-}\.vba: ','','')
|
||||
else
|
||||
let exestring = substitute(getline("."),'^\M'.curfile.'\m\S\{-}\.vmb: ','','')
|
||||
endif
|
||||
if foundit == 1
|
||||
let exestring = substitute(getline("."),'^\M'.curfile.'\m\S\{-}\.vba: ','','')
|
||||
else
|
||||
let exestring = substitute(getline("."),'^\M'.curfile.'\m\S\{-}\.vmb: ','','')
|
||||
endif
|
||||
let s:VBRstring= substitute(exestring,'call delete(','','g')
|
||||
let s:VBRstring= substitute(s:VBRstring,"[')]",'','g')
|
||||
" call Decho("exe ".exestring)
|
||||
sil! keepalt keepjumps exe exestring
|
||||
sil! keepalt keepjumps d
|
||||
let exestring= strlen(substitute(exestring,'call delete(.\{-})|\=',"D","g"))
|
||||
" call Decho("exestring<".exestring.">")
|
||||
echomsg "removed ".exestring." files"
|
||||
sil! keepalt keepjumps exe exestring
|
||||
sil! keepalt keepjumps d
|
||||
let exestring= strlen(substitute(exestring,'call delete(.\{-})|\=',"D","g"))
|
||||
echomsg "removed ".exestring." files"
|
||||
else
|
||||
let s:VBRstring= ''
|
||||
let curfile = substitute(curfile,'\.vmb','','')
|
||||
" call Decho("unable to find <".curfile."> in .VimballRecord")
|
||||
if !exists("s:ok_unablefind")
|
||||
let curfile = substitute(curfile,'\.vmb','','')
|
||||
if !exists("s:ok_unablefind")
|
||||
call vimball#ShowMesg(s:WARNING,"(RmVimball) unable to find <".curfile."> in .VimballRecord")
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
sil! keepalt keepjumps g/^\s*$/d
|
||||
sil! keepalt keepjumps wq!
|
||||
let @/= keepsrch
|
||||
endif
|
||||
call s:ChgDir(curdir)
|
||||
|
||||
" call Dret("vimball#RmVimball")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" vimball#Decompress: attempts to automatically decompress vimballs {{{2
|
||||
fun! vimball#Decompress(fname,...)
|
||||
" call Dfunc("Decompress(fname<".a:fname.">) a:0=".a:0)
|
||||
|
||||
" decompression:
|
||||
if expand("%") =~ '.*\.gz' && executable("gunzip")
|
||||
" handle *.gz with gunzip
|
||||
silent exe "!gunzip ".shellescape(a:fname)
|
||||
if v:shell_error != 0
|
||||
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) gunzip may have failed with <".a:fname.">")
|
||||
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) gunzip may have failed with <".a:fname.">")
|
||||
endif
|
||||
let fname= substitute(a:fname,'\.gz$','','')
|
||||
exe "e ".escape(fname,' \')
|
||||
@@ -506,7 +430,7 @@ fun! vimball#Decompress(fname,...)
|
||||
" handle *.gz with gzip -d
|
||||
silent exe "!gzip -d ".shellescape(a:fname)
|
||||
if v:shell_error != 0
|
||||
call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "gzip -d" may have failed with <'.a:fname.">")
|
||||
call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "gzip -d" may have failed with <'.a:fname.">")
|
||||
endif
|
||||
let fname= substitute(a:fname,'\.gz$','','')
|
||||
exe "e ".escape(fname,' \')
|
||||
@@ -516,7 +440,7 @@ fun! vimball#Decompress(fname,...)
|
||||
" handle *.bz2 with bunzip2
|
||||
silent exe "!bunzip2 ".shellescape(a:fname)
|
||||
if v:shell_error != 0
|
||||
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip2 may have failed with <".a:fname.">")
|
||||
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip2 may have failed with <".a:fname.">")
|
||||
endif
|
||||
let fname= substitute(a:fname,'\.bz2$','','')
|
||||
exe "e ".escape(fname,' \')
|
||||
@@ -526,7 +450,7 @@ fun! vimball#Decompress(fname,...)
|
||||
" handle *.bz2 with bzip2 -d
|
||||
silent exe "!bzip2 -d ".shellescape(a:fname)
|
||||
if v:shell_error != 0
|
||||
call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip2 -d" may have failed with <'.a:fname.">")
|
||||
call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip2 -d" may have failed with <'.a:fname.">")
|
||||
endif
|
||||
let fname= substitute(a:fname,'\.bz2$','','')
|
||||
exe "e ".escape(fname,' \')
|
||||
@@ -536,7 +460,7 @@ fun! vimball#Decompress(fname,...)
|
||||
" handle *.bz3 with bunzip3
|
||||
silent exe "!bunzip3 ".shellescape(a:fname)
|
||||
if v:shell_error != 0
|
||||
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip3 may have failed with <".a:fname.">")
|
||||
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip3 may have failed with <".a:fname.">")
|
||||
endif
|
||||
let fname= substitute(a:fname,'\.bz3$','','')
|
||||
exe "e ".escape(fname,' \')
|
||||
@@ -546,7 +470,7 @@ fun! vimball#Decompress(fname,...)
|
||||
" handle *.bz3 with bzip3 -d
|
||||
silent exe "!bzip3 -d ".shellescape(a:fname)
|
||||
if v:shell_error != 0
|
||||
call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip3 -d" may have failed with <'.a:fname.">")
|
||||
call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip3 -d" may have failed with <'.a:fname.">")
|
||||
endif
|
||||
let fname= substitute(a:fname,'\.bz3$','','')
|
||||
exe "e ".escape(fname,' \')
|
||||
@@ -556,7 +480,7 @@ fun! vimball#Decompress(fname,...)
|
||||
" handle *.zip with unzip
|
||||
silent exe "!unzip ".shellescape(a:fname)
|
||||
if v:shell_error != 0
|
||||
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) unzip may have failed with <".a:fname.">")
|
||||
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) unzip may have failed with <".a:fname.">")
|
||||
endif
|
||||
let fname= substitute(a:fname,'\.zip$','','')
|
||||
exe "e ".escape(fname,' \')
|
||||
@@ -564,14 +488,11 @@ fun! vimball#Decompress(fname,...)
|
||||
endif
|
||||
|
||||
if a:0 == 0| setlocal noma bt=nofile fmr=[[[,]]] fdm=marker | endif
|
||||
|
||||
" call Dret("Decompress")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" vimball#ShowMesg: {{{2
|
||||
fun! vimball#ShowMesg(level,msg)
|
||||
" call Dfunc("vimball#ShowMesg(level=".a:level." msg<".a:msg.">)")
|
||||
|
||||
let rulerkeep = &ruler
|
||||
let showcmdkeep = &showcmd
|
||||
@@ -596,13 +517,10 @@ fun! vimball#ShowMesg(level,msg)
|
||||
|
||||
let &ruler = rulerkeep
|
||||
let &showcmd = showcmdkeep
|
||||
|
||||
" call Dret("vimball#ShowMesg")
|
||||
endfun
|
||||
" =====================================================================
|
||||
" s:ChgDir: change directory (in spite of Windoze) {{{2
|
||||
fun! s:ChgDir(newdir)
|
||||
" call Dfunc("ChgDir(newdir<".a:newdir.">)")
|
||||
if (has("win32") || has("win95") || has("win64") || has("win16"))
|
||||
try
|
||||
exe 'silent cd '.fnameescape(substitute(a:newdir,'/','\\','g'))
|
||||
@@ -618,33 +536,22 @@ fun! s:ChgDir(newdir)
|
||||
exe 'silent cd '.fnameescape(a:newdir)
|
||||
endtry
|
||||
endif
|
||||
" call Dret("ChgDir : curdir<".getcwd().">")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" s:RecordInVar: record a un-vimball command in the .VimballRecord file {{{2
|
||||
fun! s:RecordInVar(home,cmd)
|
||||
" call Dfunc("RecordInVar(home<".a:home."> cmd<".a:cmd.">)")
|
||||
if a:cmd =~ '^rmdir'
|
||||
" if !exists("s:recorddir")
|
||||
" let s:recorddir= substitute(a:cmd,'^rmdir',"call s:Rmdir",'')
|
||||
" else
|
||||
" let s:recorddir= s:recorddir."|".substitute(a:cmd,'^rmdir',"call s:Rmdir",'')
|
||||
" endif
|
||||
elseif !exists("s:recordfile")
|
||||
if !exists("s:recordfile")
|
||||
let s:recordfile= a:cmd
|
||||
else
|
||||
let s:recordfile= s:recordfile."|".a:cmd
|
||||
endif
|
||||
" call Dret("RecordInVar : s:recordfile<".(exists("s:recordfile")? s:recordfile : "")."> s:recorddir<".(exists("s:recorddir")? s:recorddir : "").">")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" s:RecordInFile: {{{2
|
||||
fun! s:RecordInFile(home)
|
||||
" call Dfunc("s:RecordInFile()")
|
||||
if exists("g:vimball_norecord")
|
||||
" call Dret("s:RecordInFile : g:vimball_norecord")
|
||||
return
|
||||
endif
|
||||
|
||||
@@ -654,22 +561,19 @@ fun! s:RecordInFile(home)
|
||||
keepalt keepjumps 1split
|
||||
|
||||
let cmd= expand("%:tr").": "
|
||||
" call Decho("cmd<".cmd.">")
|
||||
|
||||
sil! keepalt keepjumps e .VimballRecord
|
||||
setlocal ma
|
||||
$
|
||||
if exists("s:recordfile") && exists("s:recorddir")
|
||||
let cmd= cmd.s:recordfile."|".s:recorddir
|
||||
let cmd= cmd.s:recordfile."|".s:recorddir
|
||||
elseif exists("s:recorddir")
|
||||
let cmd= cmd.s:recorddir
|
||||
let cmd= cmd.s:recorddir
|
||||
elseif exists("s:recordfile")
|
||||
let cmd= cmd.s:recordfile
|
||||
let cmd= cmd.s:recordfile
|
||||
else
|
||||
" call Dret("s:RecordInFile : neither recordfile nor recorddir exist")
|
||||
return
|
||||
return
|
||||
endif
|
||||
" call Decho("cmd<".cmd.">")
|
||||
|
||||
" put command into buffer, write .VimballRecord `file
|
||||
keepalt keepjumps put=cmd
|
||||
@@ -678,35 +582,28 @@ fun! s:RecordInFile(home)
|
||||
call s:ChgDir(curdir)
|
||||
|
||||
if exists("s:recorddir")
|
||||
" call Decho("unlet s:recorddir<".s:recorddir.">")
|
||||
unlet s:recorddir
|
||||
unlet s:recorddir
|
||||
endif
|
||||
if exists("s:recordfile")
|
||||
" call Decho("unlet s:recordfile<".s:recordfile.">")
|
||||
unlet s:recordfile
|
||||
unlet s:recordfile
|
||||
endif
|
||||
else
|
||||
" call Decho("s:record[file|dir] doesn't exist")
|
||||
endif
|
||||
|
||||
" call Dret("s:RecordInFile")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" vimball#VimballHome: determine/get home directory path (usually from rtp) {{{2
|
||||
fun! vimball#VimballHome()
|
||||
" call Dfunc("vimball#VimballHome()")
|
||||
if exists("g:vimball_home")
|
||||
let home= g:vimball_home
|
||||
else
|
||||
" go to vim plugin home
|
||||
for home in split(&rtp,',') + ['']
|
||||
if isdirectory(home) && filewritable(home) | break | endif
|
||||
let basehome= substitute(home,'[/\\]\.vim$','','')
|
||||
let basehome= substitute(home,'[/\\]\.vim$','','')
|
||||
if isdirectory(basehome) && filewritable(basehome)
|
||||
let home= basehome."/.vim"
|
||||
break
|
||||
endif
|
||||
let home= basehome."/.vim"
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
if home == ""
|
||||
" just pick the first directory
|
||||
@@ -717,18 +614,9 @@ fun! vimball#VimballHome()
|
||||
endif
|
||||
endif
|
||||
" insure that the home directory exists
|
||||
" call Decho("picked home<".home.">")
|
||||
if !isdirectory(home)
|
||||
if exists("g:vimball_mkdir")
|
||||
" call Decho("home<".home."> isn't a directory -- making it now with g:vimball_mkdir<".g:vimball_mkdir.">")
|
||||
" call Decho("system(".g:vimball_mkdir." ".shellescape(home).")")
|
||||
call system(g:vimball_mkdir." ".shellescape(home))
|
||||
else
|
||||
" call Decho("home<".home."> isn't a directory -- making it now with mkdir()")
|
||||
call mkdir(home)
|
||||
endif
|
||||
call mkdir(home)
|
||||
endif
|
||||
" call Dret("vimball#VimballHome <".home.">")
|
||||
return home
|
||||
endfun
|
||||
|
||||
@@ -758,13 +646,11 @@ fun! vimball#SaveSettings()
|
||||
endif
|
||||
" vimballs should be in unix format
|
||||
setlocal ff=unix
|
||||
" call Dret("SaveSettings")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" vimball#RestoreSettings: {{{2
|
||||
fun! vimball#RestoreSettings()
|
||||
" call Dfunc("RestoreSettings()")
|
||||
let @a = s:regakeep
|
||||
if exists("+acd")
|
||||
let &acd = s:acdkeep
|
||||
@@ -780,14 +666,12 @@ fun! vimball#RestoreSettings()
|
||||
let &l:ff = s:ffkeep
|
||||
if s:makeep[0] != 0
|
||||
" restore mark a
|
||||
" call Decho("restore mark-a: makeep=".string(makeep))
|
||||
call setpos("'a",s:makeep)
|
||||
endif
|
||||
if exists("+acd")
|
||||
unlet s:acdkeep
|
||||
endif
|
||||
unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep s:pmkeep s:ffkeep
|
||||
" call Dret("RestoreSettings")
|
||||
endfun
|
||||
|
||||
let &cpo = s:keepcpo
|
||||
@@ -795,4 +679,4 @@ unlet s:keepcpo
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" Modelines: {{{1
|
||||
" vim: fdm=marker
|
||||
" vim: fdm=marker et
|
||||
|
||||
@@ -5,7 +5,7 @@ vim9script
|
||||
# Shane-XB-Qian
|
||||
# Andrew Radev
|
||||
# thinca
|
||||
# Last Change: 2026 Feb 10
|
||||
# Last Change: 2026 Mar 30
|
||||
#
|
||||
# Vim script to handle jumping to the targets of several types of Vim commands
|
||||
# (:import, :packadd, :runtime, :colorscheme), and to autoloaded functions of
|
||||
@@ -168,7 +168,7 @@ def HandleImportLine(editcmd: string, curline: string) #{{{2
|
||||
"\<C-W>F": 'split',
|
||||
"\<C-W>gF": 'tab split',
|
||||
}[editcmd]
|
||||
execute how_to_split .. ' ' .. filepath
|
||||
execute how_to_split .. ' ' .. fnameescape(filepath)
|
||||
enddef
|
||||
|
||||
def Open(target: any, editcmd: string, search_pattern: string = '') #{{{2
|
||||
@@ -193,7 +193,7 @@ def Open(target: any, editcmd: string, search_pattern: string = '') #{{{2
|
||||
cmd = $'+silent\ call\ search(''{escaped_pattern}'')'
|
||||
endif
|
||||
|
||||
execute $'{split} {cmd} {fname}'
|
||||
execute $'{split} {cmd} {fnameescape(fname)}'
|
||||
|
||||
# If there are several files to open, put them into an arglist.
|
||||
if target->typename() == 'list<string>'
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
" 2025 Dec 20 by Vim Project: use :lcd instead of :cd
|
||||
" 2026 Feb 08 by Vim Project: use system() instead of :!
|
||||
" 2026 Mar 08 by Vim Project: Make ZipUpdatePS() check for powershell
|
||||
" 2026 Apr 01 by Vim Project: Detect more path traversal attacks
|
||||
" 2026 Apr 05 by Vim Project: Detect more path traversal attacks
|
||||
" 2026 Apr 14 by Vim Project: Detect more path traversal attacks on Windows
|
||||
" License: Vim License (see vim's :help license)
|
||||
" Copyright: Copyright (C) 2005-2019 Charles E. Campbell {{{1
|
||||
" Permission is hereby granted to use and distribute this code,
|
||||
@@ -367,6 +370,11 @@ fun! zip#Write(fname)
|
||||
return
|
||||
endif
|
||||
|
||||
if simplify(a:fname) =~ '\.\.[/\\]'
|
||||
call s:Mess('Error', "***error*** (zip#Write) Path Traversal Attack detected, not writing!")
|
||||
return
|
||||
endif
|
||||
|
||||
let curdir= getcwd()
|
||||
let tmpdir= tempname()
|
||||
if tmpdir =~ '\.'
|
||||
@@ -389,9 +397,21 @@ fun! zip#Write(fname)
|
||||
if has("unix")
|
||||
let zipfile = substitute(a:fname,'zipfile://\(.\{-}\)::[^\\].*$','\1','')
|
||||
let fname = substitute(a:fname,'zipfile://.\{-}::\([^\\].*\)$','\1','')
|
||||
" fname should not start with a leading slash to avoid writing anywhere into the system
|
||||
if fname =~ '^/'
|
||||
call s:Mess('Error', "***error*** (zip#Write) Path Traversal Attack detected, not writing!")
|
||||
call s:ChgDir(curdir,s:WARNING,"(zip#Write) unable to return to ".curdir."!")
|
||||
return
|
||||
endif
|
||||
else
|
||||
let zipfile = substitute(a:fname,'^.\{-}zipfile://\(.\{-}\)::[^\\].*$','\1','')
|
||||
let fname = substitute(a:fname,'^.\{-}zipfile://.\{-}::\([^\\].*\)$','\1','')
|
||||
" fname should not start with drive leter or a UNC path
|
||||
if fname =~ '^\%(\%(\a:[\\/]\)\|[\\/]\{2}\)'
|
||||
call s:Mess('Error', "***error*** (zip#Write) Path Traversal Attack detected, not writing!")
|
||||
call s:ChgDir(curdir,s:WARNING,"(zip#Write) unable to return to ".curdir."!")
|
||||
return
|
||||
endif
|
||||
endif
|
||||
if fname =~ '^[.]\{1,2}/'
|
||||
let gnu_cmd = g:zip_zipcmd . ' -d ' . s:Escape(fnamemodify(zipfile,":p"),0) . ' ' . s:Escape(fname,0)
|
||||
@@ -481,7 +501,7 @@ fun! zip#Extract()
|
||||
if fname =~ '/$'
|
||||
call s:Mess('Error', "***error*** (zip#Extract) Please specify a file, not a directory")
|
||||
return
|
||||
elseif fname =~ '^[.]\?[.]/'
|
||||
elseif fname =~ '^[.]\?[.]/' || simplify(fname) =~ '\.\.[/\\]'
|
||||
call s:Mess('Error', "***error*** (zip#Browse) Path Traversal Attack detected, not extracting!")
|
||||
return
|
||||
endif
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*builtin.txt* For Vim version 9.2. Last change: 2026 Mar 17
|
||||
*builtin.txt* For Vim version 9.2. Last change: 2026 Apr 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -82,7 +82,7 @@ browsedir({title}, {initdir}) String put up a directory requester
|
||||
bufadd({name}) Number add a buffer to the buffer list
|
||||
bufexists({buf}) Number |TRUE| if buffer {buf} exists
|
||||
buflisted({buf}) Number |TRUE| if buffer {buf} is listed
|
||||
bufload({buf}) Number load buffer {buf} if not loaded yet
|
||||
bufload({buf}) none load buffer {buf} if not loaded yet
|
||||
bufloaded({buf}) Number |TRUE| if buffer {buf} is loaded
|
||||
bufname([{buf}]) String name of the buffer {buf}
|
||||
bufnr([{buf} [, {create}]]) Number number of the buffer {buf}
|
||||
@@ -105,9 +105,10 @@ ch_evalraw({handle}, {string} [, {options}])
|
||||
any evaluate {string} on raw {handle}
|
||||
ch_getbufnr({handle}, {what}) Number get buffer number for {handle}/{what}
|
||||
ch_getjob({channel}) Job get the Job of {channel}
|
||||
ch_info({handle}) String info about channel {handle}
|
||||
ch_info({handle}) Dict info about channel {handle}
|
||||
ch_listen({address} [, {options}])
|
||||
Channel listen on {address}
|
||||
Channel listen on {address} - port on loopback
|
||||
or UNIX domain socket
|
||||
ch_log({msg} [, {handle}]) none write {msg} in the channel log file
|
||||
ch_logfile({fname} [, {mode}]) none start logging channel activity
|
||||
ch_open({address} [, {options}])
|
||||
@@ -120,7 +121,7 @@ ch_readraw({handle} [, {options}])
|
||||
ch_sendexpr({handle}, {expr} [, {options}])
|
||||
any send {expr} over JSON {handle}
|
||||
ch_sendraw({handle}, {expr} [, {options}])
|
||||
any send {expr} over raw {handle}
|
||||
none send {expr} over raw {handle}
|
||||
ch_setoptions({handle}, {options})
|
||||
none set options for {handle}
|
||||
ch_status({handle} [, {options}])
|
||||
@@ -192,7 +193,7 @@ extendnew({expr1}, {expr2} [, {expr3}])
|
||||
List/Dict
|
||||
like |extend()| but creates a new List
|
||||
or Dictionary
|
||||
feedkeys({string} [, {mode}]) Number add key sequence to typeahead buffer
|
||||
feedkeys({string} [, {mode}]) none add key sequence to typeahead buffer
|
||||
filecopy({from}, {to}) Number |TRUE| if copying file {from} to {to}
|
||||
worked
|
||||
filereadable({file}) Number |TRUE| if {file} is a readable file
|
||||
@@ -219,7 +220,7 @@ foldtext() String line displayed for closed fold
|
||||
foldtextresult({lnum}) String text for closed fold at {lnum}
|
||||
foreach({expr1}, {expr2}) List/Tuple/Dict/Blob/String
|
||||
for each item in {expr1} call {expr2}
|
||||
foreground() Number bring the Vim window to the foreground
|
||||
foreground() none bring the Vim window to the foreground
|
||||
fullcommand({name} [, {vim9}]) String get full command from {name}
|
||||
funcref({name} [, {arglist}] [, {dict}])
|
||||
Funcref reference to function {name}
|
||||
@@ -351,7 +352,7 @@ inputsecret({prompt} [, {text}])
|
||||
insert({object}, {item} [, {idx}])
|
||||
List insert {item} in {object}
|
||||
[before {idx}]
|
||||
instanceof({object}, {class}) Number |TRUE| if {object} is an instance of
|
||||
instanceof({object}, {class}) Bool |TRUE| if {object} is an instance of
|
||||
{class}
|
||||
interrupt() none interrupt script execution
|
||||
invert({expr}) Number bitwise invert
|
||||
@@ -391,7 +392,7 @@ list2tuple({list}) Tuple turn {list} of items into a tuple
|
||||
listener_add({callback} [, {buf} [, {unbuffered}]])
|
||||
Number add a callback to listen to changes
|
||||
listener_flush([{buf}]) none invoke listener callbacks
|
||||
listener_remove({id}) none remove a listener callback
|
||||
listener_remove({id}) Number remove a listener callback
|
||||
localtime() Number current time
|
||||
log({expr}) Float natural logarithm (base e) of {expr}
|
||||
log10({expr}) Float logarithm of Float {expr} to base 10
|
||||
@@ -455,8 +456,8 @@ popup_clear() none close all popup windows
|
||||
popup_close({id} [, {result}]) none close popup window {id}
|
||||
popup_create({what}, {options}) Number create a popup window
|
||||
popup_dialog({what}, {options}) Number create a popup window used as a dialog
|
||||
popup_filter_menu({id}, {key}) Number filter for a menu popup window
|
||||
popup_filter_yesno({id}, {key}) Number filter for a dialog popup window
|
||||
popup_filter_menu({id}, {key}) Bool filter for a menu popup window
|
||||
popup_filter_yesno({id}, {key}) Bool filter for a dialog popup window
|
||||
popup_findecho() Number get window ID of popup for `:echowin`
|
||||
popup_findinfo() Number get window ID of info popup window
|
||||
popup_findpreview() Number get window ID of preview popup window
|
||||
@@ -486,7 +487,7 @@ prompt_setinterrupt({buf}, {text})
|
||||
none set prompt interrupt function
|
||||
prompt_setprompt({buf}, {text}) none set prompt text
|
||||
prop_add({lnum}, {col}, {props})
|
||||
none add one text property
|
||||
Number add one text property
|
||||
prop_add_list({props}, [[{lnum}, {col}, {end-lnum}, {end-col}], ...])
|
||||
none add multiple text properties
|
||||
prop_clear({lnum} [, {lnum-end} [, {props}]])
|
||||
@@ -531,7 +532,7 @@ reltimefloat({time}) Float turn the time value into a Float
|
||||
reltimestr({time}) String turn time value into a String
|
||||
remote_expr({server}, {string} [, {idvar} [, {timeout}]])
|
||||
String send expression
|
||||
remote_foreground({server}) Number bring Vim server to the foreground
|
||||
remote_foreground({server}) none bring Vim server to the foreground
|
||||
remote_peek({serverid} [, {retvar}])
|
||||
Number check for reply string
|
||||
remote_read({serverid} [, {timeout}])
|
||||
@@ -581,7 +582,7 @@ setbufvar({buf}, {varname}, {val})
|
||||
none set {varname} in buffer {buf} to {val}
|
||||
setcellwidths({list}) none set character cell width overrides
|
||||
setcharpos({expr}, {list}) Number set the {expr} position to {list}
|
||||
setcharsearch({dict}) Dict set character search from {dict}
|
||||
setcharsearch({dict}) none set character search from {dict}
|
||||
setcmdline({str} [, {pos}]) Number set command-line
|
||||
setcmdpos({pos}) Number set cursor position in command-line
|
||||
setcursorcharpos({list}) Number move cursor to position in {list}
|
||||
@@ -642,7 +643,7 @@ sound_playfile({path} [, {callback}])
|
||||
Number play sound file {path}
|
||||
sound_stop({id}) none stop playing sound {id}
|
||||
soundfold({word}) String sound-fold {word}
|
||||
spellbadword() String badly spelled word at cursor
|
||||
spellbadword() List badly spelled word at cursor
|
||||
spellsuggest({word} [, {max} [, {capital}]])
|
||||
List spelling suggestions
|
||||
split({expr} [, {pat} [, {keepempty}]])
|
||||
@@ -738,7 +739,7 @@ term_setrestore({buf}, {command})
|
||||
term_setsize({buf}, {rows}, {cols})
|
||||
none set the size of a terminal
|
||||
term_start({cmd} [, {options}]) Number open a terminal window and run a job
|
||||
term_wait({buf} [, {time}]) Number wait for screen to be updated
|
||||
term_wait({buf} [, {time}]) none wait for screen to be updated
|
||||
terminalprops() Dict properties of the terminal
|
||||
test_alloc_fail({id}, {countdown}, {repeat})
|
||||
none make memory allocation fail
|
||||
@@ -746,11 +747,11 @@ test_autochdir() none enable 'autochdir' during startup
|
||||
test_feedinput({string}) none add key sequence to input buffer
|
||||
test_garbagecollect_now() none free memory right now for testing
|
||||
test_garbagecollect_soon() none free memory soon for testing
|
||||
test_getvalue({string}) any get value of an internal variable
|
||||
test_getvalue({string}) Number get value of an internal variable
|
||||
test_gui_event({event}, {args}) bool generate a GUI event for testing
|
||||
test_ignore_error({expr}) none ignore a specific error
|
||||
test_mswin_event({event}, {args})
|
||||
bool generate MS-Windows event for testing
|
||||
Bool generate MS-Windows event for testing
|
||||
test_null_blob() Blob null value for testing
|
||||
test_null_channel() Channel null value for testing
|
||||
test_null_dict() Dict null value for testing
|
||||
@@ -767,7 +768,7 @@ test_setmouse({row}, {col}) none set the mouse position for testing
|
||||
test_settime({expr}) none set current time for testing
|
||||
test_srand_seed([{seed}]) none set seed for testing srand()
|
||||
test_unknown() any unknown value for testing
|
||||
test_void() any void value for testing
|
||||
test_void() none void value for testing
|
||||
timer_info([{id}]) List information about timers
|
||||
timer_pause({id}, {pause}) none pause or unpause a timer
|
||||
timer_start({time}, {callback} [, {options}])
|
||||
@@ -787,7 +788,7 @@ tuple2list({tuple}) List turn {tuple} of items into a list
|
||||
type({expr}) Number type of value {expr}
|
||||
typename({expr}) String representation of the type of {expr}
|
||||
undofile({name}) String undo file name for {name}
|
||||
undotree([{buf}]) List undo file tree for buffer {buf}
|
||||
undotree([{buf}]) Dict undo file tree for buffer {buf}
|
||||
uniq({list} [, {func} [, {dict}]])
|
||||
List remove adjacent duplicates from a list
|
||||
uri_decode({string}) String URI-decode a string
|
||||
@@ -802,7 +803,7 @@ virtcol2col({winid}, {lnum}, {col})
|
||||
Number byte index of a character on screen
|
||||
visualmode([{expr}]) String last visual mode used
|
||||
wildmenumode() Number whether 'wildmenu' mode is active
|
||||
wildtrigger() Number start wildcard expansion
|
||||
wildtrigger() none start wildcard expansion
|
||||
win_execute({id}, {command} [, {silent}])
|
||||
String execute {command} in window {id}
|
||||
win_findbuf({bufnr}) List find windows containing {bufnr}
|
||||
@@ -1272,7 +1273,7 @@ balloon_show({expr}) *balloon_show()*
|
||||
{only available when compiled with the |+balloon_eval| or
|
||||
|+balloon_eval_term| feature}
|
||||
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
balloon_split({msg}) *balloon_split()*
|
||||
@@ -1499,7 +1500,7 @@ bufload({buf}) *bufload()*
|
||||
Can also be used as a |method|: >
|
||||
eval 'somename'->bufload()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
bufloaded({buf}) *bufloaded()*
|
||||
@@ -1894,7 +1895,7 @@ clearmatches([{win}]) *clearmatches()*
|
||||
Can also be used as a |method|: >
|
||||
GetWin()->clearmatches()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
cmdcomplete_info() *cmdcomplete_info()*
|
||||
@@ -2014,7 +2015,7 @@ complete({startcol}, {matches}) *complete()* *E785*
|
||||
second argument: >
|
||||
GetMatches()->complete(col('.'))
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
complete_add({expr}) *complete_add()*
|
||||
@@ -2658,7 +2659,7 @@ echoraw({string}) *echoraw()*
|
||||
call echoraw(&t_TI)
|
||||
< Use with care, you can mess up the terminal this way.
|
||||
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
empty({expr}) *empty()*
|
||||
@@ -2701,7 +2702,7 @@ err_teapot([{expr}]) *err_teapot()*
|
||||
indicating that coffee is temporarily not available.
|
||||
If {expr} is present it must be a String.
|
||||
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
escape({string}, {chars}) *escape()*
|
||||
@@ -3218,7 +3219,7 @@ feedkeys({string} [, {mode}]) *feedkeys()*
|
||||
Can also be used as a |method|: >
|
||||
GetInput()->feedkeys()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
filecopy({from}, {to}) *filecopy()*
|
||||
@@ -3655,7 +3656,7 @@ foreground() *foreground()*
|
||||
allow a window to bring itself to the foreground. Use
|
||||
|remote_foreground()| instead.
|
||||
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
{only in the Win32, Motif and GTK GUI versions and the
|
||||
Win32 console version}
|
||||
|
||||
@@ -3807,7 +3808,7 @@ garbagecollect([{atexit}]) *garbagecollect()*
|
||||
type a character. To force garbage collection immediately use
|
||||
|test_garbagecollect_now()|.
|
||||
|
||||
Return type: |String|
|
||||
Return type: void
|
||||
|
||||
|
||||
get({list}, {idx} [, {default}]) *get()* *get()-list*
|
||||
@@ -6268,7 +6269,7 @@ instanceof({object}, {class}) *instanceof()* *E614* *E616* *E693*
|
||||
< Can also be used as a |method|: >
|
||||
myobj->instanceof(mytype)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: |vim9-boolean|
|
||||
|
||||
|
||||
interrupt() *interrupt()*
|
||||
@@ -6432,6 +6433,8 @@ js_decode({string}) *js_decode()*
|
||||
- Strings can be in single quotes.
|
||||
- Empty items in an array (between two commas) are allowed and
|
||||
result in v:none items.
|
||||
- Capitalization is ignored in keywords: true, false, null,
|
||||
NaN, Infinity and -Infinity.
|
||||
|
||||
Can also be used as a |method|: >
|
||||
ReadObject()->js_decode()
|
||||
@@ -6470,12 +6473,9 @@ json_decode({string}) *json_decode()* *E491*
|
||||
same as {"1":2}.
|
||||
- More floating point numbers are recognized, e.g. "1." for
|
||||
"1.0", or "001.2" for "1.2". Special floating point values
|
||||
"Infinity", "-Infinity" and "NaN" (capitalization ignored)
|
||||
are accepted.
|
||||
"Infinity", "-Infinity" and "NaN" are accepted.
|
||||
- Leading zeroes in integer numbers are ignored, e.g. "012"
|
||||
for "12" or "-012" for "-12".
|
||||
- Capitalization is ignored in literal names null, true or
|
||||
false, e.g. "NULL" for "null", "True" for "true".
|
||||
- Control characters U+0000 through U+001F which are not
|
||||
escaped in strings are accepted, e.g. " " (tab
|
||||
character in string) for "\t".
|
||||
@@ -6483,10 +6483,10 @@ json_decode({string}) *json_decode()* *E491*
|
||||
and results in v:none.
|
||||
- Backslash in an invalid 2-character sequence escape is
|
||||
ignored, e.g. "\a" is decoded as "a".
|
||||
- A correct surrogate pair in JSON strings should normally be
|
||||
a 12 character sequence such as "\uD834\uDD1E", but
|
||||
json_decode() silently accepts truncated surrogate pairs
|
||||
such as "\uD834" or "\uD834\u"
|
||||
- A surrogate pair in JSON strings is a 12 character sequence
|
||||
such as "\uD834\uDD1E". A lone surrogate or an invalid
|
||||
surrogate pair (e.g. "\uD800" or "\uD800\uD800") results
|
||||
in an error.
|
||||
*E938*
|
||||
A duplicate key in an object, valid in rfc7159, is not
|
||||
accepted by json_decode() as the result must be a valid Vim
|
||||
@@ -6877,7 +6877,7 @@ listener_flush([{buf}]) *listener_flush()*
|
||||
Can also be used as a |method|: >
|
||||
GetBuffer()->listener_flush()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
listener_remove({id}) *listener_remove()*
|
||||
@@ -7221,7 +7221,7 @@ mapset({dict})
|
||||
mapset(d)
|
||||
endfor
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
match({expr}, {pat} [, {start} [, {count}]]) *match()*
|
||||
@@ -8484,8 +8484,10 @@ prompt_setcallback({buf}, {expr}) *prompt_setcallback()*
|
||||
|
||||
< Can also be used as a |method|: >
|
||||
GetBuffer()->prompt_setcallback(callback)
|
||||
<
|
||||
Return type: void
|
||||
|
||||
< {only available when compiled with the |+channel| feature}
|
||||
{only available when compiled with the |+channel| feature}
|
||||
|
||||
prompt_setinterrupt({buf}, {expr}) *prompt_setinterrupt()*
|
||||
Set a callback for buffer {buf} to {expr}. When {expr} is an
|
||||
@@ -8499,7 +8501,7 @@ prompt_setinterrupt({buf}, {expr}) *prompt_setinterrupt()*
|
||||
Can also be used as a |method|: >
|
||||
GetBuffer()->prompt_setinterrupt(callback)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
{only available when compiled with the |+channel| feature}
|
||||
|
||||
@@ -8513,7 +8515,7 @@ prompt_setprompt({buf}, {text}) *prompt_setprompt()*
|
||||
Can also be used as a |method|: >
|
||||
GetBuffer()->prompt_setprompt('command: ')
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
{only available when compiled with the |+channel| feature}
|
||||
|
||||
@@ -8876,7 +8878,7 @@ redraw_listener_remove({id}) *redraw_listener_remove()*
|
||||
Can also be used as a |method|: >
|
||||
GetRedrawListenerId()->redraw_listener_remove()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
reduce({object}, {func} [, {initial}]) *reduce()* *E998*
|
||||
@@ -9048,7 +9050,7 @@ remote_foreground({server}) *remote_foreground()*
|
||||
Can also be used as a |method|: >
|
||||
ServerName()->remote_foreground()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
{only in the Win32, Motif and GTK GUI versions and the
|
||||
Win32 console version}
|
||||
@@ -9132,7 +9134,7 @@ remote_startserver({name}) *remote_startserver()* *E941* *E942*
|
||||
Can also be used as a |method|: >
|
||||
ServerName()->remote_startserver()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
{only available when compiled with the |+clientserver| feature}
|
||||
|
||||
@@ -9880,7 +9882,7 @@ setbufvar({buf}, {varname}, {val}) *setbufvar()*
|
||||
third argument: >
|
||||
GetValue()->setbufvar(buf, varname)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
setcellwidths({list}) *setcellwidths()*
|
||||
@@ -9917,7 +9919,7 @@ setcellwidths({list}) *setcellwidths()*
|
||||
match with what Vim knows about each emoji. If it doesn't
|
||||
look right you need to adjust the {list} argument.
|
||||
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
setcharpos({expr}, {list}) *setcharpos()*
|
||||
@@ -9960,7 +9962,7 @@ setcharsearch({dict}) *setcharsearch()*
|
||||
Can also be used as a |method|: >
|
||||
SavedSearch()->setcharsearch()
|
||||
<
|
||||
Return type: dict<any>
|
||||
Return type: void
|
||||
|
||||
|
||||
setcmdline({str} [, {pos}]) *setcmdline()*
|
||||
@@ -10027,7 +10029,7 @@ setenv({name}, {val}) *setenv()*
|
||||
second argument: >
|
||||
GetPath()->setenv('PATH')
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
setfperm({fname}, {mode}) *setfperm()* *chmod*
|
||||
@@ -10386,7 +10388,7 @@ settabvar({tabnr}, {varname}, {val}) *settabvar()*
|
||||
third argument: >
|
||||
GetValue()->settabvar(tab, name)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()*
|
||||
@@ -10411,7 +10413,7 @@ settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()*
|
||||
fourth argument: >
|
||||
GetValue()->settabwinvar(tab, winnr, name)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
settagstack({nr}, {dict} [, {action}]) *settagstack()*
|
||||
@@ -10464,7 +10466,7 @@ setwinvar({winnr}, {varname}, {val}) *setwinvar()*
|
||||
third argument: >
|
||||
GetValue()->setwinvar(winnr, name)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
sha256({expr}) *sha256()*
|
||||
@@ -10704,7 +10706,7 @@ sound_clear() *sound_clear()*
|
||||
On some Linux systems you may need the libcanberra-pulse
|
||||
package, otherwise sound may not stop.
|
||||
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
{only available when compiled with the |+sound| feature}
|
||||
|
||||
@@ -10774,7 +10776,7 @@ sound_stop({id}) *sound_stop()*
|
||||
Can also be used as a |method|: >
|
||||
soundid->sound_stop()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
{only available when compiled with the |+sound| feature}
|
||||
|
||||
@@ -11695,6 +11697,30 @@ system({expr} [, {input}]) *system()* *E677*
|
||||
Get the output of the shell command {expr} as a |String|. See
|
||||
|systemlist()| to get the output as a |List|.
|
||||
|
||||
{expr} can be a |String| or a |List|.
|
||||
When {expr} is a |String|, the command is executed through the
|
||||
shell (see below for how the command is constructed).
|
||||
|
||||
*E1575*
|
||||
When {expr} is a |List|, the first item is the executable and
|
||||
the remaining items are passed as arguments directly. The
|
||||
command is executed without using a shell, similar to
|
||||
|job_start()|. Since no shell is involved, shell features
|
||||
such as redirection, piping, globbing, environment variable
|
||||
expansion and backtick expansion will not work. Characters
|
||||
like ">" are passed as literal arguments to the command, not
|
||||
interpreted as redirection. Use this form when arguments may
|
||||
contain special characters that should not be interpreted by
|
||||
the shell. Example: >
|
||||
:let out = system(['grep', '-r', 'pattern', '.'])
|
||||
< With the String form ">" would be shell redirection, but
|
||||
with a List it is passed as a literal argument: >
|
||||
:let out = system(['echo', 'hello', '>', 'world'])
|
||||
< This outputs "hello > world", not redirect to a file.
|
||||
|
||||
To use the shell explicitly with a List: >
|
||||
:let out = system(['/bin/sh', '-c', 'echo $HOME'])
|
||||
<
|
||||
When {input} is given and is a |String| this string is written
|
||||
to a file and passed as stdin to the command. The string is
|
||||
written as-is, you need to take care of using the correct line
|
||||
@@ -11720,11 +11746,11 @@ system({expr} [, {input}]) *system()* *E677*
|
||||
being echoed on the screen. >
|
||||
:silent let f = system('ls *.vim')
|
||||
<
|
||||
Note: Use |shellescape()| or |::S| with |expand()| or
|
||||
|fnamemodify()| to escape special characters in a command
|
||||
argument. Newlines in {expr} may cause the command to fail.
|
||||
The characters in 'shellquote' and 'shellxquote' may also
|
||||
cause trouble.
|
||||
Note: When {expr} is a String, use |shellescape()| or |::S|
|
||||
with |expand()| or |fnamemodify()| to escape special
|
||||
characters in a command argument. Newlines in {expr} may
|
||||
cause the command to fail. The characters in 'shellquote'
|
||||
and 'shellxquote' may also cause trouble.
|
||||
This is not to be used for interactive commands.
|
||||
|
||||
The result is a String. Example: >
|
||||
@@ -11737,7 +11763,8 @@ system({expr} [, {input}]) *system()* *E677*
|
||||
To avoid the string being truncated at a NUL, all NUL
|
||||
characters are replaced with SOH (0x01).
|
||||
|
||||
The command executed is constructed using several options:
|
||||
When {expr} is a String, the command executed is constructed
|
||||
using several options:
|
||||
'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote'
|
||||
({tmp} is an automatically generated file name).
|
||||
For Unix, braces are put around {expr} to allow for
|
||||
@@ -11764,6 +11791,9 @@ system({expr} [, {input}]) *system()* *E677*
|
||||
systemlist({expr} [, {input}]) *systemlist()*
|
||||
Same as |system()|, but returns a |List| with lines (parts of
|
||||
output separated by NL) with NULs transformed into NLs.
|
||||
Like |system()|, {expr} can be a |String| (executed through
|
||||
the shell) or a |List| (executed directly without a shell).
|
||||
See |system()| for details.
|
||||
Output is the same as |readfile()| will output with {binary}
|
||||
argument set to "b", except that there is no extra empty item
|
||||
when the result ends in a NL.
|
||||
@@ -12031,7 +12061,7 @@ timer_pause({timer}, {paused}) *timer_pause()*
|
||||
Can also be used as a |method|: >
|
||||
GetTimer()->timer_pause(1)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
{only available when compiled with the |+timers| feature}
|
||||
|
||||
@@ -12091,7 +12121,7 @@ timer_stop({timer}) *timer_stop()*
|
||||
Can also be used as a |method|: >
|
||||
GetTimer()->timer_stop()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
{only available when compiled with the |+timers| feature}
|
||||
|
||||
@@ -12101,7 +12131,7 @@ timer_stopall() *timer_stopall()*
|
||||
invoked. Useful if a timer is misbehaving. If there are no
|
||||
timers there is no error.
|
||||
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
{only available when compiled with the |+timers| feature}
|
||||
|
||||
@@ -12591,7 +12621,7 @@ wildtrigger() *wildtrigger()*
|
||||
|
||||
Return value is always 0.
|
||||
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
win_execute({id}, {command} [, {silent}]) *win_execute()*
|
||||
@@ -12943,7 +12973,7 @@ winrestview({dict}) *winrestview()*
|
||||
Can also be used as a |method|: >
|
||||
GetView()->winrestview()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
winsaveview() *winsaveview()*
|
||||
@@ -13271,6 +13301,7 @@ spell Compiled with spell checking support |spell|.
|
||||
startuptime Compiled with |--startuptime| support.
|
||||
statusline Compiled with support for 'statusline', 'rulerformat'
|
||||
and special formats of 'titlestring' and 'iconstring'.
|
||||
statusline_click Click handlers in 'statusline' |stl-%[FuncName]|
|
||||
sun SunOS version of Vim.
|
||||
sun_workshop Support for Sun |workshop| has been removed.
|
||||
syntax Compiled with syntax highlighting support |syntax|.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*change.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*change.txt* For Vim version 9.2. Last change: 2026 Mar 31
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1157,9 +1157,9 @@ inside of strings can change! Also see 'softtabstop' option. >
|
||||
current line).
|
||||
|
||||
*:ip* *:iput*
|
||||
:[line]ip[ut] [x] like |:put|, but adjust indent to the current line
|
||||
:[line]ip[ut] [x] Like |:put|, but adjust indent to the current line.
|
||||
|
||||
:[line]ip[ut]! [x] like |:put|!, but adjust indent to the current line
|
||||
:[line]ip[ut]! [x] Like |:put|!, but adjust indent to the current line.
|
||||
|
||||
["x]]p or *]p* *]<MiddleMouse>*
|
||||
["x]]<MiddleMouse> Like "p", but adjust the indent to the current line.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*channel.txt* For Vim version 9.2. Last change: 2026 Mar 13
|
||||
*channel.txt* For Vim version 9.2. Last change: 2026 Apr 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -132,7 +132,7 @@ Start Vim and create a listening channel: >
|
||||
endfunc
|
||||
|
||||
" Start listening on port 8765
|
||||
let server = ch_listen('localhost:8765', {"callback": "OnAccept"})
|
||||
let server = ch_listen('8765', {"callback": "OnAccept"})
|
||||
|
||||
From another Vim instance (or any program) you can connect to it: >
|
||||
let channel = ch_open('localhost:8765')
|
||||
@@ -549,7 +549,7 @@ ch_close({handle}) *ch_close()*
|
||||
Can also be used as a |method|: >
|
||||
GetChannel()->ch_close()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
ch_close_in({handle}) *ch_close_in()*
|
||||
Close the "in" part of {handle}. See |channel-close-in|.
|
||||
@@ -559,7 +559,7 @@ ch_close_in({handle}) *ch_close_in()*
|
||||
Can also be used as a |method|: >
|
||||
GetChannel()->ch_close_in()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
ch_evalexpr({handle}, {expr} [, {options}]) *ch_evalexpr()*
|
||||
@@ -637,8 +637,7 @@ ch_info({handle}) *ch_info()*
|
||||
"status" "open", "buffered" or "closed", like
|
||||
ch_status()
|
||||
When opened with ch_open():
|
||||
"hostname" the hostname of the address
|
||||
"port" the port of the address
|
||||
"port" the port on loopback
|
||||
"path" the path of the Unix-domain socket
|
||||
"sock_status" "open" or "closed"
|
||||
"sock_mode" "NL", "RAW", "JSON" or "JS"
|
||||
@@ -668,13 +667,16 @@ ch_info({handle}) *ch_info()*
|
||||
Return type: dict<any>
|
||||
|
||||
ch_listen({address} [, {options}]) *E1573* *E1574* *ch_listen()*
|
||||
Listen on {address} for incoming channel connections.
|
||||
This creates a server-side channel, unlike |ch_open()|
|
||||
which connects to an existing server.
|
||||
Listen on {address} - port on loopback or UNIX domain socket
|
||||
for incoming channel connections. This creates a server-side
|
||||
channel, unlike |ch_open()|which connects to an existing server.
|
||||
Returns a Channel. Use |ch_status()| to check for failure.
|
||||
|
||||
{address} is a String, see |channel-address| for the possible
|
||||
accepted forms. Note: IPv6 is not yet supported.
|
||||
accepted forms, however in case of TCP sockets it allows to
|
||||
set only a port and binds to loopback address for
|
||||
security reasons.
|
||||
Note: IPv6 is not yet supported.
|
||||
|
||||
If {options} is given it must be a |Dictionary|.
|
||||
See |channel-open-options|.
|
||||
@@ -708,7 +710,7 @@ ch_log({msg} [, {handle}]) *ch_log()*
|
||||
Can also be used as a |method|: >
|
||||
'did something'->ch_log()
|
||||
<
|
||||
Return type: dict<any>
|
||||
Return type: void
|
||||
|
||||
ch_logfile({fname} [, {mode}]) *ch_logfile()*
|
||||
Start logging channel activity to {fname}.
|
||||
@@ -736,7 +738,7 @@ ch_logfile({fname} [, {mode}]) *ch_logfile()*
|
||||
Can also be used as a |method|: >
|
||||
'logfile'->ch_logfile('w')
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
ch_open({address} [, {options}]) *ch_open()*
|
||||
Open a channel to {address}. See |channel|.
|
||||
@@ -825,7 +827,7 @@ ch_sendraw({handle}, {expr} [, {options}]) *ch_sendraw()*
|
||||
Can also be used as a |method|: >
|
||||
GetChannel()->ch_sendraw(rawexpr)
|
||||
<
|
||||
Return type: dict<any> or |String|
|
||||
Return type: void
|
||||
|
||||
ch_setoptions({handle}, {options}) *ch_setoptions()*
|
||||
Set options on {handle}:
|
||||
@@ -844,7 +846,7 @@ ch_setoptions({handle}, {options}) *ch_setoptions()*
|
||||
Can also be used as a |method|: >
|
||||
GetChannel()->ch_setoptions(options)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
ch_status({handle} [, {options}]) *ch_status()*
|
||||
Return the status of {handle}:
|
||||
@@ -1038,7 +1040,7 @@ job_setoptions({job}, {options}) *job_setoptions()*
|
||||
Can also be used as a |method|: >
|
||||
GetJob()->job_setoptions(options)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
job_start({command} [, {options}]) *job_start()*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*filetype.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*filetype.txt* For Vim version 9.2. Last change: 2026 Apr 13
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -161,8 +161,10 @@ variables can be used to overrule the filetype used for certain extensions:
|
||||
|ft-cpp-syntax|
|
||||
*.i g:filetype_i |ft-progress-syntax|
|
||||
*.inc g:filetype_inc
|
||||
*.int g:filetype_int
|
||||
*.lsl g:filetype_lsl
|
||||
*.m g:filetype_m |ft-mathematica-syntax|
|
||||
*.mac g:filetype_mac
|
||||
*[mM]makefile,*.mk,*.mak,[mM]akefile*
|
||||
g:make_flavor |ft-make-syntax|
|
||||
*.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md
|
||||
@@ -650,6 +652,12 @@ One command, :DiffGitCached, is provided to show a diff of the current commit
|
||||
in the preview window. It is equivalent to calling "git diff --cached" plus
|
||||
any arguments given to the command.
|
||||
|
||||
The length of the first line of the commit message used for
|
||||
syntax highlighting can be configured via `g:gitcommit_summary_length`.
|
||||
The default is 50. Example: >
|
||||
|
||||
let g:gitcommit_summary_length = 70
|
||||
|
||||
GIT REBASE *ft-gitrebase-plugin*
|
||||
|
||||
The gitrebase filetype defines the following buffer-local commands, to help
|
||||
|
||||
@@ -1,399 +1,373 @@
|
||||
*ft_rust.txt* Filetype plugin for Rust
|
||||
*ft_rust.txt* Filetype plugin for Rust
|
||||
|
||||
==============================================================================
|
||||
CONTENTS *rust*
|
||||
CONTENTS *rust*
|
||||
|
||||
1. Introduction |rust-intro|
|
||||
2. Settings |rust-settings|
|
||||
3. Commands |rust-commands|
|
||||
4. Mappings |rust-mappings|
|
||||
1. Introduction |rust-intro|
|
||||
2. Settings |rust-settings|
|
||||
3. Commands |rust-commands|
|
||||
4. Mappings |rust-mappings|
|
||||
|
||||
==============================================================================
|
||||
INTRODUCTION *rust-intro*
|
||||
INTRODUCTION *rust-intro*
|
||||
|
||||
This plugin provides syntax and supporting functionality for the Rust
|
||||
filetype. It requires Vim 8 or higher for full functionality. Some commands
|
||||
will not work on earlier versions.
|
||||
filetype.
|
||||
|
||||
==============================================================================
|
||||
SETTINGS *rust-settings*
|
||||
SETTINGS *rust-settings*
|
||||
|
||||
This plugin has a few variables you can define in your vimrc that change the
|
||||
behavior of the plugin.
|
||||
|
||||
Some variables can be set buffer local (`:b` prefix), and the buffer local
|
||||
Some variables can be set buffer local (`b:` prefix), and the buffer local
|
||||
will take precedence over the global `g:` counterpart.
|
||||
|
||||
*g:rustc_path*
|
||||
*g:rustc_path*
|
||||
g:rustc_path~
|
||||
Set this option to the path to rustc for use in the |:RustRun| and
|
||||
|:RustExpand| commands. If unset, "rustc" will be located in $PATH: >
|
||||
let g:rustc_path = $HOME."/bin/rustc"
|
||||
|:RustExpand| commands. If unset, "rustc" will be located in $PATH: >
|
||||
let g:rustc_path = $HOME."/bin/rustc"
|
||||
<
|
||||
|
||||
*g:rustc_makeprg_no_percent*
|
||||
*g:rustc_makeprg_no_percent*
|
||||
g:rustc_makeprg_no_percent~
|
||||
Set this option to 1 to have 'makeprg' default to "rustc" instead of
|
||||
"rustc %": >
|
||||
let g:rustc_makeprg_no_percent = 1
|
||||
let g:rustc_makeprg_no_percent = 1
|
||||
<
|
||||
|
||||
*g:rust_conceal*
|
||||
*g:rust_conceal*
|
||||
g:rust_conceal~
|
||||
Set this option to turn on the basic |conceal| support: >
|
||||
let g:rust_conceal = 1
|
||||
let g:rust_conceal = 1
|
||||
<
|
||||
|
||||
*g:rust_conceal_mod_path*
|
||||
*g:rust_conceal_mod_path*
|
||||
g:rust_conceal_mod_path~
|
||||
Set this option to turn on |conceal| for the path connecting token
|
||||
"::": >
|
||||
let g:rust_conceal_mod_path = 1
|
||||
Set this option to turn on |conceal| for the path connecting token "::": >
|
||||
let g:rust_conceal_mod_path = 1
|
||||
<
|
||||
|
||||
*g:rust_conceal_pub*
|
||||
*g:rust_conceal_pub*
|
||||
g:rust_conceal_pub~
|
||||
Set this option to turn on |conceal| for the "pub" token: >
|
||||
let g:rust_conceal_pub = 1
|
||||
let g:rust_conceal_pub = 1
|
||||
<
|
||||
|
||||
*g:rust_recommended_style*
|
||||
*g:rust_recommended_style*
|
||||
g:rust_recommended_style~
|
||||
Set this option to enable vim indentation and textwidth settings to
|
||||
conform to style conventions of the Rust style guide (i.e. use 4
|
||||
spaces for indents and set 'textwidth' to 100). This option is enabled
|
||||
by default. To disable it: >
|
||||
let g:rust_recommended_style = 0
|
||||
Set this option to enable vim indentation and textwidth settings to
|
||||
conform to style conventions of the Rust style guide (i.e. use 4
|
||||
spaces for indents and set 'textwidth' to 100). This option is
|
||||
enabled by default. To disable it: >
|
||||
let g:rust_recommended_style = 0
|
||||
<
|
||||
|
||||
*g:rust_fold*
|
||||
*g:rust_fold*
|
||||
g:rust_fold~
|
||||
Set this option to turn on |folding|: >
|
||||
let g:rust_fold = 1
|
||||
let g:rust_fold = 1
|
||||
<
|
||||
Value Effect ~
|
||||
0 No folding
|
||||
1 Braced blocks are folded. All folds are open by
|
||||
default.
|
||||
2 Braced blocks are folded. 'foldlevel' is left at the
|
||||
global value (all folds are closed by default).
|
||||
Value Effect ~
|
||||
0 No folding
|
||||
1 Braced blocks are folded. All folds are open by default.
|
||||
2 Braced blocks are folded. 'foldlevel' is left at the global
|
||||
value (all folds are closed by default).
|
||||
|
||||
*g:rust_bang_comment_leader*
|
||||
*g:rust_bang_comment_leader*
|
||||
g:rust_bang_comment_leader~
|
||||
Set this option to 1 to preserve the leader on multi-line doc comments
|
||||
using the /*! syntax: >
|
||||
let g:rust_bang_comment_leader = 1
|
||||
let g:rust_bang_comment_leader = 1
|
||||
<
|
||||
|
||||
*g:rust_use_custom_ctags_defs*
|
||||
*g:rust_use_custom_ctags_defs*
|
||||
g:rust_use_custom_ctags_defs~
|
||||
Set this option to 1 if you have customized ctags definitions for Rust
|
||||
and do not wish for those included with rust.vim to be used: >
|
||||
let g:rust_use_custom_ctags_defs = 1
|
||||
let g:rust_use_custom_ctags_defs = 1
|
||||
<
|
||||
|
||||
NOTE: rust.vim's built-in definitions are only used for the Tagbar Vim
|
||||
plugin, if you have it installed, AND if Universal Ctags is not
|
||||
detected. This is because Universal Ctags already has built-in
|
||||
detected. This is because Universal Ctags already has built-in
|
||||
support for Rust when used with Tagbar.
|
||||
|
||||
Also, note that when using ctags other than Universal Ctags, it is not
|
||||
automatically used when generating |tags| files that Vim can use to
|
||||
navigate to definitions across different source files. Feel free to
|
||||
navigate to definitions across different source files. Feel free to
|
||||
copy `rust.vim/ctags/rust.ctags` into your own `~/.ctags` if you wish
|
||||
to generate |tags| files.
|
||||
|
||||
|
||||
*g:ftplugin_rust_source_path*
|
||||
*g:ftplugin_rust_source_path*
|
||||
g:ftplugin_rust_source_path~
|
||||
Set this option to a path that should be prepended to 'path' for Rust
|
||||
source files: >
|
||||
let g:ftplugin_rust_source_path = $HOME.'/dev/rust'
|
||||
let g:ftplugin_rust_source_path = $HOME.'/dev/rust'
|
||||
<
|
||||
|
||||
*g:rustfmt_command*
|
||||
*g:rustfmt_command*
|
||||
g:rustfmt_command~
|
||||
Set this option to the name of the 'rustfmt' executable in your $PATH. If
|
||||
not specified it defaults to 'rustfmt' : >
|
||||
let g:rustfmt_command = 'rustfmt'
|
||||
Set this option to the name of the "rustfmt" executable in your $PATH.
|
||||
If not specified it defaults to "rustfmt": >
|
||||
let g:rustfmt_command = 'rustfmt'
|
||||
<
|
||||
*g:rustfmt_autosave*
|
||||
*g:rustfmt_autosave*
|
||||
*b:rustfmt_autosave*
|
||||
g:rustfmt_autosave~
|
||||
Set this option to 1 to run |:RustFmt| automatically when saving a
|
||||
buffer. If not specified it defaults to 0 : >
|
||||
let g:rustfmt_autosave = 0
|
||||
buffer. If not specified it defaults to 0: >
|
||||
let g:rustfmt_autosave = 0
|
||||
<
|
||||
There is also a buffer-local b:rustfmt_autosave that can be set for
|
||||
the same purpose, and can override the global setting.
|
||||
|
||||
*g:rustfmt_autosave_if_config_present*
|
||||
*g:rustfmt_autosave_if_config_present*
|
||||
*b:rustfmt_autosave_if_config_present*
|
||||
g:rustfmt_autosave_if_config_present~
|
||||
Set this option to 1 to have *b:rustfmt_autosave* be set automatically
|
||||
if a `rustfmt.toml` file is present in any parent directly leading to
|
||||
the file being edited. If not set, default to 0: >
|
||||
let g:rustfmt_autosave_if_config_present = 0
|
||||
Set this option to 1 to have |b:rustfmt_autosave| be set automatically
|
||||
if a `rustfmt.toml` file is present in any parent directory leading to
|
||||
the file being edited. If not set, default to 0: >
|
||||
let g:rustfmt_autosave_if_config_present = 0
|
||||
<
|
||||
This is useful to have `rustfmt` only execute on save, on projects
|
||||
that have `rustfmt.toml` configuration.
|
||||
|
||||
There is also a buffer-local b:rustfmt_autosave_if_config_present
|
||||
that can be set for the same purpose, which can overrides the global
|
||||
that can be set for the same purpose, which can override the global
|
||||
setting.
|
||||
*g:rustfmt_fail_silently*
|
||||
*g:rustfmt_fail_silently*
|
||||
g:rustfmt_fail_silently~
|
||||
Set this option to 1 to prevent 'rustfmt' from populating the
|
||||
|location-list| with errors. If not specified it defaults to 0: >
|
||||
let g:rustfmt_fail_silently = 0
|
||||
Set this option to 1 to prevent "rustfmt" from populating the
|
||||
|location-list| with errors. If not specified it defaults to 0: >
|
||||
let g:rustfmt_fail_silently = 0
|
||||
<
|
||||
*g:rustfmt_options*
|
||||
*g:rustfmt_options*
|
||||
g:rustfmt_options~
|
||||
Set this option to a string of options to pass to 'rustfmt'. The
|
||||
write-mode is already set to 'overwrite'. If not specified it
|
||||
defaults to '' : >
|
||||
let g:rustfmt_options = ''
|
||||
Set this option to a string of options to pass to "rustfmt".
|
||||
The write-mode is already set to "overwrite". If not specified it
|
||||
defaults to '': >
|
||||
let g:rustfmt_options = ''
|
||||
<
|
||||
*g:rustfmt_emit_files*
|
||||
*g:rustfmt_emit_files*
|
||||
g:rustfmt_emit_files~
|
||||
If not specified rust.vim tries to detect the right parameter to
|
||||
pass to rustfmt based on its reported version. Otherwise, it
|
||||
determines whether to run rustfmt with '--emit=files' (when 1 is
|
||||
provided) instead of '--write-mode=overwrite'. >
|
||||
let g:rustfmt_emit_files = 0
|
||||
pass to rustfmt based on its reported version. Otherwise, it
|
||||
determines whether to run rustfmt with "--emit=files" (when 1 is
|
||||
provided) instead of "--write-mode=overwrite". >
|
||||
let g:rustfmt_emit_files = 0
|
||||
<
|
||||
*g:rustfmt_detect_version*
|
||||
*g:rustfmt_detect_version*
|
||||
g:rustfmt_detect_version~
|
||||
When set to 1, will try to parse the version output from "rustfmt".
|
||||
Disabled by default for performance reasons
|
||||
>
|
||||
let g:rustfmt_detect_version = 1
|
||||
Disabled by default for performance reasons. >
|
||||
let g:rustfmt_detect_version = 1
|
||||
<
|
||||
*g:rustfmt_find_toml*
|
||||
*g:rustfmt_find_toml*
|
||||
g:rustfmt_find_toml~
|
||||
When set to 1, will try to find `rustfmt.toml` file by searching from
|
||||
current path upwards. Disabled by default for performance reasons
|
||||
>
|
||||
let g:rustfmt_find_toml = 1
|
||||
current path upwards. Disabled by default for performance reasons. >
|
||||
let g:rustfmt_find_toml = 1
|
||||
<
|
||||
*g:rust_playpen_url*
|
||||
*g:rust_playpen_url*
|
||||
g:rust_playpen_url~
|
||||
Set this option to override the url for the playpen to use: >
|
||||
let g:rust_playpen_url = 'https://play.rust-lang.org/'
|
||||
let g:rust_playpen_url = 'https://play.rust-lang.org/'
|
||||
<
|
||||
|
||||
*g:rust_shortener_url*
|
||||
*g:rust_shortener_url*
|
||||
g:rust_shortener_url~
|
||||
Set this option to override the url for the url shortener: >
|
||||
let g:rust_shortener_url = 'https://is.gd/'
|
||||
let g:rust_shortener_url = 'https://is.gd/'
|
||||
<
|
||||
|
||||
*g:rust_clip_command*
|
||||
*g:rust_clip_command*
|
||||
g:rust_clip_command~
|
||||
Set this option to the command used in your OS to copy the Rust Play
|
||||
url to the clipboard: >
|
||||
let g:rust_clip_command = 'xclip -selection clipboard'
|
||||
let g:rust_clip_command = 'xclip -selection clipboard'
|
||||
<
|
||||
|
||||
*g:cargo_makeprg_params*
|
||||
*g:cargo_makeprg_params*
|
||||
g:cargo_makeprg_params~
|
||||
Set this option to the string of parameters to pass to cargo. If not
|
||||
specified it defaults to '$*' : >
|
||||
let g:cargo_makeprg_params = 'build'
|
||||
Set this option to the string of parameters to pass to cargo. If not
|
||||
specified it defaults to "$*": >
|
||||
let g:cargo_makeprg_params = 'build'
|
||||
<
|
||||
|
||||
*g:cargo_shell_command_runner*
|
||||
*g:cargo_shell_command_runner*
|
||||
g:cargo_shell_command_runner~
|
||||
Set this option to change how to run shell commands for cargo commands
|
||||
|:Cargo|, |:Cbuild|, |:Crun|, ...
|
||||
By default, |:terminal| is used to run shell command in terminal window
|
||||
asynchronously. But if you prefer |:!| for running the commands, it can
|
||||
be specified: >
|
||||
let g:cargo_shell_command_runner = '!'
|
||||
|:Cargo|, |:Cbuild|, |:Crun|, etc. - see |rust-commands|.
|
||||
By default, |:terminal| is used to run a shell command in a terminal
|
||||
window asynchronously. But if you prefer |:!| for running the
|
||||
commands, it can be specified: >
|
||||
let g:cargo_shell_command_runner = '!'
|
||||
<
|
||||
|
||||
|
||||
Integration with Syntastic *rust-syntastic*
|
||||
Integration with Syntastic *rust-syntastic*
|
||||
--------------------------
|
||||
|
||||
This plugin automatically integrates with the Syntastic checker. There are two
|
||||
checkers provided: 'rustc', and 'cargo'. The latter invokes 'Cargo' in order to
|
||||
build code, and the former delivers a single edited '.rs' file as a compilation
|
||||
target directly to the Rust compiler, `rustc`.
|
||||
This plugin automatically integrates with the Syntastic checker. There are
|
||||
two checkers provided: "rustc", and "cargo". The latter invokes "cargo" to
|
||||
build code, and the former delivers a single edited ".rs" file as a
|
||||
compilation target directly to the Rust compiler, `rustc`.
|
||||
|
||||
Because Cargo is almost exclusively being used for building Rust code these
|
||||
days, 'cargo' is the default checker. >
|
||||
|
||||
let g:syntastic_rust_checkers = ['cargo']
|
||||
days, "cargo" is the default checker.
|
||||
>
|
||||
let g:syntastic_rust_checkers = ['cargo']
|
||||
<
|
||||
If you would like to change it, you can set `g:syntastic_rust_checkers` to a
|
||||
different value.
|
||||
*g:rust_cargo_avoid_whole_workspace*
|
||||
*b:rust_cargo_avoid_whole_workspace*
|
||||
*g:rust_cargo_avoid_whole_workspace*
|
||||
*b:rust_cargo_avoid_whole_workspace*
|
||||
g:rust_cargo_avoid_whole_workspace~
|
||||
When editing a crate that is part of a Cargo workspace, and this
|
||||
option is set to 1 (the default), then 'cargo' will be executed
|
||||
option is set to 1 (the default), then "cargo" will be executed
|
||||
directly in that crate directory instead of in the workspace
|
||||
directory. Setting 0 prevents this behavior - however be aware that if
|
||||
you are working in large workspace, Cargo commands may take more time,
|
||||
plus the Syntastic error list may include all the crates in the
|
||||
directory. Setting 0 prevents this behavior - however be aware that
|
||||
if you are working in a large workspace, Cargo commands may take more
|
||||
time, plus the Syntastic error list may include all the crates in the
|
||||
workspace. >
|
||||
let g:rust_cargo_avoid_whole_workspace = 0
|
||||
let g:rust_cargo_avoid_whole_workspace = 0
|
||||
<
|
||||
*g:rust_cargo_check_all_targets*
|
||||
*b:rust_cargo_check_all_targets*
|
||||
*g:rust_cargo_check_all_targets*
|
||||
*b:rust_cargo_check_all_targets*
|
||||
g:rust_cargo_check_all_targets~
|
||||
When set to 1, the `--all-targets` option will be passed to cargo when
|
||||
Syntastic executes it, allowing the linting of all targets under the
|
||||
package.
|
||||
The default is 0.
|
||||
|
||||
*g:rust_cargo_check_all_features*
|
||||
*b:rust_cargo_check_all_features*
|
||||
*g:rust_cargo_check_all_features*
|
||||
*b:rust_cargo_check_all_features*
|
||||
g:rust_cargo_check_all_features~
|
||||
When set to 1, the `--all-features` option will be passed to cargo when
|
||||
Syntastic executes it, allowing the linting of all features of the
|
||||
package.
|
||||
The default is 0.
|
||||
|
||||
*g:rust_cargo_check_examples*
|
||||
*b:rust_cargo_check_examples*
|
||||
*g:rust_cargo_check_examples*
|
||||
*b:rust_cargo_check_examples*
|
||||
g:rust_cargo_check_examples~
|
||||
When set to 1, the `--examples` option will be passed to cargo when
|
||||
Syntastic executes it, to prevent the exclusion of examples from
|
||||
linting. The examples are normally under the `examples/` directory of
|
||||
linting. The examples are normally under the `examples/` directory of
|
||||
the crate.
|
||||
The default is 0.
|
||||
|
||||
*g:rust_cargo_check_tests*
|
||||
*b:rust_cargo_check_tests*
|
||||
*g:rust_cargo_check_tests*
|
||||
*b:rust_cargo_check_tests*
|
||||
g:rust_cargo_check_tests~
|
||||
When set to 1, the `--tests` option will be passed to cargo when
|
||||
Syntastic executes it, to prevent the exclusion of tests from linting.
|
||||
The tests are normally under the `tests/` directory of the crate.
|
||||
The default is 0.
|
||||
|
||||
*g:rust_cargo_check_benches*
|
||||
*b:rust_cargo_check_benches*
|
||||
*g:rust_cargo_check_benches*
|
||||
*b:rust_cargo_check_benches*
|
||||
g:rust_cargo_check_benches~
|
||||
When set to 1, the `--benches` option will be passed to cargo when
|
||||
Syntastic executes it. The benches are normally under the `benches/`
|
||||
directory of the crate.
|
||||
The default is 0.
|
||||
|
||||
Integration with auto-pairs *rust-auto-pairs*
|
||||
Integration with auto-pairs *rust-auto-pairs*
|
||||
---------------------------
|
||||
|
||||
This plugin automatically configures the auto-pairs plugin not to duplicate
|
||||
single quotes, which are used more often for lifetime annotations than for
|
||||
single character literals.
|
||||
|
||||
*g:rust_keep_autopairs_default*
|
||||
*g:rust_keep_autopairs_default*
|
||||
g:rust_keep_autopairs_default~
|
||||
|
||||
Don't override auto-pairs default for the Rust filetype. The default
|
||||
Don't override auto-pairs default for the Rust filetype. The default
|
||||
is 0.
|
||||
|
||||
==============================================================================
|
||||
COMMANDS *rust-commands*
|
||||
COMMANDS *rust-commands*
|
||||
|
||||
Invoking Cargo
|
||||
--------------
|
||||
|
||||
This plug defines very simple shortcuts for invoking Cargo from with Vim.
|
||||
This plugin defines very simple shortcuts for invoking Cargo from within Vim.
|
||||
|
||||
:Cargo <args> *:Cargo*
|
||||
Runs 'cargo' with the provided arguments.
|
||||
:Cargo <args> *:Cargo*
|
||||
Runs "cargo" with the provided arguments.
|
||||
|
||||
:Cbuild <args> *:Cbuild*
|
||||
Shortcut for 'cargo build`.
|
||||
:Cbuild <args> *:Cbuild*
|
||||
Shortcut for "cargo build".
|
||||
|
||||
:Cclean <args> *:Cclean*
|
||||
Shortcut for 'cargo clean`.
|
||||
:Cclean <args> *:Cclean*
|
||||
Shortcut for "cargo clean".
|
||||
|
||||
:Cdoc <args> *:Cdoc*
|
||||
Shortcut for 'cargo doc`.
|
||||
:Cdoc <args> *:Cdoc*
|
||||
Shortcut for "cargo doc".
|
||||
|
||||
:Cinit <args> *:Cinit*
|
||||
Shortcut for 'cargo init`.
|
||||
:Cinit <args> *:Cinit*
|
||||
Shortcut for "cargo init".
|
||||
|
||||
:Crun <args> *:Crun*
|
||||
Shortcut for 'cargo run`.
|
||||
:Crun <args> *:Crun*
|
||||
Shortcut for "cargo run".
|
||||
|
||||
:Ctest <args> *:Ctest*
|
||||
Shortcut for 'cargo test`.
|
||||
:Ctest <args> *:Ctest*
|
||||
Shortcut for "cargo test".
|
||||
|
||||
:Cupdate <args> *:Cupdate*
|
||||
Shortcut for 'cargo update`.
|
||||
:Cupdate <args> *:Cupdate*
|
||||
Shortcut for "cargo update".
|
||||
|
||||
:Cbench <args> *:Cbench*
|
||||
Shortcut for 'cargo bench`.
|
||||
:Cbench <args> *:Cbench*
|
||||
Shortcut for "cargo bench".
|
||||
|
||||
:Csearch <args> *:Csearch*
|
||||
Shortcut for 'cargo search`.
|
||||
:Csearch <args> *:Csearch*
|
||||
Shortcut for "cargo search".
|
||||
|
||||
:Cpublish <args> *:Cpublish*
|
||||
Shortcut for 'cargo publish`.
|
||||
:Cpublish <args> *:Cpublish*
|
||||
Shortcut for "cargo publish".
|
||||
|
||||
:Cinstall <args> *:Cinstall*
|
||||
Shortcut for 'cargo install`.
|
||||
:Cinstall <args> *:Cinstall*
|
||||
Shortcut for "cargo install".
|
||||
|
||||
:Cruntarget <args> *:Cruntarget*
|
||||
Shortcut for 'cargo run --bin' or 'cargo run --example',
|
||||
depending on the currently open buffer.
|
||||
:Cruntarget <args> *:Cruntarget*
|
||||
Shortcut for "cargo run --bin" or "cargo run --example",
|
||||
depending on the currently open buffer.
|
||||
|
||||
Formatting
|
||||
----------
|
||||
|
||||
:RustFmt *:RustFmt*
|
||||
Runs |g:rustfmt_command| on the current buffer. If
|
||||
:RustFmt *:RustFmt*
|
||||
Runs |g:rustfmt_command| on the current buffer. If
|
||||
|g:rustfmt_options| is set then those will be passed to the
|
||||
executable.
|
||||
|
||||
If |g:rustfmt_fail_silently| is 0 (the default) then it
|
||||
will populate the |location-list| with the errors from
|
||||
|g:rustfmt_command|. If |g:rustfmt_fail_silently| is set to 1
|
||||
|g:rustfmt_command|. If |g:rustfmt_fail_silently| is set to 1
|
||||
then it will not populate the |location-list|.
|
||||
|
||||
:RustFmtRange *:RustFmtRange*
|
||||
Runs |g:rustfmt_command| with selected range. See
|
||||
|:RustFmt| for any other information.
|
||||
|
||||
:RustFmtRange *:RustFmtRange*
|
||||
Runs |g:rustfmt_command| with selected range. See |:RustFmt|
|
||||
for any other information.
|
||||
|
||||
Playpen integration
|
||||
-------------------
|
||||
|
||||
:RustPlay *:RustPlay*
|
||||
:RustPlay *:RustPlay*
|
||||
This command will only work if you have web-api.vim installed
|
||||
(available at https://github.com/mattn/webapi-vim). It sends the
|
||||
current selection, or if nothing is selected, the entirety of the
|
||||
current buffer to the Rust playpen, and emits a message with the
|
||||
shortened URL to the playpen.
|
||||
(available at https://github.com/mattn/webapi-vim). It sends
|
||||
the current selection, or if nothing is selected, the entirety
|
||||
of the current buffer to the Rust playpen, and emits a message
|
||||
with the shortened URL to the playpen.
|
||||
|
||||
|g:rust_playpen_url| is the base URL to the playpen, by default
|
||||
"https://play.rust-lang.org/".
|
||||
|
||||
|g:rust_shortener_url| is the base url for the shorterner, by
|
||||
|g:rust_shortener_url| is the base url for the shortener, by
|
||||
default "https://is.gd/"
|
||||
|
||||
|g:rust_clip_command| is the command to run to copy the
|
||||
playpen url to the clipboard of your system.
|
||||
|
||||
|
||||
Evaluation of a single Rust file
|
||||
--------------------------------
|
||||
|
||||
NOTE: These commands are useful only when working with standalone Rust files,
|
||||
which is usually not the case for common Rust development. If you wish to
|
||||
building Rust crates from with Vim can should use Vim's make, Syntastic, or
|
||||
functionality from other plugins.
|
||||
which is usually not the case for common Rust development. If you wish to
|
||||
build Rust crates from within Vim, use Vim's make, Syntastic, or functionality
|
||||
from other plugins.
|
||||
|
||||
|
||||
:RustRun [args] *:RustRun*
|
||||
:RustRun [args] *:RustRun*
|
||||
:RustRun! [rustc-args] [--] [args]
|
||||
Compiles and runs the current file. If it has unsaved changes,
|
||||
it will be saved first using |:update|. If the current file is
|
||||
an unnamed buffer, it will be written to a temporary file
|
||||
first. The compiled binary is always placed in a temporary
|
||||
directory, but is run from the current directory.
|
||||
Compiles and runs the current file. If it has unsaved
|
||||
changes, it will be saved first using |:update|. If the
|
||||
current file is an unnamed buffer, it will be written to a
|
||||
temporary file first. The compiled binary is always placed in
|
||||
a temporary directory, but is run from the current directory.
|
||||
|
||||
The arguments given to |:RustRun| will be passed to the
|
||||
compiled binary.
|
||||
@@ -405,11 +379,11 @@ functionality from other plugins.
|
||||
If |g:rustc_path| is defined, it is used as the path to rustc.
|
||||
Otherwise it is assumed rustc can be found in $PATH.
|
||||
|
||||
:RustExpand [args] *:RustExpand*
|
||||
:RustExpand [args] *:RustExpand*
|
||||
:RustExpand! [TYPE] [args]
|
||||
Expands the current file using --pretty and displays the
|
||||
results in a new split. If the current file has unsaved
|
||||
changes, it will be saved first using |:update|. If the
|
||||
results in a new split. If the current file has unsaved
|
||||
changes, it will be saved first using |:update|. If the
|
||||
current file is an unnamed buffer, it will be written to a
|
||||
temporary file first.
|
||||
|
||||
@@ -418,16 +392,16 @@ functionality from other plugins.
|
||||
configurations.
|
||||
|
||||
If ! is specified, the first argument is the expansion type to
|
||||
pass to rustc --pretty. Otherwise it will default to
|
||||
pass to rustc --pretty. Otherwise it will default to
|
||||
"expanded".
|
||||
|
||||
If |g:rustc_path| is defined, it is used as the path to rustc.
|
||||
Otherwise it is assumed rustc can be found in $PATH.
|
||||
|
||||
:RustEmitIr [args] *:RustEmitIr*
|
||||
:RustEmitIr [args] *:RustEmitIr*
|
||||
Compiles the current file to LLVM IR and displays the results
|
||||
in a new split. If the current file has unsaved changes, it
|
||||
will be saved first using |:update|. If the current file is an
|
||||
in a new split. If the current file has unsaved changes, it
|
||||
will be saved first using |:update|. If the current file is an
|
||||
unnamed buffer, it will be written to a temporary file first.
|
||||
|
||||
The arguments given to |:RustEmitIr| will be passed to rustc.
|
||||
@@ -435,10 +409,10 @@ functionality from other plugins.
|
||||
If |g:rustc_path| is defined, it is used as the path to rustc.
|
||||
Otherwise it is assumed rustc can be found in $PATH.
|
||||
|
||||
:RustEmitAsm [args] *:RustEmitAsm*
|
||||
:RustEmitAsm [args] *:RustEmitAsm*
|
||||
Compiles the current file to assembly and displays the results
|
||||
in a new split. If the current file has unsaved changes, it
|
||||
will be saved first using |:update|. If the current file is an
|
||||
in a new split. If the current file has unsaved changes, it
|
||||
will be saved first using |:update|. If the current file is an
|
||||
unnamed buffer, it will be written to a temporary file first.
|
||||
|
||||
The arguments given to |:RustEmitAsm| will be passed to rustc.
|
||||
@@ -446,13 +420,12 @@ functionality from other plugins.
|
||||
If |g:rustc_path| is defined, it is used as the path to rustc.
|
||||
Otherwise it is assumed rustc can be found in $PATH.
|
||||
|
||||
|
||||
Running test(s)
|
||||
---------------
|
||||
|
||||
:[N]RustTest[!] [options] *:RustTest*
|
||||
:[N]RustTest[!] [options] *:RustTest*
|
||||
Runs a test under the cursor when the current buffer is in a
|
||||
cargo project with "cargo test" command. If the command did
|
||||
cargo project with "cargo test" command. If the command did
|
||||
not find any test function under the cursor, it stops with an
|
||||
error message.
|
||||
|
||||
@@ -465,35 +438,36 @@ Running test(s)
|
||||
When [options] is given, it is passed to "cargo" command
|
||||
arguments.
|
||||
|
||||
When the current buffer is outside cargo project, the command
|
||||
runs "rustc --test" command instead of "cargo test" as
|
||||
fallback. All tests are run regardless of adding ! since there
|
||||
is no way to run specific test function with rustc. [options]
|
||||
is passed to "rustc" command arguments in the case.
|
||||
When the current buffer is outside a cargo project, the
|
||||
command runs "rustc --test" command instead of "cargo test" as
|
||||
fallback. All tests are run regardless of adding ! since
|
||||
there is no way to run specific test function with rustc.
|
||||
[options] is passed to "rustc" command arguments in that case.
|
||||
|
||||
Takes optional modifiers (see |<mods>|): >
|
||||
:tab RustTest
|
||||
:belowright 16RustTest
|
||||
:leftabove vert 80RustTest
|
||||
Takes optional modifiers (see |<mods>|): >
|
||||
:tab RustTest
|
||||
:belowright 16RustTest
|
||||
:leftabove vert 80RustTest
|
||||
<
|
||||
rust.vim Debugging
|
||||
------------------
|
||||
|
||||
:RustInfo *:RustInfo*
|
||||
:RustInfo *:RustInfo*
|
||||
Emits debugging info of the Vim Rust plugin.
|
||||
|
||||
:RustInfoToClipboard *:RustInfoClipboard*
|
||||
:RustInfoToClipboard *:RustInfoClipboard*
|
||||
Saves debugging info of the Vim Rust plugin to the default
|
||||
register.
|
||||
|
||||
:RustInfoToFile [filename] *:RustInfoToFile*
|
||||
:RustInfoToFile [filename] *:RustInfoToFile*
|
||||
Saves debugging info of the Vim Rust plugin to the given file,
|
||||
overwriting it.
|
||||
|
||||
==============================================================================
|
||||
MAPPINGS *rust-mappings*
|
||||
MAPPINGS *rust-mappings*
|
||||
|
||||
This plugin defines mappings for |[[| and |]]| to support hanging indents.
|
||||
This plugin defines Normal mode, Visual mode, and Operator-pending mode
|
||||
mappings for |[[| and |]]| to support hanging indents.
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:sw=4:noet:ts=8:ft=help:norl:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*gui.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*gui.txt* For Vim version 9.2. Last change: 2026 Apr 07
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1150,11 +1150,22 @@ For the Win32 GUI *E244* *E245*
|
||||
NONANTIALIASED, CLEARTYPE and DEFAULT. Normally you would use
|
||||
"qDEFAULT".
|
||||
Some quality values are not supported in legacy OSs.
|
||||
fXX - OpenType font feature. Specify a single feature as
|
||||
tag=value, where tag is a 4-character OpenType feature
|
||||
tag and value is the parameter (0 to disable, 1 or
|
||||
higher to enable/select variant). Multiple features
|
||||
can be specified by repeating the ":f" option.
|
||||
This only takes effect when 'renderoptions' is set to use
|
||||
DirectWrite (type:directx). Default features (calt, liga,
|
||||
etc.) are preserved unless explicitly overridden.
|
||||
Example: ":fss19=1:fcalt=0" enables Stylistic Set 19
|
||||
and disables Contextual Alternates.
|
||||
- A '_' can be used in the place of a space, so you don't need to use
|
||||
backslashes to escape the spaces.
|
||||
Examples: >
|
||||
:set guifont=courier_new:h12:w5:b:cRUSSIAN
|
||||
:set guifont=Andale_Mono:h7.5:w4.5
|
||||
:set guifont=Cascadia_Code:h14:fss19=1:fcalt=1:fliga=1
|
||||
|
||||
See also |font-sizes|.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*netbeans.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*netbeans.txt* For Vim version 9.2. Last change: 2026 Apr 09
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Gordon Prieur et al.
|
||||
@@ -849,7 +849,7 @@ REJECT Not used.
|
||||
These errors occur when a message violates the protocol:
|
||||
*E627* *E628* *E629* *E632* *E633* *E634* *E635* *E636*
|
||||
*E637* *E638* *E639* *E640* *E641* *E642* *E643* *E644* *E645* *E646*
|
||||
*E647* *E648* *E650* *E651* *E652*
|
||||
*E647* *E648* *E649* *E650* *E651* *E652*
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 9.2. Last change: 2026 Mar 22
|
||||
*options.txt* For Vim version 9.2. Last change: 2026 Apr 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1030,10 +1030,10 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
'autowrite' 'aw' boolean (default off)
|
||||
global
|
||||
Write the contents of the file, if it has been modified, on each
|
||||
`:next`, `:rewind`, `:last`, `:first`, `:previous`, `:stop`,
|
||||
`:suspend`, `:tag`, `:!`, `:make`, CTRL-] and CTRL-^ command; and when
|
||||
a `:buffer`, CTRL-O, CTRL-I, '{A-Z0-9}, or `{A-Z0-9} command takes one
|
||||
to another file.
|
||||
`:next`, `:rewind`, `:last`, `:first`, `:previous`, `:tag`, `:stop`,
|
||||
`:suspend`, `:!`, `:make`, `:terminal`, CTRL-] or CTRL-^ command; and
|
||||
when a `:buffer`, CTRL-O, CTRL-I, '{A-Z0-9}, or `{A-Z0-9} command
|
||||
switches to another file.
|
||||
A buffer is not written if it becomes hidden, e.g. when 'bufhidden' is
|
||||
set to "hide" and `:next` is used.
|
||||
Note that for some commands the 'autowrite' option is not used, see
|
||||
@@ -1047,8 +1047,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
*'autowriteall'* *'awa'* *'noautowriteall'* *'noawa'*
|
||||
'autowriteall' 'awa' boolean (default off)
|
||||
global
|
||||
Like 'autowrite', but also used for commands ":edit", ":enew",
|
||||
":quit", ":qall", ":exit", ":xit", ":recover" and closing the Vim
|
||||
Like 'autowrite', but also used for commands `:edit`, `:enew`,
|
||||
`:quit`, `:qall`, `:exit`, `:xit`, `:recover` and closing the Vim
|
||||
window.
|
||||
Setting this option also implies that Vim behaves like 'autowrite' has
|
||||
been set.
|
||||
@@ -2226,6 +2226,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Note: The match limit takes effect only during forward completion
|
||||
(CTRL-N) and is ignored during backward completion (CTRL-P).
|
||||
|
||||
This option cannot be set in a modeline when 'modelineexpr' is off.
|
||||
|
||||
*'completefunc'* *'cfu'*
|
||||
'completefunc' 'cfu' string (default: empty)
|
||||
local to buffer
|
||||
@@ -4686,6 +4688,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
You can include a line break. Simplest method is to use |:let|: >
|
||||
:let &guitabtooltip = "line one\nline two"
|
||||
<
|
||||
This option cannot be set in a modeline when 'modelineexpr' is off.
|
||||
|
||||
*'helpfile'* *'hf'*
|
||||
'helpfile' 'hf' string (default (MS-Windows) "$VIMRUNTIME\doc\help.txt"
|
||||
@@ -5209,7 +5212,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
command line has no uppercase characters, the added character is
|
||||
converted to lowercase.
|
||||
CTRL-R CTRL-W can be used to add the word at the end of the current
|
||||
match, excluding the characters that were already typed.
|
||||
match, excluding the characters that were already typed (starting from
|
||||
the beginning of the word).
|
||||
NOTE: This option is reset when 'compatible' is set.
|
||||
|
||||
*'indentexpr'* *'inde'*
|
||||
@@ -6026,7 +6030,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Increasing this limit above 200 also changes the maximum for Ex
|
||||
command recursion, see |E169|.
|
||||
See also |:function|.
|
||||
Also used for maximum depth of callback functions.
|
||||
Also used for maximum depth of callback functions and encoding and
|
||||
decoding of deeply nested json data.
|
||||
|
||||
*'maxmapdepth'* *'mmd'* *E223*
|
||||
'maxmapdepth' 'mmd' number (default 1000)
|
||||
@@ -6846,6 +6851,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
The format of the header produced in |:hardcopy| output.
|
||||
See |pheader-option|.
|
||||
|
||||
This option cannot be set in a modeline when 'modelineexpr' is off.
|
||||
|
||||
*'printmbcharset'* *'pmbcs'*
|
||||
'printmbcharset' 'pmbcs' string (default "")
|
||||
global
|
||||
@@ -6879,6 +6886,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
global
|
||||
Defines a border and optional decorations for the popup menu in
|
||||
completion. The value is a comma-separated list of keywords.
|
||||
See 'pumopt' for a consolidated alternative.
|
||||
|
||||
Border styles (at most one):
|
||||
"single" use thin box-drawing characters
|
||||
@@ -6914,6 +6922,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Determines the maximum number of items to show in the popup menu for
|
||||
Insert mode completion. When zero as much space as available is used.
|
||||
|ins-completion-menu|.
|
||||
See 'pumopt' for a consolidated alternative.
|
||||
|
||||
*'pummaxwidth'* *'pmw'*
|
||||
'pummaxwidth' 'pmw' number (default 0)
|
||||
@@ -6925,12 +6934,67 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|
||||
This option takes precedence over 'pumwidth'.
|
||||
|ins-completion-menu|.
|
||||
See 'pumopt' for a consolidated alternative.
|
||||
|
||||
*'pumopt'*
|
||||
'pumopt' string (default "")
|
||||
global
|
||||
Configures the popup menu used for Insert mode completion.
|
||||
The value is a comma-separated list of "key:value" pairs and flags.
|
||||
|
||||
Keys with values:
|
||||
border:{style} set a border style (at most one):
|
||||
"single" thin box-drawing characters
|
||||
"double" double-line box-drawing characters
|
||||
"round" rounded corners
|
||||
"ascii" ASCII characters (-, |, +)
|
||||
"custom:X;X;X;X;X;X;X;X"
|
||||
eight characters separated by
|
||||
semicolons, in the order: top, right,
|
||||
bottom, left, topleft, topright,
|
||||
botright, botleft
|
||||
height:{n} maximum number of items to show (default 0,
|
||||
meaning as much space as available)
|
||||
width:{n} minimum width (default 15)
|
||||
maxwidth:{n} maximum width (default 0, meaning no limit).
|
||||
This takes precedence over width.
|
||||
Truncated text is indicated by "trunc" value
|
||||
of 'fillchars' option.
|
||||
opacity:{n} opacity percentage 0-100 (default 100).
|
||||
When less than 100, background content shows
|
||||
through the popup menu.
|
||||
|
||||
Flags (no value):
|
||||
margin adds one-cell spacing inside the left and
|
||||
right border. Requires a border style.
|
||||
shadow draws a shadow at the right and bottom edges.
|
||||
|
||||
Border styles using box-drawing characters ("single", "double",
|
||||
"round") are only available when 'encoding' is "utf-8" and 'ambiwidth'
|
||||
is "single".
|
||||
|
||||
Highlight groups:
|
||||
|hl-PmenuBorder| used for the border characters
|
||||
|hl-PmenuShadow| used for the shadow
|
||||
|
||||
Note: When 'pumopt' is set, all values are reset to their defaults
|
||||
first, then the specified keys are applied. Unspecified keys get
|
||||
their default values.
|
||||
|
||||
Examples: >
|
||||
:set pumopt=border:single
|
||||
:set pumopt=border:double,margin,shadow
|
||||
:set pumopt=height:10,width:20,opacity:80
|
||||
:set pumopt=border:custom:─;│;─;│;┌;┐;┘;└,shadow
|
||||
<
|
||||
See also: |ins-completion-menu|.
|
||||
|
||||
*'pumwidth'* *'pw'*
|
||||
'pumwidth' 'pw' number (default 15)
|
||||
global
|
||||
Determines the minimum width to use for the popup menu for Insert mode
|
||||
completion. |ins-completion-menu|.
|
||||
See 'pumopt' for a consolidated alternative.
|
||||
|
||||
*'pythondll'*
|
||||
'pythondll' string (default depends on the build)
|
||||
@@ -8556,10 +8620,62 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
applied to StatusLineNC for the statusline of non-current
|
||||
windows.
|
||||
The number N must be between 1 and 9. See |hl-User1..9|
|
||||
*stl-%@*
|
||||
*stl-%@*
|
||||
@ - Inserts a newline. This only takes effect when the "maxheight"
|
||||
value of 'statuslineopt' is greater than 1, or for |tabpanel|.
|
||||
|
||||
*stl-%[FuncName]*
|
||||
%[ defines clickable regions in the statusline. When the user clicks
|
||||
on a region with the mouse, the specified function is called. The
|
||||
same syntax can also be used in 'tabline'.
|
||||
|
||||
%[FuncName] Start of a clickable region. "FuncName" is the name
|
||||
of a Vim function to call when the region is clicked.
|
||||
%[] End of the clickable region. If omitted, the region
|
||||
extends to the end of the statusline or to the start
|
||||
of the next clickable region.
|
||||
|
||||
A {minwid} value can be used to pass an identifier to the callback:
|
||||
%3[FuncName] Starts a clickable region with minwid 3.
|
||||
|
||||
The function receives a single |Dictionary| argument with these
|
||||
entries:
|
||||
"minwid" The minwid value from %N[Func] (0 if not specified).
|
||||
"nclicks" Number of clicks: 1, 2, or 3.
|
||||
"button" Mouse button: "l" (left), "m" (middle), "r" (right).
|
||||
"mods" Modifier keys: combination of "s" (shift), "c" (ctrl),
|
||||
"a" (alt). Empty string if no modifiers.
|
||||
"winid" |window-ID| of the window whose statusline was clicked,
|
||||
or 0 when the click was in 'tabline'.
|
||||
"area" "statusline" or "tabline". Indicates which option the
|
||||
clicked region belongs to. Useful when a single
|
||||
callback is shared between 'statusline' and 'tabline'.
|
||||
|
||||
If the function returns non-zero, the statusline is redrawn.
|
||||
Dragging the statusline to resize the window still works even when
|
||||
click handlers are defined. When used in 'tabline', clicks in
|
||||
%[FuncName] regions are dispatched to the callback instead of the
|
||||
default tab page selection behavior.
|
||||
|
||||
Example: >
|
||||
func! ClickFile(info)
|
||||
if a:info.button ==# 'l' && a:info.nclicks == 2
|
||||
browse edit
|
||||
endif
|
||||
return 0
|
||||
endfunc
|
||||
set statusline=%[ClickFile]%f%[]\ %l:%c
|
||||
< This makes the filename in the statusline clickable. Double-clicking
|
||||
it opens the file browser.
|
||||
|
||||
Use `has('statusline_click')` to check if this feature is available.
|
||||
This is useful for backward compatibility: >
|
||||
if has('statusline_click')
|
||||
set statusline=%[ClickFile]%f%[]\ %l:%c
|
||||
else
|
||||
set statusline=%f\ %l:%c
|
||||
endif
|
||||
<
|
||||
When displaying a flag, Vim removes the leading comma, if any, when
|
||||
that flag comes right after plaintext. This will make a nice display
|
||||
when flags are used like in the examples below.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*pi_vimball.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*pi_vimball.txt* For Vim version 9.2. Last change: 2026 Apr 05
|
||||
|
||||
----------------
|
||||
Vimball Archiver
|
||||
@@ -93,21 +93,6 @@ MAKING A VIMBALL *:MkVimball*
|
||||
make.
|
||||
|
||||
|
||||
MAKING DIRECTORIES VIA VIMBALLS *g:vimball_mkdir*
|
||||
|
||||
First, the |mkdir()| command is tried (not all systems support it).
|
||||
|
||||
If it doesn't exist, then if g:vimball_mkdir doesn't exist, it is set
|
||||
as follows: >
|
||||
|g:netrw_localmkdir|, if it exists
|
||||
"mkdir" , if it is executable
|
||||
"makedir" , if it is executable
|
||||
Otherwise , it is undefined.
|
||||
< One may explicitly specify the directory making command using
|
||||
g:vimball_mkdir. This command is used to make directories that
|
||||
are needed as indicated by the vimball.
|
||||
|
||||
|
||||
CONTROLLING THE VIMBALL EXTRACTION DIRECTORY *g:vimball_home*
|
||||
|
||||
You may override the use of the 'runtimepath' by specifying a
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*pi_zip.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*pi_zip.txt* For Vim version 9.2. Last change: 2026 Apr 05
|
||||
|
||||
+====================+
|
||||
| Zip File Interface |
|
||||
@@ -33,6 +33,10 @@ Copyright: Copyright (C) 2005-2015 Charles E Campbell *zip-copyright*
|
||||
also write to the file. Currently, one may not make a new file in
|
||||
zip archives via the plugin.
|
||||
|
||||
The zip plugin tries to detect some common path traversal attack
|
||||
patterns, but it may not catch all possible cases. Please be very
|
||||
careful when using this plugin with untrusted input.
|
||||
|
||||
COMMANDS~
|
||||
*zip-x*
|
||||
x : extract a listed file when the cursor is atop it
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*popup.txt* For Vim version 9.2. Last change: 2026 Mar 02
|
||||
*popup.txt* For Vim version 9.2. Last change: 2026 Apr 06
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -254,7 +254,7 @@ popup_clear([{force}])
|
||||
when it is the current window. If a terminal is running in a
|
||||
popup it is killed.
|
||||
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
popup_close({id} [, {result}]) *popup_close()*
|
||||
@@ -269,7 +269,7 @@ popup_close({id} [, {result}]) *popup_close()*
|
||||
Can also be used as a |method|: >
|
||||
GetPopup()->popup_close()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
popup_create({what}, {options}) *popup_create()*
|
||||
@@ -351,7 +351,7 @@ popup_filter_menu({id}, {key}) *popup_filter_menu()*
|
||||
To add shortcut keys, see the example here:
|
||||
|popup_menu-shortcut-example|
|
||||
|
||||
Return type: |Number|
|
||||
Return type: |vim9-boolean|
|
||||
|
||||
|
||||
popup_filter_yesno({id}, {key}) *popup_filter_yesno()*
|
||||
@@ -363,7 +363,7 @@ popup_filter_yesno({id}, {key}) *popup_filter_yesno()*
|
||||
keys are ignored.
|
||||
See the example here: |popup_dialog-example|
|
||||
|
||||
Return type: |Number|
|
||||
Return type: |vim9-boolean|
|
||||
|
||||
|
||||
popup_findecho() *popup_findecho()*
|
||||
@@ -471,7 +471,7 @@ popup_hide({id}) *popup_hide()*
|
||||
Can also be used as a |method|: >
|
||||
GetPopup()->popup_hide()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
popup_list() *popup_list()*
|
||||
@@ -542,7 +542,7 @@ popup_move({id}, {options}) *popup_move()*
|
||||
Can also be used as a |method|: >
|
||||
GetPopup()->popup_move(options)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
popup_notification({what}, {options}) *popup_notification()*
|
||||
@@ -624,7 +624,7 @@ popup_setoptions({id}, {options}) *popup_setoptions()*
|
||||
Can also be used as a |method|: >
|
||||
GetPopup()->popup_setoptions(options)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
popup_settext({id}, {text}) *popup_settext()*
|
||||
@@ -636,7 +636,7 @@ popup_settext({id}, {text}) *popup_settext()*
|
||||
Can also be used as a |method|: >
|
||||
GetPopup()->popup_settext('hello')
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
popup_show({id}) *popup_show()*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickref.txt* For Vim version 9.2. Last change: 2026 Mar 04
|
||||
*quickref.txt* For Vim version 9.2. Last change: 2026 Apr 07
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -865,6 +865,7 @@ Short explanation of each option: *option-list*
|
||||
'printoptions' 'popt' controls the format of :hardcopy output
|
||||
'prompt' 'prompt' enable prompt in Ex mode
|
||||
'pumheight' 'ph' maximum height of the popup menu
|
||||
'pumopt' 'pumopt' additional options for the popup menu
|
||||
'pumwidth' 'pw' minimum width of the popup menu
|
||||
'pythondll' name of the Python 2 dynamic library
|
||||
'pythonhome' name of the Python 2 home directory
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*syntax.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*syntax.txt* For Vim version 9.2. Last change: 2026 Mar 22
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -2285,11 +2285,11 @@ cycles for such a feature to become either integrated into the platform or
|
||||
withdrawn from this effort. To cater for early adopters, there is optional
|
||||
support in Vim for syntax related preview features that are implemented. You
|
||||
can request it by specifying a list of preview feature numbers as follows: >
|
||||
:let g:java_syntax_previews = [507]
|
||||
:let g:java_syntax_previews = [530]
|
||||
|
||||
The supported JEP numbers are to be drawn from this table:
|
||||
`430`: String Templates [JDK 21]
|
||||
`507`: Primitive types in Patterns, instanceof, and switch
|
||||
`530`: Primitive types in Patterns, instanceof, and switch
|
||||
|
||||
Note that as soon as the particular preview feature will have been integrated
|
||||
into the Java platform, its entry will be removed from the table and related
|
||||
|
||||
@@ -891,6 +891,7 @@ $quote eval.txt /*$quote*
|
||||
'pumborder' options.txt /*'pumborder'*
|
||||
'pumheight' options.txt /*'pumheight'*
|
||||
'pummaxwidth' options.txt /*'pummaxwidth'*
|
||||
'pumopt' options.txt /*'pumopt'*
|
||||
'pumwidth' options.txt /*'pumwidth'*
|
||||
'pvh' options.txt /*'pvh'*
|
||||
'pvp' options.txt /*'pvp'*
|
||||
@@ -4771,6 +4772,7 @@ E1571 builtin.txt /*E1571*
|
||||
E1572 options.txt /*E1572*
|
||||
E1573 channel.txt /*E1573*
|
||||
E1574 channel.txt /*E1574*
|
||||
E1575 builtin.txt /*E1575*
|
||||
E158 sign.txt /*E158*
|
||||
E159 sign.txt /*E159*
|
||||
E16 cmdline.txt /*E16*
|
||||
@@ -5297,6 +5299,7 @@ E645 netbeans.txt /*E645*
|
||||
E646 netbeans.txt /*E646*
|
||||
E647 netbeans.txt /*E647*
|
||||
E648 netbeans.txt /*E648*
|
||||
E649 netbeans.txt /*E649*
|
||||
E65 pattern.txt /*E65*
|
||||
E650 netbeans.txt /*E650*
|
||||
E651 netbeans.txt /*E651*
|
||||
@@ -6341,6 +6344,7 @@ b:rust_cargo_check_benches ft_rust.txt /*b:rust_cargo_check_benches*
|
||||
b:rust_cargo_check_examples ft_rust.txt /*b:rust_cargo_check_examples*
|
||||
b:rust_cargo_check_tests ft_rust.txt /*b:rust_cargo_check_tests*
|
||||
b:rustfmt_autosave ft_rust.txt /*b:rustfmt_autosave*
|
||||
b:rustfmt_autosave_if_config_present ft_rust.txt /*b:rustfmt_autosave_if_config_present*
|
||||
b:tex_stylish syntax.txt /*b:tex_stylish*
|
||||
b:var eval.txt /*b:var*
|
||||
b:yaml_schema syntax.txt /*b:yaml_schema*
|
||||
@@ -8036,7 +8040,6 @@ g:vim_indent_cont indent.txt /*g:vim_indent_cont*
|
||||
g:vim_json_conceal syntax.txt /*g:vim_json_conceal*
|
||||
g:vim_json_warnings syntax.txt /*g:vim_json_warnings*
|
||||
g:vimball_home pi_vimball.txt /*g:vimball_home*
|
||||
g:vimball_mkdir pi_vimball.txt /*g:vimball_mkdir*
|
||||
g:vimsyn_comment_strings syntax.txt /*g:vimsyn_comment_strings*
|
||||
g:vimsyn_embed syntax.txt /*g:vimsyn_embed*
|
||||
g:vimsyn_folding syntax.txt /*g:vimsyn_folding*
|
||||
@@ -10544,6 +10547,7 @@ status-line windows.txt /*status-line*
|
||||
statusmsg-variable eval.txt /*statusmsg-variable*
|
||||
stl-%! options.txt /*stl-%!*
|
||||
stl-%@ options.txt /*stl-%@*
|
||||
stl-%[FuncName] options.txt /*stl-%[FuncName]*
|
||||
stl-%{ options.txt /*stl-%{*
|
||||
str2blob() builtin.txt /*str2blob()*
|
||||
str2float() builtin.txt /*str2float()*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*terminal.txt* For Vim version 9.2. Last change: 2026 Mar 12
|
||||
*terminal.txt* For Vim version 9.2. Last change: 2026 Apr 06
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -596,7 +596,7 @@ term_dumpwrite({buf}, {filename} [, {options}]) *term_dumpwrite()*
|
||||
name: >
|
||||
GetFilename()->term_dumpwrite(bufnr)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
term_getaltscreen({buf}) *term_getaltscreen()*
|
||||
@@ -817,7 +817,7 @@ term_sendkeys({buf}, {keys}) *term_sendkeys()*
|
||||
Can also be used as a |method|: >
|
||||
GetBufnr()->term_sendkeys(keys)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
term_setansicolors({buf}, {colors}) *term_setansicolors()*
|
||||
@@ -852,7 +852,7 @@ term_setansicolors({buf}, {colors}) *term_setansicolors()*
|
||||
Can also be used as a |method|: >
|
||||
GetBufnr()->term_setansicolors(colors)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
{only available with GUI enabled and/or the |+termguicolors|
|
||||
feature}
|
||||
@@ -870,7 +870,7 @@ term_setapi({buf}, {expr}) *term_setapi()*
|
||||
When used as a method the base is used for {buf}: >
|
||||
GetBufnr()->term_setapi({expr})
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
term_setkill({buf}, {how}) *term_setkill()*
|
||||
@@ -888,7 +888,7 @@ term_setkill({buf}, {how}) *term_setkill()*
|
||||
Can also be used as a |method|: >
|
||||
GetBufnr()->term_setkill(how)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
term_setrestore({buf}, {command}) *term_setrestore()*
|
||||
@@ -903,7 +903,7 @@ term_setrestore({buf}, {command}) *term_setrestore()*
|
||||
Can also be used as a |method|: >
|
||||
GetBufnr()->term_setrestore(command)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
term_setsize({buf}, {rows}, {cols}) *term_setsize()* *E955*
|
||||
@@ -919,7 +919,7 @@ term_setsize({buf}, {rows}, {cols}) *term_setsize()* *E955*
|
||||
Can also be used as a |method|: >
|
||||
GetBufnr()->term_setsize(rows, cols)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
term_start({cmd} [, {options}]) *term_start()*
|
||||
@@ -944,9 +944,26 @@ term_start({cmd} [, {options}]) *term_start()*
|
||||
"in_io", "in_top", "in_bot", "in_name", "in_buf"
|
||||
"out_io", "out_name", "out_buf", "out_modifiable", "out_msg"
|
||||
"err_io", "err_name", "err_buf", "err_modifiable", "err_msg"
|
||||
However, at least one of stdin, stdout or stderr must be
|
||||
connected to the terminal. When I/O is connected to the
|
||||
terminal then the callback function for that part is not used.
|
||||
On Unix:
|
||||
stdin, stdout, and stderr are connected to a pty by default,
|
||||
since bidirectional communication with the terminal is
|
||||
required. Setting "out_cb" does not switch stdout from the
|
||||
pty to a pipe. Only setting "err_cb" switches stderr to a
|
||||
pipe.
|
||||
Note: Since a pty is line-buffered and a pipe is
|
||||
block-buffered, the order of output between stdout and stderr
|
||||
may not be preserved. Without "err_cb", stderr uses the same
|
||||
pty as stdout, so the output order is preserved but stdout and
|
||||
stderr cannot be distinguished.
|
||||
|
||||
On MS-Windows with |ConPTY|:
|
||||
stdin, stdout, and stderr are always connected through pipes
|
||||
to the pseudo console, regardless of callback settings.
|
||||
Since stdout and stderr share the same pipe, they cannot be
|
||||
separated by "err_cb".
|
||||
This is because the CreatePseudoConsole() API only accepts one
|
||||
input and one output handle, with no separate handle for
|
||||
stderr.
|
||||
|
||||
There are extra options:
|
||||
"term_name" name to use for the buffer name, instead
|
||||
@@ -1010,7 +1027,7 @@ term_wait({buf} [, {time}]) *term_wait()*
|
||||
Can also be used as a |method|: >
|
||||
GetBufnr()->term_wait()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
==============================================================================
|
||||
3. Terminal communication *terminal-communication*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*testing.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*testing.txt* For Vim version 9.2. Last change: 2026 Apr 06
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -46,14 +46,14 @@ test_alloc_fail({id}, {countdown}, {repeat}) *test_alloc_fail()*
|
||||
Can also be used as a |method|: >
|
||||
GetAllocId()->test_alloc_fail()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
test_autochdir() *test_autochdir()*
|
||||
Set a flag to enable the effect of 'autochdir' before Vim
|
||||
startup has finished.
|
||||
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
test_feedinput({string}) *test_feedinput()*
|
||||
@@ -64,7 +64,7 @@ test_feedinput({string}) *test_feedinput()*
|
||||
Can also be used as a |method|: >
|
||||
GetText()->test_feedinput()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
test_garbagecollect_now() *test_garbagecollect_now()*
|
||||
@@ -75,13 +75,13 @@ test_garbagecollect_now() *test_garbagecollect_now()*
|
||||
This will not work when called from a :def function, because
|
||||
variables on the stack will be freed.
|
||||
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
test_garbagecollect_soon() *test_garbagecollect_soon()*
|
||||
Set the flag to call the garbagecollector as if in the main
|
||||
loop. Only to be used in tests.
|
||||
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
test_getvalue({name}) *test_getvalue()*
|
||||
Get the value of an internal variable. These values for
|
||||
@@ -237,7 +237,7 @@ test_ignore_error({expr}) *test_ignore_error()*
|
||||
Can also be used as a |method|: >
|
||||
GetErrorText()->test_ignore_error()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
test_mswin_event({event}, {args}) *test_mswin_event()*
|
||||
Generate a low-level MS-Windows {event} with arguments {args}
|
||||
@@ -381,7 +381,7 @@ test_option_not_set({name}) *test_option_not_set()*
|
||||
Can also be used as a |method|: >
|
||||
GetOptionName()->test_option_not_set()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
test_override({name}, {val}) *test_override()*
|
||||
Overrides certain parts of Vim's internal processing to be
|
||||
@@ -438,7 +438,7 @@ test_override({name}, {val}) *test_override()*
|
||||
< Can also be used as a |method|: >
|
||||
GetOverrideVal()-> test_override('starting')
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
test_refcount({expr}) *test_refcount()*
|
||||
Return the reference count of {expr}. When {expr} is of a
|
||||
@@ -457,7 +457,7 @@ test_setmouse({row}, {col}) *test_setmouse()*
|
||||
call test_setmouse(4, 20)
|
||||
call feedkeys("\<LeftMouse>", "xt")
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
test_settime({expr}) *test_settime()*
|
||||
@@ -472,13 +472,13 @@ test_settime({expr}) *test_settime()*
|
||||
Can also be used as a |method|: >
|
||||
GetTime()->test_settime()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
test_srand_seed([{seed}]) *test_srand_seed()*
|
||||
When {seed} is given this sets the seed value used by
|
||||
`srand()`. When omitted the test seed is removed.
|
||||
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
test_unknown() *test_unknown()*
|
||||
Return a value with unknown type. Only useful for testing.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*textprop.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*textprop.txt* For Vim version 9.2. Last change: 2026 Apr 07
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -270,6 +270,8 @@ prop_add_list({props}, [{item}, ...]) *prop_add_list()*
|
||||
<
|
||||
Can also be used as a |method|: >
|
||||
GetProp()->prop_add_list([[1, 1, 1, 2], [1, 4, 1, 8]])
|
||||
<
|
||||
Return type: void
|
||||
|
||||
|
||||
prop_clear({lnum} [, {lnum-end} [, {props}]]) *prop_clear()*
|
||||
@@ -283,7 +285,7 @@ prop_clear({lnum} [, {lnum-end} [, {props}]]) *prop_clear()*
|
||||
Can also be used as a |method|: >
|
||||
GetLnum()->prop_clear()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
prop_find({props} [, {direction}]) *prop_find()*
|
||||
@@ -444,7 +446,7 @@ prop_type_add({name}, {props}) *prop_type_add()* *E969* *E970*
|
||||
Can also be used as a |method|: >
|
||||
GetPropName()->prop_type_add(props)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
prop_type_change({name}, {props}) *prop_type_change()*
|
||||
@@ -455,7 +457,7 @@ prop_type_change({name}, {props}) *prop_type_change()*
|
||||
Can also be used as a |method|: >
|
||||
GetPropName()->prop_type_change(props)
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
prop_type_delete({name} [, {props}]) *prop_type_delete()*
|
||||
@@ -472,7 +474,7 @@ prop_type_delete({name} [, {props}]) *prop_type_delete()*
|
||||
Can also be used as a |method|: >
|
||||
GetPropName()->prop_type_delete()
|
||||
<
|
||||
Return type: |Number|
|
||||
Return type: void
|
||||
|
||||
|
||||
prop_type_get({name} [, {props}]) *prop_type_get()*
|
||||
@@ -509,7 +511,9 @@ will move accordingly.
|
||||
|
||||
When text is deleted and a text property no longer includes any text, it is
|
||||
deleted. However, a text property that was defined as zero-width will remain,
|
||||
unless the whole line is deleted.
|
||||
unless the whole line is deleted. When lines are joined by a multi-line
|
||||
substitute command, virtual text properties on the deleted lines are moved to
|
||||
the resulting joined line.
|
||||
*E275*
|
||||
When a buffer is unloaded, all the text properties are gone. There is no way
|
||||
to store the properties in a file. You can only re-create them. When a
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*various.txt* For Vim version 9.2. Last change: 2026 Feb 14
|
||||
*various.txt* For Vim version 9.2. Last change: 2026 Apr 06
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*version9.txt* For Vim version 9.2. Last change: 2026 Mar 22
|
||||
*version9.txt* For Vim version 9.2. Last change: 2026 Apr 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -52611,15 +52611,29 @@ Other ~
|
||||
- New "leadtab" value for the 'listchars' setting.
|
||||
- Improved |:set+=|, |:set^=| and |:set-=| handling of comma-separated "key:value"
|
||||
pairs individually (e.g. 'listchars', 'fillchars', 'diffopt').
|
||||
- |system()| and |systemlist()| functions accept a list as first argument,
|
||||
bypassing the shell completely.
|
||||
- Allow mouse clickable regions in the |status-line| using the
|
||||
|stl-%[FuncName]| atom.
|
||||
- Enable reflow support in the |:terminal|.
|
||||
|
||||
Platform specific ~
|
||||
-----------------
|
||||
- support OpenType font features in 'guifont' for DirectWrite (Win32)
|
||||
|
||||
xxd ~
|
||||
---
|
||||
Add "-t" option to append a terminating NUL byte to C include output (-i).
|
||||
|
||||
*changed-9.3*
|
||||
Changed~
|
||||
Changed ~
|
||||
-------
|
||||
- Support for NeXTStep was dropped with patch v9.2.0122
|
||||
- |json_decode()| is stricter: keywords must be lowercase, lone surrogates are
|
||||
now invalid
|
||||
- |js_decode()| rejects lone surrogates
|
||||
- virtual text properties on lines deleted by a multi-line substitute
|
||||
are moved to the resulting joined line instead of being dropped.
|
||||
|
||||
*added-9.3*
|
||||
Added ~
|
||||
@@ -52636,6 +52650,7 @@ Autocommands: ~
|
||||
|
||||
Options: ~
|
||||
|
||||
'pumopt' Additional options for the popup menu
|
||||
'statuslineopt' Extra window-local options for the 'statusline', to
|
||||
configure the height.
|
||||
't_BS' Begin synchronized update.
|
||||
|
||||
@@ -283,13 +283,13 @@ Stampa i primi 120 byte di questa pagina di manuale a 12 byte per riga.
|
||||
.br
|
||||
00000024: 616c 6520 7065 7220 7878 6422 ale per xxd"
|
||||
.br
|
||||
00000030: 0a2e 5c22 0a2e 5c22 2032 3173 ..\"..\" 21s
|
||||
00000030: 0a2e 5c22 0a2e 5c22 2032 3173 ..\\"..\\" 21s
|
||||
.br
|
||||
0000003c: 7420 4d61 7920 3139 3936 0a2e t May 1996..
|
||||
.br
|
||||
00000048: 5c22 204d 616e 2070 6167 6520 \" Man page
|
||||
00000048: 5c22 204d 616e 2070 6167 6520 \\" Man page
|
||||
.br
|
||||
00000054: 6175 7468 6f72 3a0a 2e5c 2220 author:..\"
|
||||
00000054: 6175 7468 6f72 3a0a 2e5c 2220 author:..\\"
|
||||
.br
|
||||
00000060: 2020 2054 6f6e 7920 4e75 6765 Tony Nuge
|
||||
.br
|
||||
|
||||
@@ -283,13 +283,13 @@ Stampa i primi 120 byte di questa pagina di manuale a 12 byte per riga.
|
||||
.br
|
||||
00000024: 616c 6520 7065 7220 7878 6422 ale per xxd"
|
||||
.br
|
||||
00000030: 0a2e 5c22 0a2e 5c22 2032 3173 ..\"..\" 21s
|
||||
00000030: 0a2e 5c22 0a2e 5c22 2032 3173 ..\\"..\\" 21s
|
||||
.br
|
||||
0000003c: 7420 4d61 7920 3139 3936 0a2e t May 1996..
|
||||
.br
|
||||
00000048: 5c22 204d 616e 2070 6167 6520 \" Man page
|
||||
00000048: 5c22 204d 616e 2070 6167 6520 \\" Man page
|
||||
.br
|
||||
00000054: 6175 7468 6f72 3a0a 2e5c 2220 author:..\"
|
||||
00000054: 6175 7468 6f72 3a0a 2e5c 2220 author:..\\"
|
||||
.br
|
||||
00000060: 2020 2054 6f6e 7920 4e75 6765 Tony Nuge
|
||||
.br
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.TH XXD 1 "May 2024" "Справочник по программе xxd"
|
||||
.TH XXD 1 "Март 2026" "Справочник по программе xxd"
|
||||
.\"
|
||||
.\" 21st May 1996
|
||||
.\" Man page author:
|
||||
@@ -203,6 +203,10 @@ ASCII,
|
||||
Если аргумент \-s не используется, то программа xxd начинает обработку
|
||||
от текущей позиции в файле.
|
||||
.TP
|
||||
.I \-t
|
||||
При использовании аргумента \-i для вывода в стиле подключаемых заголовочных
|
||||
файлов языка Си также включать завершающий нулевой символ
|
||||
.TP
|
||||
.I \-u
|
||||
Указывает, что в выводе отображать шестнадцатеричные цифры в верхнем регистре.
|
||||
По умолчанию используются символы в нижнем регистре символов.
|
||||
@@ -304,7 +308,7 @@ PostScript
|
||||
.br
|
||||
\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
|
||||
.br
|
||||
2e544820585844203120224d6179203230323422
|
||||
2e544820585844203120224d6172203230323622
|
||||
.br
|
||||
20224d616e75616c207061676520666f72207878
|
||||
.br
|
||||
@@ -327,7 +331,7 @@ PostScript
|
||||
.br
|
||||
00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
|
||||
.br
|
||||
0000000c: 6179 2032 3032 3422 2022 4d61 ay 2024" "Ma
|
||||
0000000c: 6172 2032 3032 3622 2022 4d61 ar 2026" "Ma
|
||||
.br
|
||||
00000018: 6e75 616c 2070 6167 6520 666f nual page fo
|
||||
.br
|
||||
@@ -433,6 +437,20 @@ PostScript
|
||||
.br
|
||||
\fI% echo \-n foo \> /dev/term/b\fR
|
||||
.PP
|
||||
Вывод в стиле подключаемых заголовочных файлв языка Си с завершающим нулём
|
||||
.br
|
||||
\fI% echo -n \&"0123456789\&" > digits\fR
|
||||
.br
|
||||
\fI% xxd -i -t digits\fR
|
||||
.br
|
||||
unsigned char digits[] = {
|
||||
.br
|
||||
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00
|
||||
.br
|
||||
};
|
||||
.br
|
||||
unsigned int digits_len = 10;
|
||||
.PP
|
||||
.SH КОДЫ ЗАВЕРШЕНИЯ
|
||||
При завершении работы, программа xxd возвращает следующие значения:
|
||||
.TP
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.TH XXD 1 "May 2024" "Справочник по программе xxd"
|
||||
.TH XXD 1 "Март 2026" "Справочник по программе xxd"
|
||||
.\"
|
||||
.\" 21st May 1996
|
||||
.\" Man page author:
|
||||
@@ -203,6 +203,10 @@ ASCII, которые можно передавать по электронно
|
||||
Если аргумент \-s не используется, то программа xxd начинает обработку
|
||||
от текущей позиции в файле.
|
||||
.TP
|
||||
.I \-t
|
||||
При использовании аргумента \-i для вывода в стиле подключаемых заголовочных
|
||||
файлов языка Си также включать завершающий нулевой символ
|
||||
.TP
|
||||
.I \-u
|
||||
Указывает, что в выводе отображать шестнадцатеричные цифры в верхнем регистре.
|
||||
По умолчанию используются символы в нижнем регистре символов.
|
||||
@@ -304,7 +308,7 @@ PostScript с помощью команды xxd \-r \-p количество к
|
||||
.br
|
||||
\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
|
||||
.br
|
||||
2e544820585844203120224d6179203230323422
|
||||
2e544820585844203120224d6172203230323622
|
||||
.br
|
||||
20224d616e75616c207061676520666f72207878
|
||||
.br
|
||||
@@ -327,7 +331,7 @@ PostScript с помощью команды xxd \-r \-p количество к
|
||||
.br
|
||||
00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
|
||||
.br
|
||||
0000000c: 6179 2032 3032 3422 2022 4d61 ay 2024" "Ma
|
||||
0000000c: 6172 2032 3032 3622 2022 4d61 ar 2026" "Ma
|
||||
.br
|
||||
00000018: 6e75 616c 2070 6167 6520 666f nual page fo
|
||||
.br
|
||||
@@ -433,6 +437,20 @@ PostScript с помощью команды xxd \-r \-p количество к
|
||||
.br
|
||||
\fI% echo \-n foo \> /dev/term/b\fR
|
||||
.PP
|
||||
Вывод в стиле подключаемых заголовочных файлв языка Си с завершающим нулём
|
||||
.br
|
||||
\fI% echo -n \&"0123456789\&" > digits\fR
|
||||
.br
|
||||
\fI% xxd -i -t digits\fR
|
||||
.br
|
||||
unsigned char digits[] = {
|
||||
.br
|
||||
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00
|
||||
.br
|
||||
};
|
||||
.br
|
||||
unsigned int digits_len = 10;
|
||||
.PP
|
||||
.SH КОДЫ ЗАВЕРШЕНИЯ
|
||||
При завершении работы, программа xxd возвращает следующие значения:
|
||||
.TP
|
||||
|
||||
@@ -246,14 +246,14 @@ Print 3 lines (hex 0x30 bytes) from the end of
|
||||
\fI% xxd \-s \-0x30 file\fR
|
||||
.PP
|
||||
Note: The results of the examples below are relevant to the xxd.1 man page as of
|
||||
May 2024
|
||||
March 2026
|
||||
.PP
|
||||
.br
|
||||
Print 120 bytes as a continuous hex dump with 20 octets per line.
|
||||
.br
|
||||
\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
|
||||
.br
|
||||
2e544820585844203120224d6179203230323422
|
||||
2e544820585844203120224d6172203230323622
|
||||
.br
|
||||
20224d616e75616c207061676520666f72207878
|
||||
.br
|
||||
@@ -273,7 +273,7 @@ Hex dump the first 120 bytes of this man page with 12 octets per line.
|
||||
.br
|
||||
00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
|
||||
.br
|
||||
0000000c: 6179 2032 3032 3422 2022 4d61 ay 2024" "Ma
|
||||
0000000c: 6172 2032 3032 3622 2022 4d61 ar 2026" "Ma
|
||||
.br
|
||||
00000018: 6e75 616c 2070 6167 6520 666f nual page fo
|
||||
.br
|
||||
|
||||
@@ -181,11 +181,11 @@ EXAMPLES
|
||||
% xxd -s -0x30 file
|
||||
|
||||
Note: The results of the examples below are relevant to the xxd.1 man
|
||||
page as of May 2024
|
||||
page as of March 2026
|
||||
|
||||
Print 120 bytes as a continuous hex dump with 20 octets per line.
|
||||
% xxd -l 120 -ps -c 20 xxd.1
|
||||
2e544820585844203120224d6179203230323422
|
||||
2e544820585844203120224d6172203230323622
|
||||
20224d616e75616c207061676520666f72207878
|
||||
64220a2e5c220a2e5c222032317374204d617920
|
||||
313939360a2e5c22204d616e2070616765206175
|
||||
@@ -195,7 +195,7 @@ EXAMPLES
|
||||
Hex dump the first 120 bytes of this man page with 12 octets per line.
|
||||
% xxd -l 120 -c 12 xxd.1
|
||||
00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
|
||||
0000000c: 6179 2032 3032 3422 2022 4d61 ay 2024" "Ma
|
||||
0000000c: 6172 2032 3032 3622 2022 4d61 ar 2026" "Ma
|
||||
00000018: 6e75 616c 2070 6167 6520 666f nual page fo
|
||||
00000024: 7220 7878 6422 0a2e 5c22 0a2e r xxd"..\"..
|
||||
00000030: 5c22 2032 3173 7420 4d61 7920 \" 21st May
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types
|
||||
"
|
||||
" Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
" Last Change: 2026 Mar 19
|
||||
" Last Change: 2026 Apr 08
|
||||
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
" If the filetype can be detected from extension or file name(the final path component),
|
||||
@@ -119,10 +119,13 @@ au BufNewFile,BufRead */boot/grub/menu.lst,*/boot/grub/grub.conf,*/etc/grub.conf
|
||||
" *.mc omitted - used by dist#ft#McSetf()
|
||||
au BufNewFile,BufRead *.demo,*.dm{1,2,3,t},*.wxm,maxima-init.mac setf maxima
|
||||
|
||||
" ObjectScript routine or assembly
|
||||
au BufNewFile,BufRead *.mac call dist#ft#FTmac()
|
||||
|
||||
" Assembly (all kinds)
|
||||
" *.lst is not pure assembly, it has two extra columns (address, byte codes)
|
||||
" *.[sS], *.[aA] usually Assembly - GNU
|
||||
au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst call dist#ft#FTasm()
|
||||
au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.lst call dist#ft#FTasm()
|
||||
|
||||
" BASIC or Visual Basic
|
||||
au BufNewFile,BufRead *.bas call dist#ft#FTbas()
|
||||
@@ -572,6 +575,9 @@ au BufNewFile,BufRead *.pro call dist#ft#ProtoCheck('idlang')
|
||||
" Initng
|
||||
au BufNewFile,BufRead */etc/initng/*/*.i,*.ii setf initng
|
||||
|
||||
" Intel HEX or ObjectScript routine
|
||||
au BufNewFile,BufRead *.int call dist#ft#FTint()
|
||||
|
||||
" Innovation Data Processing
|
||||
au BufNewFile,BufRead upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c setf upstreamdat
|
||||
au BufNewFile,BufRead fdrupstream.log,upstream.log\c,upstream.*.log\c,*.upstream.log\c,UPSTREAM-*.log\c setf upstreamlog
|
||||
@@ -884,7 +890,10 @@ au BufNewFile,BufRead requirements/*.txt setf requirements
|
||||
au BufNewFile,BufRead requires/*.txt setf requirements
|
||||
|
||||
" Pkl
|
||||
au BufNewFile,BufRead *.pkl,*.pcf,pkl-lsp://* setf pkl
|
||||
au BufNewFile,BufRead PklProject,*.pkl,*.pcf,pkl-lsp://* setf pkl
|
||||
|
||||
" WIC kickstarter files
|
||||
au BufNewFile,BufRead *.wks,*.wks.in,*.wks.inc setf wks
|
||||
|
||||
" Povray, Pascal, PHP or assembly
|
||||
au BufNewFile,BufRead *.inc call dist#ft#FTinc()
|
||||
@@ -1303,7 +1312,7 @@ au BufNewFile,BufRead *Xmodmap setf xmodmap
|
||||
au BufNewFile,BufRead *.y call dist#ft#FTy()
|
||||
|
||||
" Yaml
|
||||
au BufNewFile,BufRead */.kube/config,*/.kube/kuberc setf yaml
|
||||
au BufNewFile,BufRead buf.lock,*/.kube/config,*/.kube/kuberc setf yaml
|
||||
|
||||
" yum conf (close enough to dosini)
|
||||
au BufNewFile,BufRead */etc/yum.conf setf dosini
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
" Previous Maintainer: Will Langstroth <will@langstroth.com>
|
||||
" URL: https://github.com/benknoble/vim-racket
|
||||
" Last Change: 2025 Aug 09
|
||||
" 2026 Mar 31 by Vim project: use shellescape for the K mapping
|
||||
" 2026 Apr 01 by Vim project: make K mapping more robust for shell injection
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
@@ -51,7 +53,7 @@ if !exists("no_plugin_maps") && !exists("no_racket_maps")
|
||||
try
|
||||
let l:old_a = @a
|
||||
normal! gv"ay
|
||||
call system("raco docs '". @a . "'")
|
||||
call system("raco docs -- ". string(shellescape(@a)))
|
||||
redraw!
|
||||
return @a
|
||||
finally
|
||||
|
||||
14
runtime/ftplugin/wks.vim
Normal file
14
runtime/ftplugin/wks.vim
Normal file
@@ -0,0 +1,14 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: OpenEmbedded Image Creator (WIC) Kickstarter files wks
|
||||
" Maintainer: Anakin Childerhose <anakin@childerhose.ca>
|
||||
" Last Change: 2026 Mar 23
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal comments=:#
|
||||
setlocal commentstring=#\ %s
|
||||
|
||||
let b:undo_ftplugin = 'setlocal com< cms<'
|
||||
@@ -1,7 +1,7 @@
|
||||
" These commands create the option window.
|
||||
"
|
||||
" Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
" Last Change: 2026 Mar 11
|
||||
" Last Change: 2026 Apr 07
|
||||
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
" If there already is an option window, jump to that one.
|
||||
@@ -913,6 +913,8 @@ if has("insert_expand")
|
||||
call <SID>OptionG("pmw", &pmw)
|
||||
call <SID>AddOption("pumborder", gettext("popup border style"))
|
||||
call <SID>OptionG("pb", &pb)
|
||||
call <SID>AddOption("pumopt", gettext("additional options for the popup menu"))
|
||||
call <SID>OptionG("pumopt", &pumopt)
|
||||
call <SID>AddOption("completefunc", gettext("user defined function for Insert mode completion"))
|
||||
call append("$", "\t" .. s:local_to_buffer)
|
||||
call <SID>OptionL("cfu")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
vim9script
|
||||
|
||||
# Highlight Yank plugin
|
||||
# Last Change: 2025 Mar 22
|
||||
# Last Change: 2026 Apr 11
|
||||
|
||||
def HighlightedYank()
|
||||
|
||||
@@ -28,7 +28,11 @@ def HighlightedYank()
|
||||
return [v[0][1], col_beg, col_end - col_beg]
|
||||
}))
|
||||
var winid = win_getid()
|
||||
timer_start(duration, (_) => m->matchdelete(winid))
|
||||
timer_start(duration, (_) => {
|
||||
if winbufnr(winid) != -1
|
||||
m->matchdelete(winid)
|
||||
endif
|
||||
})
|
||||
endif
|
||||
enddef
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
" 2026 Feb 21 by Vim Project better absolute path detection on MS-Windows #19477
|
||||
" 2026 Feb 27 by Vim Project Make the hostname validation more strict
|
||||
" 2026 Mar 01 by Vim Project include portnumber in hostname checking #19533
|
||||
" 2026 Apr 01 by Vim Project use fnameescape() with netrw#FileUrlEdit()
|
||||
" 2026 Apr 05 by Vim Project Fix netrw#RFC2396() #19913
|
||||
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
|
||||
" Permission is hereby granted to use and distribute this code,
|
||||
" with or without modifications, provided that this copyright
|
||||
@@ -8282,7 +8284,7 @@ function netrw#FileUrlEdit(fname)
|
||||
endif
|
||||
|
||||
exe "sil doau BufReadPre ".fname2396e
|
||||
exe 'NetrwKeepj keepalt edit '.plainfname
|
||||
exe 'NetrwKeepj keepalt edit '. fnameescape(plainfname)
|
||||
exe 'sil! NetrwKeepj keepalt bdelete '.fnameescape(a:fname)
|
||||
|
||||
exe "sil doau BufReadPost ".fname2396e
|
||||
@@ -8825,8 +8827,7 @@ endfunction
|
||||
|
||||
" netrw#RFC2396: converts %xx into characters {{{2
|
||||
function netrw#RFC2396(fname)
|
||||
let fname = escape(substitute(a:fname,'%\(\x\x\)','\=printf("%c","0x".submatch(1))','ge')," \t")
|
||||
return fname
|
||||
return substitute(a:fname, '%\(\x\x\)', '\=printf("%c","0x".submatch(1))', 'ge')
|
||||
endfunction
|
||||
|
||||
" netrw#UserMaps: supports user-specified maps {{{2
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
" Maintainer: Enno Nagel <ennonagel+vim@gmail.com>
|
||||
" Last Change: 2024 Jul 03
|
||||
" 2026 Mar 22 by Vim Project: strip OSC 9 sequences (#19787)
|
||||
" 2026 Mar 24 by Vim Project: strip Bell char: Ctrl-G (#19807)
|
||||
|
||||
if exists('g:loaded_manpager_plugin')
|
||||
finish
|
||||
@@ -33,8 +34,8 @@ function s:ManPager()
|
||||
" Remove ansi sequences
|
||||
exe 'silent! keepj keepp %s/\v\e\[%(%(\d;)?\d{1,2})?[mK]//e' .. (&gdefault ? '' : 'g')
|
||||
|
||||
" Remove OSC 8 hyperlink sequences: \e]8;;...\e\ or \e]8;;...\a
|
||||
exe 'silent! keepj keepp %s/\v\e\]8;[^\a\e]*%(\a|\e\\)//e' .. (&gdefault ? '' : 'g')
|
||||
" Remove OSC 8 hyperlink sequences: \e]8;;...\e\ or \e]8;;...<BEL>
|
||||
exe 'silent! keepj keepp %s/\v\e\]8;[^\x07\e]*%(%x07|\e\\)//e' .. (&gdefault ? '' : 'g')
|
||||
|
||||
" Remove empty lines above the header
|
||||
call cursor(1, 1)
|
||||
|
||||
@@ -1,89 +1,303 @@
|
||||
" Vim syntax file
|
||||
" Language: AmigaDos
|
||||
" Maintainer: This runtime file is looking for a new maintainer.
|
||||
" Former Maintainer: Charles E. Campbell
|
||||
" Last Change: Aug 31, 2016
|
||||
" Version: 10
|
||||
" Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_AMIGA
|
||||
" Language: AmigaDOS
|
||||
" Maintainer: Ola Söder <rolfkopman@gmail.com>
|
||||
" First Author: Charles E. Campbell
|
||||
" Last Change: 2026 Mar 25
|
||||
" Version: 11
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
finish
|
||||
endif
|
||||
|
||||
syn case ignore
|
||||
|
||||
" Amiga Devices
|
||||
syn match amiDev "\(par\|ser\|prt\|con\|nil\):"
|
||||
" Directives
|
||||
syn match amiDirective "^\.\(key\|k\)\>.*$" contains=amiTemplate
|
||||
syn match amiDirective "^\.\(bra\|ket\|dot\|dollar\|dol\|def\|default\)\>.*$"
|
||||
|
||||
" Amiga aliases and paths
|
||||
syn match amiAlias "\<[a-zA-Z][a-zA-Z0-9]\+:"
|
||||
syn match amiAlias "\<[a-zA-Z][a-zA-Z0-9]\+:[a-zA-Z0-9/]*/"
|
||||
" Template arguments
|
||||
syn match amiTemplate contained "/[AKSNMF]\>"
|
||||
|
||||
" strings
|
||||
syn region amiString start=+"+ end=+"+ oneline contains=@Spell
|
||||
" Strings
|
||||
syn region amiString start=+"+ end=+"+ oneline contains=amiEscape,amiVar,amiSubst,@Spell
|
||||
|
||||
" numbers
|
||||
syn match amiNumber "\<\d\+\>"
|
||||
" Escape sequences
|
||||
syn match amiEscape contained "\*[nNeE"*]"
|
||||
|
||||
" Logic flow
|
||||
syn region amiFlow matchgroup=Statement start="if" matchgroup=Statement end="endif" contains=ALL
|
||||
syn keyword amiFlow skip endskip
|
||||
syn match amiError "else\|endif"
|
||||
syn keyword amiElse contained else
|
||||
" Numbers
|
||||
syn match amiNumber "\<\d\+\>"
|
||||
|
||||
syn keyword amiTest contained not warn error fail eq gt ge val exists
|
||||
" Variables
|
||||
syn match amiVar "\$[a-zA-Z_][a-zA-Z0-9_]*"
|
||||
syn match amiVar "\$\$"
|
||||
|
||||
" echo exception
|
||||
syn region amiEcho matchgroup=Statement start="\<echo\>" end="$" oneline contains=amiComment
|
||||
syn region amiEcho matchgroup=Statement start="^\.[bB][rR][aA]" end="$" oneline
|
||||
syn region amiEcho matchgroup=Statement start="^\.[kK][eE][tT]" end="$" oneline
|
||||
" Parameters
|
||||
syn region amiSubst start="<\a" end=">" oneline contains=amiVar
|
||||
syn match amiSubst "<\$\$>"
|
||||
|
||||
" commands
|
||||
syn keyword amiKey addbuffers copy fault join pointer setdate
|
||||
syn keyword amiKey addmonitor cpu filenote keyshow printer setenv
|
||||
syn keyword amiKey alias date fixfonts lab printergfx setfont
|
||||
syn keyword amiKey ask delete fkey list printfiles setmap
|
||||
syn keyword amiKey assign dir font loadwb prompt setpatch
|
||||
syn keyword amiKey autopoint diskchange format lock protect sort
|
||||
syn keyword amiKey avail diskcopy get magtape quit stack
|
||||
syn keyword amiKey binddrivers diskdoctor getenv makedir relabel status
|
||||
syn keyword amiKey bindmonitor display graphicdump makelink remrad time
|
||||
syn keyword amiKey blanker iconedit more rename type
|
||||
syn keyword amiKey break ed icontrol mount resident unalias
|
||||
syn keyword amiKey calculator edit iconx newcli run unset
|
||||
syn keyword amiKey cd endcli ihelp newshell say unsetenv
|
||||
syn keyword amiKey changetaskpri endshell info nocapslock screenmode version
|
||||
syn keyword amiKey clock eval initprinter nofastmem search wait
|
||||
syn keyword amiKey cmd exchange input overscan serial wbpattern
|
||||
syn keyword amiKey colors execute install palette set which
|
||||
syn keyword amiKey conclip failat iprefs path setclock why
|
||||
" Devices / assigns / paths
|
||||
syn match amiPath "\<[a-zA-Z][a-zA-Z0-9]*:[^ \t]*"
|
||||
|
||||
" comments
|
||||
syn cluster amiCommentGroup contains=amiTodo,@Spell
|
||||
syn case ignore
|
||||
syn keyword amiTodo contained todo
|
||||
syn case match
|
||||
syn match amiComment ";.*$" contains=amiCommentGroup
|
||||
" Redirection
|
||||
syn match amiOperator ">>"
|
||||
syn match amiOperator "[<>|]"
|
||||
|
||||
" sync
|
||||
syn sync lines=50
|
||||
" Control flow
|
||||
syn region amiIfBlock matchgroup=amiConditional start="\<IF\>" matchgroup=amiConditional end="\<ENDIF\>" contains=ALLBUT,amiIfError
|
||||
syn keyword amiIfError ELSE ENDIF
|
||||
syn keyword amiElse contained ELSE
|
||||
syn keyword amiConditional SKIP ENDSKIP
|
||||
syn keyword amiLabel LAB
|
||||
syn keyword amiRepeat FOREACH
|
||||
|
||||
" Conditions
|
||||
syn keyword amiCondition contained NOT WARN ERROR FAIL EQ GT GE VAL EXISTS
|
||||
|
||||
" Echo
|
||||
syn region amiEcho matchgroup=amiCommand start="\<echo\>" end="$" oneline contains=amiComment,amiVar,amiSubst,amiBacktick,amiEscape
|
||||
|
||||
" Commands
|
||||
syn keyword amiCommand ADDAUDIOMODES
|
||||
syn keyword amiCommand ADDBUFFERS
|
||||
syn keyword amiCommand ADDDATATYPES
|
||||
syn keyword amiCommand ADDMONITOR
|
||||
syn keyword amiCommand ADDNETINTERFACE
|
||||
syn keyword amiCommand ADDNETROUTE
|
||||
syn keyword amiCommand ALIAS
|
||||
syn keyword amiCommand APPLISTINFO
|
||||
syn keyword amiCommand ARP
|
||||
syn keyword amiCommand ASK
|
||||
syn keyword amiCommand ASSIGN
|
||||
syn keyword amiCommand AVAIL
|
||||
syn keyword amiCommand BINDDRIVERS
|
||||
syn keyword amiCommand BINDMONITOR
|
||||
syn keyword amiCommand BREAK
|
||||
syn keyword amiCommand BUILDMAPTABLE
|
||||
syn keyword amiCommand CACHESTAT
|
||||
syn keyword amiCommand CD
|
||||
syn keyword amiCommand CHANGETASKPRI
|
||||
syn keyword amiCommand CHARSETCONVERT
|
||||
syn keyword amiCommand CLIP
|
||||
syn keyword amiCommand CLOCK
|
||||
syn keyword amiCommand CMD
|
||||
syn keyword amiCommand CONCLIP
|
||||
syn keyword amiCommand CONFIGURENETINTERFACE
|
||||
syn keyword amiCommand COPY
|
||||
syn keyword amiCommand COUNTLINES
|
||||
syn keyword amiCommand CPU
|
||||
syn keyword amiCommand CROSSDOS
|
||||
syn keyword amiCommand CUT
|
||||
syn keyword amiCommand DATE
|
||||
syn keyword amiCommand DELETE
|
||||
syn keyword amiCommand DELETENETROUTE
|
||||
syn keyword amiCommand DIR
|
||||
syn keyword amiCommand DISKCHANGE
|
||||
syn keyword amiCommand DISKCOPY
|
||||
syn keyword amiCommand DISKDOCTOR
|
||||
syn keyword amiCommand DISMOUNT
|
||||
syn keyword amiCommand ENDCLI
|
||||
syn keyword amiCommand ENDSHELL
|
||||
syn keyword amiCommand EVAL
|
||||
syn keyword amiCommand EXECUTE
|
||||
syn keyword amiCommand FAILAT
|
||||
syn keyword amiCommand FAULT
|
||||
syn keyword amiCommand FDTOOL
|
||||
syn keyword amiCommand FILENOTE
|
||||
syn keyword amiCommand FILESIZE
|
||||
syn keyword amiCommand FORMAT
|
||||
syn keyword amiCommand GET
|
||||
syn keyword amiCommand GETENV
|
||||
syn keyword amiCommand GETNETSTATUS
|
||||
syn keyword amiCommand GROUP
|
||||
syn keyword amiCommand HELP
|
||||
syn keyword amiCommand HI
|
||||
syn keyword amiCommand HISTORY
|
||||
syn keyword amiCommand IHELP
|
||||
syn keyword amiCommand INFO
|
||||
syn keyword amiCommand INITPRINTER
|
||||
syn keyword amiCommand INPUT
|
||||
syn keyword amiCommand INSTALL
|
||||
syn keyword amiCommand INTELLIFONT
|
||||
syn keyword amiCommand IPMON
|
||||
syn keyword amiCommand IPNAT
|
||||
syn keyword amiCommand JOIN
|
||||
syn keyword amiCommand KDEBUG
|
||||
syn keyword amiCommand LAB
|
||||
syn keyword amiCommand LIST
|
||||
syn keyword amiCommand LOADMONDRVS
|
||||
syn keyword amiCommand LOADRESOURCE
|
||||
syn keyword amiCommand LOADWB
|
||||
syn keyword amiCommand LOCALE
|
||||
syn keyword amiCommand LOCK
|
||||
syn keyword amiCommand MAKEDIR
|
||||
syn keyword amiCommand MAKELINK
|
||||
syn keyword amiCommand MEMSTAT
|
||||
syn keyword amiCommand MORE
|
||||
syn keyword amiCommand MOUNT
|
||||
syn keyword amiCommand MOUNTINFO
|
||||
syn keyword amiCommand MOVE
|
||||
syn keyword amiCommand NETLOGVIEWER
|
||||
syn keyword amiCommand NETSHUTDOWN
|
||||
syn keyword amiCommand NEWCLI
|
||||
syn keyword amiCommand NEWSHELL
|
||||
syn keyword amiCommand OWNER
|
||||
syn keyword amiCommand PATH
|
||||
syn keyword amiCommand PATHPART
|
||||
syn keyword amiCommand PIPE
|
||||
syn keyword amiCommand POINTER
|
||||
syn keyword amiCommand POOLSTAT
|
||||
syn keyword amiCommand POPCD
|
||||
syn keyword amiCommand PREPCARD
|
||||
syn keyword amiCommand PROMPT
|
||||
syn keyword amiCommand PROTECT
|
||||
syn keyword amiCommand PUSHCD
|
||||
syn keyword amiCommand QUIT
|
||||
syn keyword amiCommand REBOOT
|
||||
syn keyword amiCommand RELABEL
|
||||
syn keyword amiCommand RELOADAPPLIST
|
||||
syn keyword amiCommand REMOVENETINTERFACE
|
||||
syn keyword amiCommand REMRAD
|
||||
syn keyword amiCommand RENAME
|
||||
syn keyword amiCommand REQUESTCHOICE
|
||||
syn keyword amiCommand REQUESTFILE
|
||||
syn keyword amiCommand REQUESTSTRING
|
||||
syn keyword amiCommand RESIDENT
|
||||
syn keyword amiCommand ROADSHOWCONTROL
|
||||
syn keyword amiCommand RUN
|
||||
syn keyword amiCommand RX
|
||||
syn keyword amiCommand RXC
|
||||
syn keyword amiCommand RXLIB
|
||||
syn keyword amiCommand RXSET
|
||||
syn keyword amiCommand SAY
|
||||
syn keyword amiCommand SEARCH
|
||||
syn keyword amiCommand SET
|
||||
syn keyword amiCommand SETCLOCK
|
||||
syn keyword amiCommand SETDATE
|
||||
syn keyword amiCommand SETDOSDEBUG
|
||||
syn keyword amiCommand SETENV
|
||||
syn keyword amiCommand SETFONT
|
||||
syn keyword amiCommand SETFONTCHARSET
|
||||
syn keyword amiCommand SETKEYBOARD
|
||||
syn keyword amiCommand SETMAP
|
||||
syn keyword amiCommand SETPATCH
|
||||
syn keyword amiCommand SHOW68LOADS
|
||||
syn keyword amiCommand SHOWAPPLIST
|
||||
syn keyword amiCommand SHOWNETSTATUS
|
||||
syn keyword amiCommand SMARTCTL
|
||||
syn keyword amiCommand SORT
|
||||
syn keyword amiCommand SOUNDPLAYER
|
||||
syn keyword amiCommand STACK
|
||||
syn keyword amiCommand STATUS
|
||||
syn keyword amiCommand SWAPCD
|
||||
syn keyword amiCommand TYPE
|
||||
syn keyword amiCommand UNALIAS
|
||||
syn keyword amiCommand UNSET
|
||||
syn keyword amiCommand UNSETENV
|
||||
syn keyword amiCommand UPTIME
|
||||
syn keyword amiCommand URLOPEN
|
||||
syn keyword amiCommand VERSION
|
||||
syn keyword amiCommand WAIT
|
||||
syn keyword amiCommand WAITFORPORT
|
||||
syn keyword amiCommand WBRUN
|
||||
syn keyword amiCommand WBSTARTUPCTRL
|
||||
syn keyword amiCommand WHICH
|
||||
syn keyword amiCommand WHY
|
||||
|
||||
" Options
|
||||
syn keyword amiOption ADD
|
||||
syn keyword amiOption ALL
|
||||
syn keyword amiOption APPEND
|
||||
syn keyword amiOption BACK
|
||||
syn keyword amiOption BODY
|
||||
syn keyword amiOption BUF
|
||||
syn keyword amiOption BUFFER
|
||||
syn keyword amiOption CASE
|
||||
syn keyword amiOption CHARSET
|
||||
syn keyword amiOption CHECK
|
||||
syn keyword amiOption CLEAR
|
||||
syn keyword amiOption CLONE
|
||||
syn keyword amiOption COPYLINKS
|
||||
syn keyword amiOption DATES
|
||||
syn keyword amiOption DEBUG
|
||||
syn keyword amiOption DEVICE
|
||||
syn keyword amiOption DIRS
|
||||
syn keyword amiOption DRIVE
|
||||
syn keyword amiOption FILE
|
||||
syn keyword amiOption FILES
|
||||
syn keyword amiOption FOLLOWLINKS
|
||||
syn keyword amiOption FORCE
|
||||
syn keyword amiOption FROM
|
||||
syn keyword amiOption FULL
|
||||
syn keyword amiOption HARD
|
||||
syn keyword amiOption INTERACTIVE
|
||||
syn keyword amiOption LFORMAT
|
||||
syn keyword amiOption LOAD
|
||||
syn keyword amiOption LOCK
|
||||
syn keyword amiOption MULTI
|
||||
syn keyword amiOption NAME
|
||||
syn keyword amiOption NEGATIVE
|
||||
syn keyword amiOption NOHEAD
|
||||
syn keyword amiOption NONUM
|
||||
syn keyword amiOption NOREPLACE
|
||||
syn keyword amiOption NOREQ
|
||||
syn keyword amiOption NUMERIC
|
||||
syn keyword amiOption OFF
|
||||
syn keyword amiOption ON
|
||||
syn keyword amiOption PATTERN
|
||||
syn keyword amiOption POSITIVE
|
||||
syn keyword amiOption PREPEND
|
||||
syn keyword amiOption PUBSCREEN
|
||||
syn keyword amiOption QUICK
|
||||
syn keyword amiOption QUIET
|
||||
syn keyword amiOption REMOVE
|
||||
syn keyword amiOption REPLACE
|
||||
syn keyword amiOption RESET
|
||||
syn keyword amiOption SAVE
|
||||
syn keyword amiOption SHOW
|
||||
syn keyword amiOption SINCE
|
||||
syn keyword amiOption SOFT
|
||||
syn keyword amiOption SORT
|
||||
syn keyword amiOption SUB
|
||||
syn keyword amiOption TIMEOUT
|
||||
syn keyword amiOption TITLE
|
||||
syn keyword amiOption TO
|
||||
syn keyword amiOption UNLOCK
|
||||
syn keyword amiOption UPTO
|
||||
syn keyword amiOption VERBOSE
|
||||
syn keyword amiOption WITH
|
||||
|
||||
" Comments
|
||||
syn match amiComment ";.*$" contains=amiTodo,@Spell
|
||||
syn match amiComment "^\.\s.*$" contains=amiTodo,@Spell
|
||||
syn match amiComment "^\.$"
|
||||
|
||||
" Miscellaneous
|
||||
syn keyword amiTodo contained TODO FIXME XXX NOTE
|
||||
syn region amiBacktick start="`" end="`" oneline
|
||||
|
||||
" Define the default highlighting.
|
||||
if !exists("skip_amiga_syntax_inits")
|
||||
|
||||
hi def link amiAlias Type
|
||||
hi def link amiComment Comment
|
||||
hi def link amiDev Type
|
||||
hi def link amiEcho String
|
||||
hi def link amiElse Statement
|
||||
hi def link amiError Error
|
||||
hi def link amiKey Statement
|
||||
hi def link amiNumber Number
|
||||
hi def link amiString String
|
||||
hi def link amiTest Special
|
||||
|
||||
hi def link amiBacktick Special
|
||||
hi def link amiCommand Statement
|
||||
hi def link amiComment Comment
|
||||
hi def link amiCondition Special
|
||||
hi def link amiConditional Conditional
|
||||
hi def link amiDirective PreProc
|
||||
hi def link amiEcho String
|
||||
hi def link amiElse Conditional
|
||||
hi def link amiEscape SpecialChar
|
||||
hi def link amiIfError Error
|
||||
hi def link amiLabel Label
|
||||
hi def link amiNumber Number
|
||||
hi def link amiOperator Operator
|
||||
hi def link amiOption Identifier
|
||||
hi def link amiPath Type
|
||||
hi def link amiRepeat Repeat
|
||||
hi def link amiString String
|
||||
hi def link amiSubst Special
|
||||
hi def link amiTemplate Type
|
||||
hi def link amiTodo Todo
|
||||
hi def link amiVar Special
|
||||
endif
|
||||
let b:current_syntax = "amiga"
|
||||
|
||||
" vim:ts=15
|
||||
let b:current_syntax = "amiga"
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
" Copyright (C) 2008 Ricardo Salveti <rsalveti@rsalveti.net>
|
||||
" Last Change: 2022 Jul 25
|
||||
" 2025 Oct 13 by Vim project: update multiline function syntax #18565
|
||||
" 2026 Apr 07 by Vim project: update syntax script #19931
|
||||
"
|
||||
" This file is licensed under the MIT license, see COPYING.MIT in
|
||||
" this source distribution for the terms.
|
||||
@@ -62,14 +63,14 @@ syn match bbVarFlagDef "^\([a-zA-Z0-9\-_\.]\+\)\(\[[a-zA-Z0-9\-_\.+]\+\
|
||||
syn region bbVarFlagFlag matchgroup=bbArrayBrackets start="\[" end="\]\s*\(:=\|=\|.=\|=.|+=\|=+\|?=\)\@=" contained contains=bbIdentifier nextgroup=bbVarEq
|
||||
|
||||
" Includes and requires
|
||||
syn keyword bbInclude inherit include require contained
|
||||
syn keyword bbInclude inherit inherit_defer include include_all require contained
|
||||
syn match bbIncludeRest ".*$" contained contains=bbString,bbVarDeref
|
||||
syn match bbIncludeLine "^\(inherit\|include\|require\)\s\+" contains=bbInclude nextgroup=bbIncludeRest
|
||||
syn match bbIncludeLine "^\(inherit\|inherit_defer\|include\|include_all\|require\)\s\+" contains=bbInclude nextgroup=bbIncludeRest
|
||||
|
||||
" Add taks and similar
|
||||
syn keyword bbStatement addtask deltask addhandler after before EXPORT_FUNCTIONS contained
|
||||
syn keyword bbStatement addtask deltask addhandler after before EXPORT_FUNCTIONS addpylib contained
|
||||
syn match bbStatementRest ".*$" skipwhite contained contains=bbStatement
|
||||
syn match bbStatementLine "^\(addtask\|deltask\|addhandler\|after\|before\|EXPORT_FUNCTIONS\)\s\+" contains=bbStatement nextgroup=bbStatementRest
|
||||
syn match bbStatementLine "^\(addtask\|deltask\|addhandler\|after\|before\|EXPORT_FUNCTIONS\|addpylib\)\s\+" contains=bbStatement nextgroup=bbStatementRest
|
||||
|
||||
" OE Important Functions
|
||||
syn keyword bbOEFunctions do_fetch do_unpack do_patch do_configure do_compile do_stage do_install do_package contained
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
" Vim syntax file
|
||||
" Language: Vim help file
|
||||
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
||||
" Last Change: 2025 Nov 13
|
||||
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2025 Nov 13
|
||||
" 2026 Apr 09 by Vim project: improve pattern for translated syntaxt.txt #19942
|
||||
|
||||
" Quit when a (custom) syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
@@ -306,7 +307,7 @@ hi def link helpDiffAdded Added
|
||||
hi def link helpDiffChanged Changed
|
||||
hi def link helpDiffRemoved Removed
|
||||
|
||||
if has('textprop') && expand('%:p') =~ '[/\\]doc[/\\]syntax.txt'
|
||||
if has('textprop') && expand('%:p') =~? '[/\\]doc[/\\]syntax.\(txt\|\a\ax\)$'
|
||||
" highlight groups with their respective color
|
||||
import 'dist/vimhelp.vim'
|
||||
call vimhelp.HighlightGroups()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
" Maintainer: Aliaksei Budavei <0x000c70 AT gmail DOT com>
|
||||
" Former Maintainer: Claudio Fleiner <claudio@fleiner.com>
|
||||
" Repository: https://github.com/zzzyxwvut/java-vim.git
|
||||
" Last Change: 2026 Feb 06
|
||||
" Last Change: 2026 Mar 22
|
||||
|
||||
" Please check ":help java.vim" for comments on some of the options
|
||||
" available.
|
||||
@@ -381,7 +381,7 @@ endif
|
||||
|
||||
exec 'syn match javaUserLabel "^\s*\<\K\k*\>\%(\<default\>\)\@' . s:ff.Peek('7', '') . '<!\s*::\@!"he=e-1'
|
||||
|
||||
if s:ff.IsAnyRequestedPreviewFeatureOf([455, 488, 507])
|
||||
if s:ff.IsAnyRequestedPreviewFeatureOf([455, 488, 507, 530])
|
||||
syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":\|->" contains=javaBoolean,javaNumber,javaCharacter,javaString,javaConstant,@javaClasses,javaGenerics,javaType,javaLabelDefault,javaLabelVarType,javaLabelWhenClause
|
||||
else
|
||||
syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":\|->" contains=javaLabelCastType,javaLabelNumber,javaCharacter,javaString,javaConstant,@javaClasses,javaGenerics,javaLabelDefault,javaLabelVarType,javaLabelWhenClause
|
||||
|
||||
@@ -3,16 +3,19 @@
|
||||
" Maintainer: Gregory Anders <greg@gpanders.com>
|
||||
" Last Change: 2024 May 8
|
||||
" 2025 Apr 17 by Vim Project (don't require space to start comments, #17130)
|
||||
" 2026 Apr 09 by Vim Project (anchor status regex to beginning of line, #19879)
|
||||
" 2026 Apr 09 by Vim Project (detect renames of files, #19879)
|
||||
|
||||
if exists('b:current_syntax')
|
||||
finish
|
||||
endif
|
||||
|
||||
syn match jjAdded "A .*" contained
|
||||
syn match jjRemoved "D .*" contained
|
||||
syn match jjChanged "M .*" contained
|
||||
syn match jjAdded "^JJ:\s\+\zsA\s.*" contained
|
||||
syn match jjRemoved "^JJ:\s\+\zsD\s.*" contained
|
||||
syn match jjChanged "^JJ:\s\+\zsM\s.*" contained
|
||||
syn match jjRenamed "^JJ:\s\+\zsR\s.*" contained
|
||||
|
||||
syn region jjComment start="^JJ:" end="$" contains=jjAdded,jjRemoved,jjChanged
|
||||
syn region jjComment start="^JJ:" end="$" contains=jjAdded,jjRemoved,jjChanged,jjRenamed
|
||||
|
||||
syn include @jjCommitDiff syntax/diff.vim
|
||||
syn region jjCommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^\%(diff --\|$\|@@\@!\|[^[:alnum:]\ +-]\S\@!\)\@=/ fold contains=@jjCommitDiff
|
||||
@@ -21,5 +24,6 @@ hi def link jjComment Comment
|
||||
hi def link jjAdded Added
|
||||
hi def link jjRemoved Removed
|
||||
hi def link jjChanged Changed
|
||||
hi def link jjRenamed Changed
|
||||
|
||||
let b:current_syntax = 'jjdescription'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
" Vim syntax file
|
||||
" Language: Generic log file
|
||||
" Maintainer: Mao-Yining <https://github.com/mao-yining>
|
||||
" Maintainer: Mao-Yining <mao.yining@outlook.com>
|
||||
" Former Maintainer: MTDL9 <https://github.com/MTDL9>
|
||||
" Latest Revision: 2025-10-31
|
||||
|
||||
@@ -10,10 +10,9 @@ endif
|
||||
|
||||
syntax case ignore
|
||||
|
||||
" Operators
|
||||
" Symbols / special characters
|
||||
"---------------------------------------------------------------------------
|
||||
syn match logOperator display '[;,\?\:\.\<=\>\~\/\@\!$\%&\+\-\|\^(){}\*#]'
|
||||
syn match logBrackets display '[][]'
|
||||
syn match logSymbol display '[!@#$%^&*;:?]'
|
||||
|
||||
" For Visual Separator and Apache CLF
|
||||
"---------------------------------------------------------------------------
|
||||
@@ -22,10 +21,10 @@ syn match logSeparator display '- - '
|
||||
|
||||
" Strings
|
||||
" ------------------------------
|
||||
syn region LogString start=/"/ end=/"/ end=/$/ skip=/\\./ contains=logJavaError
|
||||
syn region LogString start=/`/ end=/`/ end=/$/ skip=/\\./ contains=logJavaError
|
||||
syn region logString start=/"/ end=/"/ end=/$/ skip=/\\./ contains=logJavaError
|
||||
syn region logString start=/`/ end=/`/ end=/$/ skip=/\\./ contains=logJavaError
|
||||
" Quoted strings, but no match on quotes like `don't`, possessive `s'` and `'s`
|
||||
syn region LogString start=/\(s\)\@<!'\(s \|t \)\@!/ end=/'/ end=/$/ skip=/\\./ contains=logJavaError
|
||||
syn region logString start=/\(s\)\@<!'\(s \|t \)\@!/ end=/'/ end=/$/ skip=/\\./ contains=logJavaError
|
||||
|
||||
" Numbers
|
||||
"---------------------------------------------------------------------------
|
||||
@@ -40,7 +39,7 @@ syn match logNumberHex display '\<0[xX]\x\+\>'
|
||||
syn match logNumberHex display '\<\x\{4,}\>'
|
||||
|
||||
" Numbers in Hardware Description Languages e.g. Verilog
|
||||
" These must be placed after LogString to ensure they take precedence
|
||||
" These must be placed after logString to ensure they take precedence
|
||||
syn match logNumber display '\'d\d\+\>'
|
||||
syn match logNumberBin display '\'b[01]\+\>'
|
||||
syn match logNumberOct display '\'o\o\+\>'
|
||||
@@ -68,9 +67,9 @@ syn match logDate display '\<\d\{1,2}[- ]\a\{3}[- ]\d\{4}\>'
|
||||
" Weekday string
|
||||
syn keyword logDate Mon Tue Wed Thu Fri Sat Sun
|
||||
" Matches 12:09:38 or 00:03:38.129Z or 01:32:12.102938 +0700 or 01:32:12.1234567890 or 21:14:18+11:00
|
||||
syn match logTime display '\d\{2}:\d\{2}:\d\{2}\(\.\d\{2,9}\)\?\(\s\?[-+]\(\d\{1,2\}:\d\{2\}\|\d\{2,4}\)\|Z\)\?\>' nextgroup=logTimeZone,logSysColumns skipwhite
|
||||
syn match logTime display '\d\{2}:\d\{2}:\d\{2}\(\.\d\{2,9}\)\?\(\s\?[-+]\(\d\{1,2\}:\d\{2\}\|\d\{2,4}\)\|Z\)\?\>' nextgroup=logTimeZone,logSysColumn skipwhite
|
||||
" Time zone e.g. Z, +08:00, PST
|
||||
syn match logTimeZone display 'Z\|[+-]\d\{2}:\d\{2}\|\a\{3}\>' contained skipwhite nextgroup=logSysColumns
|
||||
syn match logTimeZone display 'Z\|[+-]\d\{2}:\d\{2}\|\a\{3}\>' contained skipwhite nextgroup=logSysColumn
|
||||
" Matches time durations like 1ms or 1y 2d 23ns 3.14s 1.2e4s 3E+20h
|
||||
syn match logDuration display '\(\(\(\d\+d\)\?\d\+h\)\?\d\+m\)\?\d\+\(\.\d\+\)\?[mun]\?s\>'
|
||||
|
||||
@@ -95,13 +94,13 @@ syn match logFilePath display '\(^\|\s\|=\)\zs\\\\\f\+\ze'
|
||||
|
||||
" Java Errors
|
||||
"---------------------------------------------------------------------------
|
||||
syn match logJavaError '\%(\%(Error\|Exception\):\s*\)\zs\w.\{-}\ze\(\\n\|$\)' contained
|
||||
syn match logJavaError '\%(\%(Error\|Exception\):\s*\)\zs\w.\{-}\ze\(\\n\|$\)' contained
|
||||
|
||||
" Syslog Columns
|
||||
"---------------------------------------------------------------------------
|
||||
" Syslog hostname, program and process number columns
|
||||
syn match logSysColumns '\w\(\w\|\.\|-\)\+ \(\w\|\.\|-\)\+\(\[\d\+\]\)\?:' contains=logOperator,@logLvs,LogSysProcess contained
|
||||
syn match logSysProcess '\(\w\|\.\|-\)\+\(\[\d\+\]\)\?:' contains=logOperator,logNumber,logBrackets contained
|
||||
syn match logSysColumn '\w\(\w\|\.\|-\)\+ \(\w\|\.\|-\)\+\(\[\d\+\]\)\?:' contained contains=@logLvs,logSysProcess
|
||||
syn match logSysProcess '\(\w\|\.\|-\)\+\(\[\d\+\]\)\?:' contained contains=logNumber
|
||||
|
||||
" XML Tags
|
||||
"---------------------------------------------------------------------------
|
||||
@@ -109,47 +108,47 @@ syn match logSysProcess '\(\w\|\.\|-\)\+\(\[\d\+\]\)\?:' contains=logOperator,
|
||||
syn match logXmlHeader /<?\(\w\|-\)\+\(\s\+\w\+\(="[^"]*"\|='[^']*'\)\?\)*?>/ contains=logString,logXmlAttribute,logXmlNamespace
|
||||
syn match logXmlDoctype /<!DOCTYPE[^>]*>/ contains=logString,logXmlAttribute,logXmlNamespace
|
||||
syn match logXmlTag /<\/\?\(\(\w\|-\)\+:\)\?\(\w\|-\)\+\(\(\n\|\s\)\+\(\(\w\|-\)\+:\)\?\(\w\|-\)\+\(="[^"]*"\|='[^']*'\)\?\)*\s*\/\?>/ contains=logString,logXmlAttribute,logXmlNamespace
|
||||
syn match logXmlAttribute contained "\w\+=" contains=logOperator
|
||||
syn match logXmlAttribute contained "\(\n\|\s\)\(\(\w\|-\)\+:\)\?\(\w\|-\)\+\(=\)\?" contains=logXmlNamespace,logOperator
|
||||
syn match logXmlNamespace contained "\(\w\|-\)\+:" contains=logOperator
|
||||
syn match logXmlAttribute contained "\w\+="
|
||||
syn match logXmlAttribute contained "\(\n\|\s\)\(\(\w\|-\)\+:\)\?\(\w\|-\)\+\(=\)\?" contains=logXmlNamespace
|
||||
syn match logXmlNamespace contained "\(\w\|-\)\+:"
|
||||
syn region logXmlComment start=/<!--/ end=/-->/
|
||||
syn match logXmlCData /<!\[CDATA\[.*\]\]>/
|
||||
syn match logXmlEntity /&#\?\w\+;/
|
||||
|
||||
" Levels
|
||||
"---------------------------------------------------------------------------
|
||||
syn keyword logLvFatal FATAL Fatal fatal
|
||||
syn keyword logLvEmergency EMERG[ENCY] Emerg[ency] emerg[ency]
|
||||
syn keyword logLvAlert ALERT Alert alert
|
||||
syn keyword logLvCritical CRIT[ICAL] Crit[ical] crit[ical]
|
||||
syn keyword logLvError E ERR[ORS] Err[ors] err[ors]
|
||||
syn keyword logLvFail F FAIL[ED] Fail[ed] fail[ed] FAILURE Failure failure
|
||||
syn keyword logLvFault FAULT Fault fault
|
||||
syn keyword logLvNack NACK Nack nack NAK Nak nak
|
||||
syn keyword logLvWarning W WARN[ING] Warn[ing] warn[ing]
|
||||
syn keyword logLvBad BAD Bad bad
|
||||
syn keyword logLvNotice NOTICE Notice notice
|
||||
syn keyword logLvInfo I INFO Info info
|
||||
syn keyword logLvDebug D DEBUG Debug debug DBG Dbg dbg
|
||||
syn keyword logLvTrace TRACE Trace trace
|
||||
syn keyword logLvVerbose V VERBOSE Verbose verbose
|
||||
syn keyword logLvPass PASS[ED] Pass[ed] pass[ed]
|
||||
syn keyword logLvSuccess SUCCEED[ED] Succeed[ed] succeed[ed] SUCCESS Success success
|
||||
syn keyword logLvFatal FATAL
|
||||
syn keyword logLvEmergency EMERG[ENCY]
|
||||
syn keyword logLvAlert ALERT
|
||||
syn keyword logLvCritical CRIT[ICAL]
|
||||
syn keyword logLvError E ERR[ORS]
|
||||
syn keyword logLvFail F FAIL[ED] FAILURE
|
||||
syn keyword logLvFault FAULT
|
||||
syn keyword logLvNack NACK NAK
|
||||
syn keyword logLvWarning W WARN[ING]
|
||||
syn keyword logLvBad BAD
|
||||
syn keyword logLvNotice NOTICE
|
||||
syn keyword logLvInfo I INFO
|
||||
syn keyword logLvDebug D DEBUG
|
||||
syn keyword logLvTrace TRACE Trace
|
||||
syn keyword logLvVerbose V VERBOSE
|
||||
syn keyword logLvPass PASS[ED]
|
||||
syn keyword logLvSuccess SUCCEED[ED] SUCCESS
|
||||
|
||||
" Composite log levels e.g. *_INFO
|
||||
syn match logLvFatal display '\<\u\+_FATAL\>'
|
||||
syn match logLvEmergency display '\<\u\+_EMERG\(ENCY\)\?\>'
|
||||
syn match logLvAlert display '\<\u\+_ALERT\>'
|
||||
syn match logLvCritical display '\<\u\+_CRIT\(ICAL\)\?\>'
|
||||
syn match logLvError display '\<\u\+_ERR\(OR\)\?\>'
|
||||
syn match logLvFail display '\<\u\+_FAIL\(URE\)\?\>'
|
||||
syn match logLvWarning display '\<\u\+_WARN\(ING\)\?\>'
|
||||
syn match logLvNotice display '\<\u\+_NOTICE\>'
|
||||
syn match logLvInfo display '\<\u\+_INFO\>'
|
||||
syn match logLvDebug display '\<\u\+_DEBUG\>'
|
||||
syn match logLvTrace display '\<\u\+_TRACE\>'
|
||||
syn match logLvFatal display '\<\u\+_FATAL\>'
|
||||
syn match logLvEmergency display '\<\u\+_EMERG\(ENCY\)\?\>'
|
||||
syn match logLvAlert display '\<\u\+_ALERT\>'
|
||||
syn match logLvCritical display '\<\u\+_CRIT\(ICAL\)\?\>'
|
||||
syn match logLvError display '\<\u\+_ERR\(OR\)\?\>'
|
||||
syn match logLvFail display '\<\u\+_FAIL\(URE\)\?\>'
|
||||
syn match logLvWarning display '\<\u\+_WARN\(ING\)\?\>'
|
||||
syn match logLvNotice display '\<\u\+_NOTICE\>'
|
||||
syn match logLvInfo display '\<\u\+_INFO\>'
|
||||
syn match logLvDebug display '\<\u\+_DEBUG\>'
|
||||
syn match logLvTrace display '\<\u\+_TRACE\>'
|
||||
|
||||
syn cluster logLvs contains=LogLvFatal,LogLvEmergency,LogLvAlert,LogLvCritical,LogLvError,LogLvFail,LogLvFault,LogLvNack,LogLvWarning,LogLvBad,LogLvNotice,LogLvInfo,LogLvDebug,LogLvTrace,LogLvVerbose,LogLvPass,LogLvSuccess
|
||||
syn cluster logLvs contains=logLvFatal,logLvEmergency,logLvAlert,logLvCritical,logLvError,logLvFail,logLvFault,logLvNack,logLvWarning,logLvBad,logLvNotice,logLvInfo,logLvDebug,logLvTrace,logLvVerbose,logLvPass,logLvSuccess
|
||||
|
||||
" Highlight links
|
||||
"---------------------------------------------------------------------------
|
||||
@@ -179,7 +178,7 @@ hi def link logFilePath Structure
|
||||
|
||||
hi def link logJavaError ErrorMsg
|
||||
|
||||
hi def link logSysColumns Statement
|
||||
hi def link logSysColumn Statement
|
||||
hi def link logSysProcess Function
|
||||
|
||||
hi def link logXmlHeader Function
|
||||
@@ -191,32 +190,31 @@ hi def link logXmlComment Comment
|
||||
hi def link logXmlCData String
|
||||
hi def link logXmlEntity Special
|
||||
|
||||
hi def link logOperator Special
|
||||
hi def link logBrackets Special
|
||||
hi def link logSymbol Delimiter
|
||||
hi def link logSeparator Comment
|
||||
|
||||
hi def link LogLvFatal ErrorMsg
|
||||
hi def link LogLvEmergency ErrorMsg
|
||||
hi def link LogLvAlert ErrorMsg
|
||||
hi def link LogLvCritical ErrorMsg
|
||||
hi def link LogLvError ErrorMsg
|
||||
hi def link LogLvFail ErrorMsg
|
||||
hi def link LogLvFault ErrorMsg
|
||||
hi def link LogLvNack ErrorMsg
|
||||
hi def link LogLvWarning WarningMsg
|
||||
hi def link LogLvBad WarningMsg
|
||||
hi def link LogLvNotice Exception
|
||||
hi def link LogLvInfo LogBlue
|
||||
hi def link LogLvDebug Debug
|
||||
hi def link LogLvTrace Special
|
||||
hi def link LogLvVerbose Special
|
||||
hi def link LogLvPass LogGreen
|
||||
hi def link LogLvSuccess LogGreen
|
||||
hi def link logLvFatal ErrorMsg
|
||||
hi def link logLvEmergency ErrorMsg
|
||||
hi def link logLvAlert ErrorMsg
|
||||
hi def link logLvCritical ErrorMsg
|
||||
hi def link logLvError ErrorMsg
|
||||
hi def link logLvFail ErrorMsg
|
||||
hi def link logLvFault ErrorMsg
|
||||
hi def link logLvNack ErrorMsg
|
||||
hi def link logLvWarning WarningMsg
|
||||
hi def link logLvBad WarningMsg
|
||||
hi def link logLvNotice Exception
|
||||
hi def link logLvInfo logBlue
|
||||
hi def link logLvDebug Debug
|
||||
hi def link logLvTrace Special
|
||||
hi def link logLvVerbose Special
|
||||
hi def link logLvPass logGreen
|
||||
hi def link logLvSuccess logGreen
|
||||
|
||||
" Custom highlight group
|
||||
" ------------------------------
|
||||
hi logGreen ctermfg=lightgreen guifg=#a4c672
|
||||
hi logBlue ctermfg=lightblue guifg=#92bcfc
|
||||
hi logGreen ctermfg=LightGreen guifg=LightGreen
|
||||
hi logBlue ctermfg=LightBlue guifg=LightBlue
|
||||
|
||||
|
||||
let b:current_syntax = 'log'
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
" Previous Maintainer: Luca Saccarola <github.e41mv@aleeas.com>
|
||||
" Maintainer: This runtime file is looking for a new maintainer.
|
||||
" Last Change: 2025 Aug 05
|
||||
" 2026 Apr 09: Link to generic Bold/Italic groups
|
||||
"
|
||||
" Reference Specification: Org mode manual
|
||||
" GNU Info: `$ info Org`
|
||||
@@ -18,17 +19,17 @@ syn case ignore
|
||||
|
||||
" Bold
|
||||
syn region orgBold matchgroup=orgBoldDelimiter start="\(^\|[- '"({\]]\)\@<=\*\ze[^ ]" end="^\@!\*\([^\k\*]\|$\)\@=" keepend
|
||||
hi def link orgBold markdownBold
|
||||
hi def link orgBold Bold
|
||||
hi def link orgBoldDelimiter orgBold
|
||||
|
||||
" Italic
|
||||
syn region orgItalic matchgroup=orgItalicDelimiter start="\(^\|[- '"({\]]\)\@<=\/\ze[^ ]" end="^\@!\/\([^\k\/]\|$\)\@=" keepend
|
||||
hi def link orgItalic markdownItalic
|
||||
hi def link orgItalic Italic
|
||||
hi def link orgItalicDelimiter orgItalic
|
||||
|
||||
" Strikethrogh
|
||||
syn region orgStrikethrough matchgroup=orgStrikethroughDelimiter start="\(^\|[ '"({\]]\)\@<=+\ze[^ ]" end="^\@!+\([^\k+]\|$\)\@=" keepend
|
||||
hi def link orgStrikethrough markdownStrike
|
||||
hi def orgStrikethrough term=strikethrough cterm=strikethrough gui=strikethrough
|
||||
hi def link orgStrikethroughDelimiter orgStrikethrough
|
||||
|
||||
" Underline
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
" 2026 Jan 15 highlight command switches that contain a digit
|
||||
" 2026 Feb 11 improve support for KornShell function names and variables
|
||||
" 2026 Feb 15 improve comment handling #19414
|
||||
" 2026 Mar 23 improve matching of function definitions #19638
|
||||
" 2026 Apr 02 improve matching of function definitions #19849
|
||||
" }}}
|
||||
" Version: 208
|
||||
" Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
|
||||
@@ -261,7 +263,7 @@ syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsa
|
||||
if exists("b:is_kornshell") || exists("b:is_bash")
|
||||
syn cluster ErrorList add=shDTestError
|
||||
endif
|
||||
syn cluster shArithParenList contains=shArithmetic,shArithParen,shCaseEsac,shComment,shDeref,shDerefVarArray,shDo,shDerefSimple,shEcho,shEscape,shExpr,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor,shFunctionKey,shFunctionOne,shFunctionTwo,shNamespaceOne
|
||||
syn cluster shArithParenList contains=shArithmetic,shArithParen,shCaseEsac,shComment,shDeref,shDerefVarArray,shDo,shDerefSimple,shEcho,shEscape,shExpr,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor
|
||||
syn cluster shArithList contains=@shArithParenList,shParenError
|
||||
syn cluster shBracketExprList contains=shCharClassOther,shCharClass,shCollSymb,shEqClass
|
||||
syn cluster shCaseEsacList contains=shCaseStart,shCaseLabel,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange
|
||||
@@ -278,7 +280,16 @@ syn cluster shDerefVarList contains=shDerefOffset,shDerefOp,shDerefVarArray,shDe
|
||||
syn cluster shEchoList contains=shArithmetic,shBracketExpr,shCommandSub,shCommandSubBQ,shDerefVarArray,shSubshare,shValsub,shDeref,shDerefSimple,shEscape,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote
|
||||
syn cluster shExprList1 contains=shBracketExpr,shNumber,shOperator,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq
|
||||
syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest
|
||||
syn cluster shFunctionList contains=shBracketExpr,@shCommandSubList,shCaseEsac,shColon,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq
|
||||
syn cluster shFunctionCmds contains=shFor,shCaseEsac,shIf,shRepeat,shDblBrace,shDblParen
|
||||
if exists("b:is_ksh88") || exists("b:is_mksh")
|
||||
" Offer "shFunctionCmds" as is.
|
||||
elseif exists("b:is_kornshell") || exists("b:is_bash")
|
||||
syn cluster shFunctionCmds add=shForPP
|
||||
else
|
||||
syn cluster shFunctionCmds remove=shDblBrace,shDblParen
|
||||
endif
|
||||
syn cluster shFunctionDefList contains=shDoError,shIfError,shFunctionKey,shFunctionOne,shFunctionThree,shFunctionCmdOne
|
||||
syn cluster shFunctionList contains=shBracketExpr,@shCommandSubList,shCaseEsac,shColon,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq,@shFunctionDefList
|
||||
if exists("b:is_kornshell") || exists("b:is_bash")
|
||||
syn cluster shFunctionList add=shRepeat,shDblBrace,shDblParen,shForPP
|
||||
syn cluster shDerefList add=shCommandSubList,shEchoDeref
|
||||
@@ -287,7 +298,7 @@ syn cluster shHereBeginList contains=@shCommandSubList
|
||||
syn cluster shHereList contains=shBeginHere,shHerePayload
|
||||
syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload
|
||||
syn cluster shIdList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDerefVarArray,shSubshare,shValsub,shWrapLineOperator,shSetOption,shComment,shDeref,shDerefSimple,shHereString,shNumber,shOperator,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr
|
||||
syn cluster shIfList contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo,shNamespaceOne
|
||||
syn cluster shIfList contains=@shLoopList,shDblBrace,shDblParen,@shFunctionDefList
|
||||
syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shIf,shOption,shSet,shTest,shTestOpr,shTouch
|
||||
if exists("b:is_kornshell") || exists("b:is_bash")
|
||||
syn cluster shLoopList add=shForPP,shDblParen
|
||||
@@ -647,39 +658,52 @@ endif
|
||||
|
||||
" Functions: {{{1
|
||||
if !exists("b:is_posix")
|
||||
syn keyword shFunctionKey function skipwhite skipnl nextgroup=shFunctionTwo
|
||||
syn keyword shFunctionKey function skipwhite skipnl nextgroup=shDoError,shIfError,shFunctionTwo,shFunctionFour,shFunctionCmdTwo
|
||||
endif
|
||||
|
||||
ShFoldFunctions syn region shFunctionExpr matchgroup=shFunctionExprRegion start="{" end="}" contains=@shFunctionList contained skipwhite skipnl nextgroup=shQuickComment
|
||||
ShFoldFunctions syn region shFunctionSubSh matchgroup=shFunctionSubShRegion start="(" end=")" contains=@shFunctionList contained skipwhite skipnl nextgroup=shQuickComment
|
||||
|
||||
if exists("b:is_bash")
|
||||
syn keyword shFunctionKey coproc
|
||||
ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*[A-Za-z_0-9:][-a-zA-Z_0-9:]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_0-9:][-a-zA-Z_0-9:]*\>\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*[A-Za-z_0-9:][-a-zA-Z_0-9:]*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_0-9:][-a-zA-Z_0-9:]*\>\s*\%(()\)\=\_s*)" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
syn match shFunctionCmdOne "\%#=1^\s*\zs\%(\%(\<\k\+\|[^()<>|&$;\t ]\+\)\+\)\@>\s*()\ze\_s*\%(\%(for\|case\|select\|if\|while\|until\)\>\|\[\[\s\|((\)" skipwhite skipnl nextgroup=@shFunctionCmds
|
||||
syn match shFunctionCmdTwo "\%#=1\%(\%(\<\k\+\>\|[^()<>|&$;\t ]\+\)\+\)\@>\ze\s*\%(()\ze\)\=\_s*\%(\<\%(for\|case\|select\|if\|while\|until\)\>\|\[\[\s\|((\)" contained skipwhite skipnl nextgroup=@shFunctionCmds
|
||||
syn match shFunctionOne "\%#=1^\s*\zs\%(\%(\<\k\+\|[^()<>|&$;\t ]\+\)\+\)\@>\s*()\ze\_s*{" skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionTwo "\%#=1\%(\%(\<\k\+\|[^()<>|&$;\t ]\+\)\+\)\@>\ze\s*\%(()\ze\)\=\_s*{" contained skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionThree "\%#=1^\s*\zs\%(\%(\<\k\+\|[^()<>|&$;\t ]\+\)\+\)\@>\s*()\ze\_s*((\@!" skipwhite skipnl nextgroup=shFunctionSubSh
|
||||
syn match shFunctionFour "\%#=1\%(\%(\<\k\+\|[^()<>|&$;\t ]\+\)\+\)\@>\ze\s*\%(\%(()\ze\)\=\)\@>\_s*((\@!" contained skipwhite skipnl nextgroup=shFunctionSubSh
|
||||
elseif exists("b:is_ksh88")
|
||||
" AT&T ksh88
|
||||
ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*[A-Za-z_][A-Za-z_0-9]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_][A-Za-z_0-9]*\>\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*[A-Za-z_][A-Za-z_0-9]*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_][A-Za-z_0-9]*\>\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
syn match shFunctionCmdOne "^\s*\zs\h\w*\s*()\ze\_s*\%(\%(for\|case\|select\|if\|while\|until\)\>\|\[\[\s\|((\)" skipwhite skipnl nextgroup=@shFunctionCmds
|
||||
syn match shFunctionOne "^\s*\zs\h\w*\s*()\ze\_s*{" skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionTwo "\<\h\w*\>\ze\_s*{" contained skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionThree "^\s*\zs\h\w*\s*()\ze\_s*((\@!" skipwhite skipnl nextgroup=shFunctionSubSh
|
||||
elseif exists("b:is_mksh")
|
||||
" MirBSD ksh is the wild west of absurd and abstruse function names...
|
||||
ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*[-A-Za-z_@!+.%,0-9:]*[-A-Za-z_.%,0-9:]\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<[-A-Za-z_@!+.%,0-9:]*[-A-Za-z_.%,0-9:]\>\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*[-A-Za-z_@!+.%,0-9:]*[-A-Za-z_.%,0-9:]\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<[-A-Za-z_@!+.%,0-9:]*[-A-Za-z_.%,0-9:]\>\s*\%(()\)\=\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
syn match shFunctionCmdOne "^\s*\zs[-A-Za-z_@!+.%,0-9:]*[-A-Za-z_.%,0-9:]\s*()\ze\_s*\%(\%(for\|case\|select\|if\|while\|until\)\>\|\[\[\s\|((\)" skipwhite skipnl nextgroup=@shFunctionCmds
|
||||
syn match shFunctionOne "^\s*\zs[-A-Za-z_@!+.%,0-9:]*[-A-Za-z_.%,0-9:]\s*()\ze\_s*{" skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionTwo "\%#=1\%(\%(\<\w\+\|[@!+.%,:-]\+\)*[-A-Za-z_.%,0-9:]\)\@>\ze\s*\%(()\ze\)\=\_s*{" contained skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionThree "^\s*\zs[-A-Za-z_@!+.%,0-9:]*[-A-Za-z_.%,0-9:]\s*()\ze\_s*((\@!" skipwhite skipnl nextgroup=shFunctionSubSh
|
||||
elseif exists("b:is_kornshell")
|
||||
" ksh93
|
||||
ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*[A-Za-z_.][A-Za-z_.0-9]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_.][A-Za-z_.0-9]*\>\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*[A-Za-z_.][A-Za-z_.0-9]*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_.][A-Za-z_.0-9]*\>\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shNamespaceOne matchgroup=shFunction start="\%(do\)\@!\&\<\h\w*\>\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
syn match shFunctionCmdOne "^\s*\zs[A-Za-z_.][A-Za-z_.0-9]*\s*()\ze\_s*\%(\%(for\|case\|select\|if\|while\|until\)\>\|\[\[\s\|((\)" skipwhite skipnl nextgroup=@shFunctionCmds
|
||||
syn match shFunctionOne "^\s*\zs[A-Za-z_.][A-Za-z_.0-9]*\s*()\ze\_s*{" skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionTwo "\%(\<\h\+\|\.\)[A-Za-z_.0-9]*\ze\_s*{" contained skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionThree "^\s*\zs[A-Za-z_.][A-Za-z_.0-9]*\s*()\ze\_s*((\@!" skipwhite skipnl nextgroup=shFunctionSubSh
|
||||
syn match shNamespaceOne "\<\h\w*\>\ze\_s*{" contained skipwhite skipnl nextgroup=shFunctionExpr
|
||||
else
|
||||
ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<\h\w*\>\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*\h\w*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<\h\w*\>\s*\%(()\)\=\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
|
||||
syn match shFunctionCmdOne "^\s*\zs\h\w*\s*()\ze\_s*\%(for\|case\|if\|while\|until\)\>" skipwhite skipnl nextgroup=@shFunctionCmds
|
||||
syn match shFunctionCmdTwo "\<\h\w*\s*()\ze\_s*\%(for\|case\|if\|while\|until\)\>" contained skipwhite skipnl nextgroup=@shFunctionCmds
|
||||
syn match shFunctionOne "^\s*\zs\h\w*\s*()\ze\_s*{" skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionTwo "\<\h\w*\>\s*()\ze\_s*{" contained skipwhite skipnl nextgroup=shFunctionExpr
|
||||
syn match shFunctionThree "^\s*\zs\h\w*\s*()\ze\_s*(" skipwhite skipnl nextgroup=shFunctionSubSh
|
||||
syn match shFunctionFour "\<\h\w*\>\s*()\ze\_s*(" contained skipwhite skipnl nextgroup=shFunctionSubSh
|
||||
endif
|
||||
|
||||
if !exists("g:sh_no_error")
|
||||
syn match shDoError "\<do\%(ne\)\=\s*()"
|
||||
syn match shIfError "\<then\s*()"
|
||||
syn match shIfError "\<else\s*()"
|
||||
endif
|
||||
|
||||
" Parameter Dereferencing: {{{1
|
||||
@@ -882,7 +906,6 @@ if !exists("skip_sh_syntax_inits")
|
||||
hi def link shEchoDelim shOperator
|
||||
hi def link shEchoQuote shString
|
||||
hi def link shForPP shLoop
|
||||
hi def link shFunction Function
|
||||
hi def link shEmbeddedEcho shString
|
||||
hi def link shEscape shCommandSub
|
||||
hi def link shExDoubleQuote shDoubleQuote
|
||||
@@ -960,8 +983,16 @@ if !exists("skip_sh_syntax_inits")
|
||||
hi def link shConditional Conditional
|
||||
hi def link shCtrlSeq Special
|
||||
hi def link shExprRegion Delimiter
|
||||
hi def link shFunctionKey Function
|
||||
hi def link shFunctionName Function
|
||||
hi def link shFunctionKey Keyword
|
||||
hi def link shFunctionOne Function
|
||||
hi def link shFunctionTwo shFunctionOne
|
||||
hi def link shFunctionThree shFunctionOne
|
||||
hi def link shFunctionFour shFunctionOne
|
||||
hi def link shFunctionCmdOne shFunctionOne
|
||||
hi def link shFunctionCmdTwo shFunctionOne
|
||||
hi def link shFunctionExprRegion shExprRegion
|
||||
hi def link shFunctionSubShRegion shSubShRegion
|
||||
hi def link shNamespaceOne Function
|
||||
hi def link shNumber Number
|
||||
hi def link shOperator Operator
|
||||
hi def link shRepeat Repeat
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
|
||||
" Karsten Hopp <karsten@redhat.com>
|
||||
" Dean, Adam Kenneth <adam.ken.dean@hpe.com>
|
||||
" Last Change: 2026 Mar 11
|
||||
" Last Change: 2026 Mar 31
|
||||
" SSH Version: 10.1p1
|
||||
"
|
||||
|
||||
@@ -121,6 +121,8 @@ syn keyword sshconfigKexAlgo ecdh-sha2-nistp384
|
||||
syn keyword sshconfigKexAlgo ecdh-sha2-nistp521
|
||||
syn match sshconfigKexAlgo "\<curve25519-sha256\%(@libssh\.org\)\?\>"
|
||||
syn match sshconfigKexAlgo "\<sntrup761x25519-sha512@openssh\.com\>"
|
||||
syn keyword sshconfigKexAlgo sntrup761x25519-sha512
|
||||
syn keyword sshconfigKexAlgo mlkem768x25519-sha256
|
||||
|
||||
syn keyword sshconfigTunnel point-to-point ethernet
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
" Language: sway config file
|
||||
" Original Author: Josef Litos (litoj/i3config.vim)
|
||||
" Maintainer: James Eapen <james.eapen@vai.org>
|
||||
" Version: 1.2.7
|
||||
" Last Change: 2025-12-02
|
||||
" Version: 1.2.8
|
||||
" Last Change: 2026-04-01
|
||||
|
||||
" References:
|
||||
" http://i3wm.org/docs/userguide.html#configuring
|
||||
@@ -28,7 +28,7 @@ syn cluster i3ConfigPopupFullscreenOpts remove=i3ConfigPopupFullscreenOptsExtra
|
||||
syn keyword i3ConfigActionKeyword opacity urgent shortcuts_inhibitor splitv splith splitt contained contained skipwhite nextgroup=i3ConfigOption
|
||||
syn keyword i3ConfigOption set plus minus allow deny csd v h t contained contained skipwhite nextgroup=i3ConfigOption,@i3ConfigValue
|
||||
|
||||
syn keyword i3ConfigConditionProp app_id pid shell contained
|
||||
syn keyword i3ConfigConditionProp app_id pid shell sandbox_app_id sandbox_engine sandbox_instance_id tag contained
|
||||
|
||||
syn keyword i3ConfigWorkspaceDir prev_on_output next_on_output contained
|
||||
|
||||
@@ -134,7 +134,7 @@ syn match swayConfigSeatIdent /[^ ,;]\+/ contained contains=@i3ConfigStrVar next
|
||||
syn keyword i3ConfigKeyword seat contained skipwhite nextgroup=swayConfigSeatIdent
|
||||
|
||||
" Output monitors
|
||||
syn keyword swayConfigOutputOpts mode resolution res modeline position pos scale scale_filter subpixel transform disable enable toggle power dpms max_render_time adaptive_sync render_bit_depth color_profile allow_tearing contained skipwhite nextgroup=swayConfigOutputOptVals,@i3ConfigValue,swayConfigOutputMode
|
||||
syn keyword swayConfigOutputOpts mode resolution res modeline position pos scale scale_filter subpixel transform disable enable toggle power dpms max_render_time adaptive_sync render_bit_depth color_profile allow_tearing hdr contained skipwhite nextgroup=swayConfigOutputOptVals,@i3ConfigValue,swayConfigOutputMode
|
||||
syn keyword swayConfigOutputOptVals linear nearest smart rgb bgr vrgb vbgr none toggle srgb contained skipwhite nextgroup=swayConfigOutputOptVals,@i3ConfigValue
|
||||
syn keyword swayConfigOutputBgVals solid_color fill stretch fit center tile contained skipwhite nextgroup=@i3ConfigColVar
|
||||
syn match swayConfigOutputBg /[#$]\S\+ solid_color/ contained contains=@i3ConfigColVar,swayConfigOutputBgVals skipwhite nextgroup=swayConfigOutputOpts
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
" Language: Tera
|
||||
" Maintainer: Muntasir Mahmud <muntasir.joypurhat@gmail.com>
|
||||
" Last Change: 2026 Jan 29
|
||||
" 2026 Mar 31 by Vim project: prevent code execution in filename
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
@@ -22,7 +23,7 @@ endif
|
||||
|
||||
" Load the underlying language syntax if detected
|
||||
if s:underlying_filetype != ""
|
||||
execute "runtime! syntax/" . s:underlying_filetype . ".vim"
|
||||
execute "runtime! syntax/" . fnameescape(s:underlying_filetype) . ".vim"
|
||||
unlet! b:current_syntax
|
||||
else
|
||||
" Default to HTML if no specific language detected
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|s|y|n|t|a|x|_|p|r|e|v|i|e|w|s| |=| |[|4|5@1|,| |4|8@1|,| |5|0|7|]| +0#0000000&@12
|
||||
>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|s|y|n|t|a|x|_|p|r|e|v|i|e|w|s| |=| |[|4|5@1|,| |4|8@1|,| |5|0|7|,| |5|3|0|]| +0#0000000&@7
|
||||
@75
|
||||
@75
|
||||
@75
|
||||
|
||||
2
runtime/syntax/testdir/dumps/sh_06_00.dump
generated
2
runtime/syntax/testdir/dumps/sh_06_00.dump
generated
@@ -11,7 +11,7 @@
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|#+0#0000e05&| |D|i|s|p|l|a|y| |s|o|m|e| |H|e|l|p| +0#0000000&@55
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|U+0#00e0e07&|s|a|g|e| |(|)| |{| +0#0000000&@64
|
||||
|U+0#00e0e07&|s|a|g|e| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@64
|
||||
@75
|
||||
|#+0#0000e05&| |d|o|e|s| |t|h|i|s| |c|o|m@1|e|n|t| |w|o|r|k|?| +0#0000000&@49
|
||||
|V+0#00e0e07&|a|r|i|a|b|l|e|N|a|m|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|B|a|s|i|c|C|o|n|f|i|g|N|a|m|e|}|_+0#e000002&|*|"+0#af5f00255&| +0#0000000&@39
|
||||
|
||||
2
runtime/syntax/testdir/dumps/sh_06_01.dump
generated
2
runtime/syntax/testdir/dumps/sh_06_01.dump
generated
@@ -1,4 +1,4 @@
|
||||
|U+0#00e0e07#ffffff0|s|a|g|e| |(|)| |{| +0#0000000&@64
|
||||
|U+0#00e0e07#ffffff0|s|a|g|e| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@64
|
||||
@75
|
||||
|#+0#0000e05&| |d|o|e|s| |t|h|i|s| |c|o|m@1|e|n|t| |w|o|r|k|?| +0#0000000&@49
|
||||
|V+0#00e0e07&|a|r|i|a|b|l|e|N|a|m|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|B|a|s|i|c|C|o|n|f|i|g|N|a|m|e|}|_+0#e000002&|*|"+0#af5f00255&| +0#0000000&@39
|
||||
|
||||
2
runtime/syntax/testdir/dumps/sh_06_02.dump
generated
2
runtime/syntax/testdir/dumps/sh_06_02.dump
generated
@@ -14,7 +14,7 @@
|
||||
@75
|
||||
|"+0#af5f00255&| +0#0000000&@73
|
||||
@75
|
||||
|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |U|s|a|g|e| +0#0000000&@58
|
||||
|}+0#e000e06&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |U|s|a|g|e| +0#0000000&@58
|
||||
@75
|
||||
@75
|
||||
@57|3|5|,|1| @9|5@1|%|
|
||||
|
||||
4
runtime/syntax/testdir/dumps/sh_06_03.dump
generated
4
runtime/syntax/testdir/dumps/sh_06_03.dump
generated
@@ -4,13 +4,13 @@
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|#+0#0000e05&| |C|r|e|a|t|e| |a| |b|a|c|k|u|p| |u|s|i|n|g| |f|b|a|c|k|u|p|/|f|r|e|c|o|v|e|r| +0#0000000&@34
|
||||
>#+0#0000e05&| +0#0000000&@73
|
||||
|E+0#00e0e07&|x|e|c|u|t|e|F|b|a|c|k|u|p| |(|)| |{| +0#0000000&|#+0#0000e05&| |T|E|S|T|I|N|G| +0#0000000&@45
|
||||
|E+0#00e0e07&|x|e|c|u|t|e|F|b|a|c|k|u|p| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&|#+0#0000e05&| |T|E|S|T|I|N|G| +0#0000000&@45
|
||||
@75
|
||||
|[+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|D|e|b|u|g|S|c|r|i|p|t|"+0#af5f00255&| +0#0000000&|]+0#af5f00255&| +0#0000000&@3|&+0#af5f00255&@1| +0#0000000&|s+0#af5f00255&|e|t| +0#00e0e07&|-+0#e000e06&|x| +0#00e0e07&||+0#af5f00255&@1| +0#0000000&|s+0#af5f00255&|e|t| +0#00e0e07&|++0#e000e06&|x| +0#0000000&@33
|
||||
@75
|
||||
|c+0#af5f00255&|d| +0#0000000&|$+0#e000e06&|c|w|d| +0#0000000&@67
|
||||
@75
|
||||
|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |E|x|e|c|u|t|e|F|b|a|c|k|u|p| +0#0000000&@49
|
||||
|}+0#e000e06&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |E|x|e|c|u|t|e|F|b|a|c|k|u|p| +0#0000000&@49
|
||||
@75
|
||||
@75
|
||||
|#+0#0000e05&@74
|
||||
|
||||
2
runtime/syntax/testdir/dumps/sh_07_00.dump
generated
2
runtime/syntax/testdir/dumps/sh_07_00.dump
generated
@@ -14,7 +14,7 @@
|
||||
| | +0#0000000&@73
|
||||
|#+0#0000e05&| |a|v|a|i|l|a|b|l|e|!| +0#0000000&@62
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|1| |(|)| |{| +0#0000000&@60
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|1| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@60
|
||||
@75
|
||||
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|1|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
|
||||
|i|s|_|d|a|s|h|:| |1|,| |i|s|_|p|o|s|i|x|:| |1|,| |i|s|_|s|h|:| |1|,| @22|1|,|1| @10|T|o|p|
|
||||
|
||||
4
runtime/syntax/testdir/dumps/sh_07_01.dump
generated
4
runtime/syntax/testdir/dumps/sh_07_01.dump
generated
@@ -2,7 +2,7 @@
|
||||
| | +0#0000000&@73
|
||||
|#+0#0000e05&| |a|v|a|i|l|a|b|l|e|!| +0#0000000&@62
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|1| |(|)| |{| +0#0000000&@60
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|1| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@60
|
||||
@75
|
||||
>e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|1|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
|
||||
|[+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|*|"+0#af5f00255&| +0#0000000&|]+0#af5f00255&| +0#0000000&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o|n|e|\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@49
|
||||
@@ -13,7 +13,7 @@
|
||||
|d+0#af5f00255&|o|n|e| +0#0000000&@70
|
||||
|e+0#af5f00255&|c|h|o| +0#0000000&@70
|
||||
@75
|
||||
|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|1| +0#0000000&@54
|
||||
|}+0#e000e06&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|1| +0#0000000&@54
|
||||
@75
|
||||
|#+0#0000e05&@74
|
||||
@5| +0#0000000&@69
|
||||
|
||||
4
runtime/syntax/testdir/dumps/sh_07_02.dump
generated
4
runtime/syntax/testdir/dumps/sh_07_02.dump
generated
@@ -3,7 +3,7 @@
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|#+0#0000e05&| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |$|*| +0#0000000&@46
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
>F+0#00e0e07&|u|n|c|t|i|o|n|2| |(|)| |{| +0#0000000&@60
|
||||
>F+0#00e0e07&|u|n|c|t|i|o|n|2| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@60
|
||||
@75
|
||||
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|2|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
|
||||
|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| |i+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|*| +0#0000000&@61
|
||||
@@ -11,7 +11,7 @@
|
||||
@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
|
||||
|d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
|
||||
@75
|
||||
|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|2| +0#0000000&@54
|
||||
|}+0#e000e06&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|2| +0#0000000&@54
|
||||
@75
|
||||
|#+0#0000e05&@74
|
||||
@5| +0#0000000&@69
|
||||
|
||||
6
runtime/syntax/testdir/dumps/sh_07_03.dump
generated
6
runtime/syntax/testdir/dumps/sh_07_03.dump
generated
@@ -1,6 +1,6 @@
|
||||
|#+0#0000e05#ffffff0| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |$|@|.| |W|o|r|k|s| |t|h|e| |s|a|m|e| |w|a|y| |a|s| |$|*| +0#0000000&@20
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|3| |(|)| |{| +0#0000000&@60
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|3| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@60
|
||||
@75
|
||||
|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|3|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
|
||||
>f+0#af5f00255&|o|r| +0#0000000&|V|a|r| |i+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|@| +0#0000000&@61
|
||||
@@ -8,13 +8,13 @@
|
||||
@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
|
||||
|d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
|
||||
@75
|
||||
|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|3| +0#0000000&@54
|
||||
|}+0#e000e06&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|3| +0#0000000&@54
|
||||
@75
|
||||
|#+0#0000e05&@74
|
||||
@5| +0#0000000&@69
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|#+0#0000e05&| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |"|$|@|"|.| |S|p|e|c|i|a|l| |c|a|s|e|.| |W|o|r|k|s| |l|i|k|e| |"|$|1|"| |"|$|2|"| |.@2| +0#0000000&@4
|
||||
|#+0#0000e05&| +0#0000000&@73
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|4| |(|)| |{| +0#0000000&@60
|
||||
|F+0#00e0e07&|u|n|c|t|i|o|n|4| |(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@60
|
||||
@75
|
||||
@57|4|8|,|1| @9|5|6|%|
|
||||
|
||||
2
runtime/syntax/testdir/dumps/sh_07_04.dump
generated
2
runtime/syntax/testdir/dumps/sh_07_04.dump
generated
@@ -5,7 +5,7 @@
|
||||
@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
|
||||
>d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
|
||||
@75
|
||||
|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|4| +0#0000000&@54
|
||||
|}+0#e000e06&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|4| +0#0000000&@54
|
||||
@75
|
||||
@75
|
||||
|#+0#0000e05&@74
|
||||
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_bash_00.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_bash_00.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0#0000e05#a8a8a8255@1>#+0&#ffffff0|!|/|b|i|n|/|b|a|s|h| +0#0000000&@61
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l|o|c|a|l| |f|e|n| |f|d|c|=|2| |f|d|l|=|8| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@20
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|s|h|_|f|o|l|d|_|e|n|a|b|l|e|d| |=| |1| |+| |2| |+| |4| +0#0000000&@22
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#af5f00255#ffffff0|y|p|e|s|e|t| +0#0000000&|-+0#e000e06&|i| +0#0000000&|n+0#00e0e07&|=+0#0000000&|0+0#e000002&| +0#0000000&@58
|
||||
| +0#0000e05#a8a8a8255@1|d+0#00e0e07#ffffff0|o@1|s|i|e|(|)| +0#0000000&|(+0#e000e06&@1|n+0#0000000&|++0#af5f00255&|=|1+0#e000002&|)+0#e000e06&@1|;+0#0000000&| |d|o@1|s|i|e| @47
|
||||
| +0#0000e05#a8a8a8255@1|d+0#00e0e07#ffffff0|o|n|e@1|(|)| +0#0000000&|[+0#e000e06&@1| +0#0000000&|-+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|#| +0#0000000&|]+0#e000e06&@1|;+0#0000000&| |d|o|n|e@1| @46
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#00e0e07#ffffff0|h|e|n|c|e|(|)| +0#0000000&@64
|
||||
| +0#0000e05#a8a8a8255@1|u+0#af5f00255#ffffff0|n|t|i|l| |:| +0#0000000&@65
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:| @67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
|i|s|_|b|a|s|h|:| |1|,| @45|1|,|1| @10|T|o|p|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_bash_01.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_bash_01.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| >e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
||+0#0000e05#a8a8a8255| |t+0#af5f00255#ffffff0|h|e|n| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|f+0#af5f00255&|i|;+0#0000000&| |e|l|s|e|w|h|e|r|e| @51
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |s+0#00e0e07#ffffff0|e|l|e|c|t|o|r|(|)| +0#0000000&|s+0#af5f00255&|e|l|e|c|t| |x+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&|;+0#0000000&| |d+0#af5f00255&|o| +0#0000000&@42
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|b+0#af5f00255&|r|e|a|k| +0#0000000&@63
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|e|l|e|c|t|o|r| |0+0#e000002&|<+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1| |2+0#e000002&|>+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1| ||@1| |:| @35
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|c+0#00e0e07#ffffff0|a|s|e|d|(|)| +0#0000000&|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|#|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|*|)+0#af5f00255&| +0#0000000&|:|;+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|s|a|c|;+0#0000000&| |c|a|s|e|d| @33
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|f+0#00e0e07#ffffff0|o|r|e|(|)| +0#0000000&@66
|
||||
| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|o|r| +0#0000000&|x| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&@60
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:| @67
|
||||
@57|1|9|,|1| @9|3|6|%|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_bash_02.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_bash_02.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:| @67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o|r|e| @68
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|i+0#00e0e07#ffffff0|f@1|y|(|)| +0#0000000&|f+0#af5f00255&|o|r| |(@1|;@1|)@1| +0#0000000&@55
|
||||
|-+0#0000e05#a8a8a8255| >d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|b+0#af5f00255&|r|e|a|k| +0#0000000&@63
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|f@1|y| @68
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |i+0#af5f00255#ffffff0|f| |:+0#0000000&|;+0#af5f00255&| +0#0000000&|t+0#af5f00255&|h|e|n| +0#0000000&@62
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|!+0#00e0e07&|?|#|(|)| +0#0000000&@54
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|(+0#af5f00255&| +0#0000000&@67
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|@+0#00e0e07&|α|!| +0#0000000&|{+0#e000e06&| +0#0000000&@50
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@11|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@51
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|}+0#e000e06&| +0#0000000&@63
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|@|α|!+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@56
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|)+0#af5f00255&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|e+0#af5f00255&|v|a|l| +0#0000000&|!+0#af5f00255&|?+0#0000000&|\+0#e000e06&|#| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@54
|
||||
@57|3|7|,|1| @9|8|6|%|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_bash_03.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_bash_03.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|e+0#af5f00255&|v|a|l| +0#0000000&|!+0#af5f00255&|?+0#0000000&|\+0#e000e06&|#| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@54
|
||||
||+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|i| +0#0000000&@70
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|n+0#00e0e07#ffffff0|a|m|e|s|p|a|c|e| |(|)| +0#0000000&@60
|
||||
|-+0#0000e05#a8a8a8255| |{+0#e000e06#ffffff0| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|#|;+0#af5f00255&| +0#0000000&@62
|
||||
||+0#0000e05#a8a8a8255| >}+0#e000e06#ffffff0|;+0#0000000&| |n|a|m|e|s|p|a|c|e| |$+0#e000e06&|@| +0#0000000&@57
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|5@1|,|1| @9|B|o|t|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_dash_00.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_dash_00.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0#0000e05#a8a8a8255@1>#+0&#ffffff0|!|/|b|i|n|/|d|a|s|h| +0#0000000&@61
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l|o|c|a|l| |f|e|n| |f|d|c|=|2| |f|d|l|=|8| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@20
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|s|h|_|f|o|l|d|_|e|n|a|b|l|e|d| |=| |1| |+| |2| |+| |4| +0#0000000&@22
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#00e0e07#ffffff0|h|e|n|c|e|(|)| +0#0000000&@64
|
||||
| +0#0000e05#a8a8a8255@1|u+0#af5f00255#ffffff0|n|t|i|l| |:| +0#0000000&@65
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
||+0#0000e05#a8a8a8255| |t+0#af5f00255#ffffff0|h|e|n| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|f+0#af5f00255&|i|;+0#0000000&| |e|l|s|e|w|h|e|r|e| @51
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|c+0#00e0e07#ffffff0|a|s|e|d|(|)| +0#0000000&|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|#|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|*|)+0#af5f00255&| +0#0000000&|:|;+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|s|a|c|;+0#0000000&| |c|a|s|e|d| @33
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|i|s|_|d|a|s|h|:| |1|,| |i|s|_|p|o|s|i|x|:| |1|,| |i|s|_|s|h|:| |1|,| @22|1|,|1| @10|T|o|p|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_dash_01.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_dash_01.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
||+0#0000e05#a8a8a8255| |t+0#af5f00255#ffffff0|h|e|n| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|f+0#af5f00255&|i|;+0#0000000&| |e|l|s|e|w|h|e|r|e| @51
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|c+0#00e0e07#ffffff0|a|s|e|d|(|)| +0#0000000&|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|#|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|*|)+0#af5f00255&| +0#0000000&|:|;+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|s|a|c|;+0#0000000&| |c|a|s|e|d| @33
|
||||
| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|f+0#00e0e07#ffffff0|o|r|e|(|)| +0#0000000&@66
|
||||
| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|o|r| +0#0000000&|x| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&@60
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o|r|e| @68
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |i+0#af5f00255#ffffff0|f| |:+0#0000000&|;+0#af5f00255&| +0#0000000&|t+0#af5f00255&|h|e|n| +0#0000000&@62
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|i+0#00e0e07&|d|2|(|)| +0#0000000&@63
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|(+0#af5f00255&| +0#0000000&@67
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|i+0#00e0e07&|d|1|(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@57
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@11|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@51
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|}+0#e000e06&| +0#0000000&@63
|
||||
@57|1|9|,|0|-|1| @7|6|1|%|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_dash_02.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_dash_02.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|}+0#e000e06&| +0#0000000&@63
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|i|d|1| |"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@56
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|)+0#af5f00255&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|i|d|2| |"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@60
|
||||
||+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|i| +0#0000000&@70
|
||||
| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|f+0#00e0e07#ffffff0|u|n|c|t|i|o|n| |(|)| +0#0000000&@61
|
||||
|-+0#0000e05#a8a8a8255| |{+0#e000e06#ffffff0| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|#|;+0#af5f00255&| +0#0000000&@62
|
||||
||+0#0000e05#a8a8a8255| |}+0#e000e06#ffffff0|;+0#0000000&| |f|u|n|c|t|i|o|n| |$+0#e000e06&|@| +0#0000000&@58
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|3|7|,|0|-|1| @7|B|o|t|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_00.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_00.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0#0000e05#a8a8a8255@1>#+0&#ffffff0|!|/|b|i|n|/|k|s|h|2|0|2|0| +0#0000000&@58
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l|o|c|a|l| |f|e|n| |f|d|c|=|2| |f|d|l|=|8| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@20
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|s|h|_|f|o|l|d|_|e|n|a|b|l|e|d| |=| |1| |+| |2| |+| |4| +0#0000000&@22
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#af5f00255#ffffff0|y|p|e|s|e|t| +0#0000000&|-+0#e000e06&|i| +0#0000000&|1+0#e000002&|0| +0#0000000&|n+0#00e0e07&|=+0#0000000&|0+0#e000002&| +0#0000000&@55
|
||||
| +0#0000e05#a8a8a8255@1|d+0#00e0e07#ffffff0|o@1|s|i|e|(|)| +0#0000000&|(+0#e000e06&@1|n+0#0000000&|++0#af5f00255&|=|1+0#e000002&|)+0#e000e06&@1|;+0#0000000&| |d|o@1|s|i|e| @47
|
||||
| +0#0000e05#a8a8a8255@1|d+0#00e0e07#ffffff0|o|n|e@1|(|)| +0#0000000&|[+0#e000e06&@1| +0#0000000&|-+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|#| +0#0000000&|]+0#e000e06&@1|;+0#0000000&| |d|o|n|e@1| @46
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#00e0e07#ffffff0|h|e|n|c|e|(|)| +0#0000000&@64
|
||||
| +0#0000e05#a8a8a8255@1|u+0#af5f00255#ffffff0|n|t|i|l| |:| +0#0000000&@65
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
|i|s|_|k|o|r|n|s|h|e|l@1|:| |1|,| |i|s|_|k|s|h|2|0|2|0|:| |1|,| @25|1|,|1| @10|T|o|p|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_01.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_01.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| >e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
||+0#0000e05#a8a8a8255| |t+0#af5f00255#ffffff0|h|e|n| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|f+0#af5f00255&|i|;+0#0000000&| |e|l|s|e|w|h|e|r|e| @51
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |s+0#00e0e07#ffffff0|e|l|e|c|t|o|r|(|)| +0#0000000&|s+0#af5f00255&|e|l|e|c|t| |x+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&|;+0#0000000&| |d+0#af5f00255&|o| +0#0000000&@42
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|b+0#af5f00255&|r|e|a|k| +0#0000000&@63
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|e|l|e|c|t|o|r| |0+0#e000002&|<+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1| |2+0#e000002&|>+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1| ||@1| |:| @35
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|c+0#00e0e07#ffffff0|a|s|e|d|(|)| +0#0000000&|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|#|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|*|)+0#af5f00255&| +0#0000000&|:|;+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|s|a|c|;+0#0000000&| |c|a|s|e|d| @33
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|f+0#00e0e07#ffffff0|o|r|e|(|)| +0#0000000&@66
|
||||
| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|o|r| +0#0000000&|x| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&@60
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
@57|1|9|,|1| @9|4|0|%|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_02.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_02.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o|r|e| @68
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|i+0#00e0e07#ffffff0|f@1|y|(|)| +0#0000000&|f+0#af5f00255&|o|r| |(@1|;@1|)@1| +0#0000000&@55
|
||||
|-+0#0000e05#a8a8a8255| >d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|b+0#af5f00255&|r|e|a|k| +0#0000000&@63
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|i+0#0000000#ffffff0|f@1|y| @68
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |i+0#af5f00255#ffffff0|f| |:+0#0000000&|;+0#af5f00255&| +0#0000000&|t+0#af5f00255&|h|e|n| +0#0000000&@62
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|i+0#00e0e07&|d|_|(|)| +0#0000000&@63
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|(+0#af5f00255&| +0#0000000&@67
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|n+0#00e0e07&|.|s|e|t| +0#0000000&|{+0#e000e06&| +0#0000000&@48
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@11|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|n|"+0#af5f00255&| +0#0000000&@51
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|}+0#e000e06&| +0#0000000&@63
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|d|o@1|s|i|e| @58
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|)+0#af5f00255&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|i|d|_| |"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@60
|
||||
@57|3|7|,|1| @9|9|6|%|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_03.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_ksh2020_03.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|i|d|_| |"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@60
|
||||
||+0#0000e05#a8a8a8255| >f+0#af5f00255#ffffff0|i| +0#0000000&@70
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|5|1|,|1| @9|B|o|t|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_ksh88_00.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_ksh88_00.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0#0000e05#a8a8a8255@1>#+0&#ffffff0|!|/|b|i|n|/|k|s|h|8@1| +0#0000000&@60
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l|o|c|a|l| |f|e|n| |f|d|c|=|2| |f|d|l|=|8| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@20
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|s|h|_|f|o|l|d|_|e|n|a|b|l|e|d| |=| |1| |+| |2| |+| |4| +0#0000000&@22
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#af5f00255#ffffff0|y|p|e|s|e|t| +0#0000000&|-+0#e000e06&|i| +0#0000000&|1+0#e000002&|0| +0#0000000&|n+0#00e0e07&|=+0#0000000&|0+0#e000002&| +0#0000000&@55
|
||||
| +0#0000e05#a8a8a8255@1|d+0#00e0e07#ffffff0|o@1|s|i|e|(|)| +0#0000000&|(+0#e000e06&@1|n+0#0000000&|++0#af5f00255&|=|1+0#e000002&|)+0#e000e06&@1|;+0#0000000&| |d|o@1|s|i|e| @47
|
||||
| +0#0000e05#a8a8a8255@1|d+0#00e0e07#ffffff0|o|n|e@1|(|)| +0#0000000&|[+0#e000e06&@1| +0#0000000&|-+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|#| +0#0000000&|]+0#e000e06&@1|;+0#0000000&| |d|o|n|e@1| @46
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#00e0e07#ffffff0|h|e|n|c|e|(|)| +0#0000000&@64
|
||||
| +0#0000e05#a8a8a8255@1|u+0#af5f00255#ffffff0|n|t|i|l| |:| +0#0000000&@65
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
|i|s|_|k|o|r|n|s|h|e|l@1|:| |1|,| |i|s|_|k|s|h|8@1|:| |1|,| @27|1|,|1| @10|T|o|p|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_ksh88_01.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_ksh88_01.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| >e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
||+0#0000e05#a8a8a8255| |t+0#af5f00255#ffffff0|h|e|n| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|f+0#af5f00255&|i|;+0#0000000&| |e|l|s|e|w|h|e|r|e| @51
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |s+0#00e0e07#ffffff0|e|l|e|c|t|o|r|(|)| +0#0000000&|s+0#af5f00255&|e|l|e|c|t| |x+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&|;+0#0000000&| |d+0#af5f00255&|o| +0#0000000&@42
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|b+0#af5f00255&|r|e|a|k| +0#0000000&@63
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|e|l|e|c|t|o|r| |0+0#e000002&|<+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1| |2+0#e000002&|>+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1| ||@1| |:| @35
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|c+0#00e0e07#ffffff0|a|s|e|d|(|)| +0#0000000&|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|#|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|*|)+0#af5f00255&| +0#0000000&|:|;+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|s|a|c|;+0#0000000&| |c|a|s|e|d| @33
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|f+0#00e0e07#ffffff0|o|r|e|(|)| +0#0000000&@66
|
||||
| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|o|r| +0#0000000&|x| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&@60
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
@57|1|9|,|1| @9|5|0|%|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_ksh88_02.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_ksh88_02.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o|r|e| @68
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |i+0#af5f00255#ffffff0|f| |:+0#0000000&|;+0#af5f00255&| +0#0000000&|t+0#af5f00255&|h|e|n| +0#0000000&@62
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3>i+0#00e0e07&|d|2|(|)| +0#0000000&@63
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|(+0#af5f00255&| +0#0000000&@67
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|i+0#00e0e07&|d|1| +0#0000000&|{+0#e000e06&| +0#0000000&@50
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@11|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@51
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|}+0#e000e06&| +0#0000000&@63
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|i|d|1| |"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@56
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|)+0#af5f00255&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|i|d|2| |"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@60
|
||||
||+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|i| +0#0000000&@70
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|3|7|,|5| @9|B|o|t|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_mksh_00.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_mksh_00.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
| +0#0000e05#a8a8a8255@1>#+0&#ffffff0|!|/|b|i|n|/|m|k|s|h| +0#0000000&@61
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l|o|c|a|l| |f|e|n| |f|d|c|=|2| |f|d|l|=|8| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@20
|
||||
| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|s|h|_|f|o|l|d|_|e|n|a|b|l|e|d| |=| |1| |+| |2| |+| |4| +0#0000000&@22
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#af5f00255#ffffff0|y|p|e|s|e|t| +0#0000000&|-+0#e000e06&|i|1|0| +0#0000000&|n+0#00e0e07&|=+0#0000000&|0+0#e000002&| +0#0000000&@56
|
||||
| +0#0000e05#a8a8a8255@1|d+0#00e0e07#ffffff0|o@1|s|i|e|(|)| +0#0000000&|(+0#e000e06&@1|n+0#0000000&|++0#af5f00255&|=|1+0#e000002&|)+0#e000e06&@1|;+0#0000000&| |d|o@1|s|i|e| @47
|
||||
| +0#0000e05#a8a8a8255@1|d+0#00e0e07#ffffff0|o|n|e@1|(|)| +0#0000000&|[+0#e000e06&@1| +0#0000000&|-+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|#| +0#0000000&|]+0#e000e06&@1|;+0#0000000&| |d|o|n|e@1| @46
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|t+0#00e0e07#ffffff0|h|e|n|c|e|(|)| +0#0000000&@64
|
||||
| +0#0000e05#a8a8a8255@1|u+0#af5f00255#ffffff0|n|t|i|l| |:| +0#0000000&@65
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
|i|s|_|k|o|r|n|s|h|e|l@1|:| |1|,| |i|s|_|m|k|s|h|:| |1|,| @28|1|,|1| @10|T|o|p|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_mksh_01.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_mksh_01.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|e|n|c|e| @66
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|w+0#00e0e07#ffffff0|h|i|l|e|s|(|)| +0#0000000&|w+0#af5f00255&|h|i|l|e| |f|a|l|s|e|;| |d|o| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|d+0#af5f00255&|o|n|e|;+0#0000000&| |w|h|i|l|e|s| @32
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| >e+0#00e0e07#ffffff0|l|s|e|w|h|e|r|e|(|)| +0#0000000&|i+0#af5f00255&|f| |:+0#0000000&| @56
|
||||
||+0#0000e05#a8a8a8255| |t+0#af5f00255#ffffff0|h|e|n| +0#0000000&|:|;+0#af5f00255&| +0#0000000&|f+0#af5f00255&|i|;+0#0000000&| |e|l|s|e|w|h|e|r|e| @51
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |s+0#00e0e07#ffffff0|e|l|e|c|t|o|r|(|)| +0#0000000&|s+0#af5f00255&|e|l|e|c|t| |x+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&|;+0#0000000&| |d+0#af5f00255&|o| +0#0000000&@42
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|b+0#af5f00255&|r|e|a|k| +0#0000000&@63
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|e|l|e|c|t|o|r| |0+0#e000002&|<+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1| |2+0#e000002&|>+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1| ||@1| |:| @35
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|c+0#00e0e07#ffffff0|a|s|e|d|(|)| +0#0000000&|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|#|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|*|)+0#af5f00255&| +0#0000000&|:|;+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|s|a|c|;+0#0000000&| |c|a|s|e|d| @33
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
| +0#0000e05#a8a8a8255@1|f+0#00e0e07#ffffff0|o|r|e|(|)| +0#0000000&@66
|
||||
| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|o|r| +0#0000000&|x| |i+0#af5f00255&|n| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&@60
|
||||
|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o| +0#0000000&@70
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
@57|1|9|,|1| @9|5|0|%|
|
||||
20
runtime/syntax/testdir/dumps/sh_functions_mksh_02.dump
generated
Normal file
20
runtime/syntax/testdir/dumps/sh_functions_mksh_02.dump
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|:+0#0000e05&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|o|n|e| +0#0000000&@68
|
||||
| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o|r|e| @68
|
||||
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|
||||
|-+0#0000e05#a8a8a8255| |i+0#af5f00255#ffffff0|f| |:+0#0000000&|;+0#af5f00255&| +0#0000000&|t+0#af5f00255&|h|e|n| +0#0000000&@62
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3>%+0#00e0e07&@2|(|)| +0#0000000&@63
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|(+0#af5f00255&| +0#0000000&@67
|
||||
|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|@+0#00e0e07&|a|:|(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@48
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@11|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@51
|
||||
|3+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|}+0#e000e06&| +0#0000000&@63
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|@|a|:| |"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@56
|
||||
|2+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|)+0#af5f00255&| +0#0000000&@67
|
||||
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|%@2| |"+0#af5f00255&|$+0#e000e06&|1|"+0#af5f00255&| +0#0000000&@60
|
||||
||+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|i| +0#0000000&@70
|
||||
|~+0#4040ff13&| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
|~| @73
|
||||
| +0#0000000&@56|3|7|,|5| @9|B|o|t|
|
||||
4
runtime/syntax/testdir/dumps/sh_generic_07.dump
generated
4
runtime/syntax/testdir/dumps/sh_generic_07.dump
generated
@@ -3,9 +3,9 @@
|
||||
|#+0#0000e05&| |V|a|l|u|e| |s|u|b|s|t|i|t|u|t|i|o|n|s| |o|f| |t|h|e| |f|o|r|m| |$|{|||c|o|m@1|a|n|d|}| |a|r|e| |o|n|l|y| +0#0000000&@20
|
||||
|#+0#0000e05&| |s|u|p@1|o|r|t|e|d| |b|y| |m|k|s|h|,| |n|o|t| |k|s|h|9|3|.| +0#0000000&@43
|
||||
|i+0#af5f00255&|f| |!| +0#0000000&|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|e+0#af5f00255&|v|a|l| +0#0000000&|'+0#af5f00255&|(+0#e000002&@1|.|s|h|.|v|e|r|s|i|o|n| |>|=| |2|0@1|7|0|7|0|3|)@1|'+0#af5f00255&| +0#0000000&|2+0#e000002&|>+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1|;+0#af5f00255&| +0#0000000&|t+0#af5f00255&|h|e|n| +0#0000000&@9
|
||||
| +0#00e0e07&@7>v|a|l|s|u|b|f|u|n|c|(|)| |{| +0#0000000&@52
|
||||
@8>v+0#00e0e07&|a|l|s|u|b|f|u|n|c|(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@52
|
||||
@16|R+0#e000e06&|E|P|L|Y|=+0#af5f00255&|$+0#e000e06&|1| +0#0000000&@50
|
||||
@8|}+0#00e0e07&| +0#0000000&@65
|
||||
@8|}+0#e000e06&| +0#0000000&@65
|
||||
@8|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|{|||v|a|l|s|u|b|f|u|n|c| |t|e|n|}| +0#0000000&@43
|
||||
@8|p+0#af5f00255&|r|i|n|t| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|{|||v|a|l|s|u|b|f|u|n|c| |e|l|e|v|e|n|;+0#af5f00255&|}+0#e000e06&|"+0#af5f00255&| +0#0000000&@36
|
||||
@8|p+0#af5f00255&|r|i|n|t|f| +0#0000000&|'+0#af5f00255&|%+0#e000002&|s|'+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|||v|a|l|s|u|b|f|u|n|c| |t|w|e|l|v|e| @6|}|"+0#af5f00255&| +0#0000000&@24
|
||||
|
||||
16
runtime/syntax/testdir/dumps/sh_generic_10.dump
generated
16
runtime/syntax/testdir/dumps/sh_generic_10.dump
generated
@@ -1,20 +1,20 @@
|
||||
| +0&#ffffff0@74
|
||||
|.+0#00e0e07&|s|h|.|t|i|l|d|e|.|g|e|t|(|)| |{| +0#0000000&@57
|
||||
|.+0#00e0e07&|s|h|.|t|i|l|d|e|.|g|e|t|(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@57
|
||||
@8|t+0#af5f00255&|r|u|e| +0#0000000&@62
|
||||
|}+0#00e0e07&| +0#0000000&@73
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
>f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|.+0#00e0e07&|s|h|.|t|i|l|d|e|.|s|e|t| |{| +0#0000000&@50
|
||||
>f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|.+0#00e0e07&|s|h|.|t|i|l|d|e|.|s|e|t| +0#0000000&|{+0#e000e06&| +0#0000000&@50
|
||||
@8|f+0#af5f00255&|a|l|s|e| +0#0000000&@61
|
||||
|}+0#00e0e07&| +0#0000000&@73
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|f|o@1|(+0#e000e06&|)| +0#0000000&|{+0#e000e06&| +0#0000000&@58
|
||||
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|f|o@1|(+0#e000e06&|)| +0#0000000&|{+0#e000e06&| +0#0000000&@58
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |B|a|s|h|-|s|t|y|l|e| |f|u|n|c|t|i|o|n| |(|m|k|s|h|-|o|n|l|y|)| +0#0000000&@30
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|f+0#00e0e07&|o@1|2| |{| +0#0000000&@59
|
||||
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|f+0#00e0e07&|o@1|2| +0#0000000&|{+0#e000e06&| +0#0000000&@59
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |K|o|r|n|S|h|e|l@1|-|s|t|y|l|e| |f|u|n|c|t|i|o|n| +0#0000000&@37
|
||||
|}+0#00e0e07&| +0#0000000&@73
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|f+0#00e0e07&|o@1|3|(|)| |{| +0#0000000&@66
|
||||
|f+0#00e0e07&|o@1|3|(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@66
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |P|O|S|I|X| |f|u|n|c|t|i|o|n| +0#0000000&@47
|
||||
@57|1|5|4|,|1| @8|7|9|%|
|
||||
|
||||
18
runtime/syntax/testdir/dumps/sh_generic_11.dump
generated
18
runtime/syntax/testdir/dumps/sh_generic_11.dump
generated
@@ -1,20 +1,20 @@
|
||||
| +0&#ffffff0@7|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |P|O|S|I|X| |f|u|n|c|t|i|o|n| +0#0000000&@47
|
||||
|}+0#00e0e07&| +0#0000000&@73
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|f+0#00e0e07&|o@1|4|.|g|e|t|(|)| |{| +0#0000000&@62
|
||||
|f+0#00e0e07&|o@1|4|.|g|e|t|(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@62
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |P|O|S|I|X|-|s|t|y|l|e| |k|s|h|9|3| |d|i|s|c|i|p|l|i|n|e| |f|u|n|c|t|i|o|n| +0#0000000&@24
|
||||
>}+0#00e0e07&| +0#0000000&@73
|
||||
>}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|f+0#00e0e07&|o@1|5|.|s|e|t| |{| +0#0000000&@55
|
||||
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|f+0#00e0e07&|o@1|5|.|s|e|t| +0#0000000&|{+0#e000e06&| +0#0000000&@55
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |K|o|r|n|S|h|e|l@1|-|s|t|y|l|e| |k|s|h|9|3| |d|i|s|c|i|p|l|i|n|e| |f|u|n|c|t|i|o|n| +0#0000000&@20
|
||||
|}+0#00e0e07&| +0#0000000&@73
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|_+0#00e0e07&|f|o@1|6|.|u|n|s|e|t|(|)| |(| +0#0000000&@59
|
||||
|_+0#00e0e07&|f|o@1|6|.|u|n|s|e|t|(|)| +0#0000000&|(+0#af5f00255&| +0#0000000&@59
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |P|O|S|I|X|-|s|t|y|l|e| |s|u|b|s|h|e|l@1| |d|i|s|c|i|p|l|i|n|e| |f|u|n|c|t|i|o|n| +0#0000000&@21
|
||||
|)+0#00e0e07&| +0#0000000&@73
|
||||
|)+0#af5f00255&| +0#0000000&@73
|
||||
@75
|
||||
|n+0#00e0e07&|a|m|e|s|p|a|c|e| +0#0000000&|_+0#00e0e07&|f|o@1| |{| +0#0000000&@58
|
||||
|n+0#af5f00255&|a|m|e|s|p|a|c|e| +0#0000000&|_+0#00e0e07&|f|o@1| +0#0000000&|{+0#e000e06&| +0#0000000&@58
|
||||
@8|:+0#0000e05&| +0#0000000&@65
|
||||
|}+0#00e0e07&| +0#0000000&@73
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
@57|1|7|2|,|1| @8|8@1|%|
|
||||
|
||||
6
runtime/syntax/testdir/dumps/sh_generic_12.dump
generated
6
runtime/syntax/testdir/dumps/sh_generic_12.dump
generated
@@ -1,14 +1,14 @@
|
||||
| +0&#ffffff0@74
|
||||
|n+0#00e0e07&|a|m|e|s|p|a|c|e| +0#0000000&|1|b|a|d|.|i|n|v|a|l|i|d| |{+0#e000e06&| +0#0000000&@50
|
||||
|n+0#af5f00255&|a|m|e|s|p|a|c|e| +0#0000000&|1|b|a|d|.|i|n|v|a|l|i|d| |{+0#e000e06&| +0#0000000&@50
|
||||
@8|:+0#0000e05&| +0#0000000&@65
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
>n+0#00e0e07&|a|m|e|s|p|a|c|e| +0#0000000&|f|o@1|1|(+0#e000e06&|)| +0#0000000&|{+0#e000e06&| +0#0000000&@56
|
||||
>n+0#af5f00255&|a|m|e|s|p|a|c|e| +0#0000000&|f|o@1|1|(+0#e000e06&|)| +0#0000000&|{+0#e000e06&| +0#0000000&@56
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |B|a|d| |s|y|n|t|a|x| +0#0000000&@51
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|#+0#0000e05&| |B|a|d| |s|y|n|t|a|x| |(|n|o| |n|a|m|e|)| +0#0000000&@52
|
||||
|f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|{+0#e000e06&| +0#0000000&@64
|
||||
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|{+0#e000e06&| +0#0000000&@64
|
||||
@8|f+0#af5f00255&|a|l|s|e| +0#0000000&@61
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|
||||
4
runtime/syntax/testdir/dumps/sh_ksh2020_07.dump
generated
4
runtime/syntax/testdir/dumps/sh_ksh2020_07.dump
generated
@@ -3,9 +3,9 @@
|
||||
|#+0#0000e05&| |V|a|l|u|e| |s|u|b|s|t|i|t|u|t|i|o|n|s| |o|f| |t|h|e| |f|o|r|m| |$|{|||c|o|m@1|a|n|d|}| |a|r|e| |o|n|l|y| +0#0000000&@20
|
||||
|#+0#0000e05&| |s|u|p@1|o|r|t|e|d| |b|y| |m|k|s|h|,| |n|o|t| |k|s|h|9|3|.| +0#0000000&@43
|
||||
|i+0#af5f00255&|f| |!| +0#0000000&|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|e+0#af5f00255&|v|a|l| +0#0000000&|'+0#af5f00255&|(+0#e000002&@1|.|s|h|.|v|e|r|s|i|o|n| |>|=| |2|0@1|7|0|7|0|3|)@1|'+0#af5f00255&| +0#0000000&|2+0#e000002&|>+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1|;+0#af5f00255&| +0#0000000&|t+0#af5f00255&|h|e|n| +0#0000000&@9
|
||||
| +0#00e0e07&@7>v|a|l|s|u|b|f|u|n|c|(|)| |{| +0#0000000&@52
|
||||
@8>v+0#00e0e07&|a|l|s|u|b|f|u|n|c|(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@52
|
||||
@16|R+0#e000e06&|E|P|L|Y|=+0#af5f00255&|$+0#e000e06&|1| +0#0000000&@50
|
||||
@8|}+0#00e0e07&| +0#0000000&@65
|
||||
@8|}+0#e000e06&| +0#0000000&@65
|
||||
@8|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|{||+0#ffffff16#ff404010|v|a|l|s|u|b|f|u|n|c| |t|e|n|}+0#e000e06#ffffff0| +0#0000000&@43
|
||||
@8|p+0#af5f00255&|r|i|n|t| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|{||+0#ffffff16#ff404010|v|a|l|s|u|b|f|u|n|c| |e|l|e|v|e|n|;|}+0#e000e06#ffffff0|"+0#af5f00255&| +0#0000000&@36
|
||||
@8|p+0#af5f00255&|r|i|n|t|f| +0#0000000&|'+0#af5f00255&|%+0#e000002&|s|'+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|{||+0#ffffff16#ff404010|v|a|l|s|u|b|f|u|n|c| |t|w|e|l|v|e| @6|}+0#e000e06#ffffff0|"+0#af5f00255&| +0#0000000&@24
|
||||
|
||||
16
runtime/syntax/testdir/dumps/sh_ksh2020_10.dump
generated
16
runtime/syntax/testdir/dumps/sh_ksh2020_10.dump
generated
@@ -1,20 +1,20 @@
|
||||
| +0&#ffffff0@74
|
||||
|.+0#00e0e07&|s|h|.|t|i|l|d|e|.|g|e|t|(|)| |{| +0#0000000&@57
|
||||
|.+0#00e0e07&|s|h|.|t|i|l|d|e|.|g|e|t|(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@57
|
||||
@8|t+0#af5f00255&|r|u|e| +0#0000000&@62
|
||||
|}+0#00e0e07&| +0#0000000&@73
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
>f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|.+0#00e0e07&|s|h|.|t|i|l|d|e|.|s|e|t| |{| +0#0000000&@50
|
||||
>f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|.+0#00e0e07&|s|h|.|t|i|l|d|e|.|s|e|t| +0#0000000&|{+0#e000e06&| +0#0000000&@50
|
||||
@8|f+0#af5f00255&|a|l|s|e| +0#0000000&@61
|
||||
|}+0#00e0e07&| +0#0000000&@73
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|f|o@1|(+0#e000e06&|)| +0#0000000&|{+0#e000e06&| +0#0000000&@58
|
||||
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|f|o@1|(+0#e000e06&|)| +0#0000000&|{+0#e000e06&| +0#0000000&@58
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |B|a|s|h|-|s|t|y|l|e| |f|u|n|c|t|i|o|n| |(|m|k|s|h|-|o|n|l|y|)| +0#0000000&@30
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|f+0#00e0e07&|o@1|2| |{| +0#0000000&@59
|
||||
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|f+0#00e0e07&|o@1|2| +0#0000000&|{+0#e000e06&| +0#0000000&@59
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |K|o|r|n|S|h|e|l@1|-|s|t|y|l|e| |f|u|n|c|t|i|o|n| +0#0000000&@37
|
||||
|}+0#00e0e07&| +0#0000000&@73
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|f+0#00e0e07&|o@1|3|(|)| |{| +0#0000000&@66
|
||||
|f+0#00e0e07&|o@1|3|(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@66
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |P|O|S|I|X| |f|u|n|c|t|i|o|n| +0#0000000&@47
|
||||
@57|1|5|4|,|1| @8|7|9|%|
|
||||
|
||||
18
runtime/syntax/testdir/dumps/sh_ksh2020_11.dump
generated
18
runtime/syntax/testdir/dumps/sh_ksh2020_11.dump
generated
@@ -1,20 +1,20 @@
|
||||
| +0&#ffffff0@7|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |P|O|S|I|X| |f|u|n|c|t|i|o|n| +0#0000000&@47
|
||||
|}+0#00e0e07&| +0#0000000&@73
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|f+0#00e0e07&|o@1|4|.|g|e|t|(|)| |{| +0#0000000&@62
|
||||
|f+0#00e0e07&|o@1|4|.|g|e|t|(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@62
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |P|O|S|I|X|-|s|t|y|l|e| |k|s|h|9|3| |d|i|s|c|i|p|l|i|n|e| |f|u|n|c|t|i|o|n| +0#0000000&@24
|
||||
>}+0#00e0e07&| +0#0000000&@73
|
||||
>}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|f+0#00e0e07&|o@1|5|.|s|e|t| |{| +0#0000000&@55
|
||||
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|f+0#00e0e07&|o@1|5|.|s|e|t| +0#0000000&|{+0#e000e06&| +0#0000000&@55
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |K|o|r|n|S|h|e|l@1|-|s|t|y|l|e| |k|s|h|9|3| |d|i|s|c|i|p|l|i|n|e| |f|u|n|c|t|i|o|n| +0#0000000&@20
|
||||
|}+0#00e0e07&| +0#0000000&@73
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|_+0#00e0e07&|f|o@1|6|.|u|n|s|e|t|(|)| |(| +0#0000000&@59
|
||||
|_+0#00e0e07&|f|o@1|6|.|u|n|s|e|t|(|)| +0#0000000&|(+0#af5f00255&| +0#0000000&@59
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |P|O|S|I|X|-|s|t|y|l|e| |s|u|b|s|h|e|l@1| |d|i|s|c|i|p|l|i|n|e| |f|u|n|c|t|i|o|n| +0#0000000&@21
|
||||
|)+0#00e0e07&| +0#0000000&@73
|
||||
|)+0#af5f00255&| +0#0000000&@73
|
||||
@75
|
||||
|n+0#00e0e07&|a|m|e|s|p|a|c|e| +0#0000000&|_+0#00e0e07&|f|o@1| |{| +0#0000000&@58
|
||||
|n+0#af5f00255&|a|m|e|s|p|a|c|e| +0#0000000&|_+0#00e0e07&|f|o@1| +0#0000000&|{+0#e000e06&| +0#0000000&@58
|
||||
@8|:+0#0000e05&| +0#0000000&@65
|
||||
|}+0#00e0e07&| +0#0000000&@73
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
@57|1|7|2|,|1| @8|8@1|%|
|
||||
|
||||
6
runtime/syntax/testdir/dumps/sh_ksh2020_12.dump
generated
6
runtime/syntax/testdir/dumps/sh_ksh2020_12.dump
generated
@@ -1,14 +1,14 @@
|
||||
| +0&#ffffff0@74
|
||||
|n+0#00e0e07&|a|m|e|s|p|a|c|e| +0#0000000&|1|b|a|d|.|i|n|v|a|l|i|d| |{+0#e000e06&| +0#0000000&@50
|
||||
|n+0#af5f00255&|a|m|e|s|p|a|c|e| +0#0000000&|1|b|a|d|.|i|n|v|a|l|i|d| |{+0#e000e06&| +0#0000000&@50
|
||||
@8|:+0#0000e05&| +0#0000000&@65
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
>n+0#00e0e07&|a|m|e|s|p|a|c|e| +0#0000000&|f|o@1|1|(+0#e000e06&|)| +0#0000000&|{+0#e000e06&| +0#0000000&@56
|
||||
>n+0#af5f00255&|a|m|e|s|p|a|c|e| +0#0000000&|f|o@1|1|(+0#e000e06&|)| +0#0000000&|{+0#e000e06&| +0#0000000&@56
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |B|a|d| |s|y|n|t|a|x| +0#0000000&@51
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|#+0#0000e05&| |B|a|d| |s|y|n|t|a|x| |(|n|o| |n|a|m|e|)| +0#0000000&@52
|
||||
|f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|{+0#e000e06&| +0#0000000&@64
|
||||
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|{+0#e000e06&| +0#0000000&@64
|
||||
@8|f+0#af5f00255&|a|l|s|e| +0#0000000&@61
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|
||||
4
runtime/syntax/testdir/dumps/sh_ksh88_07.dump
generated
4
runtime/syntax/testdir/dumps/sh_ksh88_07.dump
generated
@@ -3,9 +3,9 @@
|
||||
|#+0#0000e05&| |V|a|l|u|e| |s|u|b|s|t|i|t|u|t|i|o|n|s| |o|f| |t|h|e| |f|o|r|m| |$|{|||c|o|m@1|a|n|d|}| |a|r|e| |o|n|l|y| +0#0000000&@20
|
||||
|#+0#0000e05&| |s|u|p@1|o|r|t|e|d| |b|y| |m|k|s|h|,| |n|o|t| |k|s|h|9|3|.| +0#0000000&@43
|
||||
|i+0#af5f00255&|f| |!| +0#0000000&|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|e+0#af5f00255&|v|a|l| +0#0000000&|'+0#af5f00255&|(+0#e000002&@1|.|s|h|.|v|e|r|s|i|o|n| |>|=| |2|0@1|7|0|7|0|3|)@1|'+0#af5f00255&| +0#0000000&|2+0#e000002&|>+0#af5f00255&|/+0#0000000&|d|e|v|/|n|u|l@1|;+0#af5f00255&| +0#0000000&|t+0#af5f00255&|h|e|n| +0#0000000&@9
|
||||
| +0#00e0e07&@7>v|a|l|s|u|b|f|u|n|c|(|)| |{| +0#0000000&@52
|
||||
@8>v+0#00e0e07&|a|l|s|u|b|f|u|n|c|(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@52
|
||||
@16|R+0#e000e06&|E|P|L|Y|=+0#af5f00255&|$+0#e000e06&|1| +0#0000000&@50
|
||||
@8|}+0#00e0e07&| +0#0000000&@65
|
||||
@8|}+0#e000e06&| +0#0000000&@65
|
||||
@8|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|{||+0#ffffff16#ff404010|v|a|l|s|u|b|f|u|n|c| |t|e|n|}+0#e000e06#ffffff0| +0#0000000&@43
|
||||
@8|p+0#af5f00255&|r|i|n|t| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|{||+0#ffffff16#ff404010|v|a|l|s|u|b|f|u|n|c| |e|l|e|v|e|n|;|}+0#e000e06#ffffff0|"+0#af5f00255&| +0#0000000&@36
|
||||
@8|p+0#af5f00255&|r|i|n|t|f| +0#0000000&|'+0#af5f00255&|%+0#e000002&|s|'+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|{||+0#ffffff16#ff404010|v|a|l|s|u|b|f|u|n|c| |t|w|e|l|v|e| @6|}+0#e000e06#ffffff0|"+0#af5f00255&| +0#0000000&@24
|
||||
|
||||
10
runtime/syntax/testdir/dumps/sh_ksh88_10.dump
generated
10
runtime/syntax/testdir/dumps/sh_ksh88_10.dump
generated
@@ -3,18 +3,18 @@
|
||||
@8|t+0#af5f00255&|r|u|e| +0#0000000&@62
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
>f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|.|s|h|.|t|i|l|d|e|.|s+0#af5f00255&|e|t| +0#00e0e07&|{+0#e000e06&| +0#0000000&@50
|
||||
>f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|.|s|h|.|t|i|l|d|e|.|s+0#af5f00255&|e|t| +0#00e0e07&|{+0#e000e06&| +0#0000000&@50
|
||||
| +0#00e0e07&@7|f+0#af5f00255&|a|l|s|e| +0#0000000&@61
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|f|o@1|(+0#e000e06&|)| +0#0000000&|{+0#e000e06&| +0#0000000&@58
|
||||
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|f|o@1|(+0#e000e06&|)| +0#0000000&|{+0#e000e06&| +0#0000000&@58
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |B|a|s|h|-|s|t|y|l|e| |f|u|n|c|t|i|o|n| |(|m|k|s|h|-|o|n|l|y|)| +0#0000000&@30
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|f+0#00e0e07&|o@1|2| |{| +0#0000000&@59
|
||||
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|f+0#00e0e07&|o@1|2| +0#0000000&|{+0#e000e06&| +0#0000000&@59
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |K|o|r|n|S|h|e|l@1|-|s|t|y|l|e| |f|u|n|c|t|i|o|n| +0#0000000&@37
|
||||
|}+0#00e0e07&| +0#0000000&@73
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|f+0#00e0e07&|o@1|3|(|)| |{| +0#0000000&@66
|
||||
|f+0#00e0e07&|o@1|3|(|)| +0#0000000&|{+0#e000e06&| +0#0000000&@66
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |P|O|S|I|X| |f|u|n|c|t|i|o|n| +0#0000000&@47
|
||||
@57|1|5|4|,|1| @8|7|9|%|
|
||||
|
||||
4
runtime/syntax/testdir/dumps/sh_ksh88_11.dump
generated
4
runtime/syntax/testdir/dumps/sh_ksh88_11.dump
generated
@@ -1,11 +1,11 @@
|
||||
| +0&#ffffff0@7|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |P|O|S|I|X| |f|u|n|c|t|i|o|n| +0#0000000&@47
|
||||
|}+0#00e0e07&| +0#0000000&@73
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|f|o@1|4|.|g|e|t|(+0#e000e06&|)| +0#0000000&|{+0#e000e06&| +0#0000000&@62
|
||||
@8|:+0#0000e05&| +0#0000000&@1|#+0#0000e05&| |P|O|S|I|X|-|s|t|y|l|e| |k|s|h|9|3| |d|i|s|c|i|p|l|i|n|e| |f|u|n|c|t|i|o|n| +0#0000000&@24
|
||||
>}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|f|o@1|5|.|s+0#af5f00255&|e|t| +0#00e0e07&|{+0#e000e06&| +0#0000000&@55
|
||||
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|f|o@1|5|.|s+0#af5f00255&|e|t| +0#00e0e07&|{+0#e000e06&| +0#0000000&@55
|
||||
| +0#00e0e07&@7|:+0#0000e05&| +0#00e0e07&@1|#+0#0000e05&| |K|o|r|n|S|h|e|l@1|-|s|t|y|l|e| |k|s|h|9|3| |d|i|s|c|i|p|l|i|n|e| |f|u|n|c|t|i|o|n| +0#0000000&@20
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|
||||
2
runtime/syntax/testdir/dumps/sh_ksh88_12.dump
generated
2
runtime/syntax/testdir/dumps/sh_ksh88_12.dump
generated
@@ -8,7 +8,7 @@
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|#+0#0000e05&| |B|a|d| |s|y|n|t|a|x| |(|n|o| |n|a|m|e|)| +0#0000000&@52
|
||||
|f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|{+0#e000e06&| +0#0000000&@64
|
||||
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|{+0#e000e06&| +0#0000000&@64
|
||||
@8|f+0#af5f00255&|a|l|s|e| +0#0000000&@61
|
||||
|}+0#e000e06&| +0#0000000&@73
|
||||
@75
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user