This commit is contained in:
NotAShelf 2024-12-12 17:18:07 +00:00
parent 8cc7cdac46
commit bd42afe2e2
13 changed files with 60 additions and 41663 deletions

View file

@ -1,29 +0,0 @@
BSD 3-Clause License
Copyright (c) 2006, Ivan Sagalaev.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -1,345 +0,0 @@
/*!
Highlight.js v11.9.0 (git: b7ec4bfafc)
(c) 2006-2023 undefined and other contributors
License: BSD-3-Clause
*/
var hljs=function(){"use strict";function e(t){
return t instanceof Map?t.clear=t.delete=t.set=()=>{
throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{
throw Error("set is read-only")
}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{
const i=t[n],s=typeof i;"object"!==s&&"function"!==s||Object.isFrozen(i)||e(i)
})),t}class t{constructor(e){
void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}
ignoreMatch(){this.isMatchIgnored=!0}}function n(e){
return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")
}function i(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t]
;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const s=e=>!!e.scope
;class o{constructor(e,t){
this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){
this.buffer+=n(e)}openNode(e){if(!s(e))return;const t=((e,{prefix:t})=>{
if(e.startsWith("language:"))return e.replace("language:","language-")
;if(e.includes(".")){const n=e.split(".")
;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")
}return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)}
closeNode(e){s(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){
this.buffer+=`<span class="${e}">`}}const r=(e={})=>{const t={children:[]}
;return Object.assign(t,e),t};class a{constructor(){
this.rootNode=r(),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){const t=r({scope:e})
;this.add(t),this.stack.push(t)}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,t){
return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),
t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){
"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{
a._collapse(e)})))}}class c extends a{constructor(e){super(),this.options=e}
addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){
this.closeNode()}__addSublanguage(e,t){const n=e.root
;t&&(n.scope="language:"+t),this.add(n)}toHTML(){
return new o(this,this.options).value()}finalize(){
return this.closeAllNodes(),!0}}function l(e){
return e?"string"==typeof e?e:e.source:null}function g(e){return h("(?=",e,")")}
function u(e){return h("(?:",e,")*")}function d(e){return h("(?:",e,")?")}
function h(...e){return e.map((e=>l(e))).join("")}function f(...e){const t=(e=>{
const t=e[e.length-1]
;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}
})(e);return"("+(t.capture?"":"?:")+e.map((e=>l(e))).join("|")+")"}
function p(e){return RegExp(e.toString()+"|").exec("").length-1}
const b=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./
;function m(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n
;let i=l(e),s="";for(;i.length>0;){const e=b.exec(i);if(!e){s+=i;break}
s+=i.substring(0,e.index),
i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?s+="\\"+(Number(e[1])+t):(s+=e[0],
"("===e[0]&&n++)}return s})).map((e=>`(${e})`)).join(t)}
const E="[a-zA-Z]\\w*",x="[a-zA-Z_]\\w*",w="\\b\\d+(\\.\\d+)?",y="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",_="\\b(0b[01]+)",O={
begin:"\\\\[\\s\\S]",relevance:0},v={scope:"string",begin:"'",end:"'",
illegal:"\\n",contains:[O]},k={scope:"string",begin:'"',end:'"',illegal:"\\n",
contains:[O]},N=(e,t,n={})=>{const s=i({scope:"comment",begin:e,end:t,
contains:[]},n);s.contains.push({scope:"doctag",
begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0})
;const o=f("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/)
;return s.contains.push({begin:h(/[ ]+/,"(",o,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s
},S=N("//","$"),M=N("/\\*","\\*/"),R=N("#","$");var j=Object.freeze({
__proto__:null,APOS_STRING_MODE:v,BACKSLASH_ESCAPE:O,BINARY_NUMBER_MODE:{
scope:"number",begin:_,relevance:0},BINARY_NUMBER_RE:_,COMMENT:N,
C_BLOCK_COMMENT_MODE:M,C_LINE_COMMENT_MODE:S,C_NUMBER_MODE:{scope:"number",
begin:y,relevance:0},C_NUMBER_RE:y,END_SAME_AS_BEGIN:e=>Object.assign(e,{
"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{
t.data._beginMatch!==e[1]&&t.ignoreMatch()}}),HASH_COMMENT_MODE:R,IDENT_RE:E,
MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:{begin:"\\.\\s*"+x,relevance:0},
NUMBER_MODE:{scope:"number",begin:w,relevance:0},NUMBER_RE:w,
PHRASAL_WORDS_MODE:{
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/
},QUOTE_STRING_MODE:k,REGEXP_MODE:{scope:"regexp",begin:/\/(?=[^/\n]*\/)/,
end:/\/[gimuy]*/,contains:[O,{begin:/\[/,end:/\]/,relevance:0,contains:[O]}]},
RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",
SHEBANG:(e={})=>{const t=/^#![ ]*\//
;return e.binary&&(e.begin=h(t,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:t,
end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},
TITLE_MODE:{scope:"title",begin:E,relevance:0},UNDERSCORE_IDENT_RE:x,
UNDERSCORE_TITLE_MODE:{scope:"title",begin:x,relevance:0}});function A(e,t){
"."===e.input[e.index-1]&&t.ignoreMatch()}function I(e,t){
void 0!==e.className&&(e.scope=e.className,delete e.className)}function T(e,t){
t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",
e.__beforeBegin=A,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,
void 0===e.relevance&&(e.relevance=0))}function L(e,t){
Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal))}function B(e,t){
if(e.match){
if(e.begin||e.end)throw Error("begin & end are not supported with match")
;e.begin=e.match,delete e.match}}function P(e,t){
void 0===e.relevance&&(e.relevance=1)}const D=(e,t)=>{if(!e.beforeMatch)return
;if(e.starts)throw Error("beforeMatch cannot be used with starts")
;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]
})),e.keywords=n.keywords,e.begin=h(n.beforeMatch,g(n.begin)),e.starts={
relevance:0,contains:[Object.assign(n,{endsParent:!0})]
},e.relevance=0,delete n.beforeMatch
},H=["of","and","for","in","not","or","if","then","parent","list","value"],C="keyword"
;function $(e,t,n=C){const i=Object.create(null)
;return"string"==typeof e?s(n,e.split(" ")):Array.isArray(e)?s(n,e):Object.keys(e).forEach((n=>{
Object.assign(i,$(e[n],t,n))})),i;function s(e,n){
t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|")
;i[n[0]]=[e,U(n[0],n[1])]}))}}function U(e,t){
return t?Number(t):(e=>H.includes(e.toLowerCase()))(e)?0:1}const z={},W=e=>{
console.error(e)},X=(e,...t)=>{console.log("WARN: "+e,...t)},G=(e,t)=>{
z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0)
},K=Error();function F(e,t,{key:n}){let i=0;const s=e[n],o={},r={}
;for(let e=1;e<=t.length;e++)r[e+i]=s[e],o[e+i]=!0,i+=p(t[e-1])
;e[n]=r,e[n]._emit=o,e[n]._multi=!0}function Z(e){(e=>{
e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,
delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={
_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope
}),(e=>{if(Array.isArray(e.begin)){
if(e.skip||e.excludeBegin||e.returnBegin)throw W("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),
K
;if("object"!=typeof e.beginScope||null===e.beginScope)throw W("beginScope must be object"),
K;F(e,e.begin,{key:"beginScope"}),e.begin=m(e.begin,{joinWith:""})}})(e),(e=>{
if(Array.isArray(e.end)){
if(e.skip||e.excludeEnd||e.returnEnd)throw W("skip, excludeEnd, returnEnd not compatible with endScope: {}"),
K
;if("object"!=typeof e.endScope||null===e.endScope)throw W("endScope must be object"),
K;F(e,e.end,{key:"endScope"}),e.end=m(e.end,{joinWith:""})}})(e)}function V(e){
function t(t,n){
return RegExp(l(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))
}class n{constructor(){
this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}
addRule(e,t){
t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),
this.matchAt+=p(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null)
;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(m(e,{joinWith:"|"
}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex
;const t=this.matcherRe.exec(e);if(!t)return null
;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n]
;return t.splice(0,n),Object.assign(t,i)}}class s{constructor(){
this.rules=[],this.multiRegexes=[],
this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){
if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n
;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))),
t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){
return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){
this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){
const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex
;let n=t.exec(e)
;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{
const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}
return n&&(this.regexIndex+=n.position+1,
this.regexIndex===this.count&&this.considerAll()),n}}
if(e.compilerExtensions||(e.compilerExtensions=[]),
e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.")
;return e.classNameAliases=i(e.classNameAliases||{}),function n(o,r){const a=o
;if(o.isCompiled)return a
;[I,B,Z,D].forEach((e=>e(o,r))),e.compilerExtensions.forEach((e=>e(o,r))),
o.__beforeBegin=null,[T,L,P].forEach((e=>e(o,r))),o.isCompiled=!0;let c=null
;return"object"==typeof o.keywords&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords),
c=o.keywords.$pattern,
delete o.keywords.$pattern),c=c||/\w+/,o.keywords&&(o.keywords=$(o.keywords,e.case_insensitive)),
a.keywordPatternRe=t(c,!0),
r&&(o.begin||(o.begin=/\B|\b/),a.beginRe=t(a.begin),o.end||o.endsWithParent||(o.end=/\B|\b/),
o.end&&(a.endRe=t(a.end)),
a.terminatorEnd=l(a.end)||"",o.endsWithParent&&r.terminatorEnd&&(a.terminatorEnd+=(o.end?"|":"")+r.terminatorEnd)),
o.illegal&&(a.illegalRe=t(o.illegal)),
o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>i(e,{
variants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?i(e,{
starts:e.starts?i(e.starts):null
}):Object.isFrozen(e)?i(e):e))("self"===e?o:e)))),o.contains.forEach((e=>{n(e,a)
})),o.starts&&n(o.starts,r),a.matcher=(e=>{const t=new s
;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"
}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"
}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(a),a}(e)}function q(e){
return!!e&&(e.endsWithParent||q(e.starts))}class J extends Error{
constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}
const Y=n,Q=i,ee=Symbol("nomatch"),te=n=>{
const i=Object.create(null),s=Object.create(null),o=[];let r=!0
;const a="Could not find the language '{}', did you forget to load/include a language module?",l={
disableAutodetect:!0,name:"Plain text",contains:[]};let p={
ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,
languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",
cssSelector:"pre code",languages:null,__emitter:c};function b(e){
return p.noHighlightRe.test(e)}function m(e,t,n){let i="",s=""
;"object"==typeof t?(i=e,
n=t.ignoreIllegals,s=t.language):(G("10.7.0","highlight(lang, code, ...args) has been deprecated."),
G("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),
s=e,i=t),void 0===n&&(n=!0);const o={code:i,language:s};N("before:highlight",o)
;const r=o.result?o.result:E(o.language,o.code,n)
;return r.code=o.code,N("after:highlight",r),r}function E(e,n,s,o){
const c=Object.create(null);function l(){if(!N.keywords)return void M.addText(R)
;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(R),n=""
;for(;t;){n+=R.substring(e,t.index)
;const s=_.case_insensitive?t[0].toLowerCase():t[0],o=(i=s,N.keywords[i]);if(o){
const[e,i]=o
;if(M.addText(n),n="",c[s]=(c[s]||0)+1,c[s]<=7&&(j+=i),e.startsWith("_"))n+=t[0];else{
const n=_.classNameAliases[e]||e;u(t[0],n)}}else n+=t[0]
;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(R)}var i
;n+=R.substring(e),M.addText(n)}function g(){null!=N.subLanguage?(()=>{
if(""===R)return;let e=null;if("string"==typeof N.subLanguage){
if(!i[N.subLanguage])return void M.addText(R)
;e=E(N.subLanguage,R,!0,S[N.subLanguage]),S[N.subLanguage]=e._top
}else e=x(R,N.subLanguage.length?N.subLanguage:null)
;N.relevance>0&&(j+=e.relevance),M.__addSublanguage(e._emitter,e.language)
})():l(),R=""}function u(e,t){
""!==e&&(M.startScope(t),M.addText(e),M.endScope())}function d(e,t){let n=1
;const i=t.length-1;for(;n<=i;){if(!e._emit[n]){n++;continue}
const i=_.classNameAliases[e[n]]||e[n],s=t[n];i?u(s,i):(R=s,l(),R=""),n++}}
function h(e,t){
return e.scope&&"string"==typeof e.scope&&M.openNode(_.classNameAliases[e.scope]||e.scope),
e.beginScope&&(e.beginScope._wrap?(u(R,_.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),
R=""):e.beginScope._multi&&(d(e.beginScope,t),R="")),N=Object.create(e,{parent:{
value:N}}),N}function f(e,n,i){let s=((e,t)=>{const n=e&&e.exec(t)
;return n&&0===n.index})(e.endRe,i);if(s){if(e["on:end"]){const i=new t(e)
;e["on:end"](n,i),i.isMatchIgnored&&(s=!1)}if(s){
for(;e.endsParent&&e.parent;)e=e.parent;return e}}
if(e.endsWithParent)return f(e.parent,n,i)}function b(e){
return 0===N.matcher.regexIndex?(R+=e[0],1):(T=!0,0)}function m(e){
const t=e[0],i=n.substring(e.index),s=f(N,e,i);if(!s)return ee;const o=N
;N.endScope&&N.endScope._wrap?(g(),
u(t,N.endScope._wrap)):N.endScope&&N.endScope._multi?(g(),
d(N.endScope,e)):o.skip?R+=t:(o.returnEnd||o.excludeEnd||(R+=t),
g(),o.excludeEnd&&(R=t));do{
N.scope&&M.closeNode(),N.skip||N.subLanguage||(j+=N.relevance),N=N.parent
}while(N!==s.parent);return s.starts&&h(s.starts,e),o.returnEnd?0:t.length}
let w={};function y(i,o){const a=o&&o[0];if(R+=i,null==a)return g(),0
;if("begin"===w.type&&"end"===o.type&&w.index===o.index&&""===a){
if(R+=n.slice(o.index,o.index+1),!r){const t=Error(`0 width match regex (${e})`)
;throw t.languageName=e,t.badRule=w.rule,t}return 1}
if(w=o,"begin"===o.type)return(e=>{
const n=e[0],i=e.rule,s=new t(i),o=[i.__beforeBegin,i["on:begin"]]
;for(const t of o)if(t&&(t(e,s),s.isMatchIgnored))return b(n)
;return i.skip?R+=n:(i.excludeBegin&&(R+=n),
g(),i.returnBegin||i.excludeBegin||(R=n)),h(i,e),i.returnBegin?0:n.length})(o)
;if("illegal"===o.type&&!s){
const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||"<unnamed>")+'"')
;throw e.mode=N,e}if("end"===o.type){const e=m(o);if(e!==ee)return e}
if("illegal"===o.type&&""===a)return 1
;if(I>1e5&&I>3*o.index)throw Error("potential infinite loop, way more iterations than matches")
;return R+=a,a.length}const _=O(e)
;if(!_)throw W(a.replace("{}",e)),Error('Unknown language: "'+e+'"')
;const v=V(_);let k="",N=o||v;const S={},M=new p.__emitter(p);(()=>{const e=[]
;for(let t=N;t!==_;t=t.parent)t.scope&&e.unshift(t.scope)
;e.forEach((e=>M.openNode(e)))})();let R="",j=0,A=0,I=0,T=!1;try{
if(_.__emitTokens)_.__emitTokens(n,M);else{for(N.matcher.considerAll();;){
I++,T?T=!1:N.matcher.considerAll(),N.matcher.lastIndex=A
;const e=N.matcher.exec(n);if(!e)break;const t=y(n.substring(A,e.index),e)
;A=e.index+t}y(n.substring(A))}return M.finalize(),k=M.toHTML(),{language:e,
value:k,relevance:j,illegal:!1,_emitter:M,_top:N}}catch(t){
if(t.message&&t.message.includes("Illegal"))return{language:e,value:Y(n),
illegal:!0,relevance:0,_illegalBy:{message:t.message,index:A,
context:n.slice(A-100,A+100),mode:t.mode,resultSoFar:k},_emitter:M};if(r)return{
language:e,value:Y(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:N}
;throw t}}function x(e,t){t=t||p.languages||Object.keys(i);const n=(e=>{
const t={value:Y(e),illegal:!1,relevance:0,_top:l,_emitter:new p.__emitter(p)}
;return t._emitter.addText(e),t})(e),s=t.filter(O).filter(k).map((t=>E(t,e,!1)))
;s.unshift(n);const o=s.sort(((e,t)=>{
if(e.relevance!==t.relevance)return t.relevance-e.relevance
;if(e.language&&t.language){if(O(e.language).supersetOf===t.language)return 1
;if(O(t.language).supersetOf===e.language)return-1}return 0})),[r,a]=o,c=r
;return c.secondBest=a,c}function w(e){let t=null;const n=(e=>{
let t=e.className+" ";t+=e.parentNode?e.parentNode.className:""
;const n=p.languageDetectRe.exec(t);if(n){const t=O(n[1])
;return t||(X(a.replace("{}",n[1])),
X("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}
return t.split(/\s+/).find((e=>b(e)||O(e)))})(e);if(b(n))return
;if(N("before:highlightElement",{el:e,language:n
}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e)
;if(e.children.length>0&&(p.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),
console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),
console.warn("The element with unescaped HTML:"),
console.warn(e)),p.throwUnescapedHTML))throw new J("One of your code blocks includes unescaped HTML.",e.innerHTML)
;t=e;const i=t.textContent,o=n?m(i,{language:n,ignoreIllegals:!0}):x(i)
;e.innerHTML=o.value,e.dataset.highlighted="yes",((e,t,n)=>{const i=t&&s[t]||n
;e.classList.add("hljs"),e.classList.add("language-"+i)
})(e,n,o.language),e.result={language:o.language,re:o.relevance,
relevance:o.relevance},o.secondBest&&(e.secondBest={
language:o.secondBest.language,relevance:o.secondBest.relevance
}),N("after:highlightElement",{el:e,result:o,text:i})}let y=!1;function _(){
"loading"!==document.readyState?document.querySelectorAll(p.cssSelector).forEach(w):y=!0
}function O(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]}
function v(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{
s[e.toLowerCase()]=t}))}function k(e){const t=O(e)
;return t&&!t.disableAutodetect}function N(e,t){const n=e;o.forEach((e=>{
e[n]&&e[n](t)}))}
"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{
y&&_()}),!1),Object.assign(n,{highlight:m,highlightAuto:x,highlightAll:_,
highlightElement:w,
highlightBlock:e=>(G("10.7.0","highlightBlock will be removed entirely in v12.0"),
G("10.7.0","Please use highlightElement now."),w(e)),configure:e=>{p=Q(p,e)},
initHighlighting:()=>{
_(),G("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},
initHighlightingOnLoad:()=>{
_(),G("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")
},registerLanguage:(e,t)=>{let s=null;try{s=t(n)}catch(t){
if(W("Language definition for '{}' could not be registered.".replace("{}",e)),
!r)throw t;W(t),s=l}
s.name||(s.name=e),i[e]=s,s.rawDefinition=t.bind(null,n),s.aliases&&v(s.aliases,{
languageName:e})},unregisterLanguage:e=>{delete i[e]
;for(const t of Object.keys(s))s[t]===e&&delete s[t]},
listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:v,
autoDetection:k,inherit:Q,addPlugin:e=>{(e=>{
e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{
e["before:highlightBlock"](Object.assign({block:t.el},t))
}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{
e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),o.push(e)},
removePlugin:e=>{const t=o.indexOf(e);-1!==t&&o.splice(t,1)}}),n.debugMode=()=>{
r=!1},n.safeMode=()=>{r=!0},n.versionString="11.9.0",n.regex={concat:h,
lookahead:g,either:f,optional:d,anyNumberOfTimes:u}
;for(const t in j)"object"==typeof j[t]&&e(j[t]);return Object.assign(n,j),n
},ne=te({});return ne.newInstance=()=>te({}),ne}()
;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `bash` grammar compiled for Highlight.js 11.9.0 */
(()=>{var e=(()=>{"use strict";return e=>{const s=e.regex,t={},n={begin:/\$\{/,
end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{
className:"variable",variants:[{
begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={
className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]
},i=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),c={
begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,
end:/(\w+)/,className:"string"})]}},o={className:"string",begin:/"/,end:/"/,
contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(o);const r={begin:/\$?\(\(/,
end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]
},l=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10
}),m={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,
contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{
name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,
keyword:["if","then","else","elif","fi","for","while","until","in","do","done","case","esac","function","select"],
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","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"]
},contains:[l,e.SHEBANG(),m,r,i,c,{match:/(\/[a-z._-]+)+/},o,{match:/\\"/},{
className:"string",begin:/'/,end:/'/},{match:/\\'/},t]}}})()
;hljs.registerLanguage("bash",e)})();/*! `nix` grammar compiled for Highlight.js 11.9.0 */
(()=>{var e=(()=>{"use strict";return e=>{const 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"]
},s={className:"subst",begin:/\$\{/,end:/\}/,keywords:n},a={className:"string",
contains:[{className:"char.escape",begin:/''\$/},s],variants:[{begin:"''",
end:"''"},{begin:'"',end:'"'}]
},i=[e.NUMBER_MODE,e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,{
begin:/[a-zA-Z0-9-_]+(\s*=)/,returnBegin:!0,relevance:0,contains:[{
className:"attr",begin:/\S+/,relevance:.2}]}];return s.contains=i,{name:"Nix",
aliases:["nixos"],keywords:n,contains:i}}})();hljs.registerLanguage("nix",e)
})();/*! `shell` grammar compiled for Highlight.js 11.9.0 */
(()=>{var s=(()=>{"use strict";return s=>({name:"Shell Session",
aliases:["console","shellsession"],contains:[{className:"meta.prompt",
begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,
subLanguage:"bash"}}]})})();hljs.registerLanguage("shell",s)})();

View file

@ -1,6 +0,0 @@
/* This file is NOT part of highlight.js */
document.addEventListener('DOMContentLoaded', (event) => {
document.querySelectorAll('.programlisting, .screen').forEach((element) => {
hljs.highlightElement(element);
});
});

View file

@ -1,56 +0,0 @@
pre code.hljs {
display: block;
overflow-x: auto;
padding: 1em
}
code.hljs {
padding: 3px 5px
}
/*
Five-color theme from a single blue hue.
*/
.hljs {
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
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -1,56 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Appendix A. Known Issues and Quirks</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="highlightjs/highlight.pack.js" type="text/javascript"></script><script src="highlightjs/loader.js" type="text/javascript"></script><script src="script/anchor-use.js" type="text/javascript"></script><script src="script/anchor-min.js" type="text/javascript"></script><script src="script/search.js" type="text/javascript"></script>
<meta name="generator" content="nixos-render-docs" />
<link rel="home" href="index.xhtml" title="nvf manual" />
<link rel="up" href="index.xhtml" title="nvf manual" /><link rel="prev" href="index.xhtml" title="nvf manual" /><link rel="next" href="options.html" title="Appendix B. Neovim Flake Configuration Options" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Appendix A. Known Issues and Quirks</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="index.xhtml">Prev</a>&nbsp;</td>
<th width="60%" align="center">&nbsp;</th>
<td width="20%" align="right">&nbsp;<a accesskey="n" href="options.html">Next</a></td>
</tr>
</table>
<hr />
</div><div class="appendix"> <div class="titlepage"> <div> <div> <h1 id="ch-known-issues-quirks" class="title" >Appendix A. Known Issues and Quirks </h1> </div> </div></div><div class="toc"> <p><strong>Table of Contents</strong></p> <dl class="toc"> <dt> <span class="chapter"> <a href="quirks.html#ch-quirks-nodejs">NodeJS</a> </span></dt> </dl></div><p>At times, certain plugins and modules may refuse to play nicely with your setup,
be it a result of generating Lua from Nix, or the state of packaging. This page,
in turn, will list any known modules or plugins that are known to misbehave, and
possible workarounds that you may apply.</p><div class="chapter"> <div class="titlepage"> <div> <div> <h2 id="ch-quirks-nodejs" class="title" >NodeJS </h2> </div> </div></div><div class="toc"> <p><strong>Table of Contents</strong></p> <dl class="toc"> <dt> <span class="section"> <a href="quirks.html#sec-eslint-plugin-prettier">eslint-plugin-prettier</a> </span></dt> </dl></div><div class="section"> <div class="titlepage"> <div> <div> <h2 id="sec-eslint-plugin-prettier" class="title" style="clear: both">eslint-plugin-prettier </h2> </div> </div></div><p>When working with NodeJS, everything works as expected, but some projects have
settings that can fool nvf.</p><p>If <a class="link" href="https://github.com/prettier/eslint-plugin-prettier" target="_top">this plugin</a> or similar
is included, you might get a situation where your eslint configuration diagnoses
your formatting according to its own config (usually <code class="literal">.eslintrc.js</code>).</p><p>The issue there is your formatting is made via prettierd.</p><p>This results in auto-formatting relying on your prettier config, while your
eslint config diagnoses formatting
<a class="link" href="https://prettier.io/docs/en/comparison.html" target="_top">which its not supposed to</a>)</p><p>In the end, you get discrepancies between what your editor does and what it
wants.</p><p>Solutions are:</p><div class="orderedlist"><ol class="orderedlist compact" type="1"><li class="listitem"><p>Dont add a formatting config to eslint, and separate prettier and eslint.</p></li><li class="listitem"><p>PR this repo to add an ESLint formatter and configure nvf to use it.</p></li></ol></div>
</div>
</div>
</div> <div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="index.xhtml">Prev</a>&nbsp;</td>
<td width="20%" align="center">&nbsp;</td>
<td width="40%" align="right">&nbsp;<a accesskey="n" href="options.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">nvf manual&nbsp;</td>
<td width="20%" align="center"><a accesskey="h" href="index.xhtml">Home</a></td>
<td width="40%" align="right" valign="top">&nbsp;Appendix B. Neovim Flake Configuration Options</td>
</tr>
</table>
</div>
</body>
</html>

View file

@ -1,383 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Appendix C. Release Notes</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="highlightjs/highlight.pack.js" type="text/javascript"></script><script src="highlightjs/loader.js" type="text/javascript"></script><script src="script/anchor-use.js" type="text/javascript"></script><script src="script/anchor-min.js" type="text/javascript"></script><script src="script/search.js" type="text/javascript"></script>
<meta name="generator" content="nixos-render-docs" />
<link rel="home" href="index.xhtml" title="nvf manual" />
<link rel="up" href="index.xhtml" title="nvf manual" /><link rel="prev" href="options.html" title="Appendix B. Neovim Flake Configuration Options" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Appendix C. Release Notes</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="options.html">Prev</a>&nbsp;</td>
<th width="60%" align="center">&nbsp;</th>
<td width="20%" align="right">&nbsp;</td>
</tr>
</table>
<hr />
</div><div class="appendix"> <div class="titlepage"> <div> <div> <h1 id="ch-release-notes" class="title" >Appendix C. Release Notes </h1> </div> </div></div><div class="toc"> <p><strong>Table of Contents</strong></p> <dl class="toc"> <dt> <span class="chapter"> <a href="release-notes.html#sec-release-0.1">Release 0.1</a> </span></dt><dt> <span class="chapter"> <a href="release-notes.html#sec-release-0.2">Release 0.2</a> </span></dt><dt> <span class="chapter"> <a href="release-notes.html#sec-release-0.3">Release 0.3</a> </span></dt><dt> <span class="chapter"> <a href="release-notes.html#sec-release-0.4">Release 0.4</a> </span></dt><dt> <span class="chapter"> <a href="release-notes.html#sec-release-0.5">Release 0.5</a> </span></dt><dt> <span class="chapter"> <a href="release-notes.html#sec-release-0.6">Release 0.6</a> </span></dt><dt> <span class="chapter"> <a href="release-notes.html#sec-release-0.7">Release 0.7</a> </span></dt> </dl></div><p>This section lists the release notes for tagged version of <span class="strong"><strong>nvf</strong></span> and the
current main current main branch</p><div class="chapter"> <div class="titlepage"> <div> <div> <h2 id="sec-release-0.1" class="title" >Release 0.1 </h2> </div> </div></div><div class="toc"> <p><strong>Table of Contents</strong></p> <dl class="toc"> <dt> <span class="section"> <a href="release-notes.html#sec-release-0.1-changelog">Changelog</a> </span></dt> </dl></div><p>This is the current master branch and information here is not final. These are
changes from the v0.1 tag.</p><p>Special thanks to <a class="link" href="https://github.com/nix-community/home-manager/" target="_top">home-manager</a>
for this release. Docs/manual generation, the new module evaluation system, and
DAG implementation are from them.</p><div class="section"> <div class="titlepage"> <div> <div> <h2 id="sec-release-0.1-changelog" class="title" style="clear: both">Changelog </h2> </div> </div></div><p><a class="link" href="https://github.com/jordanisaacs" target="_top">jordanisaacs</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Removed hare language support (lsp/tree-sitter/etc). <code class="literal">vim.lsp.hare</code> is no
longer defined. If you use hare and would like it added back, please file an
issue.</p></li><li class="listitem"><p><a class="xref" href="options.html#opt-vim.startPlugins" ><code class="option">vim.startPlugins</code></a> &amp; <a class="xref" href="options.html#opt-vim.optPlugins" ><code class="option">vim.optPlugins</code></a> are now an enum of
<code class="literal">string</code> for options sourced from the flake inputs. Users can still provide
vim plugin packages.</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: circle;"><li class="listitem"><p>If you are contributing and adding a new plugin, add the plugin name to
<code class="literal">availablePlugins</code> in [types-plugin.nix].</p></li></ul></div></li><li class="listitem"><p><code class="literal">neovimBuilder</code> has been removed for configuration. Using an overlay is no
longer required. See the manual for the new way to configuration.</p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Treesitter grammars are now configurable with
<a class="xref" href="options.html#opt-vim.treesitter.grammars" ><code class="option">vim.treesitter.grammars</code></a>. Utilizes the nixpkgs <code class="literal">nvim-treesitter</code>
plugin rather than a custom input in order to take advantage of build support
of pinned versions. See the <a class="link" href="https://discourse.nixos.org/t/psa-if-you-are-on-unstable-try-out-nvim-treesitter-withallgrammars/23321?u=snowytrees" target="_top">relevant discourse post</a> for more information.
Packages can be found under the <code class="literal">vimPlugins.nvim-treesitter.builtGrammars</code>
namespace.</p></li><li class="listitem"><p><code class="literal">vim.configRC</code> and <a class="xref" href="options.html#opt-vim.luaConfigRC" ><code class="option">vim.luaConfigRC</code></a> are now of type DAG lines. This
allows for ordering of the config. Usage is the same is in home-managers
<code class="literal">home.activation</code> option.</p></li></ul></div><pre><code class="programlisting nix">vim.luaConfigRC = lib.nvim.dag.entryAnywhere &quot;config here&quot;
</code></pre><p><a class="link" href="https://github.com/MoritzBoehme" target="_top">MoritzBoehme</a>:</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p><code class="literal">catppuccin</code> theme is now available as a neovim theme <a class="xref" href="options.html#opt-vim.theme.style" ><code class="option">vim.theme.style</code></a>
and Lualine theme <a class="xref" href="options.html#opt-vim.statusline.lualine.theme" ><code class="option">vim.statusline.lualine.theme</code></a>.</p></li></ul></div>
</div>
</div><div class="chapter"> <div class="titlepage"> <div> <div> <h2 id="sec-release-0.2" class="title" >Release 0.2 </h2> </div> </div></div><div class="toc"> <p><strong>Table of Contents</strong></p> <dl class="toc"> <dt> <span class="section"> <a href="release-notes.html#sec-release-0.2-changelog">Changelog</a> </span></dt> </dl></div><p>Release notes for release 0.2</p><div class="section"> <div class="titlepage"> <div> <div> <h2 id="sec-release-0.2-changelog" class="title" style="clear: both">Changelog </h2> </div> </div></div><p><a class="link" href="https://github.com/notashelf" target="_top">notashelf</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Added two minimap plugins under <code class="literal">vim.minimap</code>. <code class="literal">codewindow.nvim</code> is enabled by
default, while <code class="literal">minimap.vim</code> is available with its code-minimap dependency.</p></li><li class="listitem"><p>A complementary plugin, <code class="literal">obsidian.nvim</code> and the Neovim alternative for Emacs
orgmode with <code class="literal">orgmode.nvim</code> have been added. Both will be disabled by default.</p></li><li class="listitem"><p>Smooth scrolling for ANY movement command is now available with
<code class="literal">cinnamon.nvim</code></p></li><li class="listitem"><p>You will now notice a dashboard on startup. This is provided by the
<code class="literal">alpha.nvim</code> plugin. You can use any of the three available dashboard plugins,
or disable them entirely.</p></li><li class="listitem"><p>There is now a scrollbar on active buffers, which can highlight errors by
hooking to your LSPs. This is on by default, but can be toggled off under
<code class="literal">vim.visuals</code> if seen necessary.</p></li><li class="listitem"><p>Discord Rich Presence has been added through <code class="literal">presence.nvim</code> for those who
want to flex that they are using the <span class="emphasis"><em>superior</em></span> text editor.</p></li><li class="listitem"><p>An icon picker is now available with telescope integration. You can use
<code class="literal">:IconPickerInsert</code> or <code class="literal">:IconPickerYank</code> to add icons to your code.</p></li><li class="listitem"><p>A general-purpose cheatsheet has been added through <code class="literal">cheatsheet.nvim</code>. Forget
no longer!</p></li><li class="listitem"><p><code class="literal">ccc.nvim</code> has been added to the default plugins to allow picking colors with
ease.</p></li><li class="listitem"><p>Most UI components of Neovim have been replaced through the help of
<code class="literal">noice.nvim</code>. There are also notifications and custom UI elements available
for Neovim messages and prompts.</p></li><li class="listitem"><p>A (floating by default) terminal has been added through <code class="literal">toggleterm.nvim</code>.</p></li><li class="listitem"><p>Harness the power of ethical (<code class="literal">tabnine.nvim</code>) and not-so-ethical
(<code class="literal">copilot.lua</code>) AI by those new assistant plugins. Both are off by default,
TabNine needs to be wrapped before its working.</p></li><li class="listitem"><p>Experimental mouse gestures have been added through <code class="literal">gesture.nvim</code>. See plugin
page and the relevant module for more details on how to use.</p></li><li class="listitem"><p>Re-open last visited buffers via <code class="literal">nvim-session-manager</code>. Disabled by default
as deleting buffers seems to be problematic at the moment.</p></li><li class="listitem"><p>Most of NvimTrees configuration options have been changed with some options
being toggled to off by default.</p></li><li class="listitem"><p>Lualine had its configuration simplified and style toned down. Less color,
more info.</p></li><li class="listitem"><p>Modules where multiple plugin configurations were in the same directory have
been simplified. Each plugin inside a single module gets its directory to be
imported.</p></li><li class="listitem"><p>Separate config options with the same parent attribute have been merged into
one for simplicity.</p></li></ul></div>
</div>
</div><div class="chapter"> <div class="titlepage"> <div> <div> <h2 id="sec-release-0.3" class="title" >Release 0.3 </h2> </div> </div></div><div class="toc"> <p><strong>Table of Contents</strong></p> <dl class="toc"> <dt> <span class="section"> <a href="release-notes.html#sec-release-0.3-changelog">Changelog</a> </span></dt> </dl></div><p>Release 0.3 had to come out before I wanted it to due to Neovim 0.9 dropping
into nixpkgs-unstable. The Treesitter changes have prompted a Treesitter rework,
which was followed by reworking the languages system. Most of the changes to
those are downstreamed from the original repository. The feature requests that
was originally planned for 0.3 have been moved to 0.4, which should come out
soon.</p><div class="section"> <div class="titlepage"> <div> <div> <h2 id="sec-release-0.3-changelog" class="title" style="clear: both">Changelog </h2> </div> </div></div><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>We have transitioned to flake-parts, from flake-utils to extend the
flexibility of this flake. This means the flake structure is different than
usual, but the functionality remains the same.</p></li><li class="listitem"><p>We now provide a home-manager module. Do note that it is still far from
perfect, but it works.</p></li><li class="listitem"><p><code class="literal">nodejs_16</code> is now bundled with <code class="literal">Copilot.lua</code> if the user has enabled Copilot
assistant.</p></li><li class="listitem"><p>which-key section titles have been fixed. This is to be changed once again in
a possible keybind rewrite, but now it should display the correct titles
instead of <code class="literal">+prefix</code></p></li><li class="listitem"><p>Most of <code class="literal">presence.nvim</code>s options have been made fully configurable through
your configuration file.</p></li><li class="listitem"><p>Most of the modules have been refactored to separate <code class="literal">config</code> and <code class="literal">options</code>
attributes.</p></li><li class="listitem"><p>Darwin has been deprecated as the Zig package is marked as broken. We will
attempt to use the Zig overlay to return Darwin support.</p></li><li class="listitem"><p><code class="literal">Fidget.nvim</code> has been added as a neat visual addition for LSP installations.</p></li><li class="listitem"><p><code class="literal">diffview.nvim</code> has been added to provide a convenient diff utility.</p></li><li class="listitem"><p>Treesitter grammars are now configurable with
<a class="xref" href="options.html#opt-vim.treesitter.grammars" ><code class="option">vim.treesitter.grammars</code></a>. Utilizes the nixpkgs <code class="literal">nvim-treesitter</code>
plugin rather than a custom input in order to take advantage of build support
of pinned versions. See <a class="link" href="https://discourse.nixos.org/t/psa-if-you-are-on-unstable-try-out-nvim-treesitter-withallgrammars/23321?u=snowytrees" target="_top">discourse</a> for more information. Packages can be
found under the <code class="literal">pkgs.vimPlugins.nvim-treesitter.builtGrammars</code> attribute.
Treesitter grammars for supported languages should be enabled within the
module. By default no grammars are installed, thus the following grammars
which do not have a language section are not included anymore: <span class="strong"><strong>comment</strong></span>,
<span class="strong"><strong>toml</strong></span>, <span class="strong"><strong>make</strong></span>, <span class="strong"><strong>html</strong></span>, <span class="strong"><strong>css</strong></span>, <span class="strong"><strong>graphql</strong></span>, <span class="strong"><strong>json</strong></span>.</p></li><li class="listitem"><p>A new section has been added for language support: <code class="literal">vim.languages.&lt;language&gt;</code>.</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: circle;"><li class="listitem"><p>The options <a class="xref" href="options.html#opt-vim.languages.enableLSP" ><code class="option">vim.languages.enableLSP</code></a>,
<a class="xref" href="options.html#opt-vim.languages.enableTreesitter" ><code class="option">vim.languages.enableTreesitter</code></a>, etc. will enable the respective
section for all languages that have been enabled.</p></li><li class="listitem"><p>All LSP languages have been moved here</p></li><li class="listitem"><p><code class="literal">plantuml</code> and <code class="literal">markdown</code> have been moved here</p></li><li class="listitem"><p>A new section has been added for <code class="literal">html</code>. The old
<code class="literal">vim.treesitter.autotagHtml</code> can be found at
<a class="xref" href="options.html#opt-vim.languages.html.treesitter.autotagHtml" ><code class="option">vim.languages.html.treesitter.autotagHtml</code></a>.</p></li></ul></div></li><li class="listitem"><p><code class="literal">vim.git.gitsigns.codeActions</code> has been added, allowing you to turn on
Gitsigns code actions.</p></li><li class="listitem"><p>Removed the plugins document in the docs. Was too unwieldy to keep updated.</p></li><li class="listitem"><p><code class="literal">vim.visual.lspkind</code> has been moved to <a class="xref" href="options.html#opt-vim.lsp.lspkind.enable" ><code class="option">vim.lsp.lspkind.enable</code></a></p></li><li class="listitem"><p>Improved handling of completion formatting. When setting
<code class="literal">vim.autocomplete.sources</code>, can also include optional menu mapping. And can
provide your own function with <code class="literal">vim.autocomplete.formatting.format</code>.</p></li><li class="listitem"><p>For <code class="literal">vim.visuals.indentBlankline.fillChar</code> and
<code class="literal">vim.visuals.indentBlankline.eolChar</code> options, turning them off should be done
by using <code class="literal">null</code> rather than <code class="literal">&quot;&quot;</code> now.</p></li><li class="listitem"><p>Transparency has been made optional and has been disabled by default.
<a class="xref" href="options.html#opt-vim.theme.transparent" ><code class="option">vim.theme.transparent</code></a> option can be used to enable or disable
transparency for your configuration.</p></li><li class="listitem"><p>Fixed deprecated configuration method for Tokyonight, and added new style
“moon”</p></li><li class="listitem"><p>Dart language support as well as extended flutter support has been added.
Thanks to @FlafyDev for his contributions towards Dart language support.</p></li><li class="listitem"><p>Elixir language support has been added through <code class="literal">elixir-tools.nvim</code>.</p></li><li class="listitem"><p><code class="literal">hop.nvim</code> and <code class="literal">leap.nvim</code> have been added for fast navigation.</p></li><li class="listitem"><p><code class="literal">modes.nvim</code> has been added to the UI plugins as a minor error highlighter.</p></li><li class="listitem"><p><code class="literal">smartcollumn.nvim</code> has been added to dynamically display a colorcolumn when
the limit has been exceeded, providing per-buftype column position and more.</p></li><li class="listitem"><p><code class="literal">project.nvim</code> has been added for better project management inside Neovim.</p></li><li class="listitem"><p>More configuration options have been added to <code class="literal">nvim-session-manager</code>.</p></li><li class="listitem"><p>Editorconfig support has been added to the core functionality, with an enable
option.</p></li><li class="listitem"><p><code class="literal">venn-nvim</code> has been dropped due to broken keybinds.</p></li></ul></div>
</div>
</div><div class="chapter"> <div class="titlepage"> <div> <div> <h2 id="sec-release-0.4" class="title" >Release 0.4 </h2> </div> </div></div><div class="toc"> <p><strong>Table of Contents</strong></p> <dl class="toc"> <dt> <span class="section"> <a href="release-notes.html#sec-release-0.4-changelog">Changelog</a> </span></dt> </dl></div><p>Following the release of v0.3, I have decided to release v0.4 with a massive new
change: customizable keybinds. As of the 0.4 release, keybinds will no longer be
hardcoded and instead provided by each modules own keybinds section. The old
keybind system (<code class="literal">vim.keybinds = {}</code>) is now considered deprecated and the new
lib functions are recommended to be used for adding keybinds for new plugins, or
adding keybinds to existing plugins.</p><p>Alongside customizable keybinds, there are a few quality of life updates, such
as <code class="literal">lazygit</code> integration and the new experimental Lua loader of Neovim 0.9
thanks to our awesome contributors who made this update possible during my
absence.</p><div class="section"> <div class="titlepage"> <div> <div> <h2 id="sec-release-0.4-changelog" class="title" style="clear: both">Changelog </h2> </div> </div></div><p><a class="link" href="https://github.com/n3oney" target="_top">n3oney</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Streamlined keybind adding process towards new functions in extended stdlib.</p></li><li class="listitem"><p>Moved default keybinds into keybinds section of each module</p></li><li class="listitem"><p>Simplified luaConfigRC and configRC setting - they can now just take strings</p></li><li class="listitem"><p>Refactored the resolveDag function - you can just provide a string now, which
will default to dag.entryAnywhere</p></li><li class="listitem"><p>Fixed formatting sometimes removing parts of files</p></li><li class="listitem"><p>Made formatting synchronous</p></li><li class="listitem"><p>Gave null-ls priority over other formatters</p></li></ul></div><p><a class="link" href="https://github.com/horriblename" target="_top">horriblename</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Added <code class="literal">clangd</code> as alternative lsp for C/++.</p></li><li class="listitem"><p>Added <code class="literal">toggleterm</code> integration for <code class="literal">lazygit</code>.</p></li><li class="listitem"><p>Added new option <code class="literal">enableluaLoader</code> to enable neovims experimental module
loader for faster startup time.</p></li><li class="listitem"><p>Fixed bug where flutter-tools cant find <code class="literal">dart</code> LSP</p></li><li class="listitem"><p>Added Debug Adapter (DAP) support for clang, rust, go, python and dart.</p></li></ul></div><p><a class="link" href="https://github.com/notashelf" target="_top">notashelf</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Made Copilots Node package configurable. It is recommended to keep as
default, but providing a different NodeJS version is now possible.</p></li><li class="listitem"><p>Added <code class="literal">vim.cursorlineOpt</code> for configuring Neovims <code class="literal">vim.o.cursorlineopt</code>.</p></li><li class="listitem"><p>Added <code class="literal">filetree.nvimTreeLua.view.cursorline</code>, default false, to enable
cursorline in nvimtre.</p></li><li class="listitem"><p>Added Fidget.nvim support for the Catppuccin theme.</p></li><li class="listitem"><p>Updated bundled NodeJS version used by <code class="literal">Copilot.lua</code>. v16 is now marked as
insecure on Nixpkgs, and we updated to v18</p></li><li class="listitem"><p>Enabled Catppuccin modules for plugins available by default.</p></li><li class="listitem"><p>Added experimental Svelte support under <code class="literal">vim.languages</code>.</p></li><li class="listitem"><p>Removed unnecessary scrollbar element from notifications and codeaction
warning UI.</p></li><li class="listitem"><p><code class="literal">vim.utility.colorizer</code> has been renamed to <code class="literal">vim.utility.ccc</code> after the plugin
it uses</p></li><li class="listitem"><p>Color preview via <code class="literal">nvim-colorizer.lua</code></p></li><li class="listitem"><p>Updated Lualine statusline UI</p></li><li class="listitem"><p>Added vim-illuminate for smart highlighting</p></li><li class="listitem"><p>Added a module for enabling Neovims spellchecker</p></li><li class="listitem"><p>Added prettierd as an alternative formatter to prettier - currently defaults
to prettier</p></li><li class="listitem"><p>Fixed presence.nvim inheriting the wrong client id</p></li><li class="listitem"><p>Cleaned up documentation</p></li></ul></div>
</div>
</div><div class="chapter"> <div class="titlepage"> <div> <div> <h2 id="sec-release-0.5" class="title" >Release 0.5 </h2> </div> </div></div><div class="toc"> <p><strong>Table of Contents</strong></p> <dl class="toc"> <dt> <span class="section"> <a href="release-notes.html#sec-release-0.5-changelog">Changelog</a> </span></dt> </dl></div><p>Release notes for release 0.5</p><div class="section"> <div class="titlepage"> <div> <div> <h2 id="sec-release-0.5-changelog" class="title" style="clear: both">Changelog </h2> </div> </div></div><p><a class="link" href="https://github.com/vagahbond" target="_top">vagahbond</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Added phan language server for PHP</p></li><li class="listitem"><p>Added phpactor language server for PHP</p></li></ul></div><p><a class="link" href="https://github.com/horriblename" target="_top">horriblename</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Added transparency support for tokyonight theme</p></li><li class="listitem"><p>Fixed a bug where cmps close and scrollDocs mappings wasnt working</p></li><li class="listitem"><p>Streamlined and simplified extra plugin API with the addition of
<a class="xref" href="options.html#opt-vim.extraPlugins" ><code class="option">vim.extraPlugins</code></a></p></li><li class="listitem"><p>Allow using command names in place of LSP packages to avoid automatic
installation</p></li><li class="listitem"><p>Add lua LSP and Treesitter support, and neodev.nvim plugin support</p></li><li class="listitem"><p>Add <a class="xref" href="options.html#opt-vim.lsp.mappings.toggleFormatOnSave" ><code class="option">vim.lsp.mappings.toggleFormatOnSave</code></a> keybind</p></li></ul></div><p><a class="link" href="https://github.com/amanse" target="_top">amanse</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Added daily notes options for obsidian plugin</p></li><li class="listitem"><p>Added <code class="literal">jdt-language-server</code> for Java</p></li></ul></div><p><a class="link" href="https://github.com/yavko" target="_top">yavko</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Added Deno Language Server for Javascript/Typescript</p></li><li class="listitem"><p>Added support for multiple languages under <code class="literal">vim.spellChecking.languages</code>, and
added vim-dirtytalk through <code class="literal">vim.spellChecking.enableProgrammingWordList</code></p></li></ul></div><p><a class="link" href="https://github.com/FrothyMarrow" target="_top">frothymarrow</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Renamed <code class="literal">vim.visuals.cursorWordline</code> to <code class="literal">vim.visuals.cursorline.enable</code></p></li><li class="listitem"><p>Added <code class="literal">vim.visuals.cursorline.lineNumbersOnly</code> to display cursorline only in
the presence of line numbers</p></li><li class="listitem"><p>Added Oxocarbon to the list of available themes.</p></li></ul></div><p><a class="link" href="https://github.com/notashelf" target="_top">notashelf</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Added GitHub Copilot to nvim-cmp completion sources.</p></li><li class="listitem"><p>Added <a class="xref" href="options.html#opt-vim.ui.borders.enable" ><code class="option">vim.ui.borders.enable</code></a> for global and individual plugin border
configuration.</p></li><li class="listitem"><p>LSP integrated breadcrumbs with <a class="xref" href="options.html#opt-vim.ui.breadcrumbs.enable" ><code class="option">vim.ui.breadcrumbs.enable</code></a> through
nvim-navic</p></li><li class="listitem"><p>LSP navigation helper with nvim-navbuddy, depends on nvim-navic (automatically
enabled if navic is enabled)</p></li><li class="listitem"><p>Added nvim-navic integration for Catppuccin theme</p></li><li class="listitem"><p>Fixed mismatching Zig language description</p></li><li class="listitem"><p>Added support for <code class="literal">statix</code> and <code class="literal">deadnix</code> through
<a class="xref" href="options.html#opt-vim.languages.nix.extraDiagnostics.types" ><code class="option">vim.languages.nix.extraDiagnostics.types</code></a></p></li><li class="listitem"><p>Added <code class="literal">lsp_lines</code> plugin for showing diagnostic messages</p></li><li class="listitem"><p>Added a configuration option for choosing the leader key</p></li><li class="listitem"><p>The package used for neovim is now customizable by the user, using
<a class="xref" href="options.html#opt-vim.package" ><code class="option">vim.package</code></a>. For best results, always use an unwrapped package</p></li><li class="listitem"><p>Added highlight-undo plugin for highlighting undo/redo targets</p></li><li class="listitem"><p>Added bash LSP and formatter support</p></li><li class="listitem"><p>Disabled Lualine LSP status indicator for Toggleterm buffer</p></li><li class="listitem"><p>Added <code class="literal">nvim-docs-view</code>, a plugin to display LSP hover documentation in a side
panel</p></li><li class="listitem"><p>Switched to <code class="literal">nixosOptionsDoc</code> in option documentation. To quote home-manager
commit: “Output is mostly unchanged aside from some minor typographical and
formatting changes, along with better source links.”</p></li><li class="listitem"><p>Updated indent-blankine.nvim to v3 - this comes with a few option changes,
which will be migrated with <code class="literal">renamedOptionModule</code></p></li></ul></div><p><a class="link" href="https://jacekpoz.pl" target="_top">jacekpoz</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Fixed scrollOffset not being used</p></li><li class="listitem"><p>Updated clangd to 16</p></li><li class="listitem"><p>Disabled <code class="literal">useSystemClipboard</code> by default</p></li></ul></div><p><a class="link" href="https://github.com/ksonj" target="_top">ksonj</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Add support to change mappings to utility/surround</p></li><li class="listitem"><p>Add black-and-isort python formatter</p></li><li class="listitem"><p>Removed redundant “Enable …” in <code class="literal">mkEnableOption</code> descriptions</p></li><li class="listitem"><p>Add options to modify LSP key bindings and add proper which-key descriptions</p></li><li class="listitem"><p>Changed type of <code class="literal">statusline.lualine.activeSection</code> and
<code class="literal">statusline.lualine.inactiveSection</code> from <code class="literal">attrsOf str</code> to
<code class="literal">attrsOf (listOf str)</code></p></li><li class="listitem"><p>Added <code class="literal">statusline.lualine.extraActiveSection</code> and
<code class="literal">statusline.lualine.extraInactiveSection</code></p></li></ul></div>
</div>
</div><div class="chapter"> <div class="titlepage"> <div> <div> <h2 id="sec-release-0.6" class="title" >Release 0.6 </h2> </div> </div></div><div class="toc"> <p><strong>Table of Contents</strong></p> <dl class="toc"> <dt> <span class="section"> <a href="release-notes.html#sec-breaking-changes-and-migration-guide">Breaking Changes and Migration Guide</a> </span></dt><dt> <span class="section"> <a href="release-notes.html#sec-release-0.6-changelog">Changelog</a> </span></dt> </dl></div><p>Release notes for release 0.6</p><div class="section"> <div class="titlepage"> <div> <div> <h2 id="sec-breaking-changes-and-migration-guide" class="title" style="clear: both">Breaking Changes and Migration Guide </h2> </div> </div></div><p>In v0.6 we are introducing <code class="literal">setupOpts</code>: many plugin related options are moved
into their respective <code class="literal">setupOpts</code> submodule, e.g. <code class="literal">nvimTree.disableNetrw</code> is
renamed to <code class="literal">nvimTree.setupOpts.disable_netrw</code>.</p><p><span class="emphasis"><em>Why?</em></span> in short, you can now pass in anything to setupOpts and it will be passed
to your <code class="literal">require&#x27;plugin&#x27;.setup{...}</code>. No need to wait for us to support every
single plugin option.</p><p>The warnings when you rebuild your config should be enough to guide you through
what you need to do, if theres an option that was renamed but wasnt listed in
the warning, please file a bug report!</p><p>To make your migration process less annoying, heres a keybind that will help
you with renaming stuff from camelCase to snake_case (youll be doing that a
lot):</p><pre><code class="programlisting lua">-- paste this in a temp.lua file and load it in vim with :source /path/to/temp.lua
function camelToSnake()
-- Get the current word under the cursor
local word = vim.fn.expand(&quot;&lt;cword&gt;&quot;)
-- Replace each capital letter with an underscore followed by its lowercase equivalent
local snakeCase = string.gsub(word, &quot;%u&quot;, function(match)
return &quot;_&quot; .. string.lower(match)
end)
-- Remove the leading underscore if present
if string.sub(snakeCase, 1, 1) == &quot;_&quot; then
snakeCase = string.sub(snakeCase, 2)
end
vim.fn.setreg(vim.v.register, snakeCase)
-- Select the word under the cursor and paste
vim.cmd(&quot;normal! viwP&quot;)
end
vim.api.nvim_set_keymap(&#x27;n&#x27;, &#x27;&lt;leader&gt;a&#x27;, &#x27;:lua camelToSnake()&lt;CR&gt;&#x27;, { noremap = true, silent = true })
</code></pre>
</div><div class="section"> <div class="titlepage"> <div> <div> <h2 id="sec-release-0.6-changelog" class="title" style="clear: both">Changelog </h2> </div> </div></div><p><a class="link" href="https://github.com/ksonj" target="_top">ksonj</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Added Terraform language support.</p></li><li class="listitem"><p>Added <code class="literal">ChatGPT.nvim</code>, which can be enabled with
<a class="xref" href="options.html#opt-vim.assistant.chatgpt.enable" ><code class="option">vim.assistant.chatgpt.enable</code></a>. Do keep in mind that this option
requires <code class="literal">OPENAI_API_KEY</code> environment variable to be set.</p></li></ul></div><p><a class="link" href="https://github.com/donnerinoern" target="_top">donnerinoern</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Added Gruvbox theme.</p></li><li class="listitem"><p>Added marksman LSP for Markdown.</p></li><li class="listitem"><p>Fixed markdown preview with Glow not working and added an option for changing
the preview keybind.</p></li><li class="listitem"><p>colorizer.nvim: switched to a maintained fork.</p></li><li class="listitem"><p>Added <code class="literal">markdown-preview.nvim</code>, moved <code class="literal">glow.nvim</code> to a brand new
<code class="literal">vim.utility.preview</code> category.</p></li></ul></div><p><a class="link" href="https://github.com/elijahimmer" target="_top">elijahimmer</a></p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p>Added rose-pine theme.</p></li></ul></div><p><a class="link" href="https://jacekpoz.pl" target="_top">jacekpoz</a>:</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p>Added <code class="literal">vim.autocomplete.alwaysComplete</code>. Allows users to have the autocomplete
window popup only when manually activated.</p></li></ul></div><p><a class="link" href="https://github.com/horriblename" target="_top">horriblename</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Fixed empty winbar when breadcrumbs are disabled.</p></li><li class="listitem"><p>Added custom <code class="literal">setupOpts</code> for various plugins.</p></li><li class="listitem"><p>Removed support for deprecated plugin “nvim-compe”.</p></li><li class="listitem"><p>Moved most plugins to <code class="literal">setupOpts</code> method.</p></li></ul></div><p><a class="link" href="https://github.com/frothymarrow" target="_top">frothymarrow</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Added option <code class="literal">vim.luaPackages</code> to wrap neovim with extra Lua packages.</p></li><li class="listitem"><p>Rewrote the entire <code class="literal">fidget.nvim</code> module to include extensive configuration
options. Option <code class="literal">vim.fidget-nvim.align.bottom</code> has been removed in favor of
<code class="literal">vim.fidget-nvim.notification.window.align</code>, which now supports <code class="literal">top</code> and
<code class="literal">bottom</code> values. <code class="literal">vim.fidget-nvim.align.right</code> has no longer any equivalent
and also has been removed.</p></li><li class="listitem"><p><code class="literal">which-key.nvim</code> categories can now be customized through
<a class="link" href="options.html#opt-vim.binds.whichKey.register" >vim.binds.whichKey.register</a></p></li><li class="listitem"><p>Added <code class="literal">magick</code> to <code class="literal">vim.luaPackages</code> for <code class="literal">image.nvim</code>.</p></li><li class="listitem"><p>Added <code class="literal">alejandra</code> to the default devShell.</p></li><li class="listitem"><p>Migrated neovim-flake to <code class="literal">makeNeovimUnstable</code> wrapper.</p></li></ul></div><p><a class="link" href="https://github.com/notashelf" target="_top">notashelf</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Finished moving to <code class="literal">nixosOptionsDoc</code> in the documentation and changelog. All
documentation options and files are fully free of Asciidoc, and will now use
Nixpkgs flavored markdown.</p></li><li class="listitem"><p>Bumped plugin inputs to their latest versions.</p></li><li class="listitem"><p>Deprecated <code class="literal">presence.nvim</code> in favor of <code class="literal">neocord</code>. This means
<code class="literal">vim.rich-presence.presence-nvim</code> is removed and will throw a warning if used.
You are recommended to rewrite your neocord configuration from scratch based
on the. <a class="link" href="https://github.com/IogaMaster/neocord" target="_top">official documentation</a></p></li><li class="listitem"><p>Removed Tabnine plugin due to the usage of imperative tarball downloads. If
youd like to see it back, please create an issue.</p></li><li class="listitem"><p>Added support for css and tailwindcss through
vscode-language-servers-extracted &amp; tailwind-language-server. Those can be
enabled through <code class="literal">vim.languages.css</code> and <code class="literal">vim.languages.tailwind</code>.</p></li><li class="listitem"><p>Lualine module now allows customizing <code class="literal">always_divide_middle</code>, <code class="literal">ignore_focus</code>
and <code class="literal">disabled_filetypes</code> through the new options:
<a class="link" href="options.html#opt-vim.statusline.lualine.alwaysDivideMiddle" >vim.statusline.lualine.alwaysDivideMiddle</a>,
<a class="link" href="options.html#opt-vim.statusline.lualine.ignoreFocus" >vim.statusline.lualine.ignoreFocus</a>
and
<a class="link" href="options.html#opt-vim.statusline.lualine.disabledFiletypes" >vim.statusline.lualine.disabledFiletypes</a>.</p></li><li class="listitem"><p>Updated all plugin inputs to their latest versions (<span class="strong"><strong>21.04.2024</strong></span>) - this
brought minor color changes to the Catppuccin theme.</p></li><li class="listitem"><p>Moved home-manager module entrypoint to <code class="literal">flake/modules</code> and added an
experimental Nixos module. This requires further testing before it can be
considered ready for use.</p></li><li class="listitem"><p>Made lib calls explicit. E.g. <code class="literal">lib.strings.optionalString</code> instead of
<code class="literal">lib.optionalString</code>. This is a pattern expected to be followed by all
contributors in the future.</p></li><li class="listitem"><p>Added <code class="literal">image.nvim</code> for image previews.</p></li><li class="listitem"><p>The final neovim package is now exposed. This means you can build the neovim
package that will be added to your package list without rebuilding your system
to test if your configuration yields a broken package.</p></li><li class="listitem"><p>Changed the tree structure to distinguish between core options and plugin
options.</p></li><li class="listitem"><p>Added plugin auto-discovery from plugin inputs. This is mostly from
<a class="link" href="https://github.com/jordanisaacs/neovim-flake" target="_top">JordanIsaacs neovim-flake</a>.
Allows contributors to add plugin inputs with the <code class="literal">plugin-</code> prefix to have
them automatically discovered for the <code class="literal">plugin</code> type in <code class="literal">lib/types</code>.</p></li><li class="listitem"><p>Moved internal <code class="literal">wrapLuaConfig</code> to the extended library, structured its
arguments to take <code class="literal">luaBefore</code>, <code class="literal">luaConfig</code> and <code class="literal">luaAfter</code> as strings, which
are then concatted inside a lua block.</p></li><li class="listitem"><p>Added <a class="xref" href="options.html#opt-vim.luaConfigPre" ><code class="option">vim.luaConfigPre</code></a> and <a class="xref" href="options.html#opt-vim.luaConfigPost" ><code class="option">vim.luaConfigPost</code></a> for inserting
verbatim Lua configuration before and after the resolved Lua DAG respectively.
Both of those options take strings as the type, so you may read the contents
of a Lua file from a given path.</p></li><li class="listitem"><p>Added <code class="literal">vim.spellchecking.ignoredFiletypes</code> and
<code class="literal">vim.spellChecking.programmingWordlist.enable</code> for ignoring certain filetypes
in spellchecking and enabling <code class="literal">vim-dirtytalk</code> respectively. The previously
used <code class="literal">vim.spellcheck.vim-dirtytalk</code> aliases to the latter option.</p></li><li class="listitem"><p>Exposed <code class="literal">withRuby</code>, <code class="literal">withNodeJs</code>, <code class="literal">withPython3</code>, and <code class="literal">python3Packages</code> from
the <code class="literal">makeNeovimConfig</code> function under their respective options.</p></li><li class="listitem"><p>Added <a class="xref" href="options.html#opt-vim.extraPackages" ><code class="option">vim.extraPackages</code></a> for appending additional packages to the
wrapper PATH, making said packages available while inside the Neovim session.</p></li><li class="listitem"><p>Made Treesitter options configurable, and moved treesitter-context to
<code class="literal">setupOpts</code> while it is enabled.</p></li><li class="listitem"><p>Added <a class="xref" href="options.html#opt-vim.notify.nvim-notify.setupOpts.render" ><code class="option">vim.notify.nvim-notify.setupOpts.render</code></a> which takes either a
string of enum, or a Lua function. The default is “compact”, but you may
change it according to nvim-notify documentation.</p></li></ul></div>
</div>
</div><div class="chapter"> <div class="titlepage"> <div> <div> <h2 id="sec-release-0.7" class="title" >Release 0.7 </h2> </div> </div></div><div class="toc"> <p><strong>Table of Contents</strong></p> <dl class="toc"> <dt> <span class="section"> <a href="release-notes.html#sec-breaking-changes-and-migration-guide-0-7">Breaking Changes and Migration Guide</a> </span></dt><dd><dl><dt> <span class="section"> <a href="release-notes.html#sec-vim-configrc-removed"><code class="literal">vim.configRC</code> removed</a> </span></dt><dt> <span class="section"> <a href="release-notes.html#sec-vim-maps-rewrite"><code class="literal">vim.maps</code> rewrite</a> </span></dt><dt> <span class="section"> <a href="release-notes.html#sec-nvim-code-action-menu-deprecation"><code class="literal">vim.lsp.nvimCodeActionMenu</code> removed in favor of <code class="literal">vim.ui.fastaction</code></a> </span></dt><dt> <span class="section"> <a href="release-notes.html#sec-type-based-modules-removed"><code class="literal">type</code> based modules removed</a> </span></dt><dt> <span class="section"> <a href="release-notes.html#sec-nixpkgs-fmt-deprecation"><code class="literal">nixpkgs-fmt</code> removed in favor of <code class="literal">nixfmt</code></a> </span></dt><dt> <span class="section"> <a href="release-notes.html#sec-leader-changes">leader changes</a> </span></dt><dt> <span class="section"> <a href="release-notes.html#sec-vim-opt-changes"><code class="literal">vim.*</code> changes</a> </span></dt></dl></dd><dt> <span class="section"> <a href="release-notes.html#sec-release-0.7-changelog">Changelog</a> </span></dt> </dl></div><p>Release notes for release 0.7</p><div class="section"> <div class="titlepage"> <div> <div> <h2 id="sec-breaking-changes-and-migration-guide-0-7" class="title" style="clear: both">Breaking Changes and Migration Guide </h2> </div> </div></div><div class="toc"> <dl class="toc"> <dt> <span class="section"> <a href="release-notes.html#sec-vim-configrc-removed"><code class="literal">vim.configRC</code> removed</a> </span></dt><dt> <span class="section"> <a href="release-notes.html#sec-vim-maps-rewrite"><code class="literal">vim.maps</code> rewrite</a> </span></dt><dt> <span class="section"> <a href="release-notes.html#sec-nvim-code-action-menu-deprecation"><code class="literal">vim.lsp.nvimCodeActionMenu</code> removed in favor of <code class="literal">vim.ui.fastaction</code></a> </span></dt><dt> <span class="section"> <a href="release-notes.html#sec-type-based-modules-removed"><code class="literal">type</code> based modules removed</a> </span></dt><dt> <span class="section"> <a href="release-notes.html#sec-nixpkgs-fmt-deprecation"><code class="literal">nixpkgs-fmt</code> removed in favor of <code class="literal">nixfmt</code></a> </span></dt><dt> <span class="section"> <a href="release-notes.html#sec-leader-changes">leader changes</a> </span></dt><dt> <span class="section"> <a href="release-notes.html#sec-vim-opt-changes"><code class="literal">vim.*</code> changes</a> </span></dt> </dl></div><div class="section"> <div class="titlepage"> <div> <div> <h3 id="sec-vim-configrc-removed" class="title" ><code class="literal">vim.configRC</code> removed </h3> </div> </div></div><p>In v0.7 we are removing <code class="literal">vim.configRC</code> in favor of making <code class="literal">vim.luaConfigRC</code> the
top-level DAG, and thereby making the entire configuration Lua based. This
change introduces a few breaking changes:</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p><code class="literal">vim.configRC</code> has been removed, which means that you have to convert all of
your custom vimscript-based configuration to Lua. As for how to do that, you
will have to consult the Neovim documentation and your search engine.</p></li><li class="listitem"><p>After migrating your Vimscript-based configuration to Lua, you might not be
able to use the same entry names in <code class="literal">vim.luaConfigRC</code>, because those have also
slightly changed. See the new <a class="link" href="/index.xhtml#ch-dag-entries" target="_top">DAG entries in nvf manual</a> for more details.</p></li></ul></div><p><span class="strong"><strong>Why?</strong></span></p><p>Neovim being an aggressive refactor of Vim, is designed to be mainly Lua based;
making good use of its extensive Lua API. Additionally, Vimscript is slow and
brings unnecessary performance overhead while working with different
configuration formats.</p>
</div><div class="section"> <div class="titlepage"> <div> <div> <h3 id="sec-vim-maps-rewrite" class="title" ><code class="literal">vim.maps</code> rewrite </h3> </div> </div></div><p>Instead of specifying map modes using submodules (eg.: <code class="literal">vim.maps.normal</code>), a new
<code class="literal">vim.keymaps</code> submodule with support for a <code class="literal">mode</code> option has been introduced. It
can be either a string, or a list of strings, where a string represents the
short-name of the map mode(s), that the mapping should be set for. See
<code class="literal">:help map-modes</code> for more information.</p><p>For example:</p><pre><code class="programlisting nix">vim.maps.normal.&quot;&lt;leader&gt;m&quot; = { ... };
</code></pre><p>has to be replaced by</p><pre><code class="programlisting nix">vim.keymaps = [
{
key = &quot;&lt;leader&gt;m&quot;;
mode = &quot;n&quot;;
}
...
];
</code></pre>
</div><div class="section"> <div class="titlepage"> <div> <div> <h3 id="sec-nvim-code-action-menu-deprecation" class="title" ><code class="literal">vim.lsp.nvimCodeActionMenu</code> removed in favor of <code class="literal">vim.ui.fastaction</code> </h3> </div> </div></div><p>The nvim-code-action-menu plugin has been archived and broken for a long time,
so its being replaced with a young, but better alternative called
fastaction.nvim. Simply remove everything set under
<code class="literal">vim.lsp.nvimCodeActionMenu</code>, and set <code class="literal">vim.ui.fastaction.enable</code> to <code class="literal">true</code>.</p><p>Note that we are looking to add more alternatives in the future like
dressing.nvim and actions-preview.nvim, in case fastaction doesnt work for
everyone.</p>
</div><div class="section"> <div class="titlepage"> <div> <div> <h3 id="sec-type-based-modules-removed" class="title" ><code class="literal">type</code> based modules removed </h3> </div> </div></div><p>As part of the autocompletion rewrite, modules that used to use a <code class="literal">type</code> option
have been replaced by per-plugin modules instead. Since both modules only had
one type, you can simply change</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p><code class="literal">vim.autocomplete.*</code> -&gt; <code class="literal">vim.autocomplete.nvim-cmp.*</code></p></li><li class="listitem"><p><code class="literal">vim.autopairs.enable</code> -&gt; <code class="literal">vim.autopairs.nvim-autopairs.enable</code></p></li></ul></div>
</div><div class="section"> <div class="titlepage"> <div> <div> <h3 id="sec-nixpkgs-fmt-deprecation" class="title" ><code class="literal">nixpkgs-fmt</code> removed in favor of <code class="literal">nixfmt</code> </h3> </div> </div></div><p><code class="literal">nixpkgs-fmt</code> has been archived for a while, and its finally being removed in
favor of nixfmt (more information can be found
<a class="link" href="https://github.com/nix-community/nixpkgs-fmt?tab=readme-ov-file#nixpkgs-fmt---nix-code-formatter-for-nixpkgs" target="_top">here</a>.</p><p>To migrate to <code class="literal">nixfmt</code>, simply change <code class="literal">vim.languages.nix.format.type</code> to
<code class="literal">nixfmt</code>.</p>
</div><div class="section"> <div class="titlepage"> <div> <div> <h3 id="sec-leader-changes" class="title" >leader changes </h3> </div> </div></div><p>This has been deprecated in favor of using the more generic <code class="literal">vim.globals</code> (you
can use <code class="literal">vim.globals.mapleader</code> to change this instead).</p><p>Rust specific keymaps now use <code class="literal">maplocalleader</code> instead of <code class="literal">localleader</code> by
default. This is to avoid conflicts with other modules. You can change
<code class="literal">maplocalleader</code> with <code class="literal">vim.globals.maplocalleader</code>, but its recommended to set
it to something other than <code class="literal">mapleader</code> to avoid conflicts.</p>
</div><div class="section"> <div class="titlepage"> <div> <div> <h3 id="sec-vim-opt-changes" class="title" ><code class="literal">vim.*</code> changes </h3> </div> </div></div><p>Inline with the <a class="link" href="release-notes.html#sec-leader-changes" title="leader changes" >leader changes</a>, we have removed some
options that were under <code class="literal">vim</code> as convenient shorthands for <code class="literal">vim.o.*</code> options.</p><div class="warning"><h3 class="title">Warning</h3><p>As v0.7 features the addition of <a class="xref" href="options.html#opt-vim.options" ><code class="option">vim.options</code></a>, those options are now
considered as deprecated. You should migrate to the appropriate options in the
<code class="literal">vim.options</code> submodule.</p></div><p>The changes are, in no particular order:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p><code class="literal">colourTerm</code>, <code class="literal">mouseSupport</code>, <code class="literal">cmdHeight</code>, <code class="literal">updateTime</code>, <code class="literal">mapTime</code>,
<code class="literal">cursorlineOpt</code>, <code class="literal">splitBelow</code>, <code class="literal">splitRight</code>, <code class="literal">autoIndent</code> and <code class="literal">wordWrap</code> have
been mapped to their <a class="xref" href="options.html#opt-vim.options" ><code class="option">vim.options</code></a> equivalents. Please see the module
definition for the updated options.</p></li><li class="listitem"><p><code class="literal">tabWidth</code> has been <span class="strong"><strong>removed</strong></span> as it lead to confusing behaviour. You can
replicate the same functionality by setting <code class="literal">shiftwidth</code>, <code class="literal">tabstop</code> and
<code class="literal">softtabstop</code> under <code class="literal">vim.options</code> as you see fit.</p></li></ul></div>
</div>
</div><div class="section"> <div class="titlepage"> <div> <div> <h2 id="sec-release-0.7-changelog" class="title" style="clear: both">Changelog </h2> </div> </div></div><p><a class="link" href="https://github.com/ItsSorae" target="_top">ItsSorae</a>:</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p>Add support for <a class="link" href="https://typst.app/" target="_top">typst</a> under <code class="literal">vim.languages.typst</code> This
will enable the <code class="literal">typst-lsp</code> language server, and the <code class="literal">typstfmt</code> formatter</p></li></ul></div><p><a class="link" href="https://github.com/frothymarrow" target="_top">frothymarrow</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Modified type for
<a class="xref" href="options.html#opt-vim.visuals.fidget-nvim.setupOpts.progress.display.overrides" ><code class="option">vim.visuals.fidget-nvim.setupOpts.progress.display.overrides</code></a> from
<code class="literal">anything</code> to a <code class="literal">submodule</code> for better type checking.</p></li><li class="listitem"><p>Fix null <code class="literal">vim.lsp.mappings</code> generating an error and not being filtered out.</p></li><li class="listitem"><p>Add basic transparency support for <code class="literal">oxocarbon</code> theme by setting the highlight
group for <code class="literal">Normal</code>, <code class="literal">NormalFloat</code>, <code class="literal">LineNr</code>, <code class="literal">SignColumn</code> and optionally
<code class="literal">NvimTreeNormal</code> to <code class="literal">none</code>.</p></li><li class="listitem"><p>Fix <a class="xref" href="options.html#opt-vim.ui.smartcolumn.setupOpts.custom_colorcolumn" ><code class="option">vim.ui.smartcolumn.setupOpts.custom_colorcolumn</code></a> using the wrong
type <code class="literal">int</code> instead of the expected type <code class="literal">string</code>.</p></li></ul></div><p><a class="link" href="https://github.com/horriblename" target="_top">horriblename</a>:</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p>Fix broken treesitter-context keybinds in visual mode</p></li><li class="listitem"><p>Deprecate use of <code class="literal">__empty</code> to define empty tables in Lua. Empty attrset are no
longer filtered and thus should be used instead.</p></li><li class="listitem"><p>Add dap-go for better dap configurations</p></li><li class="listitem"><p>Make noice.nvim customizable</p></li><li class="listitem"><p>Standardize border style options and add custom borders</p></li><li class="listitem"><p>Remove <code class="literal">vim.disableDefaultRuntimePaths</code> in wrapper options.</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: circle;"><li class="listitem"><p>As nvf uses <code class="literal">$NVIM_APP_NAME</code> as of recent changes, we can safely assume any
configuration in <code class="literal">$XDG_CONFIG_HOME/nvf</code> is intentional.</p></li></ul></div></li></ul></div><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p>Switch from <a class="link" href="https://github.com/simrat39/rust-tools.nvim" target="_top">rust-tools.nvim</a> to the more feature-packed <a class="link" href="https://github.com/mrcjkb/rustaceanvim" target="_top">rustaceanvim</a>. This
switch entails a whole bunch of new features and options, so you are
recommended to go through rustacean.nvims README to take a closer look at its
features and usage</p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p>Add <a class="link" href="https://github.com/mrcjkb/lz.n" target="_top">lz.n</a> support and lazy-load some builtin plugins.</p></li><li class="listitem"><p>Add simpler helper functions for making keymaps</p></li></ul></div><p><a class="link" href="https://jacekpoz.pl" target="_top">jacekpoz</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Add <a class="link" href="https://github.com/ocaml/ocaml-lsp" target="_top">ocaml-lsp</a> support</p></li><li class="listitem"><p>Fix “Emac” typo</p></li><li class="listitem"><p>Add <a class="link" href="https://github.com/otavioschwanck/new-file-template.nvim" target="_top">new-file-template.nvim</a> to automatically fill new file contents using
templates</p></li><li class="listitem"><p>Make <a class="link" href="https://github.com/nvim-neo-tree/neo-tree.nvim" target="_top">neo-tree.nvim</a> display file icons properly by enabling
<code class="literal">visuals.nvimWebDevicons</code></p></li></ul></div><p><a class="link" href="https://github.com/diniamo" target="_top">diniamo</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Move the <code class="literal">theme</code> dag entry to before <code class="literal">luaScript</code>.</p></li><li class="listitem"><p>Add rustfmt as the default formatter for Rust.</p></li><li class="listitem"><p>Enabled the terminal integration of catppuccin for theming Neovims built-in
terminal (this also affects toggleterm).</p></li><li class="listitem"><p>Migrate bufferline to setupOpts for more customizability</p></li><li class="listitem"><p>Use <code class="literal">clangd</code> as the default language server for C languages</p></li><li class="listitem"><p>Expose <code class="literal">lib.nvim.types.pluginType</code>, which for example allows the user to
create abstractions for adding plugins</p></li><li class="listitem"><p>Migrate indent-blankline to setupOpts for more customizability. While the
plugins options can now be found under <code class="literal">indentBlankline.setupOpts</code>, the
previous iteration of the module also included out of place/broken options,
which have been removed for the time being. These are:</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: circle;"><li class="listitem"><p><code class="literal">listChar</code> - this was already unused</p></li><li class="listitem"><p><code class="literal">fillChar</code> - this had nothing to do with the plugin, please configure it
yourself by adding <code class="literal">vim.opt.listchars:append({ space = &#x27;&lt;char&gt;&#x27; })</code> to your
lua configuration</p></li><li class="listitem"><p><code class="literal">eolChar</code> - this also had nothing to do with the plugin, please configure it
yourself by adding <code class="literal">vim.opt.listchars:append({ eol = &#x27;&lt;char&gt;&#x27; })</code> to your
lua configuration</p></li></ul></div></li><li class="listitem"><p>Replace <code class="literal">vim.lsp.nvimCodeActionMenu</code> with <code class="literal">vim.ui.fastaction</code>, see the
breaking changes section above for more details</p></li><li class="listitem"><p>Add a <code class="literal">setupOpts</code> option to nvim-surround, which allows modifying options that
arent defined in nvf. Move the alternate nvim-surround keybinds to use
<code class="literal">setupOpts</code>.</p></li><li class="listitem"><p>Remove <code class="literal">autopairs.type</code>, and rename <code class="literal">autopairs.enable</code> to
<code class="literal">autopairs.nvim-autopairs.enable</code>. The new
<a class="xref" href="options.html#opt-vim.autopairs.nvim-autopairs.enable" ><code class="option">vim.autopairs.nvim-autopairs.enable</code></a> supports <code class="literal">setupOpts</code> format by
default.</p></li><li class="listitem"><p>Refactor of <code class="literal">nvim-cmp</code> and completion related modules</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: circle;"><li class="listitem"><p>Remove <code class="literal">autocomplete.type</code> in favor of per-plugin enable options such as
<a class="xref" href="options.html#opt-vim.autocomplete.nvim-cmp.enable" ><code class="option">vim.autocomplete.nvim-cmp.enable</code></a>.</p></li><li class="listitem"><p>Deprecate legacy Vimsnip in favor of Luasnip, and integrate
friendly-snippets for bundled snippets. <a class="xref" href="options.html#opt-vim.snippets.luasnip.enable" ><code class="option">vim.snippets.luasnip.enable</code></a>
can be used to toggle Luasnip.</p></li><li class="listitem"><p>Add sorting function options for completion sources under
<a class="xref" href="options.html#opt-vim.autocomplete.nvim-cmp.setupOpts.sorting.comparators" ><code class="option">vim.autocomplete.nvim-cmp.setupOpts.sorting.comparators</code></a></p></li></ul></div></li><li class="listitem"><p>Add C# support under <code class="literal">vim.languages.csharp</code>, with support for both
omnisharp-roslyn and csharp-language-server.</p></li><li class="listitem"><p>Add Julia support under <code class="literal">vim.languages.julia</code>. Note that the entirety of Julia
is bundled with nvf, if you enable the module, since there is no way to
provide only the LSP server.</p></li><li class="listitem"><p>Add <a class="link" href="https://github.com/diniamo/run.nvim" target="_top"><code class="literal">run.nvim</code></a> support for running code
using cached commands.</p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Make Neovims configuration file entirely Lua based. This comes with a few
breaking changes:</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: circle;"><li class="listitem"><p><code class="literal">vim.configRC</code> has been removed. You will need to migrate your entries to
Neovim-compliant Lua code, and add them to <code class="literal">vim.luaConfigRC</code> instead.
Existing vimscript configurations may be preserved in <code class="literal">vim.cmd</code> functions.
Please see <a class="link" href="https://neovim.io/doc/user/lua.html#vim.cmd()" target="_top">Neovim documentation on <code class="literal">vim.cmd</code></a></p></li><li class="listitem"><p><code class="literal">vim.luaScriptRC</code> is now the top-level DAG, and the internal <code class="literal">vim.pluginRC</code>
has been introduced for setting up internal plugins. See the “DAG entries in
nvf” manual page for more information.</p></li></ul></div></li><li class="listitem"><p>Rewrite <code class="literal">vim.maps</code>, see the breaking changes section above.</p></li></ul></div><p><a class="link" href="https://github.com/notashelf" target="_top">NotAShelf</a>:</p><div class="itemizedlist"><ul class="itemizedlist " style="list-style-type: disc;"><li class="listitem"><p>Add <code class="literal">deno fmt</code> as the default Markdown formatter. This will be enabled
automatically if you have autoformatting enabled, but can be disabled manually
if you choose to.</p></li><li class="listitem"><p>Add <code class="literal">vim.extraLuaFiles</code> for optionally sourcing additional lua files in your
configuration.</p></li><li class="listitem"><p>Refactor <code class="literal">programs.languages.elixir</code> to use lspconfig and none-ls for LSP and
formatter setups respectively. Diagnostics support is considered, and may be
added once the <a class="link" href="https://github.com/rrrene/credo" target="_top">credo</a> linter has been added to nixpkgs. A pull request is
currently open.</p></li><li class="listitem"><p>Remove vim-tidal and friends.</p></li><li class="listitem"><p>Clean up Lualine module to reduce theme dependency on Catppuccin, and fixed
blending issues in component separators.</p></li><li class="listitem"><p>Add [ts-ereror-translator.nvim] extension of the TS language module, under
<code class="literal">vim.languages.ts.extensions.ts-error-translator</code> to aid with Typescript
development.</p></li><li class="listitem"><p>Add <a class="link" href="https://github.com/nvim-neo-tree/neo-tree.nvim" target="_top">neo-tree.nvim</a> as an alternative file-tree plugin. It will be available
under <code class="literal">vim.filetree.neo-tree</code>, similar to nvimtree.</p></li><li class="listitem"><p>Add <code class="literal">nvf-print-config</code> &amp; <code class="literal">nvf-print-config-path</code> helper scripts to Neovim
closure. Both of those scripts have been automatically added to your PATH upon
using neovimConfig or <code class="literal">programs.nvf.enable</code>.</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: circle;"><li class="listitem"><p><code class="literal">nvf-print-config</code> will display your <code class="literal">init.lua</code>, in full.</p></li><li class="listitem"><p><code class="literal">nvf-print-config-path</code> will display the path to <span class="emphasis"><em>a clone</em></span> of your
<code class="literal">init.lua</code>. This is not the path used by the Neovim wrapper, but an
identical clone.</p></li></ul></div></li><li class="listitem"><p>Add <code class="literal">vim.ui.breadcrumbs.lualine</code> to allow fine-tuning breadcrumbs behaviour on
Lualine. Only <code class="literal">vim.ui.breadcrumbs.lualine.winbar</code> is supported for the time
being.</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: circle;"><li class="listitem"><p><a class="xref" href="options.html#opt-vim.ui.breadcrumbs.lualine.winbar.enable" ><code class="option">vim.ui.breadcrumbs.lualine.winbar.enable</code></a> has been added to allow
controlling the default behaviour of the <code class="literal">nvim-navic</code> component on Lualine,
which used to occupy <code class="literal">winbar.lualine_c</code> as long as breadcrumbs are enabled.</p></li><li class="listitem"><p><code class="literal">vim.ui.breadcrumbs.alwaysRender</code> has been renamed to
<a class="xref" href="options.html#opt-vim.ui.breadcrumbs.lualine.winbar.alwaysRender" ><code class="option">vim.ui.breadcrumbs.lualine.winbar.alwaysRender</code></a> to be conform to the
new format.</p></li></ul></div></li><li class="listitem"><p>Add <a class="link" href="https://github.com/detachhead/basedpyright" target="_top">basedpyright</a> as a Python LSP
server and make it default.</p></li><li class="listitem"><p>Add <a class="link" href="https://github.com/python-lsp/python-lsp-server" target="_top">python-lsp-server</a> as an
additional Python LSP server.</p></li><li class="listitem"><p>Add <a class="xref" href="options.html#opt-vim.options" ><code class="option">vim.options</code></a> to set <code class="literal">vim.o</code> values in in your nvf configuration
without using additional Lua. See option documentation for more details.</p></li><li class="listitem"><p>Add <a class="xref" href="options.html#opt-vim.dashboard.dashboard-nvim.setupOpts" ><code class="option">vim.dashboard.dashboard-nvim.setupOpts</code></a> to allow user
configuration for <a class="link" href="https://github.com/nvimdev/dashboard-nvim" target="_top">dashboard.nvim</a></p></li><li class="listitem"><p>Update <code class="literal">lualine.nvim</code> input and add missing themes:</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: circle;"><li class="listitem"><p>Adds <code class="literal">ayu</code>, <code class="literal">gruvbox_dark</code>, <code class="literal">iceberg</code>, <code class="literal">moonfly</code>, <code class="literal">onedark</code>,
<code class="literal">powerline_dark</code> and <code class="literal">solarized_light</code> themes.</p></li></ul></div></li><li class="listitem"><p>Add <a class="xref" href="options.html#opt-vim.spellcheck.extraSpellWords" ><code class="option">vim.spellcheck.extraSpellWords</code></a> to allow adding arbitrary
spellfiles to Neovims runtime with ease.</p></li><li class="listitem"><p>Add combined nvf configuration (<code class="literal">config.vim</code>) into the final packages
<code class="literal">passthru</code> as <code class="literal">passthru.neovimConfiguration</code> for easier debugging.</p></li><li class="listitem"><p>Add support for <a class="link" href="https://github.com/rachartier/tiny-devicons-auto-colors.nvim" target="_top">tiny-devicons-auto-colors</a> under
<code class="literal">vim.visuals.tiny-devicons-auto-colors</code></p></li><li class="listitem"><p>Move options that used to set <code class="literal">vim.o</code> values (e.g. <code class="literal">vim.wordWrap</code>) into
<code class="literal">vim.options</code> as default values. Some are left as they dont have a direct
equivalent, but expect a switch eventually.</p></li></ul></div><p><a class="link" href="https://github.com/ppenguin" target="_top">ppenguin</a>:</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p>Telescope:</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: circle;"><li class="listitem"><p>Fixed <code class="literal">project-nvim</code> command and keybinding</p></li><li class="listitem"><p>Added default ikeybind/command for <code class="literal">Telescope resume</code> (<code class="literal">&lt;leader&gt;fr</code>)</p></li></ul></div></li><li class="listitem"><p>Add <code class="literal">hcl</code> lsp/formatter (not the same as <code class="literal">terraform</code>, which is not useful for
e.g. <code class="literal">nomad</code> config files).</p></li></ul></div><p><a class="link" href="https://github.com/Soliprem" target="_top">Soliprem</a>:</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p>Add LSP and Treesitter support for R under <code class="literal">vim.languages.R</code>.</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: circle;"><li class="listitem"><p>Add formatter support for R, with styler and formatR as options</p></li></ul></div></li><li class="listitem"><p>Add Otter support under <code class="literal">vim.lsp.otter</code> and an assert to prevent conflict with
ccc</p></li><li class="listitem"><p>Fixed typo in Otters setupOpts</p></li><li class="listitem"><p>Add Neorg support under <code class="literal">vim.notes.neorg</code></p></li><li class="listitem"><p>Add LSP, diagnostics, formatter and Treesitter support for Kotlin under
<code class="literal">vim.languages.kotlin</code></p></li><li class="listitem"><p>changed default keybinds for leap.nvim to avoid altering expected behavior</p></li><li class="listitem"><p>Add LSP, formatter and Treesitter support for Vala under <code class="literal">vim.languages.vala</code></p></li><li class="listitem"><p>Add [Tinymist](https://github.com/Myriad-Dreamin/tinymist] as a formatter for
the Typst language module.</p></li><li class="listitem"><p>Add LSP and Treesitter support for Assembly under <code class="literal">vim.languages.assembly</code></p></li><li class="listitem"><p>Move <a class="link" href="https://github.com/folke/which-key.nvim" target="_top">which-key</a> to the new spec</p></li><li class="listitem"><p>Add LSP and Treesitter support for Nushell under <code class="literal">vim.languages.nu</code></p></li><li class="listitem"><p>Add LSP and Treesitter support for Gleam under <code class="literal">vim.languages.gleam</code></p></li></ul></div><p><a class="link" href="https://github.com/Bloxx12" target="_top">Bloxx12</a></p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p>Add support for <a class="link" href="https://github.com/RRethy/base16-nvim" target="_top">base16 theming</a> under
<code class="literal">vim.theme</code></p></li><li class="listitem"><p>Fix internal breakage in <code class="literal">elixir-tools</code> setup.</p></li></ul></div><p><a class="link" href="https://github.com/ksonj" target="_top">ksonj</a>:</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p>Add LSP support for Scala via
<a class="link" href="https://github.com/scalameta/nvim-metals" target="_top">nvim-metals</a></p></li></ul></div><p><a class="link" href="https://github.com/nezia1" target="_top">nezia1</a>:</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p>Add <a class="link" href="https://github.com/biomejs/biome" target="_top">biome</a> support for Typescript, CSS and
Svelte. Enable them via <a class="xref" href="options.html#opt-vim.languages.ts.format.type" ><code class="option">vim.languages.ts.format.type</code></a>,
<a class="xref" href="options.html#opt-vim.languages.css.format.type" ><code class="option">vim.languages.css.format.type</code></a> and
<a class="xref" href="options.html#opt-vim.languages.svelte.format.type" ><code class="option">vim.languages.svelte.format.type</code></a> respectively.</p></li><li class="listitem"><p>Replace <a class="link" href="https://github.com/nix-community/nixpkgs-fmt" target="_top">nixpkgs-fmt</a> with
<a class="link" href="https://github.com/NixOS/nixfmt" target="_top">nixfmt</a> (nixfmt-rfc-style).</p></li></ul></div><p><a class="link" href="https://github.com/Nowaaru" target="_top">Nowaaru</a>:</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p>Add <code class="literal">precognition-nvim</code>.</p></li></ul></div><p><a class="link" href="https://github.com/DamitusThyYeetus123" target="_top">DamitusThyYeeticus123</a>:</p><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc;"><li class="listitem"><p>Add support for <a class="link" href="https://astro.build/" target="_top">Astro</a> language server.</p></li></ul></div>
</div>
</div>
</div> <div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="options.html">Prev</a>&nbsp;</td>
<td width="20%" align="center">&nbsp;</td>
<td width="40%" align="right">&nbsp;</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Appendix B. Neovim Flake Configuration Options&nbsp;</td>
<td width="20%" align="center"><a accesskey="h" href="index.xhtml">Home</a></td>
<td width="40%" align="right" valign="top">&nbsp;</td>
</tr>
</table>
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

View file

@ -1,4 +0,0 @@
document.addEventListener('DOMContentLoaded', function(event) {
anchors.add('h1[id]:not(div.note h1, div.warning h1, div.tip h1, div.caution h1, div.important h1), h2[id]:not(div.note h2, div.warning h2, div.tip h2, div.caution h2, div.important h2), h3[id]:not(div.note h3, div.warning h3, div.tip h3, div.caution h3, div.important h3), h4[id]:not(div.note h4, div.warning h4, div.tip h4, div.caution h4, div.important h4), h5[id]:not(div.note h5, div.warning h5, div.tip h5, div.caution h5, div.important h5), h6[id]:not(div.note h6, div.warning h6, div.tip h6, div.caution h6, div.important h6)');
});

View file

@ -1,58 +0,0 @@
document.addEventListener("DOMContentLoaded", () => {
if (!window.location.pathname.endsWith("options.html")) return;
const searchDiv = document.createElement("div");
searchDiv.id = "search-bar";
searchDiv.innerHTML = `
<input type="text" id="search-input" placeholder="Search options by ID..." />
<div id="search-results"></div>
`;
document.body.prepend(searchDiv);
const dtElements = Array.from(document.querySelectorAll("dt"));
const ddElements = Array.from(document.querySelectorAll("dd"));
const dtOptionIds = dtElements.map(
(dt) => dt.querySelector("a")?.id.toLowerCase() || "",
);
if (dtElements.length === 0 || ddElements.length === 0) {
console.warn("Something went wrong, page may be loaded incorrectly.");
return;
}
const dtElementsData = dtElements.map((dt, index) => ({
element: dt,
id: dtOptionIds[index],
ddElement: ddElements[index],
}));
const hiddenClass = "hidden";
const hiddenStyle = document.createElement("style");
hiddenStyle.innerHTML = `.${hiddenClass} { display: none; }`;
document.head.appendChild(hiddenStyle);
let debounceTimeout;
document.getElementById("search-input").addEventListener("input", (event) => {
clearTimeout(debounceTimeout);
debounceTimeout = setTimeout(() => {
const query = event.target.value.toLowerCase();
const matches = [];
const nonMatches = [];
dtElementsData.forEach(({ element, id, ddElement }) => {
const isMatch = id.includes(query);
if (isMatch) {
matches.push(element, ddElement);
} else {
nonMatches.push(element, ddElement);
}
});
requestAnimationFrame(() => {
matches.forEach((el) => el?.classList.remove(hiddenClass));
nonMatches.forEach((el) => el?.classList.add(hiddenClass));
});
}, 200);
});
});

View file

@ -1,622 +0,0 @@
@import "tomorrow.min.css";
html {
-webkit-text-size-adjust: 100%;
}
html:focus-within {
scroll-behavior: smooth;
}
body {
-webkit-text-size-adjust: 100%;
-moz-text-size-adjust: 100%;
text-size-adjust: 100%;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
min-height: 100vh;
position: relative;
text-rendering: optimizeSpeed;
width: 100%;
}
*, :after, :before {
box-sizing: border-box;
}
a:not([class]) {
-webkit-text-decoration-skip: ink;
text-decoration-skip-ink: auto;
}
a, abbr, acronym, address, applet, article, aside, audio, b, big, blockquote, body, canvas, caption, center, cite, code, dd, del, details, dfn, div, dl, dt, em, embed, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, html, i, iframe, img, ins, kbd, label, legend, li, mark, menu, nav, object, ol, output, p, pre, q, ruby, s, samp, section, small, span, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, time, tr, tt, u, ul, var, video {
border: 0;
font-size: 100%;
font: inherit;
margin: 0;
padding: 0;
vertical-align: baseline;
}
:focus {
outline: 0;
}
article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section {
display: block;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:after, blockquote:before, q:after, q:before {
content: "";
content: none;
}
input, input:required {
box-shadow: none;
}
input:-webkit-autofill, input:-webkit-autofill:active, input:-webkit-autofill:focus, input:-webkit-autofill:hover {
-webkit-box-shadow: inset 0 0 0 30px #fff;
}
input[type=search]::-webkit-search-cancel-button, input[type=search]::-webkit-search-decoration, input[type=search]::-webkit-search-results-button, input[type=search]::-webkit-search-results-decoration {
-webkit-appearance: none;
-moz-appearance: none;
}
input[type=search] {
-webkit-appearance: none;
-moz-appearance: none;
}
input:focus {
outline: 0;
}
audio, canvas, video {
display: inline-block;
max-width: 100%;
}
audio:not([controls]) {
display: none;
height: 0;
}
[hidden] {
display: none;
}
a:active, a:hover {
outline: 0;
}
img {
height: auto;
max-width: 100%;
vertical-align: middle;
}
img, picture {
display: inline-block;
}
button, input {
line-height: normal;
}
button, html input[type=button], input[type=reset], input[type=submit] {
-webkit-appearance: button;
background: 0 0;
border: 0;
cursor: pointer;
}
button[disabled], html input[disabled] {
cursor: default;
}
[disabled] {
pointer-events: none;
}
input[type=checkbox], input[type=radio] {
padding: 0;
}
input[type=search] {
-webkit-appearance: textfield;
box-sizing: content-box;
}
input[type=search]::-webkit-search-cancel-button, input[type=search]::-webkit-search-decoration {
-webkit-appearance: none;
}
button::-moz-focus-inner, input::-moz-focus-inner {
border: 0;
padding: 0;
}
button {
background: 0 0;
border: 0;
}
textarea {
overflow: auto;
resize: vertical;
vertical-align: top;
}
table {
border-collapse: collapse;
border-spacing: 0;
text-indent: 0;
}
hr {
background: #000;
border: 0;
box-sizing: content-box;
height: 1px;
line-height: 0;
margin: 0;
overflow: visible;
padding: 0;
page-break-after: always;
width: 100%;
}
pre {
font-family: monospace, monospace;
font-size: 100%;
}
a {
background-color: transparent;
}
abbr[title] {
border-bottom: none;
text-decoration: none;
}
code, kbd, pre, samp {
font-family: monospace, monospace;
}
small, sub, sup {
font-size: 75%;
}
sub, sup {
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -5px;
}
sup {
top: -5px;
}
button, input, optgroup, select, textarea {
font-family: inherit;
font-size: 100%;
line-height: 1;
margin: 0;
padding: 0;
}
button, input {
overflow: visible;
}
button, select {
text-transform: none;
}
[type=button], [type=reset], [type=submit], button {
-webkit-appearance: button;
}
[type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner, button::-moz-focus-inner {
border-style: none;
outline: 0;
padding: 0;
}
legend {
border: 0;
color: inherit;
display: block;
max-width: 100%;
white-space: normal;
width: 100%;
}
fieldset {
min-width: 0;
}
body:not(:-moz-handler-blocked) fieldset {
display: block;
}
progress {
vertical-align: baseline;
}
[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button {
height: auto;
}
[type=search] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
[type=search]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit;
}
summary {
display: list-item;
}
template {
display: none;
}
:root {
--nmd-color0: #0a3e68;
--nmd-color1: #268598;
--nmd-color2: #b8d09e;
--nmd-color3: #f6cf5e;
--nmd-color4: #ec733b;
--nmd-color-info: #167cb9;
--nmd-color-warn: #ff6700;
}
body {
background: white;
color: #111827;
max-width: min(100ch, 1024px);
margin: 0 auto;
padding: 10px;
font-family: "Lucida Sans", Arial, sans-serif;
font-size: 16px;
line-height: 1.4em;
}
@media (prefers-color-scheme: dark) {
body {
background: #111827;
color: #f9fafb;
}
}
h1,
h2,
h3 {
color: var(--nmd-color0);
font-family: "Lato", sans-serif;
font-weight: 300;
line-height: 1.125;
}
@media (prefers-color-scheme: dark) {
h1,
h2,
h3 {
color: var(--nmd-color4);
}
}
h1 {
font-size: 48px;
font-weight: 300;
margin: 4rem 0 1.5rem;
}
h2 {
font-size: 32px;
font-weight: 300;
margin: 2rem 0 1rem;
}
h3 {
font-size: 20px;
font-weight: 400;
margin: 0.5rem 0.25rem;
}
p {
margin: 0.9rem 0;
}
p:first-child {
margin-top: 0;
}
p:last-child {
margin-bottom: 0;
}
a {
color: var(--nmd-color0);
text-decoration: underline;
text-underline-offset: 3px;
}
a:visited {
color: var(--nmd-color1);
}
a:hover {
color: var(--nmd-color1);
}
@media (prefers-color-scheme: dark) {
a {
color: var(--nmd-color3);
}
a:visited {
color: var(--nmd-color2);
}
a:hover {
color: var(--nmd-color4);
}
}
code {
font-size: 90%;
}
span.command {
font-size: 90%;
font-family: monospace;
}
em {
font-style: italic;
}
strong {
font-weight: bold;
}
pre {
background: #f9fafb;
margin: 2rem 16px;
padding: 10px;
border: 1px solid #e5e7eb;
border-radius: 4px;
box-shadow: 4px 4px 8px #e5e7eb;
font-size: 90%;
margin-bottom: 1.5rem;
padding: 6px;
overflow: auto;
}
@media (prefers-color-scheme: dark) {
pre {
background: #1f2937;
border-color: black;
box-shadow: 4px 4px 8px black;
}
}
pre span img {
user-select: none;
}
pre:has(code) {
padding: 0;
}
td,
th {
padding: 2px 5px;
}
td:first-child,
th:first-child {
padding-left: 0;
}
td:last-child,
th:last-child {
padding-right: 0;
}
dt {
margin: 1.2rem 0 0.8rem;
content-visibility: auto;
contain-intrinsic-size: auto 42px;
}
dd {
margin-left: 2rem;
content-visibility: auto;
contain-intrinsic-size: auto 500px;
}
ul {
margin: 0.9rem 0;
padding-left: 30px;
list-style: disc;
}
ul:first-child {
margin-top: 0;
}
ul:last-child {
margin-bottom: 0;
}
ol {
margin: 0.9rem 0;
padding-left: 30px;
list-style: decimal;
}
ol:first-child {
margin-top: 0;
}
ol:last-child {
margin-bottom: 0;
}
li {
margin: 0.9rem 0;
padding-left: 5px;
}
li:first-child {
margin-top: 0;
}
li:last-child {
margin-bottom: 0;
}
.navheader hr,
.navfooter hr {
margin: 1rem 0;
background: #e5e7eb;
}
@media (prefers-color-scheme: dark) {
.navheader hr,
.navfooter hr {
background: #4b5563;
}
}
.navheader a,
.navfooter a {
text-decoration: none;
}
#search-bar {
position: sticky;
top: 0;
background: white;
padding: 10px;
border-bottom: 1px solid #e5e7eb;
z-index: 1000;
}
@media (prefers-color-scheme: dark) {
#search-bar {
background: #111827;
color: #f9fafb;
border-bottom: 1px solid black;
}
}
#search-input {
width: 100%;
padding: 8px;
border: 1px solid #ccc;
border-radius: 4px;
background: inherit;
color: inherit;
}
.hidden {
display: none;
}
div.titlepage {
margin: 40px 0;
}
div.titlepage hr {
display: none;
}
div.toc {
background: #f9fafb;
margin: 2rem 16px;
padding: 10px;
border: 1px solid #e5e7eb;
border-radius: 4px;
box-shadow: 4px 4px 8px #e5e7eb;
}
@media (prefers-color-scheme: dark) {
div.toc {
background: #1f2937;
border-color: black;
box-shadow: 4px 4px 8px black;
}
}
div.toc a {
text-decoration: none;
}
div.note,
div.warning {
background: #f9fafb;
margin: 2rem 16px;
padding: 10px;
border: 1px solid #e5e7eb;
border-radius: 4px;
box-shadow: 4px 4px 8px #e5e7eb;
font-style: italic;
}
@media (prefers-color-scheme: dark) {
div.note,
div.warning {
background: #1f2937;
border-color: black;
box-shadow: 4px 4px 8px black;
}
}
div.note h3,
div.warning h3 {
float: right;
margin: 0 0 1rem 1rem;
width: 42px;
height: 42px;
content: url();
}
div.note h3 + p,
div.warning h3 + p {
margin-top: 0;
}
div.note h3 {
background-color: var(--nmd-color-info);
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='42' height='42' viewBox='0 0 24 24' stroke-width='2' stroke='black' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M12 8h.01'%3E%3C/path%3E%3Cpath d='M11 12h1v4h1'%3E%3C/path%3E%3Cpath d='M12 3c7.2 0 9 1.8 9 9s-1.8 9 -9 9s-9 -1.8 -9 -9s1.8 -9 9 -9z'%3E%3C/path%3E%3C/svg%3E");
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='42' height='42' viewBox='0 0 24 24' stroke-width='2' stroke='black' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M12 8h.01'%3E%3C/path%3E%3Cpath d='M11 12h1v4h1'%3E%3C/path%3E%3Cpath d='M12 3c7.2 0 9 1.8 9 9s-1.8 9 -9 9s-9 -1.8 -9 -9s1.8 -9 9 -9z'%3E%3C/path%3E%3C/svg%3E");
}
div.warning h3 {
background-color: var(--nmd-color-warn);
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='42' height='42' viewBox='0 0 24 24' stroke-width='2' stroke='black' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M12 9v2m0 4v.01'%3E%3C/path%3E%3Cpath d='M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75'%3E%3C/path%3E%3C/svg%3E");
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='42' height='42' viewBox='0 0 24 24' stroke-width='2' stroke='black' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'%3E%3C/path%3E%3Cpath d='M12 9v2m0 4v.01'%3E%3C/path%3E%3Cpath d='M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75'%3E%3C/path%3E%3C/svg%3E");
}
.term {
font-weight: 300;
}
.docbook .xref img[src^="images/callouts/"],
.screen img,
.programlisting img {
width: 1em;
}
.calloutlist img {
width: 1.3em;
}
/** The console prompt, e.g., `$` and `#` should not be selectable. */
.programlisting.language-shell .hljs-meta.prompt_ {
user-select: none;
}
@media (prefers-color-scheme: dark) {
@import "tomorrow-night.min.css";
}
/*# sourceMappingURL=style.css.map */

View file

@ -8063,13 +8063,11 @@ boolean</p>
</span>
</dt>
<dd>
<p>An attribute set containing global variable values
for storing vim variables as early as possible. If
populated, this option will set vim variables in the
built luaConfigRC as the first item.</p><div class="note"><h3 class="title">Note</h3><p><code class="literal">{foo = &quot;bar&quot;;}</code> will set <code class="literal">vim.g.foo</code> to “bar”, where
the type of <code class="literal">bar</code> in the resulting Lua value will be
inferred from the type of the value in the <code class="literal">{name = value;}</code>
pair passed to the option.</p></div>
<p>A freeform attribute set containing global variable values for setting vim
variables as early as possible. If populated, this option will set vim variables
in the built <code class="option">luaConfigRC</code> as the first item.</p><div class="note"><h3 class="title">Note</h3><p><code class="literal">{foo = &quot;bar&quot;;}</code> will set <code class="literal">vim.g.foo</code> to “bar”, where the type of <code class="literal">bar</code> in the
resulting Lua value will be inferred from the type of the value in the
<code class="literal">{name = value;}</code> pair passed to the option.</p></div>
<p><span class="emphasis"><em>Type:</em></span>
attribute set of anything</p>
@ -22573,13 +22571,11 @@ list of (null or package or one of “alpha-nvim”, “base16”, “bufdelete-
</span>
</dt>
<dd>
<p>An attribute set containing vim options to be set
as early as possible. If populated, this option will
set vim options in the built luaConfigRC after <code class="literal">basic</code>
and before <code class="literal">pluginConfigs</code> DAG entries.</p><div class="note"><h3 class="title">Note</h3><p><code class="literal">{foo = &quot;bar&quot;;}</code> will set <code class="literal">vim.o.foo</code> to “bar”, where
the type of <code class="literal">bar</code> in the resulting Lua value will be
inferred from the type of the value in the<code class="literal">{name = value;}</code>
pair passed to the option.</p></div>
<p>A freeform attribute set containing vim options to be set as early as possible.
If populated, this option will set vim options in the built <code class="option">luaConfigRC</code>
after <code class="literal">basic</code> and before <code class="literal">pluginConfigs</code> DAG entries.</p><div class="note"><h3 class="title">Note</h3><p><code class="literal">{foo = &quot;bar&quot;;}</code> will set <code class="literal">vim.o.foo</code> to “bar”, where the type of <code class="literal">bar</code> in the
resulting Lua value will be inferred from the type of the value in the
<code class="literal">{name = value;}</code> pair passed to the option.</p></div>
<p><span class="emphasis"><em>Type:</em></span>
attribute set of anything</p>
@ -22688,6 +22684,31 @@ one of “a”, “n”, “v”, “i”, “c”</p>
<p><span class="emphasis"><em>Default:</em></span>
<code class="literal">&quot;a&quot;</code></p>
<p><span class="emphasis"><em>Declared by:</em></span></p>
<table border="0" summary="Simple list" class="simplelist">
<tr><td>
<code class="filename"><a class="filename" href="https://github.com/NotAShelf/nvf/blob/main/modules/wrapper/rc/options.nix" target="_top">
&lt;nvf/modules/wrapper/rc/options.nix&gt;
</a></code>
</td></tr>
</table>
</dd>
<dt>
<span class="term">
<a id="opt-vim.options.shiftwidth"></a><a class="term" href="options.html#opt-vim.options.shiftwidth"><code class="option">vim.options.shiftwidth</code>
</a>
</span>
</dt>
<dd>
<p>Number of spaces to use for each step of (auto)indent. Used for
<code class="option">cindent</code>, <code class="literal">&gt;&gt;</code>, <code class="literal">&lt;&lt;</code>, etc.</p><p>When zero the <code class="option">tabstop</code> value will be used.</p>
<p><span class="emphasis"><em>Type:</em></span>
signed integer</p>
<p><span class="emphasis"><em>Default:</em></span>
<code class="literal">8</code></p>
<p><span class="emphasis"><em>Declared by:</em></span></p>
<table border="0" summary="Simple list" class="simplelist">
<tr><td>
@ -22736,6 +22757,31 @@ boolean</p>
<p><span class="emphasis"><em>Default:</em></span>
<code class="literal">true</code></p>
<p><span class="emphasis"><em>Declared by:</em></span></p>
<table border="0" summary="Simple list" class="simplelist">
<tr><td>
<code class="filename"><a class="filename" href="https://github.com/NotAShelf/nvf/blob/main/modules/wrapper/rc/options.nix" target="_top">
&lt;nvf/modules/wrapper/rc/options.nix&gt;
</a></code>
</td></tr>
</table>
</dd>
<dt>
<span class="term">
<a id="opt-vim.options.tabstop"></a><a class="term" href="options.html#opt-vim.options.tabstop"><code class="option">vim.options.tabstop</code>
</a>
</span>
</dt>
<dd>
<p>Number of spaces that a <code class="literal">&lt;Tab&gt;</code> in the file counts for. Also see
the <span class="command"><strong>:retab</strong></span> command, and the <code class="option">softtabstop</code> option.</p>
<p><span class="emphasis"><em>Type:</em></span>
signed integer</p>
<p><span class="emphasis"><em>Default:</em></span>
<code class="literal">8</code></p>
<p><span class="emphasis"><em>Declared by:</em></span></p>
<table border="0" summary="Simple list" class="simplelist">
<tr><td>