diff --git a/sources_non_forked/guile.vim/COPYING.txt b/sources_non_forked/guile.vim/COPYING.txt new file mode 100644 index 00000000..5a4460a2 --- /dev/null +++ b/sources_non_forked/guile.vim/COPYING.txt @@ -0,0 +1,19 @@ +Copyright (c) 2019 HiPhish + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/sources_non_forked/guile.vim/README.rst b/sources_non_forked/guile.vim/README.rst new file mode 100644 index 00000000..ba7e91a9 --- /dev/null +++ b/sources_non_forked/guile.vim/README.rst @@ -0,0 +1,42 @@ +.. default-role:: code + +########################### + GNU Guile support for Vim +########################### + +This plugin extends Vim's Scheme support to include the additions to the +language provided by the `GNU Guile`_ implementation. The plugin automatically +detects whether a Scheme file is a Guile file and adds syntax highlighting for +Guile's special forms. + + +Installation +############ + +Install this like any other Vim plugin. + + +Using the plugin +################ + +When a Guile buffer has been detected its `filetype` option will be set to the +value `scheme.guile`. This uses Vim's dotted file type (see `:h 'filetype'`) in +order to allow users to keep using their setting any plugins for Scheme in +addition to this. + +Guile is detected by either looking for a shebang in the first line (see +`4.3.1 The Top of a Script File`_ in the Guile manual), or by scanning the file +for an occurrence of `define-module` or `use-modules`. This is not absolutely +reliable, but it should work for the vast majority of cases. + + +License +####### + +Released under the MIT (Expat) license, see the COPYING_ file for details. + + +.. ---------------------------------------------------------------------------- +.. _GNU Guile: http://www.gnu.org/software/guile/ +.. _COPYING: COPYING.txt +.. _4.3.1 The Top of a Script File: info:guile.info#The%20Top%20of%20a%20Script%20File diff --git a/sources_non_forked/guile.vim/autoload/guile.vim b/sources_non_forked/guile.vim/autoload/guile.vim new file mode 100644 index 00000000..9739e3bf --- /dev/null +++ b/sources_non_forked/guile.vim/autoload/guile.vim @@ -0,0 +1,43 @@ +" License: The MIT License (MIT) {{{ +" Copyright (c) 2019 HiPhish +" +" Permission is hereby granted, free of charge, to any person obtaining a +" copy of this software and associated documentation files (the +" "Software"), to deal in the Software without restriction, including +" without limitation the rights to use, copy, modify, merge, publish, +" distribute, sublicense, and/or sell copies of the Software, and to permit +" persons to whom the Software is furnished to do so, subject to the +" following conditions: +" +" The above copyright notice and this permission notice shall be included +" in all copies or substantial portions of the Software. +" +" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +" NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +" USE OR OTHER DEALINGS IN THE SOFTWARE. +" }}} + +" ----------------------------------------------------------------------------- +" Detect whether the file is a Guile file. +" +" Try to find Guile-specific forms, e.g. the Guile shebang or a define-module +" expression. +" ----------------------------------------------------------------------------- +function! guile#detect() + " Guile uses the shebang in the first line + if getline(1) =~? '\v^#!.*[Gg]uile' + return 1 + endif + " Search for a module definition + let l:save_cursor = getcurpos() + call cursor(1, 1) + if search('\v\(\s*(define-module|use-modules)\s*\(', 'c', 0, 1000) + return 1 + endif + call setpos('.', l:save_cursor) + return 0 +endfunction diff --git a/sources_non_forked/guile.vim/ftdetect/scheme.vim b/sources_non_forked/guile.vim/ftdetect/scheme.vim new file mode 100644 index 00000000..ff2aa644 --- /dev/null +++ b/sources_non_forked/guile.vim/ftdetect/scheme.vim @@ -0,0 +1,36 @@ +" License: The MIT License (MIT) {{{ +" Copyright (c) 2019 HiPhish +" +" Permission is hereby granted, free of charge, to any person obtaining a +" copy of this software and associated documentation files (the +" "Software"), to deal in the Software without restriction, including +" without limitation the rights to use, copy, modify, merge, publish, +" distribute, sublicense, and/or sell copies of the Software, and to permit +" persons to whom the Software is furnished to do so, subject to the +" following conditions: +" +" The above copyright notice and this permission notice shall be included +" in all copies or substantial portions of the Software. +" +" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +" NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +" USE OR OTHER DEALINGS IN THE SOFTWARE. +" }}} + +" Safely adjust to file type to not include `guile` more than once +function! s:adjust_ft() + for l:ft in split(&filetype, '\v\.') + if l:ft == 'guile' + return + endif + endfor + let &ft.='.guile' +endfunction + +augroup filetypedetect + autocmd BufRead,BufNewFile *scm if guile#detect() | call s:adjust_ft() | endif +augroup end diff --git a/sources_non_forked/guile.vim/logo.svg b/sources_non_forked/guile.vim/logo.svg new file mode 100644 index 00000000..17265b1f --- /dev/null +++ b/sources_non_forked/guile.vim/logo.svg @@ -0,0 +1,184 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="512" + height="512" + viewBox="0 0 511.99995 512" + id="svg4268" + version="1.1" + inkscape:version="0.92.4 (5da689c313, 2019-01-14)" + sodipodi:docname="logo.svg"> + <defs + id="defs4270" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.71223882" + inkscape:cx="396.59138" + inkscape:cy="218.04935" + inkscape:document-units="px" + inkscape:current-layer="g3880" + showgrid="false" + units="px" + height="200px" + showguides="true" + inkscape:guide-bbox="true" + inkscape:window-width="1253" + inkscape:window-height="685" + inkscape:window-x="421" + inkscape:window-y="220" + inkscape:window-maximized="0" /> + <metadata + id="metadata4273"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Capa 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-540.36216)"> + <g + transform="translate(747.52659,-1312.6768)" + id="g3880" + inkscape:export-filename="favicon.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <path + sodipodi:nodetypes="ccsccsc" + inkscape:connector-curvature="0" + style="fill:#f2f2f2;fill-opacity:0.9956522;stroke:none;stroke-width:2.58588266" + d="m -461.9174,1885.039 v 65.7391 c 74.01318,14.0043 130.02299,79.5383 130.02299,158.2609 0,78.7225 -56.00981,144.2562 -130.02299,158.2608 v 65.7392 c 109.72779,-14.6046 194.39081,-109.3294 194.39081,-224 0,-114.6709 -84.66302,-209.3955 -194.39081,-224 z" + id="path4028" /> + <g + transform="matrix(0.59020223,0,0,0.59020223,-698.53366,1863.4146)" + id="layer1-3"> + <g + transform="matrix(1.532388,0,0,1.3939671,-54.912136,-41.792396)" + id="g3699"> + <path + style="fill:#019833;fill-opacity:1;stroke:#000000;stroke-width:0.94571567px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 260.50744,170.69515 105.98412,340.79094 259.8636,510.178 414.38691,340.08221 Z" + id="path2836" + inkscape:connector-curvature="0" /> + <path + style="fill:#66fe98;fill-opacity:1;stroke:#000000;stroke-width:0.94571567px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 259.8636,171.40389 V 156.52051 L 91.819492,341.49967 h 14.164628 z" + id="path2838" + inkscape:connector-curvature="0" /> + <path + id="path2840" + d="m 259.47729,171.40389 v -14.88338 l 168.0441,184.97916 h -14.16463 z" + style="fill:#45fe02;fill-opacity:1;stroke:#000000;stroke-width:0.94571567px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + id="path2842" + d="M 259.8636,511.17022 V 526.0536 L 91.819492,341.07444 h 14.164628 z" + style="fill:#017d17;fill-opacity:1;stroke:#000000;stroke-width:0.94571567px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:18.91431427;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 122.99448,175.30643 h 108.35396 l 6.60139,7.26665 v 22.30116 l -5.23559,7.01608 H 220.87725 V 322.64438 L 322.85744,211.89032 H 306.0125 l -5.9185,-7.01608 v -23.55403 l 5.46323,-5.51264 h 109.71976 l 5.46322,6.01379 v 22.05058 L 172.61878,484.01452 H 144.39212 L 136.22179,478.822 V 210.88803 h -13.68257 l -5.00795,-5.51264 v -23.55403 z" + id="path3650" + inkscape:connector-curvature="0" /> + <path + style="fill:#005d04;fill-opacity:1;stroke:#000000;stroke-width:0.94571567px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 259.47729,511.17022 V 526.0536 L 427.52139,341.07444 H 413.35676 Z" + id="path2844" + inkscape:connector-curvature="0" /> + <path + id="path2846" + d="M 259.41018,155.14848 90.734026,340.82339 258.70737,525.72467 427.38353,340.04975 Z" + style="fill:none;stroke:#000000;stroke-width:5.67429399;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + style="fill:#fefefe;fill-opacity:1;stroke:#000000;stroke-width:0.94571567px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 232.50008,186.64163 6.11655,-3.54366 -6.27751,-6.91014 H 123.04607 l -5.55319,6.11281 v 23.1224 l 6.15679,6.77725 2.93756,-6.77725 -3.86308,-4.2524 v -16.30085 l 2.89731,-2.83492 H 229.9247 Z" + id="path3640" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path3632" + d="m 828.9375,369.5 -4.28125,4.28125 V 389.5 l 3.75,3.75 h 19.8125 v 15.1875 L 717.15625,541.28125 V 393.4375 h 21.78125 l 4.46875,-4.46875 V 373.0625 l -4.125,-3.1875 h -114.625 l -3.75,3.75 v 16.25 l 3.8125,3.8125 h 19.9375 v 272.25 l 3.75,3.75 H 671.0625 L 945.71875,386.28125 v -12.5 L 941.4375,369.5 Z" + transform="matrix(0.90138601,0,0,0.99222542,-437.42287,-185.30615)" + inkscape:connector-curvature="0" /> + <path + style="fill:#fefefe;fill-opacity:1;stroke:#000000;stroke-width:0.94571567px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 143.48158,204.87424 v 270.62073 l 3.18688,4.0092 -2.49916,5.24301 -7.06148,-7.74876 v -265.1081 z" + id="path3646" + inkscape:connector-curvature="0" /> + <path + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.94571567px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 125.82451,204.87424 -1.82108,6.51494 h 13.2028 l 7.2843,-6.51494 z" + id="path3644" + inkscape:connector-curvature="0" /> + <path + style="fill:#fefefe;fill-opacity:1;stroke:#000000;stroke-width:0.94571567px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 307.18636,212.19144 2.89731,-6.55577 -4.18501,-4.2524 v -14.52901 l 4.82886,-5.31551 H 411.4896 l 3.86308,5.66987 5.4727,-4.2524 -5.63366,-6.20141 H 306.86443 l -5.39221,5.93564 v 23.29957 l 5.59342,5.80276 m -87.54309,111.87785 -10.52288,28.10566 118.7898,-131.1155 v -15.59211 z" + id="path3638" + inkscape:connector-curvature="0" /> + <path + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.94571567px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 232.25896,185.83056 5.2356,-3.75862 v 22.8023 l -6.03231,6.64023 h -11.72317 v 112.38277 l -10.69882,27.81381 V 204.87424 h 19.57656 l 3.64214,-3.25747 z" + id="path3642" + inkscape:connector-curvature="0" /> + <path + style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path3622" + d="m 828.9375,369.5 -4.28125,4.28125 V 389.5 l 3.75,3.75 h 19.8125 v 15.1875 L 717.15625,541.28125 V 393.4375 h 21.78125 l 4.46875,-4.46875 V 373.0625 l -4.125,-3.1875 h -114.625 l -3.75,3.75 v 16.25 l 3.8125,3.8125 h 19.9375 v 272.25 l 3.75,3.75 H 671.0625 L 945.71875,386.28125 v -12.5 L 941.4375,369.5 Z" + transform="matrix(0.90138601,0,0,0.99222542,-437.42287,-185.30615)" + inkscape:connector-curvature="0" /> + <path + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.94571567px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 415.35268,185.9329 5.49849,-3.49448 v 21.92152 L 171.46006,484.88124 H 144.9826 l 2.52966,-5.5331 h 20.28119 L 415.03076,198.33573 Z" + id="path3636" + inkscape:connector-curvature="0" /> + <path + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.94571567px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 327.29631,205.25009 -5.57703,6.38966 h -14.56861 l 3.41452,-6.38966 c 0.11382,0 16.73112,0 16.73112,0 z" + id="path3652" + inkscape:connector-curvature="0" /> + <g + id="g3673" + transform="matrix(0.90138601,0,0,0.99222542,-92.530288,-192.23791)"> + <path + d="m 399.78125,560 a 1.2330102,1.2330102 0 0 0 -0.5625,0.28125 l -5.3125,4.5625 A 1.2330102,1.2330102 0 0 0 393.5625,565.375 L 388.25,580.25 a 1.2330102,1.2330102 0 0 0 0.28125,1.28125 l 4.0625,4.0625 a 1.2330102,1.2330102 0 0 0 0.875,0.34375 H 409.875 a 1.2330102,1.2330102 0 0 0 0.875,-0.34375 l 4.28125,-4.3125 a 1.2330102,1.2330102 0 0 0 0.3125,-0.53125 l 4.5625,-15.65625 a 1.2330102,1.2330102 0 0 0 -0.3125,-1.21875 l -3.53125,-3.53125 A 1.2330102,1.2330102 0 0 0 415.1875,560 h -15.15625 a 1.2330102,1.2330102 0 0 0 -0.25,0 z m -30.0625,41.9375 a 1.2330102,1.2330102 0 0 0 -0.9375,0.90625 l -2.03125,8.0625 a 1.2330102,1.2330102 0 0 0 1.1875,1.53125 h 9.65625 l -23.9375,68.34375 a 1.2330102,1.2330102 0 0 0 1.15625,1.625 h 34.84375 a 1.2330102,1.2330102 0 0 0 1.1875,-0.84375 l 2.28125,-7.34375 a 1.2330102,1.2330102 0 0 0 -1.1875,-1.59375 h -7.875 L 407.75,603.5625 a 1.2330102,1.2330102 0 0 0 -1.15625,-1.625 h -36.625 a 1.2330102,1.2330102 0 0 0 -0.25,0 z m 110.875,0.25 a 1.2330102,1.2330102 0 0 0 -0.6875,0.40625 l -7.25,8.1875 H 461.125 l -7.6875,-7.96875 a 1.2330102,1.2330102 0 0 0 -0.875,-0.375 H 425.03125 A 1.2330102,1.2330102 0 0 0 423.875,603.25 l -2.53125,7.5625 a 1.2330102,1.2330102 0 0 0 1.15625,1.625 h 7.375 l -22.9375,67.59375 a 1.2330102,1.2330102 0 0 0 1.15625,1.625 h 29.3125 a 1.2330102,1.2330102 0 0 0 1.15625,-0.8125 l 2.25,-6.59375 a 1.2330102,1.2330102 0 0 0 -1.15625,-1.625 h -5.125 l 14.625,-46.03125 H 475.625 l -16.6875,53.46875 a 1.2330102,1.2330102 0 0 0 1.1875,1.59375 h 28.28125 a 1.2330102,1.2330102 0 0 0 1.125,-0.75 l 2.53125,-6.0625 a 1.2330102,1.2330102 0 0 0 -1.125,-1.6875 h -5.125 l 14.875,-46.8125 h 25.1875 l -16.9375,53.71875 a 1.2330102,1.2330102 0 0 0 1.1875,1.59375 h 31.0625 a 1.2330102,1.2330102 0 0 0 1.15625,-0.78125 l 2.53125,-6.59375 a 1.2330102,1.2330102 0 0 0 -1.15625,-1.65625 h -6.15625 l 18.71875,-60.78125 a 1.2330102,1.2330102 0 0 0 -0.1875,-1.125 l -5.8125,-7.8125 a 1.2330102,1.2330102 0 0 0 -1,-0.46875 H 527.0625 a 1.2330102,1.2330102 0 0 0 -0.90625,0.375 l -7,7.6875 h -12.25 l -7.25,-7.9375 a 1.2330102,1.2330102 0 0 0 -0.90625,-0.375 h -17.90625 a 1.2330102,1.2330102 0 0 0 -0.25,0 z" + id="path3671" + style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" + id="path3665" + d="m 400.03125,561.21875 -5.3125,4.5625 -5.3125,14.875 4.0625,4.0625 H 409.875 l 4.28125,-4.3125 4.5625,-15.65625 -3.53125,-3.53125 z m -30.0625,41.9375 -2.03125,8.0625 h 11.375 l -24.5,69.96875 h 34.84375 l 2.28125,-7.34375 h -9.59375 l 24.25,-70.6875 z m 110.875,0.25 L 473.25,612 h -12.625 l -8.0625,-8.34375 h -27.53125 l -2.53125,7.5625 h 9.09375 l -23.5,69.21875 h 29.3125 l 2.25,-6.59375 h -6.8125 L 448.25,625.375 h 29.0625 l -17.1875,55.0625 h 28.28125 l 2.53125,-6.0625 h -6.8125 l 15.65625,-49.25 h 27.78125 l -17.4375,55.3125 h 31.0625 l 2.53125,-6.59375 H 535.875 l 19.21875,-62.375 -5.8125,-7.8125 H 527.0625 l -7.34375,8.0625 h -13.375 l -7.59375,-8.3125 z" + inkscape:connector-curvature="0" /> + </g> + </g> + </g> + <path + sodipodi:nodetypes="csccscc" + inkscape:connector-curvature="0" + id="path4030" + d="m -521.13579,1885.039 c -109.72778,14.6045 -194.3908,109.3291 -194.3908,224 0,114.6706 84.66302,209.3954 194.3908,224 v -65.7392 c -74.0132,-14.0046 -130.02298,-79.5383 -130.02298,-158.2608 0,-78.7226 56.00978,-144.2566 130.02298,-158.2609 z" + style="fill:#d0343f;fill-opacity:1;stroke:none;stroke-width:2.58588266" /> + </g> + </g> +</svg> diff --git a/sources_non_forked/guile.vim/makefile b/sources_non_forked/guile.vim/makefile new file mode 100644 index 00000000..9b2c45d3 --- /dev/null +++ b/sources_non_forked/guile.vim/makefile @@ -0,0 +1,6 @@ +VIM = nvim + +.PHONY: check + +check: + @VADER_OUTPUT_FILE=/dev/stdout $(VIM) --headless -c 'Vader! test/*.vader' diff --git a/sources_non_forked/guile.vim/syntax/guile.vim b/sources_non_forked/guile.vim/syntax/guile.vim new file mode 100644 index 00000000..d498af9e --- /dev/null +++ b/sources_non_forked/guile.vim/syntax/guile.vim @@ -0,0 +1,106 @@ +" License: The MIT License (MIT) {{{ +" Copyright (c) 2019 HiPhish +" +" Permission is hereby granted, free of charge, to any person obtaining a +" copy of this software and associated documentation files (the +" "Software"), to deal in the Software without restriction, including +" without limitation the rights to use, copy, modify, merge, publish, +" distribute, sublicense, and/or sell copies of the Software, and to permit +" persons to whom the Software is furnished to do so, subject to the +" following conditions: +" +" The above copyright notice and this permission notice shall be included +" in all copies or substantial portions of the Software. +" +" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +" NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +" USE OR OTHER DEALINGS IN THE SOFTWARE. +" }}} + +" GNU Guile syntax highlighting for extensions to Scheme +scriptencoding utf-8 + + +" ============================================================================= +" Multi-line comments, used for the shebang +syntax region guileComment start='\v<#!' end='\v!#' + +" Keywords +syntax match guileKeyword '\v<#:[^ ()]+>' + + +" ===[ Special keywords ]====================================================== +" Special keywords +syntax keyword guileSyntax define* +syntax keyword guileSyntax define-public +syntax keyword guileSyntax define-module +syntax keyword guileSyntax define-accessor +syntax keyword guileSyntax define-class +syntax keyword guileSyntax define-enumeration +syntax keyword guileSyntax define-inlinable +syntax keyword guileSyntax define-syntax-parameter + +syntax keyword guileSyntax λ +syntax keyword guileSyntax lambda* + +syntax keyword guileSyntax use-modules + +syntax keyword guileSyntax call-with-input-file +syntax keyword guileSyntax call-with-input-string +syntax keyword guileSyntax call-with-output-file +syntax keyword guileSyntax call-with-output-string +syntax keyword guileSyntax call-with-prompt +syntax keyword guileSyntax call-with-trace + +syntax keyword guileSyntax eval-when + +syntax keyword guileSyntax syntax-parameterize + +syntax keyword guileSyntax with-error-to-file +syntax keyword guileSyntax with-error-to-port +syntax keyword guileSyntax with-error-to-string +syntax keyword guileSyntax with-fluid* +syntax keyword guileSyntax with-fluids +syntax keyword guileSyntax with-fluids* +syntax keyword guileSyntax with-input-from-port +syntax keyword guileSyntax with-input-from-string +syntax keyword guileSyntax with-output-to-port +syntax keyword guileSyntax with-output-to-string + +" Macros +syntax keyword guileSyntaxSyntax define-syntax-rule + + +" ===[ Literals ]============================================================== +" Boolean literals +syntax keyword guileBoolean #true +syntax keyword guileBoolean #false + +" Unspecified literal (e.g. the return value of '(if #f #f)') +syntax match guileConstant '\v<#\<unspecified\>>' + +" Byte vector literal +syntax match guileQuote '\v<\zs#vu8\ze\(' + +" Number literals +syntax match guileNumber '\v<#[bB][+-]?[0-1]+>' +syntax match guileNumber '\v<#[oO][+-]?[0-7]+>' +syntax match guileNumber '\v<#[dD][+-]?\d+>' +syntax match guileNumber '\v<#[xX][+-]?[0-9a-fA-F]+>' +syntax match guileNumber '\v<#[eE][+-]?(\d+\.\d*|\d*\.\d+|\d+)>' " Exact +syntax match guileNumber '\v<(\+|-)(inf|nan)\.0>' " NaN and infinity + + +" ============================================================================= +highlight link guileComment schemeComment +highlight link guileQuote schemeQuote +highlight link guileSyntax schemeSyntax +highlight link guileSyntaxSyntax schemeSyntaxSyntax +highlight link guileBoolean schemeBoolean +highlight link guileConstant schemeConstant +highlight link guileNumber schemeNumber +highlight link guileKeyword Type diff --git a/sources_non_forked/guile.vim/test/detect.vader b/sources_non_forked/guile.vim/test/detect.vader new file mode 100644 index 00000000..9771ba55 --- /dev/null +++ b/sources_non_forked/guile.vim/test/detect.vader @@ -0,0 +1,25 @@ +# Test whether Guile is being detected +Given (Detect by shebang): + #!/usr/local/bin/guile -s + !# +Execute: + Assert guile#detect() + +Given (Detect by define-module): + (define-module (foo bar)) +Execute: + Assert guile#detect() + +Given (Detect by use-modules): + (use-modules (foo bar)) +Execute: + Assert guile#detect() + + +----------------------------------------------------------------------------- +# Test whether the file type is adjusted when a Guile file is edited +Execute (File type adjustment): + edit test/nonsense.scm +Then: + AssertEqual 'scheme.guile', &ft + bwipeout! diff --git a/sources_non_forked/guile.vim/test/nonsense.scm b/sources_non_forked/guile.vim/test/nonsense.scm new file mode 100644 index 00000000..449b1b04 --- /dev/null +++ b/sources_non_forked/guile.vim/test/nonsense.scm @@ -0,0 +1,7 @@ +#!/usr/local/bin/guile -s +!# + +;;; This is a nonsense file, meant to test whether the file type is adjusted +;;; properly. The Guile detection itself is tested separately. +(display "Hello from Guile!") +(newline) diff --git a/sources_non_forked/guile.vim/test/syntax.vader b/sources_non_forked/guile.vim/test/syntax.vader new file mode 100644 index 00000000..738eabfa --- /dev/null +++ b/sources_non_forked/guile.vim/test/syntax.vader @@ -0,0 +1,119 @@ +# Note: For simplicity we will not check the syntax highlighting of fixed +# keywords like 'define-public', only the highlighting of patterns + + +Given scheme.guile (Multi-line comment): + #!/usr/local/bin/guile -s + !# + #! This is a + multi-line comment !# + +Execute: + for i in range(1, 25) + AssertEqual 'guileComment', SyntaxAt(1, i) + endfor + AssertEqual 'guileComment', SyntaxAt(2, 1) + AssertEqual 'guileComment', SyntaxAt(2, 2) + for i in range(1, 12) + AssertEqual 'guileComment', SyntaxAt(3, i) + endfor + for i in range(1, 21) + AssertEqual 'guileComment', SyntaxAt(4, i) + endfor + +----------------------------------------------------------------------------- +Given scheme.guile (keywords): + #:keyword + #:key-word + +Execute: + for i in range(1, 9) + AssertEqual 'guileKeyword', SyntaxAt(1, i) + endfor + for i in range(1, 10) + AssertEqual 'guileKeyword', SyntaxAt(2, i) + endfor + +----------------------------------------------------------------------------- +Given scheme.guile (Boolean literals): + #true + #false + +Execute: + for i in range(1, 5) + AssertEqual 'guileBoolean', SyntaxAt(1, i) + endfor + for i in range(1, 6) + AssertEqual 'guileBoolean', SyntaxAt(2, i) + endfor + +----------------------------------------------------------------------------- +Given scheme.guile (Unspecified object representation): + #<unspecified> + +Execute: + for i in range(1, 14) + AssertEqual 'guileConstant', SyntaxAt(1, i) + endfor + +----------------------------------------------------------------------------- +Given scheme.guile (Bytevector literal): + #vu8(1 2 3 4) + +Execute: + for i in range(1, 4) + AssertEqual 'guileQuote', SyntaxAt(1, i) + endfor + +----------------------------------------------------------------------------- +Given scheme.guile (Integer number literals): + #b0101 #b+0101 #b-0101 #B0101 #B+0101 #B-0101 + #o0237 #o+0237 #o-0237 #O0237 #O+0237 #O-0237 + #d0239 #d+0239 #d-0239 #D0239 #D+0239 #D-0239 + #x03AF #x+03AF #x-03AF #X03AF #X+03AF #X-03AF + #x03af #x+03af #x-03af #X03af #X+03af #X-03af + +Execute: + for i in range(1, 5) + for j in range(1, 6) + for k in [0, 7, 15, 23, 30, 38] + AssertEqual 'guileNumber', SyntaxAt(i, k + j) + endfor + endfor + endfor + +----------------------------------------------------------------------------- +Given scheme.guile (Exact decimal number literls): + #e012345 #e+01234 #e-01234 #E012345 #E+01234 #E-01234 + #e.12345 #e+.1234 #e-.1234 #E.12345 #E+.1234 #E-.1234 + #e0.1234 #e+0.123 #e-0.123 #E0.1234 #E+0.123 #E-0.123 + +Execute: + for line in [1, 2] + for offset in range(0, 5) + for column in range(1, 8) + AssertEqual 'guileNumber', SyntaxAt(line, offset * 9 + column) + endfor + endfor + endfor + +----------------------------------------------------------------------------- +Given scheme.guile (Infinity and NaN literals): + +inf.0 -inf.0 +nan.0 -nan.0 + +Execute: + for offset in range(0, 3) + for i in range(1, 6) + AssertEqual 'guileNumber', SyntaxAt(1, offset * 7 + i) + endfor + endfor + +----------------------------------------------------------------------------- +Given scheme.guile (Syntax-rule macro): + (define-syntax-rule (first-of expr expr* ...) + expr) + +Execute: + for i in range(2, 19) + AssertEqual 'guileSyntaxSyntax', SyntaxAt(1, i) + endfor