blob: e72fabe889c80487309c647d6435045ffc886d07 [file] [log] [blame]
Bram Moolenaar8024f932020-01-14 19:29:13 +01001*pi_logipat.txt* Logical Patterns May 01, 2019
Bram Moolenaare2db6c92015-06-19 18:48:41 +02002
Bram Moolenaar29634562020-01-09 21:46:04 +01003Author: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
4Copyright: (c) 2004-2016 by Charles E. Campbell *logiPat-copyright*
Bram Moolenaare2db6c92015-06-19 18:48:41 +02005 The VIM LICENSE applies to LogiPat.vim and LogiPat.txt
6 (see |copyright|) except use "LogiPat" instead of "Vim"
7 No warranty, express or implied. Use At-Your-Own-Risk.
8
9==============================================================================
Bram Moolenaar03413f42016-04-12 21:07:15 +0200101. Contents *logiPat* *logiPat-contents*
Bram Moolenaare2db6c92015-06-19 18:48:41 +020011
Bram Moolenaar03413f42016-04-12 21:07:15 +020012 1. Contents.................: |logiPat-contents|
13 2. LogiPat Manual...........: |logiPat-manual|
14 3. LogiPat Examples.........: |logiPat-examples|
15 4. Caveat...................: |logiPat-caveat|
16 5. LogiPat History..........: |logiPat-history|
17
Bram Moolenaare2db6c92015-06-19 18:48:41 +020018
19==============================================================================
Bram Moolenaar03413f42016-04-12 21:07:15 +0200202. LogiPat Manual *logiPat-manual* *logiPat-man*
Bram Moolenaare2db6c92015-06-19 18:48:41 +020021
Bram Moolenaar03413f42016-04-12 21:07:15 +020022 *logiPat-arg* *logiPat-input* *logiPat-pattern* *logiPat-operators*
Bram Moolenaare2db6c92015-06-19 18:48:41 +020023 Boolean logic patterns are composed of
24
25 operators ! = not
26 | = logical-or
27 & = logical-and
28 grouping ( ... )
29 patterns "pattern"
30
Bram Moolenaar29634562020-01-09 21:46:04 +010031 *logiPat-cmd*
Bram Moolenaare2db6c92015-06-19 18:48:41 +020032 :LogiPat {boolean-logic pattern} *:LogiPat*
33 :LogiPat is a command which takes a boolean-logic
Bram Moolenaar03413f42016-04-12 21:07:15 +020034 argument (|logiPat-arg|).
Bram Moolenaare2db6c92015-06-19 18:48:41 +020035
36 :LP {boolean-logic pattern} *:LP*
37 :LP is a shorthand command version of :LogiPat
Bram Moolenaar29634562020-01-09 21:46:04 +010038 (|logiPat-cmd|).
Bram Moolenaare2db6c92015-06-19 18:48:41 +020039
Bram Moolenaar03413f42016-04-12 21:07:15 +020040 :LPE {boolean-logic pattern} *:LPE*
Bram Moolenaare2db6c92015-06-19 18:48:41 +020041 No search is done, but the conversion from the
42 boolean logic pattern to the regular expression
43 is performed and echoed onto the display.
44
45 :LogiPatFlags {search flags} *LogiPat-flags*
Bram Moolenaare2db6c92015-06-19 18:48:41 +020046 LogiPat uses the |search()| command. The flags
47 passed to that call to search() may be specified
48 by the :LogiPatFlags command.
49
50 :LPF {search flags} *:LPF*
51 :LPF is a shorthand version of :LogiPatFlags.
52
53 :let pat=LogiPat({boolean-logic pattern}) *LogiPat()*
54 If one calls LogiPat() directly, no search
55 is done, but the transformation from the boolean
56 logic pattern into a regular expression pattern
57 is performed and returned.
58
59 To get a " inside a pattern, as opposed to having it delimit
60 the pattern, double it.
61
Bram Moolenaar03413f42016-04-12 21:07:15 +020062
Bram Moolenaare2db6c92015-06-19 18:48:41 +020063==============================================================================
Bram Moolenaar03413f42016-04-12 21:07:15 +0200643. LogiPat Examples *logiPat-examples*
Bram Moolenaare2db6c92015-06-19 18:48:41 +020065
66 LogiPat takes Boolean logic arguments and produces a regular
67 expression which implements the choices. A series of examples
68 follows:
69>
70 :LogiPat "abc"
71< will search for lines containing the string :abc:
72>
73 :LogiPat "ab""cd"
Bram Moolenaar29634562020-01-09 21:46:04 +010074< will search for lines containing the string :ab"cd:
Bram Moolenaare2db6c92015-06-19 18:48:41 +020075>
76 :LogiPat !"abc"
77< will search for lines which don't contain the string :abc:
78>
79 :LogiPat "abc"|"def"
80< will search for lines which contain either the string
81 :abc: or the string :def:
82>
83 :LogiPat !("abc"|"def")
84< will search for lines which don't contain either
85 of the strings :abc: or :def:
86>
87 :LogiPat "abc"&"def"
88< will search for lines which contain both of the strings
89 :abc: and :def:
90>
91 :let pat= LogiPat('!"abc"')
92< will return the regular expression which will match
93 all lines not containing :abc: . The double quotes
94 are needed to pass normal patterns to LogiPat, and
95 differentiate such patterns from boolean logic
96 operators.
97
98
99==============================================================================
Bram Moolenaar03413f42016-04-12 21:07:15 +02001004. Caveat *logiPat-caveat*
Bram Moolenaare2db6c92015-06-19 18:48:41 +0200101
102 The "not" operator may be fragile; ie. it may not always play well
103 with the & (logical-and) and | (logical-or) operators. Please try out
104 your patterns, possibly with :set hls, to insure that what is matching
105 is what you want.
106
Bram Moolenaare2db6c92015-06-19 18:48:41 +0200107
Bram Moolenaar03413f42016-04-12 21:07:15 +0200108==============================================================================
Bram Moolenaar2ed639a2019-12-09 23:11:18 +01001095. LogiPat History *logiPat-history*
Bram Moolenaar03413f42016-04-12 21:07:15 +0200110
111 v4 Jun 22, 2015 * LogiPat has been picked up by Bram M for standard
112 plugin distribution; hence the name change
Bram Moolenaare2db6c92015-06-19 18:48:41 +0200113 v3 Sep 25, 2006 * LP_Or() fixed; it now encapsulates its output
114 in \%(...\) parentheses
Bram Moolenaar03413f42016-04-12 21:07:15 +0200115 Dec 12, 2011 * |:LPE| added
Bram Moolenaare2db6c92015-06-19 18:48:41 +0200116 * "" is mapped to a single " and left inside patterns
117 v2 May 31, 2005 * LPF and LogiPatFlags commands weren't working
118 v1 May 23, 2005 * initial release
119
Bram Moolenaar03413f42016-04-12 21:07:15 +0200120
Bram Moolenaare2db6c92015-06-19 18:48:41 +0200121==============================================================================
Bram Moolenaar8024f932020-01-14 19:29:13 +0100122vim:tw=78:ts=8:noet:ft=help