summaryrefslogtreecommitdiff
path: root/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern
diff options
context:
space:
mode:
authorjustsaumit <justsaumit@draconyan.xyz>2022-03-02 11:23:45 +0530
committerjustsaumit <justsaumit@draconyan.xyz>2022-03-02 11:23:45 +0530
commita754011fc58e83f38cadc5bc10492ab961c9c540 (patch)
treed7c3cd6fd254fb7e52759f77e44193bf103de177 /.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern
parent98bbe7bd7fcec209e2408ff0b086858715ca89e0 (diff)
spring cleaning 0.1
Diffstat (limited to '.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern')
l---------.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/README.md1
-rw-r--r--.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/pattern-highlighter.zsh60
-rw-r--r--.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/test-data/rm-rf.zsh36
3 files changed, 97 insertions, 0 deletions
diff --git a/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/README.md b/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/README.md
new file mode 120000
index 0000000..5ff00e6
--- /dev/null
+++ b/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/README.md
@@ -0,0 +1 @@
+../../docs/highlighters/pattern.md \ No newline at end of file
diff --git a/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/pattern-highlighter.zsh b/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/pattern-highlighter.zsh
new file mode 100644
index 0000000..e0422d0
--- /dev/null
+++ b/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/pattern-highlighter.zsh
@@ -0,0 +1,60 @@
+# -------------------------------------------------------------------------------------------------
+# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification, are permitted
+# provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this list of conditions
+# and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice, this list of
+# conditions and the following disclaimer in the documentation and/or other materials provided
+# with the distribution.
+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors
+# may be used to endorse or promote products derived from this software without specific prior
+# written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# -------------------------------------------------------------------------------------------------
+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-
+# vim: ft=zsh sw=2 ts=2 et
+# -------------------------------------------------------------------------------------------------
+
+
+# List of keyword and color pairs.
+typeset -gA ZSH_HIGHLIGHT_PATTERNS
+
+# Whether the pattern highlighter should be called or not.
+_zsh_highlight_highlighter_pattern_predicate()
+{
+ _zsh_highlight_buffer_modified
+}
+
+# Pattern syntax highlighting function.
+_zsh_highlight_highlighter_pattern_paint()
+{
+ setopt localoptions extendedglob
+ local pattern
+ for pattern in ${(k)ZSH_HIGHLIGHT_PATTERNS}; do
+ _zsh_highlight_pattern_highlighter_loop "$BUFFER" "$pattern"
+ done
+}
+
+_zsh_highlight_pattern_highlighter_loop()
+{
+ # This does *not* do its job syntactically, sorry.
+ local buf="$1" pat="$2"
+ local -a match mbegin mend
+ local MATCH; integer MBEGIN MEND
+ if [[ "$buf" == (#b)(*)(${~pat})* ]]; then
+ region_highlight+=("$((mbegin[2] - 1)) $mend[2] $ZSH_HIGHLIGHT_PATTERNS[$pat], memo=zsh-syntax-highlighting")
+ "$0" "$match[1]" "$pat"; return $?
+ fi
+}
diff --git a/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/test-data/rm-rf.zsh b/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/test-data/rm-rf.zsh
new file mode 100644
index 0000000..2f76929
--- /dev/null
+++ b/.config/zsh/plugins/zsh-syntax-highlighting/highlighters/pattern/test-data/rm-rf.zsh
@@ -0,0 +1,36 @@
+# -------------------------------------------------------------------------------------------------
+# Copyright (c) 2016 zsh-syntax-highlighting contributors
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification, are permitted
+# provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this list of conditions
+# and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice, this list of
+# conditions and the following disclaimer in the documentation and/or other materials provided
+# with the distribution.
+# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors
+# may be used to endorse or promote products derived from this software without specific prior
+# written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# -------------------------------------------------------------------------------------------------
+# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-
+# vim: ft=zsh sw=2 ts=2 et
+# -------------------------------------------------------------------------------------------------
+
+ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')
+
+BUFFER='rm -rf /'
+
+expected_region_highlight=(
+ "1 8 fg=white,bold,bg=red" # rm -rf /
+)