commit c136ce479e932d66dd252801e4c896ce7ffd7236 Author: NotAShelf Date: Wed Feb 1 19:13:54 2023 +0000 deploy: 9c008088630b547e35acae5e678456d5f0447c24 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/highlight.load.js b/highlight.load.js new file mode 100644 index 0000000..ecc33b2 --- /dev/null +++ b/highlight.load.js @@ -0,0 +1,6 @@ +/* This file is NOT part of highlight.js */ +document.addEventListener('DOMContentLoaded', (event) => { + document.querySelectorAll('pre.programlisting, pre.screen').forEach((block) => { + hljs.highlightBlock(block); + }); +}); diff --git a/highlight.pack.js b/highlight.pack.js new file mode 100644 index 0000000..9355042 --- /dev/null +++ b/highlight.pack.js @@ -0,0 +1,6 @@ +/* + Highlight.js 10.0.2 (e29f8f7d) + License: BSD-3-Clause + Copyright (c) 2006-2020, Ivan Sagalaev +*/ +var hljs=function(){"use strict";function e(n){Object.freeze(n);var t="function"==typeof n;return Object.getOwnPropertyNames(n).forEach((function(r){!n.hasOwnProperty(r)||null===n[r]||"object"!=typeof n[r]&&"function"!=typeof n[r]||t&&("caller"===r||"callee"===r||"arguments"===r)||Object.isFrozen(n[r])||e(n[r])})),n}function n(e){return e.replace(/&/g,"&").replace(//g,">")}function t(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach((function(e){for(n in e)t[n]=e[n]})),t}function r(e){return e.nodeName.toLowerCase()}var a=Object.freeze({__proto__:null,escapeHTML:n,inherit:t,nodeStream:function(e){var n=[];return function e(t,a){for(var i=t.firstChild;i;i=i.nextSibling)3===i.nodeType?a+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=e(i,a),r(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n},mergeStreams:function(e,t,a){var i=0,s="",o=[];function l(){return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function u(e){s+=""}function d(e){("start"===e.event?c:u)(e.node)}for(;e.length||t.length;){var g=l();if(s+=n(a.substring(i,g[0].offset)),i=g[0].offset,g===e){o.reverse().forEach(u);do{d(g.splice(0,1)[0]),g=l()}while(g===e&&g.length&&g[0].offset===i);o.reverse().forEach(c)}else"start"===g[0].event?o.push(g[0].node):o.pop(),d(g.splice(0,1)[0])}return s+n(a.substr(i))}});const i="",s=e=>!!e.kind;class o{constructor(e,n){this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){this.buffer+=n(e)}openNode(e){if(!s(e))return;let n=e.kind;e.sublanguage||(n=`${this.classPrefix}${n}`),this.span(n)}closeNode(e){s(e)&&(this.buffer+=i)}span(e){this.buffer+=``}value(){return this.buffer}}class l{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){let n={kind:e,children:[]};this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,n){return"string"==typeof n?e.addText(n):n.children&&(e.openNode(n),n.children.forEach(n=>this._walk(e,n)),e.closeNode(n)),e}static _collapse(e){e.children&&(e.children.every(e=>"string"==typeof e)?(e.text=e.children.join(""),delete e.children):e.children.forEach(e=>{"string"!=typeof e&&l._collapse(e)}))}}class c extends l{constructor(e){super(),this.options=e}addKeyword(e,n){""!==e&&(this.openNode(n),this.addText(e),this.closeNode())}addText(e){""!==e&&this.add(e)}addSublanguage(e,n){let t=e.root;t.kind=n,t.sublanguage=!0,this.add(t)}toHTML(){return new o(this,this.options).value()}finalize(){}}function u(e){return e&&e.source||e}const d="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",g={begin:"\\\\[\\s\\S]",relevance:0},h={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[g]},f={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[g]},p={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},m=function(e,n,r){var a=t({className:"comment",begin:e,end:n,contains:[]},r||{});return a.contains.push(p),a.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),a},b=m("//","$"),v=m("/\\*","\\*/"),x=m("#","$");var _=Object.freeze({__proto__:null,IDENT_RE:"[a-zA-Z]\\w*",UNDERSCORE_IDENT_RE:"[a-zA-Z_]\\w*",NUMBER_RE:"\\b\\d+(\\.\\d+)?",C_NUMBER_RE:d,BINARY_NUMBER_RE:"\\b(0b[01]+)",RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",BACKSLASH_ESCAPE:g,APOS_STRING_MODE:h,QUOTE_STRING_MODE:f,PHRASAL_WORDS_MODE:p,COMMENT:m,C_LINE_COMMENT_MODE:b,C_BLOCK_COMMENT_MODE:v,HASH_COMMENT_MODE:x,NUMBER_MODE:{className:"number",begin:"\\b\\d+(\\.\\d+)?",relevance:0},C_NUMBER_MODE:{className:"number",begin:d,relevance:0},BINARY_NUMBER_MODE:{className:"number",begin:"\\b(0b[01]+)",relevance:0},CSS_NUMBER_MODE:{className:"number",begin:"\\b\\d+(\\.\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},REGEXP_MODE:{begin:/(?=\/[^\/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[g,{begin:/\[/,end:/\]/,relevance:0,contains:[g]}]}]},TITLE_MODE:{className:"title",begin:"[a-zA-Z]\\w*",relevance:0},UNDERSCORE_TITLE_MODE:{className:"title",begin:"[a-zA-Z_]\\w*",relevance:0},METHOD_GUARD:{begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0}}),E="of and for in not or if then".split(" ");function R(e,n){return n?+n:(t=e,E.includes(t.toLowerCase())?0:1);var t}const N=n,w=t,{nodeStream:y,mergeStreams:O}=a;return function(n){var r=[],a={},i={},s=[],o=!0,l=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,d="Could not find the language '{}', did you forget to load/include a language module?",g={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0,__emitter:c};function h(e){return g.noHighlightRe.test(e)}function f(e,n,t,r){var a={code:n,language:e};T("before:highlight",a);var i=a.result?a.result:p(a.language,a.code,t,r);return i.code=a.code,T("after:highlight",i),i}function p(e,n,r,i){var s=n;function l(e,n){var t=v.case_insensitive?n[0].toLowerCase():n[0];return e.keywords.hasOwnProperty(t)&&e.keywords[t]}function c(){null!=_.subLanguage?function(){if(""!==k){var e="string"==typeof _.subLanguage;if(!e||a[_.subLanguage]){var n=e?p(_.subLanguage,k,!0,E[_.subLanguage]):m(k,_.subLanguage.length?_.subLanguage:void 0);_.relevance>0&&(T+=n.relevance),e&&(E[_.subLanguage]=n.top),w.addSublanguage(n.emitter,n.language)}else w.addText(k)}}():function(){var e,n,t,r;if(_.keywords){for(n=0,_.lexemesRe.lastIndex=0,t=_.lexemesRe.exec(k),r="";t;){r+=k.substring(n,t.index);var a=null;(e=l(_,t))?(w.addText(r),r="",T+=e[1],a=e[0],w.addKeyword(t[0],a)):r+=t[0],n=_.lexemesRe.lastIndex,t=_.lexemesRe.exec(k)}r+=k.substr(n),w.addText(r)}else w.addText(k)}(),k=""}function h(e){e.className&&w.openNode(e.className),_=Object.create(e,{parent:{value:_}})}var f={};function b(n,t){var a,i=t&&t[0];if(k+=n,null==i)return c(),0;if("begin"==f.type&&"end"==t.type&&f.index==t.index&&""===i){if(k+=s.slice(t.index,t.index+1),!o)throw(a=Error("0 width match regex")).languageName=e,a.badRule=f.rule,a;return 1}if(f=t,"begin"===t.type)return function(e){var n=e[0],t=e.rule;return t.__onBegin&&(t.__onBegin(e)||{}).ignoreMatch?function(e){return 0===_.matcher.regexIndex?(k+=e[0],1):(B=!0,0)}(n):(t&&t.endSameAsBegin&&(t.endRe=RegExp(n.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")),t.skip?k+=n:(t.excludeBegin&&(k+=n),c(),t.returnBegin||t.excludeBegin||(k=n)),h(t),t.returnBegin?0:n.length)}(t);if("illegal"===t.type&&!r)throw(a=Error('Illegal lexeme "'+i+'" for mode "'+(_.className||"")+'"')).mode=_,a;if("end"===t.type){var l=function(e){var n=e[0],t=s.substr(e.index),r=function e(n,t){if(function(e,n){var t=e&&e.exec(n);return t&&0===t.index}(n.endRe,t)){for(;n.endsParent&&n.parent;)n=n.parent;return n}if(n.endsWithParent)return e(n.parent,t)}(_,t);if(r){var a=_;a.skip?k+=n:(a.returnEnd||a.excludeEnd||(k+=n),c(),a.excludeEnd&&(k=n));do{_.className&&w.closeNode(),_.skip||_.subLanguage||(T+=_.relevance),_=_.parent}while(_!==r.parent);return r.starts&&(r.endSameAsBegin&&(r.starts.endRe=r.endRe),h(r.starts)),a.returnEnd?0:n.length}}(t);if(null!=l)return l}if("illegal"===t.type&&""===i)return 1;if(A>1e5&&A>3*t.index)throw Error("potential infinite loop, way more iterations than matches");return k+=i,i.length}var v=M(e);if(!v)throw console.error(d.replace("{}",e)),Error('Unknown language: "'+e+'"');!function(e){function n(n,t){return RegExp(u(n),"m"+(e.case_insensitive?"i":"")+(t?"g":""))}class r{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,n){n.position=this.position++,this.matchIndexes[this.matchAt]=n,this.regexes.push([n,e]),this.matchAt+=function(e){return RegExp(e.toString()+"|").exec("").length-1}(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);let e=this.regexes.map(e=>e[1]);this.matcherRe=n(function(e,n){for(var t=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,a="",i=0;i0&&(a+="|"),a+="(";o.length>0;){var l=t.exec(o);if(null==l){a+=o;break}a+=o.substring(0,l.index),o=o.substring(l.index+l[0].length),"\\"==l[0][0]&&l[1]?a+="\\"+(+l[1]+s):(a+=l[0],"("==l[0]&&r++)}a+=")"}return a}(e),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;let n=this.matcherRe.exec(e);if(!n)return null;let t=n.findIndex((e,n)=>n>0&&null!=e),r=this.matchIndexes[t];return Object.assign(n,r)}}class a{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];let n=new r;return this.rules.slice(e).forEach(([e,t])=>n.addRule(e,t)),n.compile(),this.multiRegexes[e]=n,n}considerAll(){this.regexIndex=0}addRule(e,n){this.rules.push([e,n]),"begin"===n.type&&this.count++}exec(e){let n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex;let t=n.exec(e);return t&&(this.regexIndex+=t.position+1,this.regexIndex===this.count&&(this.regexIndex=0)),t}}function i(e){let n=e.input[e.index-1],t=e.input[e.index+e[0].length];if("."===n||"."===t)return{ignoreMatch:!0}}if(e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");!function r(s,o){s.compiled||(s.compiled=!0,s.__onBegin=null,s.keywords=s.keywords||s.beginKeywords,s.keywords&&(s.keywords=function(e,n){var t={};return"string"==typeof e?r("keyword",e):Object.keys(e).forEach((function(n){r(n,e[n])})),t;function r(e,r){n&&(r=r.toLowerCase()),r.split(" ").forEach((function(n){var r=n.split("|");t[r[0]]=[e,R(r[0],r[1])]}))}}(s.keywords,e.case_insensitive)),s.lexemesRe=n(s.lexemes||/\w+/,!0),o&&(s.beginKeywords&&(s.begin="\\b("+s.beginKeywords.split(" ").join("|")+")(?=\\b|\\s)",s.__onBegin=i),s.begin||(s.begin=/\B|\b/),s.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),s.end&&(s.endRe=n(s.end)),s.terminator_end=u(s.end)||"",s.endsWithParent&&o.terminator_end&&(s.terminator_end+=(s.end?"|":"")+o.terminator_end)),s.illegal&&(s.illegalRe=n(s.illegal)),null==s.relevance&&(s.relevance=1),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((function(e){return function(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map((function(n){return t(e,{variants:null},n)}))),e.cached_variants?e.cached_variants:function e(n){return!!n&&(n.endsWithParent||e(n.starts))}(e)?t(e,{starts:e.starts?t(e.starts):null}):Object.isFrozen(e)?t(e):e}("self"===e?s:e)}))),s.contains.forEach((function(e){r(e,s)})),s.starts&&r(s.starts,o),s.matcher=function(e){let n=new a;return e.contains.forEach(e=>n.addRule(e.begin,{rule:e,type:"begin"})),e.terminator_end&&n.addRule(e.terminator_end,{type:"end"}),e.illegal&&n.addRule(e.illegal,{type:"illegal"}),n}(s))}(e)}(v);var x,_=i||v,E={},w=new g.__emitter(g);!function(){for(var e=[],n=_;n!==v;n=n.parent)n.className&&e.unshift(n.className);e.forEach(e=>w.openNode(e))}();var y,O,k="",T=0,L=0,A=0,B=!1;try{for(_.matcher.considerAll();A++,B?B=!1:(_.matcher.lastIndex=L,_.matcher.considerAll()),y=_.matcher.exec(s);)O=b(s.substring(L,y.index),y),L=y.index+O;return b(s.substr(L)),w.closeAllNodes(),w.finalize(),x=w.toHTML(),{relevance:T,value:x,language:e,illegal:!1,emitter:w,top:_}}catch(n){if(n.message&&n.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:n.message,context:s.slice(L-100,L+100),mode:n.mode},sofar:x,relevance:0,value:N(s),emitter:w};if(o)return{relevance:0,value:N(s),emitter:w,language:e,top:_,errorRaised:n};throw n}}function m(e,n){n=n||g.languages||Object.keys(a);var t=function(e){const n={relevance:0,emitter:new g.__emitter(g),value:N(e),illegal:!1,top:E};return n.emitter.addText(e),n}(e),r=t;return n.filter(M).filter(k).forEach((function(n){var a=p(n,e,!1);a.language=n,a.relevance>r.relevance&&(r=a),a.relevance>t.relevance&&(r=t,t=a)})),r.language&&(t.second_best=r),t}function b(e){return g.tabReplace||g.useBR?e.replace(l,(function(e,n){return g.useBR&&"\n"===e?"
":g.tabReplace?n.replace(/\t/g,g.tabReplace):""})):e}function v(e){var n,t,r,a,s,o=function(e){var n,t=e.className+" ";if(t+=e.parentNode?e.parentNode.className:"",n=g.languageDetectRe.exec(t)){var r=M(n[1]);return r||(console.warn(d.replace("{}",n[1])),console.warn("Falling back to no-highlight mode for this block.",e)),r?n[1]:"no-highlight"}return t.split(/\s+/).find(e=>h(e)||M(e))}(e);h(o)||(T("before:highlightBlock",{block:e,language:o}),g.useBR?(n=document.createElement("div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n"):n=e,s=n.textContent,r=o?f(o,s,!0):m(s),(t=y(n)).length&&((a=document.createElement("div")).innerHTML=r.value,r.value=O(t,y(a),s)),r.value=b(r.value),T("after:highlightBlock",{block:e,result:r}),e.innerHTML=r.value,e.className=function(e,n,t){var r=n?i[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),e.includes(r)||a.push(r),a.join(" ").trim()}(e.className,o,r.language),e.result={language:r.language,re:r.relevance},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.relevance}))}function x(){if(!x.called){x.called=!0;var e=document.querySelectorAll("pre code");r.forEach.call(e,v)}}const E={disableAutodetect:!0,name:"Plain text"};function M(e){return e=(e||"").toLowerCase(),a[e]||a[i[e]]}function k(e){var n=M(e);return n&&!n.disableAutodetect}function T(e,n){var t=e;s.forEach((function(e){e[t]&&e[t](n)}))}Object.assign(n,{highlight:f,highlightAuto:m,fixMarkup:b,highlightBlock:v,configure:function(e){g=w(g,e)},initHighlighting:x,initHighlightingOnLoad:function(){window.addEventListener("DOMContentLoaded",x,!1)},registerLanguage:function(e,t){var r;try{r=t(n)}catch(n){if(console.error("Language definition for '{}' could not be registered.".replace("{}",e)),!o)throw n;console.error(n),r=E}r.name||(r.name=e),a[e]=r,r.rawDefinition=t.bind(null,n),r.aliases&&r.aliases.forEach((function(n){i[n]=e}))},listLanguages:function(){return Object.keys(a)},getLanguage:M,requireLanguage:function(e){var n=M(e);if(n)return n;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))},autoDetection:k,inherit:w,addPlugin:function(e,n){s.push(e)}}),n.debugMode=function(){o=!1},n.safeMode=function(){o=!0},n.versionString="10.0.2";for(const n in _)"object"==typeof _[n]&&e(_[n]);return Object.assign(n,_),n}({})}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);hljs.registerLanguage("nix",function(){"use strict";return function(e){var n={keyword:"rec with let in inherit assert if else then",literal:"true false or and null",built_in:"import abort baseNameOf dirOf isNull builtins map removeAttrs throw toString derivation"},i={className:"subst",begin:/\$\{/,end:/}/,keywords:n},t={className:"string",contains:[i],variants:[{begin:"''",end:"''"},{begin:'"',end:'"'}]},s=[e.NUMBER_MODE,e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t,{begin:/[a-zA-Z0-9-_]+(\s*=)/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/\S+/}]}];return i.contains=s,{name:"Nix",aliases:["nixos"],keywords:n,contains:s}}}());hljs.registerLanguage("bash",function(){"use strict";return function(e){const s={};Object.assign(s,{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{/,end:/\}/,contains:[{begin:/:-/,contains:[s]}]}]});const n={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},t={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,n]};n.contains.push(t);const a={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,s]};return{name:"Bash",aliases:["sh","zsh"],lexemes:/\b-?[a-z\._]+\b/,keywords:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},contains:[{className:"meta",begin:/^#![^\n]+sh\s*$/,relevance:10},{className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},a,e.HASH_COMMENT_MODE,t,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},s]}}}());hljs.registerLanguage("shell",function(){"use strict";return function(s){return{name:"Shell Session",aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[/\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}}()); \ No newline at end of file diff --git a/images/callouts/1.svg b/images/callouts/1.svg new file mode 100644 index 0000000..e2e87dc --- /dev/null +++ b/images/callouts/1.svg @@ -0,0 +1,15 @@ + + + + +]> + + + + + + + + diff --git a/images/callouts/10.svg b/images/callouts/10.svg new file mode 100644 index 0000000..4740f58 --- /dev/null +++ b/images/callouts/10.svg @@ -0,0 +1,18 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/11.svg b/images/callouts/11.svg new file mode 100644 index 0000000..09a0b2c --- /dev/null +++ b/images/callouts/11.svg @@ -0,0 +1,16 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/12.svg b/images/callouts/12.svg new file mode 100644 index 0000000..9794044 --- /dev/null +++ b/images/callouts/12.svg @@ -0,0 +1,18 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/13.svg b/images/callouts/13.svg new file mode 100644 index 0000000..64268bb --- /dev/null +++ b/images/callouts/13.svg @@ -0,0 +1,20 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/14.svg b/images/callouts/14.svg new file mode 100644 index 0000000..469aa97 --- /dev/null +++ b/images/callouts/14.svg @@ -0,0 +1,17 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/15.svg b/images/callouts/15.svg new file mode 100644 index 0000000..8202233 --- /dev/null +++ b/images/callouts/15.svg @@ -0,0 +1,19 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/16.svg b/images/callouts/16.svg new file mode 100644 index 0000000..01d6bf8 --- /dev/null +++ b/images/callouts/16.svg @@ -0,0 +1,20 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/17.svg b/images/callouts/17.svg new file mode 100644 index 0000000..0a04c55 --- /dev/null +++ b/images/callouts/17.svg @@ -0,0 +1,17 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/18.svg b/images/callouts/18.svg new file mode 100644 index 0000000..1cb891b --- /dev/null +++ b/images/callouts/18.svg @@ -0,0 +1,21 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/19.svg b/images/callouts/19.svg new file mode 100644 index 0000000..e6fbb17 --- /dev/null +++ b/images/callouts/19.svg @@ -0,0 +1,20 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/2.svg b/images/callouts/2.svg new file mode 100644 index 0000000..07d0339 --- /dev/null +++ b/images/callouts/2.svg @@ -0,0 +1,17 @@ + + + + +]> + + + + + + + + diff --git a/images/callouts/20.svg b/images/callouts/20.svg new file mode 100644 index 0000000..ccbfd40 --- /dev/null +++ b/images/callouts/20.svg @@ -0,0 +1,20 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/21.svg b/images/callouts/21.svg new file mode 100644 index 0000000..93ec53f --- /dev/null +++ b/images/callouts/21.svg @@ -0,0 +1,18 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/22.svg b/images/callouts/22.svg new file mode 100644 index 0000000..f48c5f3 --- /dev/null +++ b/images/callouts/22.svg @@ -0,0 +1,20 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/23.svg b/images/callouts/23.svg new file mode 100644 index 0000000..6624212 --- /dev/null +++ b/images/callouts/23.svg @@ -0,0 +1,22 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/24.svg b/images/callouts/24.svg new file mode 100644 index 0000000..a3d5525 --- /dev/null +++ b/images/callouts/24.svg @@ -0,0 +1,19 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/25.svg b/images/callouts/25.svg new file mode 100644 index 0000000..56614a9 --- /dev/null +++ b/images/callouts/25.svg @@ -0,0 +1,21 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/26.svg b/images/callouts/26.svg new file mode 100644 index 0000000..56faeac --- /dev/null +++ b/images/callouts/26.svg @@ -0,0 +1,22 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/27.svg b/images/callouts/27.svg new file mode 100644 index 0000000..a75c812 --- /dev/null +++ b/images/callouts/27.svg @@ -0,0 +1,19 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/28.svg b/images/callouts/28.svg new file mode 100644 index 0000000..7f8cf1a --- /dev/null +++ b/images/callouts/28.svg @@ -0,0 +1,23 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/29.svg b/images/callouts/29.svg new file mode 100644 index 0000000..cb63adf --- /dev/null +++ b/images/callouts/29.svg @@ -0,0 +1,22 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/3.svg b/images/callouts/3.svg new file mode 100644 index 0000000..918be80 --- /dev/null +++ b/images/callouts/3.svg @@ -0,0 +1,19 @@ + + + + +]> + + + + + + + + diff --git a/images/callouts/30.svg b/images/callouts/30.svg new file mode 100644 index 0000000..dc43ba1 --- /dev/null +++ b/images/callouts/30.svg @@ -0,0 +1,22 @@ + + + + +]> + + + + + + + + + diff --git a/images/callouts/4.svg b/images/callouts/4.svg new file mode 100644 index 0000000..8eb6a53 --- /dev/null +++ b/images/callouts/4.svg @@ -0,0 +1,16 @@ + + + + +]> + + + + + + + + diff --git a/images/callouts/5.svg b/images/callouts/5.svg new file mode 100644 index 0000000..ca7a9f2 --- /dev/null +++ b/images/callouts/5.svg @@ -0,0 +1,18 @@ + + + + +]> + + + + + + + + diff --git a/images/callouts/6.svg b/images/callouts/6.svg new file mode 100644 index 0000000..783a0b9 --- /dev/null +++ b/images/callouts/6.svg @@ -0,0 +1,19 @@ + + + + +]> + + + + + + + + diff --git a/images/callouts/7.svg b/images/callouts/7.svg new file mode 100644 index 0000000..59b3714 --- /dev/null +++ b/images/callouts/7.svg @@ -0,0 +1,16 @@ + + + + +]> + + + + + + + + diff --git a/images/callouts/8.svg b/images/callouts/8.svg new file mode 100644 index 0000000..c1803a3 --- /dev/null +++ b/images/callouts/8.svg @@ -0,0 +1,20 @@ + + + + +]> + + + + + + + + diff --git a/images/callouts/9.svg b/images/callouts/9.svg new file mode 100644 index 0000000..bc149d3 --- /dev/null +++ b/images/callouts/9.svg @@ -0,0 +1,19 @@ + + + + +]> + + + + + + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..da62d5e --- /dev/null +++ b/index.html @@ -0,0 +1,102 @@ + +neovim-flake Manual

neovim-flake Manual


Preface

+ If you encounter problems or want to discuss neovim-flake then join the Matrix room + #neovim-flake:matrix.org. + If your problem is caused by a bug in neovim-flake then it should be reported on the + neovim-flake issue tracker. +

Chapter 1. Default Configs

While you can configure neovim-flake yourself using the builder, here are a few default configurations you can use.

1.1. Tidal Cycles

$ nix run github:jordanisaacs/neovim-flake#tidal file.tidal

Utilizing vim-tidal and mitchmindtree’s fantastic tidalcycles.nix start playing with tidal cycles in a single command.

In your tidal file, type a cycle e.g. d1 $ s "drum" and then press ctrl+enter. Super collider with superdirt, and a modified GHCI with tidal will start up and begin playing. Note, you need jack enabled on your system. If you are using pipewire, its as easy as setting services.pipewire.jack.enable = true.

1.2. Nix

$ nix run github:jordanisaacs/neovim-flake#nix test.nix

Enables all the of neovim plugins, with language support for specifically Nix. This lets you see what a fully configured neovim setup looks like without downloading a whole bunch of language servers and associated tools.

1.3. Maximal

$ nix shell github:jordanisaacs/neovim-flake#maximal test.nix

It is the same fully configured neovim as with the Nix config, but with every supported language enabled.

Note

Running the maximal config will download a lot of packages as it is downloading language servers, formatters, and more.

Chapter 2. Custom Configuration

Custom configuration is done with the neovimConfiguration function. It takes in the configuration as a module. The output of the configuration function is an attrset.

{
+  options = "The options that were available to configure";
+  config = "The outputted configuration";
+  pkgs = "The package set used to evaluate the module";
+  neovim = "The built neovim package";
+}

The following is an example of a barebones vim configuration with the default theme enabled.

{
+  inputs.neovim-flake.url = "github:jordanisaacs/neovim-flake";
+
+  outputs = {nixpkgs, neovim-flake, ...}: let
+    system = "x86_64-linux";
+    pkgs = nixpkgs.legacyPackages.${system};
+    configModule = {
+      # Add any custom options (and feel free to upstream them!)
+      # options = ...
+
+      config.vim.theme.enable = true;
+    };
+
+    customNeovim = neovim-flake.lib.neovimConfiguration {
+      modules = [configModule];
+      inherit pkgs;
+    };
+  in {
+    packages.${system}.neovim = customNeovim.neovim;
+  };
+}

Chapter 3. Language Support

Language specific support combines some combination of language specific plugins, treesitter support, nvim-lspconfig langauge servers, and null-ls integration. This gets you capabilities ranging from autocompletion to formatting to diagnostics. The following languages have support beyond just treesitter highlighting.

3.1. Rust

LSP Server: rust-analyzer

Formatting: Built into LSP, uses rustfmt

Plugins: See here

3.2. Nix

LSP Server: Choice between nil and rnix-lsp

Formatting: Choice between alejandra and nixpkgs-fmt

3.3. SQL

LSP Server: sqls

Formatting: Disabled LSP formatting, instead using sqlfluff

Linting: sqlfluff

Plugins: See here

3.4. C/C++

LSP Server: ccls

Formatting: Built into language server

3.5. Typescript

LSP Server: typescript-language-server

Formatting: Disabled LSP formatting, instead using prettier

Linting: eslint

3.6. Python

LSP Server: pyright

Formatting: black

3.7. Zig

LSP Server: zls

Formatting: Built into LSP, uses zig fmt.

3.8. Markdown

Plugins: See here

3.9. HTML

Plugins: See here

Chapter 4. Plugins

The following are the neovim plugins used within neovim-flake. Some plugins are explicitly enabled by the user, while others are enabled implicitly.

4.1. Language Server

4.2. Buffers

4.3. Statuslines

4.4. Filetrees

4.5. Git

4.6. Treesitter

4.7. Visuals

4.8. Utilities

  • +telescope an extendable fuzzy finder of lists. Working ripgrep and fd +
  • +which-key a popup that displays possible keybindings of command being typed +

4.9. Completions

4.10. Snippets

  • +vim-vsnip a snippet plugin that supports LSP/VSCode’s snippet format +

4.11. Autopairs

4.12. Themes

  • +onedark a dark colorscheme with multiple options +
  • +tokyonight-nvim a neovim theme with multiple color options +
  • +catppuccin a pastel theme with 4 color options +

4.13. Markdown

  • +glow.nvim a markdown preview directly in neovim using glow +

4.14. Rust

4.15. Tidal Cycles

  • +vim-tidal for tidal cycles integration into vim +

4.16. SQL

  • +sqls.nvim for useful actions that leverage sqls LSP +

4.17. HTML

4.18. Dependencies

  • +plenary which is a dependency of some plugins, installed automatically if needed +
\ No newline at end of file diff --git a/mono-blue.css b/mono-blue.css new file mode 100644 index 0000000..24a35a3 --- /dev/null +++ b/mono-blue.css @@ -0,0 +1,56 @@ +/* + Five-color theme from a single blue hue. +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #eaeef3; + color: #00193a; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-comment { + color: #738191; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-addition, +.hljs-tag, +.hljs-quote, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #0048ab; +} + +.hljs-meta, +.hljs-subst, +.hljs-symbol, +.hljs-regexp, +.hljs-attribute, +.hljs-deletion, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-bullet { + color: #4c81c9; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/options.html b/options.html new file mode 100644 index 0000000..df0e67e --- /dev/null +++ b/options.html @@ -0,0 +1,384 @@ + +Appendix A. Configuration Options

Appendix A. Configuration Options

_module.args

Type: lazy attribute set of raw value

Declared by:

+ <neovim-flake/lib/modules.nix> +
vim.autoIndent

Enable auto indent

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/basic> +
vim.autocomplete.enable

enable autocomplete

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/completion> +
vim.autocomplete.type

Set the autocomplete plugin. Options: [nvim-cmp]

Type: value "nvim-cmp" (singular enum)

Default: "nvim-cmp"

Declared by:

+ <neovim-flake/modules/completion> +
vim.autopairs.enable

enable autopairs

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/autopairs> +
vim.autopairs.type

Set the autopairs type. Options: nvim-autopairs [nvim-autopairs]

Type: value "nvim-autopairs" (singular enum)

Default: "nvim-autopairs"

Declared by:

+ <neovim-flake/modules/autopairs> +
vim.bell

Set how bells are handled. Options: on, visual or none

Type: one of "none", "visual", "on"

Default: "none"

Declared by:

+ <neovim-flake/modules/basic> +
vim.cmap

Defines 'Command-line mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.cmdHeight

Height of the command pane

Type: signed integer

Default: 1

Declared by:

+ <neovim-flake/modules/basic> +
vim.cnoremap

Defines 'Command-line mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.colourTerm

Set terminal up for 256 colours

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/basic> +
vim.configRC

vimrc contents

Type: DAG of strings concatenated with "\n"

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.disableArrows

Set to prevent arrow keys from moving cursor

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/basic> +
vim.filetree.nvimTreeLua.enable

Enable nvim-tree-lua

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.closeOnFileOpen

Closes the tree when a file is opened.

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.closeOnLastWindow

Close when tree is last window open

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.disableNetRW

Disables netrw and replaces it with tree

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.followBufferFile

Follow file that is in current buffer on tree

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.groupEmptyFolders

Compact empty folders trees into a single item

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.hideDotFiles

Hide dotfiles

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.hideFiles

Files to hide in the file view by default.

Type: list of string

Default: + [ + ".git" "node_modules" ".cache" + ] +

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.hideIgnoredGitFiles

Hide files ignored by git

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.hijackNetRW

Prevents netrw from automatically opening when opening directories

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.ignoreFileTypes

Ignore file types

Type: list of string

Default: + [ + + ] +

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.indentMarkers

Show indent markers

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.lspDiagnostics

Shows lsp diagnostics in the tree

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.openOnSetup

Open when vim is started on a directory

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.openTreeOnNewTab

Opens the tree view when opening a new tab

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.resizeOnFileOpen

Resizes the tree when opening a file.

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.systemOpenCmd

The command used to open a file with the associated default program

Type: string

Default: "\${pkgs.xdg-utils}/bin/xdg-open"

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.trailingSlash

Add a trailing slash to all folders

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.treeSide

Side the tree will appear on left or right

Type: one of "left", "right"

Default: "left"

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.filetree.nvimTreeLua.treeWidth

Width of the tree in charecters

Type: signed integer

Default: 25

Declared by:

+ <neovim-flake/modules/filetree/nvimtreelua.nix> +
vim.git.enable

Enable git plugins

Type: boolean

Declared by:

+ <neovim-flake/modules/git/git.nix> +
vim.git.gitsigns.enable

Enable git options

Type: boolean

Declared by:

+ <neovim-flake/modules/git/git.nix> +
vim.globals

Set containing global variable values

Type: attribute set

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.hideSearchHighlight

Hide search highlight so it doesn't stay highlighted

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/basic> +
vim.imap

Defines 'Insert and Replace mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.inoremap

Defines 'Insert and Replace mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.keys.enable

Whether to enable key binding plugins.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/keys/which-key.nix> +
vim.keys.whichKey.enable

Whether to enable which-key menu.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/keys/which-key.nix> +
vim.lineNumberMode

How line numbers are displayed. none, relative, number, relNumber

Type: one of "relative", "number", "relNumber", "none"

Default: "relNumber"

Declared by:

+ <neovim-flake/modules/basic> +
vim.lsp.enable

Whether to enable neovim lsp support.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.lsp.clang.enable

Whether to enable C language LSP.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.lsp.clang.c_header

Whether to enable C syntax header files.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.lsp.clang.cclsOpts

Type: string

Default: ""

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.lsp.formatOnSave

Whether to enable Format on save.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.lsp.go

Whether to enable Go language LSP.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.lsp.lightbulb.enable

Whether to enable lightbulb for code actions. Requires emoji font.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/lightbulb.nix> +
vim.lsp.lspSignature.enable

Whether to enable lsp signature viewer.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/lsp-signature.nix> +
vim.lsp.lspsaga.enable

Whether to enable LSP Saga.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/lspsaga.nix> +
vim.lsp.nix.enable

Whether to enable Nix LSP.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.lsp.nix.formatter

Which nix formatter to use

Type: one of "nixpkgs-fmt", "alejandra"

Default: "alejandra"

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.lsp.nix.pkg

The LSP package to use

Type: package

Default: (build of nil-unstable-2022-11-27)

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.lsp.nix.server

Which LSP to use

Type: one of "rnix", "nil"

Default: "nil"

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.lsp.nvimCodeActionMenu.enable

Whether to enable nvim code action menu.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/nvim-code-action-menu.nix> +
vim.lsp.python

Whether to enable Python LSP.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.lsp.rust.enable

Whether to enable Rust LSP.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.lsp.rust.rustAnalyzerOpts

options to pass to rust analyzer

Type: string

Default:

''
+["rust-analyzer"] = {
+  experimental = {
+    procAttrMacros = true,
+  },
+},
+''

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.lsp.sql

Whether to enable SQL Language LSP.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.lsp.trouble.enable

Whether to enable trouble diagnostics viewer.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/trouble.nix> +
vim.lsp.ts

Whether to enable TS language LSP.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.lsp.zig.enable

Whether to enable Zig language LSP.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/lsp/lsp.nix> +
vim.luaConfigRC

vim lua config

Type: DAG of strings concatenated with "\n"

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.mapLeaderSpace

Map the space key to leader key

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/basic> +
vim.mapTimeout

Timeout in ms that neovim will wait for mapped action to complete

Type: signed integer

Default: 500

Declared by:

+ <neovim-flake/modules/basic> +
vim.markdown.enable

Whether to enable markdown tools and plugins.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/markdown/glow.nix> +
vim.markdown.glow.enable

Enable markdown preview in neovim with glow

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/markdown/glow.nix> +
vim.mouseSupport

Set modes for mouse support. a - all, n - normal, v - visual, i - insert, c - command

Type: one of "a", "n", "v", "i", "c"

Default: "a"

Declared by:

+ <neovim-flake/modules/basic> +
vim.nmap

Defines 'Normal mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.nnoremap

Defines 'Normal mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.omap

Defines 'Operator pending mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.onoremap

Defines 'Operator pending mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.optPlugins

List of plugins to optionally load

Type: list of (null or one of "nvim-treesitter-context", "gitsigns-nvim", "plenary-nvim", "nvim-lspconfig", "nvim-treesitter", "lspsaga", "lspkind", "nvim-lightbulb", "lsp-signature", "nvim-tree-lua", "nvim-bufferline-lua", "lualine", "nvim-compe", "nvim-autopairs", "nvim-ts-autotag", "nvim-web-devicons", "tokyonight", "bufdelete-nvim", "nvim-cmp", "cmp-nvim-lsp", "cmp-buffer", "cmp-vsnip", "cmp-path", "cmp-treesitter", "crates-nvim", "vim-vsnip", "nvim-code-action-menu", "trouble", "null-ls", "which-key", "indent-blankline", "nvim-cursorline", "sqls-nvim", "glow-nvim", "telescope", "rust-tools", "onedark", "catppuccin" or package)

Default: + [ + + ] +

Declared by:

+ <neovim-flake/modules/core> +
vim.preventJunkFiles

Prevent swapfile, backupfile from being created

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/basic> +
vim.scrollOffset

Start scrolling this number of lines from the top or bottom of the page.

Type: signed integer

Default: 8

Declared by:

+ <neovim-flake/modules/basic> +
vim.showSignColumn

Show the sign column

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/basic> +
vim.smap

Defines 'Select mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.snippets.vsnip.enable

Whether to enable Enable vim-vsnip.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/snippets/vsnip.nix> +
vim.snoremap

Defines 'Select mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.splitBelow

New splits will open below instead of on top

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/basic> +
vim.splitRight

New splits will open to the right

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/basic> +
vim.startPlugins

List of plugins to startup.

Type: list of (null or one of "nvim-treesitter-context", "gitsigns-nvim", "plenary-nvim", "nvim-lspconfig", "nvim-treesitter", "lspsaga", "lspkind", "nvim-lightbulb", "lsp-signature", "nvim-tree-lua", "nvim-bufferline-lua", "lualine", "nvim-compe", "nvim-autopairs", "nvim-ts-autotag", "nvim-web-devicons", "tokyonight", "bufdelete-nvim", "nvim-cmp", "cmp-nvim-lsp", "cmp-buffer", "cmp-vsnip", "cmp-path", "cmp-treesitter", "crates-nvim", "vim-vsnip", "nvim-code-action-menu", "trouble", "null-ls", "which-key", "indent-blankline", "nvim-cursorline", "sqls-nvim", "glow-nvim", "telescope", "rust-tools", "onedark", "catppuccin" or package)

Default: + [ + + ] +

Declared by:

+ <neovim-flake/modules/core> +
vim.statusline.lualine.enable

Enable lualine

Type: boolean

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.activeSection.a

active config for: | (A) | B | C X | Y | Z |

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.activeSection.b

active config for: | A | (B) | C X | Y | Z |

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.activeSection.c

active config for: | A | B | (C) X | Y | Z |

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.activeSection.x

active config for: | A | B | C (X) | Y | Z |

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.activeSection.y

active config for: | A | B | C X | (Y) | Z |

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.activeSection.z

active config for: | A | B | C X | Y | (Z) |

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.componentSeparator.left

Component separator for left side

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.componentSeparator.right

Component separator for right side

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.icons

Enable icons for lualine

Type: boolean

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.inactiveSection.a

inactive config for: | (A) | B | C X | Y | Z |

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.inactiveSection.b

inactive config for: | A | (B) | C X | Y | Z |

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.inactiveSection.c

inactive config for: | A | B | (C) X | Y | Z |

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.inactiveSection.x

inactive config for: | A | B | C (X) | Y | Z |

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.inactiveSection.y

inactive config for: | A | B | C X | (Y) | Z |

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.inactiveSection.z

inactive config for: | A | B | C X | Y | (Z) |

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.sectionSeparator.left

Section separator for left side

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.sectionSeparator.right

Section separator for right side

Type: string

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.statusline.lualine.theme

Theme for lualine

Type: one of "auto", "16color", "gruvbox", "ayu_dark", "ayu_light", "ayu_mirage", "codedark", "dracula", "everforest", "gruvbox", "gruvbox_light", "gruvbox_material", "horizon", "iceberg_dark", "iceberg_light", "jellybeans", "material", "modus_vivendi", "molokai", "nightfly", "nord", "oceanicnext", "onelight", "palenight", "papercolor_dark", "papercolor_light", "powerline", "seoul256", "solarized_dark", "tomorrow", "wombat", "onedark"

Declared by:

+ <neovim-flake/modules/statusline/lualine.nix> +
vim.syntaxHighlighting

Enable syntax highlighting

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/basic> +
vim.tabWidth

Set the width of tabs

Type: signed integer

Default: 4

Declared by:

+ <neovim-flake/modules/basic> +
vim.tabline.nvimBufferline.enable

Whether to enable nvim-bufferline-lua.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/tabline/nvim-bufferline.nix> +
vim.telescope.enable

Whether to enable enable telescope.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/telescope> +
vim.theme.enable

Enable Theme

Type: boolean

Declared by:

+ <neovim-flake/modules/theme/theme.nix> +
vim.theme.extraConfig

Additional lua configuration to add before setup

Type: strings concatenated with "\n"

Declared by:

+ <neovim-flake/modules/theme/theme.nix> +
vim.theme.name

Supported themes can be found in `supported_themes.nix`

Type: one of "catppuccin", "onedark", "tokyonight"

Declared by:

+ <neovim-flake/modules/theme/theme.nix> +
vim.theme.style

Specific style for theme if it supports it

Type: one of "dark", "darker", "cool", "deep", "warm", "warmer"

Declared by:

+ <neovim-flake/modules/theme/theme.nix> +
vim.tidal.enable

Whether to enable tidal tools and plugins.

Type: boolean

Default: false

Example: true

Declared by:

+ <neovim-flake/modules/tidal/tidal.nix> +
vim.tidal.flash

When sending a paragraph or a single line, vim-tidal will "flash" the selection for some milliseconds

Type: signed integer

Default: 150

Declared by:

+ <neovim-flake/modules/tidal/tidal.nix> +
vim.tidal.openSC

Automatically run the supercollider CLI, sclang, alongside the Tidal GHCI terminal.

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/tidal/tidal.nix> +
vim.tmap

Defines 'Terminal mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.tnoremap

Defines 'Terminal mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.treesitter.enable

enable tree-sitter [nvim-treesitter]

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/treesitter/treesitter.nix> +
vim.treesitter.autotagHtml

enable autoclose and rename html tag [nvim-ts-autotag]

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/treesitter/treesitter.nix> +
vim.treesitter.context.enable

enable function context [nvim-treesitter-context]

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/treesitter/context.nix> +
vim.treesitter.fold

enable fold with tree-sitter

Type: boolean

Default: false

Declared by:

+ <neovim-flake/modules/treesitter/treesitter.nix> +
vim.treesitter.grammars

List of treesitter grammars to install. +When enabling a language, its treesitter grammar is added for you. +

Type: list of package

Default: + [ + (build of c-grammar-7175a6d) (build of cpp-grammar-5ead1e2) (build of nix-grammar-6b71a81) (build of python-grammar-b14614e) (build of rust-grammar-0431a2c) (build of markdown-grammar-16d0b5e) (build of comment-grammar-a37ca37) (build of toml-grammar-8bd2056) (build of make-grammar-a4b9187) (build of tsx-grammar-0ae3828) (build of html-grammar-29f53d8) (build of javascript-grammar-cefdcea) (build of css-grammar-769203d) (build of graphql-grammar-5e66e96) (build of json-grammar-7307675) (build of zig-grammar-d90d38d) + ] +

Declared by:

+ <neovim-flake/modules/treesitter/treesitter.nix> +
vim.updateTime

The number of milliseconds till Cursor Hold event is fired

Type: signed integer

Default: 300

Declared by:

+ <neovim-flake/modules/basic> +
vim.useSystemClipboard

Make use of the clipboard for default yank and paste operations. Don't use * and +

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/basic> +
vim.viAlias

Enable vi alias

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/core> +
vim.vimAlias

Enable vim alias

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/core> +
vim.visuals.enable

visual enhancements

Type: boolean

Declared by:

+ <neovim-flake/modules/visuals/visuals.nix> +
vim.visuals.cursorWordline.enable

enable word and delayed line highlight [nvim-cursorline]

Type: boolean

Declared by:

+ <neovim-flake/modules/visuals/visuals.nix> +
vim.visuals.cursorWordline.lineTimeout

time in milliseconds for cursorline to appear

Type: signed integer

Declared by:

+ <neovim-flake/modules/visuals/visuals.nix> +
vim.visuals.indentBlankline.enable

enable indentation guides [indent-blankline]

Type: boolean

Declared by:

+ <neovim-flake/modules/visuals/visuals.nix> +
vim.visuals.indentBlankline.eolChar

Character at end of line

Type: string

Declared by:

+ <neovim-flake/modules/visuals/visuals.nix> +
vim.visuals.indentBlankline.fillChar

Character to fill indents

Type: string

Declared by:

+ <neovim-flake/modules/visuals/visuals.nix> +
vim.visuals.indentBlankline.listChar

Character for indentation line

Type: string

Declared by:

+ <neovim-flake/modules/visuals/visuals.nix> +
vim.visuals.indentBlankline.showCurrContext

Highlight current context from treesitter

Type: boolean

Declared by:

+ <neovim-flake/modules/visuals/visuals.nix> +
vim.visuals.lspkind.enable

enable vscode-like pictograms for lsp [lspkind]

Type: boolean

Declared by:

+ <neovim-flake/modules/visuals/visuals.nix> +
vim.visuals.nvimWebDevicons.enable

enable dev icons. required for certain plugins [nvim-web-devicons]

Type: boolean

Declared by:

+ <neovim-flake/modules/visuals/visuals.nix> +
vim.vmap

Defines 'Visual and Select mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.vnoremap

Defines 'Visual and Select mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.wordWrap

Enable word wrapping.

Type: boolean

Default: true

Declared by:

+ <neovim-flake/modules/basic> +
vim.xmap

Defines 'Visual mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
vim.xnoremap

Defines 'Visual mode' mappings

Type: attribute set of (null or string)

Default: + { + + } +

Declared by:

+ <neovim-flake/modules/core> +
\ No newline at end of file diff --git a/overrides.css b/overrides.css new file mode 100644 index 0000000..feb9610 --- /dev/null +++ b/overrides.css @@ -0,0 +1,14 @@ +.docbook .xref img[src^=images\/callouts\/], +.screen img, +.programlisting img { + width: 1em; +} + +.calloutlist img { + width: 1.5em; +} + +/** The console prompt, e.g., `$` and `#` should not be selectable. */ +.programlisting.console .hljs-meta { + user-select: none; +} diff --git a/release-notes.html b/release-notes.html new file mode 100644 index 0000000..22f29e1 --- /dev/null +++ b/release-notes.html @@ -0,0 +1,14 @@ + +Appendix B. Release Notes

Release Notes

This section lists the release notes for tagged version of neovim-flake and current main.

B.1. Release 0.1

This is the current master branch and information here is not final. These are changes from the v0.01 tag.

Special thanks to home-manager for this release. Docs/manual generation, the new module evaluation system, and DAG implementation are from them.

B.1.1. Changelog

jordanisaacs:

  • +Removed hare language support (lsp/tree-sitter/etc). vim.lsp.hare is no longer defined. If you use hare and would like it added back, please file an issue. +
  • +vim.startPlugins & vim.optPlugins are now an enum of string for options sourced from the flake inputs. Users can still provide vim plugin packages. +

    If you are contributing and adding a new plugin, add the plugin name to availablePlugins in types-plugin.nix.

  • +neovimBuilder has been removed for configuration. Using an overlay is no longer required. See the manual for the new way to configuration. +
  • +Treesitter grammars are now configurable with vim.treesitter.grammars. Utilizes the nixpkgs nvim-treesitter plugin rather than a custom input in order to take advantage of build support of pinned versions. See discourse for more information. Packages can be found under the vimPlugins.nvim-treesitter.builtGrammars namespace. +
  • +vim.configRC and vim.luaConfigRC are now of type DAG lines. This allows for ordering of the config. Usage is the same is in home-manager’s home.activation option. +

    vim.luaConfigRC = lib.nvim.dag.entryAnywhere "config here"

MoritzBoehme:

\ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..474dd32 --- /dev/null +++ b/style.css @@ -0,0 +1,291 @@ +/* Copied from http://bakefile.sourceforge.net/, which appears + licensed under the GNU GPL. */ + + +/*************************************************************************** + Basic headers and text: + ***************************************************************************/ + +body +{ + font-family: "Nimbus Sans L", sans-serif; + font-size: 1em; + background: white; + margin: 2em 1em 2em 1em; +} + +h1, h2, h3, h4 +{ + color: #005aa0; +} + +h1 /* title */ +{ + font-size: 200%; +} + +h2 /* chapters, appendices, subtitle */ +{ + font-size: 180%; +} + +div.book +{ + text-align: center; +} + +div.book > div +{ + /* + * based on https://medium.com/@zkareemz/golden-ratio-62b3b6d4282a + * we do 70 characters per line to fit code listings better + * 70 * (font-size / 1.618) + * expression for emacs: + * (* 70 (/ 1 1.618)) + */ + max-width: 43.2em; + text-align: left; + margin: auto; +} + +/* Extra space between chapters, appendices. */ +div.chapter > div.titlepage h2, div.appendix > div.titlepage h2 +{ + margin-top: 1.5em; +} + +div.section > div.titlepage h2 /* sections */ +{ + font-size: 150%; + margin-top: 1.5em; +} + +h3 /* subsections */ +{ + font-size: 125%; +} + +div.simplesect h2 +{ + font-size: 110%; +} + +div.appendix h3 +{ + font-size: 150%; + margin-top: 1.5em; +} + +div.refnamediv h2, div.refsynopsisdiv h2, div.refsection h2 /* refentry parts */ +{ + margin-top: 1.4em; + font-size: 125%; +} + +div.refsection h3 +{ + font-size: 110%; +} + + +/*************************************************************************** + Examples: + ***************************************************************************/ + +div.example +{ + border: 1px solid #b0b0b0; + padding: 6px 6px; + margin-left: 1.5em; + margin-right: 1.5em; + background: #f4f4f8; + border-radius: 0.4em; + box-shadow: 0.4em 0.4em 0.5em #e0e0e0; +} + +div.example p.title +{ + margin-top: 0em; +} + +div.example pre +{ + box-shadow: none; +} + + +/*************************************************************************** + Screen dumps: + ***************************************************************************/ + +pre.screen, pre.programlisting +{ + border: 1px solid #b0b0b0; + padding: 3px 3px; + margin-left: 0.5em; + margin-right: 0.5em; + + background: #f4f4f8; + font-family: monospace; + border-radius: 0.4em; + box-shadow: 0.4em 0.4em 0.5em #e0e0e0; +} + +div.example pre.programlisting +{ + border: 0px; + padding: 0 0; + margin: 0 0 0 0; +} + +/*************************************************************************** + Notes, warnings etc: + ***************************************************************************/ + +.note, .warning +{ + border: 1px solid #b0b0b0; + padding: 3px 3px; + margin-left: 1.5em; + margin-right: 1.5em; + margin-bottom: 1em; + padding: 0.3em 0.3em 0.3em 0.3em; + background: #fffff5; + border-radius: 0.4em; + box-shadow: 0.4em 0.4em 0.5em #e0e0e0; +} + +div.note, div.warning +{ + font-style: italic; +} + +div.note h3, div.warning h3 +{ + color: red; + font-size: 100%; + padding-right: 0.5em; + display: inline; +} + +div.note p, div.warning p +{ + margin-bottom: 0em; +} + +div.note h3 + p, div.warning h3 + p +{ + display: inline; +} + +div.note h3 +{ + color: blue; + font-size: 100%; +} + +div.navfooter * +{ + font-size: 90%; +} + + +/*************************************************************************** + Links colors and highlighting: + ***************************************************************************/ + +a { text-decoration: none; } +a:hover { text-decoration: underline; } +a:link { color: #0048b3; } +a:visited { color: #002a6a; } + + +/*************************************************************************** + Table of contents: + ***************************************************************************/ + +div.toc +{ + font-size: 90%; +} + +div.toc dl +{ + margin-top: 0em; + margin-bottom: 0em; +} + + +/*************************************************************************** + Special elements: + ***************************************************************************/ + +tt, code +{ + color: #400000; +} + +.term +{ + font-weight: bold; + +} + +div.variablelist dd p, div.glosslist dd p +{ + margin-top: 0em; +} + +div.variablelist dd, div.glosslist dd +{ + margin-left: 1.5em; +} + +div.glosslist dt +{ + font-style: italic; +} + +.varname +{ + color: #400000; +} + +span.command strong +{ + font-weight: normal; + color: #400000; +} + +div.calloutlist table +{ + box-shadow: none; +} + +table +{ + border-collapse: collapse; + box-shadow: 0.4em 0.4em 0.5em #e0e0e0; +} + +table.simplelist +{ + text-align: left; + color: #005aa0; + border: 0; + padding: 5px; + background: #fffff5; + font-weight: normal; + font-style: italic; + box-shadow: none; + margin-bottom: 1em; +} + +div.navheader table, div.navfooter table { + box-shadow: none; +} + +div.affiliation +{ + font-style: italic; +}