*logipat.txt* Logical Patterns Aug 09, 2005 Author: Charles E. Campbell, Jr. Copyright: (c) 2004-2005 by Charles E. Campbell, Jr. *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* 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 {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|). :LogiPatFlags {search flags} *LogiPat-flags* :LogiPatFlags {search 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. ============================================================================== 3. LogiPat Examples *logipat-examples* LogiPat takes Boolean logic arguments and produces a regular expression which implements the choices. A series of examples follow: > :LogiPat "abc" < will search for lines containing the string "abc" > :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. ============================================================================== 3. LogiPat History *logipat-history* v2 May 31, 2005 * LPF and LogiPatFlags commands weren't working v1 May 23, 2005 * initial release ============================================================================== vim:tw=78:ts=8:ft=help