Skip to content

Instantly share code, notes, and snippets.

@VosaXalo
Created November 17, 2014 16:18
Show Gist options
  • Save VosaXalo/1f811a567b180e9eeacd to your computer and use it in GitHub Desktop.
Save VosaXalo/1f811a567b180e9eeacd to your computer and use it in GitHub Desktop.
<?xml version="1.0" encoding="UTF-8"?>
<!--
File based about the file "sh.lang" present in GtkSourceView
Author: Nicola Jelmorini <jelmorini@protonmail.ch>
Copyright (C) 2014 Nicola Jelmorini <jelmorini@protonmail.ch>
This file is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
You should have received a copy of the GNU Lesser General Public
License along with this file; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
or visit this link <http://www.gnu.org/licenses/>.
-->
<language id="fish" _name="Fish" version="2.0" _section="Scripts">
<metadata>
<!-- <property name="mimetypes">text/x-fish</property> -->
<property name="mimetypes">text/x-shellscript;application/x-shellscript;text/x-fish</property>
<property name="globs">*.fish</property>
<property name="line-comment-start">#</property>
</metadata>
<styles>
<style id="comment" _name="Comment" map-to="def:comment"/>
<style id="function" _name="Function" map-to="def:function"/>
<style id="string" _name="String" map-to="def:string"/>
<style id="keyword" _name="Keyword" map-to="def:keyword"/>
<style id="variable" _name="Variable" map-to="def:type"/>
<style id="variable-definition" _name="Variable Definition" map-to="sh:variable"/>
<style id="variable-definition" _name="Variable Definition" map-to="fish:variable"/>
<style id="others" _name="Others" map-to="def:keyword"/>
<style id="common-command" _name="Common Commands" map-to="def:keyword"/>
<style id="here-doc-bound" _name="Heredoc Bound" map-to="def:keyword"/>
<style id="subshell" _name="Subshell" map-to="def:preprocessor"/>
</styles>
<definitions>
<context id="line-comment" style-ref="comment" end-at-line-end="true" class="comment" class-disabled="no-spell-check">
<start>(?&lt;!\S)#</start>
<include>
<context ref="def:in-comment"/>
</include>
</context>
<context id="double-quoted-string" style-ref="string" class="string" class-disabled="no-spell-check">
<start>"</start>
<end>"</end>
<include>
<!-- highlight escaped chars -->
<context style-ref="def:special-char">
<match>\\[$`"\\]</match>
</context>
<!-- skip backslash where it's not an escaping char -->
<context>
<match>\\</match>
</context>
<context ref="def:line-continue"/>
<context ref="variable"/>
</include>
</context>
<context id="single-quoted-string" style-ref="string" class="string" class-disabled="no-spell-check">
<start>'</start>
<end>'</end>
</context>
<context id="subshell">
<start>\(</start>
<end>\)</end>
<include>
<context sub-pattern="0" where="start" style-ref="keyword"/>
<context sub-pattern="0" where="end" style-ref="keyword"/>
<context ref="fish"/>
</include>
</context>
<context id="punctuator" style-ref="others">
<match>[;\|&amp;/]</match>
</context>
<context id="function" style-ref="function">
<!-- <match>function[ \t]\b[a-zA-Z_][a-zA-Z0-9_]*</match> function and name coloured -->
<match>function\b[a-zA-Z_][a-zA-Z0-9_]*</match>
</context>
<context id="redirection" style-ref="others">
<keyword>&gt;&amp;+[0-9]</keyword>
<keyword>\b[0-9]+&gt;&amp;</keyword>
<keyword>\b[0-9]+&gt;&amp;+[0-9]</keyword>
<keyword>\b[0-9]+&gt;</keyword>
<keyword>&gt;&gt;</keyword>
<keyword>\b[0-9]+&gt;&gt;</keyword>
<keyword>&lt;&amp;[0-9]</keyword>
<keyword>\b[0-9]+&lt;&amp;</keyword>
<keyword>\b[0-9]+&lt;&amp;[0-9]</keyword>
<keyword>\b[0-9]+&lt;</keyword>
<keyword>&lt;&lt;+[0-9]</keyword>
<keyword>\b[0-9]+&lt;&lt;</keyword>
</context>
<context id="here-doc">
<start extended="true" dupnames="true">
# (?&lt;!&lt;) and [^\s&lt;] are for not matching
# here-word (&lt;&lt;&lt;)
(?&lt;!&lt;)
&lt;&lt;-?\s*\\?(
\"(?P&lt;HDB&gt;[^\s&lt;]+)\" | # "EOF"
\'(?P&lt;HDB&gt;[^\s&lt;]+)\' | # 'EOF'
(?P&lt;HDB&gt;[^\s&lt;]+) # EOF
)$
</start>
<end>^\t*\%{HDB@start}$</end>
<include>
<context sub-pattern="0" where="start" style-ref="here-doc-bound"/>
<context sub-pattern="0" where="end" style-ref="here-doc-bound"/>
</include>
</context>
<context id="operator" style-ref="function">
<keyword>\-a\b</keyword>
<keyword>\-b\b</keyword>
<keyword>\-c\b</keyword>
<keyword>\-d\b</keyword>
<keyword>\-e\b</keyword>
<keyword>\-f\b</keyword>
<keyword>\-g\b</keyword>
<keyword>\-h\b</keyword>
<keyword>\-k\b</keyword>
<keyword>\-p\b</keyword>
<keyword>\-r\b</keyword>
<keyword>\-s\b</keyword>
<keyword>\-t\b</keyword>
<keyword>\-u\b</keyword>
<keyword>\-w\b</keyword>
<keyword>\-x\b</keyword>
<keyword>\-O\b</keyword>
<keyword>\-G\b</keyword>
<keyword>\-L\b</keyword>
<keyword>\-S\b</keyword>
<keyword>\-N\b</keyword>
<keyword>\-nt\b</keyword>
<keyword>\-ot\b</keyword>
<keyword>\-ef\b</keyword>
<keyword>\-o\b</keyword>
<keyword>\-z\b</keyword>
<keyword>\-n\b</keyword>
<keyword>&lt;</keyword>
<keyword>&gt;</keyword>
<keyword>\!=</keyword>
<keyword>\-eq\b</keyword>
<keyword>\-ne\b</keyword>
<keyword>\-lt\b</keyword>
<keyword>\-le\b</keyword>
<keyword>\-gt\b</keyword>
<keyword>\-ge\b</keyword>
</context>
<context id="variable" style-ref="variable">
<match>\$+[!@?*#\${a-zA-Z0-9_][}a-zA-Z0-9_]*</match>
</context>
<context id="variable-definition">
<match>(^\s*|(?&lt;=else)\s+)([a-zA-Z_][a-zA-Z0-9_]*)\=</match>
<include>
<context sub-pattern="2" style-ref="variable-definition"/>
</include>
</context>
<context id="built-in-command-1" style-ref="keyword">
<prefix></prefix>
<suffix></suffix>
<keyword>\!</keyword>
<keyword>\{</keyword>
<keyword>\}</keyword>
<keyword>\:</keyword>
<keyword>(?&lt;=\s)\.(?=\s)</keyword>
</context>
<context id="for-command">
<start>\bfor\b</start>
<end>\b(in)\b</end>
<include>
<context sub-pattern="0" where="start" style-ref="keyword"/>
<context sub-pattern="0" where="end" style-ref="keyword"/>
<context style-ref="variable-definition" once-only="true">
<match>\w+</match>
</context>
</include>
</context>
<context id="built-in-command-2" style-ref="keyword">
<prefix>(?&lt;![^\s;\(\)\`])</prefix>
<suffix>(?![^\s;\(\)\`])</suffix>
<keyword>alias</keyword>
<keyword>and</keyword>
<keyword>begin</keyword>
<keyword>bg</keyword>
<keyword>bind</keyword>
<keyword>block</keyword>
<keyword>break</keyword>
<keyword>breakpoint</keyword>
<keyword>builtin</keyword>
<keyword>case</keyword>
<keyword>cd</keyword>
<keyword>command</keyword>
<keyword>commandline</keyword>
<keyword>complete</keyword>
<keyword>contains</keyword>
<keyword>continue</keyword>
<keyword>count</keyword>
<keyword>dirh</keyword>
<keyword>dirs</keyword>
<keyword>echo</keyword>
<keyword>else</keyword>
<keyword>emit</keyword>
<keyword>end</keyword>
<keyword>eval</keyword>
<keyword>exec</keyword>
<keyword>exit</keyword>
<keyword>fg</keyword>
<keyword>fish</keyword>
<keyword>fish_config</keyword>
<keyword>fish_indent</keyword>
<keyword>fish_pager</keyword>
<keyword>fish_prompt</keyword>
<keyword>fish_right_prompt</keyword>
<keyword>fish_update_completions</keyword>
<keyword>fishd</keyword>
<keyword>for</keyword>
<keyword>funced</keyword>
<keyword>funcsave</keyword>
<keyword>function</keyword>
<keyword>functions</keyword>
<keyword>help</keyword>
<keyword>history</keyword>
<keyword>if</keyword>
<keyword>isatty</keyword>
<keyword>jobs</keyword>
<keyword>math</keyword>
<keyword>mimedb</keyword>
<keyword>nextd</keyword>
<keyword>not</keyword>
<keyword>open</keyword>
<keyword>or</keyword>
<keyword>popd</keyword>
<keyword>prevd</keyword>
<keyword>psub</keyword>
<keyword>pushd</keyword>
<keyword>pwd</keyword>
<keyword>random</keyword>
<keyword>read</keyword>
<keyword>return</keyword>
<keyword>set</keyword>
<keyword>set_color</keyword>
<keyword>source</keyword>
<keyword>status</keyword>
<keyword>switch</keyword>
<keyword>test</keyword>
<keyword>trap</keyword>
<keyword>type</keyword>
<keyword>ulimit</keyword>
<keyword>umask</keyword>
<keyword>vared</keyword>
<keyword>while</keyword>
</context>
<context id="built-in-command">
<include>
<context ref="built-in-command-1"/>
<context ref="for-command"/>
<context ref="built-in-command-2"/>
</include>
</context>
<context id="common-command" style-ref="common-command">
<prefix>(?&lt;![\w\-\.])</prefix>
<suffix>(?![\w\-\.])</suffix>
<keyword>ar</keyword>
<keyword>awk</keyword>
<keyword>basename</keyword>
<keyword>bash</keyword>
<keyword>beep</keyword>
<keyword>bunzip2</keyword>
<keyword>bzcat</keyword>
<keyword>bzcmp</keyword>
<keyword>bzdiff</keyword>
<keyword>bzegrep</keyword>
<keyword>bzfgrep</keyword>
<keyword>bzgrep</keyword>
<keyword>bzip2recover</keyword>
<keyword>bzip2</keyword>
<keyword>bzless</keyword>
<keyword>bzmore</keyword>
<keyword>cc</keyword>
<keyword>cat</keyword>
<keyword>chattr</keyword>
<keyword>chgrp</keyword>
<keyword>chmod</keyword>
<keyword>chown</keyword>
<keyword>chroot</keyword>
<keyword>clear</keyword>
<keyword>cmp</keyword>
<keyword>cpp</keyword>
<keyword>cp</keyword>
<keyword>cut</keyword>
<keyword>date</keyword>
<keyword>dd</keyword>
<keyword>df</keyword>
<keyword>dialog</keyword>
<keyword>diff3</keyword>
<keyword>diff</keyword>
<keyword>dirname</keyword>
<keyword>dir</keyword>
<keyword>du</keyword>
<keyword>egrep</keyword>
<keyword>eject</keyword>
<keyword>env</keyword>
<keyword>expr</keyword>
<keyword>false</keyword>
<keyword>fgrep</keyword>
<keyword>file</keyword>
<keyword>find</keyword>
<keyword>fish</keyword>
<keyword>fmt</keyword>
<keyword>free</keyword>
<keyword>ftp</keyword>
<keyword>funzip</keyword>
<keyword>fuser</keyword>
<keyword>gawk</keyword>
<keyword>gcc</keyword>
<keyword>getent</keyword>
<keyword>getopt</keyword>
<keyword>grep</keyword>
<keyword>groups</keyword>
<keyword>gunzip</keyword>
<keyword>gzip</keyword>
<keyword>head</keyword>
<keyword>hostname</keyword>
<keyword>id</keyword>
<keyword>ifconfig</keyword>
<keyword>info</keyword>
<keyword>insmod</keyword>
<keyword>install</keyword>
<keyword>join</keyword>
<keyword>killall</keyword>
<keyword>kill</keyword>
<keyword>lastb</keyword>
<keyword>last</keyword>
<keyword>ld</keyword>
<keyword>less</keyword>
<keyword>ln</keyword>
<keyword>locate</keyword>
<keyword>lockfile</keyword>
<keyword>login</keyword>
<keyword>logname</keyword>
<keyword>lp</keyword>
<keyword>lpr</keyword>
<keyword>lsattr</keyword>
<keyword>ls</keyword>
<keyword>lsmod</keyword>
<keyword>make</keyword>
<keyword>man</keyword>
<keyword>mkdir</keyword>
<keyword>mkfifo</keyword>
<keyword>mknod</keyword>
<keyword>mktemp</keyword>
<keyword>modprobe</keyword>
<keyword>more</keyword>
<keyword>mount</keyword>
<keyword>mv</keyword>
<keyword>namei</keyword>
<keyword>nawk</keyword>
<keyword>nice</keyword>
<keyword>nl</keyword>
<keyword>pass</keyword>
<keyword>passwd</keyword>
<keyword>patch</keyword>
<keyword>perl</keyword>
<keyword>pgawk</keyword>
<keyword>pidof</keyword>
<keyword>ping</keyword>
<keyword>pkg-config</keyword>
<keyword>pr</keyword>
<keyword>ps</keyword>
<keyword>pwd</keyword>
<keyword>readlink</keyword>
<keyword>renice</keyword>
<keyword>rmdir</keyword>
<keyword>rm</keyword>
<keyword>scp</keyword>
<keyword>sed</keyword>
<keyword>seq</keyword>
<keyword>sh</keyword>
<keyword>sleep</keyword>
<keyword>sort</keyword>
<keyword>split</keyword>
<keyword>ssh-add</keyword>
<keyword>ssh-agent</keyword>
<keyword>ssh-keygen</keyword>
<keyword>ssh-keyscan</keyword>
<keyword>ssh</keyword>
<keyword>stat</keyword>
<keyword>sudo</keyword>
<keyword>sum</keyword>
<keyword>su</keyword>
<keyword>sync</keyword>
<keyword>tac</keyword>
<keyword>tail</keyword>
<keyword>tar</keyword>
<keyword>tee</keyword>
<keyword>tempfile</keyword>
<keyword>touch</keyword>
<keyword>true</keyword>
<keyword>tr</keyword>
<keyword>umount</keyword>
<keyword>uname</keyword>
<keyword>uniq</keyword>
<keyword>unlink</keyword>
<keyword>unzip</keyword>
<keyword>uptime</keyword>
<keyword>wall</keyword>
<keyword>wc</keyword>
<keyword>wget</keyword>
<keyword>whereis</keyword>
<keyword>which</keyword>
<keyword>whoami</keyword>
<keyword>who</keyword>
<keyword>write</keyword>
<keyword>w</keyword>
<keyword>xargs</keyword>
<keyword>xdialog</keyword>
<keyword>zcat</keyword>
<keyword>zcmp</keyword>
<keyword>zdiff</keyword>
<keyword>zegrep</keyword>
<keyword>zenity</keyword>
<keyword>zfgrep</keyword>
<keyword>zforce</keyword>
<keyword>zgrep</keyword>
<keyword>zip</keyword>
<keyword>zless</keyword>
<keyword>zmore</keyword>
<keyword>znew</keyword>
</context>
<context id="case">
<start>\bcase\b</start>
<end>\bend\b</end>
<include>
<context sub-pattern="0" where="start" style-ref="keyword"/>
<context sub-pattern="0" where="end" style-ref="keyword"/>
<context ref="double-quoted-string"/>
<context ref="single-quoted-string"/>
<context style-ref="others">
<match>[^\)\s]+\s*\)|;;</match>
</context>
<context ref="fish"/>
</include>
</context>
<context id="fish" class="no-spell-check">
<include>
<context ref="def:shebang"/>
<context ref="line-comment"/>
<context ref="def:escape"/>
<context ref="single-quoted-string"/>
<context ref="double-quoted-string"/>
<context ref="subshell"/>
<context ref="case"/>
<context ref="punctuator"/>
<context ref="function"/>
<context ref="here-doc"/>
<context ref="redirection"/>
<context ref="operator"/>
<context ref="variable"/>
<context ref="variable-definition"/>
<context ref="built-in-command"/>
<context ref="common-command"/>
</include>
</context>
</definitions>
</language>
## Syntax highlighting for Fish shell scripts
##
## File based about the file "sh.nanorc"
## Author: Nicola Jelmorini <jelmorini@protonmail.ch>
## Copyright (C) 2014 Nicola Jelmorini <jelmorini@protonmail.ch>
##
## This file is free software; you can redistribute it and/or
## modify it under the terms of the GNU Lesser General Public
## License as published by the Free Software Foundation; either
## version 2.1 of the License, or (at your option) any later version.
##
## You should have received a copy of the GNU Lesser General Public
## License along with this file; if not, write to the Free Software
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
## or visit this link <http://www.gnu.org/licenses/>.
##
## available colors: (bright) white, black, red, blue, green, yellow, magenta, cyan
##
syntax "fish" "\.fish$"
header "^#!.*/(ba|k|pdk)?fish[-0-9_]*"
icolor brightgreen "^[0-9A-Z_]+\(\)"
color brightblue "\<(begin|case|else|end|for|function|if|return|switch|test|while)\>"
color blue "\<(alias|and|bg|bind|block|break|breakpoint|builtin|cd|command|commandline|complete|contains|continue|count|dirh|dirs|echo|emit|eval|exec|exit|false|fg|fish|fish_config|fish_indent|fish_pager|fish_prompt|fish_right_prompt|fish_update_completions|fishd|funced|funcsave|functions|help|history|isatty|jobs|math|mimedb|nextd|not|open|or|popd|prevd|psub|pushd|pwd|random|read|set|set_color|source|status|trap|true|type|ulimit|umask|vared)\>"
color green "(\{|\}|\(|\)|\;|\]|\[|`|\\|\$|<|>|!|=|&|\|)"
color green "-[Ldefgruwx]\>"
color green "-(eq|ne|gt|lt|ge|le|s|n|z)\>"
color brightgreen "\<(apt-get|ar|awk|basename|bash|beep|bunzip2|bzcat|bzcmp|bzdiff|bzegrep|bzfgrep|bzgrep|bzip2recover|bzip2|bzless|bzmore|cc|cat|chattr|chgrp|chmod|chown|chroot|clear|cmp|cpp|cp|cut|date|dd|df|dialog|diff3|diff|dirname|dir|dpkg|du|egrep|eject|env|expr|fgrep|file|find|fish|fmt|free|ftp|funzip|fuser|gawk|gcc|getent|getopt|grep|groups|gunzip|gzip|head|hostname|id|ifconfig|info|insmod|install|join|killall|kill|lastb|last|ld|less|ln|locate|lockfile|login|logname|lp|lpr|lsattr|ls|lsmod|make|man|mkdir|mkfifo|mknod|mktemp|modprobe|more|mount|mv|namei|nawk|nice|nl|pass|passwd|patch|perl|pgawk|pidof|ping|pkg-config|pr|ps|pwd|readlink|renice|rmdir|rm|scp|sed|seq|sh|sleep|sort|split|ssh-add|ssh-agent|ssh-keygen|ssh-keyscan|ssh|stat|sudo|sum|su|sync|tac|tail|tar|tee|tempfile|touch|tr|umount|uname|uniq|unlink|unzip|uptime|wall|wc|wget|whereis|which|whiptail|whoami|who|write|w|xargs|xdialog|zcat|zcmp|zdiff|zegrep|zenity|zfgrep|zforce|zgrep|zip|zless|zmore|znew)\>"
icolor brightmagenta "\$\{?[0-9A-Z_!@#$*?-]+\}?"
color cyan "(^|[[:space:]])#.*$"
color brightyellow ""(\\.|[^"])*"" "'(\\.|[^'])*'"
color green "[[:space:]]+$"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment