diff --git a/share/completions/dot.fish b/share/completions/dot.fish new file mode 100644 index 000000000..942a931e7 --- /dev/null +++ b/share/completions/dot.fish @@ -0,0 +1,233 @@ +set -l command dot + +complete -c $command -f + +complete -c $command -s '?' -d 'Show help' + +for version_option in v V + complete -c $command -s $version_option -d 'Show version' +end + +set -l graph_attributes = _background \ + bb \ + 'beautify true false' \ + bgcolor \ + 'center true false' \ + 'charset utf-8 utf8 iso-8859-1 ISO_8859-1 ISO8859-1 ISO-IR-100 Latin1 l1 latin-1 big-5 big5' \ + class \ + 'clusterrank global local none' \ + colorscheme \ + comment \ + 'compound true false' \ + 'concentrate true false' \ + 'Damping 0.99' \ + defaultdist \ + 'dim 2' \ + 'dimen 2' \ + 'diredgeconstraints hier false' \ + 'dpi 96.0,0.0' \ + epsilon \ + 'esep +3' \ + "fontcolor $(string join ' ' -- (__fish_graphviz__print_colors))" \ + fontname \ + 'fontnames svg' \ + fontpath \ + 'fontsize 14.0' \ + 'forcelabels true false' \ + 'gradientangle 0' \ + href \ + id \ + imagepath \ + inputscale \ + K \ + label \ + label_scheme \ + labeljust \ + labelloc \ + landscape \ + layerlistsep \ + layers \ + layerselect \ + layersep \ + layout \ + levels \ + levelsgap \ + lheight \ + linelength \ + lp \ + lwidth \ + margin \ + maxiter \ + mclimit \ + mindist \ + mode \ + model \ + newrank \ + nodesep \ + nojustify \ + normalize \ + notranslate \ + nslimit \ + nslimit1 \ + oneblock \ + ordering \ + orientation \ + outputorder \ + overlap \ + overlap_scaling \ + overlap_shrink \ + pack \ + packmode \ + pad \ + page \ + pagedir \ + quadtree \ + quantum \ + rankdir \ + ranksep \ + ratio \ + remincross \ + repulsiveforce \ + resolution \ + root \ + rotate \ + rotation \ + scale \ + searchsize \ + sep \ + showboxes \ + size \ + smoothing \ + sortv \ + splines \ + start \ + style \ + stylesheet \ + target \ + TBbalance \ + tooltip \ + truecolor \ + URL \ + viewport \ + voro_margin \ + xdotversion + +set -l edge_attributes area \ + class \ + color \ + colorscheme \ + comment \ + distortion \ + fillcolor \ + fixedsize \ + fontcolor \ + fontname \ + fontsize \ + gradientangle \ + group \ + height \ + href \ + id \ + image \ + imagepos \ + imagescale \ + label \ + labelloc \ + layer \ + margin \ + nojustify \ + ordering \ + orientation \ + penwidth \ + peripheries \ + pin \ + pos \ + rects \ + regular \ + root \ + samplepoints \ + shape \ + shapefile \ + showboxes \ + sides \ + skew \ + sortv \ + style \ + target \ + tooltip \ + URL \ + vertices \ + width \ + xlabel \ + xlp \ + z + +set -l node_attributes area \ + class \ + color \ + colorscheme \ + comment \ + distortion \ + fillcolor \ + fixedsize \ + fontcolor \ + fontname \ + fontsize \ + gradientangle \ + group \ + height \ + href \ + id \ + image \ + imagepos \ + imagescale \ + label \ + labelloc \ + layer \ + margin \ + nojustify \ + ordering \ + orientation \ + penwidth \ + peripheries \ + pin \ + pos \ + rects \ + regular \ + root \ + samplepoints \ + shape \ + shapefile \ + showboxes \ + sides \ + skew \ + sortv \ + style \ + target \ + tooltip \ + URL \ + vertices \ + width \ + xlabel \ + xlp \ + z + +complete -c $command \ + -a '(__fish_complete_key_value_pairs $graph_attributes)' \ + -d 'Specify a graph option' + +complete -c $command \ + -a '(__fish_complete_key_value_pairs $edge_attributes)' \ + -d 'Specify an edge option' + +complete -c $command \ + -a '(__fish_complete_key_value_pairs $node_attributes)' \ + -d 'Specify a node option' + +## +__fish_complete_key_value_pairs = "type executable library" "id first second" + +complete --erase true +complete -c true -s o -l option -r \ + -a '(__fish_complete_key_value_pairs = "type executable library" "id first second")' \ + -d 'Some description' diff --git a/share/functions/__fish_complete_key_value_pairs.fish b/share/functions/__fish_complete_key_value_pairs.fish new file mode 100644 index 000000000..3026e4fd2 --- /dev/null +++ b/share/functions/__fish_complete_key_value_pairs.fish @@ -0,0 +1,35 @@ +# Usage: __fish_complete_key_value_pairs key_value_pair_delimiter key_with_values1 key_with_values2 ... +# Example: __fish_complete_key_value_pairs = "type executable library" +function __fish_complete_key_value_pairs \ + --description 'Suggest provided options and their values as $argv where each except first argument is an option and space separated option values' + + set token (commandline -c -t) + set delimiter $argv[1] + set keys $argv[2..] + set values $keys + + set token (string replace --regex "^--?\w+$delimiter" '' -- $token) + + for index in (seq (count $keys)) + set definition $keys[$index] + set keys[$index] (string match --regex '^\w+' -- $definition) + + if string match --quiet --regex '^\w+\s+' -- $definition + set values[$index] (string replace --regex '^\w+\s+' '' -- $definition) + else + set values[$index] "" + end + end + + set token (string replace --regex "$delimiter.*\$" '' -- $token) + + if set index (contains --index -- "$token" $keys) + for value in (string split " " $values[$index]) + printf '%s%s%s\n' $token $delimiter $value + end + else + for key in (string split " " $keys) + printf '%s%s\n' $key $delimiter + end + end +end diff --git a/share/functions/__fish_graphviz__print_colors.fish b/share/functions/__fish_graphviz__print_colors.fish new file mode 100644 index 000000000..6070e1d95 --- /dev/null +++ b/share/functions/__fish_graphviz__print_colors.fish @@ -0,0 +1,6 @@ +function __fish_graphviz__print_colors + begin + __fish_graphviz__print_x11_colors + __fish_graphviz__print_svg_colors + end | sort | uniq +end diff --git a/share/functions/__fish_graphviz__print_svg_colors.fish b/share/functions/__fish_graphviz__print_svg_colors.fish new file mode 100644 index 000000000..1444ef064 --- /dev/null +++ b/share/functions/__fish_graphviz__print_svg_colors.fish @@ -0,0 +1,34 @@ +function __fish_graphviz__print_svg_colors + set colors aliceblue antiquewhite aqua aquamarine azure \ + beige bisque black blanchedalmond blue \ + blueviolet brown burlywood cadetblue chartreuse \ + chocolate coral cornflowerblue cornsilk crimson \ + cyan darkblue darkcyan darkgoldenrod darkgray \ + darkgreen darkgrey darkkhaki darkmagenta darkolivegreen \ + darkorange darkorchid darkred darksalmon darkseagreen \ + darkslateblue darkslategray darkslategrey darkturquoise darkviolet \ + deeppink deepskyblue dimgray dimgrey dodgerblue \ + firebrick floralwhite forestgreen fuchsia gainsboro \ + ghostwhite gold goldenrod gray grey \ + green greenyellow honeydew hotpink indianred \ + indigo ivory khaki lavender lavenderblush \ + lawngreen lemonchiffon lightblue lightcoral lightcyan \ + lightgoldenrodyellow lightgray lightgreen lightgrey lightpink \ + lightsalmon lightseagreen lightskyblue lightslategray lightslategrey \ + lightsteelblue lightyellow lime limegreen linen \ + magenta maroon mediumaquamarine mediumblue mediumorchid \ + mediumpurple mediumseagreen mediumslateblue mediumspringgreen mediumturquoise \ + mediumvioletred midnightblue mintcream mistyrose moccasin \ + navajowhite navy oldlace olive olivedrab \ + orange orangered orchid palegoldenrod palegreen \ + paleturquoise palevioletred papayawhip peachpuff peru \ + pink plum powderblue purple red \ + rosybrown royalblue saddlebrown salmon sandybrown \ + seagreen seashell sienna silver skyblue \ + slateblue slategray slategrey snow springgreen \ + steelblue tan teal thistle tomato \ + turquoise violet wheat white whitesmoke \ + yellow yellowgreen + + string join \n -- $colors +end diff --git a/share/functions/__fish_graphviz__print_x11_colors.fish b/share/functions/__fish_graphviz__print_x11_colors.fish new file mode 100644 index 000000000..e78c2e51a --- /dev/null +++ b/share/functions/__fish_graphviz__print_x11_colors.fish @@ -0,0 +1,140 @@ +function __fish_graphviz__print_x11_colors + set colors aliceblue antiquewhite antiquewhite1 antiquewhite2 antiquewhite3 \ + antiquewhite4 aqua aquamarine aquamarine1 aquamarine2 \ + aquamarine3 aquamarine4 azure azure1 azure2 \ + azure3 azure4 beige bisque bisque1 \ + bisque2 bisque3 bisque4 black blanchedalmond \ + blue blue1 blue2 blue3 blue4 \ + blueviolet brown brown1 brown2 brown3 \ + brown4 burlywood burlywood1 burlywood2 burlywood3 \ + burlywood4 cadetblue cadetblue1 cadetblue2 cadetblue3 \ + cadetblue4 chartreuse chartreuse1 chartreuse2 chartreuse3 \ + chartreuse4 chocolate chocolate1 chocolate2 chocolate3 \ + chocolate4 coral coral1 coral2 coral3 \ + coral4 cornflowerblue cornsilk cornsilk1 cornsilk2 \ + cornsilk3 cornsilk4 crimson cyan cyan1 \ + cyan2 cyan3 cyan4 darkblue darkcyan \ + darkgoldenrod darkgoldenrod1 darkgoldenrod2 darkgoldenrod3 darkgoldenrod4 \ + darkgray darkgreen darkgrey darkkhaki darkmagenta \ + darkolivegreen darkolivegreen1 darkolivegreen2 darkolivegreen3 darkolivegreen4 \ + darkorange darkorange1 darkorange2 darkorange3 darkorange4 \ + darkorchid darkorchid1 darkorchid2 darkorchid3 darkorchid4 \ + darkred darksalmon darkseagreen darkseagreen1 darkseagreen2 \ + darkseagreen3 darkseagreen4 darkslateblue darkslategray darkslategray1 \ + darkslategray2 darkslategray3 darkslategray4 darkslategrey darkturquoise \ + darkviolet deeppink deeppink1 deeppink2 deeppink3 \ + deeppink4 deepskyblue deepskyblue1 deepskyblue2 deepskyblue3 \ + deepskyblue4 dimgray dimgrey dodgerblue dodgerblue1 \ + dodgerblue2 dodgerblue3 dodgerblue4 firebrick firebrick1 \ + firebrick2 firebrick3 firebrick4 floralwhite forestgreen \ + fuchsia gainsboro ghostwhite gold gold1 \ + gold2 gold3 gold4 goldenrod goldenrod1 \ + goldenrod2 goldenrod3 goldenrod4 gray gray0 \ + gray1 gray10 gray100 gray11 gray12 \ + gray13 gray14 gray15 gray16 gray17 \ + gray18 gray19 gray2 gray20 gray21 \ + gray22 gray23 gray24 gray25 gray26 \ + gray27 gray28 gray29 gray3 gray30 \ + gray31 gray32 gray33 gray34 gray35 \ + gray36 gray37 gray38 gray39 gray4 \ + gray40 gray41 gray42 gray43 gray44 \ + gray45 gray46 gray47 gray48 gray49 \ + gray5 gray50 gray51 gray52 gray53 \ + gray54 gray55 gray56 gray57 gray58 \ + gray59 gray6 gray60 gray61 gray62 \ + gray63 gray64 gray65 gray66 gray67 \ + gray68 gray69 gray7 gray70 gray71 \ + gray72 gray73 gray74 gray75 gray76 \ + gray77 gray78 gray79 gray8 gray80 \ + gray81 gray82 gray83 gray84 gray85 \ + gray86 gray87 gray88 gray89 gray9 \ + gray90 gray91 gray92 gray93 gray94 \ + gray95 gray96 gray97 gray98 gray99 \ + green green1 green2 green3 green4 \ + greenyellow grey grey0 grey1 grey10 \ + grey100 grey11 grey12 grey13 grey14 \ + grey15 grey16 grey17 grey18 grey19 \ + grey2 grey20 grey21 grey22 grey23 \ + grey24 grey25 grey26 grey27 grey28 \ + grey29 grey3 grey30 grey31 grey32 \ + grey33 grey34 grey35 grey36 grey37 \ + grey38 grey39 grey4 grey40 grey41 \ + grey42 grey43 grey44 grey45 grey46 \ + grey47 grey48 grey49 grey5 grey50 \ + grey51 grey52 grey53 grey54 grey55 \ + grey56 grey57 grey58 grey59 grey6 \ + grey60 grey61 grey62 grey63 grey64 \ + grey65 grey66 grey67 grey68 grey69 \ + grey7 grey70 grey71 grey72 grey73 \ + grey74 grey75 grey76 grey77 grey78 \ + grey79 grey8 grey80 grey81 grey82 \ + grey83 grey84 grey85 grey86 grey87 \ + grey88 grey89 grey9 grey90 grey91 \ + grey92 grey93 grey94 grey95 grey96 \ + grey97 grey98 grey99 honeydew honeydew1 \ + honeydew2 honeydew3 honeydew4 hotpink hotpink1 \ + hotpink2 hotpink3 hotpink4 indianred indianred1 \ + indianred2 indianred3 indianred4 indigo invis \ + ivory ivory1 ivory2 ivory3 ivory4 \ + khaki khaki1 khaki2 khaki3 khaki4 \ + lavender lavenderblush lavenderblush1 lavenderblush2 lavenderblush3 \ + lavenderblush4 lawngreen lemonchiffon lemonchiffon1 lemonchiffon2 \ + lemonchiffon3 lemonchiffon4 lightblue lightblue1 lightblue2 \ + lightblue3 lightblue4 lightcoral lightcyan lightcyan1 \ + lightcyan2 lightcyan3 lightcyan4 lightgoldenrod lightgoldenrod1 \ + lightgoldenrod2 lightgoldenrod3 lightgoldenrod4 lightgoldenrodyellow lightgray \ + lightgreen lightgrey lightpink lightpink1 lightpink2 \ + lightpink3 lightpink4 lightsalmon lightsalmon1 lightsalmon2 \ + lightsalmon3 lightsalmon4 lightseagreen lightskyblue lightskyblue1 \ + lightskyblue2 lightskyblue3 lightskyblue4 lightslateblue lightslategray \ + lightslategrey lightsteelblue lightsteelblue1 lightsteelblue2 lightsteelblue3 \ + lightsteelblue4 lightyellow lightyellow1 lightyellow2 lightyellow3 \ + lightyellow4 lime limegreen linen magenta \ + magenta1 magenta2 magenta3 magenta4 maroon \ + maroon1 maroon2 maroon3 maroon4 mediumaquamarine \ + mediumblue mediumorchid mediumorchid1 mediumorchid2 mediumorchid3 \ + mediumorchid4 mediumpurple mediumpurple1 mediumpurple2 mediumpurple3 \ + mediumpurple4 mediumseagreen mediumslateblue mediumspringgreen mediumturquoise \ + mediumvioletred midnightblue mintcream mistyrose mistyrose1 \ + mistyrose2 mistyrose3 mistyrose4 moccasin navajowhite \ + navajowhite1 navajowhite2 navajowhite3 navajowhite4 navy \ + navyblue none oldlace olive olivedrab \ + olivedrab1 olivedrab2 olivedrab3 olivedrab4 orange \ + orange1 orange2 orange3 orange4 orangered \ + orangered1 orangered2 orangered3 orangered4 orchid \ + orchid1 orchid2 orchid3 orchid4 palegoldenrod \ + palegreen palegreen1 palegreen2 palegreen3 palegreen4 \ + paleturquoise paleturquoise1 paleturquoise2 paleturquoise3 paleturquoise4 \ + palevioletred palevioletred1 palevioletred2 palevioletred3 palevioletred4 \ + papayawhip peachpuff peachpuff1 peachpuff2 peachpuff3 \ + peachpuff4 peru pink pink1 pink2 \ + pink3 pink4 plum plum1 plum2 \ + plum3 plum4 powderblue purple purple1 \ + purple2 purple3 purple4 rebeccapurple red \ + red1 red2 red3 red4 rosybrown \ + rosybrown1 rosybrown2 rosybrown3 rosybrown4 royalblue \ + royalblue1 royalblue2 royalblue3 royalblue4 saddlebrown \ + salmon salmon1 salmon2 salmon3 salmon4 \ + sandybrown seagreen seagreen1 seagreen2 seagreen3 \ + seagreen4 seashell seashell1 seashell2 seashell3 \ + seashell4 sienna sienna1 sienna2 sienna3 \ + sienna4 silver skyblue skyblue1 skyblue2 \ + skyblue3 skyblue4 slateblue slateblue1 slateblue2 \ + slateblue3 slateblue4 slategray slategray1 slategray2 \ + slategray3 slategray4 slategrey snow snow1 \ + snow2 snow3 snow4 springgreen springgreen1 \ + springgreen2 springgreen3 springgreen4 steelblue steelblue1 \ + steelblue2 steelblue3 steelblue4 tan tan1 \ + tan2 tan3 tan4 teal thistle \ + thistle1 thistle2 thistle3 thistle4 tomato \ + tomato1 tomato2 tomato3 tomato4 transparent \ + turquoise turquoise1 turquoise2 turquoise3 turquoise4 \ + violet violetred violetred1 violetred2 violetred3 \ + violetred4 webgray webgreen webgrey webmaroon \ + webpurple wheat wheat1 wheat2 wheat3 \ + wheat4 white whitesmoke x11gray x11green \ + x11grey x11maroon x11purple yellow yellow1 \ + yellow2 yellow3 yellow4 yellowgreen + + string join \n -- $colors +end