mirror of
				https://github.com/zsh-users/zsh-autosuggestions.git
				synced 2025-10-30 15:26:29 +08:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			1f0bdd6be7
			...
			f5c3fd7701
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | f5c3fd7701 | 
							
								
								
									
										15
									
								
								.circleci/config.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								.circleci/config.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| version: 2 | ||||
| jobs: | ||||
|   build: | ||||
|     parallelism: 4 | ||||
|     shell: /bin/bash --login | ||||
|     docker: | ||||
|     - image: ericfreese/zsh-autosuggestions-test:latest | ||||
|     steps: | ||||
|     - checkout | ||||
|     - run: | ||||
|         name: Running tests | ||||
|         command: | | ||||
|           for v in $(grep "^[^#]" ZSH_VERSIONS | awk "(NR + $CIRCLE_NODE_INDEX) % $CIRCLE_NODE_TOTAL == 0"); do | ||||
|             TEST_ZSH_BIN=zsh-$v make test || exit 1 | ||||
|           done | ||||
							
								
								
									
										51
									
								
								.github/workflows/integration.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										51
									
								
								.github/workflows/integration.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,51 +0,0 @@ | ||||
| on: [push, pull_request] | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.ref }} | ||||
|   cancel-in-progress: true | ||||
| env: | ||||
|   IMAGE_CACHE_PATH: /tmp/.image-cache | ||||
|   IMAGE_CACHE_NAME: zsh-autosuggestions-test | ||||
| jobs: | ||||
|   determine-versions: | ||||
|     runs-on: ubuntu-22.04 | ||||
|     outputs: | ||||
|       versions: ${{ steps.set-versions.outputs.versions }} | ||||
|     steps: | ||||
|     - uses: actions/checkout@v3 | ||||
|     - id: set-versions | ||||
|       run: | | ||||
|         echo "versions=$( | ||||
|           grep "^[^#]" ZSH_VERSIONS \ | ||||
|           | sed -E 's/(^|$)/"/g' \ | ||||
|           | paste -sd ',' - \ | ||||
|           | sed -e 's/^/[/' -e 's/$/]/' | ||||
|         )" >> $GITHUB_OUTPUT | ||||
|   test: | ||||
|     needs: determine-versions | ||||
|     runs-on: ubuntu-22.04 | ||||
|     strategy: | ||||
|       matrix: | ||||
|         version: ${{ fromJson(needs.determine-versions.outputs.versions) }} | ||||
|     steps: | ||||
|     - uses: actions/checkout@v3 | ||||
|     - name: Docker image cache | ||||
|       id: image-cache | ||||
|       uses: actions/cache@v3 | ||||
|       with: | ||||
|         path: ${{ env.IMAGE_CACHE_PATH }} | ||||
|         key: image-cache-${{ matrix.version }}-${{ hashFiles('Dockerfile', 'install_test_zsh.sh', 'Gemfile.lock') }} | ||||
|     - name: Load cached docker image if available | ||||
|       if: ${{ steps.image-cache.outputs.cache-hit }} | ||||
|       run: gunzip < $IMAGE_CACHE_PATH/$IMAGE_CACHE_NAME.tar.gz | docker load | ||||
|     - name: Build the docker image if necessary | ||||
|       if: ${{ !steps.image-cache.outputs.cache-hit }} | ||||
|       run: | | ||||
|         docker build --build-arg TEST_ZSH_VERSION=${{ matrix.version }} -t $IMAGE_CACHE_NAME . | ||||
|         mkdir -p $IMAGE_CACHE_PATH | ||||
|         docker save $IMAGE_CACHE_NAME | gzip > $IMAGE_CACHE_PATH/$IMAGE_CACHE_NAME.tar.gz | ||||
|     - name: Run the tests | ||||
|       run: | | ||||
|         docker run --rm \ | ||||
|           -v $PWD:/zsh-autosuggestions \ | ||||
|           $IMAGE_CACHE_NAME \ | ||||
|           make test | ||||
| @ -1,12 +1,5 @@ | ||||
| # Changelog | ||||
| 
 | ||||
