Mercurial > vim
view runtime/indent/nginx.vim @ 32782:abf161ce0c77 v9.0.1707
patch 9.0.1707: Cannot wrap around in popup_filter_menu()
Commit: https://github.com/vim/vim/commit/badeedd913d9d6456ad8087911d024fd36800743
Author: Christian Brabandt <cb@256bit.org>
Date: Sun Aug 13 19:25:28 2023 +0200
patch 9.0.1707: Cannot wrap around in popup_filter_menu()
Problem: Cannot wrap around in popup_filter_menu()
Solution: Allow to wrap around by default
Currently, it is not possible, to wrap around at the end of the list
using e.g. down (and go back to the top) or up at the beginning of the
list and go directly to the last item. This is not consistent behaviour
with e.g. how the pum-menu currently works, so let's just allow this.
Also adjust tests about it.
closes: #12689
closes: #12693
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 13 Aug 2023 19:30:04 +0200 |
parents | 7d68a90cbf5c |
children |
line wrap: on
line source
" Vim indent file " Language: nginx.conf " Maintainer: Chris Aumann <me@chr4.org> " Last Change: 2022 Dec 01 " Only load this indent file when no other was loaded. if exists('b:did_indent') finish endif let b:did_indent = 1 setlocal indentexpr=GetNginxIndent() setlocal indentkeys=0{,0},0#,!^F,o,O let b:undo_indent = 'setl inde< indk<' " Only define the function once. if exists('*GetNginxIndent') finish endif function GetNginxIndent() abort let plnum = s:PrevNotAsBlank(v:lnum - 1) " Hit the start of the file, use zero indent. if plnum == 0 return 0 endif let ind = indent(plnum) " Add a 'shiftwidth' after '{' if s:AsEndWith(getline(plnum), '{') let ind = ind + shiftwidth() end " Subtract a 'shiftwidth' on '}' " This is the part that requires 'indentkeys'. if getline(v:lnum) =~ '^\s*}' let ind = ind - shiftwidth() endif let pplnum = s:PrevNotAsBlank(plnum - 1) if s:IsLineContinuation(plnum) if !s:IsLineContinuation(pplnum) let ind = ind + shiftwidth() end else if s:IsLineContinuation(pplnum) let ind = ind - shiftwidth() end endif return ind endfunction " Find the first line at or above {lnum} that is non-blank and not a comment. function s:PrevNotAsBlank(lnum) abort let lnum = prevnonblank(a:lnum) while lnum > 0 if getline(lnum) !~ '^\s*#' break endif let lnum = prevnonblank(lnum - 1) endwhile return lnum endfunction " Check whether {line} ends with {pat}, ignoring trailing comments. function s:AsEndWith(line, pat) abort return a:line =~ a:pat . '\m\s*\%(#.*\)\?$' endfunction function s:IsLineContinuation(lnum) abort return a:lnum > 0 && !s:AsEndWith(getline(a:lnum), '[;{}]') endfunction