Mercurial > vim
view runtime/doc/pi_logipat.txt @ 34485:157cf882799f v9.1.0150
patch 9.1.0150: Several minor 'winfixbuf' issues
Commit: https://github.com/vim/vim/commit/4bb505e28cac0389561fff78d8bbe0319c2bcf2f
Author: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Date: Tue Mar 5 20:39:07 2024 +0100
patch 9.1.0150: Several minor 'winfixbuf' issues
Problem: several minor 'winfixbuf' issues exist, mostly relating to the
quickfix list
Solution: address them and adjust tests. Retab and reflow a few things too.
(Sean Dewar)
Things touched include:
- Replace the semsgs with gettext'd emsgs.
- Handle window switching in ex_listdo properly, so curbuf and curwin
are kept in-sync and trigger autocommands; handle those properly.
- Don't change the list entry index in qf_jump_edit_buffer if we fail
due to 'wfb' (achieved by returning FAIL; QF_ABORT should only be used
if the list was changed).
- Make qf_jump_edit_buffer actually switch to prevwin when using `:cXX`
commands **outside** of the list window if 'wfb' is set in curwin.
Handle autocommands properly in case they mess with the list.
NOTE: previously, it seemed to split if 'wfb' was set, but do nothing
and fail if prevwin is *valid*. This behaviour seemed strange, and maybe
unintentional? Now it aligns more with what's described for the `:cXX`
commands in the original PR description when used outside a list window,
I think.
- In both functions, only consider prevwin if 'wfb' isn't set for it;
fallback to splitting otherwise.
- Use win_split to split. Not sure if there was a specific reason for
using ex_splitview. win_split is simpler and respects modifiers like
:vertical that may have been used. Plus, its return value can be checked
for setting opened_window in qf code (technically win_split_ins autocmds
could immediately close it or change windows, in which the qf code might
close some other window on failure; it's already the case elsewhere,
though).
closes: #14142
Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 05 Mar 2024 20:45:04 +0100 |
parents | 9b7f90e56753 |
children |
line wrap: on
line source
*pi_logipat.txt* Logical Patterns May 01, 2019 Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM> Copyright: (c) 2004-2016 by Charles E. Campbell *logiPat-copyright* The VIM LICENSE applies to LogiPat.vim and LogiPat.txt (see |copyright|) except use "LogiPat" instead of "Vim" No warranty, express or implied. Use At-Your-Own-Risk. ============================================================================== 1. Contents *logiPat* *logiPat-contents* 1. Contents.................: |logiPat-contents| 2. LogiPat Manual...........: |logiPat-manual| 3. LogiPat Examples.........: |logiPat-examples| 4. Caveat...................: |logiPat-caveat| 5. LogiPat History..........: |logiPat-history| ============================================================================== 2. LogiPat Manual *logiPat-manual* *logiPat-man* *logiPat-arg* *logiPat-input* *logiPat-pattern* *logiPat-operators* Boolean logic patterns are composed of operators ! = not | = logical-or & = logical-and grouping ( ... ) patterns "pattern" *logiPat-cmd* :LogiPat {boolean-logic pattern} *:LogiPat* :LogiPat is a command which takes a boolean-logic argument (|logiPat-arg|). :LP {boolean-logic pattern} *:LP* :LP is a shorthand command version of :LogiPat (|logiPat-cmd|). :LPE {boolean-logic pattern} *:LPE* No search is done, but the conversion from the boolean logic pattern to the regular expression is performed and echoed onto the display. :LogiPatFlags {search flags} *LogiPat-flags* LogiPat uses the |search()| command. The flags passed to that call to search() may be specified by the :LogiPatFlags command. :LPF {search flags} *:LPF* :LPF is a shorthand version of :LogiPatFlags. :let pat=LogiPat({boolean-logic pattern}) *LogiPat()* If one calls LogiPat() directly, no search is done, but the transformation from the boolean logic pattern into a regular expression pattern is performed and returned. To get a " inside a pattern, as opposed to having it delimit the pattern, double it. ============================================================================== 3. LogiPat Examples *logiPat-examples* LogiPat takes Boolean logic arguments and produces a regular expression which implements the choices. A series of examples follows: > :LogiPat "abc" < will search for lines containing the string :abc: > :LogiPat "ab""cd" < will search for lines containing the string :ab"cd: > :LogiPat !"abc" < will search for lines which don't contain the string :abc: > :LogiPat "abc"|"def" < will search for lines which contain either the string :abc: or the string :def: > :LogiPat !("abc"|"def") < will search for lines which don't contain either of the strings :abc: or :def: > :LogiPat "abc"&"def" < will search for lines which contain both of the strings :abc: and :def: > :let pat= LogiPat('!"abc"') < will return the regular expression which will match all lines not containing :abc: . The double quotes are needed to pass normal patterns to LogiPat, and differentiate such patterns from boolean logic operators. ============================================================================== 4. Caveat *logiPat-caveat* The "not" operator may be fragile; ie. it may not always play well with the & (logical-and) and | (logical-or) operators. Please try out your patterns, possibly with :set hls, to insure that what is matching is what you want. ============================================================================== 5. LogiPat History *logiPat-history* v4 Jun 22, 2015 * LogiPat has been picked up by Bram M for standard plugin distribution; hence the name change v3 Sep 25, 2006 * LP_Or() fixed; it now encapsulates its output in \%(...\) parentheses Dec 12, 2011 * |:LPE| added * "" is mapped to a single " and left inside patterns v2 May 31, 2005 * LPF and LogiPatFlags commands weren't working v1 May 23, 2005 * initial release ============================================================================== vim:tw=78:ts=8:noet:ft=help