| ## v0.7.1 | ||||
| - Clear POSTDISPLAY instead of unsetting (#634) | ||||
| - Always reset async file descriptor after consuming it (#630) | ||||
| - Always use builtin `exec` (#628) | ||||
| - Add `history-beginning-search-*-end` widgets to clear widget list (#619) | ||||
| - Switch CI from Circle CI to GitHub Actions | ||||
| 
 | ||||
| ## v0.7.0 | ||||
| - Enable asynchronous mode by default (#498) | ||||
| - No longer wrap user widgets starting with `autosuggest-` prefix (#496) | ||||
|  | ||||
| @ -1,8 +1,5 @@ | ||||
| FROM ruby:2.5.3-alpine | ||||
| 
 | ||||
| ARG TEST_ZSH_VERSION | ||||
| RUN : "${TEST_ZSH_VERSION:?}" | ||||
| 
 | ||||
| RUN apk add --no-cache autoconf | ||||
| RUN apk add --no-cache libtool | ||||
| RUN apk add --no-cache libcap-dev | ||||
| @ -14,8 +11,10 @@ RUN apk add --no-cache tmux | ||||
| 
 | ||||
| WORKDIR /zsh-autosuggestions | ||||
| 
 | ||||
| ADD install_test_zsh.sh ./ | ||||
| ADD ZSH_VERSIONS /zsh-autosuggestions/ZSH_VERSIONS | ||||
| ADD install_test_zsh.sh /zsh-autosuggestions/install_test_zsh.sh | ||||
| RUN ./install_test_zsh.sh | ||||
| 
 | ||||
| ADD Gemfile Gemfile.lock ./ | ||||
| ADD Gemfile /zsh-autosuggestions/Gemfile | ||||
| ADD Gemfile.lock /zsh-autosuggestions/Gemfile.lock | ||||
| RUN bundle install | ||||
|  | ||||
							
								
								
									
										11
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								README.md
									
									
									
									
									
								
							| @ -6,6 +6,7 @@ It suggests commands as you type based on history and completions. | ||||
| 
 | ||||
| Requirements: Zsh v4.3.11 or later | ||||
| 
 | ||||
| [](https://circleci.com/gh/zsh-users/zsh-autosuggestions) | ||||
| [](https://gitter.im/zsh-users/zsh-autosuggestions) | ||||
| 
 | ||||
| <a href="https://asciinema.org/a/37390" target="_blank"><img src="https://asciinema.org/a/37390.png" width="400" /></a> | ||||
| @ -169,16 +170,18 @@ Tests are written in ruby using the [`rspec`](http://rspec.info/) framework. The | ||||
| 
 | ||||
| Test files live in `spec/`. To run the tests, run `make test`. To run a specific test, run `TESTS=spec/some_spec.rb make test`. You can also specify a `zsh` binary to use by setting the `TEST_ZSH_BIN` environment variable (ex: `TEST_ZSH_BIN=/bin/zsh make test`). | ||||
| 
 | ||||
| It's possible to run the tests for any supported version of zsh in a Docker image by building an image from the provided Dockerfile. To build the docker image for a specific version of zsh (where `<version>` below is substituted with the contents of a line from the [`ZSH_VERSIONS`](ZSH_VERSIONS) file), run: | ||||
| A docker image for testing is available [on docker hub](https://hub.docker.com/r/ericfreese/zsh-autosuggestions-test). It comes with ruby, the bundler dependencies, and all supported versions of zsh installed. | ||||
| 
 | ||||
| Pull the docker image with: | ||||
| 
 | ||||
| ```sh | ||||
| docker build --build-arg TEST_ZSH_VERSION=<version> -t zsh-autosuggestions-test . | ||||
| docker pull ericfreese/zsh-autosuggestions-test | ||||
| ``` | ||||
| 
 | ||||
| After building the image, run the tests via: | ||||
| To run the tests for a specific version of zsh (where `<version>` below is substituted with the contents of a line from the [`ZSH_VERSIONS`](ZSH_VERSIONS) file): | ||||
| 
 | ||||
| ```sh | ||||
| docker run -it -v $PWD:/zsh-autosuggestions zsh-autosuggestions-test make test | ||||
| docker run -it -e TEST_ZSH_BIN=zsh-<version> -v $PWD:/zsh-autosuggestions zsh-autosuggestions-test make test | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -1,5 +1,9 @@ | ||||
| # Zsh releases to run tests against | ||||
| # See https://github.com/zsh-users/zsh/releases | ||||
| # | ||||
| # When modifying this file, rebuild and push docker image: | ||||
| #   $ docker build -t ericfreese/zsh-autosuggestions-test . | ||||
| #   $ docker push ericfreese/zsh-autosuggestions-test | ||||
| 4.3.11 | ||||
| 5.0.2 | ||||
| 5.0.8 | ||||
| @ -10,5 +14,4 @@ | ||||
| 5.5.1 | ||||
| 5.6.2 | ||||
| 5.7.1 | ||||
| 5.8.1 | ||||
| 5.9 | ||||
| 5.8 | ||||
|  | ||||
| @ -2,22 +2,25 @@ | ||||
| 
 | ||||
| set -ex | ||||
| 
 | ||||
| mkdir zsh-build | ||||
| cd zsh-build | ||||
| for v in $(grep "^[^#]" ZSH_VERSIONS); do | ||||
|   mkdir zsh-$v | ||||
|   cd zsh-$v | ||||
| 
 | ||||
| curl -L https://api.github.com/repos/zsh-users/zsh/tarball/zsh-$TEST_ZSH_VERSION | tar xz --strip=1 | ||||
|   curl -L https://api.github.com/repos/zsh-users/zsh/tarball/zsh-$v | tar xz --strip=1 | ||||
| 
 | ||||
| ./Util/preconfig | ||||
| ./configure --enable-pcre \ | ||||
|             --enable-cap \ | ||||
|             --enable-multibyte \ | ||||
|             --with-term-lib='ncursesw tinfo' \ | ||||
|             --with-tcsetpgrp | ||||
|   ./Util/preconfig | ||||
|   ./configure --enable-pcre \ | ||||
|               --enable-cap \ | ||||
|               --enable-multibyte \ | ||||
|               --with-term-lib='ncursesw tinfo' \ | ||||
|               --with-tcsetpgrp \ | ||||
|               --program-suffix="-$v" | ||||
| 
 | ||||
| make install.bin | ||||
| make install.modules | ||||
| make install.fns | ||||
|   make install.bin | ||||
|   make install.modules | ||||
|   make install.fns | ||||
| 
 | ||||
| cd .. | ||||
|   cd .. | ||||
| 
 | ||||
| rm -rf zsh-build | ||||
|   rm -rf zsh-$v | ||||
| done | ||||
|  | ||||
| @ -11,7 +11,7 @@ _zsh_autosuggest_async_request() { | ||||
| 	# If we've got a pending request, cancel it | ||||
| 	if [[ -n "$_ZSH_AUTOSUGGEST_ASYNC_FD" ]] && { true <&$_ZSH_AUTOSUGGEST_ASYNC_FD } 2>/dev/null; then | ||||
| 		# Close the file descriptor and remove the handler | ||||
| 		builtin exec {_ZSH_AUTOSUGGEST_ASYNC_FD}<&- | ||||
| 		exec {_ZSH_AUTOSUGGEST_ASYNC_FD}<&- | ||||
| 		zle -F $_ZSH_AUTOSUGGEST_ASYNC_FD | ||||
| 
 | ||||
| 		# We won't know the pid unless the user has zsh/system module installed | ||||
| @ -32,7 +32,7 @@ _zsh_autosuggest_async_request() { | ||||
| 	fi | ||||
| 
 | ||||
| 	# Fork a process to fetch a suggestion and open a pipe to read from it | ||||
| 	builtin exec {_ZSH_AUTOSUGGEST_ASYNC_FD}< <( | ||||
| 	exec {_ZSH_AUTOSUGGEST_ASYNC_FD}< <( | ||||
| 		# Tell parent process our pid | ||||
| 		echo $sysparams[pid] | ||||
| 
 | ||||
| @ -68,10 +68,9 @@ _zsh_autosuggest_async_response() { | ||||
| 		zle autosuggest-suggest -- "$suggestion" | ||||
| 
 | ||||
| 		# Close the fd | ||||
| 		builtin exec {1}<&- | ||||
| 		exec {1}<&- | ||||
| 	fi | ||||
| 
 | ||||
| 	# Always remove the handler | ||||
| 	zle -F "$1" | ||||
| 	_ZSH_AUTOSUGGEST_ASYNC_FD= | ||||
| } | ||||
|  | ||||
| @ -28,8 +28,6 @@ typeset -g ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig- | ||||
| 		history-search-backward | ||||
| 		history-beginning-search-forward | ||||
| 		history-beginning-search-backward | ||||
| 		history-beginning-search-forward-end | ||||
| 		history-beginning-search-backward-end | ||||
| 		history-substring-search-up | ||||
| 		history-substring-search-down | ||||
| 		up-line-or-beginning-search | ||||
|  | ||||
| @ -30,7 +30,7 @@ _zsh_autosuggest_toggle() { | ||||
| # Clear the suggestion | ||||
| _zsh_autosuggest_clear() { | ||||
| 	# Remove the suggestion | ||||
| 	POSTDISPLAY= | ||||
| 	unset POSTDISPLAY | ||||
| 
 | ||||
| 	_zsh_autosuggest_invoke_original_widget $@ | ||||
| } | ||||
| @ -47,7 +47,7 @@ _zsh_autosuggest_modify() { | ||||
| 	local orig_postdisplay="$POSTDISPLAY" | ||||
| 
 | ||||
| 	# Clear suggestion while waiting for next one | ||||
| 	POSTDISPLAY= | ||||
| 	unset POSTDISPLAY | ||||
| 
 | ||||
| 	# Original widget may modify the buffer | ||||
| 	_zsh_autosuggest_invoke_original_widget $@ | ||||
| @ -102,7 +102,7 @@ _zsh_autosuggest_suggest() { | ||||
| 	if [[ -n "$suggestion" ]] && (( $#BUFFER )); then | ||||
| 		POSTDISPLAY="${suggestion#$BUFFER}" | ||||
| 	else | ||||
| 		POSTDISPLAY= | ||||
| 		unset POSTDISPLAY | ||||
| 	fi | ||||
| } | ||||
| 
 | ||||
| @ -128,7 +128,7 @@ _zsh_autosuggest_accept() { | ||||
| 	BUFFER="$BUFFER$POSTDISPLAY" | ||||
| 
 | ||||
| 	# Remove the suggestion | ||||
| 	POSTDISPLAY= | ||||
| 	unset POSTDISPLAY | ||||
| 
 | ||||
| 	# Run the original widget before manually moving the cursor so that the | ||||
| 	# cursor movement doesn't make the widget do something unexpected | ||||
| @ -151,7 +151,7 @@ _zsh_autosuggest_execute() { | ||||
| 	BUFFER="$BUFFER$POSTDISPLAY" | ||||
| 
 | ||||
| 	# Remove the suggestion | ||||
| 	POSTDISPLAY= | ||||
| 	unset POSTDISPLAY | ||||
| 
 | ||||
| 	# Call the original `accept-line` to handle syntax highlighting or | ||||
| 	# other potential custom behavior | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| # Fish-like fast/unobtrusive autosuggestions for zsh. | ||||
| # https://github.com/zsh-users/zsh-autosuggestions | ||||
| # v0.7.1 | ||||
| # v0.7.0 | ||||
| # Copyright (c) 2013 Thiago de Arruda | ||||
| # Copyright (c) 2016-2021 Eric Freese | ||||
| #  | ||||
| @ -54,8 +54,6 @@ typeset -g ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig- | ||||
| 		history-search-backward | ||||
| 		history-beginning-search-forward | ||||
| 		history-beginning-search-backward | ||||
| 		history-beginning-search-forward-end | ||||
| 		history-beginning-search-backward-end | ||||
| 		history-substring-search-up | ||||
| 		history-substring-search-down | ||||
| 		up-line-or-beginning-search | ||||
| @ -294,7 +292,7 @@ _zsh_autosuggest_toggle() { | ||||
| # Clear the suggestion | ||||
| _zsh_autosuggest_clear() { | ||||
| 	# Remove the suggestion | ||||
| 	POSTDISPLAY= | ||||
| 	unset POSTDISPLAY | ||||
| 
 | ||||
| 	_zsh_autosuggest_invoke_original_widget $@ | ||||
| } | ||||
| @ -311,7 +309,7 @@ _zsh_autosuggest_modify() { | ||||
| 	local orig_postdisplay="$POSTDISPLAY" | ||||
| 
 | ||||
| 	# Clear suggestion while waiting for next one | ||||
| 	POSTDISPLAY= | ||||
| 	unset POSTDISPLAY | ||||
| 
 | ||||
| 	# Original widget may modify the buffer | ||||
| 	_zsh_autosuggest_invoke_original_widget $@ | ||||
| @ -366,7 +364,7 @@ _zsh_autosuggest_suggest() { | ||||
| 	if [[ -n "$suggestion" ]] && (( $#BUFFER )); then | ||||
| 		POSTDISPLAY="${suggestion#$BUFFER}" | ||||
| 	else | ||||
| 		POSTDISPLAY= | ||||
| 		unset POSTDISPLAY | ||||
| 	fi | ||||
| } | ||||
| 
 | ||||
| @ -392,7 +390,7 @@ _zsh_autosuggest_accept() { | ||||
| 	BUFFER="$BUFFER$POSTDISPLAY" | ||||
| 
 | ||||
| 	# Remove the suggestion | ||||
| 	POSTDISPLAY= | ||||
| 	unset POSTDISPLAY | ||||
| 
 | ||||
| 	# Run the original widget before manually moving the cursor so that the | ||||
| 	# cursor movement doesn't make the widget do something unexpected | ||||
| @ -415,7 +413,7 @@ _zsh_autosuggest_execute() { | ||||
| 	BUFFER="$BUFFER$POSTDISPLAY" | ||||
| 
 | ||||
| 	# Remove the suggestion | ||||
| 	POSTDISPLAY= | ||||
| 	unset POSTDISPLAY | ||||
| 
 | ||||
| 	# Call the original `accept-line` to handle syntax highlighting or | ||||
| 	# other potential custom behavior | ||||
| @ -768,7 +766,7 @@ _zsh_autosuggest_async_request() { | ||||
| 	# If we've got a pending request, cancel it | ||||
| 	if [[ -n "$_ZSH_AUTOSUGGEST_ASYNC_FD" ]] && { true <&$_ZSH_AUTOSUGGEST_ASYNC_FD } 2>/dev/null; then | ||||
| 		# Close the file descriptor and remove the handler | ||||
| 		builtin exec {_ZSH_AUTOSUGGEST_ASYNC_FD}<&- | ||||
| 		exec {_ZSH_AUTOSUGGEST_ASYNC_FD}<&- | ||||
| 		zle -F $_ZSH_AUTOSUGGEST_ASYNC_FD | ||||
| 
 | ||||
| 		# We won't know the pid unless the user has zsh/system module installed | ||||
| @ -789,7 +787,7 @@ _zsh_autosuggest_async_request() { | ||||
| 	fi | ||||
| 
 | ||||
| 	# Fork a process to fetch a suggestion and open a pipe to read from it | ||||
| 	builtin exec {_ZSH_AUTOSUGGEST_ASYNC_FD}< <( | ||||
| 	exec {_ZSH_AUTOSUGGEST_ASYNC_FD}< <( | ||||
| 		# Tell parent process our pid | ||||
| 		echo $sysparams[pid] | ||||
| 
 | ||||
| @ -825,12 +823,11 @@ _zsh_autosuggest_async_response() { | ||||
| 		zle autosuggest-suggest -- "$suggestion" | ||||
| 
 | ||||
| 		# Close the fd | ||||
| 		builtin exec {1}<&- | ||||
| 		exec {1}<&- | ||||
| 	fi | ||||
| 
 | ||||
| 	# Always remove the handler | ||||
| 	zle -F "$1" | ||||
| 	_ZSH_AUTOSUGGEST_ASYNC_FD= | ||||
| } | ||||
| 
 | ||||
| #--------------------------------------------------------------------# | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user