mirror of
https://github.com/SoPat712/dotfiles.git
synced 2026-02-10 00:45:09 -05:00
qbit and vim
This commit is contained in:
BIN
qbit/macchiato.qbtheme
Normal file
BIN
qbit/macchiato.qbtheme
Normal file
Binary file not shown.
BIN
qbit/vuetorrent/public/apple-touch-icon.png
Normal file
BIN
qbit/vuetorrent/public/apple-touch-icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1001 B |
@@ -0,0 +1 @@
|
||||
import{aA as f}from"./index-135ae4c1.js";import{c as d,J as t}from"./vue-d2584a6d.js";function h(a,e,o=1){const{currentPage:n,currentPageSize:r,pageCount:u,isFirstPage:c,isLastPage:i,next:g,prev:l}=f({total:()=>t(a).length,page:o,pageSize:()=>t(e)===-1?t(a).length:t(e)}),p=d(()=>{const s=(n.value-1)*t(e),P=s+r.value;return t(a).slice(s,P)});return{currentPage:n,currentPageSize:r,pageCount:u,isFirstPage:c,isLastPage:i,next:g,prev:l,paginatedResults:p}}export{h as u};
|
||||
1
qbit/vuetorrent/public/assets/Dashboard-e1ea0c85.css
Normal file
1
qbit/vuetorrent/public/assets/Dashboard-e1ea0c85.css
Normal file
@@ -0,0 +1 @@
|
||||
.menu-scrollable[data-v-4e81b4b5]{max-height:500px;overflow:visible}.gap[data-v-08ef66f1]{gap:8px}.gap[data-v-60c9ae77]{gap:8px 16px}#torrentList[data-v-31f288a6]{background-color:unset}.gap[data-v-e5ea358f]{gap:8px 16px}#torrentList[data-v-e8f6336b]{background-color:unset}.gap[data-v-23c01601]{gap:8px}#torrentList[data-v-8832d38a]{background-color:unset}#torrentList tbody tr[data-v-8832d38a]:nth-child(odd){background-color:rgb(var(--v-theme-surface))}#torrentList tbody tr.selected[data-v-8832d38a]{position:relative}#torrentList tbody tr.selected[data-v-8832d38a]:nth-child(odd):after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}
|
||||
1
qbit/vuetorrent/public/assets/Dashboard-e667d93a.js
Normal file
1
qbit/vuetorrent/public/assets/Dashboard-e667d93a.js
Normal file
@@ -0,0 +1 @@
|
||||
import{g as w,ae as kt,a1 as d,a2 as T,a3 as i,ab as _,W as x,Z as p,a8 as R,a6 as f,m as a,a7 as H,af as et,ag as tt,F,K as Ue,d as O,r as ot,c as C,M as Se,x as at,u,Y as J,ao as $e,D as he,$ as nt,n as N,ap as lt,aq as rt,S as Fe,a5 as se,N as _e,P as Ce,a0 as Xe,w as Tt,q as $t,ar as Ct,A as We}from"./vue-d2584a6d.js";import{V as le,a as De,b as Ge,c as Ie,d as re,u as He,e as fe,f as Ke,g as be,h as ze,i as Q,j as qe,k as M,l as Z,m as Ye,n as Be,o as Vt,p as Oe,q as Ve,r as ve,s as Te,t as ee,v as st,w as wt,x as q,C as it,_ as X,y as U,z as we,A as St,B as Dt,T as L,D as dt,E as ut,F as It,G as Bt,H as B,I as je,J as Pt,K as Et,L as xt,R as Lt,M as K,N as Je,O as Ne,P as At,Q as Rt}from"./index-135ae4c1.js";import{_ as Qe}from"./dayjs-f7aba705.js";import"./faker-c43f92d4.js";import{d as ie}from"./dayjs.min-1969f9c6.js";import{ac as ct}from"./vuetify-e547ef1b.js";import{u as Mt}from"./ArrayPagination-26934cac.js";import{d as Ot}from"./index-fd06c5c5.js";const Nt={class:"d-flex"},Ut={key:2},Ft={key:3},Gt=w({__name:"RightClickMenuEntry",props:{text:{},icon:{},action:{type:Function},hidden:{type:Boolean},disabled:{type:Boolean},disabledText:{},disabledIcon:{},divider:{type:Boolean},children:{}},setup(h){return(e,l)=>{const t=kt("RightClickMenuEntry",!0);return e.hidden?R("",!0):(d(),T(re,{key:0,class:"px-3 pointer",disabled:e.disabled,onClick:e.action},{default:i(()=>[_("div",Nt,[e.disabled&&e.disabledIcon?(d(),T(le,{key:0,class:"mr-2"},{default:i(()=>[x(p(e.disabledIcon),1)]),_:1})):e.icon?(d(),T(le,{key:1,class:"mr-2"},{default:i(()=>[x(p(e.icon),1)]),_:1})):R("",!0),e.disabled&&e.disabledText?(d(),f("span",Ut,p(e.disabledText),1)):(d(),f("span",Ft,p(e.text),1)),a(De),!e.disabled&&e.children?(d(),T(le,{key:4},{default:i(()=>[x("mdi-chevron-right")]),_:1})):R("",!0)]),e.children?(d(),T(Ge,{key:0,activator:"parent","open-on-hover":!0,"open-on-click":!0,"close-delay":"0","open-delay":"0",location:"right"},{default:i(()=>[a(Ie,null,{default:i(()=>[(d(!0),f(F,null,H(e.children,n=>(d(),T(t,et(tt(n)),null,16))),256))]),_:1})]),_:1})):R("",!0)]),_:1},8,["disabled","onClick"]))}}}),Ht=w({__name:"RenameTorrentDialog",props:{guid:{},hash:{}},setup(h){const e=h,{isOpened:l}=He(e.guid),{t}=Ue(),n=fe(),r=O(),o=O(),s=O(!1),c=ot({newName:""}),v=[P=>!!P||t("dialogs.renameTorrent.required"),P=>P!==S.value||t("dialogs.renameTorrent.sameName")],k=C(()=>n.getTorrentByHash(e.hash)),S=C(()=>k.value?.name);async function A(){await o.value?.validate(),s.value&&(await n.renameTorrent(e.hash,c.newName),y())}const y=()=>{l.value=!1};return Se(()=>{c.newName=k.value?.name||""}),at(()=>{r.value?.select()}),(P,E)=>(d(),T(Ye,{modelValue:u(l),"onUpdate:modelValue":E[3]||(E[3]=V=>he(l)?l.value=V:null)},{default:i(()=>[a(Z,null,{default:i(()=>[a(Ke,null,{default:i(()=>[x(p(P.$t("dialogs.renameTorrent.title")),1)]),_:1}),a(be,null,{default:i(()=>[a(u(ze),{modelValue:s.value,"onUpdate:modelValue":E[1]||(E[1]=V=>s.value=V),ref_key:"form",ref:o,onSubmit:E[2]||(E[2]=J(()=>{},["prevent"]))},{default:i(()=>[S.value?(d(),T(Q,{key:0,"model-value":S.value,disabled:"",label:P.$t("dialogs.renameTorrent.oldName")},null,8,["model-value","label"])):R("",!0),a(Q,{modelValue:c.newName,"onUpdate:modelValue":E[0]||(E[0]=V=>c.newName=V),ref_key:"field",ref:r,rules:v,autofocus:"",label:P.$t("dialogs.renameTorrent.newName"),onKeydown:$e(A,["enter"])},null,8,["modelValue","label"])]),_:1},8,["modelValue"])]),_:1}),a(qe,null,{default:i(()=>[a(De),a(M,{color:"error",onClick:y},{default:i(()=>[x(p(P.$t("common.cancel")),1)]),_:1}),a(M,{color:"accent",disabled:!s.value,onClick:A},{default:i(()=>[x(p(P.$t("common.save")),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue"]))}}),ne=-2,z=-1,Kt=w({__name:"ShareLimitDialog",props:{guid:{},hashes:{}},setup(h){const e=h,{isOpened:l}=He(e.guid),t=Be(),n=fe(),r=O(!1),o=O("global"),s=O(!1),c=O(0),v=O(!1),k=O(0),S=O(!1),A=O(0),y=C(()=>o.value!=="enabled");function P(){l.value=!1}async function E(){switch(o.value){case"global":await t.setShareLimit(e.hashes,ne,ne,ne);break;case"disabled":await t.setShareLimit(e.hashes,z,z,z);break;case"enabled":await t.setShareLimit(e.hashes,s.value?c.value:z,v.value?k.value:z,S.value?A.value:z);break}P()}return Se(async()=>{const V=n.getTorrentByHash(e.hashes[0]);if(!V)return P();const g=V.ratio_limit,D=V.seeding_time_limit,Y=V.inactive_seeding_time_limit;g===ne&&D===ne&&Y===ne?o.value="global":g===z&&D===z&&Y===z?o.value="disabled":(o.value="enabled",s.value=g>=0,c.value=s.value?g:0,v.value=D>=0,k.value=v.value?D:0,S.value=Y>=0,A.value=S.value?Y:0)}),(V,g)=>(d(),T(Ye,{modelValue:u(l),"onUpdate:modelValue":g[9]||(g[9]=D=>he(l)?l.value=D:null),"max-width":"500"},{default:i(()=>[a(Z,{title:V.$t("dialogs.share_limit.title")},{default:i(()=>[a(be,null,{default:i(()=>[a(ze,{modelValue:r.value,"onUpdate:modelValue":g[7]||(g[7]=D=>r.value=D),onSubmit:g[8]||(g[8]=J(()=>{},["prevent"])),onKeydown:$e(J(E,["prevent"]),["enter"])},{default:i(()=>[a(Vt,{modelValue:o.value,"onUpdate:modelValue":g[0]||(g[0]=D=>o.value=D)},{default:i(()=>[a(Oe,{label:V.$t("dialogs.share_limit.global"),value:"global"},null,8,["label"]),a(Oe,{label:V.$t("dialogs.share_limit.disabled"),value:"disabled"},null,8,["label"]),a(Oe,{label:V.$t("dialogs.share_limit.enabled"),value:"enabled"},null,8,["label"])]),_:1},8,["modelValue"]),a(Ve,null,{default:i(()=>[a(ve,{cols:"12",class:"d-flex align-center"},{default:i(()=>[_("span",null,[a(Te,{modelValue:s.value,"onUpdate:modelValue":g[1]||(g[1]=D=>s.value=D),disabled:y.value},null,8,["modelValue","disabled"])]),a(Q,{modelValue:c.value,"onUpdate:modelValue":g[2]||(g[2]=D=>c.value=D),disabled:y.value||!s.value,density:"compact","hide-details":"",label:V.$t("dialogs.share_limit.ratio_limit")},null,8,["modelValue","disabled","label"])]),_:1}),a(ve,{cols:"12",class:"d-flex align-center"},{default:i(()=>[_("span",null,[a(Te,{modelValue:v.value,"onUpdate:modelValue":g[3]||(g[3]=D=>v.value=D),disabled:y.value},null,8,["modelValue","disabled"])]),a(Q,{modelValue:k.value,"onUpdate:modelValue":g[4]||(g[4]=D=>k.value=D),disabled:y.value||!v.value,density:"compact","hide-details":"",label:V.$t("dialogs.share_limit.seeding_time_limit")},null,8,["modelValue","disabled","label"])]),_:1}),a(ve,{cols:"12",class:"d-flex align-center"},{default:i(()=>[_("span",null,[a(Te,{modelValue:S.value,"onUpdate:modelValue":g[5]||(g[5]=D=>S.value=D),disabled:y.value},null,8,["modelValue","disabled"])]),a(Q,{modelValue:A.value,"onUpdate:modelValue":g[6]||(g[6]=D=>A.value=D),disabled:y.value||!S.value,density:"compact","hide-details":"",label:V.$t("dialogs.share_limit.inactive_seeding_time_limit")},null,8,["modelValue","disabled","label"])]),_:1})]),_:1})]),_:1},8,["modelValue","onKeydown"])]),_:1}),a(qe,null,{default:i(()=>[a(De),a(M,{color:"error",onClick:P},{default:i(()=>[x(p(V.$t("common.cancel")),1)]),_:1}),a(M,{color:"accent",disabled:!r.value,onClick:E},{default:i(()=>[x(p(V.$t("common.save")),1)]),_:1},8,["disabled"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"]))}}),Ze=w({__name:"SpeedLimitDialog",props:{guid:{},hashes:{},mode:{}},setup(h){const e=h,{isOpened:l}=He(e.guid),t=Be(),n=fe(),r=O(!1),o=O(0);function s(){l.value=!1}async function c(){const v=Math.max(0,o.value)*1e3;switch(e.mode){case"download":await t.setDownloadLimit(v,e.hashes);break;case"upload":await t.setUploadLimit(v,e.hashes);break}s()}return Se(async()=>{const v=n.getTorrentByHash(e.hashes[0]);if(!v)return s();switch(e.mode){case"download":o.value=Math.max(0,Math.round(v.dl_limit/1e3));break;case"upload":o.value=Math.max(0,Math.round(v.up_limit/1e3));break}}),(v,k)=>(d(),T(Ye,{modelValue:u(l),"onUpdate:modelValue":k[3]||(k[3]=S=>he(l)?l.value=S:null)},{default:i(()=>[a(Z,{title:v.$t(`dialogs.speed_limit.${v.mode}`)},{default:i(()=>[a(be,null,{default:i(()=>[a(ze,{modelValue:r.value,"onUpdate:modelValue":k[1]||(k[1]=S=>r.value=S),onSubmit:k[2]||(k[2]=J(()=>{},["prevent"])),onKeydown:$e(J(c,["prevent"]),["enter"])},{default:i(()=>[a(Q,{modelValue:o.value,"onUpdate:modelValue":k[0]||(k[0]=S=>o.value=S),type:"number",autofocus:"",clearable:"",label:v.$t("dialogs.speed_limit.label"),"prepend-inner-icon":"mdi-speedometer",suffix:"kB/s",onKeydown:$e(J(c,["prevent"]),["enter"])},null,8,["modelValue","label","onKeydown"])]),_:1},8,["modelValue","onKeydown"])]),_:1}),a(qe,null,{default:i(()=>[a(De),a(M,{color:"error",onClick:s},{default:i(()=>[x(p(v.$t("common.cancel")),1)]),_:1}),a(M,{color:"accent",disabled:!r.value,onClick:c},{default:i(()=>[x(p(v.$t("common.save")),1)]),_:1},8,["disabled"])]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"]))}}),Pe=h=>(lt("data-v-4e81b4b5"),h=h(),rt(),h),zt={class:"d-flex justify-space-around"},qt=Pe(()=>_("span",null,"Resume",-1)),Yt=Pe(()=>_("span",null,"Force Resume",-1)),jt=Pe(()=>_("span",null,"Pause",-1)),Xt=Pe(()=>_("span",null,"Delete",-1)),Wt=w({__name:"RightClickMenu",props:{modelValue:{type:Boolean}},emits:["update:modelValue"],setup(h,{emit:e}){const l=h,t=e,{t:n}=Ue(),r=nt(),o=ee(),s=st(),c=Be(),v=wt(),k=fe(),S=C({get:()=>l.modelValue,set:I=>t("update:modelValue",I)}),A=C(()=>o.selectedTorrents.length>1),y=C(()=>o.selectedTorrents),P=C(()=>y.value[0]),E=C(()=>k.getTorrentByHash(P.value)),V=C(()=>o.selectedTorrents.map(k.getTorrentByHash).filter(I=>!!I)),g=C(()=>[{name:""},...c.categories]);async function D(){await k.resumeTorrents(y)}async function Y(){await k.forceResumeTorrents(y)}async function Ee(){await k.pauseTorrents(y)}function xe(){s.createDialog(it,{hashes:[...o.selectedTorrents]})}function de(){s.createDialog(Qe,{hashes:[...o.selectedTorrents],mode:"dl"})}function j(){s.createDialog(Qe,{hashes:[...o.selectedTorrents],mode:"save"})}function te(){s.createDialog(Ht,{hash:o.selectedTorrents[0]})}async function Le(){await k.recheckTorrents(y)}async function ge(){await c.reannounceTorrents(y)}async function oe(){await c.toggleSeqDl(y)}async function Ae(){await c.toggleFLPiecePrio(y)}async function ue(){await c.toggleAutoTmm(y,!E.value?.auto_tmm)}function ye(I){return V.value.every(G=>G&&G.tags&&G.tags.includes(I))}async function Re(I){ye(I)?await k.removeTorrentTags(y.value,[I]):await k.addTorrentTags(y.value,[I])}async function W(I){await navigator.clipboard.writeText(I)}function ce(){s.createDialog(Ze,{hashes:y.value,mode:"download"})}function pe(){s.createDialog(Ze,{hashes:y.value,mode:"upload"})}function ae(){s.createDialog(Kt,{hashes:y.value})}async function ke(){y.value.forEach(I=>{k.exportTorrent(I).then(G=>{const m=window.URL.createObjectURL(G),b=document.createElement("a");b.href=m,b.style.opacity="0",b.setAttribute("download",`${I}.torrent`),document.body.appendChild(b),b.click(),document.body.removeChild(b)})})}const me=C(()=>[{text:n("dashboard.right_click.advanced.title"),icon:"mdi-head-cog",children:[{text:n("dashboard.right_click.advanced.download_path"),icon:"mdi-tray-arrow-down",action:de},{text:n("dashboard.right_click.advanced.save_path"),icon:"mdi-content-save",action:j},{text:n("dashboard.right_click.advanced.rename"),icon:"mdi-rename-box",hidden:A.value,action:te},{text:n("dashboard.right_click.advanced.recheck"),icon:"mdi-playlist-check",action:Le},{text:n("dashboard.right_click.advanced.reannounce"),icon:"mdi-bullhorn",action:ge},{text:n("dashboard.right_click.advanced.seq_dl"),icon:E.value?.seq_dl?"mdi-checkbox-marked":"mdi-checkbox-blank-outline",action:oe},{text:n("dashboard.right_click.advanced.f_l_prio"),icon:E.value?.f_l_piece_prio?"mdi-checkbox-marked":"mdi-checkbox-blank-outline",action:Ae},{text:n("dashboard.right_click.advanced.auto_tmm"),icon:E.value?.auto_tmm?"mdi-checkbox-marked":"mdi-checkbox-blank-outline",action:ue}]},{text:n("dashboard.right_click.priority.title"),icon:"mdi-priority-high",hidden:!v.preferences.queueing_enabled,children:[{text:n("dashboard.right_click.priority.top"),icon:"mdi-priority-high",action:async()=>await k.setTorrentPriority(y.value,"topPrio")},{text:n("dashboard.right_click.priority.increase"),icon:"mdi-arrow-up",action:async()=>await k.setTorrentPriority(y.value,"increasePrio")},{text:n("dashboard.right_click.priority.decrease"),icon:"mdi-arrow-down",action:async()=>await k.setTorrentPriority(y.value,"decreasePrio")},{text:n("dashboard.right_click.priority.bottom"),icon:"mdi-priority-low",action:async()=>await k.setTorrentPriority(y.value,"bottomPrio")}]},{text:n("dashboard.right_click.tags.title"),icon:"mdi-tag",disabled:c.tags.length===0,disabledText:n("dashboard.right_click.tags.disabled_title"),disabledIcon:"mdi-tag-off",children:c.tags.map(I=>({text:I,icon:ye(I)?"mdi-checkbox-marked":"mdi-checkbox-blank-outline",action:async()=>await Re(I)}))},{text:n("dashboard.right_click.category.title"),icon:"mdi-label",disabled:c.categories.length===0,disabledText:n("dashboard.right_click.category.disabled_title"),disabledIcon:"mdi-label-off",children:g.value.map(I=>({text:I.name===""?n("dashboard.right_click.category.clear"):I.name,action:async()=>await k.setTorrentCategory(y.value,I.name)}))},{text:n("dashboard.right_click.speed_limit.title"),icon:"mdi-speedometer-slow",children:[{text:n("dashboard.right_click.speed_limit.download"),icon:"mdi-download",action:ce},{text:n("dashboard.right_click.speed_limit.upload"),icon:"mdi-upload",action:pe},{text:n("dashboard.right_click.speed_limit.share"),icon:"mdi-account-group",action:ae}]},{text:n("dashboard.right_click.copy.title"),icon:"mdi-content-copy",hidden:A.value,children:[{text:n("dashboard.right_click.copy.name"),icon:"mdi-alphabetical-variant",action:async()=>E.value&&await W(E.value.name)},{text:n("dashboard.right_click.copy.hash"),icon:"mdi-pound",action:async()=>await W(P.value)},{text:n("dashboard.right_click.copy.magnet"),icon:"mdi-magnet",action:async()=>E.value&&await W(E.value.magnet)}]},{text:n("dashboard.right_click.export",o.selectedTorrents.length),icon:A.value?"mdi-download-multiple":"mdi-download",action:ke},{text:n("dashboard.right_click.info"),icon:"mdi-information",hidden:A.value,action:()=>r.push({name:"torrentDetail",params:{hash:P.value}})}]);return(I,G)=>S.value?(d(),T(Ge,{key:0,modelValue:S.value,"onUpdate:modelValue":G[0]||(G[0]=m=>S.value=m),activator:"parent","close-on-content-click":!0,transition:"slide-y-transition","scroll-strategy":"none"},{default:i(()=>[a(Ie,null,{default:i(()=>[a(re,null,{default:i(()=>[_("div",zt,[a(q,{location:"top"},{activator:i(({props:m})=>[a(M,N({density:"compact",variant:"plain",icon:"mdi-play"},m,{onClick:D}),null,16)]),default:i(()=>[qt]),_:1}),a(q,{location:"top"},{activator:i(({props:m})=>[a(M,N({density:"compact",variant:"plain",icon:"mdi-fast-forward"},m,{onClick:Y}),null,16)]),default:i(()=>[Yt]),_:1}),a(q,{location:"top"},{activator:i(({props:m})=>[a(M,N({density:"compact",variant:"plain",icon:"mdi-pause"},m,{onClick:Ee}),null,16)]),default:i(()=>[jt]),_:1}),a(q,{location:"top"},{activator:i(({props:m})=>[a(M,N({color:"red",density:"compact",variant:"plain",icon:"mdi-delete-forever"},m,{onClick:xe}),null,16)]),default:i(()=>[Xt]),_:1})])]),_:1}),(d(!0),f(F,null,H(me.value,m=>(d(),T(Gt,et(tt(m)),null,16))),256))]),_:1})]),_:1},8,["modelValue"])):R("",!0)}});const Jt=X(Wt,[["__scopeId","data-v-4e81b4b5"]]),Qt={class:"d-flex flex-column"},Zt={class:"text-caption text-grey"},eo={class:"text-caption text-grey"},pt=w({__name:"ItemAmount",props:{torrent:{},title:{},value:{},total:{}},setup(h){return(e,l)=>(d(),f("div",Qt,[_("div",Zt,p(e.$t(`torrent.properties.${e.title}`)),1),_("div",null,[x(p(e.torrent[e.value])+" ",1),_("span",eo," / "+p(e.torrent[e.total]),1)])]))}}),to={key:0,class:"d-flex flex-column"},oo={class:"text-caption text-grey"},ao={class:"d-flex flex-row gap"},no=w({__name:"ItemChip",props:{torrent:{},title:{},value:{},color:{}},setup(h){const e=h,l=U(),t=C(()=>{const r=e.torrent[e.value],o=typeof r;if(o==="string")return r.length>0?[r]:[];if(o==="object")return r}),n=C(()=>t.value.length<1);return(r,o)=>u(l).hideChipIfUnset&&n.value?R("",!0):(d(),f("div",to,[_("div",oo,p(r.$t(`torrent.properties.${r.title}`)),1),_("div",ao,[!t.value||n.value?(d(),T(we,{key:0,color:r.color.replace("$1",r.torrent[r.value]),variant:"flat"},{default:i(()=>[x(p(r.$t(`torrent.properties.empty_${r.value}`)),1)]),_:1},8,["color"])):(d(!0),f(F,{key:1},H(t.value,s=>(d(),T(we,{color:r.color.replace("$1",r.torrent.state),variant:"flat"},{default:i(()=>[x(p(s),1)]),_:2},1032,["color"]))),256))])]))}});const mt=X(no,[["__scopeId","data-v-08ef66f1"]]),lo={class:"d-flex flex-column"},ro={class:"text-caption text-grey"},so={class:"text-caption text-grey"},vt=w({__name:"ItemData",props:{torrent:{},title:{},value:{}},setup(h){const e=U();return(l,t)=>(d(),f("div",lo,[_("div",ro,p(l.$t(`torrent.properties.${l.title}`)),1),_("div",null,[x(p(u(St)(l.torrent[l.value],u(e).useBinarySize))+" ",1),_("span",so,p(u(Dt)(l.torrent[l.value],u(e).useBinarySize)),1)])]))}}),io={class:"d-flex flex-column"},uo={class:"text-caption text-grey"},co={key:0},po={key:1},ht=w({__name:"ItemDateTime",props:{torrent:{},title:{},value:{}},setup(h){const e=U();return(l,t)=>(d(),f("div",io,[_("div",uo,p(l.$t(`torrent.properties.${l.title}`)),1),_("div",null,[l.torrent[l.value]>0?(d(),f("span",co,p(u(ie)(l.torrent[l.value]*1e3).format(u(e).dateFormat??"DD/MM/YYYY, HH:mm:ss")),1)):(d(),f("span",po,p(l.$t("dashboard.not_complete")),1))])]))}}),mo={class:"d-flex flex-column"},vo={class:"text-caption text-grey"},ho={key:0},_o={key:1},_t=w({__name:"ItemDuration",props:{torrent:{},title:{},value:{}},setup(h){const e=h,l=C(()=>{const t=ie.duration(e.torrent[e.value],"seconds"),n=[t.years(),t.months(),t.days(),t.hours(),t.minutes(),t.seconds()],r=["Y","M","d","h","m","s"];let o=!1;return n.map((s,c)=>{if(o||s)return o=!0,`${s}${r[c]}`}).filter(s=>s).join(" ")});return(t,n)=>(d(),f("div",mo,[_("div",vo,p(t.$t(`torrent.properties.${t.title}`)),1),_("div",null,[t.torrent[t.value]>0?(d(),f("span",ho,p(l.value),1)):(d(),f("span",_o,p(t.$t("dashboard.not_complete")),1))])]))}}),fo={class:"d-flex flex-column"},bo={class:"text-caption text-grey"},ft=w({__name:"ItemPercent",props:{torrent:{},title:{},value:{}},setup(h){const e=h,l=C(()=>[L.UPLOADING,L.CHECKING_UP,L.FORCED_UP,L.ALLOCATING,L.DOWNLOADING,L.META_DL,L.CHECKING_DL,L.FORCED_DL,L.CHECKING_RESUME_DATA,L.MOVING].includes(e.torrent.state));return(t,n)=>(d(),f("div",fo,[_("div",bo,p(t.$t(`torrent.properties.${t.title}`)),1),a(ut,{"model-value":t.torrent[t.value],max:1,striped:l.value,height:20,color:`torrent-${t.torrent.state}`,rounded:"sm",style:{width:"10em"}},{default:i(()=>[x(p(u(dt)(t.torrent[t.value])),1)]),_:1},8,["model-value","striped","color"])]))}}),go={class:"d-flex flex-column"},yo={class:"text-caption text-grey"},bt=w({__name:"ItemRelativeTime",props:{torrent:{},title:{},value:{}},setup(h){return(e,l)=>(d(),f("div",go,[_("div",yo,p(e.$t(`torrent.properties.${e.title}`)),1),_("div",null,[_("span",null,p(u(ie)(e.torrent[e.value]*1e3).fromNow()),1)])]))}}),ko={class:"d-flex flex-column"},To={class:"text-caption text-grey"},$o={class:"text-caption text-grey"},gt=w({__name:"ItemSpeed",props:{torrent:{},title:{},value:{}},setup(h){const e=U();return(l,t)=>(d(),f("div",ko,[_("div",To,p(l.$t(`torrent.properties.${l.title}`)),1),_("div",null,[x(p(u(It)(l.torrent[l.value],u(e).useBitSpeed))+" ",1),_("span",$o,p(u(Bt)(l.torrent[l.value],u(e).useBitSpeed)),1)])]))}}),Co={class:"d-flex flex-column"},Vo={class:"text-caption text-grey"},yt=w({__name:"ItemText",props:{torrent:{},title:{},value:{}},setup(h){return(e,l)=>(d(),f("div",Co,[_("div",Vo,p(e.$t(`torrent.properties.${e.title}`)),1),_("div",null,p(e.torrent[e.value]),1)]))}}),wo={class:"d-flex gap flex-wrap"},So=w({__name:"GridTorrent",props:{torrent:{}},emits:["onTorrentClick"],setup(h){const e=h,l=ee(),t=U(),n=C(()=>(e.torrent.progress===1?t.doneGridProperties:t.busyGridProperties).filter(c=>c.active).sort((c,v)=>c.order-v.order)),r=s=>{switch(s){case B.AMOUNT:return pt;case B.CHIP:return mt;case B.DATA:return vt;case B.DATETIME:return ht;case B.DURATION:return _t;case B.PERCENT:return ft;case B.RELATIVE:return bt;case B.SPEED:return gt;case B.TEXT:default:return yt}},o=C(()=>l.isTorrentInSelection(e.torrent.hash));return(s,c)=>(d(),T(Z,{class:se(`sideborder ${s.torrent.state} pointer`),height:"100%",color:o.value?`torrent-${s.torrent.state}-darken-3`:void 0,onClick:c[0]||(c[0]=v=>s.$emit("onTorrentClick",v,s.torrent))},{default:i(()=>[a(Ke,{class:"text-wrap text-subtitle-1 pt-1 pb-0"},{default:i(()=>[x(p(s.torrent.name),1)]),_:1}),a(be,null,{default:i(()=>[_("div",wo,[(d(!0),f(F,null,H(n.value,v=>(d(),T(Fe(r(v.type)),N({torrent:s.torrent},v.props),null,16,["torrent"]))),256))])]),_:1})]),_:1},8,["class","color"]))}});const Do=X(So,[["__scopeId","data-v-60c9ae77"]]),Io={class:"d-flex align-center",style:{height:"100%",width:"100%"}},Bo=w({__name:"GridView",props:{paginatedTorrents:{}},emits:["onCheckboxClick","onTorrentClick","onTorrentDblClick","onTorrentRightClick","startPress","endPress"],setup(h){const e=ct(),l=ee();return(t,n)=>(d(),T(Ve,{id:"torrentList"},{default:i(()=>[(d(!0),f(F,null,H(t.paginatedTorrents,r=>(d(),T(ve,{cols:"12",lg:"3",md:"4",sm:"6",xl:"2",class:se([u(e).mobile?"pb-2":"pb-4","pt-0"]),onContextmenu:o=>t.$emit("onTorrentRightClick",o,r),onTouchcancel:n[1]||(n[1]=o=>t.$emit("endPress")),onTouchend:n[2]||(n[2]=o=>t.$emit("endPress")),onTouchmove:n[3]||(n[3]=o=>t.$emit("endPress")),onTouchstart:o=>t.$emit("startPress",o.touches.item(0),r),onDblclick:o=>t.$emit("onTorrentDblClick",r)},{default:i(()=>[_("div",Io,[a(je,null,{default:i(()=>[_e(a(M,{color:`torrent-${r.state}`,icon:u(l).isTorrentInSelection(r.hash)?"mdi-checkbox-marked":"mdi-checkbox-blank-outline",class:"mr-2",variant:"text",onClick:o=>t.$emit("onCheckboxClick",r)},null,8,["color","icon","onClick"]),[[Ce,u(l).isSelectionMultiple]])]),_:2},1024),a(Do,{torrent:r,onOnTorrentClick:n[0]||(n[0]=(o,s)=>t.$emit("onTorrentClick",o,s))},null,8,["torrent"])])]),_:2},1032,["class","onContextmenu","onTouchstart","onDblclick"]))),256))]),_:1}))}});const Po=X(Bo,[["__scopeId","data-v-31f288a6"]]),Eo={class:"d-flex gap flex-wrap"},xo=w({__name:"ListTorrent",props:{torrent:{}},emits:["onTorrentClick"],setup(h){const e=h,l=ee(),t=U(),n=C(()=>(e.torrent.progress===1?t.doneTorrentProperties:t.busyTorrentProperties).filter(c=>c.active).sort((c,v)=>c.order-v.order)),r=s=>{switch(s){case B.AMOUNT:return pt;case B.CHIP:return mt;case B.DATA:return vt;case B.DATETIME:return ht;case B.DURATION:return _t;case B.PERCENT:return ft;case B.RELATIVE:return bt;case B.SPEED:return gt;case B.TEXT:default:return yt}},o=C(()=>l.isTorrentInSelection(e.torrent.hash));return(s,c)=>(d(),T(Z,{class:se(`sideborder ${s.torrent.state} pointer`),width:"100%",color:o.value?`torrent-${s.torrent.state}-darken-3`:void 0,onClick:c[0]||(c[0]=v=>s.$emit("onTorrentClick",v,s.torrent))},{default:i(()=>[a(Ke,{class:"text-wrap text-subtitle-1 pt-1 pb-0"},{default:i(()=>[x(p(s.torrent.name),1)]),_:1}),a(be,{class:"pa-2 pt-0"},{default:i(()=>[_("div",Eo,[(d(!0),f(F,null,H(n.value,v=>(d(),T(Fe(r(v.type)),N({torrent:s.torrent},v.props),null,16,["torrent"]))),256))])]),_:1})]),_:1},8,["class","color"]))}});const Lo=X(xo,[["__scopeId","data-v-e5ea358f"]]),Ao={class:"d-flex align-center"},Ro=w({__name:"ListView",props:{paginatedTorrents:{}},emits:["onCheckboxClick","onTorrentClick","onTorrentDblClick","onTorrentRightClick","startPress","endPress"],setup(h){const e=ct(),l=ee();return(t,n)=>(d(),T(Ie,{id:"torrentList",class:"pa-0"},{default:i(()=>[(d(!0),f(F,null,H(t.paginatedTorrents,r=>(d(),T(re,{id:`torrent-${r.hash}`,class:se([u(e).mobile?"mb-2":"mb-4","pa-0"]),onContextmenu:o=>t.$emit("onTorrentRightClick",o,r),onTouchcancel:n[1]||(n[1]=o=>t.$emit("endPress")),onTouchend:n[2]||(n[2]=o=>t.$emit("endPress")),onTouchmove:n[3]||(n[3]=o=>t.$emit("endPress")),onTouchstart:o=>t.$emit("startPress",o.touches.item(0),r),onDblclick:o=>t.$emit("onTorrentDblClick",r)},{default:i(()=>[_("div",Ao,[a(je,null,{default:i(()=>[_e(a(M,{color:`torrent-${r.state}`,icon:u(l).isTorrentInSelection(r.hash)?"mdi-checkbox-marked":"mdi-checkbox-blank-outline",class:"mr-2",variant:"text",onClick:o=>t.$emit("onCheckboxClick",r)},null,8,["color","icon","onClick"]),[[Ce,u(l).isSelectionMultiple]])]),_:2},1024),a(Lo,{torrent:r,onOnTorrentClick:n[0]||(n[0]=(o,s)=>t.$emit("onTorrentClick",o,s))},null,8,["torrent"])])]),_:2},1032,["id","class","onContextmenu","onTouchstart","onDblclick"]))),256))]),_:1}))}});const Mo=X(Ro,[["__scopeId","data-v-e8f6336b"]]),Oo=w({__name:"ItemAmount",props:{torrent:{},title:{},value:{},total:{}},setup(h){return(e,l)=>(d(),f("td",null,p(e.torrent[e.value])+" / "+p(e.torrent[e.total]),1))}}),No={key:0,class:"d-flex flex-row gap"},Uo=w({__name:"ItemChip",props:{torrent:{},title:{},value:{},color:{}},setup(h){const e=h,l=U(),t=C(()=>{const r=e.torrent[e.value],o=typeof r;if(o==="string")return r.length>0?[r]:[];if(o==="object")return r}),n=C(()=>t.value.length<1);return(r,o)=>(d(),f("td",null,[u(l).hideChipIfUnset&&n.value?R("",!0):(d(),f("div",No,[!t.value||n.value?(d(),T(we,{key:0,color:r.color.replace("$1",r.torrent[r.value]),variant:"flat"},{default:i(()=>[x(p(r.$t(`torrent.properties.empty_${r.value}`)),1)]),_:1},8,["color"])):(d(!0),f(F,{key:1},H(t.value,s=>(d(),T(we,{color:r.color.replace("$1",r.torrent.state),variant:"flat"},{default:i(()=>[x(p(s),1)]),_:2},1032,["color"]))),256))]))]))}});const Fo=X(Uo,[["__scopeId","data-v-23c01601"]]),Go=w({__name:"ItemData",props:{torrent:{},title:{},value:{}},setup(h){const e=U();return(l,t)=>(d(),f("td",null,p(u(Pt)(l.torrent[l.value],u(e).useBinarySize)),1))}}),Ho={key:0},Ko={key:1},zo=w({__name:"ItemDateTime",props:{torrent:{},title:{},value:{}},setup(h){const e=U();return(l,t)=>l.torrent[l.value]>0?(d(),f("td",Ho,p(u(ie)(l.torrent[l.value]*1e3).format(u(e).dateFormat??"DD/MM/YYYY, HH:mm:ss")),1)):(d(),f("td",Ko,p(l.$t("dashboard.not_complete")),1))}}),qo={key:0},Yo={key:1},jo=w({__name:"ItemDuration",props:{torrent:{},title:{},value:{}},setup(h){const e=h,l=C(()=>{const t=ie.duration(e.torrent[e.value],"seconds"),n=[t.years(),t.months(),t.days(),t.hours(),t.minutes(),t.seconds()],r=["Y","M","d","h","m","s"];let o=!1;return n.map((s,c)=>{if(o||s)return o=!0,`${s}${r[c]}`}).filter(s=>s).join(" ")});return(t,n)=>t.torrent[t.value]>0?(d(),f("td",qo,p(l.value),1)):(d(),f("td",Yo,p(t.$t("dashboard.not_complete")),1))}}),Xo=w({__name:"ItemPercent",props:{torrent:{},title:{},value:{}},setup(h){const e=h,l=C(()=>[L.UPLOADING,L.CHECKING_UP,L.FORCED_UP,L.ALLOCATING,L.DOWNLOADING,L.META_DL,L.CHECKING_DL,L.FORCED_DL,L.CHECKING_RESUME_DATA,L.MOVING].includes(e.torrent.state));return(t,n)=>(d(),f("td",null,[a(ut,{"model-value":t.torrent[t.value],max:1,striped:l.value,height:20,color:`torrent-${t.torrent.state}`,rounded:"sm",style:{width:"10em"}},{default:i(()=>[x(p(u(dt)(t.torrent[t.value])),1)]),_:1},8,["model-value","striped","color"])]))}}),Wo=w({__name:"ItemRelativeTime",props:{torrent:{},title:{},value:{}},setup(h){return(e,l)=>(d(),f("td",null,p(u(ie)(e.torrent[e.value]*1e3).fromNow()),1))}}),Jo=w({__name:"ItemSpeed",props:{torrent:{},title:{},value:{}},setup(h){const e=U();return(l,t)=>(d(),f("td",null,p(u(Et)(l.torrent[l.value],u(e).useBitSpeed)),1))}}),Qo=w({__name:"ItemText",props:{torrent:{},title:{},value:{}},setup(h){return(e,l)=>(d(),f("td",null,p(e.torrent[e.value]),1))}}),Zo=w({__name:"TableTorrent",props:{torrent:{}},setup(h){const e=U(),l=C(()=>e.tableProperties.filter(n=>n.active).sort((n,r)=>n.order-r.order)),t=n=>{switch(n){case B.AMOUNT:return Oo;case B.CHIP:return Fo;case B.DATA:return Go;case B.DATETIME:return zo;case B.DURATION:return jo;case B.PERCENT:return Xo;case B.RELATIVE:return Wo;case B.SPEED:return Jo;case B.TEXT:default:return Qo}};return(n,r)=>(d(!0),f(F,null,H(l.value,o=>(d(),T(Fe(t(o.type)),N({torrent:n.torrent},o.props),null,16,["torrent"]))),256))}}),ea=h=>(lt("data-v-8832d38a"),h=h(),rt(),h),ta=ea(()=>_("th",{class:"px-1"},null,-1)),oa={key:0},aa={class:"text-left"},na={class:"text-left"},la=["onContextmenu","onTouchstart","onClick","onDblclick"],ra={key:0},sa=w({__name:"TableView",props:{paginatedTorrents:{}},emits:["onCheckboxClick","onTorrentClick","onTorrentDblClick","onTorrentRightClick","startPress","endPress"],setup(h){const e=ee(),l=U(),t=C(()=>l.tableProperties.filter(o=>o.active).sort((o,s)=>o.order-s.order));function n(o){return e.isTorrentInSelection(o.hash)}const r=o=>["pointer",n(o)?`bg-torrent-${o.state}-darken-3 selected`:""];return(o,s)=>(d(),T(xt,{id:"torrentList",class:"pa-0",density:"compact"},{default:i(()=>[_("thead",null,[_("tr",null,[ta,u(e).isSelectionMultiple?(d(),f("th",oa)):R("",!0),_("th",aa,p(o.$t("torrent.properties.name")),1),(d(!0),f(F,null,H(t.value,c=>(d(),f("th",na,p(o.$t(`torrent.properties.${c.props.title}`)),1))),256))])]),_("tbody",null,[(d(!0),f(F,null,H(o.paginatedTorrents,c=>_e((d(),f("tr",{class:se(r(c)),onContextmenu:v=>o.$emit("onTorrentRightClick",v,c),onTouchcancel:s[0]||(s[0]=v=>o.$emit("endPress")),onTouchend:s[1]||(s[1]=v=>o.$emit("endPress")),onTouchmove:s[2]||(s[2]=v=>o.$emit("endPress")),onTouchstart:v=>o.$emit("startPress",v.touches.item(0),c),onClick:v=>o.$emit("onTorrentClick",v,c),onDblclick:v=>o.$emit("onTorrentDblClick",c)},[_("td",{class:se(`pa-0 bg-torrent-${c.state}`)},null,2),u(e).isSelectionMultiple?(d(),f("td",ra,[a(Te,{"model-value":n(c),color:`torrent-${c.state}`,variant:"text",onClick:J(v=>o.$emit("onCheckboxClick",c),["stop"])},null,8,["model-value","color","onClick"])])):R("",!0),_("td",null,p(c.name),1),a(Zo,{torrent:c},null,8,["torrent"])],42,la)),[[Lt]])),256))])]),_:1}))}});const ia=X(sa,[["__scopeId","data-v-8832d38a"]]),da={class:"pt-4 px-1 px-sm-5"},ua={class:"pa-0",style:{width:"10em"}},ca={class:"text-uppercase",style:{float:"right","font-size":"0.8em"}},pa={class:"text-grey"},ma={key:0,class:"mt-5 text-xs-center"},va={class:"text-grey"},ha={key:1},_a={key:5},Va=w({__name:"Dashboard",setup(h){const{t:e}=Ue(),l=nt(),t=ee(),{currentPage:n,isSelectionMultiple:r,selectedTorrents:o,displayMode:s,torrentCountString:c}=Xe(t),v=st(),k=Be(),S=fe(),{filteredTorrents:A,sortOptions:y}=Xe(S),P=U(),E=[{value:"added_on",title:e("dashboard.sortBy.added_on")},{value:"amount_left",title:e("dashboard.sortBy.amount_left")},{value:"auto_tmm",title:e("dashboard.sortBy.auto_tmm")},{value:"availability",title:e("dashboard.sortBy.availability")},{value:"avg_download_speed",title:e("dashboard.sortBy.avg_download_speed")},{value:"avg_upload_speed",title:e("dashboard.sortBy.avg_upload_speed")},{value:"category",title:e("dashboard.sortBy.category")},{value:"completed",title:e("dashboard.sortBy.completed")},{value:"completion_on",title:e("dashboard.sortBy.completion_on")},{value:"content_path",title:e("dashboard.sortBy.content_path")},{value:"dl_limit",title:e("dashboard.sortBy.dl_limit")},{value:"dlspeed",title:e("dashboard.sortBy.dlspeed")},{value:"download_path",title:e("dashboard.sortBy.download_path")},{value:"downloaded",title:e("dashboard.sortBy.downloaded")},{value:"downloaded_session",title:e("dashboard.sortBy.downloaded_session")},{value:"eta",title:e("dashboard.sortBy.eta")},{value:"f_l_piece_prio",title:e("dashboard.sortBy.f_l_piece_prio")},{value:"force_start",title:e("dashboard.sortBy.force_start")},{value:"globalSpeed",title:e("dashboard.sortBy.globalSpeed")},{value:"globalVolume",title:e("dashboard.sortBy.globalVolume")},{value:"hash",title:e("dashboard.sortBy.hash")},{value:"infohash_v1",title:e("dashboard.sortBy.infohash_v1")},{value:"infohash_v2",title:e("dashboard.sortBy.infohash_v2")},{value:"last_activity",title:e("dashboard.sortBy.last_activity")},{value:"magnet_uri",title:e("dashboard.sortBy.magnet_uri")},{value:"max_ratio",title:e("dashboard.sortBy.max_ratio")},{value:"max_seeding_time",title:e("dashboard.sortBy.max_seeding_time")},{value:"name",title:e("dashboard.sortBy.name")},{value:"num_complete",title:e("dashboard.sortBy.num_complete")},{value:"num_incomplete",title:e("dashboard.sortBy.num_incomplete")},{value:"num_leechs",title:e("dashboard.sortBy.num_leechs")},{value:"num_seeds",title:e("dashboard.sortBy.num_seeds")},{value:"priority",title:e("dashboard.sortBy.priority")},{value:"progress",title:e("dashboard.sortBy.progress")},{value:"ratio",title:e("dashboard.sortBy.ratio")},{value:"ratio_limit",title:e("dashboard.sortBy.ratio_limit")},{value:"save_path",title:e("dashboard.sortBy.save_path")},{value:"seeding_time",title:e("dashboard.sortBy.seeding_time")},{value:"seeding_time_limit",title:e("dashboard.sortBy.seeding_time_limit")},{value:"seen_complete",title:e("dashboard.sortBy.seen_complete")},{value:"seq_dl",title:e("dashboard.sortBy.seq_dl")},{value:"size",title:e("dashboard.sortBy.size")},{value:"state",title:e("dashboard.sortBy.state")},{value:"super_seeding",title:e("dashboard.sortBy.super_seeding")},{value:"tags",title:e("dashboard.sortBy.tags")},{value:"time_active",title:e("dashboard.sortBy.time_active")},{value:"total_size",title:e("dashboard.sortBy.total_size")},{value:"tracker",title:e("dashboard.sortBy.tracker")},{value:"trackers_count",title:e("dashboard.sortBy.trackers_count")},{value:"up_limit",title:e("dashboard.sortBy.up_limit")},{value:"uploaded",title:e("dashboard.sortBy.uploaded")},{value:"uploaded_session",title:e("dashboard.sortBy.uploaded_session")},{value:"upspeed",title:e("dashboard.sortBy.upspeed")}].sort((m,b)=>m.title.localeCompare(b.title));E.splice(0,0,{value:"",title:e("dashboard.sortBy.default")});const V=O(!1),g=ot({isVisible:!1,offset:[0,0]}),D=C({get:()=>S.textFilter,set:Ot(m=>{S.textFilter=m??""},300)}),Y=C(()=>s.value===K.LIST),Ee=C(()=>s.value===K.GRID),xe=C(()=>s.value===K.TABLE),{paginatedResults:de,currentPage:j,pageCount:te}=Mt(A,P.paginationSize,n),Le=C(()=>!!S.textFilter&&S.textFilter.length>0),ge=C(()=>A.value.length<=o.value.length);function oe(m){V.value=m??!V.value,V.value&&We(()=>{document.getElementById("searchInput")?.focus()})}function Ae(){S.textFilter=""}function ue(){window.scrollTo({top:0,behavior:"smooth"})}function ye(){r.value&&t.unselectAllTorrents(),r.value=!r.value}function Re(){ge.value?t.unselectAllTorrents():t.selectTorrents(...A.value.map(m=>m.hash))}function W(m){r.value||l.push({name:"torrentDetail",params:{hash:m.hash}})}function ce(m){t.toggleSelect(m.hash)}function pe(m,b){m.shiftKey?t.spanTorrentSelection(b.hash):(Ne(m)||t.isSelectionMultiple)&&(t.isSelectionMultiple=!0,t.toggleSelect(b.hash))}async function ae(m,b){g.isVisible&&(g.isVisible=!1,await We()),g.isVisible=!0,g.offset=[m.pageX,m.pageY],r.value?o.value.length===0&&t.selectTorrent(b.hash):(t.unselectAllTorrents(),t.selectTorrent(b.hash))}const ke=O();function me(m,b){ke.value=setTimeout(()=>{ae(m,b)},500)}function I(){clearTimeout(ke.value)}function G(m){if(v.hasActiveDialog)return!1;const b=m.target;if(Ne(m)&&m.key==="a"&&b.tagName!=="INPUT")return t.unselectAllTorrents(),t.selectTorrents(...A.value.map($=>$.hash)),m.preventDefault(),!0;if(Ne(m)&&m.key==="f"){const $=document.getElementById("searchInput");if(document.activeElement!==$)return oe(!0),m.preventDefault(),!0}if(m.key==="Escape"){const $=document.getElementById("searchInput");return document.activeElement===$||V.value?oe(!1):(r.value=!1,t.unselectAllTorrents()),m.preventDefault(),!0}if(m.key==="Delete")return o.value.length===0?void 0:(v.createDialog(it,{hashes:o.value}),m.preventDefault(),!0);if(m.key==="/"){const $=document.getElementById("searchInput");return document.activeElement!==$&&!V.value&&(l.push({name:"searchEngine"}),m.preventDefault()),!0}}return Tt(()=>g.isVisible,m=>{!m&&!r.value&&t.unselectAllTorrents()}),Se(async()=>{await k.fetchCategories(),await k.fetchTags(),oe(Le.value)}),at(()=>{document.addEventListener("keydown",G),r.value=!1,ue()}),$t(()=>{document.removeEventListener("keydown",G)}),(m,b)=>(d(),f(F,null,[_("div",da,[a(Ve,{class:"ma-0 pa-0 mb-2"},{default:i(()=>[a(je,null,{default:i(()=>[_e(a(Z,{color:"transparent"},{default:i(()=>[a(Q,{id:"searchInput",modelValue:D.value,"onUpdate:modelValue":b[0]||(b[0]=$=>D.value=$),label:u(e)("dashboard.searchInputLabel"),clearable:"",density:"compact","hide-details":"","prepend-inner-icon":"mdi-magnify",rounded:"pill","single-line":"",style:{width:"200px"},variant:"solo","onClick:clear":b[1]||(b[1]=$=>Ae())},null,8,["modelValue","label"])]),_:1},512),[[Ce,V.value]])]),_:1}),a(q,{text:u(e)("dashboard.toggleSearchFilter"),location:"top"},{activator:i(({props:$})=>[a(M,N({icon:V.value?"mdi-chevron-left-circle":"mdi-text-box-search"},$,{variant:"plain",onClick:b[2]||(b[2]=Me=>oe())}),null,16,["icon"])]),_:1},8,["text"]),a(q,{text:u(e)("dashboard.toggleSelectMode"),location:"top"},{activator:i(({props:$})=>[a(M,N({icon:u(r)?"mdi-checkbox-marked":"mdi-checkbox-blank-outline"},$,{variant:"plain",onClick:ye}),null,16,["icon"])]),_:1},8,["text"]),a(Ge,null,{activator:i(({props:$})=>[a(q,{text:m.$t("dashboard.displayMode.title"),location:"top"},{activator:i(({props:Me})=>[a(M,N({icon:""},N($,Me),{variant:"plain"}),{default:i(()=>[u(s)===u(K).LIST?(d(),T(le,{key:0,icon:"mdi-view-list"})):R("",!0),u(s)===u(K).GRID?(d(),T(le,{key:1,icon:"mdi-view-grid"})):R("",!0),u(s)===u(K).TABLE?(d(),T(le,{key:2,icon:"mdi-table"})):R("",!0)]),_:2},1040)]),_:2},1032,["text"])]),default:i(()=>[a(Ie,null,{default:i(()=>[a(re,{title:m.$t("dashboard.displayMode.list"),"prepend-icon":"mdi-view-list",onClick:b[3]||(b[3]=$=>s.value=u(K).LIST)},null,8,["title"]),a(re,{title:m.$t("dashboard.displayMode.grid"),"prepend-icon":"mdi-view-grid",onClick:b[4]||(b[4]=$=>s.value=u(K).GRID)},null,8,["title"]),a(re,{title:m.$t("dashboard.displayMode.table"),"prepend-icon":"mdi-table",onClick:b[5]||(b[5]=$=>s.value=u(K).TABLE)},null,8,["title"])]),_:1})]),_:1}),a(q,{text:u(e)("dashboard.toggleSortOrder"),location:"top"},{activator:i(({props:$})=>[a(M,N({icon:u(y).reverseOrder?"mdi-arrow-up-thin":"mdi-arrow-down-thin"},$,{variant:"plain",onClick:b[6]||(b[6]=Me=>u(y).reverseOrder=!u(y).reverseOrder)}),null,16,["icon"])]),_:1},8,["text"]),_("div",ua,[a(At,{modelValue:u(y).sortBy,"onUpdate:modelValue":b[7]||(b[7]=$=>u(y).sortBy=$),items:u(E),label:u(e)("dashboard.sortLabel"),"auto-select-first":"",density:"compact","hide-details":"",variant:"solo-filled"},null,8,["modelValue","items","label"])]),a(ve,{class:"align-center justify-center"},{default:i(()=>[_("span",ca,p(u(c)),1)]),_:1})]),_:1}),a(Ve,{class:"ma-0 pa-0"},{default:i(()=>[a(Rt,null,{default:i(()=>[_e(a(Z,{color:"transparent"},{default:i(()=>[a(q,{text:u(e)("common.selectAll"),location:"bottom"},{activator:i(({props:$})=>[a(M,N({icon:ge.value?"mdi-checkbox-marked":"mdi-checkbox-blank-outline",class:"text-grey",color:"transparent",style:{left:"-8px"}},$,{onClick:Re}),null,16,["icon"])]),_:1},8,["text"]),_("span",pa,p(u(e)("dashboard.selectAll")),1)]),_:1},512),[[Ce,u(r)]])]),_:1})]),_:1}),u(A).length===0?(d(),f("div",ma,[_("p",va,p(u(e)("common.emptyList")),1)])):R("",!0),u(P).isPaginationOnTop&&!u(P).isInfiniteScrollActive&&u(te)>1?(d(),f("div",ha,[a(Je,{modelValue:u(j),"onUpdate:modelValue":b[8]||(b[8]=$=>he(j)?j.value=$:null),length:u(te),"next-icon":"mdi-menu-right","prev-icon":"mdi-menu-left",onInput:ue},null,8,["modelValue","length"])])):R("",!0),Y.value?(d(),T(Mo,{key:2,"paginated-torrents":u(de),onOnTorrentClick:pe,onOnTorrentDblClick:W,onOnCheckboxClick:ce,onOnTorrentRightClick:ae,onStartPress:me,onEndPress:I},null,8,["paginated-torrents"])):Ee.value?(d(),T(Po,{key:3,class:"mb-2","paginated-torrents":u(de),onOnTorrentClick:pe,onOnTorrentDblClick:W,onOnCheckboxClick:ce,onOnTorrentRightClick:ae,onStartPress:me,onEndPress:I},null,8,["paginated-torrents"])):xe.value?(d(),T(ia,{key:4,"paginated-torrents":u(de),onOnTorrentClick:pe,onOnTorrentDblClick:W,onOnCheckboxClick:ce,onOnTorrentRightClick:ae,onStartPress:me,onEndPress:I},null,8,["paginated-torrents"])):R("",!0),!u(P).isPaginationOnTop&&!u(P).isInfiniteScrollActive&&u(te)>1?(d(),f("div",_a,[a(Je,{modelValue:u(j),"onUpdate:modelValue":b[9]||(b[9]=$=>he(j)?j.value=$:null),length:u(te),"next-icon":"mdi-menu-right","prev-icon":"mdi-menu-left",onInput:ue},null,8,["modelValue","length"])])):R("",!0)]),_("div",{style:Ct(`position: absolute; left: ${g.offset[0]}px; top: ${g.offset[1]}px;`)},[a(Jt,{modelValue:g.isVisible,"onUpdate:modelValue":b[10]||(b[10]=$=>g.isVisible=$)},null,8,["modelValue"])],4)],64))}});export{Va as default};
|
||||
1
qbit/vuetorrent/public/assets/Login-4fd3fce4.js
Normal file
1
qbit/vuetorrent/public/assets/Login-4fd3fce4.js
Normal file
@@ -0,0 +1 @@
|
||||
import{g as v,K as b,$ as h,aa as q,r as x,d as C,x as k,a as S,a1 as K,a2 as T,a3 as s,m as e,W as m,Z as p,u as l,Y as f,ao as _,a9 as y}from"./vue-d2584a6d.js";import{_ as A}from"./PasswordField.vue_vue_type_script_setup_true_lang-f7d196be.js";import{aS as B,aT as F,f as L,aL as U,g as I,h as M,i as N,V as O,j as R,k as $,l as j}from"./index-135ae4c1.js";import"./faker-c43f92d4.js";import"./vuetify-e547ef1b.js";const G=v({__name:"Login",setup(D){const{t:a}=b(),V=h(),o=q(),u=B(),r=x({username:"",password:""}),c=C(!1),w={username:[d=>!!d||a("login.rules.username_required")],password:[d=>!!d||a("login.rules.password_required")]},i=async()=>{c.value&&(await u.login(r.username,r.password),u.isAuthenticated?(y.success(a("login.success")),g()):y.error(a("login.error")))},g=()=>{o.query.redirect?V.push(o.query.redirect):V.push({name:"dashboard"})};return k(async()=>{o.query.username&&o.query.password&&await u.login(o.query.username,o.query.password)}),S(()=>{u.isAuthenticated&&g()}),(d,t)=>(K(),T(F,{class:"mt-16"},{default:s(()=>[e(j,{class:"mx-auto",rounded:"lg","min-width":"250"},{default:s(()=>[e(L,null,{default:s(()=>[m(p(l(a)("login.title")),1)]),_:1}),e(U,null,{default:s(()=>[m(p(l(a)("login.subtitle")),1)]),_:1}),e(I,null,{default:s(()=>[e(M,{modelValue:c.value,"onUpdate:modelValue":t[2]||(t[2]=n=>c.value=n),onSubmit:f(i,["prevent"])},{default:s(()=>[e(N,{modelValue:r.username,"onUpdate:modelValue":t[0]||(t[0]=n=>r.username=n),label:l(a)("login.username"),autofocus:"",rules:w.username,onKeydown:_(f(i,["prevent"]),["enter"]),variant:"outlined"},{prepend:s(()=>[e(O,{color:"accent",icon:"mdi-account"})]),_:1},8,["modelValue","label","rules","onKeydown"]),e(A,{modelValue:r.password,"onUpdate:modelValue":t[1]||(t[1]=n=>r.password=n),label:l(a)("login.password"),rules:w.password,"prepend-icon":"mdi-lock",onKeydown:_(f(i,["prevent"]),["enter"]),variant:"outlined"},null,8,["modelValue","label","rules","onKeydown"])]),_:1},8,["modelValue"])]),_:1}),e(R,null,{default:s(()=>[e($,{variant:"elevated",block:"",color:"accent",onClick:i},{default:s(()=>[m(p(l(a)("login.submit")),1)]),_:1})]),_:1})]),_:1})]),_:1}))}});export{G as default};
|
||||
1
qbit/vuetorrent/public/assets/Logs-a45762d4.css
Normal file
1
qbit/vuetorrent/public/assets/Logs-a45762d4.css
Normal file
@@ -0,0 +1 @@
|
||||
.v-theme--darkTheme .logtype-normal[data-v-77aed2b3]{color:#fff!important}.v-theme--darkTheme .logtype-info[data-v-77aed2b3]{color:gray!important}.v-theme--darkTheme .logtype-warning[data-v-77aed2b3]{color:#b8860b!important}.v-theme--darkTheme .logtype-critical[data-v-77aed2b3]{color:#c80000!important}.v-theme--lightTheme .logtype-normal[data-v-77aed2b3]{color:#000!important}.v-theme--lightTheme .logtype-info[data-v-77aed2b3]{color:gray!important}.v-theme--lightTheme .logtype-warning[data-v-77aed2b3]{color:#daa520!important}.v-theme--lightTheme .logtype-critical[data-v-77aed2b3]{color:red!important}
|
||||
1
qbit/vuetorrent/public/assets/Logs-c238f379.js
Normal file
1
qbit/vuetorrent/public/assets/Logs-c238f379.js
Normal file
@@ -0,0 +1 @@
|
||||
import{u as G}from"./ArrayPagination-26934cac.js";import{ay as P,y as K,az as l,av as H,ai as Q,q as b,c as Z,r as g,k as J,d,a1 as X,s as Y,a3 as c,i as ee,N as S,aw as te,ax as le,_ as ae}from"./index-135ae4c1.js";import"./faker-c43f92d4.js";import{g as se,$ as oe,K as ne,d as h,c as f,M as ue,I as ie,a1 as i,a6 as I,m as e,a3 as a,ab as F,Z as m,u as o,a2 as v,D as x,a8 as y,F as B,a7 as re,a5 as de,W as N}from"./vue-d2584a6d.js";import{d as me}from"./dayjs.min-1969f9c6.js";import"./vuetify-e547ef1b.js";const ce={class:"pa-3"},pe={style:{"font-size":"1.6em !important"},class:"subtitle-1 ml-2"},ge={class:"d-flex justify-end"},fe=se({__name:"Logs",setup(ve){const w=oe(),{t:O}=ne(),_=P(),$=K(),V=h([{title:l[l.NORMAL],value:l.NORMAL},{title:l[l.INFO],value:l.INFO},{title:l[l.WARNING],value:l.WARNING},{title:l[l.CRITICAL],value:l.CRITICAL}]),u=h([l.NORMAL,l.INFO,l.WARNING,l.CRITICAL]),L=h(""),M=f(()=>_.logs),U=f(()=>M.value.filter(t=>u.value.includes(t.type))),{results:C}=H(U,L,t=>t.message),T=f(()=>u.value.length>0),k=f(()=>u.value.length===V.value.length),{paginatedResults:E,currentPage:r,pageCount:p}=G(C,30),A=()=>{w.push({name:"dashboard"})},W=t=>`logtype-${l[t?.type]?.toLowerCase()}`,j=t=>l[t.type],q=t=>me(t.timestamp*1e3).format($.dateFormat),z=()=>{k.value?u.value=[]:u.value=V.value.map(t=>t.value)},R=t=>{t.key==="Escape"&&A()};return ue(async()=>{document.addEventListener("keydown",R),await _.cleanAndFetchLogs(),Q(_.fetchLogs,15e3)}),ie(()=>{document.removeEventListener("keydown",R)}),(t,n)=>(i(),I("div",ce,[e(b,{"no-gutters":"",align:"center",justify:"center"},{default:a(()=>[e(g,null,{default:a(()=>[F("h1",pe,m(o(O)("logs.title")),1)]),_:1}),e(g,null,{default:a(()=>[F("div",ge,[e(J,{icon:"mdi-close",variant:"plain",onClick:A})])]),_:1})]),_:1}),e(Z,null,{default:a(()=>[e(d,null,{default:a(()=>[e(b,null,{default:a(()=>[e(g,{cols:"6"},{default:a(()=>[e(X,{modelValue:u.value,"onUpdate:modelValue":n[0]||(n[0]=s=>u.value=s),items:V.value,label:t.$t("logs.filters.type"),"hide-details":"",multiple:"",chips:""},{"prepend-item":a(()=>[e(d,{title:t.$t("common.selectAll"),onClick:z},{prepend:a(()=>[e(Y,{indeterminate:T.value&&!k.value,"model-value":T.value},null,8,["indeterminate","model-value"])]),_:1},8,["title"]),e(c)]),_:1},8,["modelValue","items","label"])]),_:1}),e(g,{cols:"6"},{default:a(()=>[e(ee,{modelValue:L.value,"onUpdate:modelValue":n[1]||(n[1]=s=>L.value=s),label:t.$t("logs.filters.query"),"hide-details":""},null,8,["modelValue","label"])]),_:1})]),_:1})]),_:1}),e(c,{class:"my-3",thickness:"5"}),o(p)>1?(i(),v(d,{key:0},{default:a(()=>[e(S,{modelValue:o(r),"onUpdate:modelValue":n[2]||(n[2]=s=>x(r)?r.value=s:null),length:o(p),"prev-icon":"mdi-menu-left","next-icon":"mdi-menu-right"},null,8,["modelValue","length"])]),_:1})):y("",!0),e(c),(i(!0),I(B,null,re(o(E),(s,D)=>(i(),I(B,null,[D>0?(i(),v(c,{key:0})):y("",!0),e(d,{class:de(W(s))},{default:a(()=>[e(te,null,{default:a(()=>[N(m(s.id)+") "+m(s.message),1)]),_:2},1024),e(le,null,{default:a(()=>[N(m(j(s))+" | "+m(q(s)),1)]),_:2},1024)]),_:2},1032,["class"])],64))),256)),o(C).length===0?(i(),v(d,{key:1},{default:a(()=>[N(m(t.$t("logs.emptyLogList")),1)]),_:1})):y("",!0),e(c),o(p)>1?(i(),v(d,{key:2},{default:a(()=>[e(S,{modelValue:o(r),"onUpdate:modelValue":n[3]||(n[3]=s=>x(r)?r.value=s:null),length:o(p),"prev-icon":"mdi-menu-left","next-icon":"mdi-menu-right"},null,8,["modelValue","length"])]),_:1})):y("",!0)]),_:1})]))}});const Ne=ae(fe,[["__scopeId","data-v-77aed2b3"]]);export{Ne as default};
|
||||
1
qbit/vuetorrent/public/assets/MagnetHandler-d77b3bb6.js
Normal file
1
qbit/vuetorrent/public/assets/MagnetHandler-d77b3bb6.js
Normal file
@@ -0,0 +1 @@
|
||||
import{au as r,v as s,aR as n}from"./index-135ae4c1.js";import{g as u,aa as i,$ as m,M as p}from"./vue-d2584a6d.js";import"./faker-c43f92d4.js";import"./vuetify-e547ef1b.js";const l=u({__name:"MagnetHandler",setup(d){const o=i(),a=m();return p(async()=>{const e=decodeURIComponent(o.params.url);if(e.startsWith("magnet:")){const t=r();t.isFirstInit=!1,t.pushTorrentToQueue(e),s().createDialog(n,{})}await a.push({name:"dashboard"})}),()=>{}}});export{l as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{g as s,d as r,c as o,a1 as t,a2 as i,au as d,a3 as l,m as u}from"./vue-d2584a6d.js";import{V as m,i as f}from"./index-135ae4c1.js";const h=s({__name:"PasswordField",props:{hideIcon:{type:Boolean},prependIcon:{}},setup(v){const e=r(!1);function a(){e.value=!e.value}const p=o(()=>e.value?"text":"password"),c=o(()=>e.value?"mdi-eye":"mdi-eye-off");return(n,y)=>(t(),i(f,{type:p.value,"append-inner-icon":n.hideIcon?"":c.value,"onClick:appendInner":a},d({_:2},[n.prependIcon?{name:"prepend",fn:l(()=>[u(m,{color:"accent",icon:n.prependIcon},null,8,["icon"])]),key:"0"}:void 0]),1032,["type","append-inner-icon"]))}});export{h as _};
|
||||
1
qbit/vuetorrent/public/assets/RssArticles-1fe4e4bd.js
Normal file
1
qbit/vuetorrent/public/assets/RssArticles-1fe4e4bd.js
Normal file
@@ -0,0 +1 @@
|
||||
import{g as K,$ as q,K as W,d as Y,r as Z,c as G,M as J,x as O,I as X,a1 as i,a6 as v,m as e,a3 as s,ab as r,Z as u,u as n,a2 as y,D as L,a8 as m,F as S,a7 as ee,a5 as te,W as x,Y as C}from"./vue-d2584a6d.js";import{u as se}from"./ArrayPagination-26934cac.js";import{au as le,v as ae,ah as ne,y as oe,av as ie,q as D,c as $,r as h,k as f,d as p,i as re,a2 as ue,a as N,N as F,a3 as de,aw as ce,ax as me,m as fe,l as pe,f as _e,ad as ve,ae as Ve,g as ge,_ as ke}from"./index-135ae4c1.js";import"./faker-c43f92d4.js";import{d as ye}from"./index-fd06c5c5.js";import"./vuetify-e547ef1b.js";const he={class:"pa-3"},Ae={class:"subtitle-1 ml-2",style:{"font-size":"1.6em !important"}},xe={class:"d-flex justify-end"},Ce={class:"d-flex flex-row align-center justify-center"},we={class:"d-flex"},be={key:0},Re={key:1},Te={class:"d-flex flex-column"},Le=["innerHTML"],Se=K({__name:"RssArticles",setup(De){const I=q(),{t:V}=W(),U=le(),B=ae(),o=ne(),M=oe(),_=Y(!1),g=Z({title:"",content:""}),A=G({get:()=>o.filters.title,set:ye(t=>{o.filters.title=t??""},300)}),k=ie(()=>o.articles.sort((t,a)=>Number(a.parsedDate)-Number(t.parsedDate)),()=>A.value,t=>t.title),{paginatedResults:j,currentPage:c,pageCount:w}=se(k.results,15);function E(t){const a=M.useIdForRssLinks?t.id:t.link;window.open(a,"_blank","noreferrer")}function H(t){t.description&&(g.title=t.title.trim(),g.content=t.description.trim(),_.value=!0)}function P(t){U.pushTorrentToQueue(t.torrentURL)}async function b(t){await o.markArticleAsRead(t.id)}async function Q(){await o.markAllAsRead()}function R(){I.push({name:"dashboard"})}function T(t){if(B.hasActiveDialog||_.value)return!1;t.key==="Escape"&&R()}return J(async()=>{await o.fetchFeeds()}),O(()=>{document.addEventListener("keydown",T)}),X(()=>{document.removeEventListener("keydown",T)}),(t,a)=>(i(),v("div",he,[e(D,{align:"center",justify:"center","no-gutters":""},{default:s(()=>[e(h,null,{default:s(()=>[r("h1",Ae,u(n(V)("rssArticles.title")),1)]),_:1}),e(h,null,{default:s(()=>[r("div",xe,[e(f,{icon:"mdi-close",variant:"plain",onClick:R})])]),_:1})]),_:1}),e($,null,{default:s(()=>[e(p,null,{default:s(()=>[e(D,null,{default:s(()=>[e(h,{cols:"12"},{default:s(()=>[e(re,{modelValue:A.value,"onUpdate:modelValue":a[0]||(a[0]=l=>A.value=l),label:t.$t("rssArticles.filters.title"),clearable:"","hide-details":""},null,8,["modelValue","label"])]),_:1}),e(h,{cols:"12"},{default:s(()=>[r("div",Ce,[e(ue,{modelValue:n(o).filters.unread,"onUpdate:modelValue":a[1]||(a[1]=l=>n(o).filters.unread=l),label:t.$t("rssArticles.filters.unread"),"hide-details":""},null,8,["modelValue","label"]),e(N),e(f,{text:t.$t("rssArticles.markAllAsRead"),color:"primary",onClick:Q},null,8,["text"])])]),_:1})]),_:1})]),_:1}),n(k).results.value.length?(i(),y(p,{key:0},{default:s(()=>[e(F,{modelValue:n(c),"onUpdate:modelValue":a[2]||(a[2]=l=>L(c)?c.value=l:null),length:n(w),"next-icon":"mdi-menu-right","prev-icon":"mdi-menu-left"},null,8,["modelValue","length"])]),_:1})):m("",!0),e(p,null,{default:s(()=>[e($,null,{default:s(()=>[(i(!0),v(S,null,ee(n(j),(l,z)=>(i(),v(S,null,[z>0?(i(),y(de,{key:0,color:"white"})):m("",!0),e(p,{class:te({"rss-read":l.isRead}),onClick:d=>H(l),onContextmenu:d=>b(l)},{default:s(()=>[r("div",we,[r("div",null,[e(ce,{class:"wrap-anywhere",style:{"white-space":"unset"}},{default:s(()=>[x(u(l.title),1)]),_:2},1024),e(me,{class:"d-block"},{default:s(()=>[r("div",null,u(l.parsedDate.toLocaleString()),1),r("div",null,u(n(V)("rssArticles.item.feedName",{name:n(o).getFeedNames(l.id).join(" | ")})),1),l.author?(i(),v("div",be,u(n(V)("rssArticles.item.author",{author:l.author})),1)):m("",!0),l.category?(i(),v("div",Re,u(n(V)("rssArticles.item.category",{category:l.category})),1)):m("",!0)]),_:2},1024)]),e(N),r("div",Te,[e(f,{icon:"mdi-open-in-new",variant:"text",onClick:C(d=>E(l),["stop"])},null,8,["onClick"]),e(f,{color:"accent",icon:"mdi-check",variant:"text",onClick:C(d=>b(l),["stop"])},null,8,["onClick"]),e(f,{icon:"mdi-download",variant:"text",onClick:C(d=>P(l),["stop"])},null,8,["onClick"])])]),e(fe,{modelValue:_.value,"onUpdate:modelValue":a[4]||(a[4]=d=>_.value=d)},{default:s(()=>[e(pe,null,{default:s(()=>[e(_e,null,{default:s(()=>[e(ve,{color:"transparent"},{default:s(()=>[e(Ve,null,{default:s(()=>[x(u(g.title),1)]),_:1}),e(f,{icon:"mdi-close",onClick:a[3]||(a[3]=d=>_.value=!1)})]),_:1})]),_:1}),e(ge,null,{default:s(()=>[r("div",{class:"description-container",innerHTML:g.content},null,8,Le)]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:2},1032,["class","onClick","onContextmenu"])],64))),256)),n(k).results.value.length===0?(i(),y(p,{key:0},{default:s(()=>[x(u(t.$t("common.emptyList")),1)]),_:1})):m("",!0)]),_:1})]),_:1}),n(k).results.value.length?(i(),y(p,{key:1},{default:s(()=>[e(F,{modelValue:n(c),"onUpdate:modelValue":a[5]||(a[5]=l=>L(c)?c.value=l:null),length:n(w),"next-icon":"mdi-menu-right","prev-icon":"mdi-menu-left"},null,8,["modelValue","length"])]),_:1})):m("",!0)]),_:1})]))}});const Me=ke(Se,[["__scopeId","data-v-87c5959f"]]);export{Me as default};
|
||||
1
qbit/vuetorrent/public/assets/RssArticles-cd150368.css
Normal file
1
qbit/vuetorrent/public/assets/RssArticles-cd150368.css
Normal file
@@ -0,0 +1 @@
|
||||
.rss-read.v-theme--darkTheme[data-v-87c5959f]{color:#b6b6b6!important}.rss-read.v-theme--lightTheme[data-v-87c5959f]{color:gray!important}.description-container[data-v-87c5959f]{border:solid red 5px}.description-container img{max-width:100%;height:auto}
|
||||
1
qbit/vuetorrent/public/assets/SearchEngine-b38d96d6.js
Normal file
1
qbit/vuetorrent/public/assets/SearchEngine-b38d96d6.js
Normal file
@@ -0,0 +1 @@
|
||||
import{g as Y,K as G,d as h,a1 as S,a2 as M,a3 as a,m as e,ab as C,Z as m,n as te,W as E,u as v,Y as J,D as ne,$ as se,a0 as ie,c as K,M as oe,q as re,a6 as j,F as ue,a7 as ce,ao as de}from"./vue-d2584a6d.js";import{u as fe,aB as W,l as A,f as ge,a as D,k as c,m as F,g as H,h as me,i as Z,j as x,ag as X,s as ve,V as pe,au as he,v as ye,y as Ve,av as ke,q as $,c as be,r as b,af as Ee,ar as Se,as as we,d as O,aC as Ce,aD as _e,a1 as Q,a3 as Te,J as Pe}from"./index-135ae4c1.js";import"./faker-c43f92d4.js";import"./vuetify-e547ef1b.js";const $e=["href","title"],Me=Y({__name:"PluginManagerDialog",props:{guid:{}},setup(R){const I=R,{isOpened:t}=fe(I.guid),{t:y}=G(),d=W(),f=[{title:y("dialogs.pluginManager.headers.enabled"),key:"enabled",sortable:!1},{title:y("dialogs.pluginManager.headers.name"),key:"fullName"},{title:y("dialogs.pluginManager.headers.version"),key:"version"},{title:y("dialogs.pluginManager.headers.url"),key:"url"},{title:y("dialogs.pluginManager.headers.actions"),key:"actions"}],V=h(!1),k=h(!1),w=h(!1),p=h(!1),u=h("");async function N(r){await d.toggleSearchPlugin(r),await d.fetchSearchPlugins()}async function _(){k.value=!0,await d.updatePlugins().then(()=>new Promise(r=>setTimeout(r,2e3))),await d.fetchSearchPlugins(),k.value=!1}async function U(){T(),V.value=!0,await d.installSearchPlugin(u.value),u.value="",setTimeout(()=>{d.fetchSearchPlugins().then(()=>{V.value=!1})},1e3)}async function q(r){V.value=!0,await d.uninstallSearchPlugin(r.name),await d.fetchSearchPlugins(),V.value=!1}const s=()=>{t.value=!1};function T(){w.value=!1}return(r,g)=>(S(),M(F,{modelValue:v(t),"onUpdate:modelValue":g[4]||(g[4]=n=>ne(t)?t.value=n:null)},{default:a(()=>[e(A,null,{default:a(()=>[e(ge,{class:"d-flex"},{default:a(()=>[C("div",null,m(r.$t("dialogs.pluginManager.title")),1),e(D),e(c,{text:r.$t("dialogs.pluginManager.update"),color:"accent",class:"mr-2",loading:k.value,onClick:_},null,8,["text","loading"]),e(F,{modelValue:w.value,"onUpdate:modelValue":g[3]||(g[3]=n=>w.value=n)},{activator:a(({props:n})=>[e(c,te(n,{color:"primary"}),{default:a(()=>[E(m(r.$t("dialogs.pluginManager.install.activator")),1)]),_:2},1040)]),default:a(()=>[e(A,{title:r.$t("dialogs.pluginManager.install.title")},{default:a(()=>[e(H,null,{default:a(()=>[e(v(me),{modelValue:p.value,"onUpdate:modelValue":g[1]||(g[1]=n=>p.value=n),onSubmit:g[2]||(g[2]=J(()=>{},["prevent"]))},{default:a(()=>[e(Z,{modelValue:u.value,"onUpdate:modelValue":g[0]||(g[0]=n=>u.value=n),autofocus:"",label:r.$t("dialogs.pluginManager.install.label")},null,8,["modelValue","label"])]),_:1},8,["modelValue"])]),_:1}),e(x,null,{default:a(()=>[e(D),e(c,{color:"error",onClick:T},{default:a(()=>[E(m(r.$t("common.cancel")),1)]),_:1}),e(c,{color:"accent",onClick:U},{default:a(()=>[E(m(r.$t("common.ok")),1)]),_:1})]),_:1})]),_:1},8,["title"])]),_:1},8,["modelValue"])]),_:1}),e(H,null,{default:a(()=>[e(X,{headers:f,"items-per-page":"-1",items:v(d).searchPlugins,"sort-by":[{key:"fullName",order:"asc"}],loading:V.value},{"item.enabled":a(({item:n})=>[e(ve,{"model-value":n.enabled,onClick:P=>N(n)},null,8,["model-value","onClick"])]),"item.url":a(({item:n})=>[C("a",{href:n.url,title:n.name},m(n.url),9,$e)]),"item.actions":a(({item:n})=>[e(pe,{color:"red",icon:"mdi-delete",onClick:P=>q(n)},null,8,["onClick"])]),tfoot:a(()=>[]),_:1},8,["items","loading"])]),_:1}),e(x,null,{default:a(()=>[e(D),e(c,{color:"accent",onClick:s},{default:a(()=>[E(m(r.$t("common.close")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]))}}),De={class:"pa-3"},Ie={style:{"font-size":"1.6em !important"},class:"subtitle-1 ml-2"},Ne={class:"d-flex justify-end"},ze=Y({__name:"SearchEngine",setup(R){const I=se(),{t}=G(),y=he(),d=ye(),f=W(),V=Ve(),k=h(),w=h(!1),p=h(0),{searchData:u}=ie(f),N=[{title:t("searchEngine.headers.fileName"),key:"fileName"},{title:t("searchEngine.headers.fileSize"),key:"fileSize"},{title:t("searchEngine.headers.nbSeeders"),key:"nbSeeders"},{title:t("searchEngine.headers.nbLeechers"),key:"nbLeechers"},{title:t("searchEngine.headers.siteUrl"),key:"siteUrl"},{title:"",key:"actions",sortable:!1}],_=[{title:t("searchEngine.filters.category.movies"),value:"movies"},{title:t("searchEngine.filters.category.tv"),value:"tv"},{title:t("searchEngine.filters.category.music"),value:"music"},{title:t("searchEngine.filters.category.games"),value:"games"},{title:t("searchEngine.filters.category.anime"),value:"anime"},{title:t("searchEngine.filters.category.software"),value:"software"},{title:t("searchEngine.filters.category.pictures"),value:"pictures"},{title:t("searchEngine.filters.category.books"),value:"books"}];_.sort((l,i)=>l.title.localeCompare(i.title));const U=[{title:t("searchEngine.filters.category.all"),value:"all"},..._],q=K(()=>{const l=[{title:t("searchEngine.filters.plugins.all"),value:"all"},{title:t("searchEngine.filters.plugins.enabled"),value:"enabled"}];return f.searchPlugins.filter(i=>i.enabled).forEach(i=>{l.push({title:i.name,value:i.name})}),l}),s=K(()=>u.value[p.value]??{}),{results:T}=ke(()=>s.value.results,()=>s.value.filters?.title,l=>l.fileName);function r(){f.createNewTab(),p.value=u.value.length-1,k.value?.focus()}function g(){u.value.length!==1&&(f.deleteTab(s.value.uniqueId),p.value=Math.min(p.value,u.value.length-1))}function n(l){y.pushTorrentToQueue(l.fileUrl)}async function P(){await f.runNewSearch(s.value),s.value.timer=setInterval(()=>ae(s.value),1e3),k.value?.saveValueToHistory()}async function B(l){await f.stopSearch(l),l.timer&&clearInterval(l.timer)}function ee(){u.value.forEach(B)}async function ae(l){await f.refreshResults(l)==="Stopped"&&await B(l)}const L=()=>{I.push({name:"dashboard"})};function le(){d.createDialog(Me)}function z(l){if(d.hasActiveDialog||w.value)return!1;l.key==="Escape"&&L()}return oe(async()=>{document.addEventListener("keydown",z),u.value.length===0?f.createNewTab():u.value.forEach(l=>{l.id&&l.id!==0&&(l.timer=setInterval(()=>f.refreshResults(l),1e3))}),await f.fetchSearchPlugins()}),re(()=>{document.removeEventListener("keydown",z),u.value.forEach(l=>{l.timer&&clearInterval(l.timer)})}),(l,i)=>(S(),j("div",De,[e($,{"no-gutters":"",align:"center",justify:"center"},{default:a(()=>[e(b,null,{default:a(()=>[C("h1",Ie,m(v(t)("searchEngine.title")),1)]),_:1}),e(b,null,{default:a(()=>[C("div",Ne,[e(c,{icon:"mdi-stop",variant:"plain",color:"error",onClick:ee}),e(c,{icon:"mdi-toy-brick",variant:"plain",color:"primary",onClick:le}),e(c,{icon:"mdi-close",variant:"plain",onClick:L})])]),_:1})]),_:1}),e($,{class:"ma-0 pa-0"},{default:a(()=>[e(Ee,{class:"d-flex align-center justify-center ma-0 pa-0 bg-primary",fluid:""},{default:a(()=>[e(Se,{modelValue:p.value,"onUpdate:modelValue":i[0]||(i[0]=o=>p.value=o),class:"overflow-auto","bg-color":"primary","show-arrows":""},{default:a(()=>[(S(!0),j(ue,null,ce(v(u),o=>(S(),M(we,{key:o.uniqueId},{default:a(()=>[C("h4",null,m(!o.query||o.query.length===0?l.$t("searchEngine.tabHeaderEmpty"):o.query),1)]),_:2},1024))),128))]),_:1},8,["modelValue"]),e(D),e(c,{icon:"mdi-plus-circle-outline",variant:"plain",color:"accent",onClick:r}),e(c,{icon:"mdi-minus-circle-outline",variant:"plain",color:"error",disabled:v(u).length===1,onClick:g},null,8,["disabled"])]),_:1})]),_:1}),e(be,null,{default:a(()=>[e(O,null,{default:a(()=>[e($,{class:"mt-1"},{default:a(()=>[e(b,{cols:"12",md:"6"},{default:a(()=>[e(Ce,{modelValue:s.value.query,"onUpdate:modelValue":i[1]||(i[1]=o=>s.value.query=o),"history-key":v(_e).SEARCH_ENGINE_QUERY,ref_key:"queryInput",ref:k,autofocus:"",density:"compact","hide-details":"",clearable:"",label:l.$t("searchEngine.query"),onKeydown:de(J(P,["prevent"]),["enter"])},null,8,["modelValue","history-key","label","onKeydown"])]),_:1}),e(b,{cols:"6",sm:"5",md:"2"},{default:a(()=>[e(Q,{modelValue:s.value.filters.category,"onUpdate:modelValue":i[2]||(i[2]=o=>s.value.filters.category=o),height:"1",variant:"outlined",density:"compact","hide-details":"",items:U,label:l.$t("searchEngine.filters.category.label")},null,8,["modelValue","label"])]),_:1}),e(b,{cols:"6",sm:"5",md:"2"},{default:a(()=>[e(Q,{modelValue:s.value.filters.plugin,"onUpdate:modelValue":i[3]||(i[3]=o=>s.value.filters.plugin=o),flat:"",density:"compact","hide-details":"",variant:"outlined",items:q.value,label:l.$t("searchEngine.filters.plugins.label")},null,8,["modelValue","items","label"])]),_:1}),e(b,{cols:"12",sm:"2",class:"d-flex align-center justify-center"},{default:a(()=>[s.value.id===0?(S(),M(c,{key:0,color:"accent",flat:"",class:"mx-auto px-4",onClick:P},{default:a(()=>[E(m(l.$t("searchEngine.runSearch")),1)]),_:1})):(S(),M(c,{key:1,color:"warning",flat:"",class:"mx-auto px-4",onClick:i[4]||(i[4]=o=>B(s.value))},{default:a(()=>[E(m(l.$t("searchEngine.stopSearch")),1)]),_:1}))]),_:1})]),_:1})]),_:1}),e(Te,{class:"my-3"}),e(O,null,{default:a(()=>[e(X,{headers:N,items:v(T),"footer-props":{itemsPerPageOptions:[10,25,50,100,-1]},"items-per-page":s.value.itemsPerPage},{top:a(()=>[e($,null,{default:a(()=>[e(b,{cols:"12"},{default:a(()=>[e(Z,{modelValue:s.value.filters.title,"onUpdate:modelValue":i[5]||(i[5]=o=>s.value.filters.title=o),density:"compact","hide-details":"",label:l.$t("searchEngine.filters.title.label")},null,8,["modelValue","label"])]),_:1})]),_:1})]),"item.fileSize":a(({item:o})=>[E(m(v(Pe)(o.fileSize,v(V).useBinarySize)),1)]),"item.actions":a(({item:o})=>[e(c,{icon:"mdi-download",variant:"flat",density:"compact",onClick:Ue=>n(o)},null,8,["onClick"])]),_:1},8,["items","items-per-page"])]),_:1})]),_:1})]))}});export{ze as default};
|
||||
1
qbit/vuetorrent/public/assets/Settings-af9c84ca.js
Normal file
1
qbit/vuetorrent/public/assets/Settings-af9c84ca.js
Normal file
File diff suppressed because one or more lines are too long
1
qbit/vuetorrent/public/assets/Settings-cac9dd1a.css
Normal file
1
qbit/vuetorrent/public/assets/Settings-cac9dd1a.css
Normal file
@@ -0,0 +1 @@
|
||||
.scrollable-col[data-v-8013deca]{@media (min-width: 600px){max-height:calc(100vh - 200px)}@media (max-width: 599px){max-height:calc(60vh - 200px)}overflow-y:auto}.gap[data-v-1eb1c7d2]{margin-bottom:8px}.gap[data-v-1eb1c7d2]:last-child{margin-bottom:unset}td .dnd-handle[data-v-63969f1b]{cursor:move}
|
||||
2
qbit/vuetorrent/public/assets/TorrentDetail-85e789b3.js
Normal file
2
qbit/vuetorrent/public/assets/TorrentDetail-85e789b3.js
Normal file
@@ -0,0 +1,2 @@
|
||||
import{u as rt,n as oe,l as ae,f as _e,g as ce,h as Ye,i as ke,j as Te,a as te,k as A,m as be,y as he,aE as K,J,D as Ve,c as Q,d as W,aw as ze,V as le,b as it,aF as st,v as Ue,ai as Je,aj as ut,r as S,e as Fe,aG as dt,aH as X,aI as Z,q as I,a2 as pe,K as ee,ax as Ne,z as de,_ as Ce,A as ct,B as mt,T as ft,aJ as vt,aK as pt,aL as _t,aM as gt,aN as yt,a3 as Ie,aO as ht,aP as Ae,af as Qe,a7 as Xe,aQ as Ge,a0 as Ke,aq as wt,C as Dt,ar as $t,as as se,at as ue}from"./index-135ae4c1.js";import{d as V,a as kt,J as Tt,g as j,K as ne,r as Be,M as Se,A as ge,a1 as u,a2 as F,a3 as t,m as e,W as y,Z as l,u as o,Y as Oe,a8 as x,ao as Ze,D as bt,ab as c,n as ye,a6 as $,a7 as R,F as U,ae as Vt,a0 as Nt,c as E,w as me,x as Le,a4 as je,au as Ft,I as Re,a5 as xe,aa as Ct,$ as St,q as Ot}from"./vue-d2584a6d.js";import"./faker-c43f92d4.js";import{_ as Pt}from"./dayjs-f7aba705.js";import{d as He}from"./dayjs.min-1969f9c6.js";import{an as At}from"./vuetify-e547ef1b.js";var $e=(w=>(w[w.MISSING=0]="MISSING",w[w.DOWNLOADING=1]="DOWNLOADING",w[w.DOWNLOADED=2]="DOWNLOADED",w))($e||{}),Y=(w=>(w[w.DISABLED=0]="DISABLED",w[w.NOT_YET_CONTACTED=1]="NOT_YET_CONTACTED",w[w.WORKING=2]="WORKING",w[w.UPDATING=3]="UPDATING",w[w.NOT_WORKING=4]="NOT_WORKING",w))(Y||{});const It={pdf:"mdi-file-pdf-box",png:"mdi-file-image",jpg:"mdi-file-image",jpeg:"mdi-file-image",tiff:"mdi-file-image",doc:"mdi-file-document",docx:"mdi-file-document",txt:"mdi-file-document",nfo:"mdi-information-variant-box",mp3:"mdi-music",wav:"mdi-music",flac:"mdi-music",avi:"mdi-movie",mp4:"mdi-movie",mkv:"mdi-movie",mov:"mdi-movie",wmv:"mdi-movie",srt:"mdi-subtitles",idx:"mdi-subtitles",sub:"mdi-subtitles",rar:"mdi-folder-zip",zip:"mdi-folder-zip",gz:"mdi-folder-zip","7z":"mdi-folder-zip",exe:"mdi-application",msi:"mdi-application",dmg:"mdi-application",deb:"mdi-application",iso:"mdi-application",jar:"mdi-application"};function xt(w){const a=w.split(".").pop()?.toLowerCase()||"";return It[a]||"mdi-file"}function qe(){return{type:"root",name:"",fullName:"",id:"",children:[]}}function zt(w){const a=V(qe());return kt(()=>{const d=qe(),r=Tt(w)??[];for(const m of r){let h=d;m.name.replace("\\","/").split("/").reduce((p,s)=>{const i=p===""?s:p+"/"+s;if(m.name.replace("\\","/").split("/").pop()===s){const b={type:"file",name:s,fullName:i,id:m.index,availability:m.availability,index:m.index,is_seed:m.is_seed,priority:m.priority,progress:m.progress,size:m.size};h.children.push(b)}else{const b=h.children.find(T=>T.name===s);if(b)h=b;else{const T={type:"folder",name:s,fullName:i,id:i,children:[]};h.children.push(T),h=T}}return i},"")}a.value=d}),{tree:a}}const et=j({__name:"MoveTorrentFileDialog",props:{guid:{},hash:{},isFolder:{type:Boolean},oldName:{}},setup(w){const a=w,{isOpened:d}=rt(a.guid),{t:r}=ne(),m=oe(),h=V(),p=V(),s=V(!1),i=Be({newName:""}),b=[g=>!!g||r("dialogs.moveTorrent.required")];async function T(){await h.value?.validate(),s.value&&(a.isFolder?await m.renameTorrentFolder(a.hash,a.oldName,i.newName):await m.renameTorrentFile(a.hash,a.oldName,i.newName),P())}const P=()=>{d.value=!1};return Se(()=>{if(i.newName=a.oldName,a.isFolder)ge(()=>p.value?.select());else{const g=i.newName.lastIndexOf("/"),N=i.newName.lastIndexOf(".");ge(()=>{p.value?.setSelectionRange(g+1,N==-1?i.newName.length:N)})}}),(g,N)=>(u(),F(be,{modelValue:o(d),"onUpdate:modelValue":N[3]||(N[3]=O=>bt(d)?d.value=O:null)},{default:t(()=>[e(ae,null,{default:t(()=>[e(_e,null,{default:t(()=>[y(l(o(r)("dialogs.moveTorrentFile.title",1+Number(g.isFolder))),1)]),_:1}),e(ce,null,{default:t(()=>[e(o(Ye),{modelValue:s.value,"onUpdate:modelValue":N[1]||(N[1]=O=>s.value=O),ref_key:"form",ref:h,onSubmit:N[2]||(N[2]=Oe(()=>{},["prevent"]))},{default:t(()=>[g.oldName?(u(),F(ke,{key:0,"model-value":g.oldName,disabled:"",label:g.$t("dialogs.moveTorrentFile.oldName")},null,8,["model-value","label"])):x("",!0),e(ke,{modelValue:i.newName,"onUpdate:modelValue":N[0]||(N[0]=O=>i.newName=O),ref_key:"input",ref:p,rules:b,autofocus:"",label:g.$t("dialogs.moveTorrent.newPath"),onKeydown:Ze(T,["enter"])},null,8,["modelValue","label"])]),_:1},8,["modelValue"])]),_:1}),e(Te,null,{default:t(()=>[e(te),e(A,{color:"error",onClick:P},{default:t(()=>[y(l(g.$t("common.cancel")),1)]),_:1}),e(A,{color:"accent",disabled:!s.value,onClick:T},{default:t(()=>[y(l(g.$t("common.save")),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue"]))}}),Ut={class:"mr-2"},Bt={class:"mr-2"},Lt={class:"mr-4"},Rt={class:"ml-2"},Et=j({__name:"FileNode",props:{node:{}},emits:["renameFile","setFilePriority"],setup(w){const{t:a}=ne(),d=he(),r=[{name:a("constants.file_priority.max"),icon:"mdi-priority-high",value:K.MAXIMAL},{name:a("constants.file_priority.high"),icon:"mdi-arrow-up",value:K.HIGH},{name:a("constants.file_priority.normal"),icon:"mdi-arrow-down",value:K.NORMAL},{name:a("constants.file_priority.unwanted"),icon:"mdi-priority-low",value:K.DO_NOT_DOWNLOAD}];function m(h){return r.find(p=>p.value===h.priority)?.name||""}return(h,p)=>(u(),F(W,{title:h.node.name,value:h.node.index,"prepend-icon":o(xt)(h.node.name)},{append:t(()=>[c("span",Ut,"[ "+l(o(J)(h.node.size,o(d).useBinarySize))+" ]",1),c("span",Bt,l(o(Ve)(h.node.progress)),1),c("span",Lt,"[ "+l(m(h.node))+" ]",1),e(it,{"open-on-hover":"","open-on-click":"","open-delay":"0","close-delay":"0"},{activator:t(({props:s})=>[e(A,ye(s,{class:"mr-2",color:"accent",size:"x-small",icon:"mdi-trending-up"}),null,16)]),default:t(()=>[e(Q,null,{default:t(()=>[(u(),$(U,null,R(r,s=>e(W,{onClick:i=>h.$emit("setFilePriority",h.node,s.value)},{default:t(()=>[e(ze,null,{default:t(()=>[e(le,null,{default:t(()=>[y(l(s.icon),1)]),_:2},1024),c("span",Rt,l(s.name),1)]),_:2},1024)]),_:2},1032,["onClick"])),64))]),_:1})]),_:1}),e(A,{color:"accent",size:"x-small",icon:"mdi-pencil",onClick:p[0]||(p[0]=Oe(s=>h.$emit("renameFile",h.node),["stop"]))})]),_:1},8,["title","value","prepend-icon"]))}}),Wt={class:"mr-2"},Mt=j({__name:"FolderNode",props:{node:{}},emits:["renameFolder","renameFile","setFilePriority"],setup(w){const{t:a}=ne();function d(r){let m=0,h=0;for(const s of r.children)s.type==="file"?m++:s.type==="folder"&&h++;const p=[];return m>0&&p.push(a("torrentDetail.content.fileInfo",m)),h>0&&p.push(a("torrentDetail.content.folderInfo",h)),p.join(", ")}return(r,m)=>{const h=Vt("FolderNode",!0);return u(),F(st,{value:r.node.type==="root"?"(root)":r.node.fullName},{activator:t(({props:p})=>[e(W,ye(p,{"prepend-icon":r.node.type==="root"?"mdi-file-tree":"mdi-folder",title:r.node.type==="root"?r.$t("torrentDetail.content.rootNode"):r.node.name,value:r.node.type==="root"?"(root)":r.node.fullName}),{append:t(({isActive:s})=>[c("span",Wt,l(d(r.node)),1),r.node.type==="folder"?(u(),F(A,{key:0,color:"accent",size:"x-small",icon:"mdi-pencil",onClick:m[0]||(m[0]=Oe(i=>r.$emit("renameFolder",r.node),["stop"]))})):x("",!0),e(le,{icon:s?"mdi-chevron-up":"mdi-chevron-down"},null,8,["icon"])]),_:2},1040,["prepend-icon","title","value"])]),default:t(()=>[(u(!0),$(U,null,R(r.node.children,p=>(u(),$(U,null,[p.type==="folder"?(u(),F(h,{key:0,node:p,onRenameFolder:m[1]||(m[1]=s=>r.$emit("renameFolder",s)),onRenameFile:m[2]||(m[2]=s=>r.$emit("renameFile",s)),onSetFilePriority:m[3]||(m[3]=(s,i)=>r.$emit("setFilePriority",s,i))},null,8,["node"])):x("",!0),p.type==="file"?(u(),F(Et,{key:1,node:p,onRenameFile:m[4]||(m[4]=s=>r.$emit("renameFile",s)),onSetFilePriority:m[5]||(m[5]=(s,i)=>r.$emit("setFilePriority",s,i))},null,8,["node"])):x("",!0)],64))),256))]),_:1},8,["value"])}}}),Gt=j({__name:"RootNode",props:{root:{}},emits:["renameFolder","renameFile","setFilePriority"],setup(w){return(a,d)=>(u(),F(Q,{density:"compact","select-strategy":"classic"},{default:t(()=>[e(Mt,{node:a.root,onRenameFolder:d[0]||(d[0]=r=>a.$emit("renameFolder",r)),onRenameFile:d[1]||(d[1]=r=>a.$emit("renameFile",r)),onSetFilePriority:d[2]||(d[2]=(r,m)=>a.$emit("setFilePriority",r,m))},null,8,["node"])]),_:1}))}}),Kt=j({__name:"Content",props:{torrent:{},isActive:{type:Boolean}},setup(w){const a=w,d=Ue(),r=oe(),{fileContentInterval:m}=Nt(he()),{pause:h,resume:p}=Je(_,m,{immediate:!1,immediateCallback:!0}),s=V(!1),i=V(!1),b=V([]),{tree:T}=zt(b),P=V(["(root)"]),g=V(""),N=Be({hash:"",isFolder:!1,oldName:""}),O=E({get:()=>b.value.filter(f=>f.priority!==K.DO_NOT_DOWNLOAD).map(f=>f.index),async set(f){const L=b.value.filter(D=>D.priority!==K.DO_NOT_DOWNLOAD).map(D=>D.index),M=L.filter(D=>!f.includes(D)).map(D=>b.value.find(C=>C.index===D)).filter(D=>D&&D.priority!==K.DO_NOT_DOWNLOAD).map(D=>D.index),k=f.filter(D=>!L.includes(D)).map(D=>b.value.find(C=>C.index===D)).filter(D=>D&&D.priority===K.DO_NOT_DOWNLOAD).map(D=>D.index);M.length&&await r.setTorrentFilePriority(a.torrent.hash,M,K.DO_NOT_DOWNLOAD),k.length&&await r.setTorrentFilePriority(a.torrent.hash,k,K.NORMAL),await _()}});async function z(f){N.hash=a.torrent.hash,N.isFolder=f.type==="folder",N.oldName=f.fullName,g.value=d.createDialog(et,N)}async function v(f,L){await r.setTorrentFilePriority(a.torrent.hash,[f.index],L),await _()}async function _(){s.value||(s.value=!0,i.value=!0,await ge(),b.value=await r.fetchFiles(a.torrent.hash),i.value=!1,s.value=!1,await ge())}return me(()=>a.isActive,f=>{f?(p(),_()):h()}),me(()=>d.isDialogOpened(g.value),f=>{f||_()}),Le(()=>{p()}),(f,L)=>(u(),F(ae,{loading:i.value,flat:""},{default:t(()=>[e(Gt,{opened:P.value,"onUpdate:opened":L[0]||(L[0]=M=>P.value=M),selected:O.value,"onUpdate:selected":L[1]||(L[1]=M=>O.value=M),root:o(T),onRenameFolder:z,onRenameFile:z,onSetFilePriority:v},null,8,["opened","selected","root"])]),_:1},8,["loading"]))}}),jt={class:"pl-4"},Ht={class:"pr-4"},q=j({__name:"InfoBase",props:{compact:{type:Boolean}},setup(w){return(a,d)=>(u(),F(S,{cols:"12",sm:"6",lg:"3"},{default:t(()=>[e(ut,{rounded:"xl",class:"d-flex align-center py-2 border"},{default:t(()=>[c("div",jt,[je(a.$slots,"title")]),e(te),c("div",Ht,[je(a.$slots,"text")])]),_:3})]),_:3}))}}),qt={key:0,class:"d-flex gap"},Yt=j({__name:"Info",props:{torrent:{},isActive:{type:Boolean}},setup(w){const a=w,d=oe(),r=Fe(),m=he(),h=E({get:()=>a.torrent.auto_tmm,set:v=>d.toggleAutoTmm([a.torrent.hash],v)}),p=E({get:()=>a.torrent.f_l_piece_prio,set:()=>d.toggleFLPiecePrio([a.torrent.hash])}),s=E({get:()=>a.torrent.forced,set:v=>{v?r.forceResumeTorrents([a.torrent.hash]):r.resumeTorrents([a.torrent.hash])}}),i=E({get:()=>a.torrent.seq_dl,set:()=>d.toggleSeqDl([a.torrent.hash])}),b=E({get:()=>a.torrent.super_seeding,set:v=>d.setSuperSeeding([a.torrent.hash],v)}),T=[{title:"added_on",text:"added_on"},{title:"completed_on",text:"completed_on"},{title:"last_activity",text:"last_activity"},{title:"seen_complete",text:"seen_complete"}],P=[{title:"ratio_time_limit",text:"ratio_time_limit"},{title:"seeding_time",text:"seeding_time"},{title:"time_active",text:"time_active"}],g=[{title:"downloaded",text:"downloaded"},{title:"downloaded_session",text:"downloaded_session"},{title:"uploaded",text:"uploaded"},{title:"uploaded_session",text:"uploaded_session"},{title:"size",text:"size"},{title:"total_size",text:"total_size"},{title:"amount_left",text:"amount_left"},{title:"global_volume",text:"globalVolume"}],N=[{title:"download_limit",text:"dl_limit"},{title:"download_speed",text:"dlspeed"},{title:"upload_limit",text:"up_limit"},{title:"upload_speed",text:"upspeed"},{title:"avg_download_speed",text:"avgDownloadSpeed"},{title:"avg_upload_speed",text:"avgUploadSpeed"},{title:"global_speed",text:"globalSpeed"}],O=[{title:"available_peers",text:"available_peers"},{title:"available_seeds",text:"available_seeds"},{title:"num_leechs",text:"num_leechs"},{title:"num_seeds",text:"num_seeds"},{title:"ratio",text:"ratio"},{title:"ratio_limit",text:"ratio_limit"},{title:"availability",text:"availability"},{title:"eta",text:"eta"},{title:"category",text:"category"},{title:"state",text:"stateString"},{title:"trackers_count",text:"trackers_count"},{title:"priority",text:"priority"}],z=[{title:"content_path",text:"content_path"},{title:"download_path",text:"download_path"},{title:"hash",text:"hash"},{title:"infohash_v1",text:"infohash_v1"},{title:"infohash_v2",text:"infohash_v2"},{title:"magnet",text:"magnet"},{title:"name",text:"name"},{title:"save_path",text:"savePath"},{title:"tracker",text:"tracker"}];return(v,_)=>(u(),F(Q,null,{default:t(()=>[e(W,null,{default:t(()=>[e(dt,null,{default:t(()=>[e(X,{title:v.$t("torrentDetail.info.datetime_values")},{default:t(()=>[e(Z,null,{default:t(()=>[e(I,null,{default:t(()=>[(u(),$(U,null,R(T,f=>e(q,null,Ft({title:t(()=>[y(l(v.$t(`torrent.properties.${f.title}`)),1)]),_:2},[v.torrent[f.text]>0?{name:"text",fn:t(()=>[y(l(o(He)(v.torrent[f.text]*1e3).format(o(m).dateFormat??"DD/MM/YYYY, HH:mm:ss")),1)]),key:"0"}:{name:"text",fn:t(()=>[y(l(v.$t("common.NA")),1)]),key:"1"}]),1024)),64))]),_:1})]),_:1})]),_:1},8,["title"]),e(X,{title:v.$t("torrentDetail.info.duration_values")},{default:t(()=>[e(Z,null,{default:t(()=>[e(I,null,{default:t(()=>[(u(),$(U,null,R(P,f=>e(q,null,{title:t(()=>[y(l(v.$t(`torrent.properties.${f.title}`)),1)]),text:t(()=>[y(l(o(He).duration(v.torrent[f.text],"s").humanize()),1)]),_:2},1024)),64))]),_:1})]),_:1})]),_:1},8,["title"]),e(X,{title:v.$t("torrentDetail.info.boolean_values")},{default:t(()=>[e(Z,null,{default:t(()=>[e(I,null,{default:t(()=>[e(q,null,{title:t(()=>[e(pe,{modelValue:h.value,"onUpdate:modelValue":_[0]||(_[0]=f=>h.value=f),"hide-details":"",density:"compact",label:v.$t("torrent.properties.auto_tmm")},null,8,["modelValue","label"])]),_:1}),e(q,null,{title:t(()=>[e(pe,{modelValue:p.value,"onUpdate:modelValue":_[1]||(_[1]=f=>p.value=f),"hide-details":"",density:"compact",label:v.$t("torrent.properties.f_l_piece_prio")},null,8,["modelValue","label"])]),_:1}),e(q,null,{title:t(()=>[e(pe,{modelValue:s.value,"onUpdate:modelValue":_[2]||(_[2]=f=>s.value=f),"hide-details":"",density:"compact",label:v.$t("torrent.properties.forced")},null,8,["modelValue","label"])]),_:1}),e(q,null,{title:t(()=>[e(pe,{modelValue:i.value,"onUpdate:modelValue":_[3]||(_[3]=f=>i.value=f),"hide-details":"",density:"compact",label:v.$t("torrent.properties.seq_dl")},null,8,["modelValue","label"])]),_:1}),e(q,null,{title:t(()=>[e(pe,{modelValue:b.value,"onUpdate:modelValue":_[4]||(_[4]=f=>b.value=f),"hide-details":"",density:"compact",label:v.$t("torrent.properties.super_seeding")},null,8,["modelValue","label"])]),_:1})]),_:1})]),_:1})]),_:1},8,["title"]),e(X,{title:v.$t("torrentDetail.info.data_values")},{default:t(()=>[e(Z,null,{default:t(()=>[e(I,null,{default:t(()=>[(u(),$(U,null,R(g,f=>e(q,null,{title:t(()=>[y(l(v.$t(`torrent.properties.${f.title}`)),1)]),text:t(()=>[y(l(o(J)(v.torrent[f.text],o(m).useBinarySize)),1)]),_:2},1024)),64))]),_:1})]),_:1})]),_:1},8,["title"]),e(X,{title:v.$t("torrentDetail.info.speed_values")},{default:t(()=>[e(Z,null,{default:t(()=>[e(I,null,{default:t(()=>[(u(),$(U,null,R(N,f=>e(q,null,{title:t(()=>[y(l(v.$t(`torrent.properties.${f.title}`)),1)]),text:t(()=>[y(l(o(ee)(v.torrent[f.text],o(m).useBitSpeed)),1)]),_:2},1024)),64))]),_:1})]),_:1})]),_:1},8,["title"]),e(X,{title:v.$t("torrentDetail.info.text_values")},{default:t(()=>[e(Z,null,{default:t(()=>[e(I,null,{default:t(()=>[(u(),$(U,null,R(O,f=>e(q,null,{title:t(()=>[y(l(v.$t(`torrent.properties.${f.title}`)),1)]),text:t(()=>[y(l(v.torrent[f.text]),1)]),_:2},1024)),64))]),_:1})]),_:1})]),_:1},8,["title"]),e(X,{title:v.$t("torrentDetail.info.long_text_values")},{default:t(()=>[e(Z,null,{default:t(()=>[e(Q,null,{default:t(()=>[(u(),$(U,null,R(z,f=>e(W,{title:v.$t(`torrent.properties.${f.title}`)},{default:t(()=>[e(Ne,null,{default:t(()=>[y(l(v.torrent[f.text]),1)]),_:2},1024)]),_:2},1032,["title"])),64)),e(W,{title:v.$t("torrent.properties.tags")},{default:t(()=>[v.torrent.tags?.length?(u(),$("div",qt,[(u(!0),$(U,null,R(v.torrent.tags,f=>(u(),F(de,{variant:"flat",color:"tag"},{default:t(()=>[y(l(f),1)]),_:2},1024))),256))])):(u(),F(Ne,{key:1},{default:t(()=>[y(l(v.$t("torrent.properties.empty_tags")),1)]),_:1}))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["title"])]),_:1})]),_:1})]),_:1}))}});const Jt=Ce(Yt,[["__scopeId","data-v-bb1329d2"]]),Qt=["href"],Xt={key:1},Zt={class:"my-1"},el={class:"mr-2"},tl={key:0},ll={key:2},al={key:0},ol={key:1},nl={key:2},rl={key:3},il={key:4},sl={key:0},ul=j({__name:"Overview",props:{torrent:{},isActive:{type:Boolean}},setup(w){const a=w,{t:d}=ne(),r=At(),m=Ue(),h=oe(),p=Fe(),s=he(),i=V(),b=V(""),T=V(0),P=V([]),g=V(0),N=V(0),O=V(""),z=V(0),v=V(0),_=V(0),f=V(0),L=E(()=>`torrent-${a.torrent.state}`),M=E(()=>`${parseInt(ct(z.value,!0))} ${mt(z.value,!0)}`),k=E(()=>a.torrent.state===ft.META_DL),D=E(()=>!k.value&&_.value>0&&_.value<s.canvasRenderThreshold),C=E(()=>D.value&&_.value<s.canvasRefreshThreshold);async function we(){const n=await p.getTorrentProperties(a.torrent.hash);b.value=n.comment,T.value=n.dl_speed_avg,_.value=n.pieces_num,v.value=n.pieces_have,z.value=n.piece_size,f.value=n.up_speed_avg}async function H(){P.value=await h.fetchFiles(a.torrent.hash),N.value=P.value.length;const n=P.value.filter(G=>G.priority!==K.DO_NOT_DOWNLOAD);g.value=n.length,g.value===1&&(O.value=n[0].name)}async function Ee(){if(!i.value)return;const n=await h.fetchPieceState(a.torrent.hash);i.value.width=n.length||-1;const G=i.value.getContext("2d");G.clearRect(0,0,i.value.width,i.value.height);let B="",re=1;for(let ie=0;ie<n.length;++ie){const Pe=n[ie];let fe="";if(Pe===$e.DOWNLOADING)fe=r.current.value.colors["torrent-downloading"];else if(Pe===$e.DOWNLOADED)fe=r.current.value.colors["torrent-pausedUP"];else if(Pe===$e.MISSING){const ot=P.value.filter(ve=>ve.priority!==K.DO_NOT_DOWNLOAD).map(ve=>ve.piece_range);for(const[ve,nt]of ot)if(ie>ve&&ie<nt){fe=r.current.value.colors["torrent-pausedDL"];break}}if(fe===B){++re;continue}B!==""&&(G.fillStyle=B,G.fillRect(ie-re,0,re,i.value.height)),re=1,B=fe}B!==""&&(G.fillStyle=B,G.fillRect(n.length-re,0,re,i.value.height))}async function tt(){await navigator.clipboard.writeText(a.torrent.hash)}function De(n){m.createDialog(Pt,{hashes:[a.torrent.hash],mode:n})}function We(){m.createDialog(et,{hash:a.torrent.hash,isFolder:!1,oldName:O.value})}const{resume:lt,pause:at}=Je(async()=>{await H(),C.value&&await Ee()},s.fileContentInterval,{immediate:!0,immediateCallback:!0});me(()=>a.isActive,n=>{n?lt():at()}),me(()=>a.torrent,async()=>{await we()});function Me(n){if(m.hasActiveDialog)return!1;if(n.key==="d")return n.preventDefault(),De("dl"),!0;if(n.key==="s")return n.preventDefault(),De("save"),!0;if(n.key==="f"&&g.value===1)return n.preventDefault(),We(),!0}return Le(()=>{document.addEventListener("keydown",Me)}),Re(()=>{document.removeEventListener("keydown",Me)}),(n,G)=>n.torrent?(u(),F(ae,{key:0},{default:t(()=>[e(_e,{class:"text-wrap"},{default:t(()=>[y(l(n.torrent.name),1)]),_:1}),e(_t,null,{default:t(()=>[c("div",null,[(u(!0),$(U,null,R(o(pt)(b.value),B=>(u(),$("span",null,[o(vt)(B)?(u(),$("a",{key:0,target:"_blank",href:B},l(B),9,Qt)):(u(),$("span",Xt,l(B),1))]))),256))]),c("div",Zt,[c("span",el,l(n.torrent.hash),1),e(A,{variant:"outlined",rounded:"",onClick:tt},{default:t(()=>[y(l(n.$t("torrentDetail.overview.copy_hash")),1)]),_:1})])]),_:1}),e(ce,null,{default:t(()=>[e(I,null,{default:t(()=>[e(S,{cols:"12",md:"6"},{default:t(()=>[e(I,null,{default:t(()=>[e(S,{cols:"4"},{default:t(()=>[e(gt,{color:L.value,indeterminate:k.value,size:100,"model-value":n.torrent?.progress*100,width:15},{default:t(()=>[k.value?(u(),$("span",tl,l(n.$t("torrentDetail.overview.fetchingMetadata")),1)):n.torrent.progress===1?(u(),F(le,{key:1,icon:"mdi-check",size:"x-large"})):(u(),$("span",ll,l(o(Ve)(n.torrent.progress)),1))]),_:1},8,["color","indeterminate","model-value"])]),_:1}),e(S,{cols:"8",class:"d-flex flex-column align-center justify-center"},{default:t(()=>[k.value?(u(),$("div",al,[c("span",null,l(n.$t("torrentDetail.overview.waitingForMetadata")),1)])):D.value?(u(),$("div",ol,[c("canvas",{ref_key:"canvas",ref:i,width:"0",height:"10"},null,512)])):x("",!0),!k.value&&!D.value?(u(),$("div",nl,[c("span",null,l(n.$t("torrentDetail.overview.canvasRenderDisabled")),1)])):!k.value&&!C.value?(u(),$("div",rl,[c("span",null,l(n.$t("torrentDetail.overview.canvasRefreshDisabled")),1)])):x("",!0),_.value>0?(u(),$("div",il,[c("span",null,l(o(d)("torrentDetail.overview.pieceCount",{owned:v.value,total:_.value,pieceSize:M.value})),1)])):x("",!0),c("div",null,[e(le,{icon:"mdi-arrow-down"}),y(" "+l(o(ee)(n.torrent.dlspeed,o(s).useBitSpeed))+" ",1),e(le,{icon:"mdi-arrow-up"}),y(" "+l(o(ee)(n.torrent.upspeed,o(s).useBitSpeed)),1)])]),_:1})]),_:1}),e(I,null,{default:t(()=>[e(S,{cols:"6"},{default:t(()=>[c("div",null,l(n.$t("torrent.properties.download_path"))+":",1),c("div",null,l(n.torrent.download_path),1),e(A,{icon:"mdi-pencil",color:"accent",size:"x-small",onClick:G[0]||(G[0]=B=>De("dl"))})]),_:1}),e(S,{cols:"6"},{default:t(()=>[c("div",null,l(n.$t("torrentDetail.overview.fileCount"))+":",1),c("div",null,l(g.value)+" / "+l(N.value),1),g.value===1?(u(),$("div",sl,l(O.value),1)):x("",!0),g.value===1?(u(),F(A,{key:1,icon:"mdi-pencil",color:"accent",size:"x-small",onClick:We})):x("",!0)]),_:1})]),_:1}),e(I,null,{default:t(()=>[e(S,{cols:"6"},{default:t(()=>[c("div",null,l(n.$t("torrent.properties.save_path"))+":",1),c("div",null,l(n.torrent.savePath),1),e(A,{icon:"mdi-pencil",color:"accent",size:"x-small",onClick:G[1]||(G[1]=B=>De("save"))})]),_:1}),e(S,{cols:"6"},{default:t(()=>[c("div",null,l(n.$t("torrent.properties.content_path"))+":",1),c("div",null,l(n.torrent.content_path),1)]),_:1})]),_:1})]),_:1}),e(S,{cols:"12",md:"6"},{default:t(()=>[e(I,null,{default:t(()=>[e(S,{cols:"6"},{default:t(()=>[c("div",null,l(n.$t("torrent.properties.state"))+":",1),e(de,{variant:"flat",color:L.value},{default:t(()=>[y(l(n.$t(`torrent.state.${n.torrent.state}`)),1)]),_:1},8,["color"])]),_:1}),e(S,{cols:"6"},{default:t(()=>[c("div",null,l(n.$t("torrent.properties.category"))+":",1),e(de,{variant:"flat",color:"category"},{default:t(()=>[y(l(n.torrent.category.length?n.torrent.category:n.$t("navbar.side.filters.uncategorized")),1)]),_:1})]),_:1})]),_:1}),e(I,null,{default:t(()=>[e(S,{cols:"6"},{default:t(()=>[c("div",null,l(n.$t("torrent.properties.tracker"))+":",1),e(de,{variant:"flat",color:"tracker"},{default:t(()=>[y(l(n.torrent.tracker?o(yt)(n.torrent.tracker):n.$t("navbar.side.filters.untracked")),1)]),_:1})]),_:1}),e(S,{cols:"6",class:"d-flex flex-wrap chipgap"},{default:t(()=>[c("div",null,l(n.$t("torrent.properties.tags"))+":",1),n.torrent.tags?(u(!0),$(U,{key:0},R(n.torrent.tags,B=>(u(),F(de,{key:B,variant:"flat",color:"tag"},{default:t(()=>[y(l(B),1)]),_:2},1024))),128)):x("",!0),!n.torrent.tags||n.torrent.tags.length===0?(u(),F(de,{key:1,variant:"flat",color:"tag"},{default:t(()=>[y(l(n.$t("navbar.side.filters.untagged")),1)]),_:1})):x("",!0)]),_:1})]),_:1}),e(I,null,{default:t(()=>[e(S,{cols:"6"},{default:t(()=>[c("div",null,l(n.$t("torrentDetail.overview.selectedFileSize"))+":",1),c("div",null,l(o(J)(n.torrent.size,o(s).useBinarySize))+" / "+l(o(J)(n.torrent.total_size,o(s).useBinarySize)),1)]),_:1}),e(S,{cols:"6"},{default:t(()=>[c("div",null,l(n.$t("torrentDetail.overview.ratio"))+":",1),c("div",null,l(n.torrent.ratio),1)]),_:1})]),_:1}),e(I,null,{default:t(()=>[e(S,{cols:"6"},{default:t(()=>[c("div",null,l(n.$t("torrentDetail.overview.downloaded"))+":",1),c("div",null,l(o(J)(n.torrent.downloaded,o(s).useBinarySize)),1)]),_:1}),e(S,{cols:"6"},{default:t(()=>[c("div",null,l(n.$t("torrentDetail.overview.uploaded"))+":",1),c("div",null,l(o(J)(n.torrent.uploaded,o(s).useBinarySize)),1)]),_:1})]),_:1}),e(I,null,{default:t(()=>[e(S,{cols:"6"},{default:t(()=>[c("div",null,l(n.$t("torrentDetail.overview.dlSpeedAverage"))+":",1),c("div",null,l(o(ee)(T.value,o(s).useBitSpeed)),1)]),_:1}),e(S,{cols:"6"},{default:t(()=>[c("div",null,l(n.$t("torrentDetail.overview.upSpeedAverage"))+":",1),c("div",null,l(o(ee)(f.value,o(s).useBitSpeed)),1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})):x("",!0)}});const dl=Ce(ul,[["__scopeId","data-v-0d43f850"]]),cl={class:"d-flex"},ml={key:0},fl=["alt","src","title"],vl=["title"],pl={class:"text-subtitle-2 text-grey"},_l=["title"],gl={class:"d-flex flex-column"},yl={class:"text-h5"},hl=j({__name:"Peers",props:{torrent:{},isActive:{type:Boolean}},setup(w){const a=w,{t:d}=ne(),r=oe(),m=he(),h=V(!1),p=V([]),s=V(""),i=V(null),b=V(!1);async function T(){h.value=!0,p.value=Object.entries((await r.getTorrentPeers(a.torrent.hash)).peers).map(([z,v])=>({...v,host:z})),h.value=!1}async function P(){s.value.length&&(await r.addTorrentPeers(a.torrent.hash,s.value.split(`
|
||||
`)),await T(),g())}function g(){b.value=!1,s.value=""}async function N(z){await r.banPeers([z.host]),await T()}async function O(z){z??a.isActive?(await T(),i.value=setInterval(T,5e3)):(clearInterval(i.value),i.value=null)}return Se(O),Re(()=>O(!1)),me(()=>a.isActive,O),(z,v)=>(u(),F(Q,null,{default:t(()=>[(u(!0),$(U,null,R(p.value,(_,f)=>(u(),$(U,null,[f>0?(u(),F(Ie,{key:0,color:"white"})):x("",!0),e(W,null,{default:t(()=>[c("div",cl,[c("div",null,[e(ze,{class:"overflow-visible text-select"},{default:t(()=>[_.country_code?(u(),$("span",ml,[o(ht)?(u(),$("img",{key:0,alt:o(Ae)(_.country_code).char,src:o(Ae)(_.country_code).url,title:_.country,style:{"max-width":"32px"}},null,8,fl)):(u(),$("span",{key:1,title:_.country},l(o(Ae)(_.country_code).char),9,vl))])):x("",!0),c("span",null,l(_.ip),1),c("span",pl," :"+l(_.port),1)]),_:2},1024),e(Ne,{class:"d-block"},{default:t(()=>[c("div",null,[y(" Flags: "),c("span",{class:"cursor-help",title:_.flags_desc},l(_.flags),9,_l)]),c("div",null,"Progress: "+l(o(Ve)(_.progress)),1),c("div",null,[e(le,{icon:"mdi-arrow-down",color:"download"}),y(" "+l(o(ee)(_.dl_speed,o(m).useBitSpeed))+" ",1),e(le,{icon:"mdi-arrow-up",color:"upload"}),y(" "+l(o(ee)(_.up_speed,o(m).useBitSpeed)),1)]),c("div",null,l(o(J)(_.downloaded,o(m).useBinarySize))+" | "+l(o(J)(_.uploaded,o(m).useBinarySize)),1),c("div",null,"Relevance: "+l(o(Ve)(_.relevance)),1)]),_:2},1024)]),e(te),c("div",gl,[e(A,{color:"red",icon:"mdi-cancel",variant:"text",onClick:L=>N(_)},null,8,["onClick"])])])]),_:2},1024)],64))),256)),p.value.length===0?(u(),F(W,{key:0},{default:t(()=>[y(l(z.$t("torrentDetail.peers.emptyList")),1)]),_:1})):x("",!0),e(W,null,{default:t(()=>[c("div",{class:xe(["d-flex gap py-5",z.$vuetify.display.mobile?"flex-column":"justify-space-evenly"])},[e(be,{modelValue:b.value,"onUpdate:modelValue":v[1]||(v[1]=_=>b.value=_),"max-width":"750px"},{activator:t(({props:_})=>[e(A,ye(_,{variant:"flat",text:o(d)("torrentDetail.peers.addPeers.title"),color:"accent"}),null,16,["text"])]),default:t(()=>[e(ae,null,{default:t(()=>[e(_e,null,{default:t(()=>[c("span",yl,l(o(d)("torrentDetail.peers.addPeers.title")),1)]),_:1}),e(ce,null,{default:t(()=>[e(Qe,null,{default:t(()=>[e(I,null,{default:t(()=>[e(S,{cols:"12"},{default:t(()=>[e(Xe,{modelValue:s.value,"onUpdate:modelValue":v[0]||(v[0]=_=>s.value=_),label:o(d)("torrentDetail.peers.addPeers.newPeers"),placeholder:o(d)("torrentDetail.peers.addPeers.newPeersPlaceholder"),hint:o(d)("torrentDetail.peers.addPeers.newPeersHint")},null,8,["modelValue","label","placeholder","hint"])]),_:1})]),_:1})]),_:1})]),_:1}),e(Te,null,{default:t(()=>[e(te),e(A,{color:"error",onClick:g},{default:t(()=>[y(l(o(d)("common.cancel")),1)]),_:1}),e(A,{color:"accent",onClick:P},{default:t(()=>[y(l(o(d)("common.ok")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])],2)]),_:1})]),_:1}))}});const wl=Ce(hl,[["__scopeId","data-v-04aee0ca"]]),Dl=j({__name:"TagsAndCategories",props:{torrent:{},isActive:{type:Boolean}},setup(w){const a=w,d=oe(),r=Fe(),m=E(()=>d.categories.map(i=>i.name).indexOf(a.torrent.category)),h=E(()=>d.tags.filter(i=>a.torrent.tags?.includes(i)));async function p(i){a.torrent.category===i?await r.setTorrentCategory([a.torrent.hash],""):await r.setTorrentCategory([a.torrent.hash],i)}async function s(i){a.torrent.tags?.includes(i)?await r.removeTorrentTags([a.torrent.hash],[i]):await r.addTorrentTags([a.torrent.hash],[i])}return Se(async()=>{await d.fetchCategories(),await d.fetchTags()}),(i,b)=>(u(),F(ae,null,{default:t(()=>[e(ce,null,{default:t(()=>[e(I,null,{default:t(()=>[e(S,{cols:"12",md:"6"},{default:t(()=>[e(Ge,{"model-value":h.value,multiple:""},{default:t(()=>[e(Q,null,{default:t(()=>[e(Ke,null,{default:t(()=>[y(l(i.$t("torrentDetail.tagsAndCategories.tags")),1)]),_:1}),(u(!0),$(U,null,R(o(d).tags,T=>(u(),F(W,{title:T,variant:i.torrent.tags?.includes(T)?"tonal":void 0,"base-color":i.torrent.tags?.includes(T)?"accent":void 0,onClick:P=>s(T)},null,8,["title","variant","base-color","onClick"]))),256))]),_:1})]),_:1},8,["model-value"])]),_:1}),e(S,{cols:"12",md:"6"},{default:t(()=>[e(Ge,{"model-value":m.value},{default:t(()=>[e(Q,null,{default:t(()=>[e(Ke,null,{default:t(()=>[y(l(i.$t("torrentDetail.tagsAndCategories.categories")),1)]),_:1}),(u(!0),$(U,null,R(o(d).categories,T=>(u(),F(W,{title:T.name,variant:T.name===a.torrent.category?"tonal":void 0,"base-color":T.name===a.torrent.category?"accent":void 0,onClick:P=>p(T.name)},null,8,["title","variant","base-color","onClick"]))),256))]),_:1})]),_:1},8,["model-value"])]),_:1})]),_:1})]),_:1})]),_:1}))}}),$l={class:"d-flex"},kl={key:0},Tl={key:1},bl={key:2},Vl={key:3},Nl={key:0,class:"d-flex flex-column"},Fl={class:"text-h5"},Cl={class:"text-h5"},Sl=j({__name:"Trackers",props:{torrent:{},isActive:{type:Boolean}},setup(w){const a=w,{t:d}=ne(),r=oe();function m(k){switch(k){case Y.DISABLED:return d("constants.trackerStatus.disabled");case Y.NOT_YET_CONTACTED:return d("constants.trackerStatus.not_yet_contacted");case Y.WORKING:return d("constants.trackerStatus.working");case Y.UPDATING:return d("constants.trackerStatus.updating");case Y.NOT_WORKING:return d("constants.trackerStatus.not_working");default:return""}}function h(k){return typeof k=="number"?k===-1?"N/A":k.valueOf():!k||k.num_peers===-1||k?.num_seeds===-1||k?.num_leeches===-1?"N/A":d("torrentDetail.trackers.peersValue",{peers:k.num_peers,seeds:k.num_seeds,leeches:k.num_leeches})}const p=V(!1),s=V([]),i=V(""),b=V(null),T=V(!1),P=[k=>!!k||d("torrentDetail.trackers.editTracker.newUrlRequired")],g=Be({isVisible:!1,isFormValid:!1,oldUrl:"",newUrl:""});function N(k){g.isVisible=!0,g.oldUrl=k.url,g.newUrl=k.url,ge(()=>{document.getElementById("input")?.select()})}async function O(){p.value=!0,s.value=(await r.getTorrentTrackers(a.torrent.hash)).map(k=>({...k,isSelectable:k.tier!==-1})),p.value=!1}async function z(){i.value.length&&(await r.addTorrentTrackers(a.torrent.hash,i.value),await O(),v())}function v(){T.value=!1,i.value=""}async function _(){g.isFormValid&&(await r.editTorrentTracker(a.torrent.hash,g.oldUrl,g.newUrl),g.isVisible=!1,await O())}async function f(k){await r.removeTorrentTrackers(a.torrent.hash,[k.url]),await O()}async function L(){await r.reannounceTorrents([a.torrent.hash])}async function M(k){k??a.isActive?(await O(),b.value=setInterval(O,5e3)):(clearInterval(b.value),b.value=null)}return Se(M),Re(()=>M(!1)),me(()=>a.isActive,M),(k,D)=>(u(),F(Q,null,{default:t(()=>[(u(!0),$(U,null,R(s.value,(C,we)=>(u(),$(U,null,[we===3?(u(),F(Ie,{key:0,color:"white",thickness:"5"})):we>0?(u(),F(Ie,{key:1,class:"mx-5",color:"white"})):x("",!0),e(W,null,{default:t(()=>[c("div",$l,[c("div",{class:xe(`tracker-${o(Y)[C.status].toLowerCase()}`)},[e(ze,{class:"text-break text-wrap"},{default:t(()=>[y(l(C.url),1)]),_:2},1024),e(Ne,{class:"d-block"},{default:t(()=>[C.msg?(u(),$("div",kl,l(C.msg),1)):(u(),$("div",Tl,l(m(C.status)),1)),C.tier>=0?(u(),$("div",bl,l(o(d)("torrentDetail.trackers.tier",C.tier)),1)):x("",!0),C.status!==o(Y).NOT_WORKING?(u(),$("div",Vl,[c("div",null,l(h(C)),1),c("div",null,"Downloads: "+l(h(C.num_downloaded)),1)])):x("",!0)]),_:2},1024)],2),e(te),C.tier>=0?(u(),$("div",Nl,[e(be,{modelValue:g.isVisible,"onUpdate:modelValue":D[4]||(D[4]=H=>g.isVisible=H),"max-width":"750px"},{activator:t(({props:H})=>[e(A,ye(H,{icon:"mdi-pencil",variant:"text",onClick:Ee=>N(C)}),null,16,["onClick"])]),default:t(()=>[e(ae,null,{default:t(()=>[e(_e,null,{default:t(()=>[c("span",Fl,l(o(d)("torrentDetail.trackers.editTracker.title")),1)]),_:1}),e(ce,null,{default:t(()=>[e(o(Ye),{modelValue:g.isFormValid,"onUpdate:modelValue":D[1]||(D[1]=H=>g.isFormValid=H),onSubmit:D[2]||(D[2]=Oe(()=>{},["prevent"]))},{default:t(()=>[e(o(ke),{"model-value":g.oldUrl,disabled:"",label:k.$t("torrentDetail.trackers.editTracker.oldUrl")},null,8,["model-value","label"]),e(o(ke),{modelValue:g.newUrl,"onUpdate:modelValue":D[0]||(D[0]=H=>g.newUrl=H),id:"input",rules:P,label:k.$t("torrentDetail.trackers.editTracker.newUrl"),autofocus:"",onKeydown:Ze(_,["enter"])},null,8,["modelValue","label"])]),_:1},8,["modelValue"])]),_:1}),e(Te,null,{default:t(()=>[e(te),e(A,{color:"error",disabled:!g.isFormValid,onClick:D[3]||(D[3]=H=>g.isVisible=!1)},{default:t(()=>[y(l(o(d)("common.cancel")),1)]),_:1},8,["disabled"]),e(A,{color:"accent",onClick:_},{default:t(()=>[y(l(o(d)("common.ok")),1)]),_:1})]),_:1})]),_:1})]),_:2},1032,["modelValue"]),e(A,{color:"red",icon:"mdi-delete",variant:"text",onClick:H=>f(C)},null,8,["onClick"])])):x("",!0)])]),_:2},1024)],64))),256)),e(W,null,{default:t(()=>[c("div",{class:xe(["d-flex gap py-5",k.$vuetify.display.mobile?"flex-column":"justify-space-evenly"])},[e(be,{modelValue:T.value,"onUpdate:modelValue":D[6]||(D[6]=C=>T.value=C),"max-width":"750px"},{activator:t(({props:C})=>[e(A,ye(C,{variant:"flat",text:o(d)("torrentDetail.trackers.addTrackers.title"),color:"accent"}),null,16,["text"])]),default:t(()=>[e(ae,null,{default:t(()=>[e(_e,null,{default:t(()=>[c("span",Cl,l(o(d)("torrentDetail.trackers.addTrackers.title")),1)]),_:1}),e(ce,null,{default:t(()=>[e(Qe,null,{default:t(()=>[e(I,null,{default:t(()=>[e(S,{cols:"12"},{default:t(()=>[e(Xe,{modelValue:i.value,"onUpdate:modelValue":D[5]||(D[5]=C=>i.value=C),label:o(d)("torrentDetail.trackers.addTrackers.newTrackers"),hint:o(d)("torrentDetail.trackers.addTrackers.newTrackersHint")},null,8,["modelValue","label","hint"])]),_:1})]),_:1})]),_:1})]),_:1}),e(Te,null,{default:t(()=>[e(te),e(A,{color:"error",onClick:v},{default:t(()=>[y(l(o(d)("common.cancel")),1)]),_:1}),e(A,{color:"accent",onClick:z},{default:t(()=>[y(l(o(d)("common.ok")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),e(A,{variant:"flat",disabled:s.value.length===3,text:o(d)("torrentDetail.trackers.reannounce"),color:"primary",onClick:L},null,8,["disabled","text"])],2)]),_:1})]),_:1}))}});const Ol=Ce(Sl,[["__scopeId","data-v-ed947913"]]),Pl={class:"pa-3"},Al={style:{"font-size":"1.6em !important"},class:"subtitle-1 ml-2"},Il={class:"d-flex justify-end"},El=j({__name:"TorrentDetail",setup(w){const a=Ct(),d=St(),{t:r}=ne(),m=Ue(),h=Fe(),p=V("overview"),s=E(()=>a.params.hash),i=E(()=>h.getTorrentByHash(s.value)),b=()=>{d.push({name:"dashboard"})};function T(P){if(m.hasActiveDialog)return!1;if(P.key==="Delete")return m.createDialog(Dt,{hashes:[s.value]}),P.preventDefault(),!0;P.key==="Escape"&&b()}return Le(()=>{document.addEventListener("keydown",T)}),Ot(()=>{document.removeEventListener("keydown",T)}),(P,g)=>(u(),$("div",Pl,[e(I,{"no-gutters":"",align:"center",justify:"center"},{default:t(()=>[e(S,null,{default:t(()=>[c("h1",Al,l(o(r)("torrentDetail.title")),1)]),_:1}),e(S,null,{default:t(()=>[c("div",Il,[e(A,{icon:"mdi-close",variant:"plain",onClick:b})])]),_:1})]),_:1}),e(I,{class:"ma-0 pa-0"},{default:t(()=>[e($t,{modelValue:p.value,"onUpdate:modelValue":g[0]||(g[0]=N=>p.value=N),"bg-color":"primary",grow:"","show-arrows":""},{default:t(()=>[e(se,{value:"overview"},{default:t(()=>[y(l(o(r)("torrentDetail.tabs.overview")),1)]),_:1}),e(se,{value:"info"},{default:t(()=>[y(l(o(r)("torrentDetail.tabs.info")),1)]),_:1}),e(se,{value:"trackers"},{default:t(()=>[y(l(o(r)("torrentDetail.tabs.trackers")),1)]),_:1}),e(se,{value:"peers"},{default:t(()=>[y(l(o(r)("torrentDetail.tabs.peers")),1)]),_:1}),e(se,{value:"content"},{default:t(()=>[y(l(o(r)("torrentDetail.tabs.content")),1)]),_:1}),e(se,{value:"tagsAndCategories"},{default:t(()=>[y(l(o(r)("torrentDetail.tabs.tagsAndCategories")),1)]),_:1})]),_:1},8,["modelValue"])]),_:1}),i.value?(u(),F(wt,{key:0,modelValue:p.value,"onUpdate:modelValue":g[1]||(g[1]=N=>p.value=N),touch:!1},{default:t(()=>[e(ue,{value:"overview"},{default:t(()=>[e(dl,{torrent:i.value,"is-active":p.value==="overview"},null,8,["torrent","is-active"])]),_:1}),e(ue,{value:"info"},{default:t(()=>[e(Jt,{torrent:i.value,"is-active":p.value==="info"},null,8,["torrent","is-active"])]),_:1}),e(ue,{value:"trackers"},{default:t(()=>[e(Ol,{torrent:i.value,"is-active":p.value==="trackers"},null,8,["torrent","is-active"])]),_:1}),e(ue,{value:"peers"},{default:t(()=>[e(wl,{torrent:i.value,"is-active":p.value==="peers"},null,8,["torrent","is-active"])]),_:1}),e(ue,{value:"content"},{default:t(()=>[e(Kt,{torrent:i.value,"is-active":p.value==="content"},null,8,["torrent","is-active"])]),_:1}),e(ue,{value:"tagsAndCategories"},{default:t(()=>[e(Dl,{torrent:i.value,"is-active":p.value==="tagsAndCategories"},null,8,["torrent","is-active"])]),_:1})]),_:1},8,["modelValue"])):x("",!0)]))}});export{El as default};
|
||||
1
qbit/vuetorrent/public/assets/TorrentDetail-cad7bace.css
Normal file
1
qbit/vuetorrent/public/assets/TorrentDetail-cad7bace.css
Normal file
@@ -0,0 +1 @@
|
||||
.gap[data-v-bb1329d2]{gap:8px}canvas[data-v-0d43f850]{height:100%;width:100%}.chipgap[data-v-0d43f850]{gap:4px}.gap[data-v-04aee0ca]{gap:8px}.cursor-help[data-v-04aee0ca]{cursor:help}.gap[data-v-ed947913]{gap:8px}.v-theme--darkTheme .tracker-disabled[data-v-ed947913]{color:#c6c6c6}.v-theme--darkTheme .tracker-not_yet_contacted[data-v-ed947913]{color:orange}.v-theme--darkTheme .tracker-working[data-v-ed947913]{color:#90ee90}.v-theme--darkTheme .tracker-not_working[data-v-ed947913]{color:#f08080}.v-theme--darkTheme .tracker-updating[data-v-ed947913]{color:#add8e6}.v-theme--lightTheme .tracker-disabled[data-v-ed947913]{color:gray}.v-theme--lightTheme .tracker-not_yet_contacted[data-v-ed947913]{color:orange}.v-theme--lightTheme .tracker-working[data-v-ed947913]{color:green}.v-theme--lightTheme .tracker-not_working[data-v-ed947913]{color:red}.v-theme--lightTheme .tracker-updating[data-v-ed947913]{color:#1e90ff}
|
||||
1
qbit/vuetorrent/public/assets/dayjs-f7aba705.js
Normal file
1
qbit/vuetorrent/public/assets/dayjs-f7aba705.js
Normal file
@@ -0,0 +1 @@
|
||||
import{g as J,K as L,d as j,r as Q,c as K,M as X,a1 as E,a2 as A,a3 as x,m as k,W as B,Z as F,u as _,Y as tt,a8 as et,ao as st,D as nt,at as R,ad as U}from"./vue-d2584a6d.js";import{u as rt,n as ot,e as it,f as at,g as ut,h as dt,i as lt,aC as ht,aD as mt,j as ct,a as ft,k as I,l as $t,m as vt}from"./index-135ae4c1.js";import"./faker-c43f92d4.js";import{d as W}from"./dayjs.min-1969f9c6.js";const kt=J({__name:"MoveTorrentDialog",props:{guid:{},hashes:{},mode:{}},setup(H){const D=H,{isOpened:h}=rt(D.guid),{t:a}=L(),g=ot(),f=it(),b=j(),V=j(),S=j(!1),r=Q({newPath:""}),m=[o=>!!o||a("dialogs.moveTorrent.required")],M=K(()=>D.hashes.map(f.getTorrentByHash)),$=K(()=>{switch(D.mode){case"dl":return M.value[0]?.download_path;case"save":return M.value[0]?.savePath}});async function w(){await b.value?.validate(),S.value&&(await g.toggleAutoTmm(D.hashes,!1),await f.moveTorrents(D.mode,D.hashes,r.newPath),V.value?.saveValueToHistory(),y())}const y=()=>{h.value=!1};return X(()=>{r.newPath=$.value||""}),(o,l)=>(E(),A(vt,{modelValue:_(h),"onUpdate:modelValue":l[3]||(l[3]=d=>nt(h)?h.value=d:null)},{default:x(()=>[k($t,null,{default:x(()=>[k(at,null,{default:x(()=>[B(F(o.$t(`dialogs.moveTorrent.${o.mode}.title`)),1)]),_:1}),k(ut,null,{default:x(()=>[k(_(dt),{modelValue:S.value,"onUpdate:modelValue":l[1]||(l[1]=d=>S.value=d),ref_key:"form",ref:b,onSubmit:l[2]||(l[2]=tt(()=>{},["prevent"]))},{default:x(()=>[$.value?(E(),A(lt,{key:0,"model-value":$.value,disabled:"",label:o.$t("dialogs.moveTorrent.oldPath")},null,8,["model-value","label"])):et("",!0),k(ht,{modelValue:r.newPath,"onUpdate:modelValue":l[0]||(l[0]=d=>r.newPath=d),historyKey:_(mt).TORRENT_PATH,ref_key:"field",ref:V,rules:m,autofocus:"",label:o.$t("dialogs.moveTorrent.newPath"),onKeydown:st(w,["enter"])},null,8,["modelValue","historyKey","label"])]),_:1},8,["modelValue"])]),_:1}),k(ct,null,{default:x(()=>[k(ft),k(I,{color:"error",onClick:y},{default:x(()=>[B(F(o.$t("common.cancel")),1)]),_:1}),k(I,{color:"accent",disabled:!S.value,onClick:w},{default:x(()=>[B(F(o.$t("common.save")),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue"]))}});var Z={exports:{}};(function(H,D){(function(h,a){H.exports=a()})(R,function(){var h,a,g=1e3,f=6e4,b=36e5,V=864e5,S=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,r=31536e6,m=2628e6,M=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,$={years:r,months:m,days:V,hours:b,minutes:f,seconds:g,milliseconds:1,weeks:6048e5},w=function(s){return s instanceof P},y=function(s,e,t){return new P(s,t,e.$l)},o=function(s){return a.p(s)+"s"},l=function(s){return s<0},d=function(s){return l(s)?Math.ceil(s):Math.floor(s)},C=function(s){return Math.abs(s)},Y=function(s,e){return s?l(s)?{negative:!0,format:""+C(s)+e}:{negative:!1,format:""+s+e}:{negative:!1,format:""}},P=function(){function s(t,n,u){var i=this;if(this.$d={},this.$l=u,t===void 0&&(this.$ms=0,this.parseFromMilliseconds()),n)return y(t*$[o(n)],this);if(typeof t=="number")return this.$ms=t,this.parseFromMilliseconds(),this;if(typeof t=="object")return Object.keys(t).forEach(function(T){i.$d[o(T)]=t[T]}),this.calMilliseconds(),this;if(typeof t=="string"){var c=t.match(M);if(c){var v=c.slice(2).map(function(T){return T!=null?Number(T):0});return this.$d.years=v[0],this.$d.months=v[1],this.$d.weeks=v[2],this.$d.days=v[3],this.$d.hours=v[4],this.$d.minutes=v[5],this.$d.seconds=v[6],this.calMilliseconds(),this}}return this}var e=s.prototype;return e.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce(function(n,u){return n+(t.$d[u]||0)*$[u]},0)},e.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=d(t/r),t%=r,this.$d.months=d(t/m),t%=m,this.$d.days=d(t/V),t%=V,this.$d.hours=d(t/b),t%=b,this.$d.minutes=d(t/f),t%=f,this.$d.seconds=d(t/g),t%=g,this.$d.milliseconds=t},e.toISOString=function(){var t=Y(this.$d.years,"Y"),n=Y(this.$d.months,"M"),u=+this.$d.days||0;this.$d.weeks&&(u+=7*this.$d.weeks);var i=Y(u,"D"),c=Y(this.$d.hours,"H"),v=Y(this.$d.minutes,"M"),T=this.$d.seconds||0;this.$d.milliseconds&&(T+=this.$d.milliseconds/1e3,T=Math.round(1e3*T)/1e3);var N=Y(T,"S"),z=t.negative||n.negative||i.negative||c.negative||v.negative||N.negative,G=c.format||v.format||N.format?"T":"",O=(z?"-":"")+"P"+t.format+n.format+i.format+G+c.format+v.format+N.format;return O==="P"||O==="-P"?"P0D":O},e.toJSON=function(){return this.toISOString()},e.format=function(t){var n=t||"YYYY-MM-DDTHH:mm:ss",u={Y:this.$d.years,YY:a.s(this.$d.years,2,"0"),YYYY:a.s(this.$d.years,4,"0"),M:this.$d.months,MM:a.s(this.$d.months,2,"0"),D:this.$d.days,DD:a.s(this.$d.days,2,"0"),H:this.$d.hours,HH:a.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:a.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:a.s(this.$d.seconds,2,"0"),SSS:a.s(this.$d.milliseconds,3,"0")};return n.replace(S,function(i,c){return c||String(u[i])})},e.as=function(t){return this.$ms/$[o(t)]},e.get=function(t){var n=this.$ms,u=o(t);return u==="milliseconds"?n%=1e3:n=u==="weeks"?d(n/$[u]):this.$d[u],n||0},e.add=function(t,n,u){var i;return i=n?t*$[o(n)]:w(t)?t.$ms:y(t,this).$ms,y(this.$ms+i*(u?-1:1),this)},e.subtract=function(t,n){return this.add(t,n,!0)},e.locale=function(t){var n=this.clone();return n.$l=t,n},e.clone=function(){return y(this.$ms,this)},e.humanize=function(t){return h().add(this.$ms,"ms").locale(this.$l).fromNow(!t)},e.valueOf=function(){return this.asMilliseconds()},e.milliseconds=function(){return this.get("milliseconds")},e.asMilliseconds=function(){return this.as("milliseconds")},e.seconds=function(){return this.get("seconds")},e.asSeconds=function(){return this.as("seconds")},e.minutes=function(){return this.get("minutes")},e.asMinutes=function(){return this.as("minutes")},e.hours=function(){return this.get("hours")},e.asHours=function(){return this.as("hours")},e.days=function(){return this.get("days")},e.asDays=function(){return this.as("days")},e.weeks=function(){return this.get("weeks")},e.asWeeks=function(){return this.as("weeks")},e.months=function(){return this.get("months")},e.asMonths=function(){return this.as("months")},e.years=function(){return this.get("years")},e.asYears=function(){return this.as("years")},s}(),p=function(s,e,t){return s.add(e.years()*t,"y").add(e.months()*t,"M").add(e.days()*t,"d").add(e.hours()*t,"h").add(e.minutes()*t,"m").add(e.seconds()*t,"s").add(e.milliseconds()*t,"ms")};return function(s,e,t){h=t,a=t().$utils(),t.duration=function(i,c){var v=t.locale();return y(i,{$l:v},c)},t.isDuration=w;var n=e.prototype.add,u=e.prototype.subtract;e.prototype.add=function(i,c){return w(i)?p(this,i,1):n.bind(this)(i,c)},e.prototype.subtract=function(i,c){return w(i)?p(this,i,-1):u.bind(this)(i,c)}}})})(Z);var yt=Z.exports;const pt=U(yt);var q={exports:{}};(function(H,D){(function(h,a){H.exports=a()})(R,function(){return function(h,a,g){h=h||{};var f=a.prototype,b={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function V(r,m,M,$){return f.fromToBase(r,m,M,$)}g.en.relativeTime=b,f.fromToBase=function(r,m,M,$,w){for(var y,o,l,d=M.$locale().relativeTime||b,C=h.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],Y=C.length,P=0;P<Y;P+=1){var p=C[P];p.d&&(y=$?g(r).diff(M,p.d,!0):M.diff(r,p.d,!0));var s=(h.rounding||Math.round)(Math.abs(y));if(l=y>0,s<=p.r||!p.r){s<=1&&P>0&&(p=C[P-1]);var e=d[p.l];w&&(s=w(""+s)),o=typeof e=="string"?e.replace("%d",s):e(s,m,p.l,l);break}}if(m)return o;var t=l?d.future:d.past;return typeof t=="function"?t(o):t.replace("%s",o)},f.to=function(r,m){return V(r,m,this,!0)},f.from=function(r,m){return V(r,m,this)};var S=function(r){return r.$u?g.utc():g()};f.toNow=function(r){return this.to(S(this),r)},f.fromNow=function(r){return this.from(S(this),r)}}})})(q);var gt=q.exports;const Mt=U(gt),wt={thresholds:[{l:"s",r:1},{l:"m",r:1},{l:"mm",r:59,d:"minute"},{l:"h",r:1},{l:"hh",r:23,d:"hour"},{l:"d",r:1},{l:"dd",r:29,d:"day"},{l:"M",r:1},{l:"MM",r:11,d:"month"},{l:"y",r:1},{l:"yy",d:"year"}],rounding:Math.floor};W.extend(pt);W.extend(Mt,wt);export{kt as _};
|
||||
1
qbit/vuetorrent/public/assets/dayjs.min-1969f9c6.js
Normal file
1
qbit/vuetorrent/public/assets/dayjs.min-1969f9c6.js
Normal file
@@ -0,0 +1 @@
|
||||
import{at as Q,ad as K}from"./vue-d2584a6d.js";var E={exports:{}};(function(V,X){(function(W,k){V.exports=k()})(Q,function(){var W=1e3,k=6e4,N=36e5,A="millisecond",S="second",w="minute",O="hour",M="day",T="week",m="month",U="quarter",v="year",_="date",J="Invalid Date",q=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,B=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,G={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(s){var n=["th","st","nd","rd"],t=s%100;return"["+s+(n[(t-20)%10]||n[t]||n[0])+"]"}},I=function(s,n,t){var r=String(s);return!r||r.length>=n?s:""+Array(n+1-r.length).join(t)+s},P={s:I,z:function(s){var n=-s.utcOffset(),t=Math.abs(n),r=Math.floor(t/60),e=t%60;return(n<=0?"+":"-")+I(r,2,"0")+":"+I(e,2,"0")},m:function s(n,t){if(n.date()<t.date())return-s(t,n);var r=12*(t.year()-n.year())+(t.month()-n.month()),e=n.clone().add(r,m),i=t-e<0,u=n.clone().add(r+(i?-1:1),m);return+(-(r+(t-e)/(i?e-u:u-e))||0)},a:function(s){return s<0?Math.ceil(s)||0:Math.floor(s)},p:function(s){return{M:m,y:v,w:T,d:M,D:_,h:O,m:w,s:S,ms:A,Q:U}[s]||String(s||"").toLowerCase().replace(/s$/,"")},u:function(s){return s===void 0}},x="en",D={};D[x]=G;var Z="$isDayjsObject",F=function(s){return s instanceof C||!(!s||!s[Z])},j=function s(n,t,r){var e;if(!n)return x;if(typeof n=="string"){var i=n.toLowerCase();D[i]&&(e=i),t&&(D[i]=t,e=i);var u=n.split("-");if(!e&&u.length>1)return s(u[0])}else{var o=n.name;D[o]=n,e=o}return!r&&e&&(x=e),e||!r&&x},f=function(s,n){if(F(s))return s.clone();var t=typeof n=="object"?n:{};return t.date=s,t.args=arguments,new C(t)},a=P;a.l=j,a.i=F,a.w=function(s,n){return f(s,{locale:n.$L,utc:n.$u,x:n.$x,$offset:n.$offset})};var C=function(){function s(t){this.$L=j(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[Z]=!0}var n=s.prototype;return n.parse=function(t){this.$d=function(r){var e=r.date,i=r.utc;if(e===null)return new Date(NaN);if(a.u(e))return new Date;if(e instanceof Date)return new Date(e);if(typeof e=="string"&&!/Z$/i.test(e)){var u=e.match(q);if(u){var o=u[2]-1||0,c=(u[7]||"0").substring(0,3);return i?new Date(Date.UTC(u[1],o,u[3]||1,u[4]||0,u[5]||0,u[6]||0,c)):new Date(u[1],o,u[3]||1,u[4]||0,u[5]||0,u[6]||0,c)}}return new Date(e)}(t),this.init()},n.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},n.$utils=function(){return a},n.isValid=function(){return this.$d.toString()!==J},n.isSame=function(t,r){var e=f(t);return this.startOf(r)<=e&&e<=this.endOf(r)},n.isAfter=function(t,r){return f(t)<this.startOf(r)},n.isBefore=function(t,r){return this.endOf(r)<f(t)},n.$g=function(t,r,e){return a.u(t)?this[r]:this.set(e,t)},n.unix=function(){return Math.floor(this.valueOf()/1e3)},n.valueOf=function(){return this.$d.getTime()},n.startOf=function(t,r){var e=this,i=!!a.u(r)||r,u=a.p(t),o=function(p,$){var y=a.w(e.$u?Date.UTC(e.$y,$,p):new Date(e.$y,$,p),e);return i?y:y.endOf(M)},c=function(p,$){return a.w(e.toDate()[p].apply(e.toDate("s"),(i?[0,0,0,0]:[23,59,59,999]).slice($)),e)},h=this.$W,d=this.$M,l=this.$D,b="set"+(this.$u?"UTC":"");switch(u){case v:return i?o(1,0):o(31,11);case m:return i?o(1,d):o(0,d+1);case T:var g=this.$locale().weekStart||0,Y=(h<g?h+7:h)-g;return o(i?l-Y:l+(6-Y),d);case M:case _:return c(b+"Hours",0);case O:return c(b+"Minutes",1);case w:return c(b+"Seconds",2);case S:return c(b+"Milliseconds",3);default:return this.clone()}},n.endOf=function(t){return this.startOf(t,!1)},n.$set=function(t,r){var e,i=a.p(t),u="set"+(this.$u?"UTC":""),o=(e={},e[M]=u+"Date",e[_]=u+"Date",e[m]=u+"Month",e[v]=u+"FullYear",e[O]=u+"Hours",e[w]=u+"Minutes",e[S]=u+"Seconds",e[A]=u+"Milliseconds",e)[i],c=i===M?this.$D+(r-this.$W):r;if(i===m||i===v){var h=this.clone().set(_,1);h.$d[o](c),h.init(),this.$d=h.set(_,Math.min(this.$D,h.daysInMonth())).$d}else o&&this.$d[o](c);return this.init(),this},n.set=function(t,r){return this.clone().$set(t,r)},n.get=function(t){return this[a.p(t)]()},n.add=function(t,r){var e,i=this;t=Number(t);var u=a.p(r),o=function(d){var l=f(i);return a.w(l.date(l.date()+Math.round(d*t)),i)};if(u===m)return this.set(m,this.$M+t);if(u===v)return this.set(v,this.$y+t);if(u===M)return o(1);if(u===T)return o(7);var c=(e={},e[w]=k,e[O]=N,e[S]=W,e)[u]||1,h=this.$d.getTime()+t*c;return a.w(h,this)},n.subtract=function(t,r){return this.add(-1*t,r)},n.format=function(t){var r=this,e=this.$locale();if(!this.isValid())return e.invalidDate||J;var i=t||"YYYY-MM-DDTHH:mm:ssZ",u=a.z(this),o=this.$H,c=this.$m,h=this.$M,d=e.weekdays,l=e.months,b=e.meridiem,g=function($,y,H,L){return $&&($[y]||$(r,i))||H[y].slice(0,L)},Y=function($){return a.s(o%12||12,$,"0")},p=b||function($,y,H){var L=$<12?"AM":"PM";return H?L.toLowerCase():L};return i.replace(B,function($,y){return y||function(H){switch(H){case"YY":return String(r.$y).slice(-2);case"YYYY":return a.s(r.$y,4,"0");case"M":return h+1;case"MM":return a.s(h+1,2,"0");case"MMM":return g(e.monthsShort,h,l,3);case"MMMM":return g(l,h);case"D":return r.$D;case"DD":return a.s(r.$D,2,"0");case"d":return String(r.$W);case"dd":return g(e.weekdaysMin,r.$W,d,2);case"ddd":return g(e.weekdaysShort,r.$W,d,3);case"dddd":return d[r.$W];case"H":return String(o);case"HH":return a.s(o,2,"0");case"h":return Y(1);case"hh":return Y(2);case"a":return p(o,c,!0);case"A":return p(o,c,!1);case"m":return String(c);case"mm":return a.s(c,2,"0");case"s":return String(r.$s);case"ss":return a.s(r.$s,2,"0");case"SSS":return a.s(r.$ms,3,"0");case"Z":return u}return null}($)||u.replace(":","")})},n.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},n.diff=function(t,r,e){var i,u=this,o=a.p(r),c=f(t),h=(c.utcOffset()-this.utcOffset())*k,d=this-c,l=function(){return a.m(u,c)};switch(o){case v:i=l()/12;break;case m:i=l();break;case U:i=l()/3;break;case T:i=(d-h)/6048e5;break;case M:i=(d-h)/864e5;break;case O:i=d/N;break;case w:i=d/k;break;case S:i=d/W;break;default:i=d}return e?i:a.a(i)},n.daysInMonth=function(){return this.endOf(m).$D},n.$locale=function(){return D[this.$L]},n.locale=function(t,r){if(!t)return this.$L;var e=this.clone(),i=j(t,r,!0);return i&&(e.$L=i),e},n.clone=function(){return a.w(this.$d,this)},n.toDate=function(){return new Date(this.valueOf())},n.toJSON=function(){return this.isValid()?this.toISOString():null},n.toISOString=function(){return this.$d.toISOString()},n.toString=function(){return this.$d.toUTCString()},s}(),z=C.prototype;return f.prototype=z,[["$ms",A],["$s",S],["$m",w],["$H",O],["$W",M],["$M",m],["$y",v],["$D",_]].forEach(function(s){z[s[1]]=function(n){return this.$g(n,s[0],s[1])}}),f.extend=function(s,n){return s.$i||(s(n,C,f),s.$i=!0),f},f.locale=j,f.isDayjs=F,f.unix=function(s){return f(1e3*s)},f.en=D[x],f.Ls=D,f.p={},f})})(E);var R=E.exports;const et=K(R);export{et as d};
|
||||
15
qbit/vuetorrent/public/assets/faker-c43f92d4.js
Normal file
15
qbit/vuetorrent/public/assets/faker-c43f92d4.js
Normal file
File diff suppressed because one or more lines are too long
731
qbit/vuetorrent/public/assets/index-135ae4c1.js
Normal file
731
qbit/vuetorrent/public/assets/index-135ae4c1.js
Normal file
File diff suppressed because one or more lines are too long
5
qbit/vuetorrent/public/assets/index-6e88811a.css
Normal file
5
qbit/vuetorrent/public/assets/index-6e88811a.css
Normal file
File diff suppressed because one or more lines are too long
1
qbit/vuetorrent/public/assets/index-fd06c5c5.js
Normal file
1
qbit/vuetorrent/public/assets/index-fd06c5c5.js
Normal file
@@ -0,0 +1 @@
|
||||
import{at as g,ad as F}from"./vue-d2584a6d.js";var M="Expected a function",S=0/0,N="[object Symbol]",W=/^\s+|\s+$/g,A=/^[-+]0x[0-9a-f]+$/i,B=/^0b[01]+$/i,R=/^0o[0-7]+$/i,_=parseInt,D=typeof g=="object"&&g&&g.Object===Object&&g,G=typeof self=="object"&&self&&self.Object===Object&&self,P=D||G||Function("return this")(),H=Object.prototype,U=H.toString,X=Math.max,q=Math.min,T=function(){return P.Date.now()};function z(e,t,i){var a,s,l,c,r,f,u=0,x=!1,d=!1,y=!0;if(typeof e!="function")throw new TypeError(M);t=E(t)||0,v(i)&&(x=!!i.leading,d="maxWait"in i,l=d?X(E(i.maxWait)||0,t):l,y="trailing"in i?!!i.trailing:y);function p(n){var o=a,m=s;return a=s=void 0,u=n,c=e.apply(m,o),c}function k(n){return u=n,r=setTimeout(b,t),x?p(n):c}function C(n){var o=n-f,m=n-u,h=t-o;return d?q(h,l-m):h}function I(n){var o=n-f,m=n-u;return f===void 0||o>=t||o<0||d&&m>=l}function b(){var n=T();if(I(n))return O(n);r=setTimeout(b,C(n))}function O(n){return r=void 0,y&&a?p(n):(a=s=void 0,c)}function L(){r!==void 0&&clearTimeout(r),u=0,a=f=s=r=void 0}function $(){return r===void 0?c:O(T())}function j(){var n=T(),o=I(n);if(a=arguments,s=this,f=n,o){if(r===void 0)return k(f);if(d)return r=setTimeout(b,t),p(f)}return r===void 0&&(r=setTimeout(b,t)),c}return j.cancel=L,j.flush=$,j}function v(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function J(e){return!!e&&typeof e=="object"}function K(e){return typeof e=="symbol"||J(e)&&U.call(e)==N}function E(e){if(typeof e=="number")return e;if(K(e))return S;if(v(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=v(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=e.replace(W,"");var i=B.test(e);return i||R.test(e)?_(e.slice(2),i?2:8):A.test(e)?S:+e}var Q=z;const Y=F(Q);export{Y as d};
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1
qbit/vuetorrent/public/assets/torrents-f1a47456.js
Normal file
1
qbit/vuetorrent/public/assets/torrents-f1a47456.js
Normal file
@@ -0,0 +1 @@
|
||||
const t=[{name:"First torrent"},{name:"Second torrent"}];export{t as default};
|
||||
36
qbit/vuetorrent/public/assets/vue-d2584a6d.js
Normal file
36
qbit/vuetorrent/public/assets/vue-d2584a6d.js
Normal file
File diff suppressed because one or more lines are too long
5
qbit/vuetorrent/public/assets/vuetify-e547ef1b.js
Normal file
5
qbit/vuetorrent/public/assets/vuetify-e547ef1b.js
Normal file
@@ -0,0 +1,5 @@
|
||||
import{w as N,o as Kt,e as Zt,F as lt,i as _t,C as Xt,r as E,c as g,a as me,t as ft,b as dt,u as G,d as F,f as C,p as _,s as P,g as Jt,h as qt,j as mt,k as Qt,l as en,m as T,n as tn,q as gt,v as nn,x as rn,y as on,z as sn,A as an}from"./vue-d2584a6d.js";const un={badge:"Badge",open:"Open",close:"Close",confirmEdit:{ok:"OK",cancel:"Cancel"},dataIterator:{noResultsText:"No matching records found",loadingText:"Loading items..."},dataTable:{itemsPerPageText:"Rows per page:",ariaLabel:{sortDescending:"Sorted descending.",sortAscending:"Sorted ascending.",sortNone:"Not sorted.",activateNone:"Activate to remove sorting.",activateDescending:"Activate to sort descending.",activateAscending:"Activate to sort ascending."},sortBy:"Sort by"},dataFooter:{itemsPerPageText:"Items per page:",itemsPerPageAll:"All",nextPage:"Next page",prevPage:"Previous page",firstPage:"First page",lastPage:"Last page",pageText:"{0}-{1} of {2}"},dateRangeInput:{divider:"to"},datePicker:{itemsSelected:"{0} selected",range:{title:"Select dates",header:"Enter dates"},title:"Select date",header:"Enter date",input:{placeholder:"Enter date"}},noDataText:"No data available",carousel:{prev:"Previous visual",next:"Next visual",ariaLabel:{delimiter:"Carousel slide {0} of {1}"}},calendar:{moreEvents:"{0} more"},input:{clear:"Clear {0}",prependAction:"{0} prepended action",appendAction:"{0} appended action",otp:"Please enter OTP character {0}"},fileInput:{counter:"{0} files",counterSize:"{0} files ({1} in total)"},timePicker:{am:"AM",pm:"PM"},pagination:{ariaLabel:{root:"Pagination Navigation",next:"Next page",previous:"Previous page",page:"Go to page {0}",currentPage:"Page {0}, Current page",first:"First page",last:"Last page"}},stepper:{next:"Next",prev:"Previous"},rating:{ariaLabel:{item:"Rating {0} of {1}"}},loading:"Loading...",infiniteScroll:{loadMore:"Load more",empty:"No more"}},cn={af:!1,ar:!0,bg:!1,ca:!1,ckb:!1,cs:!1,de:!1,el:!1,en:!1,es:!1,et:!1,fa:!0,fi:!1,fr:!1,hr:!1,hu:!1,he:!0,id:!1,it:!1,ja:!1,ko:!1,lv:!1,lt:!1,nl:!1,no:!1,pl:!1,pt:!1,ro:!1,ru:!1,sk:!1,sl:!1,srCyrl:!1,srLatn:!1,sv:!1,th:!1,tr:!1,az:!1,uk:!1,vi:!1,zhHans:!1,zhHant:!1};function ln(e,t){let n;function r(){n=Zt(),n.run(()=>t.length?t(()=>{n?.stop(),r()}):t())}N(e,o=>{o&&!n?r():o||(n?.stop(),n=void 0)},{immediate:!0}),Kt(()=>{n?.stop()})}const D=typeof window<"u",Jr=D&&"IntersectionObserver"in window,fn=D&&("ontouchstart"in window||window.navigator.maxTouchPoints>0),qr=D&&"EyeDropper"in window;function Re(e,t,n){dn(e,t),t.set(e,n)}function dn(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function mn(e,t,n){var r=ht(e,t,"set");return gn(e,r,n),n}function gn(e,t,n){if(t.set)t.set.call(e,n);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=n}}function I(e,t){var n=ht(e,t,"get");return hn(e,n)}function ht(e,t,n){if(!t.has(e))throw new TypeError("attempted to "+n+" private field on non-instance");return t.get(e)}function hn(e,t){return t.get?t.get.call(e):t.value}function pt(e,t,n){const r=t.length-1;if(r<0)return e===void 0?n:e;for(let o=0;o<r;o++){if(e==null)return n;e=e[t[o]]}return e==null||e[t[r]]===void 0?n:e[t[r]]}function pn(e,t){if(e===t)return!0;if(e instanceof Date&&t instanceof Date&&e.getTime()!==t.getTime()||e!==Object(e)||t!==Object(t))return!1;const n=Object.keys(e);return n.length!==Object.keys(t).length?!1:n.every(r=>pn(e[r],t[r]))}function we(e,t,n){return e==null||!t||typeof t!="string"?n:e[t]!==void 0?e[t]:(t=t.replace(/\[(\w+)\]/g,".$1"),t=t.replace(/^\./,""),pt(e,t.split("."),n))}function Qr(e,t,n){if(t===!0)return e===void 0?n:e;if(t==null||typeof t=="boolean")return n;if(e!==Object(e)){if(typeof t!="function")return n;const o=t(e,n);return typeof o>"u"?n:o}if(typeof t=="string")return we(e,t,n);if(Array.isArray(t))return pt(e,t,n);if(typeof t!="function")return n;const r=t(e,n);return typeof r>"u"?n:r}function yt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Array.from({length:e},(n,r)=>t+r)}function ne(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"px";if(!(e==null||e===""))return isNaN(+e)?String(e):isFinite(+e)?`${Number(e)}${t}`:void 0}function Le(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ne(e){if(e&&"$el"in e){const t=e.$el;return t?.nodeType===Node.TEXT_NODE?t.nextElementSibling:t}return e}const eo=Object.freeze({enter:13,tab:9,delete:46,esc:27,space:32,up:38,down:40,left:37,right:39,end:35,home:36,del:46,backspace:8,insert:45,pageup:33,pagedown:34,shift:16}),to=Object.freeze({enter:"Enter",tab:"Tab",delete:"Delete",esc:"Escape",space:"Space",up:"ArrowUp",down:"ArrowDown",left:"ArrowLeft",right:"ArrowRight",end:"End",home:"Home",del:"Delete",backspace:"Backspace",insert:"Insert",pageup:"PageUp",pagedown:"PageDown",shift:"Shift"});function no(e){return Object.keys(e)}function ve(e,t){return t.every(n=>e.hasOwnProperty(n))}function yn(e,t){const n={},r=new Set(Object.keys(e));for(const o of t)r.has(o)&&(n[o]=e[o]);return n}function Be(e,t,n){const r=Object.create(null),o=Object.create(null);for(const s in e)t.some(a=>a instanceof RegExp?a.test(s):a===s)&&!n?.some(a=>a===s)?r[s]=e[s]:o[s]=e[s];return[r,o]}function vn(e,t){const n={...e};return t.forEach(r=>delete n[r]),n}function ro(e,t){const n={};return t.forEach(r=>n[r]=e[r]),n}const vt=/^on[^a-z]/,Fe=e=>vt.test(e),bn=["onAfterscriptexecute","onAnimationcancel","onAnimationend","onAnimationiteration","onAnimationstart","onAuxclick","onBeforeinput","onBeforescriptexecute","onChange","onClick","onCompositionend","onCompositionstart","onCompositionupdate","onContextmenu","onCopy","onCut","onDblclick","onFocusin","onFocusout","onFullscreenchange","onFullscreenerror","onGesturechange","onGestureend","onGesturestart","onGotpointercapture","onInput","onKeydown","onKeypress","onKeyup","onLostpointercapture","onMousedown","onMousemove","onMouseout","onMouseover","onMouseup","onMousewheel","onPaste","onPointercancel","onPointerdown","onPointerenter","onPointerleave","onPointermove","onPointerout","onPointerover","onPointerup","onReset","onSelect","onSubmit","onTouchcancel","onTouchend","onTouchmove","onTouchstart","onTransitioncancel","onTransitionend","onTransitionrun","onTransitionstart","onWheel"],wn=["ArrowUp","ArrowDown","ArrowRight","ArrowLeft","Enter","Escape","Tab"," "];function oo(e){return e.isComposing&&wn.includes(e.key)}function so(e){const[t,n]=Be(e,[vt]),r=vn(t,bn),[o,s]=Be(n,["class","style","id",/^data-/]);return Object.assign(o,t),Object.assign(s,r),[o,s]}function ao(e){return e==null?[]:Array.isArray(e)?e:[e]}function io(e,t){let n=0;const r=function(){for(var o=arguments.length,s=new Array(o),a=0;a<o;a++)s[a]=arguments[a];clearTimeout(n),n=setTimeout(()=>e(...s),G(t))};return r.clear=()=>{clearTimeout(n)},r.immediate=e,r}function Sn(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;return Math.max(t,Math.min(n,e))}function uo(e){const t=e.toString().trim();return t.includes(".")?t.length-t.indexOf(".")-1:0}function Ve(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0";return e+n.repeat(Math.max(0,t-e.length))}function Ye(e,t){return(arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0").repeat(Math.max(0,t-e.length))+e}function Dn(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const n=[];let r=0;for(;r<e.length;)n.push(e.substr(r,t)),r+=t;return n}function co(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e3;if(e<t)return`${e} B`;const n=t===1024?["Ki","Mi","Gi"]:["k","M","G"];let r=-1;for(;Math.abs(e)>=t&&r<n.length-1;)e/=t,++r;return`${e.toFixed(1)} ${n[r]}B`}function A(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;const r={};for(const o in e)r[o]=e[o];for(const o in t){const s=e[o],a=t[o];if(Le(s)&&Le(a)){r[o]=A(s,a,n);continue}if(Array.isArray(s)&&Array.isArray(a)&&n){r[o]=n(s,a);continue}r[o]=a}return r}function xn(e){return e.map(t=>t.type===lt?xn(t.children):t).flat()}function L(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";if(L.cache.has(e))return L.cache.get(e);const t=e.replace(/[^a-z]/gi,"-").replace(/\B([A-Z])/g,"-$1").toLowerCase();return L.cache.set(e,t),t}L.cache=new Map;function ie(e,t){if(!t||typeof t!="object")return[];if(Array.isArray(t))return t.map(n=>ie(e,n)).flat(1);if(Array.isArray(t.children))return t.children.map(n=>ie(e,n)).flat(1);if(t.component){if(Object.getOwnPropertySymbols(t.component.provides).includes(e))return[t.component];if(t.component.subTree)return ie(e,t.component.subTree).flat(1)}return[]}var re=new WeakMap,W=new WeakMap;class lo{constructor(t){Re(this,re,{writable:!0,value:[]}),Re(this,W,{writable:!0,value:0}),this.size=t}push(t){I(this,re)[I(this,W)]=t,mn(this,W,(I(this,W)+1)%this.size)}values(){return I(this,re).slice(I(this,W)).concat(I(this,re).slice(0,I(this,W)))}}function fo(e){return"touches"in e?{clientX:e.touches[0].clientX,clientY:e.touches[0].clientY}:{clientX:e.clientX,clientY:e.clientY}}function mo(e){const t=E({}),n=g(e);return me(()=>{for(const r in n.value)t[r]=n.value[r]},{flush:"sync"}),ft(t)}function Se(e,t){return e.includes(t)}function bt(e){return e[2].toLowerCase()+e.slice(3)}const go=()=>[Function,Array];function ho(e,t){return t="on"+dt(t),!!(e[t]||e[`${t}Once`]||e[`${t}Capture`]||e[`${t}OnceCapture`]||e[`${t}CaptureOnce`])}function po(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];if(Array.isArray(e))for(const o of e)o(...n);else typeof e=="function"&&e(...n)}function An(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const n=["button","[href]",'input:not([type="hidden"])',"select","textarea","[tabindex]"].map(r=>`${r}${t?':not([tabindex="-1"])':""}:not([disabled])`).join(", ");return[...e.querySelectorAll(n)]}function Cn(e,t,n){let r,o=e.indexOf(document.activeElement);const s=t==="next"?1:-1;do o+=s,r=e[o];while((!r||r.offsetParent==null||!(n?.(r)??!0))&&o<e.length&&o>=0);return r}function Mn(e,t){const n=An(e);if(!t)(e===document.activeElement||!e.contains(document.activeElement))&&n[0]?.focus();else if(t==="first")n[0]?.focus();else if(t==="last")n.at(-1)?.focus();else if(typeof t=="number")n[t]?.focus();else{const r=Cn(n,t);r?r.focus():Mn(e,t==="next"?"first":"last")}}function yo(e){return e==null||typeof e=="string"&&e.trim()===""}function vo(){}function bo(e,t){if(!(D&&typeof CSS<"u"&&typeof CSS.supports<"u"&&CSS.supports(`selector(${t})`)))return null;try{return!!e&&e.matches(t)}catch{return null}}function Fn(e){return e.some(t=>_t(t)?t.type===Xt?!1:t.type!==lt||Fn(t.children):!0)?e:null}const wt=["top","bottom"],On=["start","end","left","right"];function wo(e,t){let[n,r]=e.split(" ");return r||(r=Se(wt,n)?"start":Se(On,n)?"top":"center"),{side:He(n,t),align:He(r,t)}}function He(e,t){return e==="start"?t?"right":"left":e==="end"?t?"left":"right":e}function So(e){return{side:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.side],align:e.align}}function Do(e){return{side:e.side,align:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.align]}}function xo(e){return{side:e.align,align:e.side}}function Ao(e){return Se(wt,e.side)?"y":"x"}class ue{constructor(t){let{x:n,y:r,width:o,height:s}=t;this.x=n,this.y=r,this.width=o,this.height=s}get top(){return this.y}get bottom(){return this.y+this.height}get left(){return this.x}get right(){return this.x+this.width}}function Co(e,t){return{x:{before:Math.max(0,t.left-e.left),after:Math.max(0,e.right-t.right)},y:{before:Math.max(0,t.top-e.top),after:Math.max(0,e.bottom-t.bottom)}}}function Mo(e){return Array.isArray(e)?new ue({x:e[0],y:e[1],width:0,height:0}):e.getBoundingClientRect()}function Fo(e){const t=e.getBoundingClientRect(),n=getComputedStyle(e),r=n.transform;if(r){let o,s,a,i,c;if(r.startsWith("matrix3d("))o=r.slice(9,-1).split(/, /),s=+o[0],a=+o[5],i=+o[12],c=+o[13];else if(r.startsWith("matrix("))o=r.slice(7,-1).split(/, /),s=+o[0],a=+o[3],i=+o[4],c=+o[5];else return new ue(t);const u=n.transformOrigin,f=t.x-i-(1-s)*parseFloat(u),d=t.y-c-(1-a)*parseFloat(u.slice(u.indexOf(" ")+1)),m=s?t.width/s:e.offsetWidth+1,p=a?t.height/a:e.offsetHeight+1;return new ue({x:f,y:d,width:m,height:p})}else return new ue(t)}function Oo(e,t,n){if(typeof e.animate>"u")return{finished:Promise.resolve()};let r;try{r=e.animate(t,n)}catch{return{finished:Promise.resolve()}}return typeof r.finished>"u"&&(r.finished=new Promise(o=>{r.onfinish=()=>{o(r)}})),r}const ce=new WeakMap;function Eo(e,t){Object.keys(t).forEach(n=>{if(Fe(n)){const r=bt(n),o=ce.get(e);if(t[n]==null)o?.forEach(s=>{const[a,i]=s;a===r&&(e.removeEventListener(r,i),o.delete(s))});else if(!o||![...o].some(s=>s[0]===r&&s[1]===t[n])){e.addEventListener(r,t[n]);const s=o||new Set;s.add([r,t[n]]),ce.has(e)||ce.set(e,s)}}else t[n]==null?e.removeAttribute(n):e.setAttribute(n,t[n])})}function To(e,t){Object.keys(t).forEach(n=>{if(Fe(n)){const r=bt(n),o=ce.get(e);o?.forEach(s=>{const[a,i]=s;a===r&&(e.removeEventListener(r,i),o.delete(s))})}else e.removeAttribute(n)})}const z=2.4,je=.2126729,We=.7151522,ze=.072175,En=.55,Tn=.58,kn=.57,Pn=.62,oe=.03,Ue=1.45,$n=5e-4,In=1.25,Rn=1.25,Ge=.078,Ke=12.82051282051282,se=.06,Ze=.001;function _e(e,t){const n=(e.r/255)**z,r=(e.g/255)**z,o=(e.b/255)**z,s=(t.r/255)**z,a=(t.g/255)**z,i=(t.b/255)**z;let c=n*je+r*We+o*ze,u=s*je+a*We+i*ze;if(c<=oe&&(c+=(oe-c)**Ue),u<=oe&&(u+=(oe-u)**Ue),Math.abs(u-c)<$n)return 0;let f;if(u>c){const d=(u**En-c**Tn)*In;f=d<Ze?0:d<Ge?d-d*Ke*se:d-se}else{const d=(u**Pn-c**kn)*Rn;f=d>-Ze?0:d>-Ge?d-d*Ke*se:d+se}return f*100}function ko(e){}function Po(e,t){t=Array.isArray(t)?t.slice(0,-1).map(n=>`'${n}'`).join(", ")+` or '${t.at(-1)}'`:`'${t}'`}const fe=.20689655172413793,Ln=e=>e>fe**3?Math.cbrt(e):e/(3*fe**2)+4/29,Nn=e=>e>fe?e**3:3*fe**2*(e-4/29);function St(e){const t=Ln,n=t(e[1]);return[116*n-16,500*(t(e[0]/.95047)-n),200*(n-t(e[2]/1.08883))]}function Dt(e){const t=Nn,n=(e[0]+16)/116;return[t(n+e[1]/500)*.95047,t(n),t(n-e[2]/200)*1.08883]}const Bn=[[3.2406,-1.5372,-.4986],[-.9689,1.8758,.0415],[.0557,-.204,1.057]],Vn=e=>e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055,Yn=[[.4124,.3576,.1805],[.2126,.7152,.0722],[.0193,.1192,.9505]],Hn=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function xt(e){const t=Array(3),n=Vn,r=Bn;for(let o=0;o<3;++o)t[o]=Math.round(Sn(n(r[o][0]*e[0]+r[o][1]*e[1]+r[o][2]*e[2]))*255);return{r:t[0],g:t[1],b:t[2]}}function Oe(e){let{r:t,g:n,b:r}=e;const o=[0,0,0],s=Hn,a=Yn;t=s(t/255),n=s(n/255),r=s(r/255);for(let i=0;i<3;++i)o[i]=a[i][0]*t+a[i][1]*n+a[i][2]*r;return o}function jn(e){return!!e&&/^(#|var\(--|(rgb|hsl)a?\()/.test(e)}function $o(e){return jn(e)&&!/^((rgb|hsl)a?\()?var\(--/.test(e)}const Xe=/^(?<fn>(?:rgb|hsl)a?)\((?<values>.+)\)/,Wn={rgb:(e,t,n,r)=>({r:e,g:t,b:n,a:r}),rgba:(e,t,n,r)=>({r:e,g:t,b:n,a:r}),hsl:(e,t,n,r)=>Je({h:e,s:t,l:n,a:r}),hsla:(e,t,n,r)=>Je({h:e,s:t,l:n,a:r}),hsv:(e,t,n,r)=>B({h:e,s:t,v:n,a:r}),hsva:(e,t,n,r)=>B({h:e,s:t,v:n,a:r})};function k(e){if(typeof e=="number")return{r:(e&16711680)>>16,g:(e&65280)>>8,b:e&255};if(typeof e=="string"&&Xe.test(e)){const{groups:t}=e.match(Xe),{fn:n,values:r}=t,o=r.split(/,\s*/).map(s=>s.endsWith("%")&&["hsl","hsla","hsv","hsva"].includes(n)?parseFloat(s)/100:parseFloat(s));return Wn[n](...o)}else if(typeof e=="string"){let t=e.startsWith("#")?e.slice(1):e;return[3,4].includes(t.length)?t=t.split("").map(n=>n+n).join(""):[6,8].includes(t.length),Mt(t)}else if(typeof e=="object"){if(ve(e,["r","g","b"]))return e;if(ve(e,["h","s","l"]))return B(At(e));if(ve(e,["h","s","v"]))return B(e)}throw new TypeError(`Invalid color: ${e==null?e:String(e)||e.constructor.name}
|
||||
Expected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`)}function B(e){const{h:t,s:n,v:r,a:o}=e,s=i=>{const c=(i+t/60)%6;return r-r*n*Math.max(Math.min(c,4-c,1),0)},a=[s(5),s(3),s(1)].map(i=>Math.round(i*255));return{r:a[0],g:a[1],b:a[2],a:o}}function Je(e){return B(At(e))}function zn(e){if(!e)return{h:0,s:1,v:1,a:1};const t=e.r/255,n=e.g/255,r=e.b/255,o=Math.max(t,n,r),s=Math.min(t,n,r);let a=0;o!==s&&(o===t?a=60*(0+(n-r)/(o-s)):o===n?a=60*(2+(r-t)/(o-s)):o===r&&(a=60*(4+(t-n)/(o-s)))),a<0&&(a=a+360);const i=o===0?0:(o-s)/o,c=[a,i,o];return{h:c[0],s:c[1],v:c[2],a:e.a}}function Io(e){const{h:t,s:n,v:r,a:o}=e,s=r-r*n/2,a=s===1||s===0?0:(r-s)/Math.min(s,1-s);return{h:t,s:a,l:s,a:o}}function At(e){const{h:t,s:n,l:r,a:o}=e,s=r+n*Math.min(r,1-r),a=s===0?0:2-2*r/s;return{h:t,s:a,v:s,a:o}}function Un(e){let{r:t,g:n,b:r,a:o}=e;return o===void 0?`rgb(${t}, ${n}, ${r})`:`rgba(${t}, ${n}, ${r}, ${o})`}function Ro(e){return Un(B(e))}function ae(e){const t=Math.round(e).toString(16);return("00".substr(0,2-t.length)+t).toUpperCase()}function Ct(e){let{r:t,g:n,b:r,a:o}=e;return`#${[ae(t),ae(n),ae(r),o!==void 0?ae(Math.round(o*255)):""].join("")}`}function Mt(e){e=Gn(e);let[t,n,r,o]=Dn(e,2).map(s=>parseInt(s,16));return o=o===void 0?o:o/255,{r:t,g:n,b:r,a:o}}function Lo(e){const t=Mt(e);return zn(t)}function No(e){return Ct(B(e))}function Gn(e){return e.startsWith("#")&&(e=e.slice(1)),e=e.replace(/([^0-9a-f])/gi,"F"),(e.length===3||e.length===4)&&(e=e.split("").map(t=>t+t).join("")),e.length!==6&&(e=Ve(Ve(e,6),8,"F")),e}function Kn(e,t){const n=St(Oe(e));return n[0]=n[0]+t*10,xt(Dt(n))}function Zn(e,t){const n=St(Oe(e));return n[0]=n[0]-t*10,xt(Dt(n))}function De(e){const t=k(e);return Oe(t)[1]}function Bo(e,t){const n=De(e),r=De(t),o=Math.max(n,r),s=Math.min(n,r);return(o+.05)/(s+.05)}function _n(e){const t=Math.abs(_e(k(0),k(e)));return Math.abs(_e(k(16777215),k(e)))>Math.min(t,50)?"#fff":"#000"}function V(e,t){return n=>Object.keys(e).reduce((r,o)=>{const a=typeof e[o]=="object"&&e[o]!=null&&!Array.isArray(e[o])?e[o]:{type:e[o]};return n&&o in n?r[o]={...a,default:n[o]}:r[o]=a,t&&!r[o].source&&(r[o].source=t),r},{})}const Xn=V({class:[String,Array],style:{type:[String,Array,Object],default:null}},"component"),K=Symbol.for("vuetify:defaults");function Jn(e){return F(e)}function Ee(){const e=C(K);if(!e)throw new Error("[Vuetify] Could not find defaults instance");return e}function Vo(e,t){const n=Ee(),r=F(e),o=g(()=>{if(G(t?.disabled))return n.value;const a=G(t?.scoped),i=G(t?.reset),c=G(t?.root);if(r.value==null&&!(a||i||c))return n.value;let u=A(r.value,{prev:n.value});if(a)return u;if(i||c){const f=Number(i||1/0);for(let d=0;d<=f&&!(!u||!("prev"in u));d++)u=u.prev;return u&&typeof c=="string"&&c in u&&(u=A(A(u,{prev:u}),u[c])),u}return u.prev?A(u.prev,u):u});return _(K,o),o}function qn(e,t){return typeof e.props?.[t]<"u"||typeof e.props?.[L(t)]<"u"}function Qn(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ee();const r=O("useDefaults");if(t=t??r.type.name??r.type.__name,!t)throw new Error("[Vuetify] Could not determine component name");const o=g(()=>n.value?.[e._as??t]),s=new Proxy(e,{get(c,u){const f=Reflect.get(c,u);return u==="class"||u==="style"?[o.value?.[u],f].filter(d=>d!=null):typeof u=="string"&&!qn(r.vnode,u)?o.value?.[u]??n.value?.global?.[u]??f:f}}),a=P();me(()=>{if(o.value){const c=Object.entries(o.value).filter(u=>{let[f]=u;return f.startsWith(f[0].toUpperCase())});a.value=c.length?Object.fromEntries(c):void 0}else a.value=void 0});function i(){const c=nr(K,r);_(K,g(()=>a.value?A(c?.value??{},a.value):c?.value))}return{props:s,provideSubDefaults:i}}function te(e){if(e._setup=e._setup??e.setup,!e.name)return e;if(e._setup){e.props=V(e.props??{},e.name)();const t=Object.keys(e.props).filter(n=>n!=="class"&&n!=="style");e.filterProps=function(r){return yn(r,t)},e.props._as=String,e.setup=function(r,o){const s=Ee();if(!s.value)return e._setup(r,o);const{props:a,provideSubDefaults:i}=Qn(r,r._as??e.name,s),c=e._setup(a,o);return i(),c}}return e}function Ft(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return t=>(e?te:Jt)(t)}function Yo(e,t){return t.props=e,t}function Ho(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"div",n=arguments.length>2?arguments[2]:void 0;return Ft()({name:n??dt(qt(e.replace(/__/g,"-"))),props:{tag:{type:String,default:t},...Xn()},setup(r,o){let{slots:s}=o;return()=>mt(r.tag,{class:[e,r.class],style:r.style},s.default?.())}})}function jo(e){if(typeof e.getRootNode!="function"){for(;e.parentNode;)e=e.parentNode;return e!==document?null:document}const t=e.getRootNode();return t!==document&&t.getRootNode({composed:!0})!==document?null:t}const Wo="cubic-bezier(0.4, 0, 0.2, 1)",zo="cubic-bezier(0.0, 0, 0.2, 1)",Uo="cubic-bezier(0.4, 0, 1, 1)";function Go(e,t,n){return Object.keys(e).filter(r=>Fe(r)&&r.endsWith(t)).reduce((r,o)=>(r[o.slice(0,-t.length)]=s=>e[o](s,n(s)),r),{})}function O(e,t){const n=Qt();if(!n)throw new Error(`[Vuetify] ${e} ${t||"must be called from inside a setup function"}`);return n}function er(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"composables";const t=O(e).type;return L(t?.aliasName||t?.name)}let Ot=0,le=new WeakMap;function Te(){const e=O("getUid");if(le.has(e))return le.get(e);{const t=Ot++;return le.set(e,t),t}}Te.reset=()=>{Ot=0,le=new WeakMap};function Ko(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;for(;e;){if(t?tr(e):Et(e))return e;e=e.parentElement}return document.scrollingElement}function Zo(e,t){const n=[];if(t&&e&&!t.contains(e))return n;for(;e&&(Et(e)&&n.push(e),e!==t);)e=e.parentElement;return n}function Et(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e);return t.overflowY==="scroll"||t.overflowY==="auto"&&e.scrollHeight>e.clientHeight}function tr(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e);return["scroll","auto"].includes(t.overflowY)}function nr(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:O("injectSelf");const{provides:n}=t;if(n&&e in n)return n[e]}function _o(e){for(;e;){if(window.getComputedStyle(e).position==="fixed")return!0;e=e.offsetParent}return!1}function Xo(e){const t=O("useRender");t.render=e}function rr(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:d=>d,o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:d=>d;const s=O("useProxiedModel"),a=F(e[t]!==void 0?e[t]:n),i=L(t),u=i!==t?g(()=>(e[t],!!((s.vnode.props?.hasOwnProperty(t)||s.vnode.props?.hasOwnProperty(i))&&(s.vnode.props?.hasOwnProperty(`onUpdate:${t}`)||s.vnode.props?.hasOwnProperty(`onUpdate:${i}`))))):g(()=>(e[t],!!(s.vnode.props?.hasOwnProperty(t)&&s.vnode.props?.hasOwnProperty(`onUpdate:${t}`))));ln(()=>!u.value,()=>{N(()=>e[t],d=>{a.value=d})});const f=g({get(){const d=e[t];return r(u.value?d:a.value)},set(d){const m=o(d),p=en(u.value?e[t]:a.value);p===m||r(p)===d||(a.value=m,s?.emit(`update:${t}`,m))}});return Object.defineProperty(f,"externalValue",{get:()=>u.value?e[t]:a.value}),f}const qe="$vuetify.",Qe=(e,t)=>e.replace(/\{(\d+)\}/g,(n,r)=>String(t[+r])),Tt=(e,t,n)=>function(r){for(var o=arguments.length,s=new Array(o>1?o-1:0),a=1;a<o;a++)s[a-1]=arguments[a];if(!r.startsWith(qe))return Qe(r,s);const i=r.replace(qe,""),c=e.value&&n.value[e.value],u=t.value&&n.value[t.value];let f=we(c,i,null);return f||(`${r}${e.value}`,f=we(u,i,null)),f||(f=r),typeof f!="string"&&(f=r),Qe(f,s)};function kt(e,t){return(n,r)=>new Intl.NumberFormat([e.value,t.value],r).format(n)}function be(e,t,n){const r=rr(e,t,e[t]??n.value);return r.value=e[t]??n.value,N(n,o=>{e[t]==null&&(r.value=n.value)}),r}function Pt(e){return t=>{const n=be(t,"locale",e.current),r=be(t,"fallback",e.fallback),o=be(t,"messages",e.messages);return{name:"vuetify",current:n,fallback:r,messages:o,t:Tt(n,r,o),n:kt(n,r),provide:Pt({current:n,fallback:r,messages:o})}}}function or(e){const t=P(e?.locale??"en"),n=P(e?.fallback??"en"),r=F({en:un,...e?.messages});return{name:"vuetify",current:t,fallback:n,messages:r,t:Tt(t,n,r),n:kt(t,n),provide:Pt({current:t,fallback:n,messages:r})}}const Z=Symbol.for("vuetify:locale");function sr(e){return e.name!=null}function ar(e){const t=e?.adapter&&sr(e?.adapter)?e?.adapter:or(e),n=ur(t,e);return{...t,...n}}function ir(){const e=C(Z);if(!e)throw new Error("[Vuetify] Could not find injected locale instance");return e}function Jo(e){const t=C(Z);if(!t)throw new Error("[Vuetify] Could not find injected locale instance");const n=t.provide(e),r=cr(n,t.rtl,e),o={...n,...r};return _(Z,o),o}function ur(e,t){const n=F(t?.rtl??cn),r=g(()=>n.value[e.current.value]??!1);return{isRtl:r,rtl:n,rtlClasses:g(()=>`v-locale--is-${r.value?"rtl":"ltr"}`)}}function cr(e,t,n){const r=g(()=>n.rtl??t.value[e.current.value]??!1);return{isRtl:r,rtl:t,rtlClasses:g(()=>`v-locale--is-${r.value?"rtl":"ltr"}`)}}function qo(){const e=C(Z);if(!e)throw new Error("[Vuetify] Could not find injected rtl instance");return{isRtl:e.isRtl,rtlClasses:e.rtlClasses}}const xe={"001":1,AD:1,AE:6,AF:6,AG:0,AI:1,AL:1,AM:1,AN:1,AR:1,AS:0,AT:1,AU:1,AX:1,AZ:1,BA:1,BD:0,BE:1,BG:1,BH:6,BM:1,BN:1,BR:0,BS:0,BT:0,BW:0,BY:1,BZ:0,CA:0,CH:1,CL:1,CM:1,CN:1,CO:0,CR:1,CY:1,CZ:1,DE:1,DJ:6,DK:1,DM:0,DO:0,DZ:6,EC:1,EE:1,EG:6,ES:1,ET:0,FI:1,FJ:1,FO:1,FR:1,GB:1,"GB-alt-variant":0,GE:1,GF:1,GP:1,GR:1,GT:0,GU:0,HK:0,HN:0,HR:1,HU:1,ID:0,IE:1,IL:0,IN:0,IQ:6,IR:6,IS:1,IT:1,JM:0,JO:6,JP:0,KE:0,KG:1,KH:0,KR:0,KW:6,KZ:1,LA:0,LB:1,LI:1,LK:1,LT:1,LU:1,LV:1,LY:6,MC:1,MD:1,ME:1,MH:0,MK:1,MM:0,MN:1,MO:0,MQ:1,MT:0,MV:5,MX:0,MY:1,MZ:0,NI:0,NL:1,NO:1,NP:0,NZ:1,OM:6,PA:0,PE:0,PH:0,PK:0,PL:1,PR:0,PT:0,PY:0,QA:6,RE:1,RO:1,RS:1,RU:1,SA:0,SD:6,SE:1,SG:0,SI:1,SK:1,SM:1,SV:0,SY:6,TH:0,TJ:1,TM:1,TR:1,TT:0,TW:0,UA:1,UM:0,US:0,UY:1,UZ:1,VA:1,VE:0,VI:0,VN:1,WS:0,XK:1,YE:0,ZA:0,ZW:0};function lr(e,t){const n=[];let r=[];const o=$t(e),s=It(e),a=(o.getDay()-xe[t.slice(-2).toUpperCase()]+7)%7,i=(s.getDay()-xe[t.slice(-2).toUpperCase()]+7)%7;for(let c=0;c<a;c++){const u=new Date(o);u.setDate(u.getDate()-(a-c)),r.push(u)}for(let c=1;c<=s.getDate();c++){const u=new Date(e.getFullYear(),e.getMonth(),c);r.push(u),r.length===7&&(n.push(r),r=[])}for(let c=1;c<7-i;c++){const u=new Date(s);u.setDate(u.getDate()+c),r.push(u)}return r.length>0&&n.push(r),n}function $t(e){return new Date(e.getFullYear(),e.getMonth(),1)}function It(e){return new Date(e.getFullYear(),e.getMonth()+1,0)}function fr(e){const t=e.split("-").map(Number);return new Date(t[0],t[1]-1,t[2])}const dr=/^([12]\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12]\d|3[01]))$/;function Rt(e){if(e==null)return new Date;if(e instanceof Date)return e;if(typeof e=="string"){let t;if(dr.test(e))return fr(e);if(t=Date.parse(e),!isNaN(t))return new Date(t)}return null}const et=new Date(2e3,0,2);function mr(e){const t=xe[e.slice(-2).toUpperCase()];return yt(7).map(n=>{const r=new Date(et);return r.setDate(et.getDate()+t+n),new Intl.DateTimeFormat(e,{weekday:"narrow"}).format(r)})}function gr(e,t,n,r){const o=Rt(e)??new Date,s=r?.[t];if(typeof s=="function")return s(o,t,n);let a={};switch(t){case"fullDateWithWeekday":a={weekday:"long",day:"numeric",month:"long",year:"numeric"};break;case"normalDateWithWeekday":a={weekday:"short",day:"numeric",month:"short"};break;case"keyboardDate":a={day:"2-digit",month:"2-digit",year:"numeric"};break;case"monthAndDate":a={month:"long",day:"numeric"};break;case"monthAndYear":a={month:"long",year:"numeric"};break;case"month":a={month:"long"};break;case"monthShort":a={month:"short"};break;case"dayOfMonth":a={day:"numeric"};break;case"shortDate":a={year:"2-digit",month:"numeric",day:"numeric"};break;case"year":a={year:"numeric"};break;default:a=s??{timeZone:"UTC",timeZoneName:"short"}}return new Intl.DateTimeFormat(n,a).format(o)}function hr(e,t){const n=e.toJsDate(t),r=n.getFullYear(),o=Ye(String(n.getMonth()+1),2,"0"),s=Ye(String(n.getDate()),2,"0");return`${r}-${o}-${s}`}function pr(e){const[t,n,r]=e.split("-").map(Number);return new Date(t,n-1,r)}function yr(e,t){const n=new Date(e);return n.setDate(n.getDate()+t),n}function vr(e,t){const n=new Date(e);return n.setMonth(n.getMonth()+t),n}function br(e){return e.getFullYear()}function wr(e){return e.getMonth()}function Sr(e){return new Date(e.getFullYear(),e.getMonth()+1,1)}function Dr(e){return new Date(e.getFullYear(),0,1)}function xr(e){return new Date(e.getFullYear(),11,31)}function Ar(e,t){return Ae(e,t[0])&&Mr(e,t[1])}function Cr(e){const t=new Date(e);return t instanceof Date&&!isNaN(t.getTime())}function Ae(e,t){return e.getTime()>t.getTime()}function Mr(e,t){return e.getTime()<t.getTime()}function tt(e,t){return e.getTime()===t.getTime()}function Fr(e,t){return e.getDate()===t.getDate()&&e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}function Or(e,t){return e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}function Er(e,t,n){const r=new Date(e),o=new Date(t);return n==="month"?r.getMonth()-o.getMonth()+(r.getFullYear()-o.getFullYear())*12:Math.floor((r.getTime()-o.getTime())/(1e3*60*60*24))}function Tr(e,t){const n=new Date(e);return n.setMonth(t),n}function kr(e,t){const n=new Date(e);return n.setFullYear(t),n}function Pr(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function $r(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),23,59,59,999)}class Ir{constructor(t){this.locale=t.locale,this.formats=t.formats}date(t){return Rt(t)}toJsDate(t){return t}toISO(t){return hr(this,t)}parseISO(t){return pr(t)}addDays(t,n){return yr(t,n)}addMonths(t,n){return vr(t,n)}getWeekArray(t){return lr(t,this.locale)}startOfMonth(t){return $t(t)}endOfMonth(t){return It(t)}format(t,n){return gr(t,n,this.locale,this.formats)}isEqual(t,n){return tt(t,n)}isValid(t){return Cr(t)}isWithinRange(t,n){return Ar(t,n)}isAfter(t,n){return Ae(t,n)}isBefore(t,n){return!Ae(t,n)&&!tt(t,n)}isSameDay(t,n){return Fr(t,n)}isSameMonth(t,n){return Or(t,n)}setMonth(t,n){return Tr(t,n)}setYear(t,n){return kr(t,n)}getDiff(t,n,r){return Er(t,n,r)}getWeekdays(){return mr(this.locale)}getYear(t){return br(t)}getMonth(t){return wr(t)}getNextMonth(t){return Sr(t)}startOfDay(t){return Pr(t)}endOfDay(t){return $r(t)}startOfYear(t){return Dr(t)}endOfYear(t){return xr(t)}}const Lt=Symbol.for("vuetify:date-options"),nt=Symbol.for("vuetify:date-adapter");function Rr(e,t){const n=A({adapter:Ir,locale:{af:"af-ZA",bg:"bg-BG",ca:"ca-ES",ckb:"",cs:"cs-CZ",de:"de-DE",el:"el-GR",en:"en-US",et:"et-EE",fa:"fa-IR",fi:"fi-FI",hr:"hr-HR",hu:"hu-HU",he:"he-IL",id:"id-ID",it:"it-IT",ja:"ja-JP",ko:"ko-KR",lv:"lv-LV",lt:"lt-LT",nl:"nl-NL",no:"no-NO",pl:"pl-PL",pt:"pt-PT",ro:"ro-RO",ru:"ru-RU",sk:"sk-SK",sl:"sl-SI",srCyrl:"sr-SP",srLatn:"sr-SP",sv:"sv-SE",th:"th-TH",tr:"tr-TR",az:"az-AZ",uk:"uk-UA",vi:"vi-VN",zhHans:"zh-CN",zhHant:"zh-TW"}},e);return{options:n,instance:Nt(n,t)}}function Nt(e,t){const n=E(typeof e.adapter=="function"?new e.adapter({locale:e.locale[t.current.value]??t.current.value,formats:e.formats}):e.adapter);return N(t.current,r=>{n.locale=e.locale[r]??r??n.locale}),n}function Qo(){const e=C(Lt);if(!e)throw new Error("[Vuetify] Could not find injected date options");const t=ir();return Nt(e,t)}function es(e,t){const n=e.toJsDate(t);let r=e.getYear(n),o=e.startOfYear(n);if(n<o)r=r-1,o=e.startOfYear(e.setYear(n,r));else{const i=e.startOfYear(e.setYear(n,r+1));n>=i&&(r=r+1,o=i)}const s=Math.abs(n.getTime()-o.getTime()),a=Math.ceil(s/(1e3*60*60*24));return Math.floor(a/7)+1}const ts=["sm","md","lg","xl","xxl"],Ce=Symbol.for("vuetify:display"),rt={mobileBreakpoint:"lg",thresholds:{xs:0,sm:600,md:960,lg:1280,xl:1920,xxl:2560}},Lr=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:rt;return A(rt,e)};function ot(e){return D&&!e?window.innerWidth:typeof e=="object"&&e.clientWidth||0}function st(e){return D&&!e?window.innerHeight:typeof e=="object"&&e.clientHeight||0}function at(e){const t=D&&!e?window.navigator.userAgent:"ssr";function n(l){return!!t.match(l)}const r=n(/android/i),o=n(/iphone|ipad|ipod/i),s=n(/cordova/i),a=n(/electron/i),i=n(/chrome/i),c=n(/edge/i),u=n(/firefox/i),f=n(/opera/i),d=n(/win/i),m=n(/mac/i),p=n(/linux/i);return{android:r,ios:o,cordova:s,electron:a,chrome:i,edge:c,firefox:u,opera:f,win:d,mac:m,linux:p,touch:fn,ssr:t==="ssr"}}function Nr(e,t){const{thresholds:n,mobileBreakpoint:r}=Lr(e),o=P(st(t)),s=P(at(t)),a=E({}),i=P(ot(t));function c(){o.value=st(),i.value=ot()}function u(){c(),s.value=at()}return me(()=>{const f=i.value<n.sm,d=i.value<n.md&&!f,m=i.value<n.lg&&!(d||f),p=i.value<n.xl&&!(m||d||f),l=i.value<n.xxl&&!(p||m||d||f),h=i.value>=n.xxl,w=f?"xs":d?"sm":m?"md":p?"lg":l?"xl":"xxl",Y=typeof r=="number"?r:n[r],H=i.value<Y;a.xs=f,a.sm=d,a.md=m,a.lg=p,a.xl=l,a.xxl=h,a.smAndUp=!f,a.mdAndUp=!(f||d),a.lgAndUp=!(f||d||m),a.xlAndUp=!(f||d||m||p),a.smAndDown=!(m||p||l||h),a.mdAndDown=!(p||l||h),a.lgAndDown=!(l||h),a.xlAndDown=!h,a.name=w,a.height=o.value,a.width=i.value,a.mobile=H,a.mobileBreakpoint=r,a.platform=s.value,a.thresholds=n}),D&&window.addEventListener("resize",c,{passive:!0}),{...ft(a),update:u,ssr:!!t}}const ns=V({mobileBreakpoint:[Number,String]},"display");function rs(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:er();const n=C(Ce);if(!n)throw new Error("Could not find Vuetify display injection");const r=g(()=>{if(!e.mobileBreakpoint)return n.mobile.value;const s=typeof e.mobileBreakpoint=="number"?e.mobileBreakpoint:n.thresholds.value[e.mobileBreakpoint];return n.width.value<s}),o=g(()=>t?{[`${t}--mobile`]:r.value}:{});return{...n,displayClasses:o,mobile:r}}const Br={collapse:"mdi-chevron-up",complete:"mdi-check",cancel:"mdi-close-circle",close:"mdi-close",delete:"mdi-close-circle",clear:"mdi-close-circle",success:"mdi-check-circle",info:"mdi-information",warning:"mdi-alert-circle",error:"mdi-close-circle",prev:"mdi-chevron-left",next:"mdi-chevron-right",checkboxOn:"mdi-checkbox-marked",checkboxOff:"mdi-checkbox-blank-outline",checkboxIndeterminate:"mdi-minus-box",delimiter:"mdi-circle",sortAsc:"mdi-arrow-up",sortDesc:"mdi-arrow-down",expand:"mdi-chevron-down",menu:"mdi-menu",subgroup:"mdi-menu-down",dropdown:"mdi-menu-down",radioOn:"mdi-radiobox-marked",radioOff:"mdi-radiobox-blank",edit:"mdi-pencil",ratingEmpty:"mdi-star-outline",ratingFull:"mdi-star",ratingHalf:"mdi-star-half-full",loading:"mdi-cached",first:"mdi-page-first",last:"mdi-page-last",unfold:"mdi-unfold-more-horizontal",file:"mdi-paperclip",plus:"mdi-plus",minus:"mdi-minus",calendar:"mdi-calendar",eyeDropper:"mdi-eyedropper"},Vr={component:e=>mt(Vt,{...e,class:"mdi"})},Yr=[String,Function,Object,Array],Me=Symbol.for("vuetify:icons"),ge=V({icon:{type:Yr},tag:{type:String,required:!0}},"icon"),it=Ft()({name:"VComponentIcon",props:ge(),setup(e,t){let{slots:n}=t;return()=>{const r=e.icon;return T(e.tag,null,{default:()=>[e.icon?T(r,null,null):n.default?.()]})}}}),Bt=te({name:"VSvgIcon",inheritAttrs:!1,props:ge(),setup(e,t){let{attrs:n}=t;return()=>T(e.tag,tn(n,{style:null}),{default:()=>[T("svg",{class:"v-icon__svg",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",role:"img","aria-hidden":"true"},[Array.isArray(e.icon)?e.icon.map(r=>Array.isArray(r)?T("path",{d:r[0],"fill-opacity":r[1]},null):T("path",{d:r},null)):T("path",{d:e.icon},null)])]})}}),os=te({name:"VLigatureIcon",props:ge(),setup(e){return()=>T(e.tag,null,{default:()=>[e.icon]})}}),Vt=te({name:"VClassIcon",props:ge(),setup(e){return()=>T(e.tag,{class:e.icon},null)}}),Hr={svg:{component:Bt},class:{component:Vt}};function jr(e){return A({defaultSet:"mdi",sets:{...Hr,mdi:Vr},aliases:{...Br,vuetify:["M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z",["M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z",.6]],"vuetify-outline":"svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z"}},e)}const ss=e=>{const t=C(Me);if(!t)throw new Error("Missing Vuetify Icons provide!");return{iconData:g(()=>{const r=G(e);if(!r)return{component:it};let o=r;if(typeof o=="string"&&(o=o.trim(),o.startsWith("$")&&(o=t.aliases?.[o.slice(1)])),!o)throw new Error(`Could not find aliased icon "${r}"`);if(Array.isArray(o))return{component:Bt,icon:o};if(typeof o!="string")return{component:it,icon:o};const s=Object.keys(t.sets).find(c=>typeof o=="string"&&o.startsWith(`${c}:`)),a=s?o.slice(s.length+1):o;return{component:t.sets[s??t.defaultSet].component,icon:a}})}},ee=Symbol.for("vuetify:theme"),as=V({theme:String},"theme"),Q={defaultTheme:"light",variations:{colors:[],lighten:0,darken:0},themes:{light:{dark:!1,colors:{background:"#FFFFFF",surface:"#FFFFFF","surface-bright":"#FFFFFF","surface-variant":"#424242","on-surface-variant":"#EEEEEE",primary:"#1867C0","primary-darken-1":"#1F5592",secondary:"#48A9A6","secondary-darken-1":"#018786",error:"#B00020",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"},variables:{"border-color":"#000000","border-opacity":.12,"high-emphasis-opacity":.87,"medium-emphasis-opacity":.6,"disabled-opacity":.38,"idle-opacity":.04,"hover-opacity":.04,"focus-opacity":.12,"selected-opacity":.08,"activated-opacity":.12,"pressed-opacity":.12,"dragged-opacity":.08,"theme-kbd":"#212529","theme-on-kbd":"#FFFFFF","theme-code":"#F5F5F5","theme-on-code":"#000000"}},dark:{dark:!0,colors:{background:"#121212",surface:"#212121","surface-bright":"#ccbfd6","surface-variant":"#a3a3a3","on-surface-variant":"#424242",primary:"#2196F3","primary-darken-1":"#277CC1",secondary:"#54B6B2","secondary-darken-1":"#48A9A6",error:"#CF6679",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"},variables:{"border-color":"#FFFFFF","border-opacity":.12,"high-emphasis-opacity":1,"medium-emphasis-opacity":.7,"disabled-opacity":.5,"idle-opacity":.1,"hover-opacity":.04,"focus-opacity":.12,"selected-opacity":.08,"activated-opacity":.12,"pressed-opacity":.16,"dragged-opacity":.08,"theme-kbd":"#212529","theme-on-kbd":"#FFFFFF","theme-code":"#343434","theme-on-code":"#CCCCCC"}}}};function Wr(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Q;if(!e)return{...Q,isDisabled:!0};const t={};for(const[n,r]of Object.entries(e.themes??{})){const o=r.dark||n==="dark"?Q.themes?.dark:Q.themes?.light;t[n]=A(o,r)}return A(Q,{...e,themes:t})}function zr(e){const t=Wr(e),n=F(t.defaultTheme),r=F(t.themes),o=g(()=>{const f={};for(const[d,m]of Object.entries(r.value)){const p=f[d]={...m,colors:{...m.colors}};if(t.variations)for(const l of t.variations.colors){const h=p.colors[l];if(h)for(const w of["lighten","darken"]){const Y=w==="lighten"?Kn:Zn;for(const H of yt(t.variations[w],1))p.colors[`${l}-${w}-${H}`]=Ct(Y(k(h),H))}}for(const l of Object.keys(p.colors)){if(/^on-[a-z]/.test(l)||p.colors[`on-${l}`])continue;const h=`on-${l}`,w=k(p.colors[l]);p.colors[h]=_n(w)}}return f}),s=g(()=>o.value[n.value]),a=g(()=>{const f=[];s.value.dark&&R(f,":root",["color-scheme: dark"]),R(f,":root",ut(s.value));for(const[l,h]of Object.entries(o.value))R(f,`.v-theme--${l}`,[`color-scheme: ${h.dark?"dark":"normal"}`,...ut(h)]);const d=[],m=[],p=new Set(Object.values(o.value).flatMap(l=>Object.keys(l.colors)));for(const l of p)/^on-[a-z]/.test(l)?R(m,`.${l}`,[`color: rgb(var(--v-theme-${l})) !important`]):(R(d,`.bg-${l}`,[`--v-theme-overlay-multiplier: var(--v-theme-${l}-overlay-multiplier)`,`background-color: rgb(var(--v-theme-${l})) !important`,`color: rgb(var(--v-theme-on-${l})) !important`]),R(m,`.text-${l}`,[`color: rgb(var(--v-theme-${l})) !important`]),R(m,`.border-${l}`,[`--v-border-color: var(--v-theme-${l})`]));return f.push(...d,...m),f.map((l,h)=>h===0?l:` ${l}`).join("")});function i(){return{style:[{children:a.value,id:"vuetify-theme-stylesheet",nonce:t.cspNonce||!1}]}}function c(f){if(t.isDisabled)return;const d=f._context.provides.usehead;if(d)if(d.push){const m=d.push(i);D&&N(a,()=>{m.patch(i)})}else D?(d.addHeadObjs(g(i)),me(()=>d.updateDOM())):d.addHeadObjs(i());else{let p=function(){if(typeof document<"u"&&!m){const l=document.createElement("style");l.type="text/css",l.id="vuetify-theme-stylesheet",t.cspNonce&&l.setAttribute("nonce",t.cspNonce),m=l,document.head.appendChild(m)}m&&(m.innerHTML=a.value)},m=D?document.getElementById("vuetify-theme-stylesheet"):null;D?N(a,p,{immediate:!0}):p()}}const u=g(()=>t.isDisabled?void 0:`v-theme--${n.value}`);return{install:c,isDisabled:t.isDisabled,name:n,themes:r,current:s,computedThemes:o,themeClasses:u,styles:a,global:{name:n,current:s}}}function is(e){O("provideTheme");const t=C(ee,null);if(!t)throw new Error("Could not find Vuetify theme injection");const n=g(()=>e.theme??t.name.value),r=g(()=>t.themes.value[n.value]),o=g(()=>t.isDisabled?void 0:`v-theme--${n.value}`),s={...t,name:n,current:r,themeClasses:o};return _(ee,s),s}function us(){O("useTheme");const e=C(ee,null);if(!e)throw new Error("Could not find Vuetify theme injection");return e}function R(e,t,n){e.push(`${t} {
|
||||
`,...n.map(r=>` ${r};
|
||||
`),`}
|
||||
`)}function ut(e){const t=e.dark?2:1,n=e.dark?1:2,r=[];for(const[o,s]of Object.entries(e.colors)){const a=k(s);r.push(`--v-theme-${o}: ${a.r},${a.g},${a.b}`),o.startsWith("on-")||r.push(`--v-theme-${o}-overlay-multiplier: ${De(s)>.18?t:n}`)}for(const[o,s]of Object.entries(e.variables)){const a=typeof s=="string"&&s.startsWith("#")?k(s):void 0,i=a?`${a.r}, ${a.g}, ${a.b}`:void 0;r.push(`--v-${o}: ${i??s}`)}return r}function Ur(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"content";const n=F(),r=F();if(D){const o=new ResizeObserver(s=>{e?.(s,o),s.length&&(t==="content"?r.value=s[0].contentRect:r.value=s[0].target.getBoundingClientRect())});gt(()=>{o.disconnect()}),N(n,(s,a)=>{a&&(o.unobserve(Ne(a)),r.value=void 0),s&&o.observe(Ne(s))},{flush:"post"})}return{resizeRef:n,contentRect:nn(r)}}const de=Symbol.for("vuetify:layout"),Yt=Symbol.for("vuetify:layout-item"),ct=1e3,cs=V({overlaps:{type:Array,default:()=>[]},fullHeight:Boolean},"layout"),ls=V({name:{type:String},order:{type:[Number,String],default:0},absolute:Boolean},"layout-item");function fs(){const e=C(de);if(!e)throw new Error("[Vuetify] Could not find injected layout");return{getLayoutItem:e.getLayoutItem,mainRect:e.mainRect,mainStyles:e.mainStyles}}function ds(e){const t=C(de);if(!t)throw new Error("[Vuetify] Could not find injected layout");const n=e.id??`layout-item-${Te()}`,r=O("useLayoutItem");_(Yt,{id:n});const o=P(!1);on(()=>o.value=!0),sn(()=>o.value=!1);const{layoutItemStyles:s,layoutItemScrimStyles:a}=t.register(r,{...e,active:g(()=>o.value?!1:e.active.value),id:n});return gt(()=>t.unregister(n)),{layoutItemStyles:s,layoutRect:t.layoutRect,layoutItemScrimStyles:a}}const Gr=(e,t,n,r)=>{let o={top:0,left:0,right:0,bottom:0};const s=[{id:"",layer:{...o}}];for(const a of e){const i=t.get(a),c=n.get(a),u=r.get(a);if(!i||!c||!u)continue;const f={...o,[i.value]:parseInt(o[i.value],10)+(u.value?parseInt(c.value,10):0)};s.push({id:a,layer:f}),o=f}return s};function ms(e){const t=C(de,null),n=g(()=>t?t.rootZIndex.value-100:ct),r=F([]),o=E(new Map),s=E(new Map),a=E(new Map),i=E(new Map),c=E(new Map),{resizeRef:u,contentRect:f}=Ur(),d=g(()=>{const v=new Map,x=e.overlaps??[];for(const y of x.filter(S=>S.includes(":"))){const[S,b]=y.split(":");if(!r.value.includes(S)||!r.value.includes(b))continue;const j=o.get(S),$=o.get(b),X=s.get(S),J=s.get(b);!j||!$||!X||!J||(v.set(b,{position:j.value,amount:parseInt(X.value,10)}),v.set(S,{position:$.value,amount:-parseInt(J.value,10)}))}return v}),m=g(()=>{const v=[...new Set([...a.values()].map(y=>y.value))].sort((y,S)=>y-S),x=[];for(const y of v){const S=r.value.filter(b=>a.get(b)?.value===y);x.push(...S)}return Gr(x,o,s,i)}),p=g(()=>!Array.from(c.values()).some(v=>v.value)),l=g(()=>m.value[m.value.length-1].layer),h=g(()=>({"--v-layout-left":ne(l.value.left),"--v-layout-right":ne(l.value.right),"--v-layout-top":ne(l.value.top),"--v-layout-bottom":ne(l.value.bottom),...p.value?void 0:{transition:"none"}})),w=g(()=>m.value.slice(1).map((v,x)=>{let{id:y}=v;const{layer:S}=m.value[x],b=s.get(y),j=o.get(y);return{id:y,...S,size:Number(b.value),position:j.value}})),Y=v=>w.value.find(x=>x.id===v),H=O("createLayout"),ke=P(!1);rn(()=>{ke.value=!0}),_(de,{register:(v,x)=>{let{id:y,order:S,position:b,layoutSize:j,elementSize:$,active:X,disableTransitions:J,absolute:Wt}=x;a.set(y,S),o.set(y,b),s.set(y,j),i.set(y,X),J&&c.set(y,J);const Pe=ie(Yt,H?.vnode).indexOf(v);Pe>-1?r.value.splice(Pe,0,y):r.value.push(y);const $e=g(()=>w.value.findIndex(q=>q.id===y)),he=g(()=>n.value+m.value.length*2-$e.value*2),zt=g(()=>{const q=b.value==="left"||b.value==="right",pe=b.value==="right",Gt=b.value==="bottom",Ie={[b.value]:0,zIndex:he.value,transform:`translate${q?"X":"Y"}(${(X.value?0:-110)*(pe||Gt?-1:1)}%)`,position:Wt.value||n.value!==ct?"absolute":"fixed",...p.value?void 0:{transition:"none"}};if(!ke.value)return Ie;const M=w.value[$e.value];if(!M)throw new Error(`[Vuetify] Could not find layout item "${y}"`);const ye=d.value.get(y);return ye&&(M[ye.position]+=ye.amount),{...Ie,height:q?`calc(100% - ${M.top}px - ${M.bottom}px)`:$.value?`${$.value}px`:void 0,left:pe?void 0:`${M.left}px`,right:pe?`${M.right}px`:void 0,top:b.value!=="bottom"?`${M.top}px`:void 0,bottom:b.value!=="top"?`${M.bottom}px`:void 0,width:q?$.value?`${$.value}px`:void 0:`calc(100% - ${M.left}px - ${M.right}px)`}}),Ut=g(()=>({zIndex:he.value-1}));return{layoutItemStyles:zt,layoutItemScrimStyles:Ut,zIndex:he}},unregister:v=>{a.delete(v),o.delete(v),s.delete(v),i.delete(v),c.delete(v),r.value=r.value.filter(x=>x!==v)},mainRect:l,mainStyles:h,getLayoutItem:Y,items:w,layoutRect:f,rootZIndex:n});const Ht=g(()=>["v-layout",{"v-layout--full-height":e.fullHeight}]),jt=g(()=>({zIndex:t?n.value:void 0,position:t?"relative":void 0,overflow:t?"hidden":void 0}));return{layoutClasses:Ht,layoutStyles:jt,getLayoutItem:Y,items:w,layoutRect:f,layoutRef:u}}function Kr(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{blueprint:t,...n}=e,r=A(t,n),{aliases:o={},components:s={},directives:a={}}=r,i=Jn(r.defaults),c=Nr(r.display,r.ssr),u=zr(r.theme),f=jr(r.icons),d=ar(r.locale),m=Rr(r.date,d);return{install:l=>{for(const h in a)l.directive(h,a[h]);for(const h in s)l.component(h,s[h]);for(const h in o)l.component(h,te({...o[h],name:h,aliasName:o[h].name}));if(u.install(l),l.provide(K,i),l.provide(Ce,c),l.provide(ee,u),l.provide(Me,f),l.provide(Z,d),l.provide(Lt,m.options),l.provide(nt,m.instance),D&&r.ssr)if(l.$nuxt)l.$nuxt.hook("app:suspense:resolve",()=>{c.update()});else{const{mount:h}=l;l.mount=function(){const w=h(...arguments);return an(()=>c.update()),l.mount=h,w}}Te.reset(),l.mixin({computed:{$vuetify(){return E({defaults:U.call(this,K),display:U.call(this,Ce),theme:U.call(this,ee),icons:U.call(this,Me),locale:U.call(this,Z),date:U.call(this,nt)})}}})},defaults:i,display:c,theme:u,icons:f,locale:d,date:m}}const Zr="3.4.4";Kr.version=Zr;function U(e){const t=this.$,n=t.parent?.provides??t.vnode.appContext?.provides;if(n&&e in n)return n[e]}export{Mn as $,rr as A,ln as B,ds as C,pn as D,Te as E,ao as F,ie as G,Se as H,Yr as I,ss as J,xn as K,Ur as L,wo as M,ho as N,D as O,Le as P,eo as Q,Ho as R,Jr as S,ir as T,so as U,bo as V,vn as W,go as X,te as Y,Po as Z,Qr as _,cs as a,_o as a0,So as a1,Do as a2,xo as a3,Zo as a4,ue as a5,Ao as a6,Co as a7,Et as a8,Ne as a9,yt as aA,to as aB,qr as aC,Ro as aD,Un as aE,Bo as aF,oo as aG,we as aH,yo as aI,Yo as aJ,ko as aK,Go as aL,ts as aM,Qo as aN,es as aO,co as aP,Jo as aQ,fs as aR,lo as aS,He as aT,ro as aU,Vt as aV,it as aW,os as aX,Bt as aY,Kr as aZ,Eo as aa,To as ab,rs as ac,jo as ad,Ko as ae,An as af,Cn as ag,Fe as ah,yn as ai,po as aj,io as ak,Fn as al,vo as am,us as an,Be as ao,ns as ap,no as aq,fo as ar,No as as,ve as at,B as au,Io as av,zn as aw,At as ax,Lo as ay,uo as az,as as b,is as c,ms as d,Xo as e,Oo as f,Ft as g,zo as h,Uo as i,Mo as j,Vo as k,ne as l,Xn as m,Fo as n,O as o,V as p,er as q,mo as r,Wo as s,jn as t,qo as u,$o as v,k as w,_n as x,Sn as y,ls as z};
|
||||
BIN
qbit/vuetorrent/public/favicon.ico
Normal file
BIN
qbit/vuetorrent/public/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.3 KiB |
BIN
qbit/vuetorrent/public/icon-192.png
Normal file
BIN
qbit/vuetorrent/public/icon-192.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.0 KiB |
BIN
qbit/vuetorrent/public/icon-512.png
Normal file
BIN
qbit/vuetorrent/public/icon-512.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
1
qbit/vuetorrent/public/icon.svg
Normal file
1
qbit/vuetorrent/public/icon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512"><rect width="100%" height="100%" fill="#fff" rx="50"/><path d="M70 85v345h80V85Z" style="fill:#3fb27f"/><path d="M150 430 430 85h-80L150 325Zm216-185h76l-64 80h-76Z" style="fill:#33475b"/><path d="M274 360h160l-60 70H214Z" style="fill:#3fb27f"/></svg>
|
||||
|
After Width: | Height: | Size: 316 B |
29
qbit/vuetorrent/public/index.html
Normal file
29
qbit/vuetorrent/public/index.html
Normal file
@@ -0,0 +1,29 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
||||
<meta name="description" content="VueTorrent" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="mobile-web-app-capable" content="yes" />
|
||||
<link rel="icon" href="./favicon.ico" sizes="any" />
|
||||
<link rel="icon" href="./icon.svg" type="image/svg+xml" />
|
||||
<link rel="apple-touch-icon" href="./apple-touch-icon.png" />
|
||||
<meta name="theme-color" content="#000" />
|
||||
<title>VueTorrent</title>
|
||||
<script type="module" crossorigin src="./assets/index-135ae4c1.js"></script>
|
||||
<link rel="modulepreload" crossorigin href="./assets/vue-d2584a6d.js">
|
||||
<link rel="modulepreload" crossorigin href="./assets/faker-c43f92d4.js">
|
||||
<link rel="modulepreload" crossorigin href="./assets/vuetify-e547ef1b.js">
|
||||
<link rel="stylesheet" href="./assets/index-6e88811a.css">
|
||||
<link rel="manifest" href="./manifest.webmanifest" crossorigin="use-credentials"><script id="vite-plugin-pwa:register-sw" src="./registerSW.js"></script></head>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong>We're sorry but Vuetorrent doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app"></div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
1
qbit/vuetorrent/public/manifest.webmanifest
Normal file
1
qbit/vuetorrent/public/manifest.webmanifest
Normal file
@@ -0,0 +1 @@
|
||||
{"name":"VueTorrent","short_name":"VueTorrent","start_url":".","display":"standalone","background_color":"#000","lang":"en","scope":"./","theme_color":"#597566","icons":[{"src":"./icon-192.png","type":"image/png","sizes":"192x192"},{"src":"./icon-512.png","type":"image/png","sizes":"512x512"}]}
|
||||
1
qbit/vuetorrent/public/registerSW.js
Normal file
1
qbit/vuetorrent/public/registerSW.js
Normal file
@@ -0,0 +1 @@
|
||||
if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('./sw.js', { scope: './' })})}
|
||||
2
qbit/vuetorrent/public/robots.txt
Normal file
2
qbit/vuetorrent/public/robots.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
User-agent: *
|
||||
Disallow:
|
||||
1
qbit/vuetorrent/public/sw.js
Normal file
1
qbit/vuetorrent/public/sw.js
Normal file
@@ -0,0 +1 @@
|
||||
if(!self.define){let s,e={};const o=(o,l)=>(o=new URL(o+".js",l).href,e[o]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=o,s.onload=e,document.head.appendChild(s)}else s=o,importScripts(o),e()})).then((()=>{let s=e[o];if(!s)throw new Error(`Module ${o} didn’t register its module`);return s})));self.define=(l,r)=>{const n=s||("document"in self?document.currentScript.src:"")||location.href;if(e[n])return;let i={};const a=s=>o(s,n),t={module:{uri:n},exports:i,require:a};e[n]=Promise.all(l.map((s=>t[s]||a(s)))).then((s=>(r(...s),i)))}}define(["./workbox-fa446783"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"apple-touch-icon.png",revision:"eed821a5bbfee3a20aab9c51c4977743"},{url:"assets/ArrayPagination-26934cac.js",revision:null},{url:"assets/Dashboard-e1ea0c85.css",revision:null},{url:"assets/Dashboard-e667d93a.js",revision:null},{url:"assets/dayjs-f7aba705.js",revision:null},{url:"assets/dayjs.min-1969f9c6.js",revision:null},{url:"assets/faker-c43f92d4.js",revision:null},{url:"assets/index-135ae4c1.js",revision:null},{url:"assets/index-6e88811a.css",revision:null},{url:"assets/index-fd06c5c5.js",revision:null},{url:"assets/Login-4fd3fce4.js",revision:null},{url:"assets/Logs-a45762d4.css",revision:null},{url:"assets/Logs-c238f379.js",revision:null},{url:"assets/MagnetHandler-d77b3bb6.js",revision:null},{url:"assets/materialdesignicons-webfont-28c8f97f.woff",revision:null},{url:"assets/materialdesignicons-webfont-31010194.woff2",revision:null},{url:"assets/PasswordField.vue_vue_type_script_setup_true_lang-f7d196be.js",revision:null},{url:"assets/roboto-cyrillic-400-normal-495d38d4.woff2",revision:null},{url:"assets/roboto-cyrillic-400-normal-adba67d2.woff",revision:null},{url:"assets/roboto-cyrillic-ext-400-normal-0a32035a.woff",revision:null},{url:"assets/roboto-cyrillic-ext-400-normal-b7ef2cd1.woff2",revision:null},{url:"assets/roboto-greek-400-normal-076b9dc1.woff",revision:null},{url:"assets/roboto-greek-400-normal-daf51ab5.woff2",revision:null},{url:"assets/roboto-latin-400-normal-a9fdbefa.woff",revision:null},{url:"assets/roboto-latin-400-normal-f6734f81.woff2",revision:null},{url:"assets/roboto-latin-ext-400-normal-3c23eb02.woff2",revision:null},{url:"assets/roboto-latin-ext-400-normal-c2b94086.woff",revision:null},{url:"assets/roboto-mono-cyrillic-400-normal-8c367f2f.woff2",revision:null},{url:"assets/roboto-mono-cyrillic-400-normal-f32fcdb5.woff",revision:null},{url:"assets/roboto-mono-cyrillic-ext-400-normal-ae7d87eb.woff",revision:null},{url:"assets/roboto-mono-cyrillic-ext-400-normal-eef02d41.woff2",revision:null},{url:"assets/roboto-mono-greek-400-normal-3355834d.woff",revision:null},{url:"assets/roboto-mono-greek-400-normal-53a8927b.woff2",revision:null},{url:"assets/roboto-mono-latin-400-normal-7295944e.woff2",revision:null},{url:"assets/roboto-mono-latin-400-normal-d5d7d67f.woff",revision:null},{url:"assets/roboto-mono-latin-ext-400-normal-20f2c9c1.woff",revision:null},{url:"assets/roboto-mono-latin-ext-400-normal-820adbd1.woff2",revision:null},{url:"assets/roboto-mono-vietnamese-400-normal-9a7a0360.woff",revision:null},{url:"assets/roboto-vietnamese-400-normal-77b24796.woff2",revision:null},{url:"assets/roboto-vietnamese-400-normal-d2390f1a.woff",revision:null},{url:"assets/RssArticles-1fe4e4bd.js",revision:null},{url:"assets/RssArticles-cd150368.css",revision:null},{url:"assets/SearchEngine-b38d96d6.js",revision:null},{url:"assets/Settings-af9c84ca.js",revision:null},{url:"assets/Settings-cac9dd1a.css",revision:null},{url:"assets/TorrentDetail-85e789b3.js",revision:null},{url:"assets/TorrentDetail-cad7bace.css",revision:null},{url:"assets/torrents-f1a47456.js",revision:null},{url:"assets/vue-d2584a6d.js",revision:null},{url:"assets/vuetify-e547ef1b.js",revision:null},{url:"favicon.ico",revision:"621ef878b9a700bd2249dad60d9f1141"},{url:"icon-192.png",revision:"1a475d65497c0b3609661246d8639ff4"},{url:"icon-512.png",revision:"fa311af470073dfeb0673806ae3e0e2f"},{url:"icon.svg",revision:"1a5efa1aa226aa0533605b7e84667ecd"},{url:"index.html",revision:"b595f6f4165d802b703cd2526fac0ff9"},{url:"registerSW.js",revision:"402b66900e731ca748771b6fc5e7a068"},{url:"favicon.ico",revision:"621ef878b9a700bd2249dad60d9f1141"},{url:"icon.svg",revision:"1a5efa1aa226aa0533605b7e84667ecd"},{url:"icon-192.png",revision:"1a475d65497c0b3609661246d8639ff4"},{url:"icon-512.png",revision:"fa311af470073dfeb0673806ae3e0e2f"},{url:"robots.txt",revision:"b6216d61c03e6ce0c9aea6ca7808f7ca"},{url:"manifest.webmanifest",revision:"112d2a686dfcb44742c79ee217315d5c"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html")))}));
|
||||
1
qbit/vuetorrent/public/workbox-fa446783.js
Normal file
1
qbit/vuetorrent/public/workbox-fa446783.js
Normal file
@@ -0,0 +1 @@
|
||||
define(["exports"],(function(t){"use strict";try{self["workbox:core:7.0.0"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:7.0.0"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class i{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class r extends i{constructor(t,e,s){super((({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)}),e,s)}}class o{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",(t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map((e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})})));t.waitUntil(s),t.ports&&t.ports[0]&&s.then((()=>t.ports[0].postMessage(!0)))}}))}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:i,route:r}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let o=r&&r.handler;const c=t.method;if(!o&&this.i.has(c)&&(o=this.i.get(c)),!o)return;let a;try{a=o.handle({url:s,request:t,event:e,params:i})}catch(t){a=Promise.reject(t)}const h=r&&r.catchHandler;return a instanceof Promise&&(this.o||h)&&(a=a.catch((async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:i})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n}))),a}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const i=this.t.get(s.method)||[];for(const r of i){let i;const o=r.match({url:t,sameOrigin:e,request:s,event:n});if(o)return i=o,(Array.isArray(i)&&0===i.length||o.constructor===Object&&0===Object.keys(o).length||"boolean"==typeof o)&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let c;const a=()=>(c||(c=new o,c.addFetchListener(),c.addCacheListener()),c);function h(t,e,n){let o;if("string"==typeof t){const s=new URL(t,location.href);o=new i((({url:t})=>t.href===s.href),e,n)}else if(t instanceof RegExp)o=new r(t,e,n);else if("function"==typeof t)o=new i(t,e,n);else{if(!(t instanceof i))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});o=t}return a().registerRoute(o),o}const u={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},l=t=>[u.prefix,t,u.suffix].filter((t=>t&&t.length>0)).join("-"),f=t=>t||l(u.precache),w=t=>t||l(u.runtime);function d(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:7.0.0"]&&_()}catch(t){}function p(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const i=new URL(n,location.href),r=new URL(n,location.href);return i.searchParams.set("__WB_REVISION__",e),{cacheKey:i.href,url:r.href}}class y{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class g{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.h.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.h=t}}let R;async function m(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const i=t.clone(),r={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=e?e(r):r,c=function(){if(void 0===R){const t=new Response("");if("body"in t)try{new Response(t.body),R=!0}catch(t){R=!1}R=!1}return R}()?i.body:await i.blob();return new Response(c,o)}function v(t,e){const s=new URL(t);for(const t of e)s.searchParams.delete(t);return s.href}class q{constructor(){this.promise=new Promise(((t,e)=>{this.resolve=t,this.reject=e}))}}const U=new Set;try{self["workbox:strategies:7.0.0"]&&_()}catch(t){}function L(t){return"string"==typeof t?new Request(t):t}class b{constructor(t,e){this.u={},Object.assign(this,e),this.event=e.event,this.l=t,this.p=new q,this.R=[],this.m=[...t.plugins],this.v=new Map;for(const t of this.m)this.v.set(t,{});this.event.waitUntil(this.p.promise)}async fetch(t){const{event:e}=this;let n=L(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const i=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const r=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this.l.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:r,response:t});return t}catch(t){throw i&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:i.clone(),request:r.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=L(t);let s;const{cacheName:n,matchOptions:i}=this.l,r=await this.getCacheKey(e,"read"),o=Object.assign(Object.assign({},i),{cacheName:n});s=await caches.match(r,o);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:i,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(t,e){const n=L(t);var i;await(i=0,new Promise((t=>setTimeout(t,i))));const r=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(o=r.url,new URL(String(o),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var o;const c=await this.q(e);if(!c)return!1;const{cacheName:a,matchOptions:h}=this.l,u=await self.caches.open(a),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const i=v(e.url,s);if(e.url===i)return t.match(e,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),o=await t.keys(e,r);for(const e of o)if(i===v(e.url,s))return t.match(e,n)}(u,r.clone(),["__WB_REVISION__"],h):null;try{await u.put(r,l?c.clone():c)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of U)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:a,oldResponse:f,newResponse:c.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.u[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=L(await t({mode:e,request:n,event:this.event,params:this.params}));this.u[s]=n}return this.u[s]}hasCallback(t){for(const e of this.l.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this.l.plugins)if("function"==typeof e[t]){const s=this.v.get(e),n=n=>{const i=Object.assign(Object.assign({},n),{state:s});return e[t](i)};yield n}}waitUntil(t){return this.R.push(t),t}async doneWaiting(){let t;for(;t=this.R.shift();)await t}destroy(){this.p.resolve(null)}async q(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class C{constructor(t={}){this.cacheName=w(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,i=new b(this,{event:e,request:s,params:n}),r=this.U(i,s,e);return[r,this.L(r,i,s,e)]}async U(t,e,n){let i;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(i=await this._(e,t),!i||"error"===i.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const r of t.iterateCallbacks("handlerDidError"))if(i=await r({error:s,event:n,request:e}),i)break;if(!i)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))i=await s({event:n,request:e,response:i});return i}async L(t,e,s,n){let i,r;try{i=await t}catch(r){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:i}),await e.doneWaiting()}catch(t){t instanceof Error&&(r=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:i,error:r}),e.destroy(),r)throw r}}class E extends C{constructor(t={}){t.cacheName=f(t.cacheName),super(t),this.C=!1!==t.fallbackToNetwork,this.plugins.push(E.copyRedirectedCacheableResponsesPlugin)}async _(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.O(t,e):await this.N(t,e))}async N(t,e){let n;const i=e.params||{};if(!this.C)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=i.integrity,r=t.integrity,o=!r||r===s;n=await e.fetch(new Request(t,{integrity:"no-cors"!==t.mode?r||s:void 0})),s&&o&&"no-cors"!==t.mode&&(this.k(),await e.cachePut(t,n.clone()))}return n}async O(t,e){this.k();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}k(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==E.copyRedirectedCacheableResponsesPlugin&&(n===E.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(E.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}E.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},E.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await m(t):t};class O{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.K=new Map,this.P=new Map,this.T=new Map,this.l=new E({cacheName:f(t),plugins:[...e,new g({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this.l}precache(t){this.addToCacheList(t),this.W||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.W=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:i}=p(n),r="string"!=typeof n&&n.revision?"reload":"default";if(this.K.has(i)&&this.K.get(i)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.K.get(i),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.T.has(t)&&this.T.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:i});this.T.set(t,n.integrity)}if(this.K.set(i,t),this.P.set(i,r),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return d(t,(async()=>{const e=new y;this.strategy.plugins.push(e);for(const[e,s]of this.K){const n=this.T.get(s),i=this.P.get(e),r=new Request(e,{integrity:n,cache:i,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}}))}activate(t){return d(t,(async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.K.values()),n=[];for(const i of e)s.has(i.url)||(await t.delete(i),n.push(i.url));return{deletedURLs:n}}))}getURLsToCacheKeys(){return this.K}getCachedURLs(){return[...this.K.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.K.get(e.href)}getIntegrityForCacheKey(t){return this.T.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}let x;const N=()=>(x||(x=new O),x);class k extends i{constructor(t,e){super((({request:s})=>{const n=t.getURLsToCacheKeys();for(const i of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:i}={}){const r=new URL(t,location.href);r.hash="",yield r.href;const o=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some((t=>t.test(s)))&&t.searchParams.delete(s);return t}(r,e);if(yield o.href,s&&o.pathname.endsWith("/")){const t=new URL(o.href);t.pathname+=s,yield t.href}if(n){const t=new URL(o.href);t.pathname+=".html",yield t.href}if(i){const t=i({url:r});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(i);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}}),t.strategy)}}t.NavigationRoute=class extends i{constructor(t,{allowlist:e=[/./],denylist:s=[]}={}){super((t=>this.j(t)),t),this.M=e,this.S=s}j({url:t,request:e}){if(e&&"navigate"!==e.mode)return!1;const s=t.pathname+t.search;for(const t of this.S)if(t.test(s))return!1;return!!this.M.some((t=>t.test(s)))}},t.cleanupOutdatedCaches=function(){self.addEventListener("activate",(t=>{const e=f();t.waitUntil((async(t,e="-precache-")=>{const s=(await self.caches.keys()).filter((s=>s.includes(e)&&s.includes(self.registration.scope)&&s!==t));return await Promise.all(s.map((t=>self.caches.delete(t)))),s})(e).then((t=>{})))}))},t.clientsClaim=function(){self.addEventListener("activate",(()=>self.clients.claim()))},t.createHandlerBoundToURL=function(t){return N().createHandlerBoundToURL(t)},t.precacheAndRoute=function(t,e){!function(t){N().precache(t)}(t),function(t){const e=N();h(new k(e,t))}(e)},t.registerRoute=h}));
|
||||
1
qbit/vuetorrent/version.txt
Normal file
1
qbit/vuetorrent/version.txt
Normal file
@@ -0,0 +1 @@
|
||||
2.4.0
|
||||
7
vim/.vim/.netrwhist
Normal file
7
vim/.vim/.netrwhist
Normal file
@@ -0,0 +1,7 @@
|
||||
let g:netrw_dirhistmax =10
|
||||
let g:netrw_dirhistcnt =5
|
||||
let g:netrw_dirhist_5='/Users/joshp/.config/nvim'
|
||||
let g:netrw_dirhist_4='/Users/joshp/nvim'
|
||||
let g:netrw_dirhist_3='/Users/joshp/nvim/lua'
|
||||
let g:netrw_dirhist_2='/Users/joshp/nvim/lua/joshp'
|
||||
let g:netrw_dirhist_1='/Users/joshp/nvim'
|
||||
58
vim/.vim/autoload/lightline/colorscheme/onedark.vim
Normal file
58
vim/.vim/autoload/lightline/colorscheme/onedark.vim
Normal file
@@ -0,0 +1,58 @@
|
||||
" [onedark.vim](https://github.com/joshdick/onedark.vim/)
|
||||
|
||||
" This is a [lightline.vim](https://github.com/itchyny/lightline.vim) colorscheme for use with
|
||||
" the [onedark.vim](https://github.com/joshdick/onedark.vim) colorscheme.
|
||||
|
||||
let s:colors = onedark#GetColors()
|
||||
|
||||
if get(g:, 'onedark_termcolors', 256) == 16
|
||||
let s:term_red = s:colors.red.cterm16
|
||||
let s:term_green = s:colors.green.cterm16
|
||||
let s:term_yellow = s:colors.yellow.cterm16
|
||||
let s:term_blue = s:colors.blue.cterm16
|
||||
let s:term_purple = s:colors.purple.cterm16
|
||||
let s:term_white = s:colors.white.cterm16
|
||||
let s:term_cursor_grey = s:colors.cursor_grey.cterm16
|
||||
let s:term_visual_grey = s:colors.visual_grey.cterm16
|
||||
else
|
||||
let s:term_red = s:colors.red.cterm
|
||||
let s:term_green = s:colors.green.cterm
|
||||
let s:term_yellow = s:colors.yellow.cterm
|
||||
let s:term_blue = s:colors.blue.cterm
|
||||
let s:term_purple = s:colors.purple.cterm
|
||||
let s:term_white = s:colors.white.cterm
|
||||
let s:term_cursor_grey = s:colors.cursor_grey.cterm
|
||||
let s:term_visual_grey = s:colors.visual_grey.cterm
|
||||
endif
|
||||
|
||||
let s:red = [ s:colors.red.gui, s:term_red ]
|
||||
let s:green = [ s:colors.green.gui, s:term_green ]
|
||||
let s:yellow = [ s:colors.yellow.gui, s:term_yellow ]
|
||||
let s:blue = [ s:colors.blue.gui, s:term_blue ]
|
||||
let s:purple = [ s:colors.purple.gui, s:term_purple ]
|
||||
let s:white = [ s:colors.white.gui, s:term_white ]
|
||||
let s:cursor_grey = [ s:colors.cursor_grey.gui, s:term_cursor_grey ]
|
||||
let s:visual_grey = [ s:colors.visual_grey.gui, s:term_visual_grey ]
|
||||
|
||||
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
|
||||
let s:p.normal.left = [ [ s:cursor_grey, s:green ], [ s:white, s:visual_grey ] ]
|
||||
let s:p.normal.right = [ [ s:cursor_grey, s:green ], [ s:white, s:visual_grey ] ]
|
||||
let s:p.inactive.left = [ [ s:white, s:visual_grey ], [ s:white, s:visual_grey ] ]
|
||||
let s:p.inactive.right = [ [ s:cursor_grey, s:white ], [ s:cursor_grey, s:white ] ]
|
||||
let s:p.insert.left = [ [ s:cursor_grey, s:blue ], [ s:white, s:visual_grey ] ]
|
||||
let s:p.insert.right = [ [ s:cursor_grey, s:blue ], [ s:white, s:visual_grey ] ]
|
||||
let s:p.replace.left = [ [ s:cursor_grey, s:red ], [ s:white, s:visual_grey ] ]
|
||||
let s:p.replace.right = [ [ s:cursor_grey, s:red ], [ s:white, s:visual_grey ] ]
|
||||
let s:p.visual.left = [ [ s:cursor_grey, s:purple ], [ s:white, s:visual_grey ] ]
|
||||
let s:p.visual.right = [ [ s:cursor_grey, s:purple ], [ s:white, s:visual_grey ] ]
|
||||
let s:p.normal.middle = [ [ s:white, s:cursor_grey ] ]
|
||||
let s:p.inactive.middle = [ [ s:white, s:visual_grey ] ]
|
||||
let s:p.tabline.left = [ [ s:white, s:visual_grey ] ]
|
||||
let s:p.tabline.tabsel = [ [ s:cursor_grey, s:white ] ]
|
||||
let s:p.tabline.middle = [ [ s:white, s:cursor_grey ] ]
|
||||
let s:p.tabline.right = [ [ s:white, s:visual_grey ] ]
|
||||
let s:p.normal.error = [ [ s:cursor_grey, s:red ] ]
|
||||
let s:p.normal.warning = [ [ s:cursor_grey, s:yellow ] ]
|
||||
|
||||
let g:lightline#colorscheme#onedark#palette = lightline#colorscheme#flatten(s:p)
|
||||
|
||||
29
vim/.vim/autoload/onedark.vim
Normal file
29
vim/.vim/autoload/onedark.vim
Normal file
@@ -0,0 +1,29 @@
|
||||
" [onedark.vim](https://github.com/joshdick/onedark.vim/)
|
||||
|
||||
let s:overrides = get(g:, "onedark_color_overrides", {})
|
||||
|
||||
let s:colors = {
|
||||
\ "red": get(s:overrides, "red", { "gui": "#E06C75", "cterm": "204", "cterm16": "1" }),
|
||||
\ "dark_red": get(s:overrides, "dark_red", { "gui": "#BE5046", "cterm": "196", "cterm16": "9" }),
|
||||
\ "green": get(s:overrides, "green", { "gui": "#98C379", "cterm": "114", "cterm16": "2" }),
|
||||
\ "yellow": get(s:overrides, "yellow", { "gui": "#E5C07B", "cterm": "180", "cterm16": "3" }),
|
||||
\ "dark_yellow": get(s:overrides, "dark_yellow", { "gui": "#D19A66", "cterm": "173", "cterm16": "11" }),
|
||||
\ "blue": get(s:overrides, "blue", { "gui": "#61AFEF", "cterm": "39", "cterm16": "4" }),
|
||||
\ "purple": get(s:overrides, "purple", { "gui": "#C678DD", "cterm": "170", "cterm16": "5" }),
|
||||
\ "cyan": get(s:overrides, "cyan", { "gui": "#56B6C2", "cterm": "38", "cterm16": "6" }),
|
||||
\ "white": get(s:overrides, "white", { "gui": "#ABB2BF", "cterm": "145", "cterm16": "15" }),
|
||||
\ "black": get(s:overrides, "black", { "gui": "#282C34", "cterm": "235", "cterm16": "0" }),
|
||||
\ "foreground": get(s:overrides, "foreground", { "gui": "#ABB2BF", "cterm": "145", "cterm16": "NONE" }),
|
||||
\ "background": get(s:overrides, "background", { "gui": "#282C34", "cterm": "235", "cterm16": "NONE" }),
|
||||
\ "comment_grey": get(s:overrides, "comment_grey", { "gui": "#5C6370", "cterm": "59", "cterm16": "7" }),
|
||||
\ "gutter_fg_grey": get(s:overrides, "gutter_fg_grey", { "gui": "#4B5263", "cterm": "238", "cterm16": "8" }),
|
||||
\ "cursor_grey": get(s:overrides, "cursor_grey", { "gui": "#2C323C", "cterm": "236", "cterm16": "0" }),
|
||||
\ "visual_grey": get(s:overrides, "visual_grey", { "gui": "#3E4452", "cterm": "237", "cterm16": "8" }),
|
||||
\ "menu_grey": get(s:overrides, "menu_grey", { "gui": "#3E4452", "cterm": "237", "cterm16": "7" }),
|
||||
\ "special_grey": get(s:overrides, "special_grey", { "gui": "#3B4048", "cterm": "238", "cterm16": "7" }),
|
||||
\ "vertsplit": get(s:overrides, "vertsplit", { "gui": "#3E4452", "cterm": "59", "cterm16": "7" }),
|
||||
\}
|
||||
|
||||
function! onedark#GetColors()
|
||||
return s:colors
|
||||
endfunction
|
||||
2812
vim/.vim/autoload/plug.vim
Normal file
2812
vim/.vim/autoload/plug.vim
Normal file
@@ -0,0 +1,2812 @@
|
||||
" vim-plug: Vim plugin manager
|
||||
" ============================
|
||||
"
|
||||
" Download plug.vim and put it in ~/.vim/autoload
|
||||
"
|
||||
" curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
|
||||
" https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
||||
"
|
||||
" Edit your .vimrc
|
||||
"
|
||||
" call plug#begin('~/.vim/plugged')
|
||||
"
|
||||
" " Make sure you use single quotes
|
||||
"
|
||||
" " Shorthand notation; fetches https://github.com/junegunn/vim-easy-align
|
||||
" Plug 'junegunn/vim-easy-align'
|
||||
"
|
||||
" " Any valid git URL is allowed
|
||||
" Plug 'https://github.com/junegunn/vim-github-dashboard.git'
|
||||
"
|
||||
" " Multiple Plug commands can be written in a single line using | separators
|
||||
" Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'
|
||||
"
|
||||
" " On-demand loading
|
||||
" Plug 'preservim/nerdtree', { 'on': 'NERDTreeToggle' }
|
||||
" Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
|
||||
"
|
||||
" " Using a non-default branch
|
||||
" Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' }
|
||||
"
|
||||
" " Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
|
||||
" Plug 'fatih/vim-go', { 'tag': '*' }
|
||||
"
|
||||
" " Plugin options
|
||||
" Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' }
|
||||
"
|
||||
" " Plugin outside ~/.vim/plugged with post-update hook
|
||||
" Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
|
||||
"
|
||||
" " Unmanaged plugin (manually installed and updated)
|
||||
" Plug '~/my-prototype-plugin'
|
||||
"
|
||||
" " Initialize plugin system
|
||||
" call plug#end()
|
||||
"
|
||||
" Then reload .vimrc and :PlugInstall to install plugins.
|
||||
"
|
||||
" Plug options:
|
||||
"
|
||||
"| Option | Description |
|
||||
"| ----------------------- | ------------------------------------------------ |
|
||||
"| `branch`/`tag`/`commit` | Branch/tag/commit of the repository to use |
|
||||
"| `rtp` | Subdirectory that contains Vim plugin |
|
||||
"| `dir` | Custom directory for the plugin |
|
||||
"| `as` | Use different name for the plugin |
|
||||
"| `do` | Post-update hook (string or funcref) |
|
||||
"| `on` | On-demand loading: Commands or `<Plug>`-mappings |
|
||||
"| `for` | On-demand loading: File types |
|
||||
"| `frozen` | Do not update unless explicitly specified |
|
||||
"
|
||||
" More information: https://github.com/junegunn/vim-plug
|
||||
"
|
||||
"
|
||||
" Copyright (c) 2017 Junegunn Choi
|
||||
"
|
||||
" MIT License
|
||||
"
|
||||
" Permission is hereby granted, free of charge, to any person obtaining
|
||||
" a copy of this software and associated documentation files (the
|
||||
" "Software"), to deal in the Software without restriction, including
|
||||
" without limitation the rights to use, copy, modify, merge, publish,
|
||||
" distribute, sublicense, and/or sell copies of the Software, and to
|
||||
" permit persons to whom the Software is furnished to do so, subject to
|
||||
" the following conditions:
|
||||
"
|
||||
" The above copyright notice and this permission notice shall be
|
||||
" included in all copies or substantial portions of the Software.
|
||||
"
|
||||
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
" NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
" LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
" OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
" WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
if exists('g:loaded_plug')
|
||||
finish
|
||||
endif
|
||||
let g:loaded_plug = 1
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
let s:plug_src = 'https://github.com/junegunn/vim-plug.git'
|
||||
let s:plug_tab = get(s:, 'plug_tab', -1)
|
||||
let s:plug_buf = get(s:, 'plug_buf', -1)
|
||||
let s:mac_gui = has('gui_macvim') && has('gui_running')
|
||||
let s:is_win = has('win32')
|
||||
let s:nvim = has('nvim-0.2') || (has('nvim') && exists('*jobwait') && !s:is_win)
|
||||
let s:vim8 = has('patch-8.0.0039') && exists('*job_start')
|
||||
if s:is_win && &shellslash
|
||||
set noshellslash
|
||||
let s:me = resolve(expand('<sfile>:p'))
|
||||
set shellslash
|
||||
else
|
||||
let s:me = resolve(expand('<sfile>:p'))
|
||||
endif
|
||||
let s:base_spec = { 'branch': '', 'frozen': 0 }
|
||||
let s:TYPE = {
|
||||
\ 'string': type(''),
|
||||
\ 'list': type([]),
|
||||
\ 'dict': type({}),
|
||||
\ 'funcref': type(function('call'))
|
||||
\ }
|
||||
let s:loaded = get(s:, 'loaded', {})
|
||||
let s:triggers = get(s:, 'triggers', {})
|
||||
|
||||
function! s:is_powershell(shell)
|
||||
return a:shell =~# 'powershell\(\.exe\)\?$' || a:shell =~# 'pwsh\(\.exe\)\?$'
|
||||
endfunction
|
||||
|
||||
function! s:isabsolute(dir) abort
|
||||
return a:dir =~# '^/' || (has('win32') && a:dir =~? '^\%(\\\|[A-Z]:\)')
|
||||
endfunction
|
||||
|
||||
function! s:git_dir(dir) abort
|
||||
let gitdir = s:trim(a:dir) . '/.git'
|
||||
if isdirectory(gitdir)
|
||||
return gitdir
|
||||
endif
|
||||
if !filereadable(gitdir)
|
||||
return ''
|
||||
endif
|
||||
let gitdir = matchstr(get(readfile(gitdir), 0, ''), '^gitdir: \zs.*')
|
||||
if len(gitdir) && !s:isabsolute(gitdir)
|
||||
let gitdir = a:dir . '/' . gitdir
|
||||
endif
|
||||
return isdirectory(gitdir) ? gitdir : ''
|
||||
endfunction
|
||||
|
||||
function! s:git_origin_url(dir) abort
|
||||
let gitdir = s:git_dir(a:dir)
|
||||
let config = gitdir . '/config'
|
||||
if empty(gitdir) || !filereadable(config)
|
||||
return ''
|
||||
endif
|
||||
return matchstr(join(readfile(config)), '\[remote "origin"\].\{-}url\s*=\s*\zs\S*\ze')
|
||||
endfunction
|
||||
|
||||
function! s:git_revision(dir) abort
|
||||
let gitdir = s:git_dir(a:dir)
|
||||
let head = gitdir . '/HEAD'
|
||||
if empty(gitdir) || !filereadable(head)
|
||||
return ''
|
||||
endif
|
||||
|
||||
let line = get(readfile(head), 0, '')
|
||||
let ref = matchstr(line, '^ref: \zs.*')
|
||||
if empty(ref)
|
||||
return line
|
||||
endif
|
||||
|
||||
if filereadable(gitdir . '/' . ref)
|
||||
return get(readfile(gitdir . '/' . ref), 0, '')
|
||||
endif
|
||||
|
||||
if filereadable(gitdir . '/packed-refs')
|
||||
for line in readfile(gitdir . '/packed-refs')
|
||||
if line =~# ' ' . ref
|
||||
return matchstr(line, '^[0-9a-f]*')
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
||||
return ''
|
||||
endfunction
|
||||
|
||||
function! s:git_local_branch(dir) abort
|
||||
let gitdir = s:git_dir(a:dir)
|
||||
let head = gitdir . '/HEAD'
|
||||
if empty(gitdir) || !filereadable(head)
|
||||
return ''
|
||||
endif
|
||||
let branch = matchstr(get(readfile(head), 0, ''), '^ref: refs/heads/\zs.*')
|
||||
return len(branch) ? branch : 'HEAD'
|
||||
endfunction
|
||||
|
||||
function! s:git_origin_branch(spec)
|
||||
if len(a:spec.branch)
|
||||
return a:spec.branch
|
||||
endif
|
||||
|
||||
" The file may not be present if this is a local repository
|
||||
let gitdir = s:git_dir(a:spec.dir)
|
||||
let origin_head = gitdir.'/refs/remotes/origin/HEAD'
|
||||
if len(gitdir) && filereadable(origin_head)
|
||||
return matchstr(get(readfile(origin_head), 0, ''),
|
||||
\ '^ref: refs/remotes/origin/\zs.*')
|
||||
endif
|
||||
|
||||
" The command may not return the name of a branch in detached HEAD state
|
||||
let result = s:lines(s:system('git symbolic-ref --short HEAD', a:spec.dir))
|
||||
return v:shell_error ? '' : result[-1]
|
||||
endfunction
|
||||
|
||||
if s:is_win
|
||||
function! s:plug_call(fn, ...)
|
||||
let shellslash = &shellslash
|
||||
try
|
||||
set noshellslash
|
||||
return call(a:fn, a:000)
|
||||
finally
|
||||
let &shellslash = shellslash
|
||||
endtry
|
||||
endfunction
|
||||
else
|
||||
function! s:plug_call(fn, ...)
|
||||
return call(a:fn, a:000)
|
||||
endfunction
|
||||
endif
|
||||
|
||||
function! s:plug_getcwd()
|
||||
return s:plug_call('getcwd')
|
||||
endfunction
|
||||
|
||||
function! s:plug_fnamemodify(fname, mods)
|
||||
return s:plug_call('fnamemodify', a:fname, a:mods)
|
||||
endfunction
|
||||
|
||||
function! s:plug_expand(fmt)
|
||||
return s:plug_call('expand', a:fmt, 1)
|
||||
endfunction
|
||||
|
||||
function! s:plug_tempname()
|
||||
return s:plug_call('tempname')
|
||||
endfunction
|
||||
|
||||
function! plug#begin(...)
|
||||
if a:0 > 0
|
||||
let s:plug_home_org = a:1
|
||||
let home = s:path(s:plug_fnamemodify(s:plug_expand(a:1), ':p'))
|
||||
elseif exists('g:plug_home')
|
||||
let home = s:path(g:plug_home)
|
||||
elseif has('nvim')
|
||||
let home = stdpath('data') . '/plugged'
|
||||
elseif !empty(&rtp)
|
||||
let home = s:path(split(&rtp, ',')[0]) . '/plugged'
|
||||
else
|
||||
return s:err('Unable to determine plug home. Try calling plug#begin() with a path argument.')
|
||||
endif
|
||||
if s:plug_fnamemodify(home, ':t') ==# 'plugin' && s:plug_fnamemodify(home, ':h') ==# s:first_rtp
|
||||
return s:err('Invalid plug home. '.home.' is a standard Vim runtime path and is not allowed.')
|
||||
endif
|
||||
|
||||
let g:plug_home = home
|
||||
let g:plugs = {}
|
||||
let g:plugs_order = []
|
||||
let s:triggers = {}
|
||||
|
||||
call s:define_commands()
|
||||
return 1
|
||||
endfunction
|
||||
|
||||
function! s:define_commands()
|
||||
command! -nargs=+ -bar Plug call plug#(<args>)
|
||||
if !executable('git')
|
||||
return s:err('`git` executable not found. Most commands will not be available. To suppress this message, prepend `silent!` to `call plug#begin(...)`.')
|
||||
endif
|
||||
if has('win32')
|
||||
\ && &shellslash
|
||||
\ && (&shell =~# 'cmd\(\.exe\)\?$' || s:is_powershell(&shell))
|
||||
return s:err('vim-plug does not support shell, ' . &shell . ', when shellslash is set.')
|
||||
endif
|
||||
if !has('nvim')
|
||||
\ && (has('win32') || has('win32unix'))
|
||||
\ && !has('multi_byte')
|
||||
return s:err('Vim needs +multi_byte feature on Windows to run shell commands. Enable +iconv for best results.')
|
||||
endif
|
||||
command! -nargs=* -bar -bang -complete=customlist,s:names PlugInstall call s:install(<bang>0, [<f-args>])
|
||||
command! -nargs=* -bar -bang -complete=customlist,s:names PlugUpdate call s:update(<bang>0, [<f-args>])
|
||||
command! -nargs=0 -bar -bang PlugClean call s:clean(<bang>0)
|
||||
command! -nargs=0 -bar PlugUpgrade if s:upgrade() | execute 'source' s:esc(s:me) | endif
|
||||
command! -nargs=0 -bar PlugStatus call s:status()
|
||||
command! -nargs=0 -bar PlugDiff call s:diff()
|
||||
command! -nargs=? -bar -bang -complete=file PlugSnapshot call s:snapshot(<bang>0, <f-args>)
|
||||
endfunction
|
||||
|
||||
function! s:to_a(v)
|
||||
return type(a:v) == s:TYPE.list ? a:v : [a:v]
|
||||
endfunction
|
||||
|
||||
function! s:to_s(v)
|
||||
return type(a:v) == s:TYPE.string ? a:v : join(a:v, "\n") . "\n"
|
||||
endfunction
|
||||
|
||||
function! s:glob(from, pattern)
|
||||
return s:lines(globpath(a:from, a:pattern))
|
||||
endfunction
|
||||
|
||||
function! s:source(from, ...)
|
||||
let found = 0
|
||||
for pattern in a:000
|
||||
for vim in s:glob(a:from, pattern)
|
||||
execute 'source' s:esc(vim)
|
||||
let found = 1
|
||||
endfor
|
||||
endfor
|
||||
return found
|
||||
endfunction
|
||||
|
||||
function! s:assoc(dict, key, val)
|
||||
let a:dict[a:key] = add(get(a:dict, a:key, []), a:val)
|
||||
endfunction
|
||||
|
||||
function! s:ask(message, ...)
|
||||
call inputsave()
|
||||
echohl WarningMsg
|
||||
let answer = input(a:message.(a:0 ? ' (y/N/a) ' : ' (y/N) '))
|
||||
echohl None
|
||||
call inputrestore()
|
||||
echo "\r"
|
||||
return (a:0 && answer =~? '^a') ? 2 : (answer =~? '^y') ? 1 : 0
|
||||
endfunction
|
||||
|
||||
function! s:ask_no_interrupt(...)
|
||||
try
|
||||
return call('s:ask', a:000)
|
||||
catch
|
||||
return 0
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
function! s:lazy(plug, opt)
|
||||
return has_key(a:plug, a:opt) &&
|
||||
\ (empty(s:to_a(a:plug[a:opt])) ||
|
||||
\ !isdirectory(a:plug.dir) ||
|
||||
\ len(s:glob(s:rtp(a:plug), 'plugin')) ||
|
||||
\ len(s:glob(s:rtp(a:plug), 'after/plugin')))
|
||||
endfunction
|
||||
|
||||
function! plug#end()
|
||||
if !exists('g:plugs')
|
||||
return s:err('plug#end() called without calling plug#begin() first')
|
||||
endif
|
||||
|
||||
if exists('#PlugLOD')
|
||||
augroup PlugLOD
|
||||
autocmd!
|
||||
augroup END
|
||||
augroup! PlugLOD
|
||||
endif
|
||||
let lod = { 'ft': {}, 'map': {}, 'cmd': {} }
|
||||
|
||||
if get(g:, 'did_load_filetypes', 0)
|
||||
filetype off
|
||||
endif
|
||||
for name in g:plugs_order
|
||||
if !has_key(g:plugs, name)
|
||||
continue
|
||||
endif
|
||||
let plug = g:plugs[name]
|
||||
if get(s:loaded, name, 0) || !s:lazy(plug, 'on') && !s:lazy(plug, 'for')
|
||||
let s:loaded[name] = 1
|
||||
continue
|
||||
endif
|
||||
|
||||
if has_key(plug, 'on')
|
||||
let s:triggers[name] = { 'map': [], 'cmd': [] }
|
||||
for cmd in s:to_a(plug.on)
|
||||
if cmd =~? '^<Plug>.\+'
|
||||
if empty(mapcheck(cmd)) && empty(mapcheck(cmd, 'i'))
|
||||
call s:assoc(lod.map, cmd, name)
|
||||
endif
|
||||
call add(s:triggers[name].map, cmd)
|
||||
elseif cmd =~# '^[A-Z]'
|
||||
let cmd = substitute(cmd, '!*$', '', '')
|
||||
if exists(':'.cmd) != 2
|
||||
call s:assoc(lod.cmd, cmd, name)
|
||||
endif
|
||||
call add(s:triggers[name].cmd, cmd)
|
||||
else
|
||||
call s:err('Invalid `on` option: '.cmd.
|
||||
\ '. Should start with an uppercase letter or `<Plug>`.')
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
||||
if has_key(plug, 'for')
|
||||
let types = s:to_a(plug.for)
|
||||
if !empty(types)
|
||||
augroup filetypedetect
|
||||
call s:source(s:rtp(plug), 'ftdetect/**/*.vim', 'after/ftdetect/**/*.vim')
|
||||
augroup END
|
||||
endif
|
||||
for type in types
|
||||
call s:assoc(lod.ft, type, name)
|
||||
endfor
|
||||
endif
|
||||
endfor
|
||||
|
||||
for [cmd, names] in items(lod.cmd)
|
||||
execute printf(
|
||||
\ 'command! -nargs=* -range -bang -complete=file %s call s:lod_cmd(%s, "<bang>", <line1>, <line2>, <q-args>, %s)',
|
||||
\ cmd, string(cmd), string(names))
|
||||
endfor
|
||||
|
||||
for [map, names] in items(lod.map)
|
||||
for [mode, map_prefix, key_prefix] in
|
||||
\ [['i', '<C-\><C-O>', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']]
|
||||
execute printf(
|
||||
\ '%snoremap <silent> %s %s:<C-U>call <SID>lod_map(%s, %s, %s, "%s")<CR>',
|
||||
\ mode, map, map_prefix, string(map), string(names), mode != 'i', key_prefix)
|
||||
endfor
|
||||
endfor
|
||||
|
||||
for [ft, names] in items(lod.ft)
|
||||
augroup PlugLOD
|
||||
execute printf('autocmd FileType %s call <SID>lod_ft(%s, %s)',
|
||||
\ ft, string(ft), string(names))
|
||||
augroup END
|
||||
endfor
|
||||
|
||||
call s:reorg_rtp()
|
||||
filetype plugin indent on
|
||||
if has('vim_starting')
|
||||
if has('syntax') && !exists('g:syntax_on')
|
||||
syntax enable
|
||||
end
|
||||
else
|
||||
call s:reload_plugins()
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:loaded_names()
|
||||
return filter(copy(g:plugs_order), 'get(s:loaded, v:val, 0)')
|
||||
endfunction
|
||||
|
||||
function! s:load_plugin(spec)
|
||||
call s:source(s:rtp(a:spec), 'plugin/**/*.vim', 'after/plugin/**/*.vim')
|
||||
endfunction
|
||||
|
||||
function! s:reload_plugins()
|
||||
for name in s:loaded_names()
|
||||
call s:load_plugin(g:plugs[name])
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
function! s:trim(str)
|
||||
return substitute(a:str, '[\/]\+$', '', '')
|
||||
endfunction
|
||||
|
||||
function! s:version_requirement(val, min)
|
||||
for idx in range(0, len(a:min) - 1)
|
||||
let v = get(a:val, idx, 0)
|
||||
if v < a:min[idx] | return 0
|
||||
elseif v > a:min[idx] | return 1
|
||||
endif
|
||||
endfor
|
||||
return 1
|
||||
endfunction
|
||||
|
||||
function! s:git_version_requirement(...)
|
||||
if !exists('s:git_version')
|
||||
let s:git_version = map(split(split(s:system(['git', '--version']))[2], '\.'), 'str2nr(v:val)')
|
||||
endif
|
||||
return s:version_requirement(s:git_version, a:000)
|
||||
endfunction
|
||||
|
||||
function! s:progress_opt(base)
|
||||
return a:base && !s:is_win &&
|
||||
\ s:git_version_requirement(1, 7, 1) ? '--progress' : ''
|
||||
endfunction
|
||||
|
||||
function! s:rtp(spec)
|
||||
return s:path(a:spec.dir . get(a:spec, 'rtp', ''))
|
||||
endfunction
|
||||
|
||||
if s:is_win
|
||||
function! s:path(path)
|
||||
return s:trim(substitute(a:path, '/', '\', 'g'))
|
||||
endfunction
|
||||
|
||||
function! s:dirpath(path)
|
||||
return s:path(a:path) . '\'
|
||||
endfunction
|
||||
|
||||
function! s:is_local_plug(repo)
|
||||
return a:repo =~? '^[a-z]:\|^[%~]'
|
||||
endfunction
|
||||
|
||||
" Copied from fzf
|
||||
function! s:wrap_cmds(cmds)
|
||||
let cmds = [
|
||||
\ '@echo off',
|
||||
\ 'setlocal enabledelayedexpansion']
|
||||
\ + (type(a:cmds) == type([]) ? a:cmds : [a:cmds])
|
||||
\ + ['endlocal']
|
||||
if has('iconv')
|
||||
if !exists('s:codepage')
|
||||
let s:codepage = libcallnr('kernel32.dll', 'GetACP', 0)
|
||||
endif
|
||||
return map(cmds, printf('iconv(v:val."\r", "%s", "cp%d")', &encoding, s:codepage))
|
||||
endif
|
||||
return map(cmds, 'v:val."\r"')
|
||||
endfunction
|
||||
|
||||
function! s:batchfile(cmd)
|
||||
let batchfile = s:plug_tempname().'.bat'
|
||||
call writefile(s:wrap_cmds(a:cmd), batchfile)
|
||||
let cmd = plug#shellescape(batchfile, {'shell': &shell, 'script': 0})
|
||||
if s:is_powershell(&shell)
|
||||
let cmd = '& ' . cmd
|
||||
endif
|
||||
return [batchfile, cmd]
|
||||
endfunction
|
||||
else
|
||||
function! s:path(path)
|
||||
return s:trim(a:path)
|
||||
endfunction
|
||||
|
||||
function! s:dirpath(path)
|
||||
return substitute(a:path, '[/\\]*$', '/', '')
|
||||
endfunction
|
||||
|
||||
function! s:is_local_plug(repo)
|
||||
return a:repo[0] =~ '[/$~]'
|
||||
endfunction
|
||||
endif
|
||||
|
||||
function! s:err(msg)
|
||||
echohl ErrorMsg
|
||||
echom '[vim-plug] '.a:msg
|
||||
echohl None
|
||||
endfunction
|
||||
|
||||
function! s:warn(cmd, msg)
|
||||
echohl WarningMsg
|
||||
execute a:cmd 'a:msg'
|
||||
echohl None
|
||||
endfunction
|
||||
|
||||
function! s:esc(path)
|
||||
return escape(a:path, ' ')
|
||||
endfunction
|
||||
|
||||
function! s:escrtp(path)
|
||||
return escape(a:path, ' ,')
|
||||
endfunction
|
||||
|
||||
function! s:remove_rtp()
|
||||
for name in s:loaded_names()
|
||||
let rtp = s:rtp(g:plugs[name])
|
||||
execute 'set rtp-='.s:escrtp(rtp)
|
||||
let after = globpath(rtp, 'after')
|
||||
if isdirectory(after)
|
||||
execute 'set rtp-='.s:escrtp(after)
|
||||
endif
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
function! s:reorg_rtp()
|
||||
if !empty(s:first_rtp)
|
||||
execute 'set rtp-='.s:first_rtp
|
||||
execute 'set rtp-='.s:last_rtp
|
||||
endif
|
||||
|
||||
" &rtp is modified from outside
|
||||
if exists('s:prtp') && s:prtp !=# &rtp
|
||||
call s:remove_rtp()
|
||||
unlet! s:middle
|
||||
endif
|
||||
|
||||
let s:middle = get(s:, 'middle', &rtp)
|
||||
let rtps = map(s:loaded_names(), 's:rtp(g:plugs[v:val])')
|
||||
let afters = filter(map(copy(rtps), 'globpath(v:val, "after")'), '!empty(v:val)')
|
||||
let rtp = join(map(rtps, 'escape(v:val, ",")'), ',')
|
||||
\ . ','.s:middle.','
|
||||
\ . join(map(afters, 'escape(v:val, ",")'), ',')
|
||||
let &rtp = substitute(substitute(rtp, ',,*', ',', 'g'), '^,\|,$', '', 'g')
|
||||
let s:prtp = &rtp
|
||||
|
||||
if !empty(s:first_rtp)
|
||||
execute 'set rtp^='.s:first_rtp
|
||||
execute 'set rtp+='.s:last_rtp
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:doautocmd(...)
|
||||
if exists('#'.join(a:000, '#'))
|
||||
execute 'doautocmd' ((v:version > 703 || has('patch442')) ? '<nomodeline>' : '') join(a:000)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:dobufread(names)
|
||||
for name in a:names
|
||||
let path = s:rtp(g:plugs[name])
|
||||
for dir in ['ftdetect', 'ftplugin', 'after/ftdetect', 'after/ftplugin']
|
||||
if len(finddir(dir, path))
|
||||
if exists('#BufRead')
|
||||
doautocmd BufRead
|
||||
endif
|
||||
return
|
||||
endif
|
||||
endfor
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
function! plug#load(...)
|
||||
if a:0 == 0
|
||||
return s:err('Argument missing: plugin name(s) required')
|
||||
endif
|
||||
if !exists('g:plugs')
|
||||
return s:err('plug#begin was not called')
|
||||
endif
|
||||
let names = a:0 == 1 && type(a:1) == s:TYPE.list ? a:1 : a:000
|
||||
let unknowns = filter(copy(names), '!has_key(g:plugs, v:val)')
|
||||
if !empty(unknowns)
|
||||
let s = len(unknowns) > 1 ? 's' : ''
|
||||
return s:err(printf('Unknown plugin%s: %s', s, join(unknowns, ', ')))
|
||||
end
|
||||
let unloaded = filter(copy(names), '!get(s:loaded, v:val, 0)')
|
||||
if !empty(unloaded)
|
||||
for name in unloaded
|
||||
call s:lod([name], ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin'])
|
||||
endfor
|
||||
call s:dobufread(unloaded)
|
||||
return 1
|
||||
end
|
||||
return 0
|
||||
endfunction
|
||||
|
||||
function! s:remove_triggers(name)
|
||||
if !has_key(s:triggers, a:name)
|
||||
return
|
||||
endif
|
||||
for cmd in s:triggers[a:name].cmd
|
||||
execute 'silent! delc' cmd
|
||||
endfor
|
||||
for map in s:triggers[a:name].map
|
||||
execute 'silent! unmap' map
|
||||
execute 'silent! iunmap' map
|
||||
endfor
|
||||
call remove(s:triggers, a:name)
|
||||
endfunction
|
||||
|
||||
function! s:lod(names, types, ...)
|
||||
for name in a:names
|
||||
call s:remove_triggers(name)
|
||||
let s:loaded[name] = 1
|
||||
endfor
|
||||
call s:reorg_rtp()
|
||||
|
||||
for name in a:names
|
||||
let rtp = s:rtp(g:plugs[name])
|
||||
for dir in a:types
|
||||
call s:source(rtp, dir.'/**/*.vim')
|
||||
endfor
|
||||
if a:0
|
||||
if !s:source(rtp, a:1) && !empty(s:glob(rtp, a:2))
|
||||
execute 'runtime' a:1
|
||||
endif
|
||||
call s:source(rtp, a:2)
|
||||
endif
|
||||
call s:doautocmd('User', name)
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
function! s:lod_ft(pat, names)
|
||||
let syn = 'syntax/'.a:pat.'.vim'
|
||||
call s:lod(a:names, ['plugin', 'after/plugin'], syn, 'after/'.syn)
|
||||
execute 'autocmd! PlugLOD FileType' a:pat
|
||||
call s:doautocmd('filetypeplugin', 'FileType')
|
||||
call s:doautocmd('filetypeindent', 'FileType')
|
||||
endfunction
|
||||
|
||||
function! s:lod_cmd(cmd, bang, l1, l2, args, names)
|
||||
call s:lod(a:names, ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin'])
|
||||
call s:dobufread(a:names)
|
||||
execute printf('%s%s%s %s', (a:l1 == a:l2 ? '' : (a:l1.','.a:l2)), a:cmd, a:bang, a:args)
|
||||
endfunction
|
||||
|
||||
function! s:lod_map(map, names, with_prefix, prefix)
|
||||
call s:lod(a:names, ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin'])
|
||||
call s:dobufread(a:names)
|
||||
let extra = ''
|
||||
while 1
|
||||
let c = getchar(0)
|
||||
if c == 0
|
||||
break
|
||||
endif
|
||||
let extra .= nr2char(c)
|
||||
endwhile
|
||||
|
||||
if a:with_prefix
|
||||
let prefix = v:count ? v:count : ''
|
||||
let prefix .= '"'.v:register.a:prefix
|
||||
if mode(1) == 'no'
|
||||
if v:operator == 'c'
|
||||
let prefix = "\<esc>" . prefix
|
||||
endif
|
||||
let prefix .= v:operator
|
||||
endif
|
||||
call feedkeys(prefix, 'n')
|
||||
endif
|
||||
call feedkeys(substitute(a:map, '^<Plug>', "\<Plug>", '') . extra)
|
||||
endfunction
|
||||
|
||||
function! plug#(repo, ...)
|
||||
if a:0 > 1
|
||||
return s:err('Invalid number of arguments (1..2)')
|
||||
endif
|
||||
|
||||
try
|
||||
let repo = s:trim(a:repo)
|
||||
let opts = a:0 == 1 ? s:parse_options(a:1) : s:base_spec
|
||||
let name = get(opts, 'as', s:plug_fnamemodify(repo, ':t:s?\.git$??'))
|
||||
let spec = extend(s:infer_properties(name, repo), opts)
|
||||
if !has_key(g:plugs, name)
|
||||
call add(g:plugs_order, name)
|
||||
endif
|
||||
let g:plugs[name] = spec
|
||||
let s:loaded[name] = get(s:loaded, name, 0)
|
||||
catch
|
||||
return s:err(repo . ' ' . v:exception)
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
function! s:parse_options(arg)
|
||||
let opts = copy(s:base_spec)
|
||||
let type = type(a:arg)
|
||||
let opt_errfmt = 'Invalid argument for "%s" option of :Plug (expected: %s)'
|
||||
if type == s:TYPE.string
|
||||
if empty(a:arg)
|
||||
throw printf(opt_errfmt, 'tag', 'string')
|
||||
endif
|
||||
let opts.tag = a:arg
|
||||
elseif type == s:TYPE.dict
|
||||
for opt in ['branch', 'tag', 'commit', 'rtp', 'dir', 'as']
|
||||
if has_key(a:arg, opt)
|
||||
\ && (type(a:arg[opt]) != s:TYPE.string || empty(a:arg[opt]))
|
||||
throw printf(opt_errfmt, opt, 'string')
|
||||
endif
|
||||
endfor
|
||||
for opt in ['on', 'for']
|
||||
if has_key(a:arg, opt)
|
||||
\ && type(a:arg[opt]) != s:TYPE.list
|
||||
\ && (type(a:arg[opt]) != s:TYPE.string || empty(a:arg[opt]))
|
||||
throw printf(opt_errfmt, opt, 'string or list')
|
||||
endif
|
||||
endfor
|
||||
if has_key(a:arg, 'do')
|
||||
\ && type(a:arg.do) != s:TYPE.funcref
|
||||
\ && (type(a:arg.do) != s:TYPE.string || empty(a:arg.do))
|
||||
throw printf(opt_errfmt, 'do', 'string or funcref')
|
||||
endif
|
||||
call extend(opts, a:arg)
|
||||
if has_key(opts, 'dir')
|
||||
let opts.dir = s:dirpath(s:plug_expand(opts.dir))
|
||||
endif
|
||||
else
|
||||
throw 'Invalid argument type (expected: string or dictionary)'
|
||||
endif
|
||||
return opts
|
||||
endfunction
|
||||
|
||||
function! s:infer_properties(name, repo)
|
||||
let repo = a:repo
|
||||
if s:is_local_plug(repo)
|
||||
return { 'dir': s:dirpath(s:plug_expand(repo)) }
|
||||
else
|
||||
if repo =~ ':'
|
||||
let uri = repo
|
||||
else
|
||||
if repo !~ '/'
|
||||
throw printf('Invalid argument: %s (implicit `vim-scripts'' expansion is deprecated)', repo)
|
||||
endif
|
||||
let fmt = get(g:, 'plug_url_format', 'https://git::@github.com/%s.git')
|
||||
let uri = printf(fmt, repo)
|
||||
endif
|
||||
return { 'dir': s:dirpath(g:plug_home.'/'.a:name), 'uri': uri }
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:install(force, names)
|
||||
call s:update_impl(0, a:force, a:names)
|
||||
endfunction
|
||||
|
||||
function! s:update(force, names)
|
||||
call s:update_impl(1, a:force, a:names)
|
||||
endfunction
|
||||
|
||||
function! plug#helptags()
|
||||
if !exists('g:plugs')
|
||||
return s:err('plug#begin was not called')
|
||||
endif
|
||||
for spec in values(g:plugs)
|
||||
let docd = join([s:rtp(spec), 'doc'], '/')
|
||||
if isdirectory(docd)
|
||||
silent! execute 'helptags' s:esc(docd)
|
||||
endif
|
||||
endfor
|
||||
return 1
|
||||
endfunction
|
||||
|
||||
function! s:syntax()
|
||||
syntax clear
|
||||
syntax region plug1 start=/\%1l/ end=/\%2l/ contains=plugNumber
|
||||
syntax region plug2 start=/\%2l/ end=/\%3l/ contains=plugBracket,plugX
|
||||
syn match plugNumber /[0-9]\+[0-9.]*/ contained
|
||||
syn match plugBracket /[[\]]/ contained
|
||||
syn match plugX /x/ contained
|
||||
syn match plugDash /^-\{1}\ /
|
||||
syn match plugPlus /^+/
|
||||
syn match plugStar /^*/
|
||||
syn match plugMessage /\(^- \)\@<=.*/
|
||||
syn match plugName /\(^- \)\@<=[^ ]*:/
|
||||
syn match plugSha /\%(: \)\@<=[0-9a-f]\{4,}$/
|
||||
syn match plugTag /(tag: [^)]\+)/
|
||||
syn match plugInstall /\(^+ \)\@<=[^:]*/
|
||||
syn match plugUpdate /\(^* \)\@<=[^:]*/
|
||||
syn match plugCommit /^ \X*[0-9a-f]\{7,9} .*/ contains=plugRelDate,plugEdge,plugTag
|
||||
syn match plugEdge /^ \X\+$/
|
||||
syn match plugEdge /^ \X*/ contained nextgroup=plugSha
|
||||
syn match plugSha /[0-9a-f]\{7,9}/ contained
|
||||
syn match plugRelDate /([^)]*)$/ contained
|
||||
syn match plugNotLoaded /(not loaded)$/
|
||||
syn match plugError /^x.*/
|
||||
syn region plugDeleted start=/^\~ .*/ end=/^\ze\S/
|
||||
syn match plugH2 /^.*:\n-\+$/
|
||||
syn match plugH2 /^-\{2,}/
|
||||
syn keyword Function PlugInstall PlugStatus PlugUpdate PlugClean
|
||||
hi def link plug1 Title
|
||||
hi def link plug2 Repeat
|
||||
hi def link plugH2 Type
|
||||
hi def link plugX Exception
|
||||
hi def link plugBracket Structure
|
||||
hi def link plugNumber Number
|
||||
|
||||
hi def link plugDash Special
|
||||
hi def link plugPlus Constant
|
||||
hi def link plugStar Boolean
|
||||
|
||||
hi def link plugMessage Function
|
||||
hi def link plugName Label
|
||||
hi def link plugInstall Function
|
||||
hi def link plugUpdate Type
|
||||
|
||||
hi def link plugError Error
|
||||
hi def link plugDeleted Ignore
|
||||
hi def link plugRelDate Comment
|
||||
hi def link plugEdge PreProc
|
||||
hi def link plugSha Identifier
|
||||
hi def link plugTag Constant
|
||||
|
||||
hi def link plugNotLoaded Comment
|
||||
endfunction
|
||||
|
||||
function! s:lpad(str, len)
|
||||
return a:str . repeat(' ', a:len - len(a:str))
|
||||
endfunction
|
||||
|
||||
function! s:lines(msg)
|
||||
return split(a:msg, "[\r\n]")
|
||||
endfunction
|
||||
|
||||
function! s:lastline(msg)
|
||||
return get(s:lines(a:msg), -1, '')
|
||||
endfunction
|
||||
|
||||
function! s:new_window()
|
||||
execute get(g:, 'plug_window', 'vertical topleft new')
|
||||
endfunction
|
||||
|
||||
function! s:plug_window_exists()
|
||||
let buflist = tabpagebuflist(s:plug_tab)
|
||||
return !empty(buflist) && index(buflist, s:plug_buf) >= 0
|
||||
endfunction
|
||||
|
||||
function! s:switch_in()
|
||||
if !s:plug_window_exists()
|
||||
return 0
|
||||
endif
|
||||
|
||||
if winbufnr(0) != s:plug_buf
|
||||
let s:pos = [tabpagenr(), winnr(), winsaveview()]
|
||||
execute 'normal!' s:plug_tab.'gt'
|
||||
let winnr = bufwinnr(s:plug_buf)
|
||||
execute winnr.'wincmd w'
|
||||
call add(s:pos, winsaveview())
|
||||
else
|
||||
let s:pos = [winsaveview()]
|
||||
endif
|
||||
|
||||
setlocal modifiable
|
||||
return 1
|
||||
endfunction
|
||||
|
||||
function! s:switch_out(...)
|
||||
call winrestview(s:pos[-1])
|
||||
setlocal nomodifiable
|
||||
if a:0 > 0
|
||||
execute a:1
|
||||
endif
|
||||
|
||||
if len(s:pos) > 1
|
||||
execute 'normal!' s:pos[0].'gt'
|
||||
execute s:pos[1] 'wincmd w'
|
||||
call winrestview(s:pos[2])
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:finish_bindings()
|
||||
nnoremap <silent> <buffer> R :call <SID>retry()<cr>
|
||||
nnoremap <silent> <buffer> D :PlugDiff<cr>
|
||||
nnoremap <silent> <buffer> S :PlugStatus<cr>
|
||||
nnoremap <silent> <buffer> U :call <SID>status_update()<cr>
|
||||
xnoremap <silent> <buffer> U :call <SID>status_update()<cr>
|
||||
nnoremap <silent> <buffer> ]] :silent! call <SID>section('')<cr>
|
||||
nnoremap <silent> <buffer> [[ :silent! call <SID>section('b')<cr>
|
||||
endfunction
|
||||
|
||||
function! s:prepare(...)
|
||||
if empty(s:plug_getcwd())
|
||||
throw 'Invalid current working directory. Cannot proceed.'
|
||||
endif
|
||||
|
||||
for evar in ['$GIT_DIR', '$GIT_WORK_TREE']
|
||||
if exists(evar)
|
||||
throw evar.' detected. Cannot proceed.'
|
||||
endif
|
||||
endfor
|
||||
|
||||
call s:job_abort()
|
||||
if s:switch_in()
|
||||
if b:plug_preview == 1
|
||||
pc
|
||||
endif
|
||||
enew
|
||||
else
|
||||
call s:new_window()
|
||||
endif
|
||||
|
||||
nnoremap <silent> <buffer> q :call <SID>close_pane()<cr>
|
||||
if a:0 == 0
|
||||
call s:finish_bindings()
|
||||
endif
|
||||
let b:plug_preview = -1
|
||||
let s:plug_tab = tabpagenr()
|
||||
let s:plug_buf = winbufnr(0)
|
||||
call s:assign_name()
|
||||
|
||||
for k in ['<cr>', 'L', 'o', 'X', 'd', 'dd']
|
||||
execute 'silent! unmap <buffer>' k
|
||||
endfor
|
||||
setlocal buftype=nofile bufhidden=wipe nobuflisted nolist noswapfile nowrap cursorline modifiable nospell
|
||||
if exists('+colorcolumn')
|
||||
setlocal colorcolumn=
|
||||
endif
|
||||
setf vim-plug
|
||||
if exists('g:syntax_on')
|
||||
call s:syntax()
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:close_pane()
|
||||
if b:plug_preview == 1
|
||||
pc
|
||||
let b:plug_preview = -1
|
||||
else
|
||||
bd
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:assign_name()
|
||||
" Assign buffer name
|
||||
let prefix = '[Plugins]'
|
||||
let name = prefix
|
||||
let idx = 2
|
||||
while bufexists(name)
|
||||
let name = printf('%s (%s)', prefix, idx)
|
||||
let idx = idx + 1
|
||||
endwhile
|
||||
silent! execute 'f' fnameescape(name)
|
||||
endfunction
|
||||
|
||||
function! s:chsh(swap)
|
||||
let prev = [&shell, &shellcmdflag, &shellredir]
|
||||
if !s:is_win
|
||||
set shell=sh
|
||||
endif
|
||||
if a:swap
|
||||
if s:is_powershell(&shell)
|
||||
let &shellredir = '2>&1 | Out-File -Encoding UTF8 %s'
|
||||
elseif &shell =~# 'sh' || &shell =~# 'cmd\(\.exe\)\?$'
|
||||
set shellredir=>%s\ 2>&1
|
||||
endif
|
||||
endif
|
||||
return prev
|
||||
endfunction
|
||||
|
||||
function! s:bang(cmd, ...)
|
||||
let batchfile = ''
|
||||
try
|
||||
let [sh, shellcmdflag, shrd] = s:chsh(a:0)
|
||||
" FIXME: Escaping is incomplete. We could use shellescape with eval,
|
||||
" but it won't work on Windows.
|
||||
let cmd = a:0 ? s:with_cd(a:cmd, a:1) : a:cmd
|
||||
if s:is_win
|
||||
let [batchfile, cmd] = s:batchfile(cmd)
|
||||
endif
|
||||
let g:_plug_bang = (s:is_win && has('gui_running') ? 'silent ' : '').'!'.escape(cmd, '#!%')
|
||||
execute "normal! :execute g:_plug_bang\<cr>\<cr>"
|
||||
finally
|
||||
unlet g:_plug_bang
|
||||
let [&shell, &shellcmdflag, &shellredir] = [sh, shellcmdflag, shrd]
|
||||
if s:is_win && filereadable(batchfile)
|
||||
call delete(batchfile)
|
||||
endif
|
||||
endtry
|
||||
return v:shell_error ? 'Exit status: ' . v:shell_error : ''
|
||||
endfunction
|
||||
|
||||
function! s:regress_bar()
|
||||
let bar = substitute(getline(2)[1:-2], '.*\zs=', 'x', '')
|
||||
call s:progress_bar(2, bar, len(bar))
|
||||
endfunction
|
||||
|
||||
function! s:is_updated(dir)
|
||||
return !empty(s:system_chomp(['git', 'log', '--pretty=format:%h', 'HEAD...HEAD@{1}'], a:dir))
|
||||
endfunction
|
||||
|
||||
function! s:do(pull, force, todo)
|
||||
for [name, spec] in items(a:todo)
|
||||
if !isdirectory(spec.dir)
|
||||
continue
|
||||
endif
|
||||
let installed = has_key(s:update.new, name)
|
||||
let updated = installed ? 0 :
|
||||
\ (a:pull && index(s:update.errors, name) < 0 && s:is_updated(spec.dir))
|
||||
if a:force || installed || updated
|
||||
execute 'cd' s:esc(spec.dir)
|
||||
call append(3, '- Post-update hook for '. name .' ... ')
|
||||
let error = ''
|
||||
let type = type(spec.do)
|
||||
if type == s:TYPE.string
|
||||
if spec.do[0] == ':'
|
||||
if !get(s:loaded, name, 0)
|
||||
let s:loaded[name] = 1
|
||||
call s:reorg_rtp()
|
||||
endif
|
||||
call s:load_plugin(spec)
|
||||
try
|
||||
execute spec.do[1:]
|
||||
catch
|
||||
let error = v:exception
|
||||
endtry
|
||||
if !s:plug_window_exists()
|
||||
cd -
|
||||
throw 'Warning: vim-plug was terminated by the post-update hook of '.name
|
||||
endif
|
||||
else
|
||||
let error = s:bang(spec.do)
|
||||
endif
|
||||
elseif type == s:TYPE.funcref
|
||||
try
|
||||
call s:load_plugin(spec)
|
||||
let status = installed ? 'installed' : (updated ? 'updated' : 'unchanged')
|
||||
call spec.do({ 'name': name, 'status': status, 'force': a:force })
|
||||
catch
|
||||
let error = v:exception
|
||||
endtry
|
||||
else
|
||||
let error = 'Invalid hook type'
|
||||
endif
|
||||
call s:switch_in()
|
||||
call setline(4, empty(error) ? (getline(4) . 'OK')
|
||||
\ : ('x' . getline(4)[1:] . error))
|
||||
if !empty(error)
|
||||
call add(s:update.errors, name)
|
||||
call s:regress_bar()
|
||||
endif
|
||||
cd -
|
||||
endif
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
function! s:hash_match(a, b)
|
||||
return stridx(a:a, a:b) == 0 || stridx(a:b, a:a) == 0
|
||||
endfunction
|
||||
|
||||
function! s:checkout(spec)
|
||||
let sha = a:spec.commit
|
||||
let output = s:git_revision(a:spec.dir)
|
||||
if !empty(output) && !s:hash_match(sha, s:lines(output)[0])
|
||||
let credential_helper = s:git_version_requirement(2) ? '-c credential.helper= ' : ''
|
||||
let output = s:system(
|
||||
\ 'git '.credential_helper.'fetch --depth 999999 && git checkout '.plug#shellescape(sha).' --', a:spec.dir)
|
||||
endif
|
||||
return output
|
||||
endfunction
|
||||
|
||||
function! s:finish(pull)
|
||||
let new_frozen = len(filter(keys(s:update.new), 'g:plugs[v:val].frozen'))
|
||||
if new_frozen
|
||||
let s = new_frozen > 1 ? 's' : ''
|
||||
call append(3, printf('- Installed %d frozen plugin%s', new_frozen, s))
|
||||
endif
|
||||
call append(3, '- Finishing ... ') | 4
|
||||
redraw
|
||||
call plug#helptags()
|
||||
call plug#end()
|
||||
call setline(4, getline(4) . 'Done!')
|
||||
redraw
|
||||
let msgs = []
|
||||
if !empty(s:update.errors)
|
||||
call add(msgs, "Press 'R' to retry.")
|
||||
endif
|
||||
if a:pull && len(s:update.new) < len(filter(getline(5, '$'),
|
||||
\ "v:val =~ '^- ' && v:val !~# 'Already up.to.date'"))
|
||||
call add(msgs, "Press 'D' to see the updated changes.")
|
||||
endif
|
||||
echo join(msgs, ' ')
|
||||
call s:finish_bindings()
|
||||
endfunction
|
||||
|
||||
function! s:retry()
|
||||
if empty(s:update.errors)
|
||||
return
|
||||
endif
|
||||
echo
|
||||
call s:update_impl(s:update.pull, s:update.force,
|
||||
\ extend(copy(s:update.errors), [s:update.threads]))
|
||||
endfunction
|
||||
|
||||
function! s:is_managed(name)
|
||||
return has_key(g:plugs[a:name], 'uri')
|
||||
endfunction
|
||||
|
||||
function! s:names(...)
|
||||
return sort(filter(keys(g:plugs), 'stridx(v:val, a:1) == 0 && s:is_managed(v:val)'))
|
||||
endfunction
|
||||
|
||||
function! s:check_ruby()
|
||||
silent! ruby require 'thread'; VIM::command("let g:plug_ruby = '#{RUBY_VERSION}'")
|
||||
if !exists('g:plug_ruby')
|
||||
redraw!
|
||||
return s:warn('echom', 'Warning: Ruby interface is broken')
|
||||
endif
|
||||
let ruby_version = split(g:plug_ruby, '\.')
|
||||
unlet g:plug_ruby
|
||||
return s:version_requirement(ruby_version, [1, 8, 7])
|
||||
endfunction
|
||||
|
||||
function! s:update_impl(pull, force, args) abort
|
||||
let sync = index(a:args, '--sync') >= 0 || has('vim_starting')
|
||||
let args = filter(copy(a:args), 'v:val != "--sync"')
|
||||
let threads = (len(args) > 0 && args[-1] =~ '^[1-9][0-9]*$') ?
|
||||
\ remove(args, -1) : get(g:, 'plug_threads', 16)
|
||||
|
||||
let managed = filter(copy(g:plugs), 's:is_managed(v:key)')
|
||||
let todo = empty(args) ? filter(managed, '!v:val.frozen || !isdirectory(v:val.dir)') :
|
||||
\ filter(managed, 'index(args, v:key) >= 0')
|
||||
|
||||
if empty(todo)
|
||||
return s:warn('echo', 'No plugin to '. (a:pull ? 'update' : 'install'))
|
||||
endif
|
||||
|
||||
if !s:is_win && s:git_version_requirement(2, 3)
|
||||
let s:git_terminal_prompt = exists('$GIT_TERMINAL_PROMPT') ? $GIT_TERMINAL_PROMPT : ''
|
||||
let $GIT_TERMINAL_PROMPT = 0
|
||||
for plug in values(todo)
|
||||
let plug.uri = substitute(plug.uri,
|
||||
\ '^https://git::@github\.com', 'https://github.com', '')
|
||||
endfor
|
||||
endif
|
||||
|
||||
if !isdirectory(g:plug_home)
|
||||
try
|
||||
call mkdir(g:plug_home, 'p')
|
||||
catch
|
||||
return s:err(printf('Invalid plug directory: %s. '.
|
||||
\ 'Try to call plug#begin with a valid directory', g:plug_home))
|
||||
endtry
|
||||
endif
|
||||
|
||||
if has('nvim') && !exists('*jobwait') && threads > 1
|
||||
call s:warn('echom', '[vim-plug] Update Neovim for parallel installer')
|
||||
endif
|
||||
|
||||
let use_job = s:nvim || s:vim8
|
||||
let python = (has('python') || has('python3')) && !use_job
|
||||
let ruby = has('ruby') && !use_job && (v:version >= 703 || v:version == 702 && has('patch374')) && !(s:is_win && has('gui_running')) && threads > 1 && s:check_ruby()
|
||||
|
||||
let s:update = {
|
||||
\ 'start': reltime(),
|
||||
\ 'all': todo,
|
||||
\ 'todo': copy(todo),
|
||||
\ 'errors': [],
|
||||
\ 'pull': a:pull,
|
||||
\ 'force': a:force,
|
||||
\ 'new': {},
|
||||
\ 'threads': (python || ruby || use_job) ? min([len(todo), threads]) : 1,
|
||||
\ 'bar': '',
|
||||
\ 'fin': 0
|
||||
\ }
|
||||
|
||||
call s:prepare(1)
|
||||
call append(0, ['', ''])
|
||||
normal! 2G
|
||||
silent! redraw
|
||||
|
||||
" Set remote name, overriding a possible user git config's clone.defaultRemoteName
|
||||
let s:clone_opt = ['--origin', 'origin']
|
||||
if get(g:, 'plug_shallow', 1)
|
||||
call extend(s:clone_opt, ['--depth', '1'])
|
||||
if s:git_version_requirement(1, 7, 10)
|
||||
call add(s:clone_opt, '--no-single-branch')
|
||||
endif
|
||||
endif
|
||||
|
||||
if has('win32unix') || has('wsl')
|
||||
call extend(s:clone_opt, ['-c', 'core.eol=lf', '-c', 'core.autocrlf=input'])
|
||||
endif
|
||||
|
||||
let s:submodule_opt = s:git_version_requirement(2, 8) ? ' --jobs='.threads : ''
|
||||
|
||||
" Python version requirement (>= 2.7)
|
||||
if python && !has('python3') && !ruby && !use_job && s:update.threads > 1
|
||||
redir => pyv
|
||||
silent python import platform; print platform.python_version()
|
||||
redir END
|
||||
let python = s:version_requirement(
|
||||
\ map(split(split(pyv)[0], '\.'), 'str2nr(v:val)'), [2, 6])
|
||||
endif
|
||||
|
||||
if (python || ruby) && s:update.threads > 1
|
||||
try
|
||||
let imd = &imd
|
||||
if s:mac_gui
|
||||
set noimd
|
||||
endif
|
||||
if ruby
|
||||
call s:update_ruby()
|
||||
else
|
||||
call s:update_python()
|
||||
endif
|
||||
catch
|
||||
let lines = getline(4, '$')
|
||||
let printed = {}
|
||||
silent! 4,$d _
|
||||
for line in lines
|
||||
let name = s:extract_name(line, '.', '')
|
||||
if empty(name) || !has_key(printed, name)
|
||||
call append('$', line)
|
||||
if !empty(name)
|
||||
let printed[name] = 1
|
||||
if line[0] == 'x' && index(s:update.errors, name) < 0
|
||||
call add(s:update.errors, name)
|
||||
end
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
finally
|
||||
let &imd = imd
|
||||
call s:update_finish()
|
||||
endtry
|
||||
else
|
||||
call s:update_vim()
|
||||
while use_job && sync
|
||||
sleep 100m
|
||||
if s:update.fin
|
||||
break
|
||||
endif
|
||||
endwhile
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:log4(name, msg)
|
||||
call setline(4, printf('- %s (%s)', a:msg, a:name))
|
||||
redraw
|
||||
endfunction
|
||||
|
||||
function! s:update_finish()
|
||||
if exists('s:git_terminal_prompt')
|
||||
let $GIT_TERMINAL_PROMPT = s:git_terminal_prompt
|
||||
endif
|
||||
if s:switch_in()
|
||||
call append(3, '- Updating ...') | 4
|
||||
for [name, spec] in items(filter(copy(s:update.all), 'index(s:update.errors, v:key) < 0 && (s:update.force || s:update.pull || has_key(s:update.new, v:key))'))
|
||||
let [pos, _] = s:logpos(name)
|
||||
if !pos
|
||||
continue
|
||||
endif
|
||||
if has_key(spec, 'commit')
|
||||
call s:log4(name, 'Checking out '.spec.commit)
|
||||
let out = s:checkout(spec)
|
||||
elseif has_key(spec, 'tag')
|
||||
let tag = spec.tag
|
||||
if tag =~ '\*'
|
||||
let tags = s:lines(s:system('git tag --list '.plug#shellescape(tag).' --sort -version:refname 2>&1', spec.dir))
|
||||
if !v:shell_error && !empty(tags)
|
||||
let tag = tags[0]
|
||||
call s:log4(name, printf('Latest tag for %s -> %s', spec.tag, tag))
|
||||
call append(3, '')
|
||||
endif
|
||||
endif
|
||||
call s:log4(name, 'Checking out '.tag)
|
||||
let out = s:system('git checkout -q '.plug#shellescape(tag).' -- 2>&1', spec.dir)
|
||||
else
|
||||
let branch = s:git_origin_branch(spec)
|
||||
call s:log4(name, 'Merging origin/'.s:esc(branch))
|
||||
let out = s:system('git checkout -q '.plug#shellescape(branch).' -- 2>&1'
|
||||
\. (has_key(s:update.new, name) ? '' : ('&& git merge --ff-only '.plug#shellescape('origin/'.branch).' 2>&1')), spec.dir)
|
||||
endif
|
||||
if !v:shell_error && filereadable(spec.dir.'/.gitmodules') &&
|
||||
\ (s:update.force || has_key(s:update.new, name) || s:is_updated(spec.dir))
|
||||
call s:log4(name, 'Updating submodules. This may take a while.')
|
||||
let out .= s:bang('git submodule update --init --recursive'.s:submodule_opt.' 2>&1', spec.dir)
|
||||
endif
|
||||
let msg = s:format_message(v:shell_error ? 'x': '-', name, out)
|
||||
if v:shell_error
|
||||
call add(s:update.errors, name)
|
||||
call s:regress_bar()
|
||||
silent execute pos 'd _'
|
||||
call append(4, msg) | 4
|
||||
elseif !empty(out)
|
||||
call setline(pos, msg[0])
|
||||
endif
|
||||
redraw
|
||||
endfor
|
||||
silent 4 d _
|
||||
try
|
||||
call s:do(s:update.pull, s:update.force, filter(copy(s:update.all), 'index(s:update.errors, v:key) < 0 && has_key(v:val, "do")'))
|
||||
catch
|
||||
call s:warn('echom', v:exception)
|
||||
call s:warn('echo', '')
|
||||
return
|
||||
endtry
|
||||
call s:finish(s:update.pull)
|
||||
call setline(1, 'Updated. Elapsed time: ' . split(reltimestr(reltime(s:update.start)))[0] . ' sec.')
|
||||
call s:switch_out('normal! gg')
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:job_abort()
|
||||
if (!s:nvim && !s:vim8) || !exists('s:jobs')
|
||||
return
|
||||
endif
|
||||
|
||||
for [name, j] in items(s:jobs)
|
||||
if s:nvim
|
||||
silent! call jobstop(j.jobid)
|
||||
elseif s:vim8
|
||||
silent! call job_stop(j.jobid)
|
||||
endif
|
||||
if j.new
|
||||
call s:rm_rf(g:plugs[name].dir)
|
||||
endif
|
||||
endfor
|
||||
let s:jobs = {}
|
||||
endfunction
|
||||
|
||||
function! s:last_non_empty_line(lines)
|
||||
let len = len(a:lines)
|
||||
for idx in range(len)
|
||||
let line = a:lines[len-idx-1]
|
||||
if !empty(line)
|
||||
return line
|
||||
endif
|
||||
endfor
|
||||
return ''
|
||||
endfunction
|
||||
|
||||
function! s:job_out_cb(self, data) abort
|
||||
let self = a:self
|
||||
let data = remove(self.lines, -1) . a:data
|
||||
let lines = map(split(data, "\n", 1), 'split(v:val, "\r", 1)[-1]')
|
||||
call extend(self.lines, lines)
|
||||
" To reduce the number of buffer updates
|
||||
let self.tick = get(self, 'tick', -1) + 1
|
||||
if !self.running || self.tick % len(s:jobs) == 0
|
||||
let bullet = self.running ? (self.new ? '+' : '*') : (self.error ? 'x' : '-')
|
||||
let result = self.error ? join(self.lines, "\n") : s:last_non_empty_line(self.lines)
|
||||
call s:log(bullet, self.name, result)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:job_exit_cb(self, data) abort
|
||||
let a:self.running = 0
|
||||
let a:self.error = a:data != 0
|
||||
call s:reap(a:self.name)
|
||||
call s:tick()
|
||||
endfunction
|
||||
|
||||
function! s:job_cb(fn, job, ch, data)
|
||||
if !s:plug_window_exists() " plug window closed
|
||||
return s:job_abort()
|
||||
endif
|
||||
call call(a:fn, [a:job, a:data])
|
||||
endfunction
|
||||
|
||||
function! s:nvim_cb(job_id, data, event) dict abort
|
||||
return (a:event == 'stdout' || a:event == 'stderr') ?
|
||||
\ s:job_cb('s:job_out_cb', self, 0, join(a:data, "\n")) :
|
||||
\ s:job_cb('s:job_exit_cb', self, 0, a:data)
|
||||
endfunction
|
||||
|
||||
function! s:spawn(name, cmd, opts)
|
||||
let job = { 'name': a:name, 'running': 1, 'error': 0, 'lines': [''],
|
||||
\ 'new': get(a:opts, 'new', 0) }
|
||||
let s:jobs[a:name] = job
|
||||
|
||||
if s:nvim
|
||||
if has_key(a:opts, 'dir')
|
||||
let job.cwd = a:opts.dir
|
||||
endif
|
||||
let argv = a:cmd
|
||||
call extend(job, {
|
||||
\ 'on_stdout': function('s:nvim_cb'),
|
||||
\ 'on_stderr': function('s:nvim_cb'),
|
||||
\ 'on_exit': function('s:nvim_cb'),
|
||||
\ })
|
||||
let jid = s:plug_call('jobstart', argv, job)
|
||||
if jid > 0
|
||||
let job.jobid = jid
|
||||
else
|
||||
let job.running = 0
|
||||
let job.error = 1
|
||||
let job.lines = [jid < 0 ? argv[0].' is not executable' :
|
||||
\ 'Invalid arguments (or job table is full)']
|
||||
endif
|
||||
elseif s:vim8
|
||||
let cmd = join(map(copy(a:cmd), 'plug#shellescape(v:val, {"script": 0})'))
|
||||
if has_key(a:opts, 'dir')
|
||||
let cmd = s:with_cd(cmd, a:opts.dir, 0)
|
||||
endif
|
||||
let argv = s:is_win ? ['cmd', '/s', '/c', '"'.cmd.'"'] : ['sh', '-c', cmd]
|
||||
let jid = job_start(s:is_win ? join(argv, ' ') : argv, {
|
||||
\ 'out_cb': function('s:job_cb', ['s:job_out_cb', job]),
|
||||
\ 'err_cb': function('s:job_cb', ['s:job_out_cb', job]),
|
||||
\ 'exit_cb': function('s:job_cb', ['s:job_exit_cb', job]),
|
||||
\ 'err_mode': 'raw',
|
||||
\ 'out_mode': 'raw'
|
||||
\})
|
||||
if job_status(jid) == 'run'
|
||||
let job.jobid = jid
|
||||
else
|
||||
let job.running = 0
|
||||
let job.error = 1
|
||||
let job.lines = ['Failed to start job']
|
||||
endif
|
||||
else
|
||||
let job.lines = s:lines(call('s:system', has_key(a:opts, 'dir') ? [a:cmd, a:opts.dir] : [a:cmd]))
|
||||
let job.error = v:shell_error != 0
|
||||
let job.running = 0
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:reap(name)
|
||||
let job = s:jobs[a:name]
|
||||
if job.error
|
||||
call add(s:update.errors, a:name)
|
||||
elseif get(job, 'new', 0)
|
||||
let s:update.new[a:name] = 1
|
||||
endif
|
||||
let s:update.bar .= job.error ? 'x' : '='
|
||||
|
||||
let bullet = job.error ? 'x' : '-'
|
||||
let result = job.error ? join(job.lines, "\n") : s:last_non_empty_line(job.lines)
|
||||
call s:log(bullet, a:name, empty(result) ? 'OK' : result)
|
||||
call s:bar()
|
||||
|
||||
call remove(s:jobs, a:name)
|
||||
endfunction
|
||||
|
||||
function! s:bar()
|
||||
if s:switch_in()
|
||||
let total = len(s:update.all)
|
||||
call setline(1, (s:update.pull ? 'Updating' : 'Installing').
|
||||
\ ' plugins ('.len(s:update.bar).'/'.total.')')
|
||||
call s:progress_bar(2, s:update.bar, total)
|
||||
call s:switch_out()
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:logpos(name)
|
||||
let max = line('$')
|
||||
for i in range(4, max > 4 ? max : 4)
|
||||
if getline(i) =~# '^[-+x*] '.a:name.':'
|
||||
for j in range(i + 1, max > 5 ? max : 5)
|
||||
if getline(j) !~ '^ '
|
||||
return [i, j - 1]
|
||||
endif
|
||||
endfor
|
||||
return [i, i]
|
||||
endif
|
||||
endfor
|
||||
return [0, 0]
|
||||
endfunction
|
||||
|
||||
function! s:log(bullet, name, lines)
|
||||
if s:switch_in()
|
||||
let [b, e] = s:logpos(a:name)
|
||||
if b > 0
|
||||
silent execute printf('%d,%d d _', b, e)
|
||||
if b > winheight('.')
|
||||
let b = 4
|
||||
endif
|
||||
else
|
||||
let b = 4
|
||||
endif
|
||||
" FIXME For some reason, nomodifiable is set after :d in vim8
|
||||
setlocal modifiable
|
||||
call append(b - 1, s:format_message(a:bullet, a:name, a:lines))
|
||||
call s:switch_out()
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:update_vim()
|
||||
let s:jobs = {}
|
||||
|
||||
call s:bar()
|
||||
call s:tick()
|
||||
endfunction
|
||||
|
||||
function! s:tick()
|
||||
let pull = s:update.pull
|
||||
let prog = s:progress_opt(s:nvim || s:vim8)
|
||||
while 1 " Without TCO, Vim stack is bound to explode
|
||||
if empty(s:update.todo)
|
||||
if empty(s:jobs) && !s:update.fin
|
||||
call s:update_finish()
|
||||
let s:update.fin = 1
|
||||
endif
|
||||
return
|
||||
endif
|
||||
|
||||
let name = keys(s:update.todo)[0]
|
||||
let spec = remove(s:update.todo, name)
|
||||
let new = empty(globpath(spec.dir, '.git', 1))
|
||||
|
||||
call s:log(new ? '+' : '*', name, pull ? 'Updating ...' : 'Installing ...')
|
||||
redraw
|
||||
|
||||
let has_tag = has_key(spec, 'tag')
|
||||
if !new
|
||||
let [error, _] = s:git_validate(spec, 0)
|
||||
if empty(error)
|
||||
if pull
|
||||
let cmd = s:git_version_requirement(2) ? ['git', '-c', 'credential.helper=', 'fetch'] : ['git', 'fetch']
|
||||
if has_tag && !empty(globpath(spec.dir, '.git/shallow'))
|
||||
call extend(cmd, ['--depth', '99999999'])
|
||||
endif
|
||||
if !empty(prog)
|
||||
call add(cmd, prog)
|
||||
endif
|
||||
call s:spawn(name, cmd, { 'dir': spec.dir })
|
||||
else
|
||||
let s:jobs[name] = { 'running': 0, 'lines': ['Already installed'], 'error': 0 }
|
||||
endif
|
||||
else
|
||||
let s:jobs[name] = { 'running': 0, 'lines': s:lines(error), 'error': 1 }
|
||||
endif
|
||||
else
|
||||
let cmd = ['git', 'clone']
|
||||
if !has_tag
|
||||
call extend(cmd, s:clone_opt)
|
||||
endif
|
||||
if !empty(prog)
|
||||
call add(cmd, prog)
|
||||
endif
|
||||
call s:spawn(name, extend(cmd, [spec.uri, s:trim(spec.dir)]), { 'new': 1 })
|
||||
endif
|
||||
|
||||
if !s:jobs[name].running
|
||||
call s:reap(name)
|
||||
endif
|
||||
if len(s:jobs) >= s:update.threads
|
||||
break
|
||||
endif
|
||||
endwhile
|
||||
endfunction
|
||||
|
||||
function! s:update_python()
|
||||
let py_exe = has('python') ? 'python' : 'python3'
|
||||
execute py_exe "<< EOF"
|
||||
import datetime
|
||||
import functools
|
||||
import os
|
||||
try:
|
||||
import queue
|
||||
except ImportError:
|
||||
import Queue as queue
|
||||
import random
|
||||
import re
|
||||
import shutil
|
||||
import signal
|
||||
import subprocess
|
||||
import tempfile
|
||||
import threading as thr
|
||||
import time
|
||||
import traceback
|
||||
import vim
|
||||
|
||||
G_NVIM = vim.eval("has('nvim')") == '1'
|
||||
G_PULL = vim.eval('s:update.pull') == '1'
|
||||
G_RETRIES = int(vim.eval('get(g:, "plug_retries", 2)')) + 1
|
||||
G_TIMEOUT = int(vim.eval('get(g:, "plug_timeout", 60)'))
|
||||
G_CLONE_OPT = ' '.join(vim.eval('s:clone_opt'))
|
||||
G_PROGRESS = vim.eval('s:progress_opt(1)')
|
||||
G_LOG_PROB = 1.0 / int(vim.eval('s:update.threads'))
|
||||
G_STOP = thr.Event()
|
||||
G_IS_WIN = vim.eval('s:is_win') == '1'
|
||||
|
||||
class PlugError(Exception):
|
||||
def __init__(self, msg):
|
||||
self.msg = msg
|
||||
class CmdTimedOut(PlugError):
|
||||
pass
|
||||
class CmdFailed(PlugError):
|
||||
pass
|
||||
class InvalidURI(PlugError):
|
||||
pass
|
||||
class Action(object):
|
||||
INSTALL, UPDATE, ERROR, DONE = ['+', '*', 'x', '-']
|
||||
|
||||
class Buffer(object):
|
||||
def __init__(self, lock, num_plugs, is_pull):
|
||||
self.bar = ''
|
||||
self.event = 'Updating' if is_pull else 'Installing'
|
||||
self.lock = lock
|
||||
self.maxy = int(vim.eval('winheight(".")'))
|
||||
self.num_plugs = num_plugs
|
||||
|
||||
def __where(self, name):
|
||||
""" Find first line with name in current buffer. Return line num. """
|
||||
found, lnum = False, 0
|
||||
matcher = re.compile('^[-+x*] {0}:'.format(name))
|
||||
for line in vim.current.buffer:
|
||||
if matcher.search(line) is not None:
|
||||
found = True
|
||||
break
|
||||
lnum += 1
|
||||
|
||||
if not found:
|
||||
lnum = -1
|
||||
return lnum
|
||||
|
||||
def header(self):
|
||||
curbuf = vim.current.buffer
|
||||
curbuf[0] = self.event + ' plugins ({0}/{1})'.format(len(self.bar), self.num_plugs)
|
||||
|
||||
num_spaces = self.num_plugs - len(self.bar)
|
||||
curbuf[1] = '[{0}{1}]'.format(self.bar, num_spaces * ' ')
|
||||
|
||||
with self.lock:
|
||||
vim.command('normal! 2G')
|
||||
vim.command('redraw')
|
||||
|
||||
def write(self, action, name, lines):
|
||||
first, rest = lines[0], lines[1:]
|
||||
msg = ['{0} {1}{2}{3}'.format(action, name, ': ' if first else '', first)]
|
||||
msg.extend([' ' + line for line in rest])
|
||||
|
||||
try:
|
||||
if action == Action.ERROR:
|
||||
self.bar += 'x'
|
||||
vim.command("call add(s:update.errors, '{0}')".format(name))
|
||||
elif action == Action.DONE:
|
||||
self.bar += '='
|
||||
|
||||
curbuf = vim.current.buffer
|
||||
lnum = self.__where(name)
|
||||
if lnum != -1: # Found matching line num
|
||||
del curbuf[lnum]
|
||||
if lnum > self.maxy and action in set([Action.INSTALL, Action.UPDATE]):
|
||||
lnum = 3
|
||||
else:
|
||||
lnum = 3
|
||||
curbuf.append(msg, lnum)
|
||||
|
||||
self.header()
|
||||
except vim.error:
|
||||
pass
|
||||
|
||||
class Command(object):
|
||||
CD = 'cd /d' if G_IS_WIN else 'cd'
|
||||
|
||||
def __init__(self, cmd, cmd_dir=None, timeout=60, cb=None, clean=None):
|
||||
self.cmd = cmd
|
||||
if cmd_dir:
|
||||
self.cmd = '{0} {1} && {2}'.format(Command.CD, cmd_dir, self.cmd)
|
||||
self.timeout = timeout
|
||||
self.callback = cb if cb else (lambda msg: None)
|
||||
self.clean = clean if clean else (lambda: None)
|
||||
self.proc = None
|
||||
|
||||
@property
|
||||
def alive(self):
|
||||
""" Returns true only if command still running. """
|
||||
return self.proc and self.proc.poll() is None
|
||||
|
||||
def execute(self, ntries=3):
|
||||
""" Execute the command with ntries if CmdTimedOut.
|
||||
Returns the output of the command if no Exception.
|
||||
"""
|
||||
attempt, finished, limit = 0, False, self.timeout
|
||||
|
||||
while not finished:
|
||||
try:
|
||||
attempt += 1
|
||||
result = self.try_command()
|
||||
finished = True
|
||||
return result
|
||||
except CmdTimedOut:
|
||||
if attempt != ntries:
|
||||
self.notify_retry()
|
||||
self.timeout += limit
|
||||
else:
|
||||
raise
|
||||
|
||||
def notify_retry(self):
|
||||
""" Retry required for command, notify user. """
|
||||
for count in range(3, 0, -1):
|
||||
if G_STOP.is_set():
|
||||
raise KeyboardInterrupt
|
||||
msg = 'Timeout. Will retry in {0} second{1} ...'.format(
|
||||
count, 's' if count != 1 else '')
|
||||
self.callback([msg])
|
||||
time.sleep(1)
|
||||
self.callback(['Retrying ...'])
|
||||
|
||||
def try_command(self):
|
||||
""" Execute a cmd & poll for callback. Returns list of output.
|
||||
Raises CmdFailed -> return code for Popen isn't 0
|
||||
Raises CmdTimedOut -> command exceeded timeout without new output
|
||||
"""
|
||||
first_line = True
|
||||
|
||||
try:
|
||||
tfile = tempfile.NamedTemporaryFile(mode='w+b')
|
||||
preexec_fn = not G_IS_WIN and os.setsid or None
|
||||
self.proc = subprocess.Popen(self.cmd, stdout=tfile,
|
||||
stderr=subprocess.STDOUT,
|
||||
stdin=subprocess.PIPE, shell=True,
|
||||
preexec_fn=preexec_fn)
|
||||
thrd = thr.Thread(target=(lambda proc: proc.wait()), args=(self.proc,))
|
||||
thrd.start()
|
||||
|
||||
thread_not_started = True
|
||||
while thread_not_started:
|
||||
try:
|
||||
thrd.join(0.1)
|
||||
thread_not_started = False
|
||||
except RuntimeError:
|
||||
pass
|
||||
|
||||
while self.alive:
|
||||
if G_STOP.is_set():
|
||||
raise KeyboardInterrupt
|
||||
|
||||
if first_line or random.random() < G_LOG_PROB:
|
||||
first_line = False
|
||||
line = '' if G_IS_WIN else nonblock_read(tfile.name)
|
||||
if line:
|
||||
self.callback([line])
|
||||
|
||||
time_diff = time.time() - os.path.getmtime(tfile.name)
|
||||
if time_diff > self.timeout:
|
||||
raise CmdTimedOut(['Timeout!'])
|
||||
|
||||
thrd.join(0.5)
|
||||
|
||||
tfile.seek(0)
|
||||
result = [line.decode('utf-8', 'replace').rstrip() for line in tfile]
|
||||
|
||||
if self.proc.returncode != 0:
|
||||
raise CmdFailed([''] + result)
|
||||
|
||||
return result
|
||||
except:
|
||||
self.terminate()
|
||||
raise
|
||||
|
||||
def terminate(self):
|
||||
""" Terminate process and cleanup. """
|
||||
if self.alive:
|
||||
if G_IS_WIN:
|
||||
os.kill(self.proc.pid, signal.SIGINT)
|
||||
else:
|
||||
os.killpg(self.proc.pid, signal.SIGTERM)
|
||||
self.clean()
|
||||
|
||||
class Plugin(object):
|
||||
def __init__(self, name, args, buf_q, lock):
|
||||
self.name = name
|
||||
self.args = args
|
||||
self.buf_q = buf_q
|
||||
self.lock = lock
|
||||
self.tag = args.get('tag', 0)
|
||||
|
||||
def manage(self):
|
||||
try:
|
||||
if os.path.exists(self.args['dir']):
|
||||
self.update()
|
||||
else:
|
||||
self.install()
|
||||
with self.lock:
|
||||
thread_vim_command("let s:update.new['{0}'] = 1".format(self.name))
|
||||
except PlugError as exc:
|
||||
self.write(Action.ERROR, self.name, exc.msg)
|
||||
except KeyboardInterrupt:
|
||||
G_STOP.set()
|
||||
self.write(Action.ERROR, self.name, ['Interrupted!'])
|
||||
except:
|
||||
# Any exception except those above print stack trace
|
||||
msg = 'Trace:\n{0}'.format(traceback.format_exc().rstrip())
|
||||
self.write(Action.ERROR, self.name, msg.split('\n'))
|
||||
raise
|
||||
|
||||
def install(self):
|
||||
target = self.args['dir']
|
||||
if target[-1] == '\\':
|
||||
target = target[0:-1]
|
||||
|
||||
def clean(target):
|
||||
def _clean():
|
||||
try:
|
||||
shutil.rmtree(target)
|
||||
except OSError:
|
||||
pass
|
||||
return _clean
|
||||
|
||||
self.write(Action.INSTALL, self.name, ['Installing ...'])
|
||||
callback = functools.partial(self.write, Action.INSTALL, self.name)
|
||||
cmd = 'git clone {0} {1} {2} {3} 2>&1'.format(
|
||||
'' if self.tag else G_CLONE_OPT, G_PROGRESS, self.args['uri'],
|
||||
esc(target))
|
||||
com = Command(cmd, None, G_TIMEOUT, callback, clean(target))
|
||||
result = com.execute(G_RETRIES)
|
||||
self.write(Action.DONE, self.name, result[-1:])
|
||||
|
||||
def repo_uri(self):
|
||||
cmd = 'git rev-parse --abbrev-ref HEAD 2>&1 && git config -f .git/config remote.origin.url'
|
||||
command = Command(cmd, self.args['dir'], G_TIMEOUT,)
|
||||
result = command.execute(G_RETRIES)
|
||||
return result[-1]
|
||||
|
||||
def update(self):
|
||||
actual_uri = self.repo_uri()
|
||||
expect_uri = self.args['uri']
|
||||
regex = re.compile(r'^(?:\w+://)?(?:[^@/]*@)?([^:/]*(?::[0-9]*)?)[:/](.*?)(?:\.git)?/?$')
|
||||
ma = regex.match(actual_uri)
|
||||
mb = regex.match(expect_uri)
|
||||
if ma is None or mb is None or ma.groups() != mb.groups():
|
||||
msg = ['',
|
||||
'Invalid URI: {0}'.format(actual_uri),
|
||||
'Expected {0}'.format(expect_uri),
|
||||
'PlugClean required.']
|
||||
raise InvalidURI(msg)
|
||||
|
||||
if G_PULL:
|
||||
self.write(Action.UPDATE, self.name, ['Updating ...'])
|
||||
callback = functools.partial(self.write, Action.UPDATE, self.name)
|
||||
fetch_opt = '--depth 99999999' if self.tag and os.path.isfile(os.path.join(self.args['dir'], '.git/shallow')) else ''
|
||||
cmd = 'git fetch {0} {1} 2>&1'.format(fetch_opt, G_PROGRESS)
|
||||
com = Command(cmd, self.args['dir'], G_TIMEOUT, callback)
|
||||
result = com.execute(G_RETRIES)
|
||||
self.write(Action.DONE, self.name, result[-1:])
|
||||
else:
|
||||
self.write(Action.DONE, self.name, ['Already installed'])
|
||||
|
||||
def write(self, action, name, msg):
|
||||
self.buf_q.put((action, name, msg))
|
||||
|
||||
class PlugThread(thr.Thread):
|
||||
def __init__(self, tname, args):
|
||||
super(PlugThread, self).__init__()
|
||||
self.tname = tname
|
||||
self.args = args
|
||||
|
||||
def run(self):
|
||||
thr.current_thread().name = self.tname
|
||||
buf_q, work_q, lock = self.args
|
||||
|
||||
try:
|
||||
while not G_STOP.is_set():
|
||||
name, args = work_q.get_nowait()
|
||||
plug = Plugin(name, args, buf_q, lock)
|
||||
plug.manage()
|
||||
work_q.task_done()
|
||||
except queue.Empty:
|
||||
pass
|
||||
|
||||
class RefreshThread(thr.Thread):
|
||||
def __init__(self, lock):
|
||||
super(RefreshThread, self).__init__()
|
||||
self.lock = lock
|
||||
self.running = True
|
||||
|
||||
def run(self):
|
||||
while self.running:
|
||||
with self.lock:
|
||||
thread_vim_command('noautocmd normal! a')
|
||||
time.sleep(0.33)
|
||||
|
||||
def stop(self):
|
||||
self.running = False
|
||||
|
||||
if G_NVIM:
|
||||
def thread_vim_command(cmd):
|
||||
vim.session.threadsafe_call(lambda: vim.command(cmd))
|
||||
else:
|
||||
def thread_vim_command(cmd):
|
||||
vim.command(cmd)
|
||||
|
||||
def esc(name):
|
||||
return '"' + name.replace('"', '\"') + '"'
|
||||
|
||||
def nonblock_read(fname):
|
||||
""" Read a file with nonblock flag. Return the last line. """
|
||||
fread = os.open(fname, os.O_RDONLY | os.O_NONBLOCK)
|
||||
buf = os.read(fread, 100000).decode('utf-8', 'replace')
|
||||
os.close(fread)
|
||||
|
||||
line = buf.rstrip('\r\n')
|
||||
left = max(line.rfind('\r'), line.rfind('\n'))
|
||||
if left != -1:
|
||||
left += 1
|
||||
line = line[left:]
|
||||
|
||||
return line
|
||||
|
||||
def main():
|
||||
thr.current_thread().name = 'main'
|
||||
nthreads = int(vim.eval('s:update.threads'))
|
||||
plugs = vim.eval('s:update.todo')
|
||||
mac_gui = vim.eval('s:mac_gui') == '1'
|
||||
|
||||
lock = thr.Lock()
|
||||
buf = Buffer(lock, len(plugs), G_PULL)
|
||||
buf_q, work_q = queue.Queue(), queue.Queue()
|
||||
for work in plugs.items():
|
||||
work_q.put(work)
|
||||
|
||||
start_cnt = thr.active_count()
|
||||
for num in range(nthreads):
|
||||
tname = 'PlugT-{0:02}'.format(num)
|
||||
thread = PlugThread(tname, (buf_q, work_q, lock))
|
||||
thread.start()
|
||||
if mac_gui:
|
||||
rthread = RefreshThread(lock)
|
||||
rthread.start()
|
||||
|
||||
while not buf_q.empty() or thr.active_count() != start_cnt:
|
||||
try:
|
||||
action, name, msg = buf_q.get(True, 0.25)
|
||||
buf.write(action, name, ['OK'] if not msg else msg)
|
||||
buf_q.task_done()
|
||||
except queue.Empty:
|
||||
pass
|
||||
except KeyboardInterrupt:
|
||||
G_STOP.set()
|
||||
|
||||
if mac_gui:
|
||||
rthread.stop()
|
||||
rthread.join()
|
||||
|
||||
main()
|
||||
EOF
|
||||
endfunction
|
||||
|
||||
function! s:update_ruby()
|
||||
ruby << EOF
|
||||
module PlugStream
|
||||
SEP = ["\r", "\n", nil]
|
||||
def get_line
|
||||
buffer = ''
|
||||
loop do
|
||||
char = readchar rescue return
|
||||
if SEP.include? char.chr
|
||||
buffer << $/
|
||||
break
|
||||
else
|
||||
buffer << char
|
||||
end
|
||||
end
|
||||
buffer
|
||||
end
|
||||
end unless defined?(PlugStream)
|
||||
|
||||
def esc arg
|
||||
%["#{arg.gsub('"', '\"')}"]
|
||||
end
|
||||
|
||||
def killall pid
|
||||
pids = [pid]
|
||||
if /mswin|mingw|bccwin/ =~ RUBY_PLATFORM
|
||||
pids.each { |pid| Process.kill 'INT', pid.to_i rescue nil }
|
||||
else
|
||||
unless `which pgrep 2> /dev/null`.empty?
|
||||
children = pids
|
||||
until children.empty?
|
||||
children = children.map { |pid|
|
||||
`pgrep -P #{pid}`.lines.map { |l| l.chomp }
|
||||
}.flatten
|
||||
pids += children
|
||||
end
|
||||
end
|
||||
pids.each { |pid| Process.kill 'TERM', pid.to_i rescue nil }
|
||||
end
|
||||
end
|
||||
|
||||
def compare_git_uri a, b
|
||||
regex = %r{^(?:\w+://)?(?:[^@/]*@)?([^:/]*(?::[0-9]*)?)[:/](.*?)(?:\.git)?/?$}
|
||||
regex.match(a).to_a.drop(1) == regex.match(b).to_a.drop(1)
|
||||
end
|
||||
|
||||
require 'thread'
|
||||
require 'fileutils'
|
||||
require 'timeout'
|
||||
running = true
|
||||
iswin = VIM::evaluate('s:is_win').to_i == 1
|
||||
pull = VIM::evaluate('s:update.pull').to_i == 1
|
||||
base = VIM::evaluate('g:plug_home')
|
||||
all = VIM::evaluate('s:update.todo')
|
||||
limit = VIM::evaluate('get(g:, "plug_timeout", 60)')
|
||||
tries = VIM::evaluate('get(g:, "plug_retries", 2)') + 1
|
||||
nthr = VIM::evaluate('s:update.threads').to_i
|
||||
maxy = VIM::evaluate('winheight(".")').to_i
|
||||
vim7 = VIM::evaluate('v:version').to_i <= 703 && RUBY_PLATFORM =~ /darwin/
|
||||
cd = iswin ? 'cd /d' : 'cd'
|
||||
tot = VIM::evaluate('len(s:update.todo)') || 0
|
||||
bar = ''
|
||||
skip = 'Already installed'
|
||||
mtx = Mutex.new
|
||||
take1 = proc { mtx.synchronize { running && all.shift } }
|
||||
logh = proc {
|
||||
cnt = bar.length
|
||||
$curbuf[1] = "#{pull ? 'Updating' : 'Installing'} plugins (#{cnt}/#{tot})"
|
||||
$curbuf[2] = '[' + bar.ljust(tot) + ']'
|
||||
VIM::command('normal! 2G')
|
||||
VIM::command('redraw')
|
||||
}
|
||||
where = proc { |name| (1..($curbuf.length)).find { |l| $curbuf[l] =~ /^[-+x*] #{name}:/ } }
|
||||
log = proc { |name, result, type|
|
||||
mtx.synchronize do
|
||||
ing = ![true, false].include?(type)
|
||||
bar += type ? '=' : 'x' unless ing
|
||||
b = case type
|
||||
when :install then '+' when :update then '*'
|
||||
when true, nil then '-' else
|
||||
VIM::command("call add(s:update.errors, '#{name}')")
|
||||
'x'
|
||||
end
|
||||
result =
|
||||
if type || type.nil?
|
||||
["#{b} #{name}: #{result.lines.to_a.last || 'OK'}"]
|
||||
elsif result =~ /^Interrupted|^Timeout/
|
||||
["#{b} #{name}: #{result}"]
|
||||
else
|
||||
["#{b} #{name}"] + result.lines.map { |l| " " << l }
|
||||
end
|
||||
if lnum = where.call(name)
|
||||
$curbuf.delete lnum
|
||||
lnum = 4 if ing && lnum > maxy
|
||||
end
|
||||
result.each_with_index do |line, offset|
|
||||
$curbuf.append((lnum || 4) - 1 + offset, line.gsub(/\e\[./, '').chomp)
|
||||
end
|
||||
logh.call
|
||||
end
|
||||
}
|
||||
bt = proc { |cmd, name, type, cleanup|
|
||||
tried = timeout = 0
|
||||
begin
|
||||
tried += 1
|
||||
timeout += limit
|
||||
fd = nil
|
||||
data = ''
|
||||
if iswin
|
||||
Timeout::timeout(timeout) do
|
||||
tmp = VIM::evaluate('tempname()')
|
||||
system("(#{cmd}) > #{tmp}")
|
||||
data = File.read(tmp).chomp
|
||||
File.unlink tmp rescue nil
|
||||
end
|
||||
else
|
||||
fd = IO.popen(cmd).extend(PlugStream)
|
||||
first_line = true
|
||||
log_prob = 1.0 / nthr
|
||||
while line = Timeout::timeout(timeout) { fd.get_line }
|
||||
data << line
|
||||
log.call name, line.chomp, type if name && (first_line || rand < log_prob)
|
||||
first_line = false
|
||||
end
|
||||
fd.close
|
||||
end
|
||||
[$? == 0, data.chomp]
|
||||
rescue Timeout::Error, Interrupt => e
|
||||
if fd && !fd.closed?
|
||||
killall fd.pid
|
||||
fd.close
|
||||
end
|
||||
cleanup.call if cleanup
|
||||
if e.is_a?(Timeout::Error) && tried < tries
|
||||
3.downto(1) do |countdown|
|
||||
s = countdown > 1 ? 's' : ''
|
||||
log.call name, "Timeout. Will retry in #{countdown} second#{s} ...", type
|
||||
sleep 1
|
||||
end
|
||||
log.call name, 'Retrying ...', type
|
||||
retry
|
||||
end
|
||||
[false, e.is_a?(Interrupt) ? "Interrupted!" : "Timeout!"]
|
||||
end
|
||||
}
|
||||
main = Thread.current
|
||||
threads = []
|
||||
watcher = Thread.new {
|
||||
if vim7
|
||||
while VIM::evaluate('getchar(1)')
|
||||
sleep 0.1
|
||||
end
|
||||
else
|
||||
require 'io/console' # >= Ruby 1.9
|
||||
nil until IO.console.getch == 3.chr
|
||||
end
|
||||
mtx.synchronize do
|
||||
running = false
|
||||
threads.each { |t| t.raise Interrupt } unless vim7
|
||||
end
|
||||
threads.each { |t| t.join rescue nil }
|
||||
main.kill
|
||||
}
|
||||
refresh = Thread.new {
|
||||
while true
|
||||
mtx.synchronize do
|
||||
break unless running
|
||||
VIM::command('noautocmd normal! a')
|
||||
end
|
||||
sleep 0.2
|
||||
end
|
||||
} if VIM::evaluate('s:mac_gui') == 1
|
||||
|
||||
clone_opt = VIM::evaluate('s:clone_opt').join(' ')
|
||||
progress = VIM::evaluate('s:progress_opt(1)')
|
||||
nthr.times do
|
||||
mtx.synchronize do
|
||||
threads << Thread.new {
|
||||
while pair = take1.call
|
||||
name = pair.first
|
||||
dir, uri, tag = pair.last.values_at *%w[dir uri tag]
|
||||
exists = File.directory? dir
|
||||
ok, result =
|
||||
if exists
|
||||
chdir = "#{cd} #{iswin ? dir : esc(dir)}"
|
||||
ret, data = bt.call "#{chdir} && git rev-parse --abbrev-ref HEAD 2>&1 && git config -f .git/config remote.origin.url", nil, nil, nil
|
||||
current_uri = data.lines.to_a.last
|
||||
if !ret
|
||||
if data =~ /^Interrupted|^Timeout/
|
||||
[false, data]
|
||||
else
|
||||
[false, [data.chomp, "PlugClean required."].join($/)]
|
||||
end
|
||||
elsif !compare_git_uri(current_uri, uri)
|
||||
[false, ["Invalid URI: #{current_uri}",
|
||||
"Expected: #{uri}",
|
||||
"PlugClean required."].join($/)]
|
||||
else
|
||||
if pull
|
||||
log.call name, 'Updating ...', :update
|
||||
fetch_opt = (tag && File.exist?(File.join(dir, '.git/shallow'))) ? '--depth 99999999' : ''
|
||||
bt.call "#{chdir} && git fetch #{fetch_opt} #{progress} 2>&1", name, :update, nil
|
||||
else
|
||||
[true, skip]
|
||||
end
|
||||
end
|
||||
else
|
||||
d = esc dir.sub(%r{[\\/]+$}, '')
|
||||
log.call name, 'Installing ...', :install
|
||||
bt.call "git clone #{clone_opt unless tag} #{progress} #{uri} #{d} 2>&1", name, :install, proc {
|
||||
FileUtils.rm_rf dir
|
||||
}
|
||||
end
|
||||
mtx.synchronize { VIM::command("let s:update.new['#{name}'] = 1") } if !exists && ok
|
||||
log.call name, result, ok
|
||||
end
|
||||
} if running
|
||||
end
|
||||
end
|
||||
threads.each { |t| t.join rescue nil }
|
||||
logh.call
|
||||
refresh.kill if refresh
|
||||
watcher.kill
|
||||
EOF
|
||||
endfunction
|
||||
|
||||
function! s:shellesc_cmd(arg, script)
|
||||
let escaped = substitute('"'.a:arg.'"', '[&|<>()@^!"]', '^&', 'g')
|
||||
return substitute(escaped, '%', (a:script ? '%' : '^') . '&', 'g')
|
||||
endfunction
|
||||
|
||||
function! s:shellesc_ps1(arg)
|
||||
return "'".substitute(escape(a:arg, '\"'), "'", "''", 'g')."'"
|
||||
endfunction
|
||||
|
||||
function! s:shellesc_sh(arg)
|
||||
return "'".substitute(a:arg, "'", "'\\\\''", 'g')."'"
|
||||
endfunction
|
||||
|
||||
" Escape the shell argument based on the shell.
|
||||
" Vim and Neovim's shellescape() are insufficient.
|
||||
" 1. shellslash determines whether to use single/double quotes.
|
||||
" Double-quote escaping is fragile for cmd.exe.
|
||||
" 2. It does not work for powershell.
|
||||
" 3. It does not work for *sh shells if the command is executed
|
||||
" via cmd.exe (ie. cmd.exe /c sh -c command command_args)
|
||||
" 4. It does not support batchfile syntax.
|
||||
"
|
||||
" Accepts an optional dictionary with the following keys:
|
||||
" - shell: same as Vim/Neovim 'shell' option.
|
||||
" If unset, fallback to 'cmd.exe' on Windows or 'sh'.
|
||||
" - script: If truthy and shell is cmd.exe, escape for batchfile syntax.
|
||||
function! plug#shellescape(arg, ...)
|
||||
if a:arg =~# '^[A-Za-z0-9_/:.-]\+$'
|
||||
return a:arg
|
||||
endif
|
||||
let opts = a:0 > 0 && type(a:1) == s:TYPE.dict ? a:1 : {}
|
||||
let shell = get(opts, 'shell', s:is_win ? 'cmd.exe' : 'sh')
|
||||
let script = get(opts, 'script', 1)
|
||||
if shell =~# 'cmd\(\.exe\)\?$'
|
||||
return s:shellesc_cmd(a:arg, script)
|
||||
elseif s:is_powershell(shell)
|
||||
return s:shellesc_ps1(a:arg)
|
||||
endif
|
||||
return s:shellesc_sh(a:arg)
|
||||
endfunction
|
||||
|
||||
function! s:glob_dir(path)
|
||||
return map(filter(s:glob(a:path, '**'), 'isdirectory(v:val)'), 's:dirpath(v:val)')
|
||||
endfunction
|
||||
|
||||
function! s:progress_bar(line, bar, total)
|
||||
call setline(a:line, '[' . s:lpad(a:bar, a:total) . ']')
|
||||
endfunction
|
||||
|
||||
function! s:compare_git_uri(a, b)
|
||||
" See `git help clone'
|
||||
" https:// [user@] github.com[:port] / junegunn/vim-plug [.git]
|
||||
" [git@] github.com[:port] : junegunn/vim-plug [.git]
|
||||
" file:// / junegunn/vim-plug [/]
|
||||
" / junegunn/vim-plug [/]
|
||||
let pat = '^\%(\w\+://\)\='.'\%([^@/]*@\)\='.'\([^:/]*\%(:[0-9]*\)\=\)'.'[:/]'.'\(.\{-}\)'.'\%(\.git\)\=/\?$'
|
||||
let ma = matchlist(a:a, pat)
|
||||
let mb = matchlist(a:b, pat)
|
||||
return ma[1:2] ==# mb[1:2]
|
||||
endfunction
|
||||
|
||||
function! s:format_message(bullet, name, message)
|
||||
if a:bullet != 'x'
|
||||
return [printf('%s %s: %s', a:bullet, a:name, s:lastline(a:message))]
|
||||
else
|
||||
let lines = map(s:lines(a:message), '" ".v:val')
|
||||
return extend([printf('x %s:', a:name)], lines)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:with_cd(cmd, dir, ...)
|
||||
let script = a:0 > 0 ? a:1 : 1
|
||||
return printf('cd%s %s && %s', s:is_win ? ' /d' : '', plug#shellescape(a:dir, {'script': script}), a:cmd)
|
||||
endfunction
|
||||
|
||||
function! s:system(cmd, ...)
|
||||
let batchfile = ''
|
||||
try
|
||||
let [sh, shellcmdflag, shrd] = s:chsh(1)
|
||||
if type(a:cmd) == s:TYPE.list
|
||||
" Neovim's system() supports list argument to bypass the shell
|
||||
" but it cannot set the working directory for the command.
|
||||
" Assume that the command does not rely on the shell.
|
||||
if has('nvim') && a:0 == 0
|
||||
return system(a:cmd)
|
||||
endif
|
||||
let cmd = join(map(copy(a:cmd), 'plug#shellescape(v:val, {"shell": &shell, "script": 0})'))
|
||||
if s:is_powershell(&shell)
|
||||
let cmd = '& ' . cmd
|
||||
endif
|
||||
else
|
||||
let cmd = a:cmd
|
||||
endif
|
||||
if a:0 > 0
|
||||
let cmd = s:with_cd(cmd, a:1, type(a:cmd) != s:TYPE.list)
|
||||
endif
|
||||
if s:is_win && type(a:cmd) != s:TYPE.list
|
||||
let [batchfile, cmd] = s:batchfile(cmd)
|
||||
endif
|
||||
return system(cmd)
|
||||
finally
|
||||
let [&shell, &shellcmdflag, &shellredir] = [sh, shellcmdflag, shrd]
|
||||
if s:is_win && filereadable(batchfile)
|
||||
call delete(batchfile)
|
||||
endif
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
function! s:system_chomp(...)
|
||||
let ret = call('s:system', a:000)
|
||||
return v:shell_error ? '' : substitute(ret, '\n$', '', '')
|
||||
endfunction
|
||||
|
||||
function! s:git_validate(spec, check_branch)
|
||||
let err = ''
|
||||
if isdirectory(a:spec.dir)
|
||||
let result = [s:git_local_branch(a:spec.dir), s:git_origin_url(a:spec.dir)]
|
||||
let remote = result[-1]
|
||||
if empty(remote)
|
||||
let err = join([remote, 'PlugClean required.'], "\n")
|
||||
elseif !s:compare_git_uri(remote, a:spec.uri)
|
||||
let err = join(['Invalid URI: '.remote,
|
||||
\ 'Expected: '.a:spec.uri,
|
||||
\ 'PlugClean required.'], "\n")
|
||||
elseif a:check_branch && has_key(a:spec, 'commit')
|
||||
let sha = s:git_revision(a:spec.dir)
|
||||
if empty(sha)
|
||||
let err = join(add(result, 'PlugClean required.'), "\n")
|
||||
elseif !s:hash_match(sha, a:spec.commit)
|
||||
let err = join([printf('Invalid HEAD (expected: %s, actual: %s)',
|
||||
\ a:spec.commit[:6], sha[:6]),
|
||||
\ 'PlugUpdate required.'], "\n")
|
||||
endif
|
||||
elseif a:check_branch
|
||||
let current_branch = result[0]
|
||||
" Check tag
|
||||
let origin_branch = s:git_origin_branch(a:spec)
|
||||
if has_key(a:spec, 'tag')
|
||||
let tag = s:system_chomp('git describe --exact-match --tags HEAD 2>&1', a:spec.dir)
|
||||
if a:spec.tag !=# tag && a:spec.tag !~ '\*'
|
||||
let err = printf('Invalid tag: %s (expected: %s). Try PlugUpdate.',
|
||||
\ (empty(tag) ? 'N/A' : tag), a:spec.tag)
|
||||
endif
|
||||
" Check branch
|
||||
elseif origin_branch !=# current_branch
|
||||
let err = printf('Invalid branch: %s (expected: %s). Try PlugUpdate.',
|
||||
\ current_branch, origin_branch)
|
||||
endif
|
||||
if empty(err)
|
||||
let [ahead, behind] = split(s:lastline(s:system([
|
||||
\ 'git', 'rev-list', '--count', '--left-right',
|
||||
\ printf('HEAD...origin/%s', origin_branch)
|
||||
\ ], a:spec.dir)), '\t')
|
||||
if !v:shell_error && ahead
|
||||
if behind
|
||||
" Only mention PlugClean if diverged, otherwise it's likely to be
|
||||
" pushable (and probably not that messed up).
|
||||
let err = printf(
|
||||
\ "Diverged from origin/%s (%d commit(s) ahead and %d commit(s) behind!\n"
|
||||
\ .'Backup local changes and run PlugClean and PlugUpdate to reinstall it.', origin_branch, ahead, behind)
|
||||
else
|
||||
let err = printf("Ahead of origin/%s by %d commit(s).\n"
|
||||
\ .'Cannot update until local changes are pushed.',
|
||||
\ origin_branch, ahead)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
else
|
||||
let err = 'Not found'
|
||||
endif
|
||||
return [err, err =~# 'PlugClean']
|
||||
endfunction
|
||||
|
||||
function! s:rm_rf(dir)
|
||||
if isdirectory(a:dir)
|
||||
return s:system(s:is_win
|
||||
\ ? 'rmdir /S /Q '.plug#shellescape(a:dir)
|
||||
\ : ['rm', '-rf', a:dir])
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:clean(force)
|
||||
call s:prepare()
|
||||
call append(0, 'Searching for invalid plugins in '.g:plug_home)
|
||||
call append(1, '')
|
||||
|
||||
" List of valid directories
|
||||
let dirs = []
|
||||
let errs = {}
|
||||
let [cnt, total] = [0, len(g:plugs)]
|
||||
for [name, spec] in items(g:plugs)
|
||||
if !s:is_managed(name)
|
||||
call add(dirs, spec.dir)
|
||||
else
|
||||
let [err, clean] = s:git_validate(spec, 1)
|
||||
if clean
|
||||
let errs[spec.dir] = s:lines(err)[0]
|
||||
else
|
||||
call add(dirs, spec.dir)
|
||||
endif
|
||||
endif
|
||||
let cnt += 1
|
||||
call s:progress_bar(2, repeat('=', cnt), total)
|
||||
normal! 2G
|
||||
redraw
|
||||
endfor
|
||||
|
||||
let allowed = {}
|
||||
for dir in dirs
|
||||
let allowed[s:dirpath(s:plug_fnamemodify(dir, ':h:h'))] = 1
|
||||
let allowed[dir] = 1
|
||||
for child in s:glob_dir(dir)
|
||||
let allowed[child] = 1
|
||||
endfor
|
||||
endfor
|
||||
|
||||
let todo = []
|
||||
let found = sort(s:glob_dir(g:plug_home))
|
||||
while !empty(found)
|
||||
let f = remove(found, 0)
|
||||
if !has_key(allowed, f) && isdirectory(f)
|
||||
call add(todo, f)
|
||||
call append(line('$'), '- ' . f)
|
||||
if has_key(errs, f)
|
||||
call append(line('$'), ' ' . errs[f])
|
||||
endif
|
||||
let found = filter(found, 'stridx(v:val, f) != 0')
|
||||
end
|
||||
endwhile
|
||||
|
||||
4
|
||||
redraw
|
||||
if empty(todo)
|
||||
call append(line('$'), 'Already clean.')
|
||||
else
|
||||
let s:clean_count = 0
|
||||
call append(3, ['Directories to delete:', ''])
|
||||
redraw!
|
||||
if a:force || s:ask_no_interrupt('Delete all directories?')
|
||||
call s:delete([6, line('$')], 1)
|
||||
else
|
||||
call setline(4, 'Cancelled.')
|
||||
nnoremap <silent> <buffer> d :set opfunc=<sid>delete_op<cr>g@
|
||||
nmap <silent> <buffer> dd d_
|
||||
xnoremap <silent> <buffer> d :<c-u>call <sid>delete_op(visualmode(), 1)<cr>
|
||||
echo 'Delete the lines (d{motion}) to delete the corresponding directories'
|
||||
endif
|
||||
endif
|
||||
4
|
||||
setlocal nomodifiable
|
||||
endfunction
|
||||
|
||||
function! s:delete_op(type, ...)
|
||||
call s:delete(a:0 ? [line("'<"), line("'>")] : [line("'["), line("']")], 0)
|
||||
endfunction
|
||||
|
||||
function! s:delete(range, force)
|
||||
let [l1, l2] = a:range
|
||||
let force = a:force
|
||||
let err_count = 0
|
||||
while l1 <= l2
|
||||
let line = getline(l1)
|
||||
if line =~ '^- ' && isdirectory(line[2:])
|
||||
execute l1
|
||||
redraw!
|
||||
let answer = force ? 1 : s:ask('Delete '.line[2:].'?', 1)
|
||||
let force = force || answer > 1
|
||||
if answer
|
||||
let err = s:rm_rf(line[2:])
|
||||
setlocal modifiable
|
||||
if empty(err)
|
||||
call setline(l1, '~'.line[1:])
|
||||
let s:clean_count += 1
|
||||
else
|
||||
delete _
|
||||
call append(l1 - 1, s:format_message('x', line[1:], err))
|
||||
let l2 += len(s:lines(err))
|
||||
let err_count += 1
|
||||
endif
|
||||
let msg = printf('Removed %d directories.', s:clean_count)
|
||||
if err_count > 0
|
||||
let msg .= printf(' Failed to remove %d directories.', err_count)
|
||||
endif
|
||||
call setline(4, msg)
|
||||
setlocal nomodifiable
|
||||
endif
|
||||
endif
|
||||
let l1 += 1
|
||||
endwhile
|
||||
endfunction
|
||||
|
||||
function! s:upgrade()
|
||||
echo 'Downloading the latest version of vim-plug'
|
||||
redraw
|
||||
let tmp = s:plug_tempname()
|
||||
let new = tmp . '/plug.vim'
|
||||
|
||||
try
|
||||
let out = s:system(['git', 'clone', '--depth', '1', s:plug_src, tmp])
|
||||
if v:shell_error
|
||||
return s:err('Error upgrading vim-plug: '. out)
|
||||
endif
|
||||
|
||||
if readfile(s:me) ==# readfile(new)
|
||||
echo 'vim-plug is already up-to-date'
|
||||
return 0
|
||||
else
|
||||
call rename(s:me, s:me . '.old')
|
||||
call rename(new, s:me)
|
||||
unlet g:loaded_plug
|
||||
echo 'vim-plug has been upgraded'
|
||||
return 1
|
||||
endif
|
||||
finally
|
||||
silent! call s:rm_rf(tmp)
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
function! s:upgrade_specs()
|
||||
for spec in values(g:plugs)
|
||||
let spec.frozen = get(spec, 'frozen', 0)
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
function! s:status()
|
||||
call s:prepare()
|
||||
call append(0, 'Checking plugins')
|
||||
call append(1, '')
|
||||
|
||||
let ecnt = 0
|
||||
let unloaded = 0
|
||||
let [cnt, total] = [0, len(g:plugs)]
|
||||
for [name, spec] in items(g:plugs)
|
||||
let is_dir = isdirectory(spec.dir)
|
||||
if has_key(spec, 'uri')
|
||||
if is_dir
|
||||
let [err, _] = s:git_validate(spec, 1)
|
||||
let [valid, msg] = [empty(err), empty(err) ? 'OK' : err]
|
||||
else
|
||||
let [valid, msg] = [0, 'Not found. Try PlugInstall.']
|
||||
endif
|
||||
else
|
||||
if is_dir
|
||||
let [valid, msg] = [1, 'OK']
|
||||
else
|
||||
let [valid, msg] = [0, 'Not found.']
|
||||
endif
|
||||
endif
|
||||
let cnt += 1
|
||||
let ecnt += !valid
|
||||
" `s:loaded` entry can be missing if PlugUpgraded
|
||||
if is_dir && get(s:loaded, name, -1) == 0
|
||||
let unloaded = 1
|
||||
let msg .= ' (not loaded)'
|
||||
endif
|
||||
call s:progress_bar(2, repeat('=', cnt), total)
|
||||
call append(3, s:format_message(valid ? '-' : 'x', name, msg))
|
||||
normal! 2G
|
||||
redraw
|
||||
endfor
|
||||
call setline(1, 'Finished. '.ecnt.' error(s).')
|
||||
normal! gg
|
||||
setlocal nomodifiable
|
||||
if unloaded
|
||||
echo "Press 'L' on each line to load plugin, or 'U' to update"
|
||||
nnoremap <silent> <buffer> L :call <SID>status_load(line('.'))<cr>
|
||||
xnoremap <silent> <buffer> L :call <SID>status_load(line('.'))<cr>
|
||||
end
|
||||
endfunction
|
||||
|
||||
function! s:extract_name(str, prefix, suffix)
|
||||
return matchstr(a:str, '^'.a:prefix.' \zs[^:]\+\ze:.*'.a:suffix.'$')
|
||||
endfunction
|
||||
|
||||
function! s:status_load(lnum)
|
||||
let line = getline(a:lnum)
|
||||
let name = s:extract_name(line, '-', '(not loaded)')
|
||||
if !empty(name)
|
||||
call plug#load(name)
|
||||
setlocal modifiable
|
||||
call setline(a:lnum, substitute(line, ' (not loaded)$', '', ''))
|
||||
setlocal nomodifiable
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:status_update() range
|
||||
let lines = getline(a:firstline, a:lastline)
|
||||
let names = filter(map(lines, 's:extract_name(v:val, "[x-]", "")'), '!empty(v:val)')
|
||||
if !empty(names)
|
||||
echo
|
||||
execute 'PlugUpdate' join(names)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:is_preview_window_open()
|
||||
silent! wincmd P
|
||||
if &previewwindow
|
||||
wincmd p
|
||||
return 1
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:find_name(lnum)
|
||||
for lnum in reverse(range(1, a:lnum))
|
||||
let line = getline(lnum)
|
||||
if empty(line)
|
||||
return ''
|
||||
endif
|
||||
let name = s:extract_name(line, '-', '')
|
||||
if !empty(name)
|
||||
return name
|
||||
endif
|
||||
endfor
|
||||
return ''
|
||||
endfunction
|
||||
|
||||
function! s:preview_commit()
|
||||
if b:plug_preview < 0
|
||||
let b:plug_preview = !s:is_preview_window_open()
|
||||
endif
|
||||
|
||||
let sha = matchstr(getline('.'), '^ \X*\zs[0-9a-f]\{7,9}')
|
||||
if empty(sha)
|
||||
let name = matchstr(getline('.'), '^- \zs[^:]*\ze:$')
|
||||
if empty(name)
|
||||
return
|
||||
endif
|
||||
let title = 'HEAD@{1}..'
|
||||
let command = 'git diff --no-color HEAD@{1}'
|
||||
else
|
||||
let title = sha
|
||||
let command = 'git show --no-color --pretty=medium '.sha
|
||||
let name = s:find_name(line('.'))
|
||||
endif
|
||||
|
||||
if empty(name) || !has_key(g:plugs, name) || !isdirectory(g:plugs[name].dir)
|
||||
return
|
||||
endif
|
||||
|
||||
if exists('g:plug_pwindow') && !s:is_preview_window_open()
|
||||
execute g:plug_pwindow
|
||||
execute 'e' title
|
||||
else
|
||||
execute 'pedit' title
|
||||
wincmd P
|
||||
endif
|
||||
setlocal previewwindow filetype=git buftype=nofile bufhidden=wipe nobuflisted modifiable
|
||||
let batchfile = ''
|
||||
try
|
||||
let [sh, shellcmdflag, shrd] = s:chsh(1)
|
||||
let cmd = 'cd '.plug#shellescape(g:plugs[name].dir).' && '.command
|
||||
if s:is_win
|
||||
let [batchfile, cmd] = s:batchfile(cmd)
|
||||
endif
|
||||
execute 'silent %!' cmd
|
||||
finally
|
||||
let [&shell, &shellcmdflag, &shellredir] = [sh, shellcmdflag, shrd]
|
||||
if s:is_win && filereadable(batchfile)
|
||||
call delete(batchfile)
|
||||
endif
|
||||
endtry
|
||||
setlocal nomodifiable
|
||||
nnoremap <silent> <buffer> q :q<cr>
|
||||
wincmd p
|
||||
endfunction
|
||||
|
||||
function! s:section(flags)
|
||||
call search('\(^[x-] \)\@<=[^:]\+:', a:flags)
|
||||
endfunction
|
||||
|
||||
function! s:format_git_log(line)
|
||||
let indent = ' '
|
||||
let tokens = split(a:line, nr2char(1))
|
||||
if len(tokens) != 5
|
||||
return indent.substitute(a:line, '\s*$', '', '')
|
||||
endif
|
||||
let [graph, sha, refs, subject, date] = tokens
|
||||
let tag = matchstr(refs, 'tag: [^,)]\+')
|
||||
let tag = empty(tag) ? ' ' : ' ('.tag.') '
|
||||
return printf('%s%s%s%s%s (%s)', indent, graph, sha, tag, subject, date)
|
||||
endfunction
|
||||
|
||||
function! s:append_ul(lnum, text)
|
||||
call append(a:lnum, ['', a:text, repeat('-', len(a:text))])
|
||||
endfunction
|
||||
|
||||
function! s:diff()
|
||||
call s:prepare()
|
||||
call append(0, ['Collecting changes ...', ''])
|
||||
let cnts = [0, 0]
|
||||
let bar = ''
|
||||
let total = filter(copy(g:plugs), 's:is_managed(v:key) && isdirectory(v:val.dir)')
|
||||
call s:progress_bar(2, bar, len(total))
|
||||
for origin in [1, 0]
|
||||
let plugs = reverse(sort(items(filter(copy(total), (origin ? '' : '!').'(has_key(v:val, "commit") || has_key(v:val, "tag"))'))))
|
||||
if empty(plugs)
|
||||
continue
|
||||
endif
|
||||
call s:append_ul(2, origin ? 'Pending updates:' : 'Last update:')
|
||||
for [k, v] in plugs
|
||||
let branch = s:git_origin_branch(v)
|
||||
if len(branch)
|
||||
let range = origin ? '..origin/'.branch : 'HEAD@{1}..'
|
||||
let cmd = ['git', 'log', '--graph', '--color=never']
|
||||
if s:git_version_requirement(2, 10, 0)
|
||||
call add(cmd, '--no-show-signature')
|
||||
endif
|
||||
call extend(cmd, ['--pretty=format:%x01%h%x01%d%x01%s%x01%cr', range])
|
||||
if has_key(v, 'rtp')
|
||||
call extend(cmd, ['--', v.rtp])
|
||||
endif
|
||||
let diff = s:system_chomp(cmd, v.dir)
|
||||
if !empty(diff)
|
||||
let ref = has_key(v, 'tag') ? (' (tag: '.v.tag.')') : has_key(v, 'commit') ? (' '.v.commit) : ''
|
||||
call append(5, extend(['', '- '.k.':'.ref], map(s:lines(diff), 's:format_git_log(v:val)')))
|
||||
let cnts[origin] += 1
|
||||
endif
|
||||
endif
|
||||
let bar .= '='
|
||||
call s:progress_bar(2, bar, len(total))
|
||||
normal! 2G
|
||||
redraw
|
||||
endfor
|
||||
if !cnts[origin]
|
||||
call append(5, ['', 'N/A'])
|
||||
endif
|
||||
endfor
|
||||
call setline(1, printf('%d plugin(s) updated.', cnts[0])
|
||||
\ . (cnts[1] ? printf(' %d plugin(s) have pending updates.', cnts[1]) : ''))
|
||||
|
||||
if cnts[0] || cnts[1]
|
||||
nnoremap <silent> <buffer> <plug>(plug-preview) :silent! call <SID>preview_commit()<cr>
|
||||
if empty(maparg("\<cr>", 'n'))
|
||||
nmap <buffer> <cr> <plug>(plug-preview)
|
||||
endif
|
||||
if empty(maparg('o', 'n'))
|
||||
nmap <buffer> o <plug>(plug-preview)
|
||||
endif
|
||||
endif
|
||||
if cnts[0]
|
||||
nnoremap <silent> <buffer> X :call <SID>revert()<cr>
|
||||
echo "Press 'X' on each block to revert the update"
|
||||
endif
|
||||
normal! gg
|
||||
setlocal nomodifiable
|
||||
endfunction
|
||||
|
||||
function! s:revert()
|
||||
if search('^Pending updates', 'bnW')
|
||||
return
|
||||
endif
|
||||
|
||||
let name = s:find_name(line('.'))
|
||||
if empty(name) || !has_key(g:plugs, name) ||
|
||||
\ input(printf('Revert the update of %s? (y/N) ', name)) !~? '^y'
|
||||
return
|
||||
endif
|
||||
|
||||
call s:system('git reset --hard HEAD@{1} && git checkout '.plug#shellescape(g:plugs[name].branch).' --', g:plugs[name].dir)
|
||||
setlocal modifiable
|
||||
normal! "_dap
|
||||
setlocal nomodifiable
|
||||
echo 'Reverted'
|
||||
endfunction
|
||||
|
||||
function! s:snapshot(force, ...) abort
|
||||
call s:prepare()
|
||||
setf vim
|
||||
call append(0, ['" Generated by vim-plug',
|
||||
\ '" '.strftime("%c"),
|
||||
\ '" :source this file in vim to restore the snapshot',
|
||||
\ '" or execute: vim -S snapshot.vim',
|
||||
\ '', '', 'PlugUpdate!'])
|
||||
1
|
||||
let anchor = line('$') - 3
|
||||
let names = sort(keys(filter(copy(g:plugs),
|
||||
\'has_key(v:val, "uri") && isdirectory(v:val.dir)')))
|
||||
for name in reverse(names)
|
||||
let sha = has_key(g:plugs[name], 'commit') ? g:plugs[name].commit : s:git_revision(g:plugs[name].dir)
|
||||
if !empty(sha)
|
||||
call append(anchor, printf("silent! let g:plugs['%s'].commit = '%s'", name, sha))
|
||||
redraw
|
||||
endif
|
||||
endfor
|
||||
|
||||
if a:0 > 0
|
||||
let fn = s:plug_expand(a:1)
|
||||
if filereadable(fn) && !(a:force || s:ask(a:1.' already exists. Overwrite?'))
|
||||
return
|
||||
endif
|
||||
call writefile(getline(1, '$'), fn)
|
||||
echo 'Saved as '.a:1
|
||||
silent execute 'e' s:esc(fn)
|
||||
setf vim
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:split_rtp()
|
||||
return split(&rtp, '\\\@<!,')
|
||||
endfunction
|
||||
|
||||
let s:first_rtp = s:escrtp(get(s:split_rtp(), 0, ''))
|
||||
let s:last_rtp = s:escrtp(get(s:split_rtp(), -1, ''))
|
||||
|
||||
if exists('g:plugs')
|
||||
let g:plugs_order = get(g:, 'plugs_order', keys(g:plugs))
|
||||
call s:upgrade_specs()
|
||||
call s:define_commands()
|
||||
endif
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
Binary file not shown.
BIN
vim/.vim/backup/%Users%joshp%.config%nvim%init.lua
Normal file
BIN
vim/.vim/backup/%Users%joshp%.config%nvim%init.lua
Normal file
Binary file not shown.
BIN
vim/.vim/backup/%Users%joshp%.config%nvim%lua%joshp%init.lua
Normal file
BIN
vim/.vim/backup/%Users%joshp%.config%nvim%lua%joshp%init.lua
Normal file
Binary file not shown.
BIN
vim/.vim/backup/%Users%joshp%.config%nvim%lua%joshp%lazy.lua
Normal file
BIN
vim/.vim/backup/%Users%joshp%.config%nvim%lua%joshp%lazy.lua
Normal file
Binary file not shown.
Binary file not shown.
BIN
vim/.vim/backup/%Users%joshp%.config%nvim%lua%joshp%packer.lua
Normal file
BIN
vim/.vim/backup/%Users%joshp%.config%nvim%lua%joshp%packer.lua
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
vim/.vim/backup/%Users%joshp%.config%nvim%lua%plugins.lua
Normal file
BIN
vim/.vim/backup/%Users%joshp%.config%nvim%lua%plugins.lua
Normal file
Binary file not shown.
BIN
vim/.vim/backup/%Users%joshp%.config%nvim%lua%vim-remaps.lua
Normal file
BIN
vim/.vim/backup/%Users%joshp%.config%nvim%lua%vim-remaps.lua
Normal file
Binary file not shown.
BIN
vim/.vim/backup/%Users%joshp%.config%nvim%lua%vim-undo.lua
Normal file
BIN
vim/.vim/backup/%Users%joshp%.config%nvim%lua%vim-undo.lua
Normal file
Binary file not shown.
BIN
vim/.vim/backup/%Users%joshp%.vimrc
Normal file
BIN
vim/.vim/backup/%Users%joshp%.vimrc
Normal file
Binary file not shown.
BIN
vim/.vim/backup/%Users%joshp%.zsh_profile
Normal file
BIN
vim/.vim/backup/%Users%joshp%.zsh_profile
Normal file
Binary file not shown.
BIN
vim/.vim/backup/%Users%joshp%.zshrc
Normal file
BIN
vim/.vim/backup/%Users%joshp%.zshrc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
vim/.vim/backup/%Users%joshp%Projects%LearnC%Makefile
Normal file
BIN
vim/.vim/backup/%Users%joshp%Projects%LearnC%Makefile
Normal file
Binary file not shown.
BIN
vim/.vim/backup/%Users%joshp%Projects%LearnC%hello.c
Normal file
BIN
vim/.vim/backup/%Users%joshp%Projects%LearnC%hello.c
Normal file
Binary file not shown.
BIN
vim/.vim/backup/%Users%joshp%nvim%init.lua
Normal file
BIN
vim/.vim/backup/%Users%joshp%nvim%init.lua
Normal file
Binary file not shown.
BIN
vim/.vim/backup/%Users%joshp%nvim%lua%joshp%init.lua
Normal file
BIN
vim/.vim/backup/%Users%joshp%nvim%lua%joshp%init.lua
Normal file
Binary file not shown.
BIN
vim/.vim/backup/%private%etc%hosts
Normal file
BIN
vim/.vim/backup/%private%etc%hosts
Normal file
Binary file not shown.
741
vim/.vim/bundle/.neobundle/doc/fugitive.txt
Normal file
741
vim/.vim/bundle/.neobundle/doc/fugitive.txt
Normal file
@@ -0,0 +1,741 @@
|
||||
*fugitive.txt* A Git wrapper so awesome, it should be illegal
|
||||
|
||||
Author: Tim Pope <http://tpo.pe/>
|
||||
License: Same terms as Vim itself (see |license|)
|
||||
|
||||
This plugin is only available if 'compatible' is not set.
|
||||
|
||||
INTRODUCTION *fugitive*
|
||||
|
||||
Whenever you edit a file from a Git repository, a set of commands is defined
|
||||
that serve as a gateway to Git.
|
||||
|
||||
COMMANDS *fugitive-commands*
|
||||
|
||||
These commands are local to the buffers in which they work (generally, buffers
|
||||
that are part of Git repositories).
|
||||
|
||||
*fugitive-:G*
|
||||
:G [args] Same as :Git, but two characters shorter.
|
||||
|
||||
*:Git*
|
||||
:Git {args} Run an arbitrary git command and display any output.
|
||||
On UNIX this uses a pty and on other platforms it uses
|
||||
a pipe, which will cause some behavior differences
|
||||
such as the absence of progress bars. Any file the
|
||||
command edits (for example, a commit message) will be
|
||||
loaded into a split window. Closing that window will
|
||||
resume running the command. A few Git subcommands
|
||||
have different behavior; these are documented below.
|
||||
|
||||
*:Git!*
|
||||
:Git! {args} Run an arbitrary git command in the background and
|
||||
stream the output to the preview window. Requires a
|
||||
Vim with |setbufline()|. Press CTRL-D during an
|
||||
interactive :Git invocation to switch to this mode
|
||||
retroactively.
|
||||
|
||||
*:Git_--paginate* *:Git_-p*
|
||||
:Git --paginate {args} Run an arbitrary git command, capture output to a temp
|
||||
:Git -p {args} file, and |:split| that temp file. Pass ++curwin as
|
||||
the first argument to |:edit| the temp file instead.
|
||||
A temp file is always used for commands like diff and
|
||||
log that typically uses a pager, and for any command
|
||||
that has the pager.<cmd> Git configuration option set.
|
||||
|
||||
:{range}Git! --paginate {args}
|
||||
:{range}Git! -p {args} Run an arbitrary git command, and insert the output
|
||||
after {range} in the current buffer.
|
||||
|
||||
*fugitive-summary*
|
||||
:Git With no arguments, bring up a summary window vaguely
|
||||
akin to git-status. If a summary window is already
|
||||
open for the current repository, it is focused
|
||||
instead. Press g? or see |fugitive-maps| for usage.
|
||||
|
||||
*:Git_blame*
|
||||
:Git blame [flags] Run git-blame [flags] on the current file and open the
|
||||
results in a scroll-bound vertical split. The
|
||||
following maps, which work on the cursor line commit
|
||||
where sensible, are provided:
|
||||
|
||||
g? show this help
|
||||
A resize to end of author column
|
||||
C resize to end of commit column
|
||||
D resize to end of date/time column
|
||||
gq close blame, then |:Gedit| to return to work
|
||||
tree version
|
||||
<CR> close blame, and jump to patch that added line
|
||||
(or directly to blob for boundary commit)
|
||||
o jump to patch or blob in horizontal split
|
||||
O jump to patch or blob in new tab
|
||||
p jump to patch or blob in preview window
|
||||
- reblame at commit
|
||||
|
||||
The maps |fugitive_P| and |fugitive_~| are also
|
||||
supported to reblame on a parent commit, but this is
|
||||
inherently fragile, as the line being blamed will no
|
||||
longer exist. The preferred alternative is to use
|
||||
<CR> to open up the commit, select the corresponding
|
||||
`-` line that you care about, and press <CR> twice
|
||||
more to reblame at that line. Viewing the commit also
|
||||
gives you additional context as to why the line
|
||||
changed.
|
||||
|
||||
*g:fugitive_dynamic_colors*
|
||||
In the GUI or a 256 color terminal, commit hashes will
|
||||
be highlighted in different colors. To disable this:
|
||||
>
|
||||
let g:fugitive_dynamic_colors = 0
|
||||
<
|
||||
:[range]Git blame [...] If a range is given, just that part of the file will
|
||||
:Git blame [...] {file} be blamed, and a horizontal split without
|
||||
scrollbinding is used. You can also give an arbitrary
|
||||
filename.
|
||||
|
||||
*:Git_difftool*
|
||||
:Git[!] difftool [args] Invoke `git diff [args]` and load the changes into the
|
||||
quickfix list. Each changed hunk gets a separate
|
||||
quickfix entry unless you pass an option like
|
||||
--name-only or --name-status. Jumps to the first
|
||||
change unless [!] is given.
|
||||
|
||||
:Git difftool -y [args] Invoke `git diff [args]`, open each changed file in a
|
||||
new tab, and invoke |:Gdiffsplit!| against the
|
||||
appropriate commit.
|
||||
|
||||
*:Git_mergetool*
|
||||
:Git mergetool [args] Like |:Git_difftool|, but target merge conflicts.
|
||||
|
||||
Wrappers for Vim built-ins ~
|
||||
|
||||
These all directly map onto a built-in Vim command, and generally have names
|
||||
that prepend "G" to the command they are wrapping. For example, :Ggrep is G
|
||||
plus |:grep|.
|
||||
|
||||
*:Ggrep* *:Git_grep*
|
||||
:Ggrep[!] [args] An approximation of |:grep|[!] with git-grep as
|
||||
:Git[!] grep -O [args] 'grepprg'.
|
||||
|
||||
:Ggrep[!] --quiet [args]
|
||||
:Ggrep[!] -q [args] Like |:Ggrep|, but instead of displaying output, open
|
||||
the quickfix list.
|
||||
|
||||
*:Glgrep*
|
||||
:Glgrep[!] [args] :Ggrep but for |:lgrep|.
|
||||
:0Git[!] grep -O [args]
|
||||
|
||||
*:Gclog*
|
||||
:Gclog[!] [args] Use git-log [args] to load the commit history into the
|
||||
|quickfix| list. Jumps to the first commit unless [!]
|
||||
is given. This command wraps |:cfile|.
|
||||
|
||||
The quickfix list can be awkward for many use cases
|
||||
and exhibits extremely poor performance with larger
|
||||
data sets. Consider using |:Git| log --oneline
|
||||
instead.
|
||||
|
||||
:{range}Gclog[!] [args] Use git-log -L to load previous revisions of the given
|
||||
range of the current file into the |quickfix| list.
|
||||
The cursor is positioned on the first line of the
|
||||
first diff hunk for each commit. Use :0Gclog to
|
||||
target the entire file.
|
||||
|
||||
*:Gllog*
|
||||
:Gllog [args] Like |:Gclog|, but use the location list instead of the
|
||||
|quickfix| list.
|
||||
|
||||
*:Gcd*
|
||||
:Gcd [directory] |:cd| relative to the repository.
|
||||
|
||||
*:Glcd*
|
||||
:Glcd [directory] |:lcd| relative to the repository.
|
||||
|
||||
*:Gedit* *fugitive-:Ge*
|
||||
:Gedit [object] |:edit| a |fugitive-object|.
|
||||
|
||||
*:Gsplit*
|
||||
:Gsplit [object] |:split| a |fugitive-object|.
|
||||
|
||||
*:Gvsplit*
|
||||
:Gvsplit [object] |:vsplit| a |fugitive-object|.
|
||||
|
||||
*:Gtabedit*
|
||||
:Gtabedit [object] |:tabedit| a |fugitive-object|.
|
||||
|
||||
*:Gpedit*
|
||||
:Gpedit [object] |:pedit| a |fugitive-object|.
|
||||
|
||||
*:Gdrop*
|
||||
:Gdrop [object] |:drop| a |fugitive-object|.
|
||||
|
||||
*:Gread* *fugitive-:Gr*
|
||||
:Gread [object] Empty the buffer and |:read| a |fugitive-object|.
|
||||
When the argument is omitted, this is similar to
|
||||
git-checkout on a work tree file or git-add on a stage
|
||||
file, but without writing anything to disk.
|
||||
|
||||
:{range}Gread [object] |:read| in a |fugitive-object| after {range}.
|
||||
|
||||
*:Gwrite* *fugitive-:Gw*
|
||||
:Gwrite Write to the current file's path and stage the results.
|
||||
When run in a work tree file, it is effectively git
|
||||
add. Elsewhere, it is effectively git-checkout. A
|
||||
great deal of effort is expended to behave sensibly
|
||||
when the work tree or index version of the file is
|
||||
open in another buffer.
|
||||
|
||||
:Gwrite {path} You can give |:Gwrite| an explicit path of where in
|
||||
the work tree to write. You can also give a path like
|
||||
:0:foo.txt or :0:% to write to just that stage in
|
||||
the index.
|
||||
|
||||
*:Gwq*
|
||||
:Gwq [path] Like |:Gwrite| followed by |:quit| if the write
|
||||
succeeded.
|
||||
|
||||
:Gwq! [path] Like |:Gwrite|! followed by |:quit|! if the write
|
||||
succeeded.
|
||||
|
||||
*:Gdiffsplit*
|
||||
:Gdiffsplit [object] Perform a |vimdiff| against the given file, or if a
|
||||
commit is given, the current file in that commit.
|
||||
With no argument, the version in the index or work
|
||||
tree is used, and the work tree version is always
|
||||
placed to the right or bottom, depending on available
|
||||
width. Use Vim's |do| and |dp| to stage and unstage
|
||||
changes.
|
||||
|
||||
*:Gdiffsplit!*
|
||||
:Gdiffsplit! Diff against any and all direct ancestors, retaining
|
||||
focus on the current window. During a merge conflict,
|
||||
this is a three-way diff against the "ours" and
|
||||
"theirs" ancestors. Additional d2o and d3o maps are
|
||||
provided to obtain the hunk from the "ours" or
|
||||
"theirs" ancestor, respectively.
|
||||
|
||||
:Gdiffsplit! {object} Like |:Gdiffsplit|, but retain focus on the current
|
||||
window.
|
||||
|
||||
*:Gvdiffsplit*
|
||||
:Gvdiffsplit [object] Like |:Gdiffsplit|, but always split vertically.
|
||||
|
||||
*:Ghdiffsplit*
|
||||
:Gdiffsplit ++novertical [object]
|
||||
:Ghdiffsplit [object] Like |:Gdiffsplit|, but with "vertical" removed from
|
||||
'diffopt'. The split will still be vertical if
|
||||
combined with |:vertical|.
|
||||
|
||||
Other commands ~
|
||||
|
||||
These do not directly correspond to any built-in Vim command, and have a
|
||||
capital letter after the "G" to convey this. For example, the file move
|
||||
operation has nothing to do with the |:move| built-in, so it is named :GMove,
|
||||
not :Gmove.
|
||||
|
||||
*:GMove*
|
||||
:GMove {destination} Wrapper around git-mv that renames the buffer
|
||||
afterward. Add a ! to pass -f.
|
||||
|
||||
*:GRename*
|
||||
:GRename {destination} Like |:GMove| but operates relative to the parent
|
||||
directory of the current file.
|
||||
|
||||
*:GDelete*
|
||||
:GDelete Wrapper around git-rm that deletes the buffer
|
||||
afterward. When invoked in an index file, --cached is
|
||||
passed. Add a ! to pass -f and forcefully discard the
|
||||
buffer.
|
||||
|
||||
*:GRemove* *:GUnlink*
|
||||
:GRemove Like |:GDelete|, but keep the (now empty) buffer around.
|
||||
:GUnlink
|
||||
|
||||
*:GBrowse*
|
||||
:GBrowse Open the current file, blob, tree, commit, or tag
|
||||
in your browser at the upstream hosting provider.
|
||||
Upstream providers can be added by installing an
|
||||
appropriate Vim plugin. For example, GitHub can be
|
||||
supported by installing rhubarb.vim, available at
|
||||
<https://github.com/tpope/vim-rhubarb>.
|
||||
|
||||
:GBrowse {object} Like :GBrowse, but for a given |fugitive-object|.
|
||||
|
||||
:{range}GBrowse [args] Appends an anchor to the URL that emphasizes the
|
||||
selected lines. This also forces the URL to include a
|
||||
commit rather than a branch name so it remains valid
|
||||
if the file changes. You can give a range of "0" to
|
||||
force this behavior without including an anchor.
|
||||
|
||||
:GBrowse [...]@{remote} Force using the given remote rather than the remote
|
||||
for the current branch. The remote is used to
|
||||
determine which upstream repository to link to.
|
||||
|
||||
:GBrowse {url} Open an arbitrary URL in your browser.
|
||||
|
||||
:[range]GBrowse! [args] Like :GBrowse, but put the URL on the clipboard rather
|
||||
than opening it.
|
||||
|
||||
MAPS *fugitive-maps*
|
||||
|
||||
These maps are available in both the |fugitive-summary| buffer and Fugitive
|
||||
object buffers, although not all maps make sense in all buffers. Mappings
|
||||
that operate on the file or hunk under the cursor are generally available in
|
||||
visual mode to operate on multiple files or partial hunks.
|
||||
|
||||
*fugitive-staging-maps*
|
||||
Staging/unstaging maps ~
|
||||
|
||||
*fugitive_s*
|
||||
s Stage (add) the file or hunk under the cursor.
|
||||
|
||||
*fugitive_u*
|
||||
u Unstage (reset) the file or hunk under the cursor.
|
||||
|
||||
*fugitive_-*
|
||||
- Stage or unstage the file or hunk under the cursor.
|
||||
|
||||
*fugitive_U*
|
||||
U Unstage everything.
|
||||
|
||||
*fugitive_X*
|
||||
X Discard the change under the cursor. This uses
|
||||
`checkout` or `clean` under the hood. A command is
|
||||
echoed that shows how to undo the change. Consult
|
||||
`:messages` to see it again. During a merge conflict,
|
||||
use 2X to call `checkout --ours` or 3X to call
|
||||
`checkout --theirs` .
|
||||
|
||||
*fugitive_=*
|
||||
= Toggle an inline diff of the file under the cursor.
|
||||
|
||||
*fugitive_>*
|
||||
> Insert an inline diff of the file under the cursor.
|
||||
|
||||
*fugitive_<*
|
||||
< Remove the inline diff of the file under the cursor.
|
||||
|
||||
*fugitive_gI*
|
||||
gI Open .git/info/exclude in a split and add the file
|
||||
under the cursor. Use a count to open .gitignore.
|
||||
|
||||
*fugitive_I*
|
||||
I Invoke |:Git| add --patch or reset --patch on the file
|
||||
P under the cursor. On untracked files, this instead
|
||||
calls |:Git| add --intent-to-add.
|
||||
|
||||
*fugitive_d*
|
||||
Diff maps ~
|
||||
*fugitive_dp*
|
||||
dp Invoke |:Git| diff on the file under the cursor.
|
||||
Deprecated in favor of inline diffs.
|
||||
|
||||
*fugitive_dd*
|
||||
dd Perform a |:Gdiffsplit| on the file under the cursor.
|
||||
|
||||
*fugitive_dv*
|
||||
dv Perform a |:Gvdiffsplit| on the file under the cursor.
|
||||
|
||||
*fugitive_ds* *fugitive_dh*
|
||||
ds Perform a |:Ghdiffsplit| on the file under the cursor.
|
||||
dh
|
||||
|
||||
*fugitive_dq*
|
||||
dq Close all but one diff buffer, and |:diffoff|! the
|
||||
last one.
|
||||
|
||||
*fugitive_d?*
|
||||
d? Show this help.
|
||||
|
||||
*fugitive-navigation-maps*
|
||||
Navigation maps ~
|
||||
|
||||
*fugitive_<CR>*
|
||||
<CR> Open the file or |fugitive-object| under the cursor.
|
||||
In a blob, this and similar maps jump to the patch
|
||||
from the diff where this was added, or where it was
|
||||
removed if a count was given. If the line is still in
|
||||
the work tree version, passing a count takes you to
|
||||
it.
|
||||
|
||||
*fugitive_o*
|
||||
o Open the file or |fugitive-object| under the cursor in
|
||||
a new split.
|
||||
|
||||
*fugitive_gO*
|
||||
gO Open the file or |fugitive-object| under the cursor in
|
||||
a new vertical split.
|
||||
|
||||
*fugitive_O*
|
||||
O Open the file or |fugitive-object| under the cursor in
|
||||
a new tab.
|
||||
|
||||
*fugitive_p*
|
||||
p Open the file or |fugitive-object| under the cursor in
|
||||
a preview window. In the status buffer, 1p is
|
||||
required to bypass the legacy usage instructions.
|
||||
|
||||
*fugitive_~*
|
||||
~ Open the current file in the [count]th first ancestor.
|
||||
|
||||
*fugitive_P*
|
||||
P Open the current file in the [count]th parent.
|
||||
|
||||
*fugitive_C*
|
||||
C Open the commit containing the current file.
|
||||
|
||||
*fugitive_CTRL-P* *fugitive_(*
|
||||
( Jump to the previous file, hunk, or revision.
|
||||
|
||||
*fugitive_CTRL-N* *fugitive_)*
|
||||
) Jump to the next file, hunk, or revision.
|
||||
|
||||
*fugitive_[c*
|
||||
[c Jump to previous hunk, expanding inline diffs
|
||||
automatically. (This shadows the Vim built-in |[c|
|
||||
that provides a similar operation in |diff| mode.)
|
||||
|
||||
*fugitive_]c*
|
||||
]c Jump to next hunk, expanding inline diffs
|
||||
automatically. (This shadows the Vim built-in |]c|
|
||||
that provides a similar operation in |diff| mode.)
|
||||
|
||||
*fugitive_[/* *fugitive_[m*
|
||||
[/ Jump to previous file, collapsing inline diffs
|
||||
[m automatically. (Mnemonic: "/" appears in filenames,
|
||||
"m" appears in "filenames".)
|
||||
|
||||
*fugitive_]/* *fugitive_]m*
|
||||
]/ Jump to next file, collapsing inline diffs
|
||||
]m automatically. (Mnemonic: "/" appears in filenames,
|
||||
"m" appears in "filenames".)
|
||||
|
||||
*fugitive_i*
|
||||
i Jump to the next file or hunk, expanding inline diffs
|
||||
automatically.
|
||||
|
||||
*fugitive_[[*
|
||||
[[ Jump [count] sections backward.
|
||||
|
||||
*fugitive_]]*
|
||||
]] Jump [count] sections forward.
|
||||
|
||||
*fugitive_[]*
|
||||
[] Jump [count] section ends backward.
|
||||
|
||||
*fugitive_][*
|
||||
][ Jump [count] section ends forward.
|
||||
|
||||
*fugitive_star*
|
||||
* On the first column of a + or - diff line, search for
|
||||
the corresponding - or + line. Otherwise, defer to
|
||||
built-in |star|.
|
||||
|
||||
*fugitive_#*
|
||||
# Same as "*", but search backward.
|
||||
|
||||
*fugitive_gu*
|
||||
gu Jump to file [count] in the "Untracked" or "Unstaged"
|
||||
section.
|
||||
|
||||
*fugitive_gU*
|
||||
gU Jump to file [count] in the "Unstaged" section.
|
||||
|
||||
*fugitive_gs*
|
||||
gs Jump to file [count] in the "Staged" section.
|
||||
|
||||
*fugitive_gp*
|
||||
gp Jump to file [count] in the "Unpushed" section.
|
||||
|
||||
*fugitive_gP*
|
||||
gP Jump to file [count] in the "Unpulled" section.
|
||||
|
||||
*fugitive_gr*
|
||||
gr Jump to file [count] in the "Rebasing" section.
|
||||
|
||||
*fugitive_gi*
|
||||
gi Open .git/info/exclude in a split. Use a count to
|
||||
open .gitignore.
|
||||
|
||||
*fugitive_c*
|
||||
Commit maps ~
|
||||
|
||||
cc Create a commit.
|
||||
|
||||
ca Amend the last commit and edit the message.
|
||||
|
||||
ce Amend the last commit without editing the message.
|
||||
|
||||
cw Reword the last commit.
|
||||
|
||||
cvc Create a commit with -v.
|
||||
|
||||
cva Amend the last commit with -v
|
||||
|
||||
cf Create a `fixup!` commit for the commit under the
|
||||
cursor.
|
||||
|
||||
cF Create a `fixup!` commit for the commit under the
|
||||
cursor and immediately rebase it.
|
||||
|
||||
cs Create a `squash!` commit for the commit under the
|
||||
cursor.
|
||||
|
||||
cS Create a `squash!` commit for the commit under the
|
||||
cursor and immediately rebase it.
|
||||
|
||||
cA Create a `squash!` commit for the commit under the
|
||||
cursor and edit the message.
|
||||
|
||||
c<Space> Populate command line with ":Git commit ".
|
||||
|
||||
*fugitive_cr*
|
||||
crc Revert the commit under the cursor.
|
||||
|
||||
crn Revert the commit under the cursor in the index and
|
||||
work tree, but do not actually commit the changes.
|
||||
|
||||
cr<Space> Populate command line with ":Git revert ".
|
||||
|
||||
*fugitive_cm*
|
||||
cm<Space> Populate command line with ":Git merge ".
|
||||
|
||||
c? Show this help.
|
||||
|
||||
*fugitive_cb*
|
||||
*fugitive_co*
|
||||
Checkout/branch maps ~
|
||||
|
||||
coo Check out the commit under the cursor.
|
||||
|
||||
cb<Space> Populate command line with ":Git branch ".
|
||||
|
||||
co<Space> Populate command line with ":Git checkout ".
|
||||
|
||||
cb? Show this help.
|
||||
co?
|
||||
|
||||
*fugitive_cz*
|
||||
Stash maps ~
|
||||
|
||||
czz Push stash. Pass a [count] of 1 to add
|
||||
`--include-untracked` or 2 to add `--all`.
|
||||
|
||||
czw Push stash of the work-tree. Like `czz` with
|
||||
`--keep-index`.
|
||||
|
||||
czs Push stash of the stage. Does not accept a count.
|
||||
|
||||
czA Apply topmost stash, or stash@{count}.
|
||||
|
||||
cza Apply topmost stash, or stash@{count}, preserving the
|
||||
index.
|
||||
|
||||
czP Pop topmost stash, or stash@{count}.
|
||||
|
||||
czp Pop topmost stash, or stash@{count}, preserving the
|
||||
index.
|
||||
|
||||
cz<Space> Populate command line with ":Git stash ".
|
||||
|
||||
cz? Show this help.
|
||||
|
||||
*fugitive_r*
|
||||
Rebase maps ~
|
||||
|
||||
ri Perform an interactive rebase. Uses ancestor of
|
||||
u commit under cursor as upstream if available.
|
||||
|
||||
rf Perform an autosquash rebase without editing the todo
|
||||
list. Uses ancestor of commit under cursor as
|
||||
upstream if available.
|
||||
|
||||
ru Perform an interactive rebase against @{upstream}.
|
||||
|
||||
rp Perform an interactive rebase against @{push}.
|
||||
|
||||
rr Continue the current rebase.
|
||||
|
||||
rs Skip the current commit and continue the current
|
||||
rebase.
|
||||
|
||||
ra Abort the current rebase.
|
||||
|
||||
re Edit the current rebase todo list.
|
||||
|
||||
rw Perform an interactive rebase with the commit under
|
||||
the cursor set to `reword`.
|
||||
|
||||
rm Perform an interactive rebase with the commit under
|
||||
the cursor set to `edit`.
|
||||
|
||||
rd Perform an interactive rebase with the commit under
|
||||
the cursor set to `drop`.
|
||||
|
||||
r<Space> Populate command line with ":Git rebase ".
|
||||
|
||||
r? Show this help.
|
||||
|
||||
*fugitive-misc-maps*
|
||||
Miscellaneous maps ~
|
||||
|
||||
*fugitive_gq* *fugitive_q*
|
||||
gq Close the status buffer.
|
||||
|
||||
*fugitive_.*
|
||||
. Start a |:| command line with the file under the
|
||||
cursor prepopulated.
|
||||
|
||||
*fugitive_g?*
|
||||
g? Show help for |fugitive-maps|.
|
||||
|
||||
*fugitive-global-maps*
|
||||
Global maps ~
|
||||
|
||||
*fugitive_c_CTRL-R_CTRL-G*
|
||||
<C-R><C-G> On the command line, recall the path to the current
|
||||
|fugitive-object| (that is, a representation of the
|
||||
object recognized by |:Gedit|).
|
||||
|
||||
*fugitive_y_CTRL-G*
|
||||
["x]y<C-G> Yank the path to the current |fugitive-object|.
|
||||
|
||||
*g:fugitive_no_maps*
|
||||
Global maps can be disabled with the g:fugitive_no_maps option.
|
||||
>
|
||||
let g:fugitive_no_maps = 1
|
||||
<
|
||||
SPECIFYING OBJECTS *fugitive-object* *fugitive-revision*
|
||||
|
||||
Fugitive objects are either work tree files or Git revisions as defined in the
|
||||
"SPECIFYING REVISIONS" section in the git-rev-parse man page, with expansions
|
||||
inspired by |cmdline-special| layered on top. For commands that accept an
|
||||
optional object, the default is the file in the index for work tree files and
|
||||
the work tree file for everything else. Example objects follow.
|
||||
|
||||
Object Meaning ~
|
||||
@ The commit referenced by @ aka HEAD
|
||||
master The commit referenced by master
|
||||
master^ The parent of the commit referenced by master
|
||||
master...other The merge base of master and other
|
||||
master: The tree referenced by master
|
||||
./master The file named master in the working directory
|
||||
:(top)master The file named master in the work tree
|
||||
Makefile The file named Makefile in the work tree
|
||||
@^:Makefile The file named Makefile in the parent of HEAD
|
||||
:Makefile The file named Makefile in the index (writable)
|
||||
@~2:% The current file in the grandparent of HEAD
|
||||
:% The current file in the index
|
||||
:1:% The current file's common ancestor during a conflict
|
||||
:2:# The alternate file in the target branch during a conflict
|
||||
:3:#5 The file from buffer #5 in the merged branch during a conflict
|
||||
! The commit owning the current file
|
||||
!:Makefile The file named Makefile in the commit owning the current file
|
||||
!3^2 The second parent of the commit owning buffer #3
|
||||
.git/config The repo config file
|
||||
: The |fugitive-summary| buffer
|
||||
- A temp file containing the last |:Git| invocation's output
|
||||
<cfile> The file or commit under the cursor
|
||||
|
||||
STATUSLINE *fugitive-statusline*
|
||||
|
||||
*FugitiveStatusline()* *fugitive#statusline()*
|
||||
Add %{FugitiveStatusline()} to your statusline to get an indicator including
|
||||
the current branch and the currently edited file's commit. If you don't have
|
||||
a statusline, this one matches the default when 'ruler' is set:
|
||||
>
|
||||
set statusline=%<%f\ %h%m%r%{FugitiveStatusline()}%=%-14.(%l,%c%V%)\ %P
|
||||
<
|
||||
AUTOCOMMANDS *fugitive-autocommands*
|
||||
|
||||
A handful of |User| |autocommands| are provided to allow extending and
|
||||
overriding Fugitive behaviors. Example usage:
|
||||
>
|
||||
autocmd User FugitiveBlob,FugitiveStageBlob call s:BlobOverrides()
|
||||
<
|
||||
*User_FugitiveTag*
|
||||
FugitiveTag After loading a tag object.
|
||||
|
||||
*User_FugitiveCommit*
|
||||
FugitiveCommit After loading a commit object.
|
||||
|
||||
*User_FugitiveTree*
|
||||
FugitiveTree After loading a tree (directory) object.
|
||||
|
||||
*User_FugitiveBlob*
|
||||
FugitiveBlob After loading a committed blob (file) object.
|
||||
|
||||
*User_FugitiveObject*
|
||||
FugitiveObject After loading any of the 4 above buffer types.
|
||||
|
||||
*User_FugitiveStageBlob*
|
||||
FugitiveStageBlob After loading a staged blob (file) object. These
|
||||
buffers are 'modifiable' and oftentimes don't want the
|
||||
same behavior as the other buffer types.
|
||||
|
||||
*User_FugitiveIndex*
|
||||
FugitiveIndex After loading the |fugitive-summary| buffer.
|
||||
|
||||
*User_FugitivePager*
|
||||
FugitivePager After loading a temp file created by a command like
|
||||
:Git --paginate or :Git blame.
|
||||
|
||||
*User_FugitiveEditor*
|
||||
FugitiveEditor After a :Git command (e.g., :Git commit) edits a file
|
||||
(e.g., the commit message).
|
||||
|
||||
*User_FugitiveChanged*
|
||||
FugitiveChanged After any event which can potentially change the
|
||||
repository, for example, any invocation of |:Git|.
|
||||
Originally intended for expiring caches, but can have
|
||||
other uses.
|
||||
|
||||
API *fugitive-api*
|
||||
|
||||
Officially supported functions are documented inline in plugin/fugitive.vim.
|
||||
|
||||
DEPRECATIONS *fugitive-deprecated*
|
||||
|
||||
The following commands are deprecated in favor of replacements that adhere to
|
||||
a new naming scheme. Remember that |:Git| can be shortened to |:G|, so
|
||||
replacements using it are just one space character longer than the legacy
|
||||
version.
|
||||
|
||||
*:Gremove* Superseded by |:GRemove|.
|
||||
*:Gdelete* Superseded by |:GDelete|.
|
||||
*:Gmove* Superseded by |:GMove|.
|
||||
*:Grename* Superseded by |:GRename|.
|
||||
*:Gbrowse* Superseded by |:GBrowse|.
|
||||
*:Gdiff* Superseded by |:Gdiffsplit|
|
||||
*:Gsdiff* Superseded by |:Ghdiffsplit|
|
||||
*:Gvdiff* Superseded by |:Gvdiffsplit| or |:vert| |:Gdiffsplit|.
|
||||
*:Gblame* Superseded by |:Git_blame|.
|
||||
*:Gcommit* Superseded by |:Git| commit.
|
||||
*:Gmerge* Superseded by |:Git| merge and |:Git_mergetool|.
|
||||
*:Gpull* Superseded by |:Git| pull.
|
||||
*:Grebase* Superseded by |:Git| rebase.
|
||||
*:Grevert* Superseded by |:Git| revert.
|
||||
*:Gpush* Superseded by |:Git| push.
|
||||
*:Gfetch* Superseded by |:Git| fetch.
|
||||
*:Glog* Superseded by |:Gclog|.
|
||||
*:Gstatus* Superseded by |:Git| (with no arguments).
|
||||
*:Gsplit!* Superseded by |:Git_--paginate|.
|
||||
*:Gvsplit!* Superseded by :vert Git --paginate.
|
||||
*:Gtabsplit!* Superseded by :tab Git --paginate.
|
||||
*:Gpedit!* Superseded by :Git! --paginate.
|
||||
|
||||
*User_Fugitive*
|
||||
Fugitive used to support `:autocmd User Fugitive` to run an autocommand after
|
||||
loading any buffer belonging to a Git repository, but this has been phased
|
||||
out. Instead, one can leverage regular autocommand events like |BufNewFile|
|
||||
and |BufReadPost|, and check !empty(FugitiveGitDir()) to confirm Fugitive has
|
||||
found a repository. See also |fugitive-autocommands| for other, more
|
||||
selective events.
|
||||
|
||||
ABOUT *fugitive-about*
|
||||
|
||||
Grab the latest version or report a bug on GitHub:
|
||||
|
||||
https://github.com/tpope/vim-fugitive
|
||||
|
||||
vim:tw=78:et:ft=help:norl:
|
||||
1753
vim/.vim/bundle/.neobundle/doc/neobundle.txt
Normal file
1753
vim/.vim/bundle/.neobundle/doc/neobundle.txt
Normal file
@@ -0,0 +1,1753 @@
|
||||
*neobundle.txt* Next generation Vim package manager
|
||||
|
||||
Version: 4.0
|
||||
Author: Shougo <Shougo.Matsu at gmail.com>
|
||||
Copyright (C) 2010 http://github.com/gmarik
|
||||
License: MIT license {{{
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
}}}
|
||||
|
||||
CONTENTS *neobundle-contents*
|
||||
|
||||
Introduction |neobundle-introduction|
|
||||
Usage |neobundle-usage|
|
||||
Install |neobundle-install|
|
||||
Interface |neobundle-interface|
|
||||
Functions |neobundle-functions|
|
||||
Commands |neobundle-commands|
|
||||
Variables |neobundle-variables|
|
||||
Options |neobundle-options|
|
||||
Configuration Examples |neobundle-examples|
|
||||
Migrating from Pathogen |neobundle-migrate-from-pathogen|
|
||||
Unite sources |neobundle-unite-sources|
|
||||
FAQ |neobundle-faq|
|
||||
|
||||
==============================================================================
|
||||
INTRODUCTION *neobundle-introduction*
|
||||
|
||||
*neobundle* is the next generation Vim package manager. This plugin is based on
|
||||
Vundle (https://github.com/gmarik/vundle), but I renamed and added tons of
|
||||
features. Because, Vundle's author does not want to add huge features in
|
||||
Vundle.
|
||||
|
||||
Note: Neobundle is not a stable plugin manager. If you want a stable plugin
|
||||
manager, you should use Vundle plugin. It works well widely and it is more
|
||||
tested. If you want to use extended features, you can use neobundle.
|
||||
|
||||
Vundle features: Stable, simple, good for beginners
|
||||
Neobundle features: Early development (may break compatibility), very complex,
|
||||
good for plugin power users (for example, 50+ plugins and over 1000 lines
|
||||
.vimrc, ...)
|
||||
|
||||
Neobundle features:
|
||||
* Uses |vimproc| if available
|
||||
* Uses neovim async jobs feature if available
|
||||
* |unite.vim| interface
|
||||
* Revision lock
|
||||
* Supports svn/Mercurial repositories besides Git
|
||||
* Can use a different base path
|
||||
* Vundle like syntax
|
||||
|
||||
==============================================================================
|
||||
USAGE *neobundle-usage*
|
||||
|
||||
Refer to the example:
|
||||
|neobundle-examples|
|
||||
|
||||
Run this command to update your bundled plugins:
|
||||
>
|
||||
:NeoBundleUpdate
|
||||
<
|
||||
Note: To use the unite.vim interface, run this command (requires |unite.vim|):
|
||||
>
|
||||
:Unite neobundle/update
|
||||
<
|
||||
Settings for this plugin are compatible with Vundle.vim :-)
|
||||
|
||||
You can search popular plugins and add neobundle settings at Vimpusher
|
||||
(registration required):
|
||||
http://www.vimpusher.com/
|
||||
Or at vim-scripts.org:
|
||||
http://vim-scripts.org/
|
||||
|
||||
Neobundle now features a plugin search for vim.org scripts (requires
|
||||
|unite.vim|)
|
||||
>
|
||||
:Unite neobundle/search
|
||||
<
|
||||
==============================================================================
|
||||
INSTALL *neobundle-install*
|
||||
|
||||
Requirements:
|
||||
* Vim 7.2.051 or above.
|
||||
* "git" command in $PATH (if you want to install github or vim.org plugins)
|
||||
|
||||
First of all, git clone the repository.
|
||||
|
||||
Note: You need to have git installed.
|
||||
>
|
||||
$ mkdir ~/.vim/bundle
|
||||
$ git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim
|
||||
<
|
||||
And set up a path to the repository directory.
|
||||
>
|
||||
set runtimepath+={path to neobundle directory}
|
||||
<
|
||||
Example:
|
||||
>
|
||||
set runtimepath+=~/.vim/bundle/neobundle.vim
|
||||
<
|
||||
Now configure your bundles. (Refer to |neobundle-examples|)
|
||||
|
||||
Run the |:NeoBundleInstall| command to install your plugins.
|
||||
>
|
||||
$ vim +NeoBundleInstall +q
|
||||
|
||||
or
|
||||
>
|
||||
$ . ~/.vim/bundle/neobundle.vim/bin/neoinstall
|
||||
<
|
||||
Note: To use neoinstall in Windows, Vim command must be in $PATH. >
|
||||
> .vim/bundle/neobundle.vim/bin/neoinstall
|
||||
Note: To update and build vimproc in Windows, you can use
|
||||
"neoinstall_novimproc" command. >
|
||||
> .vim/bundle/neobundle.vim/bin/neoinstall_novimproc vimproc.vim
|
||||
|
||||
neoinstall can take arguments (install/update plugin names).
|
||||
>
|
||||
# Build vimproc before install plugins
|
||||
$ . ~/.vim/bundle/neobundle.vim/bin/neoinstall vimproc.vim
|
||||
<
|
||||
==============================================================================
|
||||
INTERFACE *neobundle-interface*
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
FUNCTIONS *neobundle-functions*
|
||||
|
||||
neobundle#begin([{base-path}]) *neobundle#begin()*
|
||||
Initializes neobundle.vim and start neobundle bundles
|
||||
configuration block.
|
||||
{base-path} is where your downloaded plugins will be placed.
|
||||
|
||||
If {base-path} is omitted, neobundle looks for "~/.vim/bundle"
|
||||
or "~/.config/nvim/bundle" directory.
|
||||
Note: But recommend you to specify the {base-path}.
|
||||
|
||||
Note: You must not call the function inside a
|
||||
"has('vim_starting')" block.
|
||||
Note: You can use |neobundle#begin()| / |neobundle#end()| block
|
||||
only once in your .vimrc.
|
||||
|
||||
Note: It executes ":filetype off" automatically.
|
||||
Note: You must execute |:NeoBundle| commands in
|
||||
|neobundle#begin()| or |neobundle#append()| block.
|
||||
>
|
||||
if &compatible
|
||||
set nocompatible
|
||||
endif
|
||||
set runtimepath+={path to neobundle directory}
|
||||
|
||||
call neobundle#begin(expand('~/.vim/bundle'))
|
||||
|
||||
NeoBundle 'https://github.com/Shougo/neocomplcache.git'
|
||||
...
|
||||
|
||||
call neobundle#end()
|
||||
|
||||
filetype plugin indent on
|
||||
<
|
||||
|
||||
neobundle#append() *neobundle#append()*
|
||||
Start neobundle bundles configuration block.
|
||||
You can use multiple |neobundle#append()| / |neobundle#end()|
|
||||
blocks in your .vimrc.
|
||||
Note: It does not initialize neobundle. You must call
|
||||
|neobundle#begin()| at first.
|
||||
Note: It executes ":filetype off" automatically.
|
||||
Note: You must execute |:NeoBundle| commands in
|
||||
|neobundle#begin()| or |neobundle#append()| block.
|
||||
|
||||
neobundle#end() *neobundle#end()*
|
||||
End neobundle bundles configuration block.
|
||||
|
||||
neobundle#add({repository}[, {options}]) *neobundle#add()*
|
||||
The function version of |:NeoBundle|.
|
||||
Note: You must call it in |neobundle#begin()| or
|
||||
|neobundle#append()| block.
|
||||
|
||||
neobundle#add_meta({repository}[, {options}]) *neobundle#add_meta()*
|
||||
Initialize a bundle from the metadata {name}.
|
||||
Note: You must call it in |neobundle#begin()| or
|
||||
|neobundle#append()| block. >
|
||||
|
||||
" It installs vimshell and vimproc
|
||||
call neobundle#add_meta('vimshell')
|
||||
|
||||
neobundle#source({bundle-names}) *neobundle#source()*
|
||||
Same as |:NeoBundleSource|.
|
||||
{bundle-names} is a list of bundle names.
|
||||
|
||||
*neobundle#exists_not_installed_bundles()*
|
||||
neobundle#exists_not_installed_bundles()
|
||||
Checks if there are any bundles that are not installed.
|
||||
|
||||
*neobundle#get_not_installed_bundle_names()*
|
||||
neobundle#get_not_installed_bundle_names()
|
||||
Returns the names of bundles that are not installed.
|
||||
|
||||
*neobundle#is_installed()*
|
||||
neobundle#is_installed({bundle-name})
|
||||
Checks if bundle {bundle-name} is installed.
|
||||
|
||||
*neobundle#is_sourced()*
|
||||
neobundle#is_sourced({bundle-name})
|
||||
Checks if bundle {bundle-name} is loaded.
|
||||
|
||||
*neobundle#local()*
|
||||
neobundle#local({directory}, [{options}, [{names}]])
|
||||
Adds the subdirectories in {directory} to
|
||||
'runtimepath', like |pathogen| does. See |neobundle-options|
|
||||
for keys to set in {options}.
|
||||
If {names} is given, {names} directories are only loaded.
|
||||
{names} is |wildcards| list.
|
||||
Note: |:NeoBundleLocal| is a shortcut for this function.
|
||||
>
|
||||
" Load plugin from "~/.vim/bundle".
|
||||
call neobundle#local("~/.vim/bundle", {})
|
||||
" Load plugin1 and plugin2 from "~/.vim/bundle".
|
||||
call neobundle#local("~/.vim/bundle",
|
||||
\ {}, ['plugin1', 'plugin2', 'vim-*', '*.vim'])
|
||||
<
|
||||
*neobundle#load_toml()*
|
||||
neobundle#load_toml({filename}, [{options}])
|
||||
Load TOML plugin configurations from {filename}. See
|
||||
|neobundle-options| for keys to set in {options}.
|
||||
Note: TOML parser is slow. You should use neobundle cache
|
||||
feature.
|
||||
|
||||
TOML file format specification:
|
||||
https://github.com/toml-lang/toml
|
||||
Note: Original TOML parser is created by kamichidu.
|
||||
https://github.com/kamichidu
|
||||
>
|
||||
" Load toml from "~/.vim/bundle.toml".
|
||||
call neobundle#load_toml("~/.vim/bundle.toml", {})
|
||||
<
|
||||
TOML file sample is here:
|
||||
>
|
||||
# TOML sample
|
||||
[[plugins]]
|
||||
# repository name is required.
|
||||
repo = 'kana/vim-niceblock'
|
||||
on_map = '<Plug>'
|
||||
|
||||
[[plugins]]
|
||||
repo = 'Shougo/neosnippet.vim'
|
||||
depends = ['Shougo/neosnippet-snippets',
|
||||
'Shougo/context_filetype.vim']
|
||||
on_i = 1
|
||||
on_ft = 'snippet'
|
||||
|
||||
[[plugins.depends]]
|
||||
repo = 'honza/vim-snippet'
|
||||
name = 'honza-snippet'
|
||||
|
||||
[[plugins]]
|
||||
repo = 'Shougo/neobundle.vim'
|
||||
fetch = 1
|
||||
|
||||
[[plugins]]
|
||||
repo = 'Shougo/vimproc.vim'
|
||||
|
||||
[plugins.build]
|
||||
windows = 'tools\\update-dll-mingw'
|
||||
cygwin = 'make -f make_cygwin.mak'
|
||||
mac = 'make -f make_mac.mak'
|
||||
unix = 'make -f make_unix.mak'
|
||||
<
|
||||
neobundle#get({bundle-name}) *neobundle#get()*
|
||||
Get the neobundle options dictionary for {bundle-name}.
|
||||
Useful for setting hooks.
|
||||
Example:
|
||||
>
|
||||
NeoBundle 'tyru/open-browser.vim', '', 'same', {
|
||||
\ 'on_map' : '<Plug>',
|
||||
\ }
|
||||
nmap gs <Plug>(open-browser-wwwsearch)
|
||||
|
||||
let bundle = neobundle#get('open-browser.vim')
|
||||
function! bundle.hooks.on_source(bundle)
|
||||
nnoremap <Plug>(open-browser-wwwsearch)
|
||||
\ :<C-u>call <SID>www_search()<CR>
|
||||
function! s:www_search()
|
||||
let search_word = input('Please input search word: ', '',
|
||||
\ 'customlist,wwwsearch#cmd_Wwwsearch_complete')
|
||||
if search_word != ''
|
||||
execute 'OpenBrowserSearch' escape(search_word, '"')
|
||||
endif
|
||||
endfunction
|
||||
endfunction
|
||||
<
|
||||
neobundle#get_hooks({bundle-name}) *neobundle#get_hooks()*
|
||||
Get the neobundle "hooks" dictionary for {bundle-name}.
|
||||
Useful for setting hooks.
|
||||
|
||||
neobundle#call_hook({hook-name}) *neobundle#call_hook()*
|
||||
Calls the hook {hook-name}.
|
||||
Note: If {hook-name} is "on_source", neobundle will call
|
||||
"on_source" hooks in sourced bundles.
|
||||
|
||||
neobundle#bundle({repository}, [{options}]) *neobundle#bundle()*
|
||||
Initialize a bundle.
|
||||
If {repository} is list, you can initialize options in
|
||||
multiple bundles.
|
||||
Note: You can use this function instead of |:NeoBundle|
|
||||
command.
|
||||
|
||||
neobundle#config({bundle-name}, {options}) *neobundle#config()*
|
||||
neobundle#config({options})
|
||||
Change bundle options for {bundle-name}.
|
||||
It you omit {bundle-name}, it uses |neobundle#tapped|
|
||||
variable.
|
||||
If {bundle-name} is list, you can change options in multiple
|
||||
bundles.
|
||||
If {bundle-name} is not configured, it will print error
|
||||
messages.
|
||||
If {bundle-name} is already loaded, it will ignore.
|
||||
|
||||
Note: To lazy-load a plugin, you can set the "lazy" flag after
|
||||
calling |:NeoBundle| or |:NeoBundleLocal|.
|
||||
Note: You must call it within
|
||||
|neobundle#begin()|/|neobundle#end()| block.
|
||||
>
|
||||
NeoBundle 'Shougo/neocomplcache'
|
||||
call neobundle#config('neocomplcache', {
|
||||
\ 'lazy' : 1,
|
||||
\ 'on_i' : 1,
|
||||
\ })
|
||||
<
|
||||
neobundle#tap({bundle-name}) *neobundle#tap()*
|
||||
Initialize |neobundle#tapped| and |neobundle#hooks| variable
|
||||
as {bundle-name} bundle.
|
||||
It returns non-zero if {bundle-name} is exists and not
|
||||
disabled.
|
||||
>
|
||||
if neobundle#tap('foo')
|
||||
" If foo plugin is installed and enabled
|
||||
|
||||
" neobundle#hooks is syntax sugar
|
||||
function! neobundle#hooks.on_source(bundle)
|
||||
" Settings, Init, ...
|
||||
" Timing of adding rtp
|
||||
" Like vimrc time
|
||||
let g:foo#bar = 1
|
||||
let g:foo#path = a:bundle.path
|
||||
call foo#baz()
|
||||
endfunction
|
||||
|
||||
function! neobundle#hooks.on_post_source(bundle)
|
||||
" Settings, Init, ...
|
||||
" Timing of after source plugin files
|
||||
" Like VimEnter time
|
||||
let g:foo#bar = 3
|
||||
call foo#bazbaz()
|
||||
endfunction
|
||||
|
||||
" Define plugin mappings, commands, ...
|
||||
map f <Plug>(foo)
|
||||
command! FOO call foo#foo()
|
||||
|
||||
call neobundle#untap()
|
||||
endif
|
||||
<
|
||||
neobundle#untap() *neobundle#untap()*
|
||||
Clear current |neobundle#tapped| and |neobundle#hooks| variable.
|
||||
|
||||
neobundle#has_cache() *neobundle#has_cache()*
|
||||
Checks if a cache file is available.
|
||||
Note: It is deprecated. You should use
|
||||
|neobundle#load_cache()| instead of it.
|
||||
|
||||
neobundle#load_cache([{vimrcs}]) *neobundle#load_cache()*
|
||||
Load plugin configuration from the cache file,
|
||||
which is located in `neobundle#get_rtp_dir() . '/cache'`.
|
||||
{vimrcs} is a list of compared .vimrc and/or other configuration
|
||||
files. The default is |$MYVIMRC|.
|
||||
|
||||
It returns 1, if the cache file is old or invalid or not
|
||||
found.
|
||||
|
||||
The default cache location can be overridden through
|
||||
|g:neobundle#cache_file|.
|
||||
>
|
||||
if neobundle#load_cache()
|
||||
" My Bundles here:
|
||||
" ...
|
||||
NeoBundleSaveCache
|
||||
endif
|
||||
<
|
||||
If you use multiple configuration files,
|
||||
>
|
||||
if neobundle#load_cache($MYVIMRC, 'plugin.vim', 'plugin.toml')
|
||||
" My Bundles here or other files spcified as arguments
|
||||
" ...
|
||||
NeoBundleSaveCache
|
||||
endif
|
||||
<
|
||||
------------------------------------------------------------------------------
|
||||
COMMANDS *neobundle-commands*
|
||||
|
||||
*:NeoBundle*
|
||||
:NeoBundle {repository} [[,{revision}] [,{options}]]
|
||||
:NeoBundle {repository} ,{revision}, {default} [,{options}]]
|
||||
Initialize a bundle.
|
||||
{repository} is the repository URI. {revision} is the desired
|
||||
revision or branch name. If omitted, the current latest
|
||||
revision will be used. {default} is a "default options
|
||||
name" (See |g:neobundle#default_options|).
|
||||
Note: Don't set neobundle setting in .gvimrc!
|
||||
Note: If you omit the protocol (ex: https) for a git
|
||||
repo, |g:neobundle#types#git#default_protocol| is used.
|
||||
Note: |neobundle-options-lazy| is set automatically.
|
||||
|
||||
Note: If you manage bundle by neobundle, it may be error
|
||||
occurred when update bundles.
|
||||
|
||||
See |neobundle-options| for what to set in {options}.
|
||||
|
||||
:NeoBundleInstall [{name}...] *:NeoBundleInstall*
|
||||
Installs plugins specified by {name}. {name} is
|
||||
fuzzy-searched. If {name} is omitted, all configured plugins
|
||||
are installed.
|
||||
Note: {name}s are plugin names like "neobundle.vim", not
|
||||
"Shougo/neobundle.vim".
|
||||
Note: neobundle cannot use neovim async jobs feature in the
|
||||
command. If you want to use the feature, you should use unite
|
||||
interface instead.
|
||||
|
||||
:NeoBundleInstall! [{name}...] *:NeoBundleInstall!*
|
||||
Same as |:NeoBundleUpdate|.
|
||||
|
||||
:NeoBundleUpdate [{name}...] *:NeoBundleUpdate*
|
||||
Installs and updates plugins specified by {name}. {name} is
|
||||
fuzzy-searched. If {name} is omitted, all configured plugins
|
||||
are installed and updated, except if they are outdated or have
|
||||
the "frozen" option set.
|
||||
Note: {name}s are plugin names like "neobundle.vim", not
|
||||
"Shougo/neobundle.vim".
|
||||
Note: neobundle cannot use neovim async jobs feature in the
|
||||
command. If you want to use the feature, you should use unite
|
||||
interface instead.
|
||||
|
||||
:NeoBundleUpdate! [{name}...] *:NeoBundleUpdate!*
|
||||
Same as |:NeoBundleUpdate|, except that it disregards the
|
||||
"frozen" option.
|
||||
|
||||
:NeoBundleReinstall [{name}...] *:NeoBundleReinstall*
|
||||
Reinstalls the bundles specified by {name}.
|
||||
If the bundles are "none" type or local plugins, they are
|
||||
ignored.
|
||||
Note: It removes the bundles and installs them. It is the
|
||||
dangerous command.
|
||||
|
||||
:NeoBundleList *:NeoBundleList*
|
||||
Prints a list of configured bundles.
|
||||
|
||||
:NeoBundleLog *:NeoBundleLog*
|
||||
Prints all previous install logs.
|
||||
|
||||
:NeoBundleUpdatesLog *:NeoBundleUpdatesLog*
|
||||
Prints previous update logs.
|
||||
|
||||
:NeoBundleLocal {base-directory-path} *:NeoBundleLocal*
|
||||
Registers a bundle from the directories in
|
||||
{base-directory-path} like pathogen does.
|
||||
|
||||
Note: If you want to use neobundle like pathogen.vim, you
|
||||
should set a different base path from the standard neobundle
|
||||
bundles path.
|
||||
>
|
||||
NeoBundleLocal ~/.vim/bundle
|
||||
<
|
||||
*:NeoBundleLazy*
|
||||
:NeoBundleLazy {repository} [[,{revision}] [,{options}]]
|
||||
:NeoBundleLazy {repository} ,{revision}, {default} [,{options}]]
|
||||
Registers a bundle, but doesn't add it to 'runtimepath'.
|
||||
Note: If you want to know slow loading plugins, you should use
|
||||
the external tool or |--startuptime|.
|
||||
https://github.com/hyiltiz/vim-plugins-profile
|
||||
>
|
||||
NeoBundleLazy 'The-NERD-tree', {'augroup' : 'NERDTree'}
|
||||
NeoBundleSource The-NERD-tree
|
||||
<
|
||||
You can use it to load plugins for specific filetypes.
|
||||
>
|
||||
NeoBundleLazy 'Rip-Rip/clang_complete'
|
||||
autocmd FileType c,cpp NeoBundleSource clang_complete
|
||||
<
|
||||
:NeoBundleSource [{name}...] *:NeoBundleSource*
|
||||
|:source| the bundles specified by {name}.
|
||||
If {name} is omitted, |:source| all lazy bundles.
|
||||
Note: This command is used to load the bundles configured with
|
||||
|:NeoBundleLazy|.
|
||||
|
||||
:NeoBundleFetch {repository} [, {options}] *:NeoBundleFetch*
|
||||
Registers a bundle, but doesn't add it to 'runtimepath'.
|
||||
Unlike |:NeoBundleLazy|, you cannot load the bundle with
|
||||
|:NeoBundleSource|. This command is useful for managing
|
||||
non-Vim plugins using neobundle.
|
||||
>
|
||||
NeoBundleFetch 'davidhalter/jedi'
|
||||
<
|
||||
:NeoBundleDocs *:NeoBundleDocs*
|
||||
Execute |:helptags| for all bundles manually.
|
||||
|
||||
*:NeoBundleDirectInstall*
|
||||
:NeoBundleDirectInstall {repository} [, {options}]
|
||||
Registers a bundle, and installs it directly.
|
||||
Note: The settings are saved in "extra_bundles.vim" in
|
||||
|neobundle#begin()| directory.
|
||||
Note: To remove direct installed bundles, you must delete
|
||||
plugin settings manually in "extra_bundles.vim" in
|
||||
|neobundle#begin()| directory.
|
||||
>
|
||||
NeoBundleDirectInstall 'Shougo/neocomplcache'
|
||||
<
|
||||
*:NeoBundleExtraEdit*
|
||||
:NeoBundleExtraEdit
|
||||
Edit extra bundles configuration easily.
|
||||
|
||||
:NeoBundleDisable {name}... *:NeoBundleDisable*
|
||||
Disables bundles specified by {name}. If a bundle is
|
||||
disabled, its path will be removed from 'runtimepath'.
|
||||
Note: This command must be executed before neobundle loads
|
||||
the plugins(after |neobundle#end()|).
|
||||
|
||||
:NeoBundleCheck *:NeoBundleCheck*
|
||||
Check plugins installation. If plugins are not installed, it
|
||||
will execute |:NeoBundleInstall| automatically. This command
|
||||
also check documentation directories and will execute
|
||||
|:NeoBundleDocs| automatically.
|
||||
|
||||
:NeoBundleCheckUpdate [{name}...] *:NeoBundleCheckUpdate*
|
||||
Check plugins update specified by {name}. If updates are
|
||||
available, it will execute |:NeoBundleUpdate| automatically.
|
||||
Note: It is supported in git type only.
|
||||
|
||||
*:NeoBundleCount*
|
||||
:NeoBundleCount
|
||||
Show bundles count. You can know how many bundles you have.
|
||||
|
||||
*:NeoBundleGC*
|
||||
:NeoBundleGC [{bundle-names}]
|
||||
Execute Garbage Collect commands in bundles.
|
||||
If {bundle-name} is omit, all bundles will be GCed.
|
||||
|
||||
*:NeoBundleSaveCache*
|
||||
:NeoBundleSaveCache
|
||||
Save plugin configuration in the cache file.
|
||||
Note: It cannot save functions for example "hooks" member.
|
||||
Note: It is available when loading .vimrc.
|
||||
|
||||
*:NeoBundleLoadCache*
|
||||
:NeoBundleLoadCache
|
||||
Load plugin configuration from the cache file,
|
||||
which is located in `neobundle#get_rtp_dir() . '/cache'`.
|
||||
|
||||
Note: It is deprecated. You should use
|
||||
|neobundle#load_cache()| instead of it.
|
||||
|
||||
*:NeoBundleClearCache*
|
||||
:NeoBundleClearCache
|
||||
Clear the configuration cache file.
|
||||
|
||||
*:NeoBundleRollback*
|
||||
:NeoBundleRollback {bundle-name}
|
||||
Rollback {bundle-name} plugin version to previous updated
|
||||
version.
|
||||
Note: If you rollbacked the plugin, you cannot update it by
|
||||
|:NeoBundleUpdate| command. If you want to update it, you
|
||||
must reinstall the plugin by |:NeoBundleReinstall| command.
|
||||
|
||||
*:NeoBundleRemotePlugins*
|
||||
:NeoBundleRemotePlugins
|
||||
Load not loaded neovim |:remote-plugin| and execute
|
||||
|:UpdateRemotePlugins| command.
|
||||
It is better than |:UpdateRemotePlugins| for neobundle
|
||||
autoloading feature.
|
||||
Note: It is valid in neovim.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
VARIABLES *neobundle-variables*
|
||||
|
||||
g:neobundle#cache_file *g:neobundle#cache_file*
|
||||
The cache file to use.
|
||||
|
||||
The default is provided through
|
||||
neobundle#commands#get_default_cache_file():
|
||||
>
|
||||
neobundle#get_rtp_dir() . '/cache'
|
||||
<
|
||||
neobundle#tapped *neobundle#tapped*
|
||||
Current bundle variable set by |neobundle#tap()|.
|
||||
|
||||
neobundle#hooks *neobundle#hooks*
|
||||
Current bundle hooks variable set by |neobundle#tap()|.
|
||||
|
||||
g:neobundle#default_site *g:neobundle#default_site*
|
||||
The default repository site if "site" option is omitted.
|
||||
|
||||
Defaults to "github".
|
||||
|
||||
g:neobundle#log_filename *g:neobundle#log_filename*
|
||||
The log filename. Set it to "" to disable logging.
|
||||
|
||||
Defaults to "".
|
||||
|
||||
*g:neobundle#enable_name_conversion*
|
||||
g:neobundle#enable_name_conversion
|
||||
If you set to 1 and omit bundle name,
|
||||
|neobundle-options-normalized_name| is used as bundle name.
|
||||
It is useful for absorbing difference of repository name.
|
||||
|
||||
g:neobundle#rm_command *g:neobundle#rm_command*
|
||||
The command used to remove files to uninstall.
|
||||
|
||||
Defaults to "rmdir /S /Q" on Windows or "rm -rf" in
|
||||
others.
|
||||
|
||||
*g:neobundle#install_max_processes*
|
||||
g:neobundle#install_max_processes
|
||||
The max number of processes used for neobundle/install source
|
||||
asynchronous update.
|
||||
|
||||
Defaults to "8".
|
||||
|
||||
*g:neobundle#install_process_timeout*
|
||||
g:neobundle#install_process_timeout
|
||||
The time of timeout seconds when updating/installing bundles.
|
||||
|
||||
Defaults to "120".
|
||||
|
||||
g:neobundle#default_options *g:neobundle#default_options*
|
||||
A dictionary of preconfigured sets of options to use when
|
||||
options are omitted for individual commands or functions.
|
||||
Keys are arbitrary names for the option sets, and values are
|
||||
dictionaries themselves that store option keys and values.
|
||||
Use the special key "_" to store a "default default options".
|
||||
Example:
|
||||
>
|
||||
let g:neobundle#default_options =
|
||||
\ { 'rev' : {'rev' : 'ver.8'} }
|
||||
NeoBundle 'Shougo/neocomplcache', '', 'rev'
|
||||
<
|
||||
Defaults to "{}".
|
||||
|
||||
*g:neobundle#types#raw#calc_hash_command*
|
||||
g:neobundle#types#raw#calc_hash_command
|
||||
The hash command to use in raw repositories.
|
||||
|
||||
Defaults to "sha1sum" or "md5sum".
|
||||
|
||||
*g:neobundle#types#git#command_path*
|
||||
g:neobundle#types#git#command_path
|
||||
The "git" command path used for git type.
|
||||
|
||||
Defaults to "git".
|
||||
|
||||
*g:neobundle#types#git#default_protocol*
|
||||
g:neobundle#types#git#default_protocol
|
||||
The default protocol used for git (github).
|
||||
Note: It is accepted in "https" or "ssh".
|
||||
|
||||
Defaults to "https".
|
||||
|
||||
*g:neobundle#types#git#enable_submodule*
|
||||
g:neobundle#types#git#enable_submodule
|
||||
If it is non-zero, neobundle enables git submodule support.
|
||||
But it may be slow in Windows environment.
|
||||
|
||||
Defaults to 1.
|
||||
|
||||
*g:neobundle#types#git#clone_depth*
|
||||
g:neobundle#types#git#clone_depth
|
||||
The default history depth for "git clone".
|
||||
If it is 1, neobundle use shallow clone feature.
|
||||
See |neobundle-options-type__depth|.
|
||||
|
||||
Defaults to 0.
|
||||
|
||||
*g:neobundle#types#git#pull_command*
|
||||
g:neobundle#types#git#pull_command
|
||||
The git command used to pull updates.
|
||||
The previous default has been "pull --rebase".
|
||||
|
||||
Defaults to "pull --ff --ff-only".
|
||||
|
||||
*g:neobundle#types#hg#command_path*
|
||||
g:neobundle#types#hg#command_path
|
||||
The "hg" command path used for hg type.
|
||||
|
||||
Defaults to "hg".
|
||||
|
||||
*g:neobundle#types#hg#default_protocol*
|
||||
g:neobundle#types#hg#default_protocol
|
||||
The default protocol used for hg (bitbucket).
|
||||
Note: It is accepted in "https" or "ssh".
|
||||
|
||||
Defaults to "https".
|
||||
|
||||
*g:neobundle#types#svn#command_path*
|
||||
g:neobundle#types#svn#command_path
|
||||
The "svn" command path used for svn type.
|
||||
|
||||
Defaults to "svn".
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
OPTIONS *neobundle-options*
|
||||
The {options} in neobundle commands accept the following keys:
|
||||
|
||||
*neobundle-options-name*
|
||||
name (String)
|
||||
Specify the name of the bundle. This is used for neobundle
|
||||
management and other commands (like |:NeoBundleUpdate|). If
|
||||
omitted, the tail of the repository name will be used.
|
||||
Note: Must be unique across all bundles. If a bundle name
|
||||
conflicts with another bundle, neobundle will overwrite the
|
||||
previous settings with the new one. If a repo tail is bound to
|
||||
conflict, you can set the "name" option manually to prevent
|
||||
overwriting an existing bundle setting.
|
||||
Example:
|
||||
>
|
||||
NeoBundle 'https://github.com/Shougo/unite.vim.git',
|
||||
\ {'name' : 'unite'}
|
||||
NeoBundle 'https://github.com/foo/foo.git',
|
||||
\ {'name' : 'foo-foo'}
|
||||
NeoBundle 'https://github.com/bar/foo.git',
|
||||
\ {'name' : 'bar-foo'}
|
||||
NeoBundle 'https://git.code.sf.net/p/atp-vim/code',
|
||||
\ {'name': 'atp-vim'}
|
||||
<
|
||||
*neobundle-options-normalized_name*
|
||||
normalized_name (String)
|
||||
Specify the normalized name of the bundle. This is used for
|
||||
neobundle management to detect dependencies. If omitted,
|
||||
neobundle will normalize the tail of the repository name.
|
||||
Note: Must be unique across all bundles.
|
||||
Normalized name example:
|
||||
name : normalized name
|
||||
>
|
||||
unite.vim unite
|
||||
vim-quickrun quickrun
|
||||
<
|
||||
description (String)
|
||||
Plugin description.
|
||||
|
||||
rev (String)
|
||||
Specify a revision number or branch/tag name.
|
||||
If it is "release" in "git" type, neobundle will use latest
|
||||
released tag.
|
||||
Note: If the type is "raw", rev is hash number.
|
||||
|
||||
Example:
|
||||
>
|
||||
NeoBundle 'Shougo/vimshell', { 'rev' : '3787e5' }
|
||||
<
|
||||
*neobundle-options-default*
|
||||
default (String)
|
||||
Specify a default option name. (See |g:neobundle#default_options|).
|
||||
|
||||
*neobundle-options-directory*
|
||||
directory (String)
|
||||
Specify relative directory path from the base directory (set
|
||||
by |neobundle#begin()| or "base" option). If omitted, the "name"
|
||||
option will be used.
|
||||
Note: If you set rev "foo" when the name key is "neobundle",
|
||||
the directory key is "neobundle_foo".
|
||||
|
||||
Example:
|
||||
>
|
||||
NeoBundle 'https://github.com/Shougo/unite.vim.git',
|
||||
\ {'directory' : 'unite'}
|
||||
<
|
||||
*neobundle-options-base*
|
||||
base (String)
|
||||
Directory base path to use. If omitted, the path specified
|
||||
with |neobundle#begin()| will be used. It is useful for
|
||||
loading scripts from a different path.
|
||||
|
||||
*neobundle-options-type*
|
||||
type (String)
|
||||
Specify the repository type. If omitted, a guess is made
|
||||
based on {repository}.
|
||||
|
||||
Available types:
|
||||
"none" : None repository
|
||||
"raw" : Raw plugin file ("script_type" attribute is
|
||||
needed)
|
||||
"git" : Git
|
||||
"hg" : Mercurial
|
||||
"svn" : Subversion
|
||||
"vba" : Vimball
|
||||
|
||||
Example:
|
||||
>
|
||||
NeoBundle 'https://host/path/repo.git', {'type': 'hg'}
|
||||
NeoBundle 'thinca/vim-localrc', {'type' : 'svn'}
|
||||
<
|
||||
*neobundle-options-script_type*
|
||||
script_type (String)
|
||||
Specify the script type. It is useful for non-official
|
||||
categorized plugins.
|
||||
For example: "indent", "plugin", "ftplugin", ...
|
||||
Note: You must not specify it for categorized plugins.
|
||||
Example:
|
||||
>
|
||||
NeoBundle 'https://raw.github.com/m2ym/rsense/master/etc/rsense.vim',
|
||||
\ {'script_type' : 'plugin'}
|
||||
NeoBundle 'https://github.com/bronzehedwick/impactjs-colorscheme',
|
||||
\ {'script_type' : 'colorscheme'}
|
||||
<
|
||||
*neobundle-options-site*
|
||||
site (String)
|
||||
Specify the repository site. If you omit both the repository
|
||||
URL and the "site" option, |g:neobundle#default_site| will be
|
||||
used.
|
||||
Note: You can specify site by "{site-name}:{path}".
|
||||
For example: "github:Shougo/vimshell"
|
||||
|
||||
Available sites:
|
||||
"github" or "gh" : github.com (git)
|
||||
"bitbucket" or "bb" : bitbucket.org (hg)
|
||||
"gist" : gist.github.com (git)
|
||||
|
||||
*neobundle-options-rtp*
|
||||
rtp (String)
|
||||
Specify runtime path.
|
||||
Use this option when the repository has the Vim plugin
|
||||
in a subdirectory.
|
||||
For example: https://github.com/rstacruz/sparkup
|
||||
|
||||
Example:
|
||||
>
|
||||
NeoBundle 'rstacruz/sparkup', {'rtp': 'vim'}
|
||||
NeoBundle 'https://code.google.com/p/vimwiki/', {
|
||||
\ 'rtp': "~/.vim/bundle/vimwiki/src",
|
||||
\ }
|
||||
<
|
||||
*neobundle-options-depends*
|
||||
depends (List or String)
|
||||
Specify a list of plugins a plugin depends on.
|
||||
List items are '{plugin-name}' or ['{plugin-name}', {args}].
|
||||
Those specified in the list are installed automatically. If
|
||||
the {plugin-name} needs options, specify them with {args}.
|
||||
Note: Type String is syntax sugar for List of {plugin-name}.
|
||||
|
||||
Example:
|
||||
>
|
||||
NeoBundle 'Shougo/vimfiler', {'depends' : 'Shougo/unite.vim' }
|
||||
NeoBundle 'Shougo/neocomplcache', {'depends' :
|
||||
\ [ 'Shougo/neosnippet.git',
|
||||
\ ['rstacruz/sparkup', {'rtp': 'vim'}],
|
||||
\ ]}
|
||||
<
|
||||
*neobundle-options-build*
|
||||
build (Dictionary or String)
|
||||
Specify the build script.
|
||||
You may use this option if the plugin has to be built before
|
||||
use. If the build script requires external commands, see
|
||||
|neobundle-options-build_commands|.
|
||||
This command is executed by |system()| or |vimproc#system()|
|
||||
in plugin runtimepath.
|
||||
Note: Type String is syntax sugar for Dictionary of
|
||||
{"others": "cmd"}.
|
||||
|
||||
This dictionary accepts the following keys:
|
||||
|
||||
windows (String)
|
||||
Specify Windows environment build script.
|
||||
|
||||
mac (String)
|
||||
Specify Mac OS X environment build script.
|
||||
|
||||
cygwin (String)
|
||||
Specify Cygwin environment build script.
|
||||
|
||||
linux (String)
|
||||
Specify Linux environment build script.
|
||||
Note: It is detected if "gmake" command is not
|
||||
executable.
|
||||
|
||||
unix (String)
|
||||
Specify Unix environment build script.
|
||||
|
||||
others (String)
|
||||
Specify others environment build script.
|
||||
If you don't specify other keys, it means "all".
|
||||
|
||||
Example:
|
||||
>
|
||||
NeoBundle 'Shougo/vimproc.vim', {
|
||||
\ 'build' : {
|
||||
\ 'windows' : 'tools\\update-dll-mingw',
|
||||
\ 'cygwin' : 'make -f make_cygwin.mak',
|
||||
\ 'mac' : 'make -f make_mac.mak',
|
||||
\ 'linux' : 'make',
|
||||
\ 'unix' : 'gmake',
|
||||
\ },
|
||||
\ }
|
||||
<
|
||||
Note: The command is executed in plugin top directory.
|
||||
If you need cd command, you must use "sh -c". >
|
||||
NeoBundle 'wincent/command-t', {
|
||||
\ 'build': {
|
||||
\ 'others' :
|
||||
\ 'sh -c "cd ruby/command-t && ruby extconf.rb && make"'
|
||||
\ }
|
||||
\ }
|
||||
<
|
||||
*neobundle-options-augroup*
|
||||
augroup (String)
|
||||
Specify an augroup name that the plugin uses for |VimEnter| or
|
||||
|GUIEnter| autocmd events.
|
||||
Neobundle will call their |VimEnter| or |GUIEnter| autocmds
|
||||
automatically when |:NeoBundleSource| is executed.
|
||||
Note: You'll want to set this option because some plugins
|
||||
rely on autocmds defined for |VimEnter| or |GUIEnter|, but by
|
||||
using |:NeoBundleSource| after loading .vimrc, those autocmds
|
||||
may get skipped. Some examples are, "fugitive", "NERDTree",
|
||||
and "session.vim".
|
||||
|
||||
Examples:
|
||||
>
|
||||
" NERDTree uses augroup NERDTreeHijackNetrw.
|
||||
NeoBundle 'scrooloose/nerdtree', { 'augroup' : 'NERDTreeHijackNetrw'}
|
||||
" fugitive uses augroup fugitive.
|
||||
NeoBundle 'tpope/vim-fugitive', { 'augroup' : 'fugitive'}
|
||||
<
|
||||
This option is also valid in |:NeoBundleLazy|.
|
||||
|
||||
*neobundle-options-external_commands*
|
||||
external_commands (Dictionary or List or String)
|
||||
Specify a list of external commands that the plugin depends
|
||||
on. List items are '{command-name}' or ['{command-name}',
|
||||
...] or { {dictionary} }.
|
||||
The commands are checked when loading the plugin.
|
||||
Note: Type String is syntax sugar for list of {command-name}s.
|
||||
|
||||
The {dictionary} has following keys:
|
||||
|
||||
windows (String)
|
||||
Specify Windows environment external commands.
|
||||
|
||||
mac (String)
|
||||
Specify Mac OS X environment external commands.
|
||||
|
||||
cygwin (String)
|
||||
Specify Cygwin environment external commands.
|
||||
|
||||
unix (String)
|
||||
Specify Unix environment external commands.
|
||||
|
||||
others (String)
|
||||
Specify others environment external commands.
|
||||
|
||||
Example:
|
||||
>
|
||||
NeoBundle 'ujihisa/neco-ghc', { 'external_commands' : 'ghc-mod' }
|
||||
<
|
||||
*neobundle-options-build_commands*
|
||||
build_commands (Dictionary or List or String)
|
||||
Specify a list of external commands that are required for
|
||||
building the plugin. If any of these commands are not
|
||||
installed, the bundle will not be built. The list is the same
|
||||
format as |neobundle-options-external_commands|.
|
||||
|
||||
Example:
|
||||
>
|
||||
NeoBundle 'Valloric/YouCompleteMe', { 'build_commands' : 'cmake' }
|
||||
<
|
||||
|
||||
*neobundle-options-frozen*
|
||||
frozen (Number)
|
||||
If set to 1, neobundle doesn't update it automatically when
|
||||
|:NeoBundleUpdate| or ":Unite neobundle/update" is called with
|
||||
no arguments. It is useful for outdated plugins that can no
|
||||
longer be updated.
|
||||
>
|
||||
NeoBundle 'Shougo/neobundle', { 'frozen' : 1 }
|
||||
<
|
||||
*neobundle-options-lazy*
|
||||
lazy (Number)
|
||||
If set to 1, neobundle doesn't add the path to user
|
||||
runtimepath.
|
||||
|
||||
*neobundle-options-fetch*
|
||||
fetch (Number)
|
||||
If set to 1, neobundle doesn't add the path to user
|
||||
runtimepath, and doesn't load the bundle.
|
||||
|
||||
*neobundle-options-force*
|
||||
force (Number)
|
||||
If set to 1, neobundle will load plugin files in the plugin
|
||||
repository forcedly.
|
||||
Note: It is useful for using Bundle within bundle.
|
||||
https://github.com/Shougo/neobundle.vim/issues/199
|
||||
|
||||
*neobundle-options-gui*
|
||||
gui (Number)
|
||||
If set 1, neobundle will only load the plugin in GUI Vim.
|
||||
|
||||
Example: >
|
||||
NeoBundle 'tyru/restart.vim', '', 'same', {
|
||||
\ 'gui' : 1,
|
||||
\ 'on_cmd' : 'Restart'
|
||||
\ }
|
||||
<
|
||||
*neobundle-options-terminal*
|
||||
terminal (Number)
|
||||
If set to 1, neobundle will only load the plugin in Terminal
|
||||
Vim.
|
||||
|
||||
*neobundle-options-vim_version*
|
||||
vim_version (String)
|
||||
Minimal vim version of the plugin supported.
|
||||
It accepts some version formats such as "7" and "7.3" and
|
||||
"7.3.885".
|
||||
|
||||
*neobundle-options-disabled*
|
||||
disabled (Number) or (String)
|
||||
If set to 1, neobundle will disable the plugin.
|
||||
If it is string, neobundle will eval the string.
|
||||
Note: Disabled plugins are not ignored when install/update
|
||||
plugins.
|
||||
|
||||
Example: >
|
||||
" neocomplete requires Vim 7.3.885 or above.
|
||||
NeoBundle 'Shougo/neocomplete', {
|
||||
\ 'depends' : 'Shougo/context_filetype.vim',
|
||||
\ 'disabled' : !has('lua'),
|
||||
\ 'vim_version' : '7.3.885'
|
||||
\ }
|
||||
<
|
||||
*neobundle-options-focus*
|
||||
focus (Number)
|
||||
If it is > 0, neobundle will source the plugin when focus
|
||||
is lost. It also is source priority.
|
||||
http://d.hatena.ne.jp/osyo-manga/20140212/1392216949
|
||||
Example: >
|
||||
" Source all plugins when focus is lost.
|
||||
let g:neobundle#default_options._ = { 'verbose' : 1, 'focus' : 1 }
|
||||
<
|
||||
*neobundle-options-verbose*
|
||||
verbose (Number)
|
||||
If set to 1, neobundle will print message when it is sourced.
|
||||
|
||||
*neobundle-options-install_process_timeout*
|
||||
install_process_timeout (Number)
|
||||
The time of timeout seconds when updating/installing bundles.
|
||||
If omit it, |g:neobundle#install_process_timeout| will be used.
|
||||
Note: This feature is available if you installed |vimproc|.
|
||||
|
||||
*neobundle-options-autoload*
|
||||
autoload (Dictionary)
|
||||
Specify autoload conditions.
|
||||
If you set it, neobundle will execute |:NeoBundleSource|
|
||||
automatically when the conditions are met.
|
||||
Note: This dictionary is deprecated.
|
||||
|
||||
*neobundle-options-on_ft*
|
||||
on_ft (List) or (String)
|
||||
Filetype list. If the filetype is "all", it means all
|
||||
filetypes.
|
||||
Note: Using this will usually cause Neobundle to
|
||||
either reset the ftplugin state, or explicitly call
|
||||
the FileType autocommand another time (after adding
|
||||
the lazy-loaded bundle), which results in the
|
||||
autocommand to be processed twice for all other
|
||||
plugins. Therefore, using "all" does not make sense
|
||||
usually.
|
||||
|
||||
*neobundle-options-filetypes*
|
||||
It is deprecated key.
|
||||
|
||||
*neobundle-options-on_cmd*
|
||||
on_cmd (List) or (String)
|
||||
Command list. The item can be following dictionary.
|
||||
name (String) or (List)
|
||||
Command name or the list of command names.
|
||||
|
||||
Example: >
|
||||
NeoBundle 'Shougo/vimfiler.vim', {
|
||||
\ 'depends' : 'Shougo/unite.vim',
|
||||
\ 'on_cmd' : ['VimFiler', 'VimFilerEdit',
|
||||
\ 'VimFilerWrite','VimFilerRead',
|
||||
\ 'VimFilerSource'],
|
||||
\ 'on_map' : '<Plug>',
|
||||
\ 'on_path' : '.*',
|
||||
\ }
|
||||
<
|
||||
*neobundle-options-commands*
|
||||
It is deprecated key.
|
||||
|
||||
*neobundle-options-on_func*
|
||||
on_func (List) or (String)
|
||||
Functions list.
|
||||
|
||||
*neobundle-options-functions*
|
||||
It is deprecated key.
|
||||
|
||||
*neobundle-options-on_map*
|
||||
on_map (List) or (String)
|
||||
Mappings list. The items are {mapping} or
|
||||
[{mode}, {mapping1}, [{mapping2}, ...]]. If {mode} is
|
||||
omitted, "nxo" is used.
|
||||
Note: You can use plugin prefix mappings.
|
||||
For example, you can use "<Plug>(ref-" instead of
|
||||
"<Plug>(ref-back)" and so on.
|
||||
|
||||
Note: You can use "<Plug>" keyword as {mapping}. If
|
||||
{mapping} is "<Plug>", "<Plug>(normalized_name" is
|
||||
used.
|
||||
For example: >
|
||||
" It is same as "'mappings' : '<Plug>(anzu'
|
||||
NeoBundle 'osyo-manga/vim-anzu', {
|
||||
\'on_map': '<Plug>'}
|
||||
<
|
||||
Note: You cannot use lazy <Plug> mappings twice.
|
||||
For example: >
|
||||
NeoBundle 'osyo-manga/vim-anzu', {
|
||||
\ 'on_map': '<Plug>(anzu-'}
|
||||
" Not working!!
|
||||
nmap n <Plug>(anzu-jump-n)<Plug>(anzu-echo-search-status)zv
|
||||
nmap N <Plug>(anzu-jump-N)<Plug>(anzu-echo-search-status)zv
|
||||
<
|
||||
*neobundle-options-mappings*
|
||||
It is deprecated key.
|
||||
|
||||
*neobundle-options-on_i*
|
||||
on_i (Number)
|
||||
If set to non-zero, neobundle will |:NeoBundleSource|
|
||||
on |InsertEnter| autocmd.
|
||||
|
||||
*neobundle-options-insert*
|
||||
It is deprecated key.
|
||||
|
||||
*neobundle-options-on_path*
|
||||
on_path (String) or (List)
|
||||
If set to ".*", neobundle will |:NeoBundleSource|
|
||||
on editing all files.
|
||||
Otherwise, neobundle will |:NeoBundleSource| if the
|
||||
buffer name is matched the string pattern.
|
||||
Note: It is useful for explorer behavior plugins.
|
||||
Ex: vimfiler, metarw, vim-gnupg ...
|
||||
Note: To autoload vimfiler, you must disable netrw in
|
||||
.vimrc. >
|
||||
" Disable netrw.vim
|
||||
let g:loaded_netrwPlugin = 1
|
||||
<
|
||||
For example: >
|
||||
NeoBundle 'kana/vim-meta', {
|
||||
\ 'on_path' : '\h\w*:',
|
||||
\ }
|
||||
<
|
||||
*neobundle-options-explorer*
|
||||
*neobundle-options-filename_patterns*
|
||||
It is deprecated key.
|
||||
|
||||
*neobundle-options-on_source*
|
||||
on_source (List) or (String)
|
||||
Load the bundle when the list bundles are loaded.
|
||||
Note: If they are not autoload bundles, "on_source"
|
||||
hooks are called when |VimEnter| auto command.
|
||||
You can call them manually by |neobundle#call_hook()|.
|
||||
Note: The plugins must be lazy loaded plugins.
|
||||
|
||||
For example: >
|
||||
if neobundle#tap('plugin-B.vim')
|
||||
call neobundle#config({
|
||||
\ 'on_source' : [ 'plugin-A.vim' ]
|
||||
\ })
|
||||
call neobundle#untap()
|
||||
endif
|
||||
<
|
||||
plugin-B is loaded before plugin-A is loaded.
|
||||
|
||||
*neobundle-options-pre_cmd*
|
||||
pre_cmd (List) or (String)
|
||||
Autoload command prefix in commands.
|
||||
If the prefix is set, commands were loaded
|
||||
automatically.
|
||||
If omitted it, automatically generated prefix is used.
|
||||
Example: If you use "unite.vim", "Unite" command
|
||||
prefix is used.
|
||||
Note: It requires Vim 7.4.414 or above.
|
||||
|
||||
*neobundle-options-command_prefix*
|
||||
It is deprecated key.
|
||||
|
||||
Autoload examples:
|
||||
>
|
||||
NeoBundle 'Rip-Rip/clang_complete', {
|
||||
\ 'on_ft' : ['c', 'cpp'],
|
||||
\ }
|
||||
NeoBundle 'basyura/TweetVim', { 'depends' :
|
||||
\ ['basyura/twibill.vim', 'tyru/open-browser.vim'],
|
||||
\ 'on_cmd' : 'TweetVimHomeTimeline' }
|
||||
NeoBundle 'kana/vim-smartword', {
|
||||
\ 'on_map' : [
|
||||
\ '<Plug>(smartword-'']
|
||||
\ }
|
||||
NeoBundle 'Shougo/vimshell',{
|
||||
\ 'depends' : 'Shougo/vimproc.vim',
|
||||
\ 'on_cmd' : [{ 'name' : 'VimShell',
|
||||
\ 'complete' : 'customlist,vimshell#complete'},
|
||||
\ 'VimShellExecute', 'VimShellInteractive',
|
||||
\ 'VimShellTerminal', 'VimShellPop'],
|
||||
\ 'on_map' : '<Plug>'
|
||||
\ })
|
||||
NeoBundle 'Shougo/vimfiler', {
|
||||
\ 'depends' : 'Shougo/unite.vim',
|
||||
\ 'on_cmd' : [{ 'name' : 'VimFiler',
|
||||
\ 'complete' : 'customlist,vimfiler#complete' },
|
||||
\ 'VimFilerExplorer',
|
||||
\ 'Edit', 'Read', 'Source', 'Write'],
|
||||
\ 'on_map' : '<Plug>',
|
||||
\ 'on_path' : '.*',
|
||||
\ }
|
||||
NeoBundle 'Shougo/junkfile.vim', {
|
||||
\ 'on_cmd' : 'JunkfileOpen',
|
||||
\ }
|
||||
NeoBundle 'tyru/winmove.vim', {
|
||||
\ 'on_map' : [
|
||||
\ ['n', '<Plug>']],
|
||||
\ 'gui' : 1,
|
||||
\ 'augroup' : 'winmove',
|
||||
\ }
|
||||
NeoBundle 'sophacles/vim-processing', {
|
||||
\'on_path': '\.pde$'
|
||||
\}
|
||||
NeoBundle 'LeafCage/cmdlineplus.vim', {
|
||||
\ 'on_map': [['c', '<Plug>']]}
|
||||
<
|
||||
*neobundle-options-hooks*
|
||||
hooks (Dictionary)
|
||||
Specify hook functions or hook script path. The following
|
||||
hooks are defined:
|
||||
|
||||
*neobundle-hooks-on_source*
|
||||
on_source
|
||||
Called or sourced before scripts are sourced. It is
|
||||
useful for plugin initialization in lazy bundles.
|
||||
Note: You must call the hook before |neobundle#end()|.
|
||||
|
||||
*neobundle-hooks-on_post_source*
|
||||
on_post_source
|
||||
Called or sourced after scripts are sourced.
|
||||
Note: In Vim initializing, calling the hooks are
|
||||
delayed until |VimEnter|.
|
||||
Note: To re-call on_source hook when reloading .vimrc,
|
||||
you must call the hook in end of .vimrc.
|
||||
|
||||
*neobundle-options-type__protocol*
|
||||
type__protocol (String)
|
||||
The protocol used for types.
|
||||
"https" and "ssh" are available for git type.
|
||||
"https" is available for hg type.
|
||||
If omitted, |g:neobundle#types#git#default_protocol|
|
||||
or |g:neobundle#types#hg#default_protocol| is used.
|
||||
Note: This attribute is available in git and hg types only.
|
||||
|
||||
Examples:
|
||||
>
|
||||
NeoBundle 'ujihisa/neco-ghc', { 'type__protocol' : 'ssh' }
|
||||
<
|
||||
*neobundle-options-type__filename*
|
||||
type__filename (String)
|
||||
The downloaded filename.
|
||||
If omitted, URI filename will be used.
|
||||
It is useful for downloading vim.org scripts.
|
||||
Note: This attribute is available in raw type only.
|
||||
|
||||
Examples: |:NeoBundle-examples|
|
||||
>
|
||||
NeoBundle 'git_repository_uri'
|
||||
NeoBundle 'script_name'
|
||||
NeoBundle 'https://github.com/tpope/vim-fugitive.git'
|
||||
NeoBundle 'Shougo/neocomplcache', {'depends' :
|
||||
\ [ 'Shougo/neosnippet.git',
|
||||
\ ['rstacruz/sparkup', {'rtp': 'vim'}],
|
||||
\ ]}
|
||||
NeoBundle 'github:Shougo/vimshell'
|
||||
|
||||
" Pushable github repository.
|
||||
NeoBundle 'git@github.com:Shougo/neocomplcache.git'
|
||||
|
||||
" For bitbucket hg repository.
|
||||
NeoBundle 'bitbucket:ns9tks/vim-fuzzyfinder'
|
||||
NeoBundle 'https://bitbucket.org/ns9tks/vim-fuzzyfinder'
|
||||
|
||||
" For bitbucket git repository (.git is needed).
|
||||
NeoBundle 'bitbucket:kh3phr3n/vim-qt-syntax.git'
|
||||
NeoBundle 'https://bitbucket.org/kh3phr3n/vim-qt-syntax.git'
|
||||
|
||||
" For raw repository.
|
||||
NeoBundle 'https://raw.github.com/m2ym/rsense/master/etc/rsense.vim',
|
||||
\ {'script_type' : 'plugin'}
|
||||
|
||||
" For gist repository.
|
||||
NeoBundle 'gist:Shougo/656148', {
|
||||
\ 'name': 'everything.vim',
|
||||
\ 'script_type': 'plugin'}
|
||||
NeoBundle 'gist:355360', {
|
||||
\ 'name': 'ambicmd.vim',
|
||||
\ 'script_type': 'plugin'}
|
||||
<
|
||||
Neobundle supports revision (or branch) lock.
|
||||
Note: The revision (or branch) is checked out in
|
||||
install/update.
|
||||
Note: You can either specify the revision manually or set the
|
||||
to revision "master" to restore a plugin.
|
||||
>
|
||||
NeoBundle 'Shougo/vimshell', '3787e5'
|
||||
NeoBundle 'Shougo/vimshell', 'master'
|
||||
<
|
||||
If type is "none", neobundle does not update
|
||||
automatically (like pathogen.vim). See also |NeoBundleLocal|.
|
||||
>
|
||||
NeoBundle 'muttator', {'type' : 'none', 'base' : '~/.vim/bundle'}
|
||||
<
|
||||
Note: To use hg commands for git repository, please use this.
|
||||
>
|
||||
NeoBundle 'https://github.com/Shougo/neobundle.vim.git', {'type': 'hg'}
|
||||
<
|
||||
*neobundle-options-type__depth*
|
||||
type__depth (Number)
|
||||
History depth for "git clone".
|
||||
If omitted, |g:neobundle#types#git#clone_depth| is used.
|
||||
If it is than 0, neobundle clones the repository by shallow
|
||||
clone. Shallow clone feature saves your repository clone time.
|
||||
But it have problems in some repository.
|
||||
|
||||
See below issues:
|
||||
https://github.com/Shougo/neobundle.vim/issues/81
|
||||
https://github.com/Homebrew/homebrew/issues/12024
|
||||
|
||||
Note: This attribute is available in git type only.
|
||||
|
||||
==============================================================================
|
||||
EXAMPLES *neobundle-examples*
|
||||
>
|
||||
" Note: Skip initialization for vim-tiny or vim-small.
|
||||
if 0 | endif
|
||||
|
||||
if has('vim_starting')
|
||||
if &compatible
|
||||
set nocompatible " Be iMproved
|
||||
endif
|
||||
set runtimepath+={path to neobundle directory}
|
||||
endif
|
||||
|
||||
call neobundle#begin(expand('~/.vim/bundle'))
|
||||
|
||||
" Let neobundle manage neobundle
|
||||
NeoBundleFetch 'Shougo/neobundle.vim'
|
||||
|
||||
" My Bundles here:
|
||||
" Refer to |:NeoBundle-examples|.
|
||||
" Note: You don't set neobundle setting in .gvimrc!
|
||||
|
||||
" ...
|
||||
|
||||
call neobundle#end()
|
||||
|
||||
filetype plugin indent on " Required!
|
||||
|
||||
" Installation check.
|
||||
NeoBundleCheck
|
||||
|
||||
"...
|
||||
|
||||
if !has('vim_starting')
|
||||
" Call on_source hook when reloading .vimrc.
|
||||
call neobundle#call_hook('on_source')
|
||||
endif
|
||||
<
|
||||
==============================================================================
|
||||
MIGRATING FROM PATHOGEN *neobundle-migrate-from-pathogen*
|
||||
|
||||
Here are a few tips if you want to migrate from a |pathogen| based
|
||||
installation to neobundle.
|
||||
|
||||
You might want to use a different/non-default directory for neobundle: >
|
||||
|
||||
set rtp+=~/.vim/bundle/neobundle
|
||||
call neobundle#begin(expand('~/.vim/neobundle'))
|
||||
<
|
||||
This allows you to keep `~/.vim/bundle` in place while migrating.
|
||||
|
||||
If you are using Git submodules currently, you can use a shell command like
|
||||
the following to automatically generate your NeoBundle statements: >
|
||||
|
||||
while read p url; do \
|
||||
bundle_name="${url#*://github.com/}"; \
|
||||
dir="$(command git config -f .gitmodules --get ${p%.url}.path)"; \
|
||||
echo "NeoBundle '$bundle_name', { 'directory': '${dir##*/}' }"; \
|
||||
done < <(command git config -f .gitmodules \
|
||||
--get-regexp 'submodule.vim/bundle/\S+.(url)' | sort)
|
||||
<
|
||||
This uses the "submodule.*" urls and path from your .gitmodules sections that
|
||||
start with `submodule.vim/bundle/`.
|
||||
It sets the directory option explicitly to the name you were using before
|
||||
(see |neobundle-options-directory|), which is useful if you want to compare
|
||||
your old bundles directory with the one managed by neocomplete later.
|
||||
|
||||
The output looks like this: >
|
||||
NeoBundle 'tpope/vim-abolish.git', { 'directory': 'abolish' }
|
||||
>
|
||||
==============================================================================
|
||||
UNITE SOURCES *neobundle-unite-sources*
|
||||
|
||||
Here let me explain about a source for |unite| provided in neobundle.
|
||||
|
||||
*neobundle-unite-source-neobundle*
|
||||
neobundle
|
||||
Nominates bundles as a candidate.
|
||||
|
||||
Note:
|
||||
If argument is bang(!), print plugins status.
|
||||
|
||||
https://github.com/Shougo/vimproc.vim
|
||||
|
||||
*neobundle-unite-source-neobundle-install*
|
||||
neobundle/install
|
||||
Install configured plugins asynchronously.
|
||||
It supports neovim async jobs feature.
|
||||
|
||||
Note: Installing the |vimproc| plugin or using neovim is
|
||||
recommended.
|
||||
|
||||
If argument is bang(!), it will install and update all plugins.
|
||||
|
||||
Source arguments:
|
||||
bundle names (fuzzy searched).
|
||||
|
||||
Example:
|
||||
>
|
||||
:Unite neobundle/install:!
|
||||
:Unite neobundle/install:neocomplcache
|
||||
:Unite neobundle/install:neocomplcache:unite.vim
|
||||
<
|
||||
If you use the source with "-auto-quit" option, the unite
|
||||
buffer will close automatically.
|
||||
>
|
||||
:Unite neobundle/install -auto-quit
|
||||
<
|
||||
*neobundle-unite-source-neobundle-log*
|
||||
neobundle/log
|
||||
Print previous neobundle install logs.
|
||||
And you can jump the diff URI in github.
|
||||
|
||||
*neobundle-unite-source-neobundle-update*
|
||||
neobundle/update
|
||||
Install and update configured plugins asynchronously, except
|
||||
for outdated ones or those with the "frozen" option.
|
||||
It supports neovim async jobs feature.
|
||||
Note: This source is the same as "neobundle/install:!".
|
||||
Note: Installing the |vimproc| plugin or using neovim is
|
||||
recommended.
|
||||
|
||||
If argument is bang(!), it will not be with fuzzy search.
|
||||
If argument is "all", it will update all plugins.
|
||||
|
||||
If you use the source with "-auto-quit" option, the unite
|
||||
buffer will close automatically.
|
||||
>
|
||||
:Unite neobundle/update -log -wrap -auto-quit
|
||||
<
|
||||
*neobundle-unite-source-neobundle-search*
|
||||
neobundle/search
|
||||
Search plugin settings from sources.
|
||||
Note: This source requires "curl" or "wget" command.
|
||||
Note: If you get errors in this source, please refresh the
|
||||
cache file by |<Plug>(unite_redraw)|.
|
||||
|
||||
Source arguments:
|
||||
source names.
|
||||
|
||||
Following source names are available:
|
||||
"vim_scripts_org":
|
||||
Search plugins settings from "http://vim-scripts.org".
|
||||
"github":
|
||||
Search plugins settings from "https://github.org/".
|
||||
"metadata":
|
||||
Search plugins settings from converted metadata in
|
||||
"https://bitbucket.org/vimcommunity/vim-pi/".
|
||||
|
||||
*neobundle-unite-source-neobundle-lazy*
|
||||
neobundle/lazy
|
||||
List lazy configured plugins (not sourced by
|
||||
|:NeoBundleSource|).
|
||||
|
||||
*unite-kind-neobundle*
|
||||
neobundle An interface for neobundle bundles. It is used in
|
||||
neobundle source and neobundle/lazy sources.
|
||||
update Update bundles (Default action)
|
||||
delete Delete bundles
|
||||
preview view the plugin documentation
|
||||
reinstall Reinstall bundles
|
||||
narrow Narrow bundle files
|
||||
edit Browse bundle directory
|
||||
start Browse github plugin page
|
||||
|
||||
Actions for each of the sources
|
||||
|
||||
neobundle/search *unite-action-neobundle-search*
|
||||
yank Yank plugin settings (Default action).
|
||||
install Direct install plugins from repository.
|
||||
Note: The settings are saved in "extra_bundles.vim" in
|
||||
|neobundle#begin()| directory.
|
||||
start Browse github plugin page.
|
||||
|
||||
Note: If you use the install action, you cannot customize the bundle
|
||||
settings.
|
||||
|
||||
neobundle/lazy *unite-action-neobundle-lazy*
|
||||
source Source plugin files (Default action)
|
||||
|
||||
==============================================================================
|
||||
FAQ *neobundle-faq*
|
||||
|
||||
Q: What's the neobundle advantage for Vundle or other plugin management
|
||||
system?
|
||||
|
||||
A: neobundle solves some problems in Vundle or other plugin management system.
|
||||
But you must know they are huge and complex features.
|
||||
|
||||
1. Plugin prefixed command name (:Bundle vs :NeoBundle).
|
||||
https://github.com/gmarik/Vundle.vim/issues/76
|
||||
2. Support vimproc (asynchronous update/install).
|
||||
https://github.com/gmarik/Vundle.vim/issues/259
|
||||
3. Support unite.vim interface (update/install/search).
|
||||
4. Support revision lock feature.
|
||||
https://github.com/gmarik/Vundle.vim/issues/35
|
||||
5. Support other VCS (Subversion/Git).
|
||||
https://github.com/gmarik/Vundle.vim/pull/134
|
||||
https://github.com/gmarik/Vundle.vim/pull/268
|
||||
6. Support lazy initialization for optimizing startup time.
|
||||
https://github.com/gmarik/Vundle.vim/issues/364
|
||||
https://github.com/gmarik/Vundle.vim/pull/98
|
||||
|
||||
Q: I want to manage the rsense Vim plugin using neobundle.
|
||||
|
||||
A: Use |neocomplcache-rsense|. Installation and settings can be found in the
|
||||
neocomplcache-rsense docs.
|
||||
Note: neocomplcache-rsense depends |neocomplcache| plugin.
|
||||
|
||||
https://github.com/Shougo/neocomplcache-rsense
|
||||
|
||||
Q: Vim freezes when a NeoBundle command is run with a typo in the repo name.
|
||||
|
||||
A: It's a git feature. Git awaits user input when the repo name is
|
||||
wrong. You can install |vimproc| to keep your Vim from freezing:
|
||||
https://github.com/Shougo/vimproc.vim
|
||||
|
||||
Q: Duplicated error was printed when sourcing .vimrc.
|
||||
|
||||
A: Your .vimrc was wrong. You must reset neobundle setting by
|
||||
|neobundle#begin()| in .vimrc.
|
||||
Note: You must not call |neobundle#begin()| inside a "has('vim_starting')"
|
||||
block.
|
||||
>
|
||||
if has('vim_starting')
|
||||
" This is wrong neobundle#begin().
|
||||
"call neobundle#begin(expand('~/.vim/bundle'))
|
||||
endif
|
||||
|
||||
" This is OK.
|
||||
call neobundle#begin(expand('~/.vim/bundle'))
|
||||
<
|
||||
|
||||
Q: I want to compile vimproc automatically.
|
||||
|
||||
A:
|
||||
>
|
||||
NeoBundle 'Shougo/vimproc.vim', {
|
||||
\ 'build' : {
|
||||
\ 'windows' : 'tools\\update-dll-mingw',
|
||||
\ 'cygwin' : 'make -f make_cygwin.mak',
|
||||
\ 'mac' : 'make -f make_mac.mak',
|
||||
\ 'unix' : 'make -f make_unix.mak',
|
||||
\ },
|
||||
\ }
|
||||
<
|
||||
|
||||
Q: What's the "outdated" plugin?
|
||||
|
||||
A: Last update time is older than one week -> Automatic updates are disabled
|
||||
until one day from the last update.
|
||||
Last update time is older within one week -> Automatic updates are every time.
|
||||
Note: If you use update with name or use "all" argument in neobundle/update
|
||||
source or use "!" in |:NeoBundleUpdate| command, this feature will be
|
||||
disabled; it forces updates them.
|
||||
|
||||
Q: I want to update messages in unite buffer.
|
||||
|
||||
A:
|
||||
>
|
||||
Unite -log -wrap neobundle/update
|
||||
<
|
||||
|
||||
Q: neobundle.vim is not worked in Debian/Ubuntu Linux...
|
||||
|
||||
A: Did you use "debian.vim"? "debian.vim" changes 'runtimepath'.
|
||||
So it conflicts with neobundle. You should not use "debian.vim".
|
||||
|
||||
Q: neobundle.vim fails update in submodule repository.
|
||||
|
||||
A: neobundle.vim supports submodule repository. But I think the repository was
|
||||
changed recently from non-use submodule to use submodule. You must reinstall
|
||||
the repository.
|
||||
|
||||
Q: I want to install github plugins with Subversion.
|
||||
|
||||
A:
|
||||
>
|
||||
NeoBundle 'thinca/vim-localrc', {'type' : 'svn'}
|
||||
<
|
||||
Q: I want to add absolute path in 'runtimepath' with |:NeoBundle| and
|
||||
|:NeoBundleLazy|.
|
||||
https://github.com/Shougo/neobundle.vim/issues/136
|
||||
|
||||
A: You can use "none" type. >
|
||||
NeoBundle '/absolute/path/to/plugin', { 'type' : 'none' }
|
||||
|
||||
Q: Problem with lazy loading of matchit plugin.
|
||||
https://github.com/Shougo/neobundle.vim/issues/153
|
||||
|
||||
A:
|
||||
>
|
||||
NeoBundle 'matchit.zip', {
|
||||
\ 'on_map' : ['%', 'g%']
|
||||
\ }
|
||||
let bundle = neobundle#get('matchit.zip')
|
||||
function! bundle.hooks.on_post_source(bundle)
|
||||
silent! execute 'doautocmd Filetype' &filetype
|
||||
endfunction
|
||||
<
|
||||
|
||||
Q: Cannot load colorscheme when reloading .vimrc.
|
||||
https://github.com/Shougo/neobundle.vim/issues/157
|
||||
|
||||
A: You must write :NeoBundle lines before filetype plugin indent on and syntax
|
||||
enable.
|
||||
>
|
||||
filetype plugin indent on
|
||||
|
||||
NeoBundle 'tomasr/molokai'
|
||||
...
|
||||
|
||||
syntax enable
|
||||
colorscheme molokai
|
||||
<
|
||||
|
||||
Q: Timeout on github makes Vim terribly slow if the repository is not found in
|
||||
console Vim.
|
||||
https://github.com/Shougo/neobundle.vim/issues/175
|
||||
|
||||
A: |vimproc| and |system()| uses input redirection. But git ignores it when
|
||||
you used https protocol in console Vim. So it freezes. I think it is bad
|
||||
feature in git. I cannot fix it. You should change
|
||||
|g:neobundle#types#git#default_protocol| to "git".
|
||||
|
||||
Q: I want to use shallow clone in git.
|
||||
|
||||
A: See |neobundle-options-type__depth|.
|
||||
|
||||
Q: I want to use lockfile feature like "Gemfile.lock" in neobundle.
|
||||
https://github.com/Shougo/neobundle.vim/issues/222
|
||||
|
||||
A: You can copy "NeoBundle.lock" to another machine from neobundle base path
|
||||
directory. It is used when install plugins.
|
||||
|
||||
Q: neobundle#begin() breaks plugin function calls.
|
||||
https://github.com/Shougo/neobundle.vim/issues/330
|
||||
|
||||
A: You must use the functions after |neobundle#end()|.
|
||||
Because, the plugins are loaded when neobundle calls |neobundle#end()|.
|
||||
|
||||
Q: Fails submoduled repository clone like YouCompleteMe.
|
||||
|
||||
A: I think you use the submodule repository in proxy environment.
|
||||
|
||||
https://github.com/ekg/freebayes/issues/63
|
||||
>
|
||||
$ git config --global url.https://github.com/.insteadOf git://github.com/
|
||||
<
|
||||
Q: Colorscheme does not load below code. >
|
||||
NeoBundle 'mrkn256.vim'
|
||||
colorscheme mrkn256
|
||||
...
|
||||
neobundle#end()
|
||||
|
||||
A: 'runtimepath' is set on |neobundle#end()|. So it is not set when the
|
||||
colorscheme executed. You can use |neobundle-options-force| for it or write
|
||||
|:colorscheme| command after |neobundle#end()|.
|
||||
|
||||
Q: fugitive does not work using neobundle. Please help! >
|
||||
NeoBundle 'tpope/vim-fugitive'
|
||||
|
||||
A: You must specify |neobundle-options-augroup| like this. >
|
||||
" fugitive uses augroup fugitive.
|
||||
NeoBundle 'tpope/vim-fugitive', { 'augroup' : 'fugitive'}
|
||||
|
||||
Q: I setup gVim-only colorscheme but neobundle doesn't load it.
|
||||
|
||||
A: neobundle can't load colorschemes automatically. So you can't use
|
||||
|:NeoBundleLazy| for colorschemes.
|
||||
|
||||
Q: I want to use "git" or "http" protocol instead of "https".
|
||||
|
||||
A: No, you cannot.
|
||||
|
||||
Q: Why neobundle only accepts "https" or "ssh"?
|
||||
|
||||
A: https://glyph.twistedmatrix.com/2015/11/editor-malware.html
|
||||
|
||||
Q: I want to autoload vim-gnupg
|
||||
|
||||
A: vim-gnupg uses |BufReadCmd| and |FileReadCmd| autocmd. You must specify
|
||||
the autocmd. >
|
||||
autocmd BufReadCmd,FileReadCmd *.gpg,*.asc,*.pgp
|
||||
\ NeoBundleSource vim-gnupg | doautocmd BufReadCmd
|
||||
autocmd FileReadCmd *.gpg,*.asc,*.pgp
|
||||
\ NeoBundleSource vim-gnupg | doautocmd FileReadCmd
|
||||
|
||||
Q: Where is :NeoBundleClean command?
|
||||
https://github.com/Shougo/neobundle.vim/issues/501
|
||||
|
||||
A: It is removed because it is dangerous.
|
||||
|
||||
Q: Why the install script does not use "curl | bash" ?
|
||||
https://github.com/Shougo/neobundle.vim/pull/515
|
||||
|
||||
A: https://www.idontplaydarts.com/2016/04/detecting-curl-pipe-bash-server-side/
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:ft=help:norl:noet:fen:
|
||||
901
vim/.vim/bundle/.neobundle/doc/neosnippet.txt
Normal file
901
vim/.vim/bundle/.neobundle/doc/neosnippet.txt
Normal file
@@ -0,0 +1,901 @@
|
||||
*neosnippet.txt*
|
||||
The neo-snippet plugin contains snippet source
|
||||
|
||||
Version: 5.0
|
||||
Author: Shougo <Shougo.Matsu at gmail.com>
|
||||
License: MIT license
|
||||
|
||||
CONTENTS *neosnippet-contents*
|
||||
|
||||
Introduction |neosnippet-introduction|
|
||||
Install |neosnippet-install|
|
||||
Interface |neosnippet-interface|
|
||||
Commands |neosnippet-commands|
|
||||
Variables |neosnippet-variables|
|
||||
Key mappings |neosnippet-key-mappings|
|
||||
Functions |neosnippet-functions|
|
||||
Examples |neosnippet-examples|
|
||||
Snippet syntax |neosnippet-snippet-syntax|
|
||||
FAQ |neosnippet-faq|
|
||||
|
||||
==============================================================================
|
||||
INTRODUCTION *neosnippet-introduction*
|
||||
|
||||
*neosnippet* offers functionality similar to snipMate.vim or snippetsEmu.vim.
|
||||
This analyzes snippet files which you can use for the completion. Since you
|
||||
can choose snippets with the deoplete interface, you might have less trouble
|
||||
using them, because you do not have to remember each snippet name.
|
||||
|
||||
==============================================================================
|
||||
INSTALL *neosnippet-install*
|
||||
|
||||
1: Extract the file and put files in your Vim directory
|
||||
(usually ~/.vim/ or Program Files/Vim/vimfiles on Windows).
|
||||
|
||||
Note: If you want to complete snippets, you must install deoplete
|
||||
(https://github.com/Shougo/deoplete.nvim). It's not required, but highly
|
||||
recommended.
|
||||
|
||||
Default snippets files are available in neosnippet-snippets.
|
||||
https://github.com/Shougo/neosnippet-snippets
|
||||
|
||||
Note: Installing the default snippets is optional. If you choose not to
|
||||
install them, you must set |g:neosnippet#disable_runtime_snippets| like so:
|
||||
>
|
||||
let g:neosnippet#disable_runtime_snippets = {'_' : 1}
|
||||
|
||||
Extra snippets files are also available. e.g.:
|
||||
https://github.com/honza/vim-snippets
|
||||
|
||||
Note: To enable context-filetype feature, you must install
|
||||
context_filetype.vim. This allows you to use snippets not only depend on the
|
||||
current 'filetype' of the file, but also depends on the cursor location, such
|
||||
as javascript inside html, or lua inside Vim scripts.
|
||||
https://github.com/Shougo/context_filetype.vim
|
||||
|
||||
INTERFACE *neosnippet-interface*
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
COMMANDS *neosnippet-commands*
|
||||
|
||||
*:NeoSnippetMakeCache*
|
||||
:NeoSnippetMakeCache [filetype]
|
||||
Creates a cache for the snippets of the given [filetype]. It
|
||||
automatically chooses the current buffer's file type unless
|
||||
you specify another one by [filetype].
|
||||
|
||||
*:NeoSnippetEdit*
|
||||
:NeoSnippetEdit [{options}] [filetype]
|
||||
Opens the snippets for a given [filetype] to edit. It
|
||||
automatically selects the current buffer's filetype unless you
|
||||
specify another one by [filetype].
|
||||
|
||||
If the path to [filetype] snippets is a directory, it
|
||||
automatically selects "[filetype].snip" in the [filetype]
|
||||
subdirectory.
|
||||
|
||||
It edits a snippet file in |g:neosnippet#snippets_directory|
|
||||
with precedence. The snippets are re-cached automatically
|
||||
when you save the file after edit.
|
||||
|
||||
The following parameters can be used as {options} to modify
|
||||
the behavior of the command. Note: You must escape spaces with
|
||||
a backslash "\".
|
||||
|
||||
Note: You must set |g:neosnippet#snippets_directory| before
|
||||
using it.
|
||||
|
||||
*neosnippet-edit-options-vertical*
|
||||
-vertical
|
||||
Split the window vertically.
|
||||
|
||||
*neosnippet-edit-options-horizontal*
|
||||
-horizontal
|
||||
Split the window horizontally.
|
||||
|
||||
Note: The behavior is undefined when both options are set.
|
||||
|
||||
*neosnippet-edit-options-direction*
|
||||
-direction={direction}
|
||||
Define the split position rule. The default value is
|
||||
"belowleft".
|
||||
|
||||
*neosnippet-edit-options-split*
|
||||
-split
|
||||
Split the buffer.
|
||||
|
||||
*neosnippet-edit-options-runtime*
|
||||
-runtime
|
||||
Edit the runtime snippets (built-in defaults) instead of the
|
||||
user snippets defined by 'g:neosnippet#snippets_directory'.
|
||||
|
||||
*:NeoSnippetSource*
|
||||
:NeoSnippetSource [filename]
|
||||
Load the snippets contained in [filename].
|
||||
Note: The loaded snippets are enabled in current buffer only.
|
||||
|
||||
*:NeoSnippetClearMarkers*
|
||||
:NeoSnippetClearMarkers
|
||||
Clear current markers.
|
||||
Note: If you delete markers, you cannot jump to next
|
||||
placeholder.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
VARIABLES *neosnippet-variables*
|
||||
|
||||
g:neosnippet#snippets_directory *g:neosnippet#snippets_directory*
|
||||
This variable appoints a path to user-defined snippet files.
|
||||
You can set multiple values in comma-separated string or list.
|
||||
Non existing directories are ignored.
|
||||
|
||||
Note: The directory name must not be "snippets" or
|
||||
"neosnippets" under 'runtimepath'. For example,
|
||||
"~/.vim/snippets" or "~/.config/nvim/neosnippets".
|
||||
It is used as runtime snippet directory. It does not work as
|
||||
user expected.
|
||||
|
||||
User defined snippet files are read after the built-in snippet
|
||||
files. If redundant snippets occur they get overwritten and
|
||||
only the last one remains.
|
||||
|
||||
Note: The neosnippet plug-in loads file type snippets from
|
||||
several files if available. For example if you edit a "Vim"
|
||||
file it loads the snippets from:
|
||||
|
||||
- "vim.snip"
|
||||
- "vim.snippets"
|
||||
- "vim_*.snip"
|
||||
- "vim_*.snippets"
|
||||
- "vim/**/*.snip"
|
||||
- "vim/**/*.snippets"
|
||||
|
||||
The default value is ''.
|
||||
|
||||
*g:neosnippet#disable_select_mode_mappings*
|
||||
g:neosnippet#disable_select_mode_mappings
|
||||
This variable disables key-mappings in |Select-mode| where the
|
||||
neosnippet performs the snippet completion. Usually it is
|
||||
better to leave it as it is. But if you have troubles with the
|
||||
buffer switcher LustyJuggler you can switch them off.
|
||||
|
||||
The default value is 1.
|
||||
|
||||
*g:neosnippet#disable_runtime_snippets*
|
||||
g:neosnippet#disable_runtime_snippets
|
||||
This is a dictionary variable which uses file types as key.
|
||||
If you set the value of a file type entry to 1, this prevents
|
||||
loading "neosnippets" directories from 'runtimepath'. This is
|
||||
very useful to prevent snippet conflicts between self defined
|
||||
snippet files and the built-in snippet files of neosnippet. If
|
||||
you use an "_" as key for an entry this will treat the value
|
||||
of the entry as default value for all file types.
|
||||
|
||||
Note: This dictionary must be set in your .vimrc.
|
||||
|
||||
For example:
|
||||
>
|
||||
let g:neosnippet#disable_runtime_snippets = {
|
||||
\ 'c' : 1, 'cpp' : 1,
|
||||
\ }
|
||||
|
||||
" which disables all runtime snippets
|
||||
let g:neosnippet#disable_runtime_snippets = {
|
||||
\ '_' : 1,
|
||||
\ }
|
||||
<
|
||||
The default value is {}.
|
||||
*g:neosnippet#enable_snipmate_compatibility*
|
||||
g:neosnippet#enable_snipmate_compatibility
|
||||
If this variable is not 0, neosnippet will enable the snipMate
|
||||
compatibility features:
|
||||
|
||||
1. Define Filename() function.
|
||||
2. Load |g:snippets_dir| and snipMate snippets files from
|
||||
'runtimepath'.
|
||||
3. Enable file snippets feature in snipMate.
|
||||
4. snipMate optional abbr syntax.
|
||||
|
||||
The default value is 0.
|
||||
|
||||
*g:neosnippet#expand_word_boundary*
|
||||
g:neosnippet#expand_word_boundary
|
||||
If it is not 0, neosnippet will expand snippets by a word
|
||||
boundary.
|
||||
Note: It must be initialized before snippet loading.
|
||||
|
||||
The default value is 0.
|
||||
|
||||
*g:neosnippet#enable_conceal_markers*
|
||||
g:neosnippet#enable_conceal_markers
|
||||
If this variable is not 0, neosnippet will use the |conceal|
|
||||
markers.
|
||||
|
||||
The default value is 1.
|
||||
|
||||
*g:neosnippet#enable_completed_snippet*
|
||||
g:neosnippet#enable_completed_snippet
|
||||
If this variable is not 0, neosnippet can expand the function
|
||||
prototype.
|
||||
Note: It supports |vim-lsp| or |nvim-lsp| snippets.
|
||||
|
||||
The default value is 0.
|
||||
|
||||
*g:neosnippet#enable_complete_done*
|
||||
g:neosnippet#enable_complete_done
|
||||
If this variable is not 0, neosnippet can expand on
|
||||
|CompleteDone| or |PumCompleteDone|for |pum.vim|.
|
||||
Note: If the feature is enabled, you cannot expand snippet
|
||||
trigger manually when |pumvisible()| to prevent conflicts with
|
||||
|CompleteDone| expand.
|
||||
|
||||
The default value is 0.
|
||||
|
||||
*g:neosnippet#enable_optional_arguments*
|
||||
g:neosnippet#enable_optional_arguments
|
||||
If this variable is not 0, neosnippet will conceal commas in
|
||||
expanded arguments from completed snippets.
|
||||
|
||||
Useful for languages where arguments are optional by default.
|
||||
|
||||
Note: For use with |g:neosnippet#enable_completed_snippet| = 1
|
||||
|
||||
The default value is 1.
|
||||
|
||||
*g:neosnippet#enable_auto_clear_markers*
|
||||
g:neosnippet#enable_auto_clear_markers
|
||||
If this variable is not 0, neosnippet will clear the markers
|
||||
in the buffer when |BufWritePost|, |CursorMoved| and
|
||||
|CursorMovedI| autocmd.
|
||||
|
||||
Note: The feature does not work for multi lines snippets.
|
||||
If you want to clear them, you should use
|
||||
|:NeoSnippetClearMarkers| instead.
|
||||
|
||||
The default value is 1.
|
||||
|
||||
*g:neosnippet#scope_aliases*
|
||||
g:neosnippet#scope_aliases
|
||||
It is a dictionary that associating certain filetypes with
|
||||
other snippet files.
|
||||
The key is filetype, and the value is comma separated snippet
|
||||
filenames excluded extensions.
|
||||
It works like "g:snipMate.scope_aliases".
|
||||
The default value is {}. >
|
||||
|
||||
let g:neosnippet#scope_aliases = {}
|
||||
let g:neosnippet#scope_aliases['ruby'] = 'ruby,ruby-rails'
|
||||
|
||||
g:neosnippet#data_directory *g:neosnippet#data_directory*
|
||||
Specifies directory for neosnippet cache. If the directory
|
||||
doesn't exist the directory will be automatically generated.
|
||||
|
||||
Default value is "$XDG_CACHE_HOME/neosnippet" or
|
||||
expand("~/.cache/neosnippet"); the absolute path of it.
|
||||
|
||||
g:neosnippet#conceal_char *g:neosnippet#conceal_char*
|
||||
This variable can customize how the jump position is concealed
|
||||
after snippet expansion.
|
||||
|
||||
The default value is '|'.
|
||||
|
||||
*b:neosnippet_disable_snippet_triggers*
|
||||
b:neosnippet_disable_snippet_triggers
|
||||
Specifies the triggers which disables in the buffer.
|
||||
It is useful to disable some snippet triggers.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
KEY MAPPINGS *neosnippet-key-mappings*
|
||||
|
||||
*<Plug>(neosnippet_expand_or_jump)*
|
||||
<Plug>(neosnippet_expand_or_jump)
|
||||
*<Plug>(neosnippet_jump_or_expand)*
|
||||
<Plug>(neosnippet_jump_or_expand)
|
||||
Jump to the next available placeholder in the buffer. If there
|
||||
is no placeholder it expands a snippet in the current cursor
|
||||
position.
|
||||
|
||||
*<Plug>(neosnippet_expand)*
|
||||
<Plug>(neosnippet_expand)
|
||||
Expand a snippet in current cursor position. It only takes
|
||||
effect if there is a snippet text to expand or if you have
|
||||
chosen a snippet from popup menu.
|
||||
|
||||
*<Plug>(neosnippet_jump)*
|
||||
<Plug>(neosnippet_jump)
|
||||
Jump to the next placeholder key. It does not expand any
|
||||
snippets.
|
||||
|
||||
*i_<Plug>(neosnippet_start_unite_snippet)*
|
||||
<Plug>(neosnippet_start_unite_snippet)
|
||||
Starts the unite snippet source. You can expand a snippet by
|
||||
the unite interface.
|
||||
Note: The plug-in |unite.vim| is required for that feature.
|
||||
|
||||
*x_<Plug>(neosnippet_expand_target)*
|
||||
<Plug>(neosnippet_expand_target)
|
||||
Expand the input trigger by a selected target text.
|
||||
|
||||
*x_<Plug>(neosnippet_register_oneshot_snippet)*
|
||||
<Plug>(neosnippet_register_oneshot_snippet)
|
||||
Register oneshot snippet in the current buffer.
|
||||
|
||||
*neosnippet#expandable()*
|
||||
neosnippet#expandable()
|
||||
You can use this function with imap <expr>. It checks if
|
||||
the cursor text is a snippet trigger. This is useful to save
|
||||
key mappings.
|
||||
|
||||
*neosnippet#jumpable()*
|
||||
neosnippet#jumpable()
|
||||
You can use this function with imap <expr>. It checks if the
|
||||
cursor text is an existing placeholder in current buffer. This
|
||||
is useful to save key mappings.
|
||||
|
||||
*neosnippet#expandable_or_jumpable()*
|
||||
neosnippet#expandable_or_jumpable()
|
||||
You can use this function with imap <expr>. It checks if
|
||||
the cursor text is a snippet trigger or a placeholder. This is
|
||||
useful to save key mappings.
|
||||
Note: If you don't like to jump to the next placeholder, you
|
||||
must use |neosnippet#expandable()| instead of
|
||||
|neosnippet#expandable_or_jumpable()|.
|
||||
>
|
||||
imap <expr><C-l>
|
||||
\ neosnippet#expandable_or_jumpable() ?
|
||||
\ "\<Plug>(neosnippet_expand_or_jump)" : "\<C-n>"
|
||||
<
|
||||
*neosnippet#anonymous()*
|
||||
neosnippet#anonymous({snippet})
|
||||
It defines anonymous snippet.
|
||||
{snippet} is snippet definition.
|
||||
{options} is snippet option.
|
||||
You can expand snippet definition without defining snippet
|
||||
trigger.
|
||||
Note: You can use this function with |:map-<expr>|.
|
||||
>
|
||||
inoremap <silent> ((
|
||||
\ <C-r>=neosnippet#anonymous('\left(${1}\right)${0}')<CR>
|
||||
" OR
|
||||
inoremap <expr><silent> ((
|
||||
\ neosnippet#anonymous('\left(${1}\right)${0}')
|
||||
<
|
||||
*neosnippet#expand()*
|
||||
neosnippet#expand({trigger})
|
||||
It expands the snippet trigger.
|
||||
{trigger} is snippet trigger.
|
||||
Note: You can use this function with |:map-<expr>|.
|
||||
>
|
||||
inoremap <silent> test
|
||||
\ i<C-r>=neosnippet#expand('date_english')<CR>
|
||||
nnoremap <silent><expr> test
|
||||
\ neosnippet#expand('date_english')
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
FUNCTIONS *neosnippet-functions*
|
||||
|
||||
*neosnippet#get_snippets_directory()*
|
||||
neosnippet#get_snippets_directory()
|
||||
Gets snippet directories. These directories contain runtime
|
||||
snippets directories and |g:neosnippet#snippets_directory|
|
||||
directories.
|
||||
|
||||
*neosnippet#complete_done()*
|
||||
neosnippet#complete_done()
|
||||
It expands the snippet for |CompleteDone| event.
|
||||
Note: The function is deprecated.
|
||||
==============================================================================
|
||||
EXAMPLES *neosnippet-examples*
|
||||
>
|
||||
" Plugin key-mappings.
|
||||
" Note: It can be "nmap", "xmap", "imap" and "smap", and don't forget
|
||||
" "smap" and "imap" unless you have some specific reasons. It uses
|
||||
" <Plug> mappings.
|
||||
" Note: It is unrecommended to map <Plug>(neosnippet_foo) at once by
|
||||
" "map", which could fail to work in some features.
|
||||
" Note: Don't forget to make a "smap" out of "<Plug>(neosnippet_jump)"
|
||||
" "<Plug>(neosnippet_expand_or_jump)" or
|
||||
" "Plug>(neosnippet_jump_or_expand)" at least. This note is especially
|
||||
" for you who are unfamiliar with Vim Script.
|
||||
imap <C-k> <Plug>(neosnippet_expand_or_jump)
|
||||
smap <C-k> <Plug>(neosnippet_expand_or_jump)
|
||||
xmap <C-k> <Plug>(neosnippet_expand_or_jump)
|
||||
nmap <C-k> <Plug>(neosnippet_expand_or_jump)
|
||||
|
||||
" SuperTab like snippets' behavior.
|
||||
" Note: Be careful to map <TAB> because <TAB> is equivalent to <C-i> in
|
||||
" Vim and <C-i> is a very important key especially in Normal Mode.
|
||||
"imap <expr><TAB>
|
||||
" \ pumvisible() ? "\<C-n>" :
|
||||
" \ neosnippet#expandable_or_jumpable() ?
|
||||
" \ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
|
||||
"smap <expr><TAB> neosnippet#expandable_or_jumpable() ?
|
||||
" \ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
|
||||
|
||||
" For conceal markers.
|
||||
if has('conceal')
|
||||
set conceallevel=2 concealcursor=niv
|
||||
endif
|
||||
|
||||
" Enable snipMate compatibility feature.
|
||||
" let g:neosnippet#enable_snipmate_compatibility = 1
|
||||
|
||||
" Expand the completed snippet trigger by <CR>.
|
||||
"imap <expr><CR>
|
||||
"\ (pumvisible() && neosnippet#expandable()) ?
|
||||
"\ "\<Plug>(neosnippet_expand)" : "\<CR>"
|
||||
|
||||
==============================================================================
|
||||
SNIPPET SYNTAX *neosnippet-snippet-syntax*
|
||||
|
||||
It is quite easy to create your own snippets. You can use the example below to
|
||||
get started.
|
||||
|
||||
Note: The snippets file extension must be ".snip" or ".snippets" and its
|
||||
filename corresponds to [filetype] regularly. If you want to avoid trouble
|
||||
about filename, use :NeoSnippetEdit command without specifying [filetype].
|
||||
|
||||
Example:
|
||||
|
||||
>
|
||||
snippet [name]
|
||||
abbr [abbreviation]
|
||||
alias [aliases]
|
||||
regexp [pattern]
|
||||
options [options]
|
||||
if ${1:condition}
|
||||
${2}
|
||||
endif
|
||||
|
||||
The snippet syntax is close to the one of |snipMate|. Each snippet starts with
|
||||
some keywords that define the name and modify the expansion and treatment of
|
||||
the snippet.
|
||||
|
||||
Snippet Keywords:
|
||||
|
||||
- snippet [name] (Required)
|
||||
|
||||
Each snippet starts with the keyword "snippet". This keyword is
|
||||
directly followed by the snippet name. The snippet name is used to
|
||||
expand the snippet.
|
||||
|
||||
- abbr [name] (Optional)
|
||||
|
||||
You can define an abbreviation for the snippet name. It will be
|
||||
displayed in the drop down selection menu.
|
||||
|
||||
- alias [aliases] (Optional)
|
||||
|
||||
Alias names can be use as additional keywords to expand the snippet.
|
||||
You can define multiple aliases using either spaces ' ' or commas ','
|
||||
as separator.
|
||||
|
||||
Example
|
||||
|
||||
>
|
||||
alias hoge hogera hogehoge
|
||||
<
|
||||
|
||||
- regexp [pattern] (Optional)
|
||||
|
||||
A pattern can be defined via a regular expression. The snippet expands
|
||||
only when the expression pattern is matched.
|
||||
Note: [pattern] must be quoted by "'" or '"'.
|
||||
Note: It does not mean auto expand feature.
|
||||
|
||||
Example
|
||||
>
|
||||
regexp '^% '
|
||||
<
|
||||
- options [options] (Optional)
|
||||
|
||||
Options influence the snippet behavior. The possible values are:
|
||||
|
||||
+ word This snippet expands by a word boundary.
|
||||
Note: To complete the trigger with neosnippet, it must be a
|
||||
word character (digits, alphabetical characters or "_").
|
||||
|
||||
>
|
||||
snippet date
|
||||
options word
|
||||
`strftime("%d %b %Y")`
|
||||
<
|
||||
|
||||
+ head This snippet expands at the beginning of a line only.
|
||||
Note: This is the same as "prev_word '^'" which is still
|
||||
there for backwards compatibility.
|
||||
|
||||
>
|
||||
snippet if
|
||||
options head
|
||||
if ${1:condition}
|
||||
${2}
|
||||
endif
|
||||
<
|
||||
|
||||
+ indent The horizontal position of the snippet will be adjusted
|
||||
to the indent of the line above the snippet after expansion.
|
||||
|
||||
The snippet itself starts below the part that contains the options, snippet
|
||||
aliases and keywords, described above. It contains the snippet which gets
|
||||
expanded which can contain several placeholders. The placeholders are used as
|
||||
jump points while expanding the snippet. There are several placeholders
|
||||
available providing different functionality.
|
||||
|
||||
The structure of a placeholder can be:
|
||||
|
||||
- ${number:default placeholder text}
|
||||
|
||||
The placeholder starts with a dollar sign "$". The number of a
|
||||
placeholder and the placeholder text are separated by a colon ":".
|
||||
They are surrounded by a pair of curly braces "{}". The placeholder
|
||||
text is displayed after the snippet expansion and will be replaced by
|
||||
your text. If you jump over the snippet and do not insert any text in
|
||||
that placeholder position the text remains there. This can be used as
|
||||
a default value for a certain position.
|
||||
|
||||
Example
|
||||
|
||||
>
|
||||
snippet if
|
||||
if ${1:condition}
|
||||
${2}
|
||||
endif
|
||||
<
|
||||
|
||||
- ${number:#:optional placeholder text}
|
||||
|
||||
In this kind of placeholder the number is followed by the hash
|
||||
character "#". If you jump over this placeholder and do not insert
|
||||
any text, the placeholder text will be removed.
|
||||
|
||||
Example
|
||||
|
||||
>
|
||||
snippet if
|
||||
if ${1:condition}
|
||||
${2}
|
||||
endif
|
||||
<
|
||||
|
||||
- ${number:TARGET}
|
||||
|
||||
This is the target placeholder which is replaced by text from a visual
|
||||
selection.
|
||||
Note: You need to make a visual selection and expand your
|
||||
snippet with the key mapping below for this to work.
|
||||
|
||||
|x_<Plug>(neosnippet_expand_target)|.
|
||||
|
||||
This is very useful if you edit text and decide to put something in an
|
||||
environment or some sort of brackets for folding.
|
||||
|
||||
Example
|
||||
|
||||
>
|
||||
snippet if
|
||||
if ${1:condition}
|
||||
${2}
|
||||
endif
|
||||
<
|
||||
|
||||
- ${number}
|
||||
|
||||
This is a placeholder which you can use as a simple jump position.
|
||||
This can be useful if you edit a placeholder inside of some sort of
|
||||
brackets or environment and want to go on behind it after that.
|
||||
|
||||
Example
|
||||
|
||||
>
|
||||
snippet if
|
||||
if ${1:condition}
|
||||
${2}
|
||||
endif
|
||||
|
||||
${3}
|
||||
<
|
||||
|
||||
- $number
|
||||
- ${0}, $0
|
||||
|
||||
This is a synchronized placeholder. Sometimes it is required to repeat
|
||||
a value in several positions inside a snippet. If you set the number
|
||||
of this placeholder to the same number as one of the other
|
||||
placeholders in the snippet, it will repeat its content. $1 is
|
||||
synchronized to ${1} and so on. ${0} or $0 will be the final jump
|
||||
placeholder.
|
||||
|
||||
Note: If you don't use ${0} in snippet, ${0} will be added
|
||||
automatically.
|
||||
|
||||
Example
|
||||
|
||||
>
|
||||
snippet namespace
|
||||
namespace ${1:name} {
|
||||
${0}
|
||||
} // namespace $1
|
||||
<
|
||||
|
||||
Note: If you like to include characters in snippets that already have
|
||||
a special meaning to neosnippet you need to escape them with a
|
||||
backslash.
|
||||
|
||||
>
|
||||
snippet code
|
||||
\`${1}\`${2}
|
||||
|
||||
snippet test
|
||||
${1:escape \} value}
|
||||
|
||||
# Substitute "\$0" to "$0"
|
||||
snippet main
|
||||
options head
|
||||
if __FILE__ == \$0
|
||||
${1:TARGET}
|
||||
end
|
||||
<
|
||||
|
||||
A placeholder value can not contain new lines. The snippet below is
|
||||
not valid.
|
||||
|
||||
>
|
||||
snippet invalid
|
||||
${1:constructor: (${2:args\}) ->
|
||||
${3:# do smth}}
|
||||
<
|
||||
|
||||
Vim has a built-in expression evaluation. You can also use this feature inside
|
||||
of snippets if you use back ticks like in the example below. Here the "%:t"
|
||||
gets expanded to the name of the current active file and the current time gets
|
||||
inserted by expanding the output of the strftime command.
|
||||
|
||||
>
|
||||
snippet header
|
||||
File: ${1:`expand('%:t')`}
|
||||
${2:Created at: `strftime("%B %d, %Y")`}
|
||||
<
|
||||
|
||||
You can also nest placeholders if you escape the special characters.
|
||||
|
||||
>
|
||||
snippet div
|
||||
<div ${1:id="${2:someid\}"}>${3}</div>${4}
|
||||
<
|
||||
If you need to use literal "$" in default, you must escape the special
|
||||
characters.
|
||||
>
|
||||
snippet test
|
||||
${1:escape \\${2:foobar\} value}
|
||||
|
||||
In some cases you need to escape the curly brace "}" twice as shown in the
|
||||
example below.
|
||||
|
||||
>
|
||||
snippet catch
|
||||
options head
|
||||
catch ${1:/${2:pattern: empty, E484, Vim(cmdname):{errmsg\\}\}/}
|
||||
<
|
||||
|
||||
This is because ${1:} substitutes the pattern to "/${2:pattern: empty, E484,
|
||||
Vim(cmdname):{errmsg\}}" and ${2:} substitutes the pattern to "pattern: empty,
|
||||
E484, Vim(cmdname):{errmsg}"
|
||||
|
||||
If you create a snippet file and prepend the filename with a "_" neosnippet
|
||||
treats the snippets inside the file as global. This means that they will be
|
||||
available for all file types (e.g _.snip). You can include other snippet files
|
||||
from within a snippet file with.
|
||||
|
||||
>
|
||||
include c.snip
|
||||
<
|
||||
|
||||
Or if you want to include a whole directory with file type snippets.
|
||||
|
||||
>
|
||||
include javascript/*
|
||||
<
|
||||
Neosnippet also supports "extends" syntax like snipMate.
|
||||
|
||||
>
|
||||
extends c
|
||||
<
|
||||
It behaves like this:
|
||||
|
||||
>
|
||||
include c.snip
|
||||
include c.snippets
|
||||
include c/*
|
||||
<
|
||||
If you include snippet files it can happen that the same snippet name is used
|
||||
multiple times in snippet files. Neosnippet produces a warning if it detects
|
||||
this. If you want to overwrite a snippet explicitly, please use:
|
||||
|
||||
>
|
||||
delete snippets_name
|
||||
<
|
||||
|
||||
After that you can redefine the snippet. But this does not work if you include
|
||||
external snippet files. There will be no warning when snippets get
|
||||
overwritten external snippet files. There will be no warning when snippets get
|
||||
overwritten.
|
||||
|
||||
Multi snippet feature in snipMate is available. Neosnippet substitutes trigger
|
||||
and descriptions spaces to '_'.
|
||||
|
||||
>
|
||||
snippet trigger description1
|
||||
hoge
|
||||
snippet trigger description2
|
||||
piyo
|
||||
<
|
||||
|
||||
If you use hard-tab for indentation inside a snippet file, neosnippet will use
|
||||
'shiftwidth' instead of Vim indent plugin. This feature is useful while some
|
||||
languages' indent files do not work very well (e.g.: PHP, Python).
|
||||
>
|
||||
snippet if
|
||||
if (${1:/* condition */}) {
|
||||
${2:// code...}
|
||||
}
|
||||
<
|
||||
|
||||
Note: "#{string}" is comment string. But it must be in head.
|
||||
>
|
||||
# It is comment string
|
||||
# It is not comment string!
|
||||
<
|
||||
|
||||
Note: Neosnippet ignores empty or spaces lines in snippet end. If you want to
|
||||
insert empty line in snippet end, you must insert placeholder.
|
||||
>
|
||||
# This is valid.
|
||||
snippet #!
|
||||
abbr #!/usr/bin/env ruby
|
||||
alias shebang
|
||||
options head
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
${0}
|
||||
|
||||
# This is invalid(ignores spaces lines!).
|
||||
snippet #!
|
||||
abbr #!/usr/bin/env ruby
|
||||
alias shebang
|
||||
options head
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
|
||||
You can load a Vim script file for snippets.
|
||||
|
||||
>
|
||||
source go.vim
|
||||
<
|
||||
UNITE SOURCES *neosnippet-unite-sources*
|
||||
|
||||
*neosnippet-unite-source-neosnippet*
|
||||
neosnippet
|
||||
The candidates of the snippet source are neosnippet snippets.
|
||||
and their kind is "snippet". You can use the snippet source
|
||||
with the mapping |i_<Plug>(neosnippet_start_unite_snippet)|.
|
||||
But you can also execute it by ":Unite neosnippet". The
|
||||
snippet source offers an edit action you can use to edit the
|
||||
snippet files.
|
||||
|
||||
Example:
|
||||
>
|
||||
imap <C-s> <Plug>(neosnippet_start_unite_snippet)
|
||||
<
|
||||
*neosnippet-unite-source-neosnippet/user*
|
||||
neosnippet/user
|
||||
The candidates of the user snippet files.
|
||||
|
||||
*neosnippet-unite-source-neosnippet/runtime*
|
||||
neosnippet/runtime
|
||||
The candidates of the runtime snippet files.
|
||||
|
||||
source actions
|
||||
|
||||
neosnippet *neosnippet-unite-action-neosnippet*
|
||||
expand Expand snippet (default action)
|
||||
edit Edit snippet
|
||||
preview View snippet definition
|
||||
|
||||
==============================================================================
|
||||
FAQ *neosnippet-faq*
|
||||
|
||||
Q: How to donate money to you?
|
||||
|
||||
A: I have started github sponsorship to spend more time for Vim/neovim
|
||||
plugins. You can donate money to help me!
|
||||
|
||||
https://github.com/sponsors/Shougo
|
||||
|
||||
Q: What if I want to expand a snippet trigger after (, [, " etc...:
|
||||
|
||||
A: You should use "options word" in the snippet definition. This changes the
|
||||
expansion behavior to a word boundary or set
|
||||
|g:neosnippet#expand_word_boundary|.
|
||||
>
|
||||
snippet date
|
||||
options word
|
||||
`strftime("%d %b %Y")`
|
||||
<
|
||||
|
||||
Q: Why does neosnippet not indent the expanded snippet?
|
||||
|
||||
A: You should use "options indent" in the snippet definition. In default,
|
||||
neosnippet doesn't indent the expanded line.
|
||||
|
||||
Q: What if Neosnippet conflicts with |LustyJuggler|.
|
||||
http://www.vim.org/scripts/script.php?script_id=2050
|
||||
|
||||
A: Please try below settings:
|
||||
Note: But you must unmap the mappings in select mode manually.
|
||||
>
|
||||
let g:neosnippet#disable_select_mode_mappings = 0
|
||||
<
|
||||
|
||||
Q: Error using snipmate-snippets
|
||||
Note: snipmate-snippets is currently vim-snippets.
|
||||
https://github.com/Shougo/neosnippet/issues/86
|
||||
|
||||
A: Please try the setting below. It defines the snipMate function.
|
||||
>
|
||||
let g:neosnippet#enable_snipmate_compatibility = 1
|
||||
<
|
||||
Q: I want to disable preview window in neosnippet candidates.
|
||||
|
||||
A:
|
||||
>
|
||||
set completeopt-=preview
|
||||
<
|
||||
Q: I want to add snippets dynamically.
|
||||
|
||||
A: You can use |:NeoSnippetSource| for it.
|
||||
|
||||
Q: I want to delete markers when InsertLeave event.
|
||||
|
||||
A: You can use |:NeoSnippetClearMarkers| command. >
|
||||
|
||||
autocmd InsertLeave * NeoSnippetClearMarkers
|
||||
snoremap <silent><ESC> <ESC>:NeoSnippetClearMarkers<CR>
|
||||
|
||||
Q: Why did you separate default snippets from neosnippet core?
|
||||
|
||||
A: Because users should choose default snippet collection.
|
||||
neosnippet has many forks, but almost all forked users change default snippet
|
||||
files.
|
||||
https://github.com/Shougo/neosnippet.vim/network
|
||||
If splitted default snippets, users can fork and change it easily.
|
||||
|
||||
Q: I want to complete function arguments using neosnippet like clang_complete.
|
||||
|
||||
A: Yes, you can. You can just complete the candidate from completion window
|
||||
and expand the candidate as trigger.
|
||||
Note: It works in "func(arg1, arg2, ...)" prototypes only.
|
||||
Note: It is experiental feature.
|
||||
Note: |v:completed_item| feature is needed.
|
||||
|
||||
Q: I want to expand auto completed parameters.
|
||||
Q: I want to use |vim-lsp| or |nvim-lsp| snippets with neosnippet.
|
||||
|
||||
A: >
|
||||
let g:neosnippet#enable_completed_snippet = 1
|
||||
let g:neosnippet#enable_complete_done = 1
|
||||
|
||||
Q. How to enable neosnippet the completion in ddc.vim?
|
||||
|
||||
A. >
|
||||
|
||||
call ddc#custom#patch_global('sources', ['neosnippet'])
|
||||
call ddc#custom#patch_global('sourceOptions', {
|
||||
\ '_': {
|
||||
\ 'matchers': ['matcher_head'],
|
||||
\ 'sorters': ['sorter_rank']
|
||||
\ },
|
||||
\ 'neosnippet': {'mark': 'ns', 'dup': v:true},
|
||||
\ })
|
||||
<
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:ft=help:norl:noet:fen:noet:
|
||||
533
vim/.vim/bundle/.neobundle/doc/tags
Normal file
533
vim/.vim/bundle/.neobundle/doc/tags
Normal file
@@ -0,0 +1,533 @@
|
||||
:GBrowse fugitive.txt /*:GBrowse*
|
||||
:GDelete fugitive.txt /*:GDelete*
|
||||
:GMove fugitive.txt /*:GMove*
|
||||
:GRemove fugitive.txt /*:GRemove*
|
||||
:GRename fugitive.txt /*:GRename*
|
||||
:GUnlink fugitive.txt /*:GUnlink*
|
||||
:Gblame fugitive.txt /*:Gblame*
|
||||
:Gbrowse fugitive.txt /*:Gbrowse*
|
||||
:Gcd fugitive.txt /*:Gcd*
|
||||
:Gclog fugitive.txt /*:Gclog*
|
||||
:Gcommit fugitive.txt /*:Gcommit*
|
||||
:Gdelete fugitive.txt /*:Gdelete*
|
||||
:Gdiff fugitive.txt /*:Gdiff*
|
||||
:Gdiffsplit fugitive.txt /*:Gdiffsplit*
|
||||
:Gdiffsplit! fugitive.txt /*:Gdiffsplit!*
|
||||
:Gdrop fugitive.txt /*:Gdrop*
|
||||
:Gedit fugitive.txt /*:Gedit*
|
||||
:Gfetch fugitive.txt /*:Gfetch*
|
||||
:Ggrep fugitive.txt /*:Ggrep*
|
||||
:Ghdiffsplit fugitive.txt /*:Ghdiffsplit*
|
||||
:Git fugitive.txt /*:Git*
|
||||
:Git! fugitive.txt /*:Git!*
|
||||
:Git_--paginate fugitive.txt /*:Git_--paginate*
|
||||
:Git_-p fugitive.txt /*:Git_-p*
|
||||
:Git_blame fugitive.txt /*:Git_blame*
|
||||
:Git_difftool fugitive.txt /*:Git_difftool*
|
||||
:Git_grep fugitive.txt /*:Git_grep*
|
||||
:Git_mergetool fugitive.txt /*:Git_mergetool*
|
||||
:Glcd fugitive.txt /*:Glcd*
|
||||
:Glgrep fugitive.txt /*:Glgrep*
|
||||
:Gllog fugitive.txt /*:Gllog*
|
||||
:Glog fugitive.txt /*:Glog*
|
||||
:Gmerge fugitive.txt /*:Gmerge*
|
||||
:Gmove fugitive.txt /*:Gmove*
|
||||
:Gpedit fugitive.txt /*:Gpedit*
|
||||
:Gpedit! fugitive.txt /*:Gpedit!*
|
||||
:Gpull fugitive.txt /*:Gpull*
|
||||
:Gpush fugitive.txt /*:Gpush*
|
||||
:Gread fugitive.txt /*:Gread*
|
||||
:Grebase fugitive.txt /*:Grebase*
|
||||
:Gremove fugitive.txt /*:Gremove*
|
||||
:Grename fugitive.txt /*:Grename*
|
||||
:Grevert fugitive.txt /*:Grevert*
|
||||
:Gsdiff fugitive.txt /*:Gsdiff*
|
||||
:Gsplit fugitive.txt /*:Gsplit*
|
||||
:Gsplit! fugitive.txt /*:Gsplit!*
|
||||
:Gstatus fugitive.txt /*:Gstatus*
|
||||
:Gtabedit fugitive.txt /*:Gtabedit*
|
||||
:Gtabsplit! fugitive.txt /*:Gtabsplit!*
|
||||
:Gvdiff fugitive.txt /*:Gvdiff*
|
||||
:Gvdiffsplit fugitive.txt /*:Gvdiffsplit*
|
||||
:Gvsplit fugitive.txt /*:Gvsplit*
|
||||
:Gvsplit! fugitive.txt /*:Gvsplit!*
|
||||
:Gwq fugitive.txt /*:Gwq*
|
||||
:Gwrite fugitive.txt /*:Gwrite*
|
||||
:NeoBundle neobundle.txt /*:NeoBundle*
|
||||
:NeoBundleCheck neobundle.txt /*:NeoBundleCheck*
|
||||
:NeoBundleCheckUpdate neobundle.txt /*:NeoBundleCheckUpdate*
|
||||
:NeoBundleClearCache neobundle.txt /*:NeoBundleClearCache*
|
||||
:NeoBundleCount neobundle.txt /*:NeoBundleCount*
|
||||
:NeoBundleDirectInstall neobundle.txt /*:NeoBundleDirectInstall*
|
||||
:NeoBundleDisable neobundle.txt /*:NeoBundleDisable*
|
||||
:NeoBundleDocs neobundle.txt /*:NeoBundleDocs*
|
||||
:NeoBundleExtraEdit neobundle.txt /*:NeoBundleExtraEdit*
|
||||
:NeoBundleFetch neobundle.txt /*:NeoBundleFetch*
|
||||
:NeoBundleGC neobundle.txt /*:NeoBundleGC*
|
||||
:NeoBundleInstall neobundle.txt /*:NeoBundleInstall*
|
||||
:NeoBundleInstall! neobundle.txt /*:NeoBundleInstall!*
|
||||
:NeoBundleLazy neobundle.txt /*:NeoBundleLazy*
|
||||
:NeoBundleList neobundle.txt /*:NeoBundleList*
|
||||
:NeoBundleLoadCache neobundle.txt /*:NeoBundleLoadCache*
|
||||
:NeoBundleLocal neobundle.txt /*:NeoBundleLocal*
|
||||
:NeoBundleLog neobundle.txt /*:NeoBundleLog*
|
||||
:NeoBundleReinstall neobundle.txt /*:NeoBundleReinstall*
|
||||
:NeoBundleRemotePlugins neobundle.txt /*:NeoBundleRemotePlugins*
|
||||
:NeoBundleRollback neobundle.txt /*:NeoBundleRollback*
|
||||
:NeoBundleSaveCache neobundle.txt /*:NeoBundleSaveCache*
|
||||
:NeoBundleSource neobundle.txt /*:NeoBundleSource*
|
||||
:NeoBundleUpdate neobundle.txt /*:NeoBundleUpdate*
|
||||
:NeoBundleUpdate! neobundle.txt /*:NeoBundleUpdate!*
|
||||
:NeoBundleUpdatesLog neobundle.txt /*:NeoBundleUpdatesLog*
|
||||
:NeoSnippetClearMarkers neosnippet.txt /*:NeoSnippetClearMarkers*
|
||||
:NeoSnippetEdit neosnippet.txt /*:NeoSnippetEdit*
|
||||
:NeoSnippetMakeCache neosnippet.txt /*:NeoSnippetMakeCache*
|
||||
:NeoSnippetSource neosnippet.txt /*:NeoSnippetSource*
|
||||
:VimShell vimshell.txt /*:VimShell*
|
||||
:VimShellCreate vimshell.txt /*:VimShellCreate*
|
||||
:VimShellExecute vimshell.txt /*:VimShellExecute*
|
||||
:VimShellInteractive vimshell.txt /*:VimShellInteractive*
|
||||
:VimShellPop vimshell.txt /*:VimShellPop*
|
||||
:VimShellSendBuffer vimshell.txt /*:VimShellSendBuffer*
|
||||
:VimShellSendString vimshell.txt /*:VimShellSendString*
|
||||
:VimShellTab vimshell.txt /*:VimShellTab*
|
||||
:VimShellTerminal vimshell.txt /*:VimShellTerminal*
|
||||
<Plug>(neosnippet_expand) neosnippet.txt /*<Plug>(neosnippet_expand)*
|
||||
<Plug>(neosnippet_expand_or_jump) neosnippet.txt /*<Plug>(neosnippet_expand_or_jump)*
|
||||
<Plug>(neosnippet_jump) neosnippet.txt /*<Plug>(neosnippet_jump)*
|
||||
<Plug>(neosnippet_jump_or_expand) neosnippet.txt /*<Plug>(neosnippet_jump_or_expand)*
|
||||
<Plug>(vimshell_append_end) vimshell.txt /*<Plug>(vimshell_append_end)*
|
||||
<Plug>(vimshell_append_enter) vimshell.txt /*<Plug>(vimshell_append_enter)*
|
||||
<Plug>(vimshell_change_line) vimshell.txt /*<Plug>(vimshell_change_line)*
|
||||
<Plug>(vimshell_clear) vimshell.txt /*<Plug>(vimshell_clear)*
|
||||
<Plug>(vimshell_create) vimshell.txt /*<Plug>(vimshell_create)*
|
||||
<Plug>(vimshell_delete_line) vimshell.txt /*<Plug>(vimshell_delete_line)*
|
||||
<Plug>(vimshell_delete_previous_output) vimshell.txt /*<Plug>(vimshell_delete_previous_output)*
|
||||
<Plug>(vimshell_enter) vimshell.txt /*<Plug>(vimshell_enter)*
|
||||
<Plug>(vimshell_execute_by_background) vimshell.txt /*<Plug>(vimshell_execute_by_background)*
|
||||
<Plug>(vimshell_exit) vimshell.txt /*<Plug>(vimshell_exit)*
|
||||
<Plug>(vimshell_hangup) vimshell.txt /*<Plug>(vimshell_hangup)*
|
||||
<Plug>(vimshell_hide) vimshell.txt /*<Plug>(vimshell_hide)*
|
||||
<Plug>(vimshell_insert_enter) vimshell.txt /*<Plug>(vimshell_insert_enter)*
|
||||
<Plug>(vimshell_insert_head) vimshell.txt /*<Plug>(vimshell_insert_head)*
|
||||
<Plug>(vimshell_int_append_end) vimshell.txt /*<Plug>(vimshell_int_append_end)*
|
||||
<Plug>(vimshell_int_append_enter) vimshell.txt /*<Plug>(vimshell_int_append_enter)*
|
||||
<Plug>(vimshell_int_change_line) vimshell.txt /*<Plug>(vimshell_int_change_line)*
|
||||
<Plug>(vimshell_int_clear) vimshell.txt /*<Plug>(vimshell_int_clear)*
|
||||
<Plug>(vimshell_int_delete_line) vimshell.txt /*<Plug>(vimshell_int_delete_line)*
|
||||
<Plug>(vimshell_int_execute_line) vimshell.txt /*<Plug>(vimshell_int_execute_line)*
|
||||
<Plug>(vimshell_int_exit) vimshell.txt /*<Plug>(vimshell_int_exit)*
|
||||
<Plug>(vimshell_int_hangup) vimshell.txt /*<Plug>(vimshell_int_hangup)*
|
||||
<Plug>(vimshell_int_insert_enter) vimshell.txt /*<Plug>(vimshell_int_insert_enter)*
|
||||
<Plug>(vimshell_int_insert_head) vimshell.txt /*<Plug>(vimshell_int_insert_head)*
|
||||
<Plug>(vimshell_int_next_prompt) vimshell.txt /*<Plug>(vimshell_int_next_prompt)*
|
||||
<Plug>(vimshell_int_paste_prompt) vimshell.txt /*<Plug>(vimshell_int_paste_prompt)*
|
||||
<Plug>(vimshell_int_previous_prompt) vimshell.txt /*<Plug>(vimshell_int_previous_prompt)*
|
||||
<Plug>(vimshell_int_restart_command) vimshell.txt /*<Plug>(vimshell_int_restart_command)*
|
||||
<Plug>(vimshell_move_end_argument) vimshell.txt /*<Plug>(vimshell_move_end_argument)*
|
||||
<Plug>(vimshell_move_head) vimshell.txt /*<Plug>(vimshell_move_head)*
|
||||
<Plug>(vimshell_next_prompt) vimshell.txt /*<Plug>(vimshell_next_prompt)*
|
||||
<Plug>(vimshell_paste_prompt) vimshell.txt /*<Plug>(vimshell_paste_prompt)*
|
||||
<Plug>(vimshell_previous_prompt) vimshell.txt /*<Plug>(vimshell_previous_prompt)*
|
||||
<Plug>(vimshell_split_create) vimshell.txt /*<Plug>(vimshell_split_create)*
|
||||
<Plug>(vimshell_split_switch) vimshell.txt /*<Plug>(vimshell_split_switch)*
|
||||
<Plug>(vimshell_switch) vimshell.txt /*<Plug>(vimshell_switch)*
|
||||
FugitiveStatusline() fugitive.txt /*FugitiveStatusline()*
|
||||
User_Fugitive fugitive.txt /*User_Fugitive*
|
||||
User_FugitiveBlob fugitive.txt /*User_FugitiveBlob*
|
||||
User_FugitiveChanged fugitive.txt /*User_FugitiveChanged*
|
||||
User_FugitiveCommit fugitive.txt /*User_FugitiveCommit*
|
||||
User_FugitiveEditor fugitive.txt /*User_FugitiveEditor*
|
||||
User_FugitiveIndex fugitive.txt /*User_FugitiveIndex*
|
||||
User_FugitiveObject fugitive.txt /*User_FugitiveObject*
|
||||
User_FugitivePager fugitive.txt /*User_FugitivePager*
|
||||
User_FugitiveStageBlob fugitive.txt /*User_FugitiveStageBlob*
|
||||
User_FugitiveTag fugitive.txt /*User_FugitiveTag*
|
||||
User_FugitiveTree fugitive.txt /*User_FugitiveTree*
|
||||
b:neosnippet_disable_snippet_triggers neosnippet.txt /*b:neosnippet_disable_snippet_triggers*
|
||||
fugitive fugitive.txt /*fugitive*
|
||||
fugitive#statusline() fugitive.txt /*fugitive#statusline()*
|
||||
fugitive-:G fugitive.txt /*fugitive-:G*
|
||||
fugitive-:Ge fugitive.txt /*fugitive-:Ge*
|
||||
fugitive-:Gr fugitive.txt /*fugitive-:Gr*
|
||||
fugitive-:Gw fugitive.txt /*fugitive-:Gw*
|
||||
fugitive-about fugitive.txt /*fugitive-about*
|
||||
fugitive-api fugitive.txt /*fugitive-api*
|
||||
fugitive-autocommands fugitive.txt /*fugitive-autocommands*
|
||||
fugitive-commands fugitive.txt /*fugitive-commands*
|
||||
fugitive-deprecated fugitive.txt /*fugitive-deprecated*
|
||||
fugitive-global-maps fugitive.txt /*fugitive-global-maps*
|
||||
fugitive-maps fugitive.txt /*fugitive-maps*
|
||||
fugitive-misc-maps fugitive.txt /*fugitive-misc-maps*
|
||||
fugitive-navigation-maps fugitive.txt /*fugitive-navigation-maps*
|
||||
fugitive-object fugitive.txt /*fugitive-object*
|
||||
fugitive-revision fugitive.txt /*fugitive-revision*
|
||||
fugitive-staging-maps fugitive.txt /*fugitive-staging-maps*
|
||||
fugitive-statusline fugitive.txt /*fugitive-statusline*
|
||||
fugitive-summary fugitive.txt /*fugitive-summary*
|
||||
fugitive.txt fugitive.txt /*fugitive.txt*
|
||||
fugitive_# fugitive.txt /*fugitive_#*
|
||||
fugitive_( fugitive.txt /*fugitive_(*
|
||||
fugitive_) fugitive.txt /*fugitive_)*
|
||||
fugitive_- fugitive.txt /*fugitive_-*
|
||||
fugitive_. fugitive.txt /*fugitive_.*
|
||||
fugitive_< fugitive.txt /*fugitive_<*
|
||||
fugitive_<CR> fugitive.txt /*fugitive_<CR>*
|
||||
fugitive_= fugitive.txt /*fugitive_=*
|
||||
fugitive_> fugitive.txt /*fugitive_>*
|
||||
fugitive_C fugitive.txt /*fugitive_C*
|
||||
fugitive_CTRL-N fugitive.txt /*fugitive_CTRL-N*
|
||||
fugitive_CTRL-P fugitive.txt /*fugitive_CTRL-P*
|
||||
fugitive_I fugitive.txt /*fugitive_I*
|
||||
fugitive_O fugitive.txt /*fugitive_O*
|
||||
fugitive_P fugitive.txt /*fugitive_P*
|
||||
fugitive_U fugitive.txt /*fugitive_U*
|
||||
fugitive_X fugitive.txt /*fugitive_X*
|
||||
fugitive_[/ fugitive.txt /*fugitive_[\/*
|
||||
fugitive_[[ fugitive.txt /*fugitive_[[*
|
||||
fugitive_[] fugitive.txt /*fugitive_[]*
|
||||
fugitive_[c fugitive.txt /*fugitive_[c*
|
||||
fugitive_[m fugitive.txt /*fugitive_[m*
|
||||
fugitive_]/ fugitive.txt /*fugitive_]\/*
|
||||
fugitive_][ fugitive.txt /*fugitive_][*
|
||||
fugitive_]] fugitive.txt /*fugitive_]]*
|
||||
fugitive_]c fugitive.txt /*fugitive_]c*
|
||||
fugitive_]m fugitive.txt /*fugitive_]m*
|
||||
fugitive_c fugitive.txt /*fugitive_c*
|
||||
fugitive_c_CTRL-R_CTRL-G fugitive.txt /*fugitive_c_CTRL-R_CTRL-G*
|
||||
fugitive_cb fugitive.txt /*fugitive_cb*
|
||||
fugitive_cm fugitive.txt /*fugitive_cm*
|
||||
fugitive_co fugitive.txt /*fugitive_co*
|
||||
fugitive_cr fugitive.txt /*fugitive_cr*
|
||||
fugitive_cz fugitive.txt /*fugitive_cz*
|
||||
fugitive_d fugitive.txt /*fugitive_d*
|
||||
fugitive_d? fugitive.txt /*fugitive_d?*
|
||||
fugitive_dd fugitive.txt /*fugitive_dd*
|
||||
fugitive_dh fugitive.txt /*fugitive_dh*
|
||||
fugitive_dp fugitive.txt /*fugitive_dp*
|
||||
fugitive_dq fugitive.txt /*fugitive_dq*
|
||||
fugitive_ds fugitive.txt /*fugitive_ds*
|
||||
fugitive_dv fugitive.txt /*fugitive_dv*
|
||||
fugitive_g? fugitive.txt /*fugitive_g?*
|
||||
fugitive_gI fugitive.txt /*fugitive_gI*
|
||||
fugitive_gO fugitive.txt /*fugitive_gO*
|
||||
fugitive_gP fugitive.txt /*fugitive_gP*
|
||||
fugitive_gU fugitive.txt /*fugitive_gU*
|
||||
fugitive_gi fugitive.txt /*fugitive_gi*
|
||||
fugitive_gp fugitive.txt /*fugitive_gp*
|
||||
fugitive_gq fugitive.txt /*fugitive_gq*
|
||||
fugitive_gr fugitive.txt /*fugitive_gr*
|
||||
fugitive_gs fugitive.txt /*fugitive_gs*
|
||||
fugitive_gu fugitive.txt /*fugitive_gu*
|
||||
fugitive_i fugitive.txt /*fugitive_i*
|
||||
fugitive_o fugitive.txt /*fugitive_o*
|
||||
fugitive_p fugitive.txt /*fugitive_p*
|
||||
fugitive_q fugitive.txt /*fugitive_q*
|
||||
fugitive_r fugitive.txt /*fugitive_r*
|
||||
fugitive_s fugitive.txt /*fugitive_s*
|
||||
fugitive_star fugitive.txt /*fugitive_star*
|
||||
fugitive_u fugitive.txt /*fugitive_u*
|
||||
fugitive_y_CTRL-G fugitive.txt /*fugitive_y_CTRL-G*
|
||||
fugitive_~ fugitive.txt /*fugitive_~*
|
||||
g:fugitive_dynamic_colors fugitive.txt /*g:fugitive_dynamic_colors*
|
||||
g:fugitive_no_maps fugitive.txt /*g:fugitive_no_maps*
|
||||
g:neobundle#cache_file neobundle.txt /*g:neobundle#cache_file*
|
||||
g:neobundle#default_options neobundle.txt /*g:neobundle#default_options*
|
||||
g:neobundle#default_site neobundle.txt /*g:neobundle#default_site*
|
||||
g:neobundle#enable_name_conversion neobundle.txt /*g:neobundle#enable_name_conversion*
|
||||
g:neobundle#install_max_processes neobundle.txt /*g:neobundle#install_max_processes*
|
||||
g:neobundle#install_process_timeout neobundle.txt /*g:neobundle#install_process_timeout*
|
||||
g:neobundle#log_filename neobundle.txt /*g:neobundle#log_filename*
|
||||
g:neobundle#rm_command neobundle.txt /*g:neobundle#rm_command*
|
||||
g:neobundle#types#git#clone_depth neobundle.txt /*g:neobundle#types#git#clone_depth*
|
||||
g:neobundle#types#git#command_path neobundle.txt /*g:neobundle#types#git#command_path*
|
||||
g:neobundle#types#git#default_protocol neobundle.txt /*g:neobundle#types#git#default_protocol*
|
||||
g:neobundle#types#git#enable_submodule neobundle.txt /*g:neobundle#types#git#enable_submodule*
|
||||
g:neobundle#types#git#pull_command neobundle.txt /*g:neobundle#types#git#pull_command*
|
||||
g:neobundle#types#hg#command_path neobundle.txt /*g:neobundle#types#hg#command_path*
|
||||
g:neobundle#types#hg#default_protocol neobundle.txt /*g:neobundle#types#hg#default_protocol*
|
||||
g:neobundle#types#raw#calc_hash_command neobundle.txt /*g:neobundle#types#raw#calc_hash_command*
|
||||
g:neobundle#types#svn#command_path neobundle.txt /*g:neobundle#types#svn#command_path*
|
||||
g:neosnippet#conceal_char neosnippet.txt /*g:neosnippet#conceal_char*
|
||||
g:neosnippet#data_directory neosnippet.txt /*g:neosnippet#data_directory*
|
||||
g:neosnippet#disable_runtime_snippets neosnippet.txt /*g:neosnippet#disable_runtime_snippets*
|
||||
g:neosnippet#disable_select_mode_mappings neosnippet.txt /*g:neosnippet#disable_select_mode_mappings*
|
||||
g:neosnippet#enable_auto_clear_markers neosnippet.txt /*g:neosnippet#enable_auto_clear_markers*
|
||||
g:neosnippet#enable_complete_done neosnippet.txt /*g:neosnippet#enable_complete_done*
|
||||
g:neosnippet#enable_completed_snippet neosnippet.txt /*g:neosnippet#enable_completed_snippet*
|
||||
g:neosnippet#enable_conceal_markers neosnippet.txt /*g:neosnippet#enable_conceal_markers*
|
||||
g:neosnippet#enable_optional_arguments neosnippet.txt /*g:neosnippet#enable_optional_arguments*
|
||||
g:neosnippet#enable_snipmate_compatibility neosnippet.txt /*g:neosnippet#enable_snipmate_compatibility*
|
||||
g:neosnippet#expand_word_boundary neosnippet.txt /*g:neosnippet#expand_word_boundary*
|
||||
g:neosnippet#scope_aliases neosnippet.txt /*g:neosnippet#scope_aliases*
|
||||
g:neosnippet#snippets_directory neosnippet.txt /*g:neosnippet#snippets_directory*
|
||||
g:vimshell_cat_command vimshell.txt /*g:vimshell_cat_command*
|
||||
g:vimshell_cd_command vimshell.txt /*g:vimshell_cd_command*
|
||||
g:vimshell_disable_escape_highlight vimshell.txt /*g:vimshell_disable_escape_highlight*
|
||||
g:vimshell_environment_term vimshell.txt /*g:vimshell_environment_term*
|
||||
g:vimshell_escape_colors vimshell.txt /*g:vimshell_escape_colors*
|
||||
g:vimshell_ignore_case vimshell.txt /*g:vimshell_ignore_case*
|
||||
g:vimshell_interactive_command_options vimshell.txt /*g:vimshell_interactive_command_options*
|
||||
g:vimshell_interactive_cygwin_commands vimshell.txt /*g:vimshell_interactive_cygwin_commands*
|
||||
g:vimshell_interactive_cygwin_home vimshell.txt /*g:vimshell_interactive_cygwin_home*
|
||||
g:vimshell_interactive_cygwin_path vimshell.txt /*g:vimshell_interactive_cygwin_path*
|
||||
g:vimshell_interactive_encodings vimshell.txt /*g:vimshell_interactive_encodings*
|
||||
g:vimshell_interactive_interpreter_commands vimshell.txt /*g:vimshell_interactive_interpreter_commands*
|
||||
g:vimshell_interactive_monochrome_commands vimshell.txt /*g:vimshell_interactive_monochrome_commands*
|
||||
g:vimshell_interactive_no_echoback_commands vimshell.txt /*g:vimshell_interactive_no_echoback_commands*
|
||||
g:vimshell_interactive_no_save_history_commands vimshell.txt /*g:vimshell_interactive_no_save_history_commands*
|
||||
g:vimshell_interactive_update_time vimshell.txt /*g:vimshell_interactive_update_time*
|
||||
g:vimshell_max_command_history vimshell.txt /*g:vimshell_max_command_history*
|
||||
g:vimshell_max_directory_stack vimshell.txt /*g:vimshell_max_directory_stack*
|
||||
g:vimshell_max_list vimshell.txt /*g:vimshell_max_list*
|
||||
g:vimshell_no_default_keymappings vimshell.txt /*g:vimshell_no_default_keymappings*
|
||||
g:vimshell_no_save_history_commands vimshell.txt /*g:vimshell_no_save_history_commands*
|
||||
g:vimshell_prompt vimshell.txt /*g:vimshell_prompt*
|
||||
g:vimshell_right_prompt vimshell.txt /*g:vimshell_right_prompt*
|
||||
g:vimshell_smart_case vimshell.txt /*g:vimshell_smart_case*
|
||||
g:vimshell_split_command vimshell.txt /*g:vimshell_split_command*
|
||||
g:vimshell_split_height vimshell.txt /*g:vimshell_split_height*
|
||||
g:vimshell_temporary_directory vimshell.txt /*g:vimshell_temporary_directory*
|
||||
g:vimshell_terminal_commands vimshell.txt /*g:vimshell_terminal_commands*
|
||||
g:vimshell_terminal_cursor vimshell.txt /*g:vimshell_terminal_cursor*
|
||||
g:vimshell_use_ckw vimshell.txt /*g:vimshell_use_ckw*
|
||||
g:vimshell_user_prompt vimshell.txt /*g:vimshell_user_prompt*
|
||||
g:vimshell_vimshrc_path vimshell.txt /*g:vimshell_vimshrc_path*
|
||||
i_<Plug>(neosnippet_start_unite_snippet) neosnippet.txt /*i_<Plug>(neosnippet_start_unite_snippet)*
|
||||
i_<Plug>(vimshell_another_delete_backward_char) vimshell.txt /*i_<Plug>(vimshell_another_delete_backward_char)*
|
||||
i_<Plug>(vimshell_clear) vimshell.txt /*i_<Plug>(vimshell_clear)*
|
||||
i_<Plug>(vimshell_command_complete) vimshell.txt /*i_<Plug>(vimshell_command_complete)*
|
||||
i_<Plug>(vimshell_delete_backward_char) vimshell.txt /*i_<Plug>(vimshell_delete_backward_char)*
|
||||
i_<Plug>(vimshell_delete_backward_line) vimshell.txt /*i_<Plug>(vimshell_delete_backward_line)*
|
||||
i_<Plug>(vimshell_delete_backward_word) vimshell.txt /*i_<Plug>(vimshell_delete_backward_word)*
|
||||
i_<Plug>(vimshell_delete_forward_line) vimshell.txt /*i_<Plug>(vimshell_delete_forward_line)*
|
||||
i_<Plug>(vimshell_enter) vimshell.txt /*i_<Plug>(vimshell_enter)*
|
||||
i_<Plug>(vimshell_execute_by_background) vimshell.txt /*i_<Plug>(vimshell_execute_by_background)*
|
||||
i_<Plug>(vimshell_insert_last_word) vimshell.txt /*i_<Plug>(vimshell_insert_last_word)*
|
||||
i_<Plug>(vimshell_int_another_delete_backward_char) vimshell.txt /*i_<Plug>(vimshell_int_another_delete_backward_char)*
|
||||
i_<Plug>(vimshell_int_command_complete) vimshell.txt /*i_<Plug>(vimshell_int_command_complete)*
|
||||
i_<Plug>(vimshell_int_delete_backward_char) vimshell.txt /*i_<Plug>(vimshell_int_delete_backward_char)*
|
||||
i_<Plug>(vimshell_int_delete_backward_line) vimshell.txt /*i_<Plug>(vimshell_int_delete_backward_line)*
|
||||
i_<Plug>(vimshell_int_delete_backward_word) vimshell.txt /*i_<Plug>(vimshell_int_delete_backward_word)*
|
||||
i_<Plug>(vimshell_int_delete_forward_line) vimshell.txt /*i_<Plug>(vimshell_int_delete_forward_line)*
|
||||
i_<Plug>(vimshell_int_execute_line) vimshell.txt /*i_<Plug>(vimshell_int_execute_line)*
|
||||
i_<Plug>(vimshell_int_interrupt) vimshell.txt /*i_<Plug>(vimshell_int_interrupt)*
|
||||
i_<Plug>(vimshell_int_move_head) vimshell.txt /*i_<Plug>(vimshell_int_move_head)*
|
||||
i_<Plug>(vimshell_int_send_input) vimshell.txt /*i_<Plug>(vimshell_int_send_input)*
|
||||
i_<Plug>(vimshell_interrupt) vimshell.txt /*i_<Plug>(vimshell_interrupt)*
|
||||
i_<Plug>(vimshell_move_head) vimshell.txt /*i_<Plug>(vimshell_move_head)*
|
||||
i_<Plug>(vimshell_move_previous_window) vimshell.txt /*i_<Plug>(vimshell_move_previous_window)*
|
||||
i_<Plug>(vimshell_push_current_line) vimshell.txt /*i_<Plug>(vimshell_push_current_line)*
|
||||
i_<Plug>(vimshell_run_help) vimshell.txt /*i_<Plug>(vimshell_run_help)*
|
||||
neobundle neobundle.txt /*neobundle*
|
||||
neobundle#add() neobundle.txt /*neobundle#add()*
|
||||
neobundle#add_meta() neobundle.txt /*neobundle#add_meta()*
|
||||
neobundle#append() neobundle.txt /*neobundle#append()*
|
||||
neobundle#begin() neobundle.txt /*neobundle#begin()*
|
||||
neobundle#bundle() neobundle.txt /*neobundle#bundle()*
|
||||
neobundle#call_hook() neobundle.txt /*neobundle#call_hook()*
|
||||
neobundle#config() neobundle.txt /*neobundle#config()*
|
||||
neobundle#end() neobundle.txt /*neobundle#end()*
|
||||
neobundle#exists_not_installed_bundles() neobundle.txt /*neobundle#exists_not_installed_bundles()*
|
||||
neobundle#get() neobundle.txt /*neobundle#get()*
|
||||
neobundle#get_hooks() neobundle.txt /*neobundle#get_hooks()*
|
||||
neobundle#get_not_installed_bundle_names() neobundle.txt /*neobundle#get_not_installed_bundle_names()*
|
||||
neobundle#has_cache() neobundle.txt /*neobundle#has_cache()*
|
||||
neobundle#hooks neobundle.txt /*neobundle#hooks*
|
||||
neobundle#is_installed() neobundle.txt /*neobundle#is_installed()*
|
||||
neobundle#is_sourced() neobundle.txt /*neobundle#is_sourced()*
|
||||
neobundle#load_cache() neobundle.txt /*neobundle#load_cache()*
|
||||
neobundle#load_toml() neobundle.txt /*neobundle#load_toml()*
|
||||
neobundle#local() neobundle.txt /*neobundle#local()*
|
||||
neobundle#source() neobundle.txt /*neobundle#source()*
|
||||
neobundle#tap() neobundle.txt /*neobundle#tap()*
|
||||
neobundle#tapped neobundle.txt /*neobundle#tapped*
|
||||
neobundle#untap() neobundle.txt /*neobundle#untap()*
|
||||
neobundle-commands neobundle.txt /*neobundle-commands*
|
||||
neobundle-contents neobundle.txt /*neobundle-contents*
|
||||
neobundle-examples neobundle.txt /*neobundle-examples*
|
||||
neobundle-faq neobundle.txt /*neobundle-faq*
|
||||
neobundle-functions neobundle.txt /*neobundle-functions*
|
||||
neobundle-hooks-on_post_source neobundle.txt /*neobundle-hooks-on_post_source*
|
||||
neobundle-hooks-on_source neobundle.txt /*neobundle-hooks-on_source*
|
||||
neobundle-install neobundle.txt /*neobundle-install*
|
||||
neobundle-interface neobundle.txt /*neobundle-interface*
|
||||
neobundle-introduction neobundle.txt /*neobundle-introduction*
|
||||
neobundle-migrate-from-pathogen neobundle.txt /*neobundle-migrate-from-pathogen*
|
||||
neobundle-options neobundle.txt /*neobundle-options*
|
||||
neobundle-options-augroup neobundle.txt /*neobundle-options-augroup*
|
||||
neobundle-options-autoload neobundle.txt /*neobundle-options-autoload*
|
||||
neobundle-options-base neobundle.txt /*neobundle-options-base*
|
||||
neobundle-options-build neobundle.txt /*neobundle-options-build*
|
||||
neobundle-options-build_commands neobundle.txt /*neobundle-options-build_commands*
|
||||
neobundle-options-command_prefix neobundle.txt /*neobundle-options-command_prefix*
|
||||
neobundle-options-commands neobundle.txt /*neobundle-options-commands*
|
||||
neobundle-options-default neobundle.txt /*neobundle-options-default*
|
||||
neobundle-options-depends neobundle.txt /*neobundle-options-depends*
|
||||
neobundle-options-directory neobundle.txt /*neobundle-options-directory*
|
||||
neobundle-options-disabled neobundle.txt /*neobundle-options-disabled*
|
||||
neobundle-options-explorer neobundle.txt /*neobundle-options-explorer*
|
||||
neobundle-options-external_commands neobundle.txt /*neobundle-options-external_commands*
|
||||
neobundle-options-fetch neobundle.txt /*neobundle-options-fetch*
|
||||
neobundle-options-filename_patterns neobundle.txt /*neobundle-options-filename_patterns*
|
||||
neobundle-options-filetypes neobundle.txt /*neobundle-options-filetypes*
|
||||
neobundle-options-focus neobundle.txt /*neobundle-options-focus*
|
||||
neobundle-options-force neobundle.txt /*neobundle-options-force*
|
||||
neobundle-options-frozen neobundle.txt /*neobundle-options-frozen*
|
||||
neobundle-options-functions neobundle.txt /*neobundle-options-functions*
|
||||
neobundle-options-gui neobundle.txt /*neobundle-options-gui*
|
||||
neobundle-options-hooks neobundle.txt /*neobundle-options-hooks*
|
||||
neobundle-options-insert neobundle.txt /*neobundle-options-insert*
|
||||
neobundle-options-install_process_timeout neobundle.txt /*neobundle-options-install_process_timeout*
|
||||
neobundle-options-lazy neobundle.txt /*neobundle-options-lazy*
|
||||
neobundle-options-mappings neobundle.txt /*neobundle-options-mappings*
|
||||
neobundle-options-name neobundle.txt /*neobundle-options-name*
|
||||
neobundle-options-normalized_name neobundle.txt /*neobundle-options-normalized_name*
|
||||
neobundle-options-on_cmd neobundle.txt /*neobundle-options-on_cmd*
|
||||
neobundle-options-on_ft neobundle.txt /*neobundle-options-on_ft*
|
||||
neobundle-options-on_func neobundle.txt /*neobundle-options-on_func*
|
||||
neobundle-options-on_i neobundle.txt /*neobundle-options-on_i*
|
||||
neobundle-options-on_map neobundle.txt /*neobundle-options-on_map*
|
||||
neobundle-options-on_path neobundle.txt /*neobundle-options-on_path*
|
||||
neobundle-options-on_source neobundle.txt /*neobundle-options-on_source*
|
||||
neobundle-options-pre_cmd neobundle.txt /*neobundle-options-pre_cmd*
|
||||
neobundle-options-rtp neobundle.txt /*neobundle-options-rtp*
|
||||
neobundle-options-script_type neobundle.txt /*neobundle-options-script_type*
|
||||
neobundle-options-site neobundle.txt /*neobundle-options-site*
|
||||
neobundle-options-terminal neobundle.txt /*neobundle-options-terminal*
|
||||
neobundle-options-type neobundle.txt /*neobundle-options-type*
|
||||
neobundle-options-type__depth neobundle.txt /*neobundle-options-type__depth*
|
||||
neobundle-options-type__filename neobundle.txt /*neobundle-options-type__filename*
|
||||
neobundle-options-type__protocol neobundle.txt /*neobundle-options-type__protocol*
|
||||
neobundle-options-verbose neobundle.txt /*neobundle-options-verbose*
|
||||
neobundle-options-vim_version neobundle.txt /*neobundle-options-vim_version*
|
||||
neobundle-unite-source-neobundle neobundle.txt /*neobundle-unite-source-neobundle*
|
||||
neobundle-unite-source-neobundle-install neobundle.txt /*neobundle-unite-source-neobundle-install*
|
||||
neobundle-unite-source-neobundle-lazy neobundle.txt /*neobundle-unite-source-neobundle-lazy*
|
||||
neobundle-unite-source-neobundle-log neobundle.txt /*neobundle-unite-source-neobundle-log*
|
||||
neobundle-unite-source-neobundle-search neobundle.txt /*neobundle-unite-source-neobundle-search*
|
||||
neobundle-unite-source-neobundle-update neobundle.txt /*neobundle-unite-source-neobundle-update*
|
||||
neobundle-unite-sources neobundle.txt /*neobundle-unite-sources*
|
||||
neobundle-usage neobundle.txt /*neobundle-usage*
|
||||
neobundle-variables neobundle.txt /*neobundle-variables*
|
||||
neobundle.txt neobundle.txt /*neobundle.txt*
|
||||
neosnippet neosnippet.txt /*neosnippet*
|
||||
neosnippet#anonymous() neosnippet.txt /*neosnippet#anonymous()*
|
||||
neosnippet#complete_done() neosnippet.txt /*neosnippet#complete_done()*
|
||||
neosnippet#expand() neosnippet.txt /*neosnippet#expand()*
|
||||
neosnippet#expandable() neosnippet.txt /*neosnippet#expandable()*
|
||||
neosnippet#expandable_or_jumpable() neosnippet.txt /*neosnippet#expandable_or_jumpable()*
|
||||
neosnippet#get_snippets_directory() neosnippet.txt /*neosnippet#get_snippets_directory()*
|
||||
neosnippet#jumpable() neosnippet.txt /*neosnippet#jumpable()*
|
||||
neosnippet-commands neosnippet.txt /*neosnippet-commands*
|
||||
neosnippet-contents neosnippet.txt /*neosnippet-contents*
|
||||
neosnippet-edit-options-direction neosnippet.txt /*neosnippet-edit-options-direction*
|
||||
neosnippet-edit-options-horizontal neosnippet.txt /*neosnippet-edit-options-horizontal*
|
||||
neosnippet-edit-options-runtime neosnippet.txt /*neosnippet-edit-options-runtime*
|
||||
neosnippet-edit-options-split neosnippet.txt /*neosnippet-edit-options-split*
|
||||
neosnippet-edit-options-vertical neosnippet.txt /*neosnippet-edit-options-vertical*
|
||||
neosnippet-examples neosnippet.txt /*neosnippet-examples*
|
||||
neosnippet-faq neosnippet.txt /*neosnippet-faq*
|
||||
neosnippet-functions neosnippet.txt /*neosnippet-functions*
|
||||
neosnippet-install neosnippet.txt /*neosnippet-install*
|
||||
neosnippet-interface neosnippet.txt /*neosnippet-interface*
|
||||
neosnippet-introduction neosnippet.txt /*neosnippet-introduction*
|
||||
neosnippet-key-mappings neosnippet.txt /*neosnippet-key-mappings*
|
||||
neosnippet-snippet-syntax neosnippet.txt /*neosnippet-snippet-syntax*
|
||||
neosnippet-unite-action-neosnippet neosnippet.txt /*neosnippet-unite-action-neosnippet*
|
||||
neosnippet-unite-source-neosnippet neosnippet.txt /*neosnippet-unite-source-neosnippet*
|
||||
neosnippet-unite-source-neosnippet/runtime neosnippet.txt /*neosnippet-unite-source-neosnippet\/runtime*
|
||||
neosnippet-unite-source-neosnippet/user neosnippet.txt /*neosnippet-unite-source-neosnippet\/user*
|
||||
neosnippet-unite-sources neosnippet.txt /*neosnippet-unite-sources*
|
||||
neosnippet-variables neosnippet.txt /*neosnippet-variables*
|
||||
neosnippet.txt neosnippet.txt /*neosnippet.txt*
|
||||
unite-action-neobundle-lazy neobundle.txt /*unite-action-neobundle-lazy*
|
||||
unite-action-neobundle-search neobundle.txt /*unite-action-neobundle-search*
|
||||
unite-kind-neobundle neobundle.txt /*unite-kind-neobundle*
|
||||
v_<Plug>(vimshell_select_next_prompt) vimshell.txt /*v_<Plug>(vimshell_select_next_prompt)*
|
||||
v_<Plug>(vimshell_select_previous_prompt) vimshell.txt /*v_<Plug>(vimshell_select_previous_prompt)*
|
||||
vimshell#hook#add() vimshell.txt /*vimshell#hook#add()*
|
||||
vimshell#hook#get() vimshell.txt /*vimshell#hook#get()*
|
||||
vimshell#hook#remove() vimshell.txt /*vimshell#hook#remove()*
|
||||
vimshell#hook#set() vimshell.txt /*vimshell#hook#set()*
|
||||
vimshell-alter-command vimshell.txt /*vimshell-alter-command*
|
||||
vimshell-buffer-key-mappings vimshell.txt /*vimshell-buffer-key-mappings*
|
||||
vimshell-changelog vimshell.txt /*vimshell-changelog*
|
||||
vimshell-commands vimshell.txt /*vimshell-commands*
|
||||
vimshell-contents vimshell.txt /*vimshell-contents*
|
||||
vimshell-create-plugin vimshell.txt /*vimshell-create-plugin*
|
||||
vimshell-examples vimshell.txt /*vimshell-examples*
|
||||
vimshell-execute-options vimshell.txt /*vimshell-execute-options*
|
||||
vimshell-execute-options-encoding vimshell.txt /*vimshell-execute-options-encoding*
|
||||
vimshell-functions vimshell.txt /*vimshell-functions*
|
||||
vimshell-hook vimshell.txt /*vimshell-hook*
|
||||
vimshell-hook-chpwd vimshell.txt /*vimshell-hook-chpwd*
|
||||
vimshell-hook-emptycmd vimshell.txt /*vimshell-hook-emptycmd*
|
||||
vimshell-hook-notfound vimshell.txt /*vimshell-hook-notfound*
|
||||
vimshell-hook-postexec vimshell.txt /*vimshell-hook-postexec*
|
||||
vimshell-hook-postinput vimshell.txt /*vimshell-hook-postinput*
|
||||
vimshell-hook-preexec vimshell.txt /*vimshell-hook-preexec*
|
||||
vimshell-hook-preinput vimshell.txt /*vimshell-hook-preinput*
|
||||
vimshell-hook-preparse vimshell.txt /*vimshell-hook-preparse*
|
||||
vimshell-hook-preprompt vimshell.txt /*vimshell-hook-preprompt*
|
||||
vimshell-install vimshell.txt /*vimshell-install*
|
||||
vimshell-interactive-buffer-key-mappings vimshell.txt /*vimshell-interactive-buffer-key-mappings*
|
||||
vimshell-interface vimshell.txt /*vimshell-interface*
|
||||
vimshell-internal-bg vimshell.txt /*vimshell-internal-bg*
|
||||
vimshell-internal-cd vimshell.txt /*vimshell-internal-cd*
|
||||
vimshell-internal-clear vimshell.txt /*vimshell-internal-clear*
|
||||
vimshell-internal-commands vimshell.txt /*vimshell-internal-commands*
|
||||
vimshell-internal-dirs vimshell.txt /*vimshell-internal-dirs*
|
||||
vimshell-internal-echo vimshell.txt /*vimshell-internal-echo*
|
||||
vimshell-internal-eval vimshell.txt /*vimshell-internal-eval*
|
||||
vimshell-internal-exe vimshell.txt /*vimshell-internal-exe*
|
||||
vimshell-internal-exit vimshell.txt /*vimshell-internal-exit*
|
||||
vimshell-internal-galias vimshell.txt /*vimshell-internal-galias*
|
||||
vimshell-internal-gcd vimshell.txt /*vimshell-internal-gcd*
|
||||
vimshell-internal-gendoc vimshell.txt /*vimshell-internal-gendoc*
|
||||
vimshell-internal-gexe vimshell.txt /*vimshell-internal-gexe*
|
||||
vimshell-internal-h vimshell.txt /*vimshell-internal-h*
|
||||
vimshell-internal-histdel vimshell.txt /*vimshell-internal-histdel*
|
||||
vimshell-internal-history vimshell.txt /*vimshell-internal-history*
|
||||
vimshell-internal-iexe vimshell.txt /*vimshell-internal-iexe*
|
||||
vimshell-internal-less vimshell.txt /*vimshell-internal-less*
|
||||
vimshell-internal-ls vimshell.txt /*vimshell-internal-ls*
|
||||
vimshell-internal-mkcd vimshell.txt /*vimshell-internal-mkcd*
|
||||
vimshell-internal-nop vimshell.txt /*vimshell-internal-nop*
|
||||
vimshell-internal-open vimshell.txt /*vimshell-internal-open*
|
||||
vimshell-internal-popd vimshell.txt /*vimshell-internal-popd*
|
||||
vimshell-internal-pwd vimshell.txt /*vimshell-internal-pwd*
|
||||
vimshell-internal-repeat vimshell.txt /*vimshell-internal-repeat*
|
||||
vimshell-internal-shell vimshell.txt /*vimshell-internal-shell*
|
||||
vimshell-internal-source vimshell.txt /*vimshell-internal-source*
|
||||
vimshell-internal-texe vimshell.txt /*vimshell-internal-texe*
|
||||
vimshell-internal-time vimshell.txt /*vimshell-internal-time*
|
||||
vimshell-internal-vi vimshell.txt /*vimshell-internal-vi*
|
||||
vimshell-internal-view vimshell.txt /*vimshell-internal-view*
|
||||
vimshell-internal-vim vimshell.txt /*vimshell-internal-vim*
|
||||
vimshell-internal-vimdiff vimshell.txt /*vimshell-internal-vimdiff*
|
||||
vimshell-internal-vimsh vimshell.txt /*vimshell-internal-vimsh*
|
||||
vimshell-internal-whereis vimshell.txt /*vimshell-internal-whereis*
|
||||
vimshell-internal-which vimshell.txt /*vimshell-internal-which*
|
||||
vimshell-introduction vimshell.txt /*vimshell-introduction*
|
||||
vimshell-key-mappings vimshell.txt /*vimshell-key-mappings*
|
||||
vimshell-special-alias vimshell.txt /*vimshell-special-alias*
|
||||
vimshell-special-commands vimshell.txt /*vimshell-special-commands*
|
||||
vimshell-special-let vimshell.txt /*vimshell-special-let*
|
||||
vimshell-special-sexe vimshell.txt /*vimshell-special-sexe*
|
||||
vimshell-special-vexe vimshell.txt /*vimshell-special-vexe*
|
||||
vimshell-tips vimshell.txt /*vimshell-tips*
|
||||
vimshell-tips-auto_cd vimshell.txt /*vimshell-tips-auto_cd*
|
||||
vimshell-tips-backquote vimshell.txt /*vimshell-tips-backquote*
|
||||
vimshell-tips-block vimshell.txt /*vimshell-tips-block*
|
||||
vimshell-tips-directory-stack vimshell.txt /*vimshell-tips-directory-stack*
|
||||
vimshell-tips-fakecygpty vimshell.txt /*vimshell-tips-fakecygpty*
|
||||
vimshell-tips-wildcard vimshell.txt /*vimshell-tips-wildcard*
|
||||
vimshell-unite-action-vimshell-history vimshell.txt /*vimshell-unite-action-vimshell-history*
|
||||
vimshell-unite-source-vimshell-history vimshell.txt /*vimshell-unite-source-vimshell-history*
|
||||
vimshell-unite-sources vimshell.txt /*vimshell-unite-sources*
|
||||
vimshell-usage vimshell.txt /*vimshell-usage*
|
||||
vimshell-variables vimshell.txt /*vimshell-variables*
|
||||
vimshell.txt vimshell.txt /*vimshell.txt*
|
||||
x_<Plug>(neosnippet_expand_target) neosnippet.txt /*x_<Plug>(neosnippet_expand_target)*
|
||||
x_<Plug>(neosnippet_register_oneshot_snippet) neosnippet.txt /*x_<Plug>(neosnippet_register_oneshot_snippet)*
|
||||
190
vim/.vim/bundle/.neobundle/doc/tags-ja
Normal file
190
vim/.vim/bundle/.neobundle/doc/tags-ja
Normal file
@@ -0,0 +1,190 @@
|
||||
!_TAG_FILE_ENCODING utf-8 //
|
||||
:VimShell vimshell.jax /*:VimShell*
|
||||
:VimShellCreate vimshell.jax /*:VimShellCreate*
|
||||
:VimShellExecute vimshell.jax /*:VimShellExecute*
|
||||
:VimShellInteractive vimshell.jax /*:VimShellInteractive*
|
||||
:VimShellPop vimshell.jax /*:VimShellPop*
|
||||
:VimShellSendBuffer vimshell.jax /*:VimShellSendBuffer*
|
||||
:VimShellSendString vimshell.jax /*:VimShellSendString*
|
||||
:VimShellTab vimshell.jax /*:VimShellTab*
|
||||
:VimShellTerminal vimshell.jax /*:VimShellTerminal*
|
||||
<Plug>(vimshell_append_end) vimshell.jax /*<Plug>(vimshell_append_end)*
|
||||
<Plug>(vimshell_append_enter) vimshell.jax /*<Plug>(vimshell_append_enter)*
|
||||
<Plug>(vimshell_change_line) vimshell.jax /*<Plug>(vimshell_change_line)*
|
||||
<Plug>(vimshell_clear) vimshell.jax /*<Plug>(vimshell_clear)*
|
||||
<Plug>(vimshell_create) vimshell.jax /*<Plug>(vimshell_create)*
|
||||
<Plug>(vimshell_delete_line) vimshell.jax /*<Plug>(vimshell_delete_line)*
|
||||
<Plug>(vimshell_delete_previous_output) vimshell.jax /*<Plug>(vimshell_delete_previous_output)*
|
||||
<Plug>(vimshell_enter) vimshell.jax /*<Plug>(vimshell_enter)*
|
||||
<Plug>(vimshell_execute_by_background) vimshell.jax /*<Plug>(vimshell_execute_by_background)*
|
||||
<Plug>(vimshell_exit) vimshell.jax /*<Plug>(vimshell_exit)*
|
||||
<Plug>(vimshell_hangup) vimshell.jax /*<Plug>(vimshell_hangup)*
|
||||
<Plug>(vimshell_hide) vimshell.jax /*<Plug>(vimshell_hide)*
|
||||
<Plug>(vimshell_insert_enter) vimshell.jax /*<Plug>(vimshell_insert_enter)*
|
||||
<Plug>(vimshell_insert_head) vimshell.jax /*<Plug>(vimshell_insert_head)*
|
||||
<Plug>(vimshell_int_append_end) vimshell.jax /*<Plug>(vimshell_int_append_end)*
|
||||
<Plug>(vimshell_int_append_enter) vimshell.jax /*<Plug>(vimshell_int_append_enter)*
|
||||
<Plug>(vimshell_int_change_line) vimshell.jax /*<Plug>(vimshell_int_change_line)*
|
||||
<Plug>(vimshell_int_clear) vimshell.jax /*<Plug>(vimshell_int_clear)*
|
||||
<Plug>(vimshell_int_delete_line) vimshell.jax /*<Plug>(vimshell_int_delete_line)*
|
||||
<Plug>(vimshell_int_execute_line) vimshell.jax /*<Plug>(vimshell_int_execute_line)*
|
||||
<Plug>(vimshell_int_exit) vimshell.jax /*<Plug>(vimshell_int_exit)*
|
||||
<Plug>(vimshell_int_hangup) vimshell.jax /*<Plug>(vimshell_int_hangup)*
|
||||
<Plug>(vimshell_int_insert_enter) vimshell.jax /*<Plug>(vimshell_int_insert_enter)*
|
||||
<Plug>(vimshell_int_insert_head) vimshell.jax /*<Plug>(vimshell_int_insert_head)*
|
||||
<Plug>(vimshell_int_next_prompt) vimshell.jax /*<Plug>(vimshell_int_next_prompt)*
|
||||
<Plug>(vimshell_int_paste_prompt) vimshell.jax /*<Plug>(vimshell_int_paste_prompt)*
|
||||
<Plug>(vimshell_int_previous_prompt) vimshell.jax /*<Plug>(vimshell_int_previous_prompt)*
|
||||
<Plug>(vimshell_int_restart_command) vimshell.jax /*<Plug>(vimshell_int_restart_command)*
|
||||
<Plug>(vimshell_move_end_argument) vimshell.jax /*<Plug>(vimshell_move_end_argument)*
|
||||
<Plug>(vimshell_move_head) vimshell.jax /*<Plug>(vimshell_move_head)*
|
||||
<Plug>(vimshell_next_prompt) vimshell.jax /*<Plug>(vimshell_next_prompt)*
|
||||
<Plug>(vimshell_paste_prompt) vimshell.jax /*<Plug>(vimshell_paste_prompt)*
|
||||
<Plug>(vimshell_previous_prompt) vimshell.jax /*<Plug>(vimshell_previous_prompt)*
|
||||
<Plug>(vimshell_split_create) vimshell.jax /*<Plug>(vimshell_split_create)*
|
||||
<Plug>(vimshell_split_switch) vimshell.jax /*<Plug>(vimshell_split_switch)*
|
||||
<Plug>(vimshell_switch) vimshell.jax /*<Plug>(vimshell_switch)*
|
||||
g:vimshell_cat_command vimshell.jax /*g:vimshell_cat_command*
|
||||
g:vimshell_cd_command vimshell.jax /*g:vimshell_cd_command*
|
||||
g:vimshell_disable_escape_highlight vimshell.jax /*g:vimshell_disable_escape_highlight*
|
||||
g:vimshell_environment_term vimshell.jax /*g:vimshell_environment_term*
|
||||
g:vimshell_escape_colors vimshell.jax /*g:vimshell_escape_colors*
|
||||
g:vimshell_ignore_case vimshell.jax /*g:vimshell_ignore_case*
|
||||
g:vimshell_interactive_command_options vimshell.jax /*g:vimshell_interactive_command_options*
|
||||
g:vimshell_interactive_cygwin_commands vimshell.jax /*g:vimshell_interactive_cygwin_commands*
|
||||
g:vimshell_interactive_cygwin_home vimshell.jax /*g:vimshell_interactive_cygwin_home*
|
||||
g:vimshell_interactive_cygwin_path vimshell.jax /*g:vimshell_interactive_cygwin_path*
|
||||
g:vimshell_interactive_encodings vimshell.jax /*g:vimshell_interactive_encodings*
|
||||
g:vimshell_interactive_interpreter_commands vimshell.jax /*g:vimshell_interactive_interpreter_commands*
|
||||
g:vimshell_interactive_monochrome_commands vimshell.jax /*g:vimshell_interactive_monochrome_commands*
|
||||
g:vimshell_interactive_no_echoback_commands vimshell.jax /*g:vimshell_interactive_no_echoback_commands*
|
||||
g:vimshell_interactive_no_save_history_commands vimshell.jax /*g:vimshell_interactive_no_save_history_commands*
|
||||
g:vimshell_interactive_update_time vimshell.jax /*g:vimshell_interactive_update_time*
|
||||
g:vimshell_max_command_history vimshell.jax /*g:vimshell_max_command_history*
|
||||
g:vimshell_max_directory_stack vimshell.jax /*g:vimshell_max_directory_stack*
|
||||
g:vimshell_max_list vimshell.jax /*g:vimshell_max_list*
|
||||
g:vimshell_no_default_keymappings vimshell.jax /*g:vimshell_no_default_keymappings*
|
||||
g:vimshell_no_save_history_commands vimshell.jax /*g:vimshell_no_save_history_commands*
|
||||
g:vimshell_prompt vimshell.jax /*g:vimshell_prompt*
|
||||
g:vimshell_right_prompt vimshell.jax /*g:vimshell_right_prompt*
|
||||
g:vimshell_smart_case vimshell.jax /*g:vimshell_smart_case*
|
||||
g:vimshell_split_command vimshell.jax /*g:vimshell_split_command*
|
||||
g:vimshell_split_height vimshell.jax /*g:vimshell_split_height*
|
||||
g:vimshell_temporary_directory vimshell.jax /*g:vimshell_temporary_directory*
|
||||
g:vimshell_terminal_commands vimshell.jax /*g:vimshell_terminal_commands*
|
||||
g:vimshell_terminal_cursor vimshell.jax /*g:vimshell_terminal_cursor*
|
||||
g:vimshell_use_terminal_command vimshell.jax /*g:vimshell_use_terminal_command*
|
||||
g:vimshell_user_prompt vimshell.jax /*g:vimshell_user_prompt*
|
||||
g:vimshell_vimshrc_path vimshell.jax /*g:vimshell_vimshrc_path*
|
||||
i_<Plug>(vimshell_another_delete_backward_char) vimshell.jax /*i_<Plug>(vimshell_another_delete_backward_char)*
|
||||
i_<Plug>(vimshell_clear) vimshell.jax /*i_<Plug>(vimshell_clear)*
|
||||
i_<Plug>(vimshell_command_complete) vimshell.jax /*i_<Plug>(vimshell_command_complete)*
|
||||
i_<Plug>(vimshell_delete_backward_char) vimshell.jax /*i_<Plug>(vimshell_delete_backward_char)*
|
||||
i_<Plug>(vimshell_delete_backward_line) vimshell.jax /*i_<Plug>(vimshell_delete_backward_line)*
|
||||
i_<Plug>(vimshell_delete_backward_word) vimshell.jax /*i_<Plug>(vimshell_delete_backward_word)*
|
||||
i_<Plug>(vimshell_delete_forward_line) vimshell.jax /*i_<Plug>(vimshell_delete_forward_line)*
|
||||
i_<Plug>(vimshell_enter) vimshell.jax /*i_<Plug>(vimshell_enter)*
|
||||
i_<Plug>(vimshell_execute_by_background) vimshell.jax /*i_<Plug>(vimshell_execute_by_background)*
|
||||
i_<Plug>(vimshell_insert_last_word) vimshell.jax /*i_<Plug>(vimshell_insert_last_word)*
|
||||
i_<Plug>(vimshell_int_another_delete_backward_char) vimshell.jax /*i_<Plug>(vimshell_int_another_delete_backward_char)*
|
||||
i_<Plug>(vimshell_int_command_complete) vimshell.jax /*i_<Plug>(vimshell_int_command_complete)*
|
||||
i_<Plug>(vimshell_int_delete_backward_char) vimshell.jax /*i_<Plug>(vimshell_int_delete_backward_char)*
|
||||
i_<Plug>(vimshell_int_delete_backward_line) vimshell.jax /*i_<Plug>(vimshell_int_delete_backward_line)*
|
||||
i_<Plug>(vimshell_int_delete_backward_word) vimshell.jax /*i_<Plug>(vimshell_int_delete_backward_word)*
|
||||
i_<Plug>(vimshell_int_delete_forward_line) vimshell.jax /*i_<Plug>(vimshell_int_delete_forward_line)*
|
||||
i_<Plug>(vimshell_int_execute_line) vimshell.jax /*i_<Plug>(vimshell_int_execute_line)*
|
||||
i_<Plug>(vimshell_int_interrupt) vimshell.jax /*i_<Plug>(vimshell_int_interrupt)*
|
||||
i_<Plug>(vimshell_int_move_head) vimshell.jax /*i_<Plug>(vimshell_int_move_head)*
|
||||
i_<Plug>(vimshell_int_send_input) vimshell.jax /*i_<Plug>(vimshell_int_send_input)*
|
||||
i_<Plug>(vimshell_interrupt) vimshell.jax /*i_<Plug>(vimshell_interrupt)*
|
||||
i_<Plug>(vimshell_move_head) vimshell.jax /*i_<Plug>(vimshell_move_head)*
|
||||
i_<Plug>(vimshell_move_previous_window) vimshell.jax /*i_<Plug>(vimshell_move_previous_window)*
|
||||
i_<Plug>(vimshell_push_current_line) vimshell.jax /*i_<Plug>(vimshell_push_current_line)*
|
||||
i_<Plug>(vimshell_run_help) vimshell.jax /*i_<Plug>(vimshell_run_help)*
|
||||
v_<Plug>(vimshell_select_next_prompt) vimshell.jax /*v_<Plug>(vimshell_select_next_prompt)*
|
||||
v_<Plug>(vimshell_select_previous_prompt) vimshell.jax /*v_<Plug>(vimshell_select_previous_prompt)*
|
||||
vimshell#hook#add() vimshell.jax /*vimshell#hook#add()*
|
||||
vimshell#hook#get() vimshell.jax /*vimshell#hook#get()*
|
||||
vimshell#hook#remove() vimshell.jax /*vimshell#hook#remove()*
|
||||
vimshell#hook#set() vimshell.jax /*vimshell#hook#set()*
|
||||
vimshell-alter-command vimshell.jax /*vimshell-alter-command*
|
||||
vimshell-buffer-key-mappings vimshell.jax /*vimshell-buffer-key-mappings*
|
||||
vimshell-changelog vimshell.jax /*vimshell-changelog*
|
||||
vimshell-commands vimshell.jax /*vimshell-commands*
|
||||
vimshell-contents vimshell.jax /*vimshell-contents*
|
||||
vimshell-create-plugin vimshell.jax /*vimshell-create-plugin*
|
||||
vimshell-examples vimshell.jax /*vimshell-examples*
|
||||
vimshell-execute-options vimshell.jax /*vimshell-execute-options*
|
||||
vimshell-execute-options-encoding vimshell.jax /*vimshell-execute-options-encoding*
|
||||
vimshell-functions vimshell.jax /*vimshell-functions*
|
||||
vimshell-hook vimshell.jax /*vimshell-hook*
|
||||
vimshell-hook-chpwd vimshell.jax /*vimshell-hook-chpwd*
|
||||
vimshell-hook-emptycmd vimshell.jax /*vimshell-hook-emptycmd*
|
||||
vimshell-hook-notfound vimshell.jax /*vimshell-hook-notfound*
|
||||
vimshell-hook-postexec vimshell.jax /*vimshell-hook-postexec*
|
||||
vimshell-hook-postinput vimshell.jax /*vimshell-hook-postinput*
|
||||
vimshell-hook-preexec vimshell.jax /*vimshell-hook-preexec*
|
||||
vimshell-hook-preinput vimshell.jax /*vimshell-hook-preinput*
|
||||
vimshell-hook-preparse vimshell.jax /*vimshell-hook-preparse*
|
||||
vimshell-hook-preprompt vimshell.jax /*vimshell-hook-preprompt*
|
||||
vimshell-install vimshell.jax /*vimshell-install*
|
||||
vimshell-interactive-buffer-key-mappings vimshell.jax /*vimshell-interactive-buffer-key-mappings*
|
||||
vimshell-interface vimshell.jax /*vimshell-interface*
|
||||
vimshell-internal-bg vimshell.jax /*vimshell-internal-bg*
|
||||
vimshell-internal-cd vimshell.jax /*vimshell-internal-cd*
|
||||
vimshell-internal-clear vimshell.jax /*vimshell-internal-clear*
|
||||
vimshell-internal-commands vimshell.jax /*vimshell-internal-commands*
|
||||
vimshell-internal-dirs vimshell.jax /*vimshell-internal-dirs*
|
||||
vimshell-internal-echo vimshell.jax /*vimshell-internal-echo*
|
||||
vimshell-internal-eval vimshell.jax /*vimshell-internal-eval*
|
||||
vimshell-internal-exe vimshell.jax /*vimshell-internal-exe*
|
||||
vimshell-internal-exit vimshell.jax /*vimshell-internal-exit*
|
||||
vimshell-internal-galias vimshell.jax /*vimshell-internal-galias*
|
||||
vimshell-internal-gcd vimshell.jax /*vimshell-internal-gcd*
|
||||
vimshell-internal-gendoc vimshell.jax /*vimshell-internal-gendoc*
|
||||
vimshell-internal-gexe vimshell.jax /*vimshell-internal-gexe*
|
||||
vimshell-internal-h vimshell.jax /*vimshell-internal-h*
|
||||
vimshell-internal-histdel vimshell.jax /*vimshell-internal-histdel*
|
||||
vimshell-internal-history vimshell.jax /*vimshell-internal-history*
|
||||
vimshell-internal-iexe vimshell.jax /*vimshell-internal-iexe*
|
||||
vimshell-internal-less vimshell.jax /*vimshell-internal-less*
|
||||
vimshell-internal-ls vimshell.jax /*vimshell-internal-ls*
|
||||
vimshell-internal-mkcd vimshell.jax /*vimshell-internal-mkcd*
|
||||
vimshell-internal-nop vimshell.jax /*vimshell-internal-nop*
|
||||
vimshell-internal-open vimshell.jax /*vimshell-internal-open*
|
||||
vimshell-internal-popd vimshell.jax /*vimshell-internal-popd*
|
||||
vimshell-internal-pwd vimshell.jax /*vimshell-internal-pwd*
|
||||
vimshell-internal-repeat vimshell.jax /*vimshell-internal-repeat*
|
||||
vimshell-internal-shell vimshell.jax /*vimshell-internal-shell*
|
||||
vimshell-internal-source vimshell.jax /*vimshell-internal-source*
|
||||
vimshell-internal-texe vimshell.jax /*vimshell-internal-texe*
|
||||
vimshell-internal-time vimshell.jax /*vimshell-internal-time*
|
||||
vimshell-internal-vi vimshell.jax /*vimshell-internal-vi*
|
||||
vimshell-internal-view vimshell.jax /*vimshell-internal-view*
|
||||
vimshell-internal-vim vimshell.jax /*vimshell-internal-vim*
|
||||
vimshell-internal-vimdiff vimshell.jax /*vimshell-internal-vimdiff*
|
||||
vimshell-internal-vimsh vimshell.jax /*vimshell-internal-vimsh*
|
||||
vimshell-internal-whereis vimshell.jax /*vimshell-internal-whereis*
|
||||
vimshell-internal-which vimshell.jax /*vimshell-internal-which*
|
||||
vimshell-introduction vimshell.jax /*vimshell-introduction*
|
||||
vimshell-key-mappings vimshell.jax /*vimshell-key-mappings*
|
||||
vimshell-special-alias vimshell.jax /*vimshell-special-alias*
|
||||
vimshell-special-commands vimshell.jax /*vimshell-special-commands*
|
||||
vimshell-special-let vimshell.jax /*vimshell-special-let*
|
||||
vimshell-special-sexe vimshell.jax /*vimshell-special-sexe*
|
||||
vimshell-special-vexe vimshell.jax /*vimshell-special-vexe*
|
||||
vimshell-tips vimshell.jax /*vimshell-tips*
|
||||
vimshell-tips-auto_cd vimshell.jax /*vimshell-tips-auto_cd*
|
||||
vimshell-tips-backquote vimshell.jax /*vimshell-tips-backquote*
|
||||
vimshell-tips-block vimshell.jax /*vimshell-tips-block*
|
||||
vimshell-tips-directory-stack vimshell.jax /*vimshell-tips-directory-stack*
|
||||
vimshell-tips-fakecygpty vimshell.jax /*vimshell-tips-fakecygpty*
|
||||
vimshell-tips-japanese vimshell.jax /*vimshell-tips-japanese*
|
||||
vimshell-tips-sudo vimshell.jax /*vimshell-tips-sudo*
|
||||
vimshell-tips-wildcard vimshell.jax /*vimshell-tips-wildcard*
|
||||
vimshell-unite-action-vimshell-history vimshell.jax /*vimshell-unite-action-vimshell-history*
|
||||
vimshell-unite-source-vimshell-history vimshell.jax /*vimshell-unite-source-vimshell-history*
|
||||
vimshell-unite-sources vimshell.jax /*vimshell-unite-sources*
|
||||
vimshell-usage vimshell.jax /*vimshell-usage*
|
||||
vimshell-variables vimshell.jax /*vimshell-variables*
|
||||
vimshell.txt vimshell.jax /*vimshell.txt*
|
||||
1270
vim/.vim/bundle/.neobundle/doc/vimshell.jax
Normal file
1270
vim/.vim/bundle/.neobundle/doc/vimshell.jax
Normal file
@@ -0,0 +1,1270 @@
|
||||
*vimshell.txt* Vim Scriptで実装された強力なシェル
|
||||
|
||||
Version: 9.0
|
||||
Author : Shougo <Shougo.Matsu@gmail.com>
|
||||
License: MIT license {{{
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
}}}
|
||||
|
||||
CONTENTS *vimshell-contents*
|
||||
|
||||
Introduction |vimshell-introduction|
|
||||
Install |vimshell-install|
|
||||
Interface |vimshell-interface|
|
||||
Commands |vimshell-commands|
|
||||
Variables |vimshell-variables|
|
||||
Functions |vimshell-functions|
|
||||
Key mappings |vimshell-key-mappings|
|
||||
Vimshell buffer key mappings |vimshell-buffer-key-mappings|
|
||||
Interactive buffer key mappings |vimshell-interactive-buffer-key-mappings|
|
||||
Examples |vimshell-examples|
|
||||
Internal Commands |vimshell-internal-commands|
|
||||
Special Commands |vimshell-special-commands|
|
||||
Alter Command |vimshell-alter-command|
|
||||
Hook |vimshell-hook|
|
||||
Tips |vimshell-tips|
|
||||
Unite sources |vimshell-unite-sources|
|
||||
Create plugin |vimshell-create-plugin|
|
||||
Changelog |vimshell-changelog|
|
||||
|
||||
==============================================================================
|
||||
INTRODUCTION *vimshell-introduction*
|
||||
|
||||
vimshellは外部のシェルを使わず、100% Vim Scriptによって実装された究極のシェルで
|
||||
ある。 ただしeshellとは異なり、まだまだ未完成である。 一番の特徴としては、Vimの
|
||||
プラグインと連携ができることだ。特にWindowsはシェルが貧弱なのだが、vimshellは
|
||||
Windowsでも動作するので安心である。ただしWindows上では一部の機能が制限されるの
|
||||
で注意しなければならない。 加えて、他のシェルの便利な機能を多数取り込んでいる。
|
||||
設定して当たり前の機能は標準的に使えるため、zshと比べて設定の手間も少ない。
|
||||
|
||||
ちなみに、使いやすいシェルを目指しているため、変数の規則などが普通のシェルと
|
||||
異なる。
|
||||
|
||||
==============================================================================
|
||||
USAGE *vimshell-usage*
|
||||
|
||||
vimshellを起動するには、|:VimShell|コマンドを実行する。 これが面倒なら、便利な
|
||||
キーマッピングも定義されているので使用すると良い。 一部の相違点を除けば、
|
||||
vimshellは他のシェルと同じように動作する。 よって、すぐに使い始めることができる
|
||||
。 ただし、vimshellは\をエスケープシーケンスとして認識する。 たとえWindows環境
|
||||
であってもパスは/を用いなければならない。
|
||||
|
||||
vimshellは初期化ファイルとして、.vimshrcを読み込む。
|
||||
aliasの設定はそこで行っておくと便利である。
|
||||
|
||||
Note: vimshellとbash, zshは全く別のシェルであり、互換性はない。よって、vimshell
|
||||
は.bashrcや.zshrcを読み込むことはない。環境変数の設定だけは、
|
||||
|vimshell-internal-source|コマンドにより引き継ぐことができる。
|
||||
|
||||
==============================================================================
|
||||
INSTALL *vimshell-install*
|
||||
|
||||
http://github.com/Shougo/vimshell/tree/master より、配布ファイルをそのフォルダ
|
||||
ごとVimの'runtimepath'にコピーする。
|
||||
|
||||
さらに、vimshellを使用するにはvimprocが必要である。
|
||||
|
||||
私がvimshell用に修正したvimprocがあるので、それをリポジトリから取ってきくる。
|
||||
http://github.com/Shougo/vimproc
|
||||
そしてproc.soをmakeする。
|
||||
|
||||
Make方法
|
||||
|
||||
* Mingw: >
|
||||
$ make -f make_mingw.mak
|
||||
|
||||
* Mac OS X: >
|
||||
$ make -f make_mac.mak
|
||||
|
||||
* Linux BSD: >
|
||||
$ make -f make_gcc.mak
|
||||
|
||||
* Visual Studio: >
|
||||
$ make -f make_msvc.mak
|
||||
|
||||
* Cygwin: >
|
||||
$ make -f make_cygwin.mak
|
||||
|
||||
コンパイルが通ったら、autoloadにあるvimproc.vim, vimproc/parser.vimとproc.soを
|
||||
.vimのautoloadディレクトリにコピーする。Cygwinでコンパイルしたproc.dllは
|
||||
Cygwin上のVim専用である。WindowsのVimでは使用することができない。
|
||||
|
||||
==============================================================================
|
||||
INTERFACE *vimshell-interface*
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
COMMANDS *vimshell-commands*
|
||||
|
||||
:VimShell {path} *:VimShell*
|
||||
{path}をカレントディレクトリとして、vimshellを起動する。
|
||||
他のvimshellが起動している場合、そのvimshellにスイッ
|
||||
チし、カレントディレクトリを{path}に変更する。{path}を
|
||||
省略した場合、vimshellのカレントディレクトリは変更され
|
||||
ない。
|
||||
|
||||
:VimShellCreate {path} *:VimShellCreate*
|
||||
|:VimShell|と同じだが、他のvimshellが起動している
|
||||
場合でも、新しいvimshellバッファを作成する。
|
||||
|
||||
:VimShellTab {path} *:VimShellTab*
|
||||
|:VimShellCreate|と同じだが、新しいタブを生成する。
|
||||
|
||||
:VimShellPop {path} *:VimShellPop*
|
||||
|:VimShell|と同じだが、こちらは小さいウインドウを
|
||||
ポップアップする。ちょっとだけvimshellの機能を使
|
||||
いたいときに便利である。ウインドウを分割する高さは
|
||||
|g:vimshell_split_height|で決定される。
|
||||
現在vimshellバッファに居るときは、vimshellバッファを閉
|
||||
じる。
|
||||
|
||||
:VimShellExecute {command} *:VimShellExecute*
|
||||
vimshellを起動せずに、{command}で指定された実行
|
||||
ファイルをバックグラウンドで起動する。vimshellを
|
||||
GNU screenのように使える。
|
||||
|
||||
:VimShellInteractive [{command}] *:VimShellInteractive*
|
||||
vimshellを起動せずに、{command}で指定された
|
||||
インタプリタを起動する。EmacsのM-x
|
||||
{interpreter-name}のように使える。{command}
|
||||
を省略すると、
|
||||
|g:vimshell_interactive_interpreter_commands|の値が
|
||||
使われる。
|
||||
|
||||
:VimShellTerminal {command} *:VimShellTerminal*
|
||||
vimshellを起動せずに、{command}で指定された端末プログラ
|
||||
ムを起動する。Emacsのansi-termのように使用できる。ただ
|
||||
しまだ未完成である。
|
||||
|
||||
:VimShellSendString {string} *:VimShellSendString*
|
||||
vimshell, iexe, texeの裏ウインドウのインタプリタに選
|
||||
択文字列を送信する。まるで|quickrun|を使っているかの
|
||||
ようにインタプリタを操作できる。
|
||||
|
||||
:VimShellSendBuffer {bufname} *:VimShellSendBuffer*
|
||||
裏ウインドウを{bufname}として設定する。{bufname}が
|
||||
画面に表示されていない場合、自動的に開く。
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
VARIABLES *vimshell-variables*
|
||||
|
||||
g:vimshell_prompt *g:vimshell_prompt*
|
||||
vimshellのプロンプト文字列を設定する。これは一度し
|
||||
か評価されない。
|
||||
|
||||
セキュリティの関係上、vimshellの関数を呼び出す前に値
|
||||
を設定しなければ無効になる。
|
||||
初期値は'vimshell% 'である。
|
||||
|
||||
g:vimshell_user_prompt *g:vimshell_user_prompt*
|
||||
この変数にVim Scriptの式を文字列として代入することで、
|
||||
ユーザーが追加で表示されるプロンプトを定義できる。
|
||||
|g:vimshell_prompt|と違い、固定文字列でなくても良い。
|
||||
ユーザープロンプトを\nで区切ることで、 複数行のユー
|
||||
ザープロンプトが表示できる。
|
||||
|
||||
例えば、このように毎回カレントディレクトリを表示する
|
||||
ようにすれば便利である。
|
||||
>
|
||||
let g:vimshell_user_prompt = 'getcwd()'
|
||||
<
|
||||
セキュリティの関係上、vimshellの関数を呼び出す前に値
|
||||
を設定しなければ無効になる。
|
||||
初期値は空である。
|
||||
|
||||
g:vimshell_right_prompt *g:vimshell_right_prompt*
|
||||
zsh風の右プロンプトである。Vim Scriptの式を文字列として
|
||||
代入する。|g:vimshell_user_prompt|に似ているが、ウイン
|
||||
ドウの大きさを計算し、自動的に最適な位置にプロンプトを
|
||||
表示する。
|
||||
セキュリティの関係上、vimshellの関数を呼び出す前に値
|
||||
を設定しなければ無効になる。
|
||||
初期値は空である。
|
||||
|
||||
g:vimshell_no_default_keymappings *g:vimshell_no_default_keymappings*
|
||||
vimshellのデフォルトマッピングをすべて無効化する。
|
||||
新しくマッピングしない限り、vimshellの機能が使えなく
|
||||
なるので、初心者にはお勧めできない。内部動作を知
|
||||
り尽くしている上級者向けのオプションである。
|
||||
|
||||
g:vimshell_ignore_case *g:vimshell_ignore_case*
|
||||
vimshellが補完候補を検索する際に、大文字小文字を無視
|
||||
するかを制御する。
|
||||
|
||||
初期値は&ignorecaseである。
|
||||
|
||||
g:vimshell_smart_case *g:vimshell_smart_case*
|
||||
このオプションが有効だと、vimshellが補完候補を検索する
|
||||
際に、大文字が入力されていれば大文字小文字を無視しなく
|
||||
なる。
|
||||
|
||||
初期値は0である。
|
||||
|
||||
g:vimshell_max_list *g:vimshell_max_list*
|
||||
vimshellの補完候補の最大数である。補完候補の数がこれを
|
||||
越えると、勝手に候補を切り詰める。
|
||||
|
||||
初期値は100である。
|
||||
|
||||
g:vimshell_use_terminal_command *g:vimshell_use_terminal_command*
|
||||
|vimshell-internal-shell|を実行する際に、シェルを起動す
|
||||
る端末プログラムを指定する。
|
||||
Windows環境では、"ckw -e", Linux環境では
|
||||
"gnome-terminal -e"などが値の候補となるだろう。
|
||||
|
||||
初期値は""である。
|
||||
|
||||
g:vimshell_split_height *g:vimshell_split_height*
|
||||
|:VimShellPop|の分割高さを指定する。指定する値は
|
||||
|winheight(0)|に対するパーセントになる。
|
||||
|
||||
初期値は30である。
|
||||
|
||||
g:vimshell_temporary_directory *g:vimshell_temporary_directory*
|
||||
vimshellが使用する一時ディレクトリを指定する。ヒストリ
|
||||
ファイルもこのディレクトリ下に保存される。
|
||||
|
||||
初期値はexpand('~/.vimshell')である。
|
||||
|
||||
g:vimshell_max_command_history *g:vimshell_max_command_history*
|
||||
vimshellが保存するヒストリの最大数を指定する。
|
||||
|
||||
初期値は1000である。
|
||||
|
||||
g:vimshell_max_directory_stack *g:vimshell_max_directory_stack*
|
||||
vimshellが保存するディレクトリスタックの最大数を指定する。
|
||||
|
||||
初期値は100である。
|
||||
|
||||
g:vimshell_vimshrc_path *g:vimshell_vimshrc_path*
|
||||
vimshellが最初に読み込むシェルの設定ファイル.vimshrc
|
||||
を指定する。これはbashでいう.bashrcに似ている。そ
|
||||
のファイルの中でエイリアスを定義すると便利である。
|
||||
|
||||
初期値はexpand('~/.vimshrc')です。
|
||||
|
||||
g:vimshell_escape_colors *g:vimshell_escape_colors*
|
||||
エスケープシーケンスの色づけにおいて、 対応する色の
|
||||
リストである。0~8番目が普通の色、9~15番目が高輝度の色
|
||||
に対応している。
|
||||
|
||||
初期値はplugin/vimshell.vimを参照せよ。
|
||||
|
||||
g:vimshell_disable_escape_highlight *g:vimshell_disable_escape_highlight*
|
||||
エスケープシーケンスの色づけをするかどうかを制御する。
|
||||
これは重い処理なので、無効化すればvimshellが高速化する。
|
||||
値を真にすると無効になる。
|
||||
|
||||
初期値は0である。
|
||||
|
||||
g:vimshell_cat_command *g:vimshell_cat_command*
|
||||
vimshellは外部のページャやエディタをうまく扱えないの
|
||||
で、$PAGERや$EDITORに|g:vimshell_cat_command|の値を
|
||||
セットする。初期値は"cat"だが、この変数の内容を
|
||||
変更することで、カスタマイズできる。
|
||||
|
||||
初期値は"cat"である。
|
||||
|
||||
g:vimshell_environment_term *g:vimshell_environment_term*
|
||||
vimshellが$TERMにセットする端末情報である。
|
||||
|
||||
初期値は"vt100"である。
|
||||
|
||||
g:vimshell_split_command *g:vimshell_split_command*
|
||||
vimshellが画面を分割するときに用いるExコマンドである。
|
||||
これを"nicely"にすると、vimshellがウインドウの大きさを
|
||||
見て最適な画面分割を行う。
|
||||
空文字列にすると、分割しない。
|
||||
"tabnew"にすると、新しいタブで開く。
|
||||
"vsplit"で縦方向に分割する。
|
||||
|
||||
初期値は"nicely"である。
|
||||
|
||||
g:vimshell_cd_command *g:vimshell_cd_command*
|
||||
vimshellがカレントディレクトリを変更するときに用いるEx
|
||||
コマンドである。|`=|を解釈しなければならない。
|
||||
|
||||
初期値は"lcd"である。
|
||||
|
||||
g:vimshell_no_save_history_commands *g:vimshell_no_save_history_commands*
|
||||
ヒストリを保存しないコマンド名をキーとしたディクショ
|
||||
ナリ。存在しないと無視される。
|
||||
|
||||
初期値は{ 'history' : 1, 'h' : 1, 'histdel' : 1 }です。
|
||||
|
||||
g:vimshell_interactive_no_save_history_commands *g:vimshell_interactive_no_save_history_commands*
|
||||
|vimshell-internal-iexe|において、ヒストリを保存しな
|
||||
いコマンド名をキーとしたディクショナリ。存在しな
|
||||
いと無視される。
|
||||
|
||||
初期値は{}である。
|
||||
|
||||
g:vimshell_interactive_update_time *g:vimshell_interactive_update_time*
|
||||
|vimshell-internal-iexe|がInsert mode中において、自
|
||||
動更新を行うタイミングを制御する。
|
||||
|vimshell-internal-iexe|はこのオプションに基づき、
|
||||
'updatetime'を変更する。
|
||||
|
||||
初期値は500である。
|
||||
|
||||
g:vimshell_interactive_command_options *g:vimshell_interactive_command_options*
|
||||
コマンド名をキーとするディクショナリ変数になっていて、
|
||||
|vimshell-internal-iexe|で起動するコマンドに与えるオ
|
||||
プションを指定する。 Windows環境などで特殊なオプショ
|
||||
ンを与えないと、うまく対話モードにならないコマンド
|
||||
に使用する。
|
||||
|
||||
初期値は複雑なので、autoload/vimshell/commands/iexe.vimを参照
|
||||
せよ。
|
||||
|
||||
g:vimshell_interactive_interpreter_commands *g:vimshell_interactive_interpreter_commands*
|
||||
ファイルタイプをキーとするディクショナリ変数になっていて、
|
||||
|:VimShellInteractive|の引数を省略した際のインタプリ
|
||||
タ名を指定する。
|
||||
|
||||
初期値は複雑なので、autoload/vimshell/commands/iexe.vimを参照
|
||||
せよ。
|
||||
|
||||
g:vimshell_interactive_encodings *g:vimshell_interactive_encodings*
|
||||
コマンド名をキーとするディクショナリ変数になっていて、
|
||||
|vimshell-internal-iexe|で起動するコマンドのエンコー
|
||||
ディングを指定する。
|
||||
|
||||
初期値は複雑なので、autoload/vimshell/commands/iexe.vimを参照
|
||||
せよ。
|
||||
|
||||
g:vimshell_interactive_no_echoback_commands *g:vimshell_interactive_no_echoback_commands*
|
||||
インタプリタ名をキーとするディクショナリ変数になってい
|
||||
て、|vimshell-internal-iexe|実行時にエコーバックするか
|
||||
どうかを指定する。1ならiexe側でエコーバック処理をする。
|
||||
Windowsでのみ有効である。
|
||||
|
||||
初期値は複雑なので、plugin/vimshell.vimを参照
|
||||
せよ。
|
||||
|
||||
g:vimshell_terminal_cursor *g:vimshell_terminal_cursor*
|
||||
|vimshell-internal-texe|で使用するカーソル形状を指定
|
||||
する。'guicursor'を一時的に変更するので、GVim環境
|
||||
でのみ意味がある。
|
||||
|
||||
初期値は'i:block-Cursor/lCursor'である。
|
||||
|
||||
g:vimshell_terminal_commands *g:vimshell_terminal_commands*
|
||||
コマンド名をキーとするディクショナリ変数となっている。
|
||||
値が真であるコマンドを実行する際には、自動的に
|
||||
|vimshell-internal-texe|が使用される。
|
||||
|
||||
初期値は複雑なので、plugin/vimshell.vimを参照
|
||||
せよ。
|
||||
|
||||
g:vimshell_interactive_cygwin_commands *g:vimshell_interactive_cygwin_commands*
|
||||
コマンド名をキーとするディクショナリ変数になっていて、
|
||||
fakecygpty経由で起動するコマンドを指定する。sshな
|
||||
ど、Cygwin上でないとうまく動作しないコマンドを
|
||||
|vimshell-internal-iexe|から使用する際に使う。
|
||||
fakecygptyについては、|vimshell-tips-fakecygpty|を
|
||||
参照しなければならない。
|
||||
|
||||
初期値は複雑なので、autoload/vimshell/commands/iexe.vimを参照
|
||||
せよ。
|
||||
|
||||
g:vimshell_interactive_cygwin_path *g:vimshell_interactive_cygwin_path*
|
||||
fakecygpty経由のプログラムを実行する際に参照するパス
|
||||
を指定する。 |vimshell-internal-iexe|は第一引数に
|
||||
fakecygptyを指定されたとき、 $PATHではなく、
|
||||
|g:vimshell_interactive_cygwin_path|からコマンドを検
|
||||
索する。
|
||||
|
||||
初期値は'c:/cygwin/bin'である。
|
||||
|
||||
g:vimshell_interactive_cygwin_home *g:vimshell_interactive_cygwin_home*
|
||||
fakecygpty経由のプログラムを実行する際に使用する
|
||||
$HOMEを指定する。''を指定すると現在の$HOMEをそのま
|
||||
ま利用する。
|
||||
|
||||
初期値は''である。
|
||||
|
||||
g:vimshell_interactive_monochrome_commands *g:vimshell_interactive_monochrome_commands*
|
||||
コマンド名をキーとするディクショナリ変数になっていて、
|
||||
vimshellによる色分けを無効化するコマンドを指定する。
|
||||
|
||||
初期値は複雑なので、autoload/vimshell/commands/iexe.vimを参照
|
||||
せよ。
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
KEY MAPPINGS *vimshell-key-mappings*
|
||||
|
||||
<Plug>(vimshell_split_switch) *<Plug>(vimshell_split_switch)*
|
||||
vimshellを画面分割して起動する。すでにvimshellバッファ
|
||||
が存在する場合はそちらに切り換える。
|
||||
|
||||
<Plug>(vimshell_split_create) *<Plug>(vimshell_split_create)*
|
||||
vimshellを画面分割して起動する。すでにvimshellバッファ
|
||||
が存在していても、新しくvimshellバッファを作成する。
|
||||
|
||||
<Plug>(vimshell_switch) *<Plug>(vimshell_switch)*
|
||||
vimshellを起動する。すでにvimshellバッファが存在する場
|
||||
合はそちらに切り換える。
|
||||
|
||||
<Plug>(vimshell_create) *<Plug>(vimshell_create)*
|
||||
vimshellを起動する。すでにvimshellバッファが存在してい
|
||||
ても、新しくvimshellバッファを作成する。
|
||||
|
||||
VIMSHELL BUFFER KEY MAPPINGS *vimshell-buffer-key-mappings*
|
||||
|
||||
Normal mode key mappings.
|
||||
|
||||
<Plug>(vimshell_enter) *<Plug>(vimshell_enter)*
|
||||
入力されたコマンドを実行する。
|
||||
|
||||
<Plug>(vimshell_previous_prompt) *<Plug>(vimshell_previous_prompt)*
|
||||
カーソルよりも前のプロンプトへ移動する。
|
||||
|
||||
<Plug>(vimshell_next_prompt) *<Plug>(vimshell_next_prompt)*
|
||||
カーソルよりも後のプロンプトへ移動する。
|
||||
|
||||
<Plug>(vimshell_delete_previous_output) *<Plug>(vimshell_delete_previous_output)*
|
||||
カーソル前方の出力を削除する。
|
||||
|
||||
<Plug>(vimshell_paste_prompt) *<Plug>(vimshell_paste_prompt)*
|
||||
カーソル行のコマンドをプロンプトにペーストする。
|
||||
|
||||
<Plug>(vimshell_move_end_argument) *<Plug>(vimshell_move_end_argument)*
|
||||
コマンドの最終引数へ移動する。
|
||||
|
||||
<Plug>(vimshell_hide) *<Plug>(vimshell_hide)*
|
||||
vimshellバッファを隠す。
|
||||
|
||||
<Plug>(vimshell_exit) *<Plug>(vimshell_exit)*
|
||||
vimshellバッファを終了する。
|
||||
|
||||
<Plug>(vimshell_change_line) *<Plug>(vimshell_change_line)*
|
||||
行全体を修正する。
|
||||
|
||||
<Plug>(vimshell_delete_line) *<Plug>(vimshell_delete_line)*
|
||||
行全体を削除する。
|
||||
|
||||
<Plug>(vimshell_hangup) *<Plug>(vimshell_hangup)*
|
||||
実行中のコマンドを強制的に終了する。
|
||||
|
||||
<Plug>(vimshell_insert_head) *<Plug>(vimshell_insert_head)*
|
||||
<Plug>(vimshell_insert_enter) *<Plug>(vimshell_insert_enter)*
|
||||
<Plug>(vimshell_append_enter) *<Plug>(vimshell_append_enter)*
|
||||
<Plug>(vimshell_append_end) *<Plug>(vimshell_append_end)*
|
||||
挿入モードへ移行する。
|
||||
|
||||
<Plug>(vimshell_clear) *<Plug>(vimshell_clear)*
|
||||
再描画する。
|
||||
|
||||
<Plug>(vimshell_move_head) *<Plug>(vimshell_move_head)*
|
||||
行頭へ移動する。
|
||||
|
||||
<Plug>(vimshell_execute_by_background) *<Plug>(vimshell_execute_by_background)*
|
||||
実行中のコマンドをiexeバッファで起動する。
|
||||
|
||||
Visual mode key mappings.
|
||||
<Plug>(vimshell_select_previous_prompt) *v_<Plug>(vimshell_select_previous_prompt)*
|
||||
カーソルよりも前のプロンプトを選択する。
|
||||
|
||||
<Plug>(vimshell_select_next_prompt) *v_<Plug>(vimshell_select_next_prompt)*
|
||||
カーソルよりも後のプロンプトを選択する。
|
||||
|
||||
Insert mode key mappings.
|
||||
|
||||
<Plug>(vimshell_command_complete) *i_<Plug>(vimshell_command_complete)*
|
||||
補完を呼び出す。
|
||||
|
||||
<Plug>(vimshell_push_current_line) *i_<Plug>(vimshell_push_current_line)*
|
||||
実行中のコマンドを一時的にスタックにpushする。
|
||||
|
||||
<Plug>(vimshell_insert_last_word) *i_<Plug>(vimshell_insert_last_word)*
|
||||
コマンドの最終引数に文字を挿入する。
|
||||
|
||||
<Plug>(vimshell_run_help) *i_<Plug>(vimshell_run_help)*
|
||||
内部コマンドのヘルプを見る。
|
||||
|
||||
<Plug>(vimshell_move_head) *i_<Plug>(vimshell_move_head)*
|
||||
行の先頭へ移動する。
|
||||
|
||||
<Plug>(vimshell_delete_backward_line) *i_<Plug>(vimshell_delete_backward_line)*
|
||||
カーソルより後方の行を削除する。
|
||||
|
||||
<Plug>(vimshell_delete_backward_word) *i_<Plug>(vimshell_delete_backward_word)*
|
||||
コマンド行を一語削除する。
|
||||
|
||||
<Plug>(vimshell_enter) *i_<Plug>(vimshell_enter)*
|
||||
コマンドを実行する。
|
||||
|
||||
<Plug>(vimshell_interrupt) *i_<Plug>(vimshell_interrupt)*
|
||||
実行中のコマンドに割り込みを送信する。
|
||||
|
||||
<Plug>(vimshell_move_previous_window) *i_<Plug>(vimshell_move_previous_window)*
|
||||
前のウインドウへ戻る。
|
||||
|
||||
<Plug>(vimshell_delete_backward_char) *i_<Plug>(vimshell_delete_backward_char)*
|
||||
<Plug>(vimshell_another_delete_backward_char) *i_<Plug>(vimshell_another_delete_backward_char)*
|
||||
コマンド行を一文字削除する。
|
||||
|
||||
<Plug>(vimshell_delete_forward_line) *i_<Plug>(vimshell_delete_forward_line)*
|
||||
カーソルより前方の行を削除する。
|
||||
|
||||
<Plug>(vimshell_clear) *i_<Plug>(vimshell_clear)*
|
||||
vimshellバッファを再描画する。
|
||||
|
||||
<Plug>(vimshell_execute_by_background) *i_<Plug>(vimshell_execute_by_background)*
|
||||
実行中のコマンドをiexeバッファで実行する。
|
||||
|
||||
Normal mode default key mappings.
|
||||
{lhs} {rhs}
|
||||
-------- -----------------------------
|
||||
<CR> <Plug>(vimshell_enter)
|
||||
q <Plug>(vimshell_hide)
|
||||
Q <Plug>(vimshell_exit)
|
||||
<C-p> <Plug>(vimshell_previous_prompt)
|
||||
<C-n> <Plug>(vimshell_next_prompt)
|
||||
<C-k> <Plug>(vimshell_delete_previous_output)
|
||||
<C-y> <Plug>(vimshell_paste_prompt)
|
||||
E <Plug>(vimshell_move_end_argument)
|
||||
cc <Plug>(vimshell_change_line)
|
||||
dd <Plug>(vimshell_delete_line)
|
||||
I <Plug>(vimshell_insert_head)
|
||||
A <Plug>(vimshell_append_end)
|
||||
i <Plug>(vimshell_insert_enter)
|
||||
a <Plug>(vimshell_append_enter)
|
||||
^ <Plug>(vimshell_move_head)
|
||||
<C-c> <Plug>(vimshell_hangup)
|
||||
<C-l> <Plug>(vimshell_clear)
|
||||
<C-z> <Plug>(vimshell_execute_by_background)
|
||||
|
||||
Visual mode default key mappings.
|
||||
{lhs} {rhs}
|
||||
-------- -----------------------------
|
||||
<C-p> <Plug>(vimshell_select_previous_prompt)
|
||||
<C-n> <Plug>(vimshell_select_next_prompt)
|
||||
|
||||
Insert mode default key mappings.
|
||||
{lhs} {rhs}
|
||||
-------- -----------------------------
|
||||
<CR> <Plug>(vimshell_enter)
|
||||
<C-l> vimshell/history sourceの起動
|
||||
<TAB> <Plug>(vimshell_command_complete)
|
||||
<C-a> <Plug>(vimshell_move_head)
|
||||
<C-u> <Plug>(vimshell_delete_backward_line)
|
||||
<C-w> <Plug>(vimshell_delete_backward_word)
|
||||
<C-z> (while execute) <Plug>(vimshell_execute_by_background)
|
||||
(other) <Plug>(vimshell_push_current_line)
|
||||
<C-t> <Plug>(vimshell_insert_last_word)
|
||||
<C-x><C-h> <Plug>(vimshell_run_help)
|
||||
<C-c> <Plug>(vimshell_interrupt)
|
||||
<C-h> <Plug>(vimshell_delete_backward_char)
|
||||
<BS> <Plug>(vimshell_delete_backward_char)
|
||||
<C-k> <Plug>(vimshell_delete_forward_line)
|
||||
<C-x> <Plug>(vimshell_move_previous_window)
|
||||
|
||||
VIMSHELL INTERACTIVE BUFFER KEY MAPPINGS *vimshell-interactive-buffer-key-mappings*
|
||||
|
||||
Normal mode key mappings.
|
||||
|
||||
<Plug>(vimshell_int_execute_line) *<Plug>(vimshell_int_execute_line)*
|
||||
カーソル位置の入力をコマンドに送信する。
|
||||
|
||||
<Plug>(vimshell_int_previous_prompt) *<Plug>(vimshell_int_previous_prompt)*
|
||||
カーソルよりも前のプロンプトへ移動する。
|
||||
|
||||
<Plug>(vimshell_int_next_prompt) *<Plug>(vimshell_int_next_prompt)*
|
||||
カーソルよりも後のプロンプトへ移動する。
|
||||
|
||||
<Plug>(vimshell_int_paste_prompt) *<Plug>(vimshell_int_paste_prompt)*
|
||||
カーソル位置の入力を最終行にペーストする。
|
||||
|
||||
<Plug>(vimshell_int_hangup) *<Plug>(vimshell_int_hangup)*
|
||||
強制的にコマンドを終了する。
|
||||
|
||||
<Plug>(vimshell_int_exit) *<Plug>(vimshell_int_exit)*
|
||||
バッファと実行中のコマンドを削除する。
|
||||
|
||||
<Plug>(vimshell_int_restart_command) *<Plug>(vimshell_int_restart_command)*
|
||||
コマンドを再起動する。
|
||||
|
||||
<Plug>(vimshell_int_change_line) *<Plug>(vimshell_int_change_line)*
|
||||
行全体を変更する。
|
||||
|
||||
<Plug>(vimshell_int_delete_line) *<Plug>(vimshell_int_delete_line)*
|
||||
行全体を削除する。
|
||||
|
||||
<Plug>(vimshell_int_insert_enter) *<Plug>(vimshell_int_insert_enter)*
|
||||
<Plug>(vimshell_int_insert_head) *<Plug>(vimshell_int_insert_head)*
|
||||
<Plug>(vimshell_int_append_enter) *<Plug>(vimshell_int_append_enter)*
|
||||
<Plug>(vimshell_int_append_end) *<Plug>(vimshell_int_append_end)*
|
||||
Insert modeに移行する。
|
||||
|
||||
<Plug>(vimshell_int_clear) *<Plug>(vimshell_int_clear)*
|
||||
バッファを再描画する。
|
||||
|
||||
Insert mode key mappings.
|
||||
|
||||
<Plug>(vimshell_int_move_head) *i_<Plug>(vimshell_int_move_head)*
|
||||
コマンド行の先頭に移動する。
|
||||
|
||||
<Plug>(vimshell_int_delete_backward_line) *i_<Plug>(vimshell_int_delete_backward_line)*
|
||||
カーソルより後方の行を削除する。
|
||||
|
||||
<Plug>(vimshell_int_delete_backward_word) *i_<Plug>(vimshell_int_delete_backward_word)*
|
||||
コマンド行を一語削除する。
|
||||
|
||||
<Plug>(vimshell_int_execute_line) *i_<Plug>(vimshell_int_execute_line)*
|
||||
コマンドにカーソル行を送信する。
|
||||
|
||||
<Plug>(vimshell_int_delete_backward_char) *i_<Plug>(vimshell_int_delete_backward_char)*
|
||||
<Plug>(vimshell_int_another_delete_backward_char) *i_<Plug>(vimshell_int_another_delete_backward_char)*
|
||||
コマンド行を一文字削除する。
|
||||
|
||||
<Plug>(vimshell_int_send_input) *i_<Plug>(vimshell_int_send_input)*
|
||||
コマンドに任意の入力を送信する。
|
||||
|
||||
<Plug>(vimshell_int_interrupt) *i_<Plug>(vimshell_int_interrupt)*
|
||||
実行中のコマンドに割り込みを送信する。
|
||||
|
||||
<Plug>(vimshell_int_command_complete) *i_<Plug>(vimshell_int_command_complete)*
|
||||
補完を行う。
|
||||
|
||||
<Plug>(vimshell_int_delete_forward_line) *i_<Plug>(vimshell_int_delete_forward_line)*
|
||||
カーソルより前方の行を削除する。
|
||||
|
||||
Normal mode default key mappings.
|
||||
{lhs} {rhs}
|
||||
-------- -----------------------------
|
||||
<C-p> <Plug>(vimshell_int_previous_prompt)
|
||||
<C-n> <Plug>(vimshell_int_next_prompt)
|
||||
<CR> <Plug>(vimshell_int_execute_line)
|
||||
<C-y> <Plug>(vimshell_int_paste_prompt)
|
||||
<C-z> <Plug>(vimshell_int_restart_command)
|
||||
<C-c> <Plug>(vimshell_int_hangup)
|
||||
q <Plug>(vimshell_int_exit)
|
||||
cc <Plug>(vimshell_int_change_line)
|
||||
dd <Plug>(vimshell_int_delete_line)
|
||||
I <Plug>(vimshell_int_insert_head)
|
||||
A <Plug>(vimshell_int_append_end)
|
||||
i <Plug>(vimshell_int_insert_enter)
|
||||
a <Plug>(vimshell_int_append_enter)
|
||||
<C-l> <Plug>(vimshell_int_clear)
|
||||
|
||||
Insert mode default key mappings.
|
||||
{lhs} {rhs}
|
||||
-------- -----------------------------
|
||||
<C-h> <Plug>(vimshell_int_delete_backward_char)
|
||||
<BS> <Plug>(vimshell_int_delete_backward_char)
|
||||
<C-a> <Plug>(vimshell_int_move_head)
|
||||
<C-u> <Plug>(vimshell_int_delete_backward_line)
|
||||
<C-w> <Plug>(vimshell_int_delete_backward_word)
|
||||
<C-k> <Plug>(vimshell_int_delete_forward_line)
|
||||
<CR> <Plug>(vimshell_int_execute_line)
|
||||
<C-c> <Plug>(vimshell_int_interrupt)
|
||||
<C-l> vimshell/history sourceの起動
|
||||
<C-v> <Plug>(vimshell_int_send_input)
|
||||
<C-n> <C-n>
|
||||
<TAB> 補完候補の選択か補完を行う
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
FUNCTIONS *vimshell-functions*
|
||||
|
||||
vimshell#hook#set({hook-point}, {func-list}) *vimshell#hook#set()*
|
||||
{hook-point}のhook関数を{func-list}で定義する。すでに定
|
||||
義されているhookは上書きされるので注意しなければなら
|
||||
ない。hook関数は{func-list}で指定された順番で呼びだされる。
|
||||
|
||||
vimshell#hook#get({hook-point}) *vimshell#hook#get()*
|
||||
{hook-point}に定義されているhookを辞書形式で返す。
|
||||
|
||||
vimshell#hook#add({hook-point}, {hook-name}, {func}) *vimshell#hook#add()*
|
||||
{hook-point}に{hook-name}で{func}を登録する。既に存
|
||||
在するhook関数は{hook-name}が同じでない限り上書きさ
|
||||
れない。
|
||||
|
||||
vimshell#hook#remove({hook-point}, {hook-name}) *vimshell#hook#remove()*
|
||||
{hook-point}の{hook-name}関数を削除する。
|
||||
|
||||
==============================================================================
|
||||
EXAMPLES *vimshell-examples*
|
||||
>
|
||||
let g:vimshell_user_prompt = 'fnamemodify(getcwd(), ":~")'
|
||||
"let g:vimshell_right_prompt = 'vcs#info("(%s)-[%b]", "(%s)-[%b|%a]")'
|
||||
let g:vimshell_enable_smart_case = 1
|
||||
|
||||
if has('win32') || has('win64')
|
||||
" Display user name on Windows.
|
||||
let g:vimshell_prompt = $USERNAME."% "
|
||||
else
|
||||
" Display user name on Linux.
|
||||
let g:vimshell_prompt = $USER."% "
|
||||
|
||||
call vimshell#set_execute_file('bmp,jpg,png,gif', 'gexe eog')
|
||||
call vimshell#set_execute_file('mp3,m4a,ogg', 'gexe amarok')
|
||||
let g:vimshell_execute_file_list['zip'] = 'zipinfo'
|
||||
call vimshell#set_execute_file('tgz,gz', 'gzcat')
|
||||
call vimshell#set_execute_file('tbz,bz2', 'bzcat')
|
||||
endif
|
||||
|
||||
" Initialize execute file list.
|
||||
let g:vimshell_execute_file_list = {}
|
||||
call vimshell#set_execute_file('txt,vim,c,h,cpp,d,xml,java', 'vim')
|
||||
let g:vimshell_execute_file_list['rb'] = 'ruby'
|
||||
let g:vimshell_execute_file_list['pl'] = 'perl'
|
||||
let g:vimshell_execute_file_list['py'] = 'python'
|
||||
call vimshell#set_execute_file('html,xhtml', 'gexe firefox')
|
||||
|
||||
autocmd FileType vimshell
|
||||
\ call vimshell#altercmd#define('g', 'git')
|
||||
\| call vimshell#altercmd#define('i', 'iexe')
|
||||
\| call vimshell#altercmd#define('l', 'll')
|
||||
\| call vimshell#altercmd#define('ll', 'ls -l')
|
||||
\| call vimshell#hook#add('chpwd', 'my_chpwd', 'g:my_chpwd')
|
||||
|
||||
function! g:my_chpwd(args, context)
|
||||
call vimshell#execute('ls')
|
||||
endfunction
|
||||
|
||||
autocmd FileType int-* call s:interactive_settings()
|
||||
function! s:interactive_settings()
|
||||
endfunction
|
||||
<
|
||||
プロンプトをユーザー名にしているだけで、後は凝った設定はしてないです。 ちな
|
||||
みに|neocomplcache|では、vimshellのヒストリファイルを辞書として使用してます。
|
||||
これはなかなか便利です。|g:vimshell_execute_file_list|による関連づけも設定
|
||||
しています。 ユーザープロンプトを設定するのは一番最初にします。 vimshellを読
|
||||
み込む前に設定しないと、セキュリティの関係で再設定できなくなるからです。
|
||||
|
||||
==============================================================================
|
||||
INTERNAL COMMANDS *vimshell-internal-commands*
|
||||
internal commandは普通のシェルにおける組み込みコマンドのように動作する。
|
||||
引数はvimshellに解釈された後に分割して渡される。
|
||||
|
||||
Note: 現状、internal commandコマンドはパイプラインに対応しないことに注意しなけ
|
||||
ればならない。パイプラインを使用した場合、強制的に外部コマンドが起動される。よ
|
||||
って、次のコマンドはフリーズする。
|
||||
>
|
||||
vimshell% echo hello | vim
|
||||
<
|
||||
|
||||
bg [{option}...] {command} *vimshell-internal-bg*
|
||||
{command}をバックグラウンドで起動する。vimshellのバックグラウン
|
||||
ド実行は新たにバッファを開き、そこに{command}の出力を書き出す。
|
||||
bgの場合、ユーザーからの入力は一切受け付けない。 バックグラウン
|
||||
ドバッファ上で<C-c>を入力すると、{command}の実行を強制的に終了
|
||||
させる。
|
||||
コマンドラインの最後に&を付加すると、bgを指定したことと同じとなる。
|
||||
例:
|
||||
>
|
||||
vimshell% ls&
|
||||
<
|
||||
iexe, exe, bg, texe, less はオプションを解釈し、それに基づいて
|
||||
挙動を変更する。詳しくは |vimshell-execute-options|を参照せよ。
|
||||
ここでは、bgのみに存在するオプションを解説する。
|
||||
|
||||
--filetype={filetype-name}
|
||||
出力バッファの'filetype'を{filetype-name}に変更する。
|
||||
このオプションが省略された場合、"background"となる。
|
||||
|
||||
--split={split-command}
|
||||
バッファの分割方向を指定する。このオプションが省略された場合、
|
||||
|g:vimshell_split_command|が使用される。
|
||||
|
||||
cd {directory-path} [{substitute-pattern}] *vimshell-internal-cd*
|
||||
カレントディレクトリを{directory-path}に変更する。引数が空の場
|
||||
合、ホームディレクトリへ移動する。 引数が二つ与えられた場合、
|
||||
{directory-path}を {substitute-pattern}へ置き換える。引数がディ
|
||||
レクトリでなかった場合、ファイルの親ディレクトリへ移動する。 フ
|
||||
ァイルが見つからなかった場合、'cdpath'を参照して移動しようとす
|
||||
る。 引数に-で始まる数字を与えると、 |vimshell-internal-popd|と
|
||||
同じ意味になる。
|
||||
|
||||
clear *vimshell-internal-clear*
|
||||
画面を消去する。
|
||||
|
||||
dirs [{max}] *vimshell-internal-dirs*
|
||||
ディレクトリスタックの一覧を{max}個表示する。
|
||||
{max}を省略すると、10になる。
|
||||
この一覧上で<Enter>を押すことで、そのディレクトリへ移動でき
|
||||
る。
|
||||
|
||||
echo [{argument}...] *vimshell-internal-echo*
|
||||
引数を出力する。
|
||||
|
||||
eval {expression} *vimshell-internal-eval*
|
||||
{expression}をvimshell Scriptとして解釈し、評価結果を表示する。
|
||||
前のバージョンのevとは動作が異なる。evの代わりが欲しいなら、
|
||||
alias ev = 'vexe echo'を設定する。
|
||||
|
||||
exe [{option}...] {command} *vimshell-internal-exe*
|
||||
{command}に引数を与えて実行する。必ず外部コマンドが実行される。
|
||||
iexe, exe, bg, texe, less はオプションを解釈し、それに基づいて
|
||||
挙動を変更する。詳しくは|vimshell-execute-options|を参照せよ。
|
||||
コマンドを実行中はコマンドが終了するか、<C-c>で強制終了する
|
||||
まで、他のコマンドを実行できないことに注意。
|
||||
Note: vimshell Ver.9より、exeは入力も受けつけるように変更された。
|
||||
|
||||
*vimshell-execute-options*
|
||||
--encoding={encoding-name} *vimshell-execute-options-encoding*
|
||||
起動するプログラムのエンコーディングを{encoding-name}に変更する。
|
||||
'encoding'と{encoding-name}が異なる場合、vimshellは入出力のエン
|
||||
コーディング変換を自動的に行う。 このオプションが省略された場合、
|
||||
'termencoding'の値が使用される。
|
||||
|
||||
exit *vimshell-internal-exit*
|
||||
vimshellを終了する。
|
||||
|
||||
gcd [{directory-path}] *vimshell-internal-gcd*
|
||||
vimshellのカレントディレクトリを変更し、かつグローバルなカレ
|
||||
ントディレクトリも変更する。 vimshellのカレントディレクト
|
||||
リはVimのカレントディレクトリとは異なっているので、 Vimのカ
|
||||
レントディレクトリを変更したい場合に便利である。
|
||||
{directory-path}を省略すると、vimshellのカレントディレクトリ
|
||||
に移動する。
|
||||
|
||||
gendoc {command} {args} *vimshell-internal-gendoc*
|
||||
{command}に引数{args}を与えて実行し、結果を
|
||||
g:vimshell_temporary_directory/cached-docに格納する。キャッシュ
|
||||
した説明文は|echodoc|により表示できる。説明文としてキャッシュさ
|
||||
れるのは、コマンドの実行結果の一行目だけである。
|
||||
|
||||
gexe {command} *vimshell-internal-gexe*
|
||||
{command}に引数を与えて実行する。必ず外部コマンドが実行される。
|
||||
exeとは違い、GUIコマンドを実行することに特化している。
|
||||
|
||||
h [{pattern}] *vimshell-internal-h*
|
||||
{pattern}に一致するヒストリを実行する。{pattern}が数字で与えら
|
||||
れた場合、{pattern}をヒストリ番号として検索する。{pattern}が文
|
||||
字列の場合、その文字列に最初にマッチする履歴を実行する。ヒ スト
|
||||
リ番号は|vimshell-internal-history|で確認できる。{pattern}を省
|
||||
略すると、 直前のコマンドを実行する。|vimshell-internal-h|によ
|
||||
り実行したコマンドはヒストリに登録されない。
|
||||
|
||||
histdel {history-number} *vimshell-internal-histdel*
|
||||
{history-number}に一致するヒストリを削除する。ヒストリ番号は
|
||||
|vimshell-internal-history|で確認できる。{history-number}を省略
|
||||
すると無視される。
|
||||
|
||||
history [{search-string}] *vimshell-internal-history*
|
||||
ディレクトリスタックの一覧を{search-string}個表示する。
|
||||
{search-string} を省略すると、20になる。{search-string}が文字列
|
||||
の場合、その文字 列にマッチする候補を一覧できます。この一覧上で
|
||||
<Enter>を押すことで、その履歴を実行できる。
|
||||
|
||||
iexe [{options}...] {command} *vimshell-internal-iexe*
|
||||
{command}に引数を与えて実行する。必ず外部コマンドが実行される。
|
||||
exeとは違い、対話コマンドを実行することに特化している。入出力を
|
||||
行なうために新しいバッファが生成される。
|
||||
iexeバッファは|filetype|がint-{command}となる。iexeバッファ全体
|
||||
にautocmdを使用する場合は、"int-*"というパターンを使用するとよ
|
||||
い。
|
||||
|
||||
Note:
|
||||
iexeはzshの右プロンプトに対応していない。仕組み上、右プロンプト
|
||||
には対応できない。iexeバッファからプロセスを起動すると、
|
||||
環境変数 "$VIMSHELL" が1にセットされるので、それにより判別し右
|
||||
プロンプトを無効にするとよい。
|
||||
|
||||
iexe, exe, bg, texe, less はオプションを解釈し、それに基づいて
|
||||
挙動を変更する。詳しくは |vimshell-execute-options|を参照せよ。
|
||||
|
||||
--split={split-command}
|
||||
バッファの分割方向を指定する。このオプションが省略された場合、
|
||||
|g:vimshell_split_command|が使用される。
|
||||
|
||||
less [{options}...] {command} *vimshell-internal-less*
|
||||
{command}に引数を与えて実行する。必ず外部コマンドが実行される。
|
||||
vimshellがページャとなり、出力が多いコマンドを実行するときに有
|
||||
用である。
|
||||
シンタックスシュガーとして、次の形式も有効である。
|
||||
{command1} | {command2} | less
|
||||
入出力を行なうために新しいバッファが生成される。
|
||||
{command}が実行コマンドでない場合、|vimshell-internal-view|を実
|
||||
行する。
|
||||
iexe, exe, bg, texe, less はオプションを解釈し、それに基づい
|
||||
て挙動を変更する。詳しくは|vimshell-execute-options|を参
|
||||
照せよ。
|
||||
|
||||
--split={split-command}
|
||||
バッファの分割方向を指定する。このオプションが省略された場合、
|
||||
|g:vimshell_split_command|が使用される。
|
||||
|
||||
ls [{argument}...] *vimshell-internal-ls*
|
||||
外部コマンドのlsを適切な引数を与えて実行する。lsコマンドがイン
|
||||
ストールされていない場合、エラーとなる。特にWindows環境では、ls
|
||||
コマンドをどこかから入手する必要があるだろう。
|
||||
|
||||
mkcd {directory-name} *vimshell-internal-mkcd*
|
||||
{directory-name}を作成してから、そのディレクトリへ
|
||||
|vimshell-internal-cd|する。
|
||||
|
||||
nop *vimshell-internal-nop*
|
||||
何もしない。
|
||||
|
||||
open {filename} *vimshell-internal-open*
|
||||
{filename}を関連付け実行する。何が実行されるかはOSやデスクトッ
|
||||
プ環境に依存する。
|
||||
|
||||
popd [{directory-stack-number}] *vimshell-internal-popd*
|
||||
{directory-stack-number}で示されるディレクトリへ移動する。
|
||||
{directory-stack-number}は|vimshell-internal-dirs|で確認でき
|
||||
る。{directory-stack-number}を省略すると、0になる。
|
||||
他のシェルとは異なり、重複しない候補はpopdからは取り除かれない。
|
||||
|
||||
pwd *vimshell-internal-pwd*
|
||||
vimshellのカレントディレクトリを表示する。
|
||||
|
||||
repeat {cnt} {command} *vimshell-internal-repeat*
|
||||
{command}を{cnt}回実行する。
|
||||
|
||||
shell *vimshell-internal-shell*
|
||||
|g:vimshell_use_terminal_command|を用いて'shell'を起動する。シ
|
||||
グナルやトラップなど、vimshellでは対応できない用途にも対応する
|
||||
ことができる。
|
||||
|
||||
source {files} *vimshell-internal-source*
|
||||
Windows環境では、"cmd.exe", 他の環境では、'shell'を利用して、
|
||||
{files}を読み込む。{files}は環境変数を変化させるシェルスクリ
|
||||
プトである。環境変数の変化は、vimshellに反映される。
|
||||
|
||||
texe [{options}...] {command} *vimshell-internal-texe*
|
||||
{command}に引数を与えて実行する。必ず外部コマンドが実行される。
|
||||
exe, iexeとは違い、端末コマンドを実行することに特化している。入
|
||||
出力を行なうために新しいバッファが生成される。パイプを使うとエ
|
||||
ラーになる。
|
||||
|
||||
Note: このコマンドは、まだ動作が不完全である。
|
||||
|
||||
iexe, exe, bg, texe, less はオプションを解釈し、それに基づい
|
||||
て挙動を変更する。詳しくは |vimshell-execute-options|を参
|
||||
照せよ。
|
||||
|
||||
--split={split-command}
|
||||
バッファの分割方向を指定する。このオプションが省略された場合、
|
||||
|g:vimshell_split_command|が使用される。
|
||||
|
||||
time {command} *vimshell-internal-time*
|
||||
{command}を同期的に実行し、実行時間を表示する。
|
||||
|
||||
view [{options}...] {filenames}... *vimshell-internal-view*
|
||||
{filenames}を読み取り専用で別バッファに開く。ファイルの行数がウ
|
||||
インドウサイズよりも少ない場合、別バッファを開かず、catのように
|
||||
動作する。ファイルの中身をちょっと見てみたいときに便利である。
|
||||
--split={split-command}
|
||||
バッファの分割方向を指定する。このオプションが省略された場合、
|
||||
|g:vimshell_split_command|が使用される。
|
||||
|
||||
vi [{options}...] [{filenames}...] *vimshell-internal-vi*
|
||||
|vimshell-internal-vim|と同じ動作をする。
|
||||
|
||||
vim [{options}...] [{filenames}...] *vimshell-internal-vim*
|
||||
{filenames}を別バッファに開く。カレントディレクトリにある
|
||||
ファイルを手軽に編集したいときに便利である。
|
||||
{filenames}を省略すると、無名バッファを開く。
|
||||
|
||||
--split={split-command}
|
||||
バッファの分割方向を指定する。このオプションが省略された場合、
|
||||
|g:vimshell_split_command|が使用される。
|
||||
|
||||
vimdiff [{options}...] {filename1} {filename2} *vimshell-internal-vimdiff*
|
||||
{filename1}と{filename2}を|:vimdiff|で比較する。vimshellから
|
||||
diffを呼び出すのは不便なので、存分に活用するべきである。
|
||||
|
||||
--split={split-command}
|
||||
バッファの分割方向を指定する。このオプションが省略された場合、
|
||||
|g:vimshell_split_command|が使用される。
|
||||
|
||||
vimsh [{filename}] *vimshell-internal-vimsh*
|
||||
{filename}で表されるvimshellスクリプトファイルを実行する。ただ
|
||||
し制御構造が実装されていないため、あまり利用価値はない。
|
||||
{filename}を省略すると、新しいvimshellバッファを開く。
|
||||
|
||||
which {command} *vimshell-internal-which*
|
||||
{command}のフルパスを出力する。aliasも認識される。
|
||||
|
||||
whereis {command} *vimshell-internal-whereis*
|
||||
{command}のフルパスをすべて出力する。
|
||||
|
||||
==============================================================================
|
||||
SPECIAL COMMANDS *vimshell-special-commands*
|
||||
special commandはinternal commandとは違い、vimshellが最小限の解釈しかせずに、
|
||||
コマンドに制御が渡る。それだけ柔軟な解釈ができるが、引数をパースするのはそれ
|
||||
ぞれのコマンドの責任となる。
|
||||
|
||||
alias {alias-name} = {command} *vimshell-special-alias*
|
||||
vimshellにaliasを定義する。vimshellは{alias-name}がコマンド名と
|
||||
して使用されると、自動的に{command}に置き換える。普通のシェルと
|
||||
は違い、 = の前後に空白があっても動作する。
|
||||
|
||||
aliasは引数を取ることができる。引数は$$args変数により参照す
|
||||
る。
|
||||
>
|
||||
vimshell% alias echo=':echo "$$args"'
|
||||
vimshell% alias echo2=':echo "$$args[1]"'
|
||||
vimshell% alias echo3=':echo "$$args[2:]"'
|
||||
<
|
||||
galias {global-alias-name} = {command} *vimshell-internal-galias*
|
||||
vimshellにグローバルなaliasを定義する。vimshellは
|
||||
{global-alias-name}がコマン ドライン中に現われると、自動的に
|
||||
{command}に置き換える。|vimshell-internal-alias|とは違い、引数
|
||||
でも展開される。zshのグローバルエイリアスと良く似た機能である。
|
||||
|
||||
ただし、現状次のようなパイプ付きの展開がサポートされていない。
|
||||
>
|
||||
vimshell% galias G = '|grep'
|
||||
vimshell% ls G hoge
|
||||
<
|
||||
let ${var-name} = {expression} *vimshell-special-let*
|
||||
{var-name}の変数へ{expression}を代入する。
|
||||
{var-name}の先頭には$を付加しなければならない。
|
||||
シェル変数はそれぞれのvimshellバッファ固有の変数である。
|
||||
|
||||
環境変数に代入するには、変数名の先頭を大文字にする。
|
||||
>
|
||||
vimshell% let $Hoge = $hoge
|
||||
<
|
||||
普通のシェルと違って、 = の間に空白があってもなくても動作する。
|
||||
代入する式はVim scriptとなっているので、計算も自由自在である。
|
||||
ただしvimshellでは変数名の頭に必ず$を付けなければならない。コマ
|
||||
ンドの終了ステータスは$$statusに書き込まれまる。$$で始まる変数
|
||||
はvimshellの内部変数である。
|
||||
|
||||
sexe {command} *vimshell-special-sexe*
|
||||
{command}を'shell'上で実行する。 vimshellでの起動に不具合がある
|
||||
ときに使用する。 'shell'が適切に設定されていないと動作がおかし
|
||||
くなる。Windows環境では一瞬DOS窓が表示されてしまう。
|
||||
|
||||
vexe {expression} *vimshell-special-vexe*
|
||||
{expression}をVim Scriptの文として実行し、出力をvimshellバッ
|
||||
ファに書き出す。コマンドの実行後はvimshellバッファへと戻って
|
||||
こなければならない。もしこの規則が守られない場合、vimshellの
|
||||
状態は保証されない。
|
||||
vexeを直接使わなくても、:をプレフィクスとして実行しても同じ
|
||||
意味となる。ただし、:をプレフィクスとして実行すると、
|
||||
vimshellはメタ文字の解釈を一切行わない。
|
||||
例:
|
||||
>
|
||||
:ls
|
||||
<
|
||||
==============================================================================
|
||||
ALTER COMMAND *vimshell-alter-command*
|
||||
|
||||
kana氏の作成したaltercmd.vim[http://github.com/kana/vim-altercmd]というものがあ
|
||||
る。これはCommand line-modeでのコマンド名においてのみ展開される特殊なエイリアス
|
||||
である。普通のエイリアスよりも、誤爆しにくいという利点がある。
|
||||
|
||||
それをvimshell上にも実装した。vimshellにもエイリアス機能があるが、altercmd機能
|
||||
を用いると、展開結果が一目で分かる。本家とは違い、altercmdの再帰的展開にも対応
|
||||
している。
|
||||
|
||||
使用方法は、vimshellバッファ上で|vimshell#altercmd#define|を呼びだすだけである。
|
||||
autocmd FileTypeを使用すると、楽に定義できるだろう。
|
||||
>
|
||||
autocmd FileType vimshell
|
||||
\ call vimshell#altercmd#define('g', 'git')
|
||||
<
|
||||
==============================================================================
|
||||
HOOK *vimshell-hook*
|
||||
|
||||
vimshellには関数がまだ存在しないが、決められたフック地点でVim Scriptの関数が呼
|
||||
べるため、 vimshellの内部構造を熟知していれば、より柔軟な処理ができる。
|
||||
|
||||
次の例では、chpwdにフックを設定し、カレントディレクトリ移動時にlsを実行する
|
||||
ようにしている。
|
||||
>
|
||||
autocmd FileType vimshell
|
||||
\ call vimshell#hook#add('chpwd', 'my_chpwd', 'g:my_chpwd')
|
||||
|
||||
function! g:my_chpwd(args, context)
|
||||
call vimshell#execute('ls')
|
||||
endfunction
|
||||
<
|
||||
vimshellでは次のようなフック地点が用意されている。フック関数はargsという引数を
|
||||
表す変数と、contextというコンテキスト情報を引数に取る。フィルターとして動作する、
|
||||
一部のフック関数はcmdlineを第一引数に取る。
|
||||
|
||||
chpwd *vimshell-hook-chpwd*
|
||||
vimshellのカレントディレクトリが変更されるときに呼びだされる。
|
||||
第一引数は新しいカレントディレクトリである。
|
||||
|
||||
preparse *vimshell-hook-preparse*
|
||||
エイリアスのパース前に呼びだされる。第一引数はcmdlineというコマ
|
||||
ンドライン文字列で、戻り値は変更後のコマンドライン文字列である。
|
||||
|
||||
preexec *vimshell-hook-preexec*
|
||||
エイリアスのパース後、コマンドの実行前に呼びだされる。第一引数
|
||||
はcmdlineというコマンドライン文字列で、戻り値は変更後のコマンド
|
||||
ライン文字列である。
|
||||
|
||||
postexec *vimshell-hook-postexec*
|
||||
コマンドの実行後に呼びだされる。第一引数はcmdlineという実行した
|
||||
コマンドライン文字列である。
|
||||
|
||||
emptycmd *vimshell-hook-emptycmd*
|
||||
コマンド名が空のときに呼びだされる。第一引数はcmdlineというコマ
|
||||
ンドライン文字列で、戻り値は変更後のコマンドライン文字列である。
|
||||
|
||||
notfound *vimshell-hook-notfound*
|
||||
コマンドが存在しないときに呼びだされる。第一引数はcmdlineという
|
||||
コマンドライン文字列で、戻り値は変更後のコマンドライン文字列で
|
||||
ある。
|
||||
|
||||
preprompt *vimshell-hook-preprompt*
|
||||
コマンド実行後、プロンプト表示前に呼びだされる。
|
||||
|
||||
preinput *vimshell-hook-preinput*
|
||||
コマンド実行時において、ユーザーの入力後に呼びだされる。第一引
|
||||
数はinputというユーザー入力文字列で、戻り値は変更後の入力文字列
|
||||
である。普通|vimshell-internal-iexe|のバッファに使う。
|
||||
|
||||
postinput *vimshell-hook-postinput*
|
||||
コマンド実行時において、ユーザーの入力がプロセスに処理された後
|
||||
に呼びだされる。第一引数はinputというユーザー入力文字列である。
|
||||
普通|vimshell-internal-iexe|のバッファに使う。
|
||||
|
||||
cmdlineを簡易的に解析するなら、|vimproc#parser#split_args()|か、
|
||||
|vimproc#parser#split_args_through()|を使用する。この関数は引数に分割するコマン
|
||||
ドライン文字列を取る。|vimproc#parser#split_args()|はクォート文字列を評価するが、
|
||||
|vimproc#parser#split_args_through()|はクォート文字列をそのまま残す。この関数は
|
||||
;や&&, ||で表される複合文やパイプ、リダイレクト記号をうまく解析できないことに
|
||||
注意しなければならない。
|
||||
|
||||
==============================================================================
|
||||
TIPS *vimshell-tips*
|
||||
ここでは、その他の便利機能について紹介する。
|
||||
|
||||
ディレクトリスタック *vimshell-tips-directory-stack*
|
||||
vimshellでは、bashやzshのようなディレクトリスタックを完備してい
|
||||
る。しかも何も設定せずにauto_pushdしてくれるので、pushdコマンド
|
||||
は存在しない。ディレクトリスタックを参照するには
|
||||
|vimshell-internal-dirs|コマンド、ディレクトリスタックから
|
||||
|vimshell-internal-cd|するには |vimshell-internal-popd|コマンド
|
||||
を使用する。他のシェルと同様に、"cd -"でも
|
||||
|vimshell-internal-popd|と同じ動作になる。
|
||||
|
||||
auto_cd *vimshell-tips-auto_cd*
|
||||
ディレクトリ名で実行すると、そのディレクトリに移動する。zshの機
|
||||
能を移植した。例えば、..で上のディレクトリへ移動できる。 zshと
|
||||
は違い、特に設定せずに使用できる。
|
||||
|
||||
ブロック *vimshell-tips-block*
|
||||
ブロック構文もサポートしている。
|
||||
>
|
||||
vimshell% echo /hoge/piyo/{hoge,hogera}
|
||||
-> /hoge/piyo/hoge /hoge/piyo/hogera
|
||||
<
|
||||
zshのような数値展開も実装している。
|
||||
>
|
||||
vimshell% echo {00..09}
|
||||
-> 00 01 02 03 04 05 06 07 08 09
|
||||
<
|
||||
ワイルドカード *vimshell-tips-wildcard*
|
||||
ワイルドカードも普通に使える。指定されたファイルが存在しない場
|
||||
合、zshのようにエラーになる。
|
||||
>
|
||||
vimshell% ls *.htm
|
||||
<
|
||||
ワイルドカードの除外もサポートした。
|
||||
>
|
||||
vimshell% ls *~*.htm
|
||||
<
|
||||
'~'で区切ってパターンを記述することで、「パターンを除外したパターン」
|
||||
という意味になる。
|
||||
|
||||
バッククオート *vimshell-tips-backquote*
|
||||
コマンドの引数にコマンドの実行結果が使える。
|
||||
>
|
||||
vimshell% echo `ls`
|
||||
<
|
||||
Vim scriptの埋め込みもできる。
|
||||
>
|
||||
vimshell% echo `=3`
|
||||
<
|
||||
|
||||
fakecygpty *vimshell-tips-fakecygpty*
|
||||
fakecygptyとはKyotaro Horiguchiさんが開発した、Windowsのパイプ
|
||||
とCygwinのptyを接続させて動作させるためのコマンドである。例えば
|
||||
、次のコマンドでCygwinのsshと接続できる。
|
||||
>
|
||||
> fakecygpty ssh
|
||||
<
|
||||
Meadowのソースコードに含まれていて探すのが大変なので、私がソー
|
||||
スコードを再配布している。
|
||||
http://github.com/Shougo/fakecygpty
|
||||
自分でコンパイルするには、Cygwin環境上で
|
||||
>
|
||||
$ gcc fakecygpty.c -o fakecygpty.exe
|
||||
<
|
||||
というコマンドを実行する。あとはfakecygptyを$PATHの通ったところ
|
||||
に置けば準備完了である。
|
||||
>
|
||||
|
||||
sudo *vimshell-tips-sudo*
|
||||
vimshell Ver.9より、sudoはiexeやsudo内部コマンドを用いなくて
|
||||
も、そのまま実行できるようになった。ただし、Windows環境で
|
||||
sudoするためには、Windows環境ではsudo.exeが必要である。
|
||||
http://bitbucket.org/wantora/sudo/wiki/Home
|
||||
|
||||
日本語の取り扱い *vimshell-tips-japanese*
|
||||
'encoding'を自前で設定している環境(主にWindows)では、起動するコ
|
||||
マンドとエンコーディングの設定が合わず、日本語の出力が文字化け
|
||||
することがある。その場合、'termencoding'をコマンドのエンコーデ
|
||||
ィングと揃えると文字化けは解消される。
|
||||
Windows環境なら、"cp932"に設定すると良い。
|
||||
さらに、コマンドによってはUTF-8で出力することがある。その場合、
|
||||
exeやiexeの"--encoding"オプションを使用すると良い。
|
||||
>
|
||||
vimshell% iexe --encoding=utf8 ghci
|
||||
<
|
||||
==============================================================================
|
||||
UNITE SOURCES *vimshell-unite-sources*
|
||||
|
||||
ここでは、vimshellに添付されている、|unite|用sourceについて解説を行なう。
|
||||
|
||||
*vimshell-unite-source-vimshell-history*
|
||||
vimshell/history
|
||||
vimshellのヒストリを候補とする。インタラクティブバッファでも
|
||||
有効。候補はcompletion kindである。普通、mapping内で
|
||||
|unite#sources#vimshell_history#start_complete()|を呼び出し
|
||||
て使用する。
|
||||
デフォルトでは、<C-l>がvimshell/historyの呼び出しとなる。
|
||||
例:
|
||||
>
|
||||
inoremap <buffer> <expr><silent> <C-l> unite#sources#vimshell_history#start_complete()
|
||||
<
|
||||
|
||||
source別アクション
|
||||
|
||||
vimshell/history *vimshell-unite-action-vimshell-history*
|
||||
execute 履歴の実行
|
||||
edit 履歴の編集
|
||||
delete 履歴の削除
|
||||
|
||||
==============================================================================
|
||||
CREATE PLUGIN *vimshell-create-plugin*
|
||||
|
||||
vimshellのinternal commandとして、autoload/internal/以下にある*.vimファイルを読
|
||||
み込むため、 自分でそこにプラグインファイルを追加することで、簡単にコマンドが追
|
||||
加できる。
|
||||
|
||||
==============================================================================
|
||||
CHANGELOG *vimshell-changelog*
|
||||
|
||||
doc/vimshell.txtを参照せよ。
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:ft=help:norl:noet:fen:fdl=0:isk+=-:
|
||||
2712
vim/.vim/bundle/.neobundle/doc/vimshell.txt
Normal file
2712
vim/.vim/bundle/.neobundle/doc/vimshell.txt
Normal file
@@ -0,0 +1,2712 @@
|
||||
*vimshell.txt* Powerful shell implemented by VimScript
|
||||
|
||||
Version: 9.0
|
||||
Author : Shougo <Shougo.Matsu@gmail.com>
|
||||
License: MIT license {{{
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
}}}
|
||||
|
||||
CONTENTS *vimshell-contents*
|
||||
|
||||
Introduction |vimshell-introduction|
|
||||
Install |vimshell-install|
|
||||
Interface |vimshell-interface|
|
||||
Commands |vimshell-commands|
|
||||
Variables |vimshell-variables|
|
||||
Functions |vimshell-functions|
|
||||
Key mappings |vimshell-key-mappings|
|
||||
Vimshell buffer key mappings |vimshell-buffer-key-mappings|
|
||||
Interactive buffer key mappings |vimshell-interactive-buffer-key-mappings|
|
||||
Examples |vimshell-examples|
|
||||
Internal Commands |vimshell-internal-commands|
|
||||
Special Commands |vimshell-special-commands|
|
||||
Alter Command |vimshell-alter-command|
|
||||
Hook |vimshell-hook|
|
||||
Tips |vimshell-tips|
|
||||
Unite sources |vimshell-unite-sources|
|
||||
Create plugin |vimshell-create-plugin|
|
||||
Changelog |vimshell-changelog|
|
||||
|
||||
|
||||
==============================================================================
|
||||
INTRODUCTION *vimshell-introduction*
|
||||
|
||||
==============================================================================
|
||||
USAGE *vimshell-usage*
|
||||
|
||||
You can start vimshell in ":VimShell". Because vimshell works similar with
|
||||
a common shell, you may operate it intuitively. But vimshell perform the
|
||||
path appointment in '/'. Vimshell is misunderstood with escape sequence when
|
||||
you use '\' by Windows for a path and do not work.
|
||||
|
||||
ToDo
|
||||
|
||||
==============================================================================
|
||||
INSTALL *vimshell-install*
|
||||
|
||||
vimshell needs |vimproc|
|
||||
http://github.com/Shougo/vimproc
|
||||
|
||||
Please install vimproc Ver.5.0(or later) before use vimshell.
|
||||
And make proc.so
|
||||
|
||||
Make method:
|
||||
|
||||
* Mingw: >
|
||||
$ make -f make_mingw.mak
|
||||
|
||||
* Mac OS X: >
|
||||
$ make -f make_mac.mak
|
||||
|
||||
* Linux BSD: >
|
||||
$ make -f make_gcc.mak
|
||||
|
||||
* Visual Studio: >
|
||||
$ make -f make_msvc.mak
|
||||
|
||||
* Cygwin: >
|
||||
$ make -f make_cygwin.mak
|
||||
|
||||
After compile, copy autoload/vimproc.vim and autoload/vimproc/parser.vim and
|
||||
autoload/proc.so(or proc.dll) to autoload directory.
|
||||
Note: "proc.dll" compiled in Cygwin environment is only Cygwin Vim. Can't use
|
||||
in Windows Vim.
|
||||
|
||||
==============================================================================
|
||||
INTERFACE *vimshell-interface*
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
COMMANDS *vimshell-commands*
|
||||
|
||||
:VimShell *:VimShell*
|
||||
Run vimshell.
|
||||
|
||||
:VimShellCreate {path} *:VimShellCreate*
|
||||
Todo
|
||||
|
||||
:VimShellTab {path} *:VimShellTab*
|
||||
Todo
|
||||
|
||||
:VimShellPop {path} *:VimShellPop*
|
||||
Todo
|
||||
|
||||
:VimShellExecute {command} *:VimShellExecute*
|
||||
Todo
|
||||
|
||||
:VimShellInteractive [{command}] *:VimShellInteractive*
|
||||
Todo
|
||||
|
||||
:VimShellTerminal {command} *:VimShellTerminal*
|
||||
Todo
|
||||
|
||||
:VimShellSendString {string} *:VimShellSendString*
|
||||
Todo
|
||||
|
||||
:VimShellSendBuffer {bufname} *:VimShellSendBuffer*
|
||||
Todo
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
VARIABLES *vimshell-variables*
|
||||
|
||||
g:vimshell_prompt *g:vimshell_prompt*
|
||||
Todo
|
||||
|
||||
g:vimshell_user_prompt *g:vimshell_user_prompt*
|
||||
Todo
|
||||
>
|
||||
let g:vimshell_user_prompt = 'getcwd()'
|
||||
<
|
||||
Todo
|
||||
|
||||
g:vimshell_right_prompt *g:vimshell_right_prompt*
|
||||
Todo
|
||||
>
|
||||
g:vimshell_no_default_keymappings *g:vimshell_no_default_keymappings*
|
||||
Todo
|
||||
|
||||
g:vimshell_ignore_case *g:vimshell_ignore_case*
|
||||
Todo
|
||||
|
||||
g:vimshell_smart_case *g:vimshell_smart_case*
|
||||
Todo
|
||||
|
||||
g:vimshell_max_list *g:vimshell_max_list*
|
||||
Todo
|
||||
|
||||
g:vimshell_use_ckw *g:vimshell_use_ckw*
|
||||
Todo
|
||||
|
||||
g:vimshell_split_height *g:vimshell_split_height*
|
||||
Todo
|
||||
|
||||
g:vimshell_temporary_directory *g:vimshell_temporary_directory*
|
||||
Todo
|
||||
|
||||
g:vimshell_max_command_history *g:vimshell_max_command_history*
|
||||
Todo
|
||||
|
||||
g:vimshell_max_directory_stack *g:vimshell_max_directory_stack*
|
||||
Todo
|
||||
|
||||
g:vimshell_vimshrc_path *g:vimshell_vimshrc_path*
|
||||
Todo
|
||||
|
||||
g:vimshell_escape_colors *g:vimshell_escape_colors*
|
||||
Todo
|
||||
|
||||
g:vimshell_disable_escape_highlight *g:vimshell_disable_escape_highlight*
|
||||
Todo
|
||||
|
||||
g:vimshell_cat_command *g:vimshell_cat_command*
|
||||
Todo
|
||||
|
||||
g:vimshell_environment_term *g:vimshell_environment_term*
|
||||
Todo
|
||||
|
||||
g:vimshell_split_command *g:vimshell_split_command*
|
||||
Todo
|
||||
|
||||
g:vimshell_cd_command *g:vimshell_cd_command*
|
||||
Todo
|
||||
|
||||
g:vimshell_no_save_history_commands *g:vimshell_no_save_history_commands*
|
||||
Todo
|
||||
|
||||
g:vimshell_interactive_no_save_history_commands *g:vimshell_interactive_no_save_history_commands*
|
||||
Todo
|
||||
|
||||
g:vimshell_interactive_update_time *g:vimshell_interactive_update_time*
|
||||
Todo
|
||||
|
||||
g:vimshell_interactive_command_options *g:vimshell_interactive_command_options*
|
||||
Todo
|
||||
|
||||
g:vimshell_interactive_interpreter_commands *g:vimshell_interactive_interpreter_commands*
|
||||
Todo
|
||||
|
||||
g:vimshell_interactive_encodings *g:vimshell_interactive_encodings*
|
||||
Todo
|
||||
|
||||
g:vimshell_interactive_no_echoback_commands *g:vimshell_interactive_no_echoback_commands*
|
||||
Todo
|
||||
|
||||
g:vimshell_terminal_cursor *g:vimshell_terminal_cursor*
|
||||
Todo
|
||||
|
||||
g:vimshell_terminal_commands *g:vimshell_terminal_commands*
|
||||
Todo
|
||||
|
||||
g:vimshell_interactive_cygwin_commands *g:vimshell_interactive_cygwin_commands*
|
||||
Todo
|
||||
|
||||
g:vimshell_interactive_cygwin_path *g:vimshell_interactive_cygwin_path*
|
||||
Todo
|
||||
|
||||
g:vimshell_interactive_cygwin_home *g:vimshell_interactive_cygwin_home*
|
||||
Todo
|
||||
|
||||
g:vimshell_interactive_monochrome_commands *g:vimshell_interactive_monochrome_commands*
|
||||
Todo
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
KEY MAPPINGS *vimshell-key-mappings*
|
||||
|
||||
<Plug>(vimshell_split_switch) *<Plug>(vimshell_split_switch)*
|
||||
Todo
|
||||
|
||||
<Plug>(vimshell_split_create) *<Plug>(vimshell_split_create)*
|
||||
Todo
|
||||
|
||||
<Plug>(vimshell_switch) *<Plug>(vimshell_switch)*
|
||||
Todo
|
||||
|
||||
<Plug>(vimshell_create) *<Plug>(vimshell_create)*
|
||||
Todo
|
||||
|
||||
VIMSHELL BUFFER KEY MAPPINGS *vimshell-buffer-key-mappings*
|
||||
|
||||
Normal mode key mappings.
|
||||
|
||||
<Plug>(vimshell_enter) *<Plug>(vimshell_enter)*
|
||||
Execute command line.
|
||||
|
||||
<Plug>(vimshell_previous_prompt) *<Plug>(vimshell_previous_prompt)*
|
||||
Move to previous prompt from cursor.
|
||||
|
||||
<Plug>(vimshell_next_prompt) *<Plug>(vimshell_next_prompt)*
|
||||
Move to next prompt from cursor.
|
||||
|
||||
<Plug>(vimshell_delete_previous_output) *<Plug>(vimshell_delete_previous_output)*
|
||||
Delete previous output form cursor.
|
||||
|
||||
<Plug>(vimshell_paste_prompt) *<Plug>(vimshell_paste_prompt)*
|
||||
Paste cursor line to last prompt.
|
||||
|
||||
<Plug>(vimshell_move_end_argument) *<Plug>(vimshell_move_end_argument)*
|
||||
Move to command end argument.
|
||||
|
||||
<Plug>(vimshell_hide) *<Plug>(vimshell_hide)*
|
||||
Hide vimshell buffer.
|
||||
|
||||
<Plug>(vimshell_exit) *<Plug>(vimshell_exit)*
|
||||
Quit vimshell buffer.
|
||||
|
||||
<Plug>(vimshell_change_line) *<Plug>(vimshell_change_line)*
|
||||
Change whole line.
|
||||
|
||||
<Plug>(vimshell_delete_line) *<Plug>(vimshell_delete_line)*
|
||||
Delete whole line.
|
||||
|
||||
<Plug>(vimshell_hangup) *<Plug>(vimshell_hangup)*
|
||||
Terminate command.
|
||||
|
||||
<Plug>(vimshell_insert_head) *<Plug>(vimshell_insert_head)*
|
||||
<Plug>(vimshell_insert_enter) *<Plug>(vimshell_insert_enter)*
|
||||
<Plug>(vimshell_append_enter) *<Plug>(vimshell_append_enter)*
|
||||
<Plug>(vimshell_append_end) *<Plug>(vimshell_append_end)*
|
||||
Enter insert mode.
|
||||
|
||||
<Plug>(vimshell_clear) *<Plug>(vimshell_clear)*
|
||||
Redraw vimshell buffer.
|
||||
|
||||
<Plug>(vimshell_move_head) *<Plug>(vimshell_move_head)*
|
||||
Move to head.
|
||||
|
||||
<Plug>(vimshell_execute_by_background) *<Plug>(vimshell_execute_by_background)*
|
||||
Execute command by iexe.
|
||||
|
||||
Visual mode key mappings.
|
||||
<Plug>(vimshell_select_previous_prompt) *v_<Plug>(vimshell_select_previous_prompt)*
|
||||
Select previous prompt from cursor.
|
||||
|
||||
<Plug>(vimshell_select_next_prompt) *v_<Plug>(vimshell_select_next_prompt)*
|
||||
Select next prompt from cursor.
|
||||
|
||||
Insert mode key mappings.
|
||||
|
||||
<Plug>(vimshell_command_complete) *i_<Plug>(vimshell_command_complete)*
|
||||
Start completion.
|
||||
|
||||
<Plug>(vimshell_push_current_line) *i_<Plug>(vimshell_push_current_line)*
|
||||
Push current line command to command line stack.
|
||||
|
||||
<Plug>(vimshell_insert_last_word) *i_<Plug>(vimshell_insert_last_word)*
|
||||
Insert command last word.
|
||||
|
||||
<Plug>(vimshell_run_help) *i_<Plug>(vimshell_run_help)*
|
||||
View internal command help.
|
||||
|
||||
<Plug>(vimshell_move_head) *i_<Plug>(vimshell_move_head)*
|
||||
Move to line head.
|
||||
|
||||
<Plug>(vimshell_delete_backward_line) *i_<Plug>(vimshell_delete_backward_line)*
|
||||
Delete backward line from cursor.
|
||||
|
||||
<Plug>(vimshell_delete_backward_word) *i_<Plug>(vimshell_delete_backward_word)*
|
||||
Delete backward word from cursor.
|
||||
|
||||
<Plug>(vimshell_enter) *i_<Plug>(vimshell_enter)*
|
||||
Execute command.
|
||||
|
||||
<Plug>(vimshell_interrupt) *i_<Plug>(vimshell_interrupt)*
|
||||
Send interrupt.
|
||||
|
||||
<Plug>(vimshell_move_previous_window) *i_<Plug>(vimshell_move_previous_window)*
|
||||
Move to previous window.
|
||||
|
||||
<Plug>(vimshell_delete_backward_char) *i_<Plug>(vimshell_delete_backward_char)*
|
||||
<Plug>(vimshell_another_delete_backward_char) *i_<Plug>(vimshell_another_delete_backward_char)*
|
||||
Delete backward char from cursor.
|
||||
|
||||
<Plug>(vimshell_delete_forward_line) *i_<Plug>(vimshell_delete_forward_line)*
|
||||
Delete forward line from cursor.
|
||||
|
||||
<Plug>(vimshell_clear) *i_<Plug>(vimshell_clear)*
|
||||
Redraw vimshell buffer.
|
||||
|
||||
<Plug>(vimshell_execute_by_background) *i_<Plug>(vimshell_execute_by_background)*
|
||||
Execute command by iexe.
|
||||
|
||||
Normal mode default key mappings.
|
||||
{lhs} {rhs}
|
||||
-------- -----------------------------
|
||||
<CR> <Plug>(vimshell_enter)
|
||||
q <Plug>(vimshell_hide)
|
||||
Q <Plug>(vimshell_exit)
|
||||
<C-p> <Plug>(vimshell_previous_prompt)
|
||||
<C-n> <Plug>(vimshell_next_prompt)
|
||||
<C-k> <Plug>(vimshell_delete_previous_output)
|
||||
<C-y> <Plug>(vimshell_paste_prompt)
|
||||
E <Plug>(vimshell_move_end_argument)
|
||||
cc <Plug>(vimshell_change_line)
|
||||
dd <Plug>(vimshell_delete_line)
|
||||
I <Plug>(vimshell_insert_head)
|
||||
A <Plug>(vimshell_append_end)
|
||||
i <Plug>(vimshell_insert_enter)
|
||||
a <Plug>(vimshell_append_enter)
|
||||
^ <Plug>(vimshell_move_head)
|
||||
<C-c> <Plug>(vimshell_hangup)
|
||||
<C-l> <Plug>(vimshell_clear)
|
||||
<C-z> <Plug>(vimshell_execute_by_background)
|
||||
|
||||
Visual mode default key mappings.
|
||||
{lhs} {rhs}
|
||||
-------- -----------------------------
|
||||
<C-p> <Plug>(vimshell_select_previous_prompt)
|
||||
<C-n> <Plug>(vimshell_select_next_prompt)
|
||||
|
||||
Insert mode default key mappings.
|
||||
{lhs} {rhs}
|
||||
-------- -----------------------------
|
||||
<CR> <Plug>(vimshell_enter)
|
||||
<C-l> Start vimshell/history source
|
||||
<TAB> <Plug>(vimshell_command_complete)
|
||||
<C-a> <Plug>(vimshell_move_head)
|
||||
<C-u> <Plug>(vimshell_delete_backward_line)
|
||||
<C-w> <Plug>(vimshell_delete_backward_word)
|
||||
<C-z> (while execute) <Plug>(vimshell_execute_by_background)
|
||||
(other) <Plug>(vimshell_push_current_line)
|
||||
<C-t> <Plug>(vimshell_insert_last_word)
|
||||
<C-x><C-h> <Plug>(vimshell_run_help)
|
||||
<C-c> <Plug>(vimshell_interrupt)
|
||||
<C-h> <Plug>(vimshell_delete_backward_char)
|
||||
<BS> <Plug>(vimshell_delete_backward_char)
|
||||
<C-k> <Plug>(vimshell_delete_forward_line)
|
||||
<C-x> <Plug>(vimshell_move_previous_window)
|
||||
|
||||
VIMSHELL INTERACTIVE BUFFER KEY MAPPINGS *vimshell-interactive-buffer-key-mappings*
|
||||
|
||||
Normal mode key mappings.
|
||||
|
||||
<Plug>(vimshell_int_execute_line) *<Plug>(vimshell_int_execute_line)*
|
||||
Execute cursor line.
|
||||
|
||||
<Plug>(vimshell_int_previous_prompt) *<Plug>(vimshell_int_previous_prompt)*
|
||||
Move to previous prompt from cursor.
|
||||
|
||||
<Plug>(vimshell_int_next_prompt) *<Plug>(vimshell_int_next_prompt)*
|
||||
Move to next prompt from cursor.
|
||||
|
||||
<Plug>(vimshell_int_paste_prompt) *<Plug>(vimshell_int_paste_prompt)*
|
||||
Paste cursor line to last prompt.
|
||||
|
||||
<Plug>(vimshell_int_hangup) *<Plug>(vimshell_int_hangup)*
|
||||
Exit executing command.
|
||||
|
||||
<Plug>(vimshell_int_exit) *<Plug>(vimshell_int_exit)*
|
||||
Exit interactive buffer.
|
||||
|
||||
<Plug>(vimshell_int_restart_command) *<Plug>(vimshell_int_restart_command)*
|
||||
Restart command.
|
||||
|
||||
<Plug>(vimshell_int_change_line) *<Plug>(vimshell_int_change_line)*
|
||||
Change whole line.
|
||||
|
||||
<Plug>(vimshell_int_delete_line) *<Plug>(vimshell_int_delete_line)*
|
||||
Delete whole line.
|
||||
|
||||
<Plug>(vimshell_int_insert_enter) *<Plug>(vimshell_int_insert_enter)*
|
||||
<Plug>(vimshell_int_insert_head) *<Plug>(vimshell_int_insert_head)*
|
||||
<Plug>(vimshell_int_append_enter) *<Plug>(vimshell_int_append_enter)*
|
||||
<Plug>(vimshell_int_append_end) *<Plug>(vimshell_int_append_end)*
|
||||
Enter insert mode.
|
||||
|
||||
<Plug>(vimshell_int_clear) *<Plug>(vimshell_int_clear)*
|
||||
Redraw interactive buffer.
|
||||
|
||||
Insert mode key mappings.
|
||||
|
||||
<Plug>(vimshell_int_move_head) *i_<Plug>(vimshell_int_move_head)*
|
||||
Move to line head.
|
||||
|
||||
<Plug>(vimshell_int_delete_backward_line) *i_<Plug>(vimshell_int_delete_backward_line)*
|
||||
Delete backward line from cursor.
|
||||
|
||||
<Plug>(vimshell_int_delete_backward_word) *i_<Plug>(vimshell_int_delete_backward_word)*
|
||||
Delete backward word from cursor.
|
||||
|
||||
<Plug>(vimshell_int_execute_line) *i_<Plug>(vimshell_int_execute_line)*
|
||||
Execute current line.
|
||||
|
||||
<Plug>(vimshell_int_delete_backward_char) *i_<Plug>(vimshell_int_delete_backward_char)*
|
||||
<Plug>(vimshell_int_another_delete_backward_char) *i_<Plug>(vimshell_int_another_delete_backward_char)*
|
||||
Delete backward character from cursor.
|
||||
|
||||
<Plug>(vimshell_int_send_input) *i_<Plug>(vimshell_int_send_input)*
|
||||
Send user input.
|
||||
|
||||
<Plug>(vimshell_int_interrupt) *i_<Plug>(vimshell_int_interrupt)*
|
||||
Send interrupt to command.
|
||||
|
||||
<Plug>(vimshell_int_command_complete) *i_<Plug>(vimshell_int_command_complete)*
|
||||
Start completion.
|
||||
|
||||
<Plug>(vimshell_int_delete_forward_line) *i_<Plug>(vimshell_int_delete_forward_line)*
|
||||
Delete forward line from cursor.
|
||||
|
||||
Normal mode default key mappings.
|
||||
{lhs} {rhs}
|
||||
-------- -----------------------------
|
||||
<C-p> <Plug>(vimshell_int_previous_prompt)
|
||||
<C-n> <Plug>(vimshell_int_next_prompt)
|
||||
<CR> <Plug>(vimshell_int_execute_line)
|
||||
<C-y> <Plug>(vimshell_int_paste_prompt)
|
||||
<C-z> <Plug>(vimshell_int_restart_command)
|
||||
<C-c> <Plug>(vimshell_int_hangup)
|
||||
q <Plug>(vimshell_int_exit)
|
||||
cc <Plug>(vimshell_int_change_line)
|
||||
dd <Plug>(vimshell_int_delete_line)
|
||||
I <Plug>(vimshell_int_insert_head)
|
||||
A <Plug>(vimshell_int_append_end)
|
||||
i <Plug>(vimshell_int_insert_enter)
|
||||
a <Plug>(vimshell_int_append_enter)
|
||||
<C-l> <Plug>(vimshell_int_clear)
|
||||
|
||||
Insert mode default key mappings.
|
||||
{lhs} {rhs}
|
||||
-------- -----------------------------
|
||||
<C-h> <Plug>(vimshell_int_delete_backward_char)
|
||||
<BS> <Plug>(vimshell_int_delete_backward_char)
|
||||
<C-a> <Plug>(vimshell_int_move_head)
|
||||
<C-u> <Plug>(vimshell_int_delete_backward_line)
|
||||
<C-w> <Plug>(vimshell_int_delete_backward_word)
|
||||
<C-k> <Plug>(vimshell_int_delete_forward_line)
|
||||
<CR> <Plug>(vimshell_int_execute_line)
|
||||
<C-c> <Plug>(vimshell_int_interrupt)
|
||||
<C-l> Start vimshell/history source
|
||||
<C-v> <Plug>(vimshell_int_send_input)
|
||||
<C-n> <C-n>
|
||||
<TAB> Select candidate or start completion
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
FUNCTIONS *vimshell-functions*
|
||||
|
||||
vimshell#hook#set({hook-point}, {func-list}) *vimshell#hook#set()*
|
||||
Todo
|
||||
|
||||
vimshell#hook#get({hook-point}) *vimshell#hook#get()*
|
||||
Todo
|
||||
|
||||
vimshell#hook#add({hook-point}, {hook-name}, {func}) *vimshell#hook#add()*
|
||||
Todo
|
||||
|
||||
vimshell#hook#remove({hook-point}, {hook-name}) *vimshell#hook#remove()*
|
||||
Todo
|
||||
|
||||
==============================================================================
|
||||
EXAMPLES *vimshell-examples*
|
||||
>
|
||||
let g:vimshell_user_prompt = 'fnamemodify(getcwd(), ":~")'
|
||||
"let g:vimshell_right_prompt = 'vcs#info("(%s)-[%b]", "(%s)-[%b|%a]")'
|
||||
let g:vimshell_enable_smart_case = 1
|
||||
|
||||
if has('win32') || has('win64')
|
||||
" Display user name on Windows.
|
||||
let g:vimshell_prompt = $USERNAME."% "
|
||||
else
|
||||
" Display user name on Linux.
|
||||
let g:vimshell_prompt = $USER."% "
|
||||
|
||||
call vimshell#set_execute_file('bmp,jpg,png,gif', 'gexe eog')
|
||||
call vimshell#set_execute_file('mp3,m4a,ogg', 'gexe amarok')
|
||||
let g:vimshell_execute_file_list['zip'] = 'zipinfo'
|
||||
call vimshell#set_execute_file('tgz,gz', 'gzcat')
|
||||
call vimshell#set_execute_file('tbz,bz2', 'bzcat')
|
||||
endif
|
||||
|
||||
" Initialize execute file list.
|
||||
let g:vimshell_execute_file_list = {}
|
||||
call vimshell#set_execute_file('txt,vim,c,h,cpp,d,xml,java', 'vim')
|
||||
let g:vimshell_execute_file_list['rb'] = 'ruby'
|
||||
let g:vimshell_execute_file_list['pl'] = 'perl'
|
||||
let g:vimshell_execute_file_list['py'] = 'python'
|
||||
call vimshell#set_execute_file('html,xhtml', 'gexe firefox')
|
||||
|
||||
autocmd FileType vimshell
|
||||
\ call vimshell#altercmd#define('g', 'git')
|
||||
\| call vimshell#altercmd#define('i', 'iexe')
|
||||
\| call vimshell#altercmd#define('l', 'll')
|
||||
\| call vimshell#altercmd#define('ll', 'ls -l')
|
||||
\| call vimshell#hook#add('chpwd', 'my_chpwd', 'g:my_chpwd')
|
||||
|
||||
function! g:my_chpwd(args, context)
|
||||
call vimshell#execute('ls')
|
||||
endfunction
|
||||
|
||||
autocmd FileType int-* call s:interactive_settings()
|
||||
function! s:interactive_settings()
|
||||
endfunction
|
||||
<
|
||||
Todo
|
||||
|
||||
==============================================================================
|
||||
INTERNAL COMMANDS *vimshell-internal-commands*
|
||||
|
||||
Todo
|
||||
|
||||
Note: Todo
|
||||
>
|
||||
vimshell% echo hello | vim
|
||||
<
|
||||
|
||||
bg [{option}...] {command} *vimshell-internal-bg*
|
||||
Todo
|
||||
|
||||
Example:
|
||||
>
|
||||
vimshell% ls&
|
||||
<
|
||||
Todo
|
||||
|
||||
--filetype = {filetype-name}
|
||||
Todo
|
||||
|
||||
cd {directory-path} [{substitute-pattern}] *vimshell-internal-cd*
|
||||
Todo
|
||||
|
||||
clear *vimshell-internal-clear*
|
||||
Clear display.
|
||||
|
||||
dirs [{max}] *vimshell-internal-dirs*
|
||||
Todo
|
||||
|
||||
echo [{argument}...] *vimshell-internal-echo*
|
||||
print arguments.
|
||||
|
||||
eval {expression} *vimshell-internal-eval*
|
||||
Todo
|
||||
|
||||
exe [{option}...] {command} *vimshell-internal-exe*
|
||||
Todo
|
||||
|
||||
*vimshell-execute-options*
|
||||
--encoding = {encoding-name} *vimshell-execute-options-encoding*
|
||||
Todo
|
||||
|
||||
exit *vimshell-internal-exit*
|
||||
Exit vimshell buffer.
|
||||
|
||||
gcd [{directory-path}] *vimshell-internal-gcd*
|
||||
Todo
|
||||
|
||||
gendoc {command} {args} *vimshell-internal-gendoc*
|
||||
Todo
|
||||
|
||||
gexe {command} *vimshell-internal-gexe*
|
||||
Todo
|
||||
|
||||
h [{pattern}] *vimshell-internal-h*
|
||||
Todo
|
||||
|
||||
histdel {history-number} *vimshell-internal-histdel*
|
||||
Todo
|
||||
|
||||
history [{search-string}] *vimshell-internal-history*
|
||||
Todo
|
||||
|
||||
iexe [{options}...] {command} *vimshell-internal-iexe*
|
||||
Todo
|
||||
|
||||
Note:
|
||||
Todo
|
||||
|
||||
less [{options}...] {command} *vimshell-internal-less*
|
||||
Todo
|
||||
|
||||
ls [{argument}...] *vimshell-internal-ls*
|
||||
Todo
|
||||
|
||||
mkcd {directory-name} *vimshell-internal-mkcd*
|
||||
Todo
|
||||
|
||||
nop *vimshell-internal-nop*
|
||||
No operation.
|
||||
|
||||
open {filename} *vimshell-internal-open*
|
||||
Open {filename} by associated application.
|
||||
|
||||
popd [{directory-stack-number}] *vimshell-internal-popd*
|
||||
Todo
|
||||
|
||||
pwd *vimshell-internal-pwd*
|
||||
Print vimshell working directory.
|
||||
|
||||
repeat {cnt} {command} *vimshell-internal-repeat*
|
||||
Execute {command} {cnt} times.
|
||||
|
||||
shell *vimshell-internal-shell*
|
||||
Todo
|
||||
|
||||
source {files} *vimshell-internal-source*
|
||||
Todo
|
||||
|
||||
texe [{options}...] {command} *vimshell-internal-texe*
|
||||
Todo
|
||||
|
||||
Note: Todo
|
||||
|
||||
|
||||
time {command} *vimshell-internal-time*
|
||||
Todo
|
||||
|
||||
view [{options}...] {filenames}... *vimshell-internal-view*
|
||||
Todo
|
||||
|
||||
vi [{options}...] [{filenames}...] *vimshell-internal-vi*
|
||||
Same as |vimshell-internal-vim|.
|
||||
|
||||
vim [{options}...] [{filenames}...] *vimshell-internal-vim*
|
||||
Todo
|
||||
|
||||
vimdiff {filename1} {filename2} *vimshell-internal-vimdiff*
|
||||
Todo
|
||||
|
||||
vimsh [{filename}] *vimshell-internal-vimsh*
|
||||
Todo
|
||||
|
||||
which {command} *vimshell-internal-which*
|
||||
Todo
|
||||
|
||||
whereis {command} *vimshell-internal-whereis*
|
||||
Print {command} by full path.
|
||||
|
||||
==============================================================================
|
||||
SPECIAL COMMANDS *vimshell-special-commands*
|
||||
Todo
|
||||
|
||||
alias {alias-name} = {command} *vimshell-special-alias*
|
||||
Todo
|
||||
>
|
||||
vimshell% alias echo=':echo "$$args"'
|
||||
vimshell% alias echo2=':echo "$$args[1]"'
|
||||
vimshell% alias echo3=':echo "$$args[2:]"'
|
||||
<
|
||||
galias {global-alias-name} = {command} *vimshell-internal-galias*
|
||||
Todo
|
||||
>
|
||||
vimshell% galias G = '|grep'
|
||||
vimshell% ls G hoge
|
||||
<
|
||||
let ${var-name} = {expression} *vimshell-special-let*
|
||||
Todo
|
||||
>
|
||||
vimshell% let $Hoge = $hoge
|
||||
<
|
||||
sexe {command} *vimshell-special-sexe*
|
||||
Todo
|
||||
|
||||
vexe {expression} *vimshell-special-vexe*
|
||||
Todo
|
||||
|
||||
Example:
|
||||
>
|
||||
:ls
|
||||
<
|
||||
==============================================================================
|
||||
ALTER COMMAND *vimshell-alter-command*
|
||||
|
||||
Todo
|
||||
>
|
||||
autocmd FileType vimshell
|
||||
\ call vimshell#altercmd#define('g', 'git')
|
||||
<
|
||||
==============================================================================
|
||||
HOOK *vimshell-hook*
|
||||
|
||||
Todo
|
||||
>
|
||||
autocmd FileType vimshell
|
||||
\ call vimshell#hook#add('chpwd', 'my_chpwd', 'g:my_chpwd')
|
||||
|
||||
function! g:my_chpwd(args, context)
|
||||
call vimshell#execute('ls')
|
||||
endfunction
|
||||
<
|
||||
Todo
|
||||
|
||||
chpwd *vimshell-hook-chpwd*
|
||||
Todo
|
||||
|
||||
preparse *vimshell-hook-preparse*
|
||||
Todo
|
||||
|
||||
preexec *vimshell-hook-preexec*
|
||||
Todo
|
||||
|
||||
postexec *vimshell-hook-postexec*
|
||||
Todo
|
||||
|
||||
emptycmd *vimshell-hook-emptycmd*
|
||||
Todo
|
||||
|
||||
notfound *vimshell-hook-notfound*
|
||||
Todo
|
||||
|
||||
preprompt *vimshell-hook-preprompt*
|
||||
Todo
|
||||
|
||||
preinput *vimshell-hook-preinput*
|
||||
Todo
|
||||
|
||||
postinput *vimshell-hook-postinput*
|
||||
Todo
|
||||
|
||||
Todo
|
||||
|
||||
==============================================================================
|
||||
TIPS *vimshell-tips*
|
||||
Todo
|
||||
|
||||
directory stack *vimshell-tips-directory-stack*
|
||||
Todo
|
||||
|
||||
auto_cd *vimshell-tips-auto_cd*
|
||||
Todo
|
||||
|
||||
block *vimshell-tips-block*
|
||||
Todo
|
||||
>
|
||||
vimshell% echo /hoge/piyo/{hoge,hogera}
|
||||
-> /hoge/piyo/hoge /hoge/piyo/hogera
|
||||
<
|
||||
Todo
|
||||
>
|
||||
vimshell% echo {00..09}
|
||||
-> 00 01 02 03 04 05 06 07 08 09
|
||||
<
|
||||
wild card *vimshell-tips-wildcard*
|
||||
Todo
|
||||
>
|
||||
vimshell% ls *.htm
|
||||
<
|
||||
Todo
|
||||
>
|
||||
vimshell% ls *~*.htm
|
||||
<
|
||||
Todo
|
||||
|
||||
backquote *vimshell-tips-backquote*
|
||||
コマンドの引数にコマンドの実行結果が使える。
|
||||
>
|
||||
vimshell% echo `ls`
|
||||
<
|
||||
Vim scriptの埋め込みもできる。
|
||||
>
|
||||
vimshell% echo `=3`
|
||||
<
|
||||
|
||||
fakecygpty *vimshell-tips-fakecygpty*
|
||||
Todo
|
||||
>
|
||||
> fakecygpty ssh
|
||||
<
|
||||
Todo
|
||||
http://github.com/Shougo/fakecygpty
|
||||
>
|
||||
$ gcc fakecygpty.c -o fakecygpty.exe
|
||||
<
|
||||
Todo
|
||||
>
|
||||
==============================================================================
|
||||
UNITE SOURCES *vimshell-unite-sources*
|
||||
|
||||
Todo
|
||||
|
||||
*vimshell-unite-source-vimshell-history*
|
||||
vimshell/history
|
||||
Todo
|
||||
|
||||
Exmaple:
|
||||
>
|
||||
inoremap <buffer> <expr><silent> <C-l> unite#sources#vimshell_history#start_complete()
|
||||
<
|
||||
|
||||
actions:
|
||||
|
||||
vimshell/history *vimshell-unite-action-vimshell-history*
|
||||
execute Execute history
|
||||
edit Edit history
|
||||
delete Delete history.
|
||||
|
||||
==============================================================================
|
||||
CREATE PLUGIN *vimshell-create-plugin*
|
||||
|
||||
In this clause, I comment on a method to make plugin of vimshell. The
|
||||
ability of vimshell will spread by creating plugin by yourself.
|
||||
|
||||
==============================================================================
|
||||
CHANGELOG *vimshell-changelog*
|
||||
|
||||
2011-10-05
|
||||
- Improved vimshell#terminal#print().
|
||||
|
||||
2011-10-04
|
||||
- Improved earthquake syntax.
|
||||
- Fixed history execution.
|
||||
- Improved buffering.
|
||||
- Fixed vimshell#interactive#exit().
|
||||
- Refactored internal commands.
|
||||
- Added g:vimshell_use_terminal_command option.
|
||||
- Improved shell internal command.
|
||||
|
||||
2011-10-03
|
||||
- Fixed :VimShellExecute and :VimShellInteractive split behavior.
|
||||
- Improved earthquake syntax.
|
||||
|
||||
2011-09-28
|
||||
- Added time internal command.
|
||||
|
||||
2011-09-25
|
||||
- Fixed tags.
|
||||
|
||||
2011-09-24
|
||||
- Improved documentation.
|
||||
- Refactored mappings.
|
||||
|
||||
2011-09-23
|
||||
- Improved documentation.
|
||||
|
||||
2011-09-19
|
||||
- vim and view internal commands allow multiple files.
|
||||
- Refactored local variable names.
|
||||
- Fixed interactive output.
|
||||
|
||||
2011-09-18
|
||||
- Fixed hangup bugs.
|
||||
|
||||
2011-09-17
|
||||
- Improved vimshell initialize.
|
||||
- Fixed vimshell examples.
|
||||
|
||||
2011-09-16
|
||||
- Fixed stopinsert.
|
||||
- Improved g:vimshell_split_command behavior.
|
||||
- Fixed complete files.
|
||||
- Fixed iexe.
|
||||
|
||||
2011-09-15
|
||||
- Added <Plug>(vimshell_execute_by_background) keymapping.
|
||||
|
||||
2011-09-14
|
||||
- Fixed next prompt.
|
||||
- Fixed password input.
|
||||
- Improved Japanese documentation.
|
||||
|
||||
2011-09-13
|
||||
- Fixed history error.
|
||||
|
||||
2011-09-12
|
||||
- Fixed inputsecret() error.
|
||||
- Fixed tempname() problem.
|
||||
- Deleted sudo internal command.
|
||||
- Improved exe behavior.
|
||||
|
||||
2011-09-09
|
||||
- Improved execute continuation.
|
||||
- Improved commands history.
|
||||
- Fixed terminal.
|
||||
- Improved texe.
|
||||
|
||||
2011-09-08
|
||||
- Supported vimproc Ver.6
|
||||
- Improved error message.
|
||||
- Supported iexe error output.
|
||||
- exe use pty.
|
||||
- Improved interactive.
|
||||
|
||||
2011-09-07
|
||||
- Ver.9.0 development started.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
ChangeLog 8.0
|
||||
|
||||
2011-09-06
|
||||
- Fixed vimfiler function error.
|
||||
|
||||
2011-09-04
|
||||
- Improved buffer name.
|
||||
- Renamed save_dir.
|
||||
|
||||
2011-09-01
|
||||
- Use unite#start_complete().
|
||||
|
||||
2011-08-31
|
||||
- Fixed interactive history completion.
|
||||
- Fixed command completion.
|
||||
- Fixed manual completion error.
|
||||
|
||||
2011-08-29
|
||||
- Improved :VimShellPop behavior.
|
||||
|
||||
2011-08-27
|
||||
- Fixed for gdb.
|
||||
- Improved vimshell/history source.
|
||||
|
||||
2011-08-24
|
||||
- Fixed vimshell get prompt error.
|
||||
|
||||
2011-08-23
|
||||
- Fixed execute command behavior.
|
||||
- Set winfixheight.
|
||||
- Improved vimshell history error.
|
||||
- Improved updatetime.
|
||||
|
||||
2011-08-22
|
||||
- Fixed parser.
|
||||
|
||||
2011-08-21
|
||||
- Improved clear.
|
||||
- Improved :VimShellPop.
|
||||
|
||||
2011-08-20
|
||||
- Improved documentation.
|
||||
|
||||
2011-08-16
|
||||
- Added is_listed attribute.
|
||||
|
||||
2011-08-14
|
||||
- Fixed context error.
|
||||
|
||||
2011-08-13
|
||||
- Deleted bcd internal command.
|
||||
|
||||
2011-08-12
|
||||
- Fixed for complete and echodoc error.
|
||||
- Fixed documentation.
|
||||
|
||||
2011-08-10
|
||||
- Improved internal commands initialize.
|
||||
- Added vi internal command.
|
||||
- Improved open file mapping.
|
||||
|
||||
2011-08-09
|
||||
- Improved vimshell switch.
|
||||
|
||||
2011-08-03
|
||||
- Improved documentation.
|
||||
|
||||
2011-07-23
|
||||
- Deleted obsolute option.
|
||||
|
||||
2011-07-22
|
||||
- Fixed color table.
|
||||
|
||||
2011-07-21
|
||||
- Fixed vimshell initialize error.
|
||||
|
||||
2011-07-20
|
||||
- Fixed complete error in interactive buffer.
|
||||
- Improved set variables.
|
||||
- Implemented interrupt in interactive buffer.
|
||||
- Improved interrupt in vimshell buffer.
|
||||
|
||||
2011-07-13
|
||||
- Fixed clear bug.
|
||||
|
||||
2011-07-12
|
||||
- Fixed :VimShellSendString error.
|
||||
|
||||
2011-07-11
|
||||
- Fixed save interactive history.
|
||||
|
||||
2011-07-10
|
||||
- Fixed cd internal command.
|
||||
|
||||
2011-07-06
|
||||
- Improved open cursor file.
|
||||
|
||||
2011-07-05
|
||||
- Improved open cursor file.
|
||||
|
||||
2011-07-04
|
||||
- Added <Plug>(vimshell_move_head) mapping.
|
||||
- Improved <Plug>(vimshell_previous_prompt) and <Plug>(vimshell_next_prompt)
|
||||
|
||||
2011-07-02
|
||||
- Fixed preinput bug.
|
||||
|
||||
2011-07-01
|
||||
- Improved escape sequences.
|
||||
- Close popup if output.
|
||||
- Improved interactive output.
|
||||
|
||||
2011-06-25
|
||||
- Changed <Plug>(vimshell_paste_prompt) behavior.
|
||||
|
||||
2011-06-16
|
||||
- Fixed open_file().
|
||||
- Supported earthquake command.
|
||||
- Added g:vimshell_interactive_monochrome_commands option.
|
||||
|
||||
2011-06-15
|
||||
- Fixed execute_line().
|
||||
- Improved vimshell description.
|
||||
|
||||
2011-06-14
|
||||
- Fixed filename completion.
|
||||
- Fixed colorscheme problem.
|
||||
- Fixed :VimShellInteractive error.
|
||||
|
||||
2011-06-12
|
||||
- Improved open cursor file.
|
||||
|
||||
2011-06-10
|
||||
- Fixed vital error.
|
||||
|
||||
2011-06-08
|
||||
- Fixed restart keymapping.
|
||||
|
||||
2011-06-04
|
||||
- Fixed terminal print error.
|
||||
|
||||
2011-06-03
|
||||
- Improved hooks.
|
||||
- Added some hook functions.
|
||||
|
||||
2011-06-02
|
||||
- Added postinput hook.
|
||||
- Changed input hook to preinput hook.
|
||||
- Improved iexe and texe description.
|
||||
|
||||
2011-06-01
|
||||
- Improved hook.
|
||||
- Added input hook.
|
||||
- Fixed exit error.
|
||||
|
||||
2011-05-30
|
||||
- Fixed vimshell update bug.
|
||||
- Improved examples.
|
||||
- Improved previous/next prompt mappings in interactive.
|
||||
|
||||
2011-05-29
|
||||
- Improved iexe completion.
|
||||
- Improved description.
|
||||
- Added source internal command.
|
||||
- Improved :VimShellSendString command.
|
||||
|
||||
2011-05-20
|
||||
- Fixed vimshell error problem.
|
||||
|
||||
2011-05-18
|
||||
- Fixed vimshell completion error.
|
||||
- Fixed mappings error.
|
||||
|
||||
2011-05-17
|
||||
- Use neocomplcache filename_complete.
|
||||
|
||||
2011-05-15
|
||||
- Fixed conceal problem.
|
||||
- Fixed quote error.
|
||||
|
||||
2011-05-14
|
||||
- Fixed man.
|
||||
|
||||
2011-05-13
|
||||
- Use system_gui().
|
||||
- Use vimproc Ver.5.2.
|
||||
|
||||
2011-05-11
|
||||
- Supported hash tag in termtter syntax.
|
||||
|
||||
2011-05-10
|
||||
- Supported clojure.
|
||||
|
||||
2011-05-08
|
||||
- Fixed set nocompatible bug.
|
||||
|
||||
2011-04-27
|
||||
- Fixed vimshell history source.
|
||||
|
||||
2011-04-16
|
||||
- Fixed execute command line bug.
|
||||
- Improved filename completion.
|
||||
- Improved complete position.
|
||||
|
||||
2011-04-12
|
||||
- Improved history source.
|
||||
|
||||
2011-04-05
|
||||
- Supported sbt in Windows.
|
||||
|
||||
2011-04-01
|
||||
- Improved vimshell/history source.
|
||||
- Fixed interactive command bug.
|
||||
- Supported fsi interpreter.
|
||||
- Improved unite source split direction.
|
||||
|
||||
2011-03-25
|
||||
- Implemented unite highlight.
|
||||
- Deleted g:vimshell_external_history_path option.
|
||||
- Fixed delete action.
|
||||
- Improved vimproc check.
|
||||
- Fixed completion error when using neocomplcache.
|
||||
- Deleted obsolute completefuncs.
|
||||
- Added edit and execute actions.
|
||||
- Improved default_action.
|
||||
- Added unite source description.
|
||||
- Refactoringed vimshell history.
|
||||
|
||||
2011-03-23
|
||||
- Implemented vimshell history source.
|
||||
|
||||
2011-03-16
|
||||
- Improved concealed highlight.
|
||||
|
||||
2011-03-14
|
||||
- Deleted highlight oneline option.
|
||||
|
||||
2011-03-13
|
||||
- Implemented &.
|
||||
- Improved parser.
|
||||
|
||||
2011-03-08
|
||||
- Improved concealed color.
|
||||
|
||||
2011-03-07
|
||||
- Improved print.
|
||||
- Improved virtual file.
|
||||
- Implemented alias arguments.
|
||||
|
||||
2011-03-06
|
||||
- Use conceal when possible.
|
||||
- Fixed output error.
|
||||
|
||||
2011-03-05
|
||||
- Fixed : parse.
|
||||
- Improved vexe description.
|
||||
|
||||
2011-03-03
|
||||
- Fixed cmdline error.
|
||||
|
||||
2011-03-02
|
||||
- Save last executed command line.
|
||||
|
||||
2011-02-26
|
||||
- Fixed error_line() and print_line().
|
||||
- Fixed : parse.
|
||||
- Changed q keymapping behavior.
|
||||
|
||||
2011-02-25
|
||||
- Implemented Vim command execution(example :ls).
|
||||
|
||||
2011-02-24
|
||||
- Improved error output.
|
||||
|
||||
2011-02-23
|
||||
- Fixed output position bug.
|
||||
- Improved position restore.
|
||||
|
||||
2011-02-22
|
||||
- Improved interactive buffer update.
|
||||
|
||||
2011-02-16
|
||||
- Improved termtter syntax.
|
||||
|
||||
2011-02-15
|
||||
- Fixed kill.
|
||||
|
||||
2011-02-13
|
||||
- Fixed less initialization.
|
||||
|
||||
2011-02-12
|
||||
- Improved documentation.
|
||||
|
||||
2011-02-11
|
||||
- Improved timeout.
|
||||
|
||||
2011-02-10
|
||||
- Check ls command.
|
||||
|
||||
2011-01-28
|
||||
- Fixed hook#call().
|
||||
|
||||
2011-01-27
|
||||
- Fixed hook error.
|
||||
|
||||
2011-01-26
|
||||
- Implemented postexec hook.
|
||||
|
||||
2011-01-22
|
||||
- Fixed vimshell#print_line() error.
|
||||
|
||||
2011-01-19
|
||||
- Fixed move head bug.
|
||||
- Improved hooks.
|
||||
- Fixed history execution bug.
|
||||
- Catch hook error.
|
||||
|
||||
2011-01-17
|
||||
- Fixed error message position.
|
||||
|
||||
2011-01-16
|
||||
- Fixed vimshell#get_current_args() error.
|
||||
- Fixed search cursor file.
|
||||
|
||||
2011-01-12
|
||||
- Fixed English help.
|
||||
|
||||
2011-01-11
|
||||
- Fixed for Vim 7.0 bug.
|
||||
|
||||
2011-01-08
|
||||
- Improved vimproc error message.
|
||||
|
||||
2010-12-26
|
||||
- Improved history output(Experimental).
|
||||
|
||||
2010-12-25
|
||||
- Fixed :VimShellSendString.
|
||||
- Supported maxima in Windows.
|
||||
|
||||
2010-12-24
|
||||
- Improved usage.
|
||||
- Fixed :VimShellExecute complete function.
|
||||
|
||||
2010-12-23
|
||||
- Supported echodoc.
|
||||
- Added gendoc command.
|
||||
|
||||
2010-12-14
|
||||
- Implemented set winsize behavior.
|
||||
|
||||
2010-12-08
|
||||
- Restored cd behavior.
|
||||
|
||||
2010-12-07
|
||||
- Fixed less highlight.
|
||||
- Improved delete highlight.
|
||||
|
||||
2010-12-06
|
||||
- Changed <Plug>(vimshell_another_delete_backward_char) mapping.
|
||||
|
||||
2010-12-05
|
||||
- Fixed cd command.
|
||||
|
||||
2010-11-17
|
||||
- Improved less keymappings.
|
||||
- Improved view internal command.
|
||||
- Improved less internal command.
|
||||
|
||||
2010-11-16
|
||||
- Supported directory_mru.
|
||||
|
||||
2010-11-07
|
||||
- Improved modeline.
|
||||
|
||||
2010-11-04
|
||||
- Added g:vimshell_cd_command option.
|
||||
|
||||
2010-11-03
|
||||
- Changed <Plug>(vimshell_delete_previous_output) default mapping.
|
||||
|
||||
2010-10-30
|
||||
- Added g:vimshell_interactive_no_echoback_commands option.
|
||||
- Fixed echoback.
|
||||
|
||||
2010-10-28
|
||||
- Fixed doc tags.
|
||||
- Fixed terminal bug.
|
||||
- Improved util.vim.
|
||||
|
||||
2010-10-26
|
||||
- Fixed typo.
|
||||
- Improved change current directory.
|
||||
|
||||
2010-10-21
|
||||
- Fixed escape bug.
|
||||
- Fixed filename execution.
|
||||
- Check t:unite_buffer_dictionary.
|
||||
|
||||
2010-10-19
|
||||
- Improved interactive update.
|
||||
- Added g:vimshell_terminal_commands option.
|
||||
|
||||
2010-10-14
|
||||
- Improved execute line.
|
||||
- Fixed delete backward line.
|
||||
- Stopinsert in vimdiff.
|
||||
|
||||
2010-10-12
|
||||
- Fixed switch directory bug.
|
||||
|
||||
2010-10-08
|
||||
- Improved window move.
|
||||
- Improved vimshell switch.
|
||||
|
||||
2010-10-07
|
||||
- Don't resolve link.
|
||||
|
||||
2010-10-05
|
||||
- Fixed modifiable error.
|
||||
|
||||
2010-10-02
|
||||
- Fixed typo.
|
||||
- Fixed variables name.
|
||||
|
||||
2010-10-01
|
||||
- Deleted completion imdisable().
|
||||
- Improved iskeyword.
|
||||
- Fixed clear bug.
|
||||
|
||||
2010-09-30
|
||||
- Improved clear.
|
||||
|
||||
2010-09-29
|
||||
- Added g:vimshell_enable_auto_slash.
|
||||
- Fixed vimshell switch bug.
|
||||
- Improved <Plug>(vimshell_switch).
|
||||
- Fixed abbr in command completion.
|
||||
|
||||
2010-09-28
|
||||
- Fixed <Plug>(vimshell_delete_backward_line) error.
|
||||
- Fixed glob().
|
||||
- Fixed conceal cursor.
|
||||
- Fixed glob().
|
||||
- Implemented insert / (experimental).
|
||||
|
||||
2010-09-27
|
||||
- Improved filename completion.
|
||||
- Fixed complete executable.
|
||||
|
||||
2010-09-23
|
||||
- Fixed send_string().
|
||||
- Fixed completion error.
|
||||
- Fixed eof.
|
||||
- Refactoringed vimshell completion.
|
||||
|
||||
2010-09-21
|
||||
- Supported b:interactive.is_close_immediately for iexe buffers.
|
||||
- Fixed typo.
|
||||
- Merged from ujihisa.
|
||||
- Changed completion keymappings.
|
||||
- Changed clear keymappings.
|
||||
|
||||
2010-09-16
|
||||
- Improved command split behavior.
|
||||
|
||||
2010-09-15
|
||||
- Fixed japanese documentation.
|
||||
|
||||
2010-09-09
|
||||
- Implemented <Plug>(vimshell_int_clear).
|
||||
|
||||
2010-09-05
|
||||
- Ver.8.0 development started.
|
||||
- Use vimproc Ver.5.
|
||||
- Changed completion keymappings.
|
||||
- Fixed for scala.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
ChangeLog 7.2
|
||||
|
||||
2010-09-04
|
||||
- Deleted VimShellBang and VimShellRead commands.
|
||||
|
||||
2010-09-03
|
||||
- Fixed cursor.
|
||||
|
||||
2010-09-02
|
||||
- Improved insert enter.
|
||||
- Improved interactive cursor.
|
||||
- Improved interactive update.
|
||||
|
||||
2010-09-01
|
||||
- Improved insert enter.
|
||||
- Improved output.
|
||||
|
||||
2010-08-29
|
||||
- Improved syntax.
|
||||
|
||||
2010-08-26
|
||||
- Supported grep pattern.
|
||||
- Added syntax highlight.
|
||||
|
||||
2010-08-25
|
||||
- Fixed filename completion.
|
||||
|
||||
2010-08-23
|
||||
- Fixed alias parse.
|
||||
- Fixed texe error.
|
||||
- Improved save variables.
|
||||
|
||||
2010-08-22
|
||||
- Improved iexe mappings.
|
||||
- Improved vimshell mappings.
|
||||
- Improved get_cur_text.
|
||||
- Fixed prompt bug.
|
||||
|
||||
2010-08-20
|
||||
- Stop insert when execute exit.
|
||||
|
||||
2010-08-19
|
||||
- Improved column.
|
||||
- Fixed update.
|
||||
- Improved interactive completion.
|
||||
|
||||
2010-08-18
|
||||
- Fixed initialization error check.
|
||||
- Fixed environment variables.
|
||||
- Fixed output bug.
|
||||
|
||||
2010-08-17
|
||||
- Implemented which internal command.
|
||||
- Implemented wherereis internal command.
|
||||
|
||||
2010-08-15
|
||||
* Ver.7.2 development started.
|
||||
- Improved wildcard.
|
||||
- Fixed wildcard parse.
|
||||
- Implemented file modifier.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
ChangeLog 7.1:
|
||||
2010-08-15
|
||||
- Improved error detection.
|
||||
|
||||
2010-08-13
|
||||
- Supported set syntax in bg and less command.
|
||||
- Fixed less parse.
|
||||
- Improved terminal highlight.
|
||||
- Implemented user syntax.
|
||||
- Fixed :VimShellBang and :VimShellRead error.
|
||||
|
||||
2010-08-08
|
||||
- Improved redirection.
|
||||
- Fixed conceal parse.
|
||||
|
||||
2010-08-07
|
||||
- Improved vimshell#switch_shell().
|
||||
- Implemented <Plug>(vimshell_move_previous_window).
|
||||
|
||||
2010-08-05
|
||||
- Improved iexe completion.
|
||||
- Improved right prompt.
|
||||
- Improved cursor word check.
|
||||
- Fixed delete line bug.
|
||||
- Improved change line.
|
||||
- Improved process exists check.
|
||||
- No change $SHELL.
|
||||
- Improved default settings.
|
||||
|
||||
2010-08-04
|
||||
- Improved send_string().
|
||||
- Check interactive command.
|
||||
- Implemented print exit value.
|
||||
|
||||
2010-08-03
|
||||
- Changed history mappings.
|
||||
- Improved mappings name.
|
||||
- Fixed conditional code bug.
|
||||
- Ignore ** pattern when completion.
|
||||
|
||||
2010-08-02
|
||||
- Implemented interactive command completion.
|
||||
- Improved mappings.
|
||||
- Improved send string.
|
||||
- Fixed col.
|
||||
- Fixed filename completion.
|
||||
|
||||
2010-08-01
|
||||
- Deleted interactive command complete.
|
||||
- Deleted terminal filter.
|
||||
|
||||
2010-07-31
|
||||
- Fixed pipe parse bug.
|
||||
- Added less internal command.
|
||||
- Improved buffer name.
|
||||
- Implemented <Plug>(vimshell_less_next_half_screen).
|
||||
- Fixed tags error.
|
||||
|
||||
2010-07-30
|
||||
- Set wrap.
|
||||
- Improved <Plug>(vimshell_clear).
|
||||
- Fixed h internal command.
|
||||
- Implemented <Plug>(vimshell_select_previous_prompt) and <Plug>(vimshell_select_next_prompt) mappings.
|
||||
|
||||
2010-07-27
|
||||
- Improved documentation.
|
||||
- Fixed s:send_region().
|
||||
- Fixed execute continuation.
|
||||
|
||||
2010-07-26
|
||||
- Fixed documentation.
|
||||
- Supported conceal feature in Vim 7.3.
|
||||
|
||||
2010-07-25
|
||||
- Fixed error print.
|
||||
- Added g:vimshell_interactive_interpreter_commands option.
|
||||
- Fixed texe filetype.
|
||||
- Improved interpreter commands.
|
||||
- Improved :VimShellInteractive, :VimshellTerminal, :VimShellExecute behavior.
|
||||
- Fixed get type.
|
||||
- Implemented <Plug>(vimshell_interrupt).
|
||||
- Fixed don't call preexec bug.
|
||||
- Improved vimshell#system().
|
||||
- Improved vimshell#set_dictionary_helper().
|
||||
|
||||
2010-07-24
|
||||
- Fixed caching check.
|
||||
- Implemented asyncronous exe.
|
||||
- Fixed :VimShellInteractive, :VimshellTerminal, :VimShellExecute error.
|
||||
- Clear previous highlight.
|
||||
|
||||
2010-07-23
|
||||
- Implemented g:vimshell_vcs_print_null option.
|
||||
- Implemented timeout in vcs.
|
||||
- Improved documentation.
|
||||
- Improved drawing character set.
|
||||
- Improved scroll down.
|
||||
- Implemented wrap around bs.
|
||||
- Implemented key mappings helper function.
|
||||
- Fixed default mappings bug.
|
||||
|
||||
2010-07-22
|
||||
- Improved search cursor file.
|
||||
- Added :VimShellSendBuffer command.
|
||||
- Changed terminal filetype.
|
||||
- Improved multibyte.
|
||||
- Optimized escape sequence.
|
||||
- Improved scroll region.
|
||||
- Implemented reset escape sequence.
|
||||
- Improved interactive.
|
||||
- Fixed expand alias.
|
||||
- Improved parser.
|
||||
|
||||
2010-07-21
|
||||
- Improved initialize autoload.
|
||||
|
||||
2010-07-18
|
||||
- Fixed <Plug>(vimshell_int_send_input) error.
|
||||
|
||||
2010-07-17
|
||||
- Improved killed message.
|
||||
- Implemented pipe.
|
||||
- Optimized head match.
|
||||
- Improved print error.
|
||||
|
||||
2010-07-15
|
||||
- Improved tilde substitution.
|
||||
|
||||
2010-07-14
|
||||
- Changed list and wrap settings.
|
||||
|
||||
2010-07-13
|
||||
- Improved terminal update.
|
||||
- Fixed scrolling region.
|
||||
|
||||
2010-07-12
|
||||
- Fixed history count.
|
||||
- Fixed for neocomplcache Ver.5.1.
|
||||
- Improved eskk and vimproc check.
|
||||
- Improved output check.
|
||||
- Fixed 256 colors highlight bug.
|
||||
- Implemented magic equal completion.
|
||||
- Implemented change cursor shape.
|
||||
- Added g:vimshell_terminal_cursor.
|
||||
- Added some keys.
|
||||
- Implemented multibyte cursor move.
|
||||
|
||||
2010-07-11
|
||||
- ReFixed listchars.
|
||||
- Improved highlight.
|
||||
- Improved g:vimshell_escape_colors.
|
||||
- Improved output check.
|
||||
|
||||
2010-07-10
|
||||
- Fixed listchars.
|
||||
|
||||
2010-07-09
|
||||
- Fixed interactive position.
|
||||
- Fixed output bug.
|
||||
- Fixed interactive history error.
|
||||
- Improved texe update.
|
||||
- Fixed iexe execute bug.
|
||||
- Fixed texe mappings.
|
||||
- Fixed some error.
|
||||
- Added <Plug>(vimshell_term_execute_line) mapping.
|
||||
- Improved listchars.
|
||||
- Fixed command line completion.
|
||||
- Fixed initialize bug.
|
||||
- Deleted screen internal command.
|
||||
- Improved commands.
|
||||
- Improved args complete.
|
||||
- Improved helper function name.
|
||||
- Improved internal helper function.
|
||||
|
||||
2010-07-07
|
||||
* Ver.7.1 development started.
|
||||
- Fixed documentation.
|
||||
- Using dictionary.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
ChangeLog 7.0:
|
||||
2010-07-07
|
||||
- Fixed auto completion bug.
|
||||
- Improved :VimShellInteractive and :VimShellExecute and :VimShellTerminal commands.
|
||||
- Improved termtter syntax.
|
||||
|
||||
2010-07-06
|
||||
- Fixed directory compltion bug.
|
||||
|
||||
2010-07-05
|
||||
- Improved texe update.
|
||||
|
||||
2010-07-04
|
||||
- Improved history.
|
||||
- Added g:vimshell_external_history_path option.
|
||||
- Improved history and h command.
|
||||
- Highlights history output.
|
||||
- Implemented texe completion.
|
||||
- Improved commands completion.
|
||||
- Check window size.
|
||||
|
||||
2010-07-03
|
||||
- Improved texe update.
|
||||
- Fixed terminal clear bug.
|
||||
- Improved escape highlight.
|
||||
- Added g:vimshell_disable_escape_highlight option.
|
||||
- Detect g:neocomplcache_enable_auto_select option.
|
||||
|
||||
2010-07-02
|
||||
- Set $COLUMNS and $LINES.
|
||||
- Set $VIMSHELL_TERM.
|
||||
- Added g:vimshell_environment_term option.
|
||||
- Improved interactive history.
|
||||
- Set nomodifiable in texe.
|
||||
- Implemented send input.
|
||||
- Implemented texe auto update.
|
||||
|
||||
2010-07-01
|
||||
- Added :VimShellTerminal command.
|
||||
- Improved split window.
|
||||
- Fixed <Plug>(vimshell_clear) bug.
|
||||
- Improved texe.
|
||||
- Fixed escape error in texe.
|
||||
- Fixed initial output in texe.
|
||||
- Supported scroll.
|
||||
|
||||
2010-06-30
|
||||
- Improved cursor move.
|
||||
|
||||
2010-06-29
|
||||
- Fixed texe update.
|
||||
|
||||
2010-06-28
|
||||
- Fixed repeat error.
|
||||
- Refactoringed interactive.
|
||||
- Improved update timing.
|
||||
- Fixed print error.
|
||||
- Improved <Plug>(vimshell_int_execute_line) behavior.
|
||||
- Fixed print bug.
|
||||
- Merged hamaco's change.
|
||||
- Fixed dirs and bcd and clear error.
|
||||
- Fixed open cursor file.
|
||||
- Fixed cursor position in texe.
|
||||
|
||||
2010-06-27
|
||||
- Added g:vimshell_split_command option.
|
||||
- Improved terminal mappings.
|
||||
|
||||
2010-06-26
|
||||
- Fixed output for gosh.
|
||||
|
||||
2010-06-25
|
||||
- Improved mappings.
|
||||
- Changed background filetype.
|
||||
- Implemented change title escape sequence.
|
||||
- Improved terminal information.
|
||||
- Added g:vimshell_interactive_no_save_history_commands option.
|
||||
- Fixed append history.
|
||||
- Implemented few escape sequences.
|
||||
- Implemented texe.
|
||||
|
||||
2010-06-24
|
||||
- Fixed auto update.
|
||||
|
||||
2010-06-22
|
||||
- Improved gexe.
|
||||
- Improved iexe filetype.
|
||||
- Improved command completion.
|
||||
- Fixed directory stack completion.
|
||||
- Added g:vimshell_interactive_encodings option.
|
||||
- Changed g:vimshell_history_max_size as g:vimshell_max_command_history.
|
||||
- Added g:vimshell_max_directory_stack option.
|
||||
- Improved append history.
|
||||
- Improved popd and cd.
|
||||
|
||||
2010-06-21
|
||||
- Fixed command completion bug.
|
||||
- Added fakecygpty description.
|
||||
|
||||
2010-06-20
|
||||
- Use vimproc Ver.4.1.
|
||||
- Added g:vimshell_interactive_command_options and g:vimshell_interactive_cygwin_commands.
|
||||
- Added g:vimshell_interactive_cygwin_path and g:vimshell_interactive_cygwin_home.
|
||||
- Improved vimproc check.
|
||||
- Revised help file.
|
||||
|
||||
2010-06-19
|
||||
- Improved get cur_text.
|
||||
- Fixed filename completion bug.
|
||||
- Fixed PATH_SEPARATOR error.
|
||||
- Fixed command complete.
|
||||
|
||||
2010-06-18
|
||||
- Fixed expand glob bug.
|
||||
- Improved escape filter.
|
||||
- Added g:vimshell_cat_command option.
|
||||
- Refactoringed.
|
||||
- Improved imdisable.
|
||||
- Fixed fatal print bug.
|
||||
- Fixed cdpath complete.
|
||||
|
||||
2010-06-16
|
||||
- Improved vimshell#complete#helper#files() and vimshell#complete#helper#cdpath_directories().
|
||||
- Improved highlight sequences.
|
||||
- Fixed print_prompt() bug.
|
||||
- Implemented delete_backword_char escape sequence.
|
||||
- Added some escape sequences support.
|
||||
- Improved echoback check.
|
||||
|
||||
2010-06-15
|
||||
- Improved interactive update.
|
||||
- Optimized escape sequence.
|
||||
- Optimized highlight escape sequence.
|
||||
- Improved highlight escape sequence.
|
||||
- Improved skip prompt.
|
||||
- Fixed context bug.
|
||||
- Fixed window split bug.
|
||||
- Fixed keyword filter error.
|
||||
- Fixed escape parse bug.
|
||||
|
||||
2010-06-14
|
||||
- Overwrite text in vimshell#terminal#print().
|
||||
- Changed hook specification.
|
||||
- Improved parse alias.
|
||||
- Deleted auto_popd.
|
||||
- Implemented vimshell#hook#get().
|
||||
|
||||
2010-06-13
|
||||
- Fixed vimsh error.
|
||||
- Improved print_prompt() behavior.
|
||||
- Deleted hide internal command.
|
||||
- Improved error message.
|
||||
- Improved escape sequence.
|
||||
|
||||
2010-06-12
|
||||
- Added <Plug>(vimshell_change_line) and <Plug>(vimshell_delete_line) keymappings.
|
||||
- Improved auto update.
|
||||
- Added <Plug>(vimshell_int_delete_word) and <Plug>(vimshell_insert_head) keymappings.
|
||||
- Refactoringed mappings.
|
||||
- Set $EDITOR to cat.
|
||||
- Detect blocked time.
|
||||
- Improved another <Plug>(vimshell_another_delete_backword_char).
|
||||
- Improved popd.
|
||||
- Implemented popd completion.
|
||||
- Optimized filter.
|
||||
- Supported symbolic link and Win32 shortcut.
|
||||
- Improved resolve.
|
||||
|
||||
2010-06-11
|
||||
- Improved undo.
|
||||
- Changed <Plug>(vimshell_int_restart_command) default keymappings.
|
||||
|
||||
2010-06-10
|
||||
- Improved iskeyword for altercmd.
|
||||
- Improved skk.vim check.
|
||||
- Fixed <Plug>(vimshell_int_restart_command) command.
|
||||
|
||||
2010-06-09
|
||||
- Fixed auto update and escape sequence error bug.
|
||||
- Fixed change position bug when auto update.
|
||||
|
||||
2010-06-08
|
||||
- Call explorer in vim and view.
|
||||
|
||||
2010-06-07
|
||||
- Optimized control sequences check.
|
||||
- Refactoringed terminal functions.
|
||||
- Fixed <C-g>u bug.
|
||||
|
||||
2010-06-06
|
||||
- Fixed escape bug.
|
||||
- Fixed update cursor move bug.
|
||||
- Improved output routine.
|
||||
- Improved highlight.
|
||||
- Added some escape sequence functions.
|
||||
|
||||
2010-06-04
|
||||
- Improved URL open in iexe.
|
||||
- Improved iexe buffer update.
|
||||
- Improved open file in vimshell buffer.
|
||||
- Improved append history timing.
|
||||
|
||||
2010-06-01
|
||||
- Fixed error when exe.
|
||||
- Fixed popd error.
|
||||
|
||||
2010-05-30
|
||||
- Improved update iexe buffer.
|
||||
|
||||
2010-05-30
|
||||
- Improved echoback.
|
||||
- Improved multiline input.
|
||||
- Improved Japanese help.
|
||||
- sudo supported Windows.
|
||||
- Implemented interactive history complete.
|
||||
- Added g:vimshell_no_save_history_programs variable.
|
||||
- Added g:vimshell_interactive_update_time variable.
|
||||
- Improved update iexe buffer.
|
||||
- Fixed prompt history bug.
|
||||
|
||||
2010-05-29
|
||||
- Improved run help.
|
||||
- Check exists('*SkkDisable').
|
||||
- Improved dummy move in iexe.
|
||||
|
||||
2010-05-28
|
||||
- Disable ime when execute <Plug>(vimshell_int_execute_line).
|
||||
- Supported eskk.vim.
|
||||
|
||||
2010-05-26
|
||||
- Fixed eval back quote.
|
||||
|
||||
2010-05-25
|
||||
- Improved iexe update.
|
||||
|
||||
2010-05-24
|
||||
- Improved open.
|
||||
- Improved vimshell#system().
|
||||
- Set interactive filetype when iexe buffer is initialized.
|
||||
- Added <Plug>(vimshell_interactive_another_delete_backword_char) <Plug>(vimshell_delete_backword_char) and <Plug>(vimshell_another_delete_backword_char) mappings.
|
||||
- Fixed error.
|
||||
|
||||
2010-05-23
|
||||
- Fixed cd error.
|
||||
- Fixed <C-e> behavior in iexe.
|
||||
- Improved interactive complete.
|
||||
- Improved alias parse.
|
||||
- Added :VimShellRead command.
|
||||
|
||||
2010-05-19
|
||||
- Fixed error in output check.
|
||||
- Fixed output.
|
||||
- Improved error line.
|
||||
|
||||
2010-05-18
|
||||
- Added :VimShellBang command.
|
||||
- Fixed output check error.
|
||||
- Improved output check.
|
||||
- Improved autocmd.
|
||||
|
||||
2010-05-15
|
||||
* Improved output check.
|
||||
* Improved Cygwin detect.
|
||||
|
||||
2010-05-14
|
||||
* Improved disable bell.
|
||||
|
||||
2010-05-13
|
||||
* Improved environment detect.
|
||||
* Deleted g:vimshell_history_path option.
|
||||
* Added g:vimshell_temporary_directory option.
|
||||
* Revised help file.
|
||||
* Fixed h bug.
|
||||
* Changed history path.
|
||||
|
||||
2010-05-11
|
||||
* Changed variables name.
|
||||
|
||||
2010-05-10
|
||||
* Fixed error in output check.
|
||||
* Improved :VimShellSendString.
|
||||
|
||||
2010-05-09
|
||||
* vimshell disables bell.
|
||||
* Fixed <CR> bug in iexe.
|
||||
* Added <Plug>(vimshell_interactive_restart_command) mapping.
|
||||
* Improved :VimShellSendString.
|
||||
* Improved highlight clear.
|
||||
|
||||
2010-05-05
|
||||
* Improved encoding.
|
||||
* sexe is special command.
|
||||
* Added <Plug>(vimshell_exit) mapping.
|
||||
* Improved exit and open.
|
||||
|
||||
2010-05-04
|
||||
* Improved system().
|
||||
|
||||
2010-05-02
|
||||
* Improved galias and alias parse.
|
||||
* Implemented vimshell#set_alias() and vimshell#set_galias().
|
||||
* Fixed wildcard.
|
||||
* Fixed convert encoding.
|
||||
|
||||
2010-05-01
|
||||
* Fixed alias parse bug.
|
||||
* Deleted obsolute mappings.
|
||||
* Implemented some escape sequence functions.
|
||||
|
||||
2010-04-30
|
||||
* Improved interactive keymappings.
|
||||
* Improved interactive behavior.
|
||||
* Fixed bg bug.
|
||||
* Ignore escape sequences.
|
||||
* Improved highlight.
|
||||
|
||||
2010-04-27
|
||||
* Fixed vimshell#print().
|
||||
* Improved g:vimshell_no_default_keymappings.
|
||||
* Nestable vexe.
|
||||
* Deleted g:VimShell_MaxKeywordWidth.
|
||||
* Fixed bcd bugs.
|
||||
|
||||
2010-04-26
|
||||
* Improved auto complete behavior in iexe buffer.
|
||||
|
||||
2010-04-25
|
||||
* vimshell#execute returns exit status.
|
||||
* Improved prompt check.
|
||||
* Added vimshell#version().
|
||||
* Fixed iexe args.
|
||||
* Deleted g:VimShell_EnableInteractive.
|
||||
|
||||
2010-04-24
|
||||
* Fixed prompt check error.
|
||||
* Fixed mapping <CR>.
|
||||
|
||||
2010-04-20
|
||||
* Ver.7 development started.
|
||||
* Supported vimproc Ver.4.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
ChangeLog 6.50:
|
||||
2010-04-20
|
||||
* Marked as ver.6.50.
|
||||
* Implemented .vimshrc quote.
|
||||
* Revised Japanese help.
|
||||
|
||||
2010-04-18
|
||||
* Implemented include Vim Script syntax.
|
||||
|
||||
2010-04-17
|
||||
* Improved update behavior on insert mode.
|
||||
* Fixed g:vimshell_ignore_case default value.
|
||||
* Improved g:vimshell_ignore_case behavior.
|
||||
* Detect head matches each prompt pattern.
|
||||
* Fixed searchpos() bug.
|
||||
* Improved prompt syntax highlight.
|
||||
|
||||
2010-04-16
|
||||
* Improved iexe update.
|
||||
* Add history when parse passed.
|
||||
* Improved vimshell exception and error mechanism.
|
||||
* Improved auto update behavior.
|
||||
* Improved directory completion.
|
||||
* Improved error catch.
|
||||
|
||||
2010-04-14
|
||||
* Improved vimshell#start_insert().
|
||||
* Implemented multiline quote.
|
||||
* Improved echo.
|
||||
* Improved syntax of string.
|
||||
* Fixed print and vexe split <CR> bugs.
|
||||
|
||||
2010-04-13
|
||||
* Improved quote parser.
|
||||
* Revised Japanese help.
|
||||
* Improved output check.
|
||||
* Changed vexe as special command.
|
||||
* Added eval internal command.
|
||||
* Deleted ev internal command.
|
||||
* Fixed vimshell#print_line().
|
||||
* Improved alias and galias error message.
|
||||
* Improved alias parse.
|
||||
* Changed hook specification.
|
||||
* Improved context.
|
||||
|
||||
2010-04-12
|
||||
* Fixed command_complete bug.
|
||||
* Improved expand wildcard.
|
||||
|
||||
2010-04-08
|
||||
* Fixed output check when program exited.
|
||||
* Call hook functions if interactive only.
|
||||
* Implemented emptycmd, precmd, preexec hooks.
|
||||
* Deleted g:VimShell_EnableAutoLs option.
|
||||
* Fixed s:check_output() error.
|
||||
* Improved vimshell#print_prompt().
|
||||
|
||||
2010-04-06
|
||||
* Fixed help file.
|
||||
* Changed galias as special command.
|
||||
* Fixed popd error.
|
||||
* Disable output when inputing in iexe.
|
||||
* Implemented hook.
|
||||
* Added chpwd hook.
|
||||
|
||||
2010-04-03
|
||||
* Fixed autocd.
|
||||
* Refactoringed.
|
||||
* Implemented recursive altercmd and alias.
|
||||
* Fixed auto complete bug when path contains blanks.
|
||||
* Added execute option description.
|
||||
* Improved bg.
|
||||
* Fixed :VimShellSendString bug.
|
||||
|
||||
2010-04-02
|
||||
* Fixed vimshell#altercmd.
|
||||
|
||||
2010-04-01
|
||||
* Interpret escape sequence(experimental).
|
||||
* Added internal command description.
|
||||
* Fixed escape color.
|
||||
|
||||
2010-03-19
|
||||
* Fixed interrupt error.
|
||||
* Supported comment in .vimshrc.
|
||||
* Implemented altercmd.
|
||||
|
||||
2010-03-03
|
||||
* Improved restore current directory.
|
||||
* Added scala support in iexe.
|
||||
* Improved gcd command.
|
||||
* Supported fakecygpty.
|
||||
* Fixed error message in interactive.vim.
|
||||
* Improved cd.
|
||||
|
||||
2010-03-02
|
||||
* Fixed interactive_command_complete error.
|
||||
* Fixed vimshell#interactive#get_cur_text().
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
ChangeLog 6.00-:
|
||||
2010-02-26
|
||||
* Print lines if one screen in view.
|
||||
* Fixed nomodifiable error in view.
|
||||
* Revised internal vim command.
|
||||
* Marked As Ver.6.05.
|
||||
|
||||
2010-02-24
|
||||
* Fixed interactive filetype.
|
||||
* Ignore .gitignore in vcs_git.
|
||||
* Added g:vimshell_right_prompt variable.
|
||||
* Improved parse in argument complete.
|
||||
* Fixed command parse.
|
||||
* Implemented history output execution.
|
||||
|
||||
2010-02-18
|
||||
* Fixed "E121: Undefined variable: b:prompt_history" error.
|
||||
* Fixed args_complete compltion pos bug.
|
||||
* Fixed filename pattern.
|
||||
* Fixed s:hist_size error.
|
||||
* Renamed interactive_complete.vim.
|
||||
|
||||
2010-02-17
|
||||
* Added vimshrc syntax file.
|
||||
* setlocal nolist in vimshell buffer.
|
||||
|
||||
6.05 : *Supported vimproc Ver.3 or later*
|
||||
- Improved update timing in iexe and bg.
|
||||
- Optimized history completion.
|
||||
- Changed history completion keymappings.
|
||||
- Improved execute line in iexe.
|
||||
- Fixed <Plug>(vimshell_interactive_previous_prompt).
|
||||
- Fixed no prompt behavior bug in iexe.
|
||||
- Improved interactive in Windows.
|
||||
- Fixed interactive option bug in iexe.
|
||||
- Improved prompt in iexe.
|
||||
- Improved prompt syntax.
|
||||
- Fixed parse filename modifier bug.
|
||||
- Improved split nicely.
|
||||
- Fixed hang up bug.
|
||||
- Implemented background execution and interrupt in exe.
|
||||
- Fixed paste prompt bug in iexe.
|
||||
- Implemented --encoding in exe and bg and iexe.
|
||||
- Added :VimShellSendString command.
|
||||
- Implemented vimshell#interactive#send_string().
|
||||
- Fixed convert encoding in redirecting.
|
||||
- Improved terminal compatiblity.
|
||||
- Deleted g:VimShell_UsePopen2 option.
|
||||
- Improved redraw in executing.
|
||||
|
||||
6.04 :
|
||||
- Fixed history_complete bug.
|
||||
- Truncate many candidates in history_complete.
|
||||
- Changed g:vimshell_split_height default value.
|
||||
- Optimized complete file.
|
||||
- Improved autocmd.
|
||||
- Changed buffer name.
|
||||
- Improved enter directory.
|
||||
- Improved move to drive.
|
||||
- Implemented auto update.
|
||||
- Fixed multibyte input bug.
|
||||
- Improved termtter syntax.
|
||||
- Fixed sexe error.
|
||||
- Implemented interactive mappings.
|
||||
- Improved prompt move.
|
||||
- Changed omni complete keymappings.
|
||||
- Improved close popup.
|
||||
- Improved buffer search in <Plug>(vimshell_split_create).
|
||||
- Improved detect for mac in open.
|
||||
- Improved filtype and update in bg.
|
||||
- Reimplemented vimshell#internal#iexe#vimshell_iexe().
|
||||
- Added :VimShellExecute and :VimShellInteractive commands.
|
||||
- Implemented bg and iexe and sudo completions.
|
||||
- Improved execute line in Normal mode.
|
||||
- Improved keymappings.
|
||||
- Implemented CursorHold event in iexe.
|
||||
|
||||
6.03 :
|
||||
- Refactoringed.
|
||||
- Improved environment detect in open.
|
||||
- Fixed delete escape sequence bug.
|
||||
- Improved interactive print.
|
||||
- Implemented execute line in iexe buffer.
|
||||
- Open URI when press <Enter>.
|
||||
- Improved password input.
|
||||
- Implemented interactive termtter syntax.
|
||||
- Fixed syntax error.
|
||||
- Fixed alias parse.
|
||||
- Improved start in Windows.
|
||||
- Improved irb option in iexe.
|
||||
- Improved vimshell split switch.
|
||||
- Added :VimShellPop command.
|
||||
|
||||
6.02 :
|
||||
- Improved autocommand in iexe.
|
||||
- Improved completion in iexe.
|
||||
- Improved highlight escape sequence.
|
||||
- Fixed echo in iexe.
|
||||
- Improved password input.
|
||||
- Fixed timer.
|
||||
- Added powershell.exe and cmd.exe support.
|
||||
- Improved vimshell buffer settings.
|
||||
- Fixed <Plug>(vimshell_delete_previous_output) error.
|
||||
- Delete control sequences.
|
||||
- Improved complete pattern.
|
||||
- Set completion timeout.
|
||||
- Fixed interactive prompt bug.
|
||||
- Deleted syntax keyword.
|
||||
- Improved interactive print.
|
||||
- Renamed interactive_complete.
|
||||
- Fixed interactive process error.
|
||||
- Fixed expand tilde bug.
|
||||
|
||||
6.01 :
|
||||
- Improved error handling.
|
||||
- Improved head match.
|
||||
- Use completefunc_complete if available.
|
||||
- Fixed trunk string.
|
||||
- Escape complete candidates.
|
||||
- Improved Windows pty support.
|
||||
- Improved password input.
|
||||
- Improved echo back.
|
||||
- Improved encoding.
|
||||
- Implemented next_prompt() in iexe.
|
||||
- Implemented arguments completion.
|
||||
- Set interactive option in Windows iexe.
|
||||
- Fixed force exit error.
|
||||
|
||||
6.00 :
|
||||
- Deleted plugin/interactive.vim.
|
||||
- Deleted ftplugin/vimshell.vim.
|
||||
- Implemented vimshell#system().
|
||||
- Implemented VCS information support.
|
||||
- Deleted pipe inout.
|
||||
- Implemented completion helper.
|
||||
- Improved command completion.
|
||||
- Implemented argument completion.
|
||||
- Implemented expand wildcard.
|
||||
- Improved get prompt.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
ChangeLog 5.30-:
|
||||
5.38 :
|
||||
- Fixed stdout flush bug.
|
||||
- Append last line when interactive error.
|
||||
- Syntax clear in clear command.
|
||||
- Ignore interactive exit error.
|
||||
- Use vimproc.vim.
|
||||
- Fixed error in readonly buffer.
|
||||
- Deleted interactive pty code.
|
||||
- Use updatetime in iexe.
|
||||
- Deleted CursorHold event in iexe.
|
||||
- Deleted echo in iexe.
|
||||
- Fixed iexe for echoback.
|
||||
- Improved filetype in iexe.
|
||||
- Improved read time.
|
||||
- Improved iexe wait.
|
||||
- Implemented bcd internal command.
|
||||
- Implemented Windows pty support.
|
||||
- Fixed popd.
|
||||
- Improved completion.
|
||||
|
||||
5.37 :
|
||||
- Added g:vimshell_no_default_keymappings option.
|
||||
- Unique key mappings.
|
||||
- Improved echo when executing.
|
||||
- Fixed delete_line error.
|
||||
- Implemented pseudo device '/dev/clip'.
|
||||
- Improved command completion in Windows.
|
||||
- Implemented mkcd internal command.
|
||||
- Append last line.
|
||||
|
||||
5.36 :
|
||||
- Added syntax keywords.
|
||||
- Echo error when you use old Vim.
|
||||
- Splitted mapping functions.
|
||||
- Improved run_help.
|
||||
- Implemented insert history completion.
|
||||
- Improved completion.
|
||||
|
||||
5.35 :
|
||||
- Improved open behavior.
|
||||
- Fixed completion column bug.
|
||||
- Implemented <Plug>(vimshell_move_end_argument).
|
||||
- Fixed environment variables parse bug.
|
||||
- Accept null wildcard.
|
||||
- Substitute modifier.
|
||||
- Added VimShellCreate command.
|
||||
- Save prompt variables when vimshell is initialized.
|
||||
- Implemented vimshell#push_and_execute() function.
|
||||
|
||||
5.34 :
|
||||
- Improved execute internal command.
|
||||
- Fixed wildcard parse bug.
|
||||
- Use startinsert!.
|
||||
- Implemented vimdiff command.
|
||||
- Fixed cursor pos bug in completion.
|
||||
- Implemented 'vexe' and 'open' command.
|
||||
- Fixed command completion bug.
|
||||
|
||||
5.33 :
|
||||
- Deleted one command.
|
||||
- Changed default prompt.
|
||||
- Improved kill processes(Thanks Nico).
|
||||
- Send interrupt when press <C-c> in iexe(Thanks Nico).
|
||||
- Improved tab completion in iexe.
|
||||
- Fixed tilde parse bug.
|
||||
- Don't select in completion.
|
||||
- Implemented 'cd -' and '-' command.
|
||||
- Improved popd behavior.
|
||||
- Don't print prompt when switch to vimshell.
|
||||
- Setlocal bufhidden=hide.
|
||||
- Implemented 'cd name1 name2'.
|
||||
- Fixed empty argument bug.
|
||||
|
||||
5.32 :
|
||||
- Fixed delete_line when cursor pos is end.
|
||||
- Escape g:VimShell_Prompt.
|
||||
- Shell escape in sexe.
|
||||
- Implemented clear key-mapping.
|
||||
- Improved delete previous output.
|
||||
- Implemented multiline user prompt.
|
||||
- Fixed suffix execution bug.
|
||||
- Overwrite highlight Normal in escape sequence range.
|
||||
- Execute cursor file.
|
||||
|
||||
5.31 :
|
||||
- Check cd path.
|
||||
- Mark executable file.
|
||||
- Improved completion.
|
||||
- Deleted normal iexe.
|
||||
- Splitted complete functions.
|
||||
- Catch error in vim and view.
|
||||
|
||||
5.30 :
|
||||
- Improved execute message.
|
||||
- Implemented sexe command.
|
||||
- Setfiletype iexe in iexe.
|
||||
- Improved key-mappings.
|
||||
- Fixed expand filename bug.
|
||||
- Improved command search.
|
||||
- Close window in exit.
|
||||
- Implemented delete line.
|
||||
- Implemented delete line and move head in iexe.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
ChangeLog 5.10-5.29
|
||||
5.29 :
|
||||
- Implemented filename expantion.
|
||||
- Supported neocomplcache omni completion.
|
||||
- Improved block expantion.
|
||||
- Improved highlight of escape sequence.
|
||||
- Create g:vimshell_history_path's parent directory if not exists.
|
||||
- Create g:vimshell_vimshrc_path's parent directory if not exists.
|
||||
- Check 'cdpath' when cd.
|
||||
- Used plugin key-mappings insetead of key-mappings option.
|
||||
|
||||
5.28 :
|
||||
- Fixed tail space bug(Thanks Nico).
|
||||
- Fixed prompt history bug(Thanks Nico).
|
||||
- Supported escape sequence in cd.
|
||||
- Print all error.
|
||||
- Improved error print format.
|
||||
- Optimized print.
|
||||
- Implemented user prompt.
|
||||
- Implemented exclude wildcard.
|
||||
- Implemented global alias.
|
||||
|
||||
5.27 :
|
||||
- Fixed parse error.
|
||||
- Optimized output.
|
||||
- Deleted long lines error.
|
||||
- Implemented paste prompt.
|
||||
- Extend current directory.
|
||||
- Applyed backspace patch(Thanks Nico!).
|
||||
- Added g:VimShell_PromptPrevKey, g:VimShell_PromptNextKey, g:VimShell_PastePromptKey options.
|
||||
- Improved run_help and push_current_line.
|
||||
|
||||
5.26 :
|
||||
- Implemented iexe completion.
|
||||
- Implemented iexe prompt.
|
||||
- <C-c> as <C-v><C-d>.
|
||||
- Added g:VimShell_HistoryPrevKey, g:VimShell_HistoryNextKey, g:VimShell_TabCompletionKey options.
|
||||
- Improved pty response.
|
||||
- Set filetype.
|
||||
- Improved initialize on pty.
|
||||
- Improved syntax highlight.
|
||||
- Improved run_help.
|
||||
|
||||
5.25 :
|
||||
- Catch kill error.
|
||||
- Improved prompt in background pty(Thanks Nico!).
|
||||
- Supported input empty.
|
||||
- Supported completion on pty.
|
||||
- Improved output in dirs command.
|
||||
- Implemented command history on pty(Thanks Nico!).
|
||||
- . and .. were excluded from a wildcard expand result.
|
||||
|
||||
5.24 :
|
||||
- Improved parser.
|
||||
- Fixed append_history() bug.
|
||||
- Implemented block.
|
||||
- Supported multiple statements.
|
||||
- Fixed alias parse bug.
|
||||
- Implemented repeat.
|
||||
- Improved pushd timing.
|
||||
|
||||
5.23 :
|
||||
- Improved completion.
|
||||
- Added g:VimShell_EnableAutoLs option.
|
||||
- Move to parent directory if argument isn't directory in cd command.
|
||||
- Implemented force kill processes.
|
||||
|
||||
5.22 :
|
||||
- Improved share history.
|
||||
- Improved run_help.
|
||||
- Improved alias.
|
||||
- Fixed parse bug.
|
||||
- Changed run_help key mappings.
|
||||
- Implemented sudo vim.
|
||||
- Improved iexe and bg(Tanks Nico!).
|
||||
|
||||
5.21 :
|
||||
- Improved error highlight.
|
||||
- Implemented password input.
|
||||
- Implemented sudo internal command.
|
||||
- Added g:VimShell_SecondaryPrompt option.
|
||||
- Set COLUMNS and LINES environment variables.
|
||||
- Remove dup history.
|
||||
- Improved history commands.
|
||||
- Splitted parser.
|
||||
- Reduce blanks when append history.
|
||||
- Implemented insert last word keymapping.
|
||||
- Improved iexe.
|
||||
- Implemented run_help.
|
||||
|
||||
5.20 :
|
||||
- Added g:VimShell_UsePopen2 option.
|
||||
- Openable directory in vim command.
|
||||
- Improved bg command.
|
||||
- Fixed escape sequence.
|
||||
- Improved highlight timing.
|
||||
- Implemented error highlight.
|
||||
- Refactoringed interactive.vim.
|
||||
|
||||
5.19 :
|
||||
- Improved variables path.
|
||||
- Implemented h string.
|
||||
- Added space when command completed.
|
||||
- Improved escape sequence support.
|
||||
|
||||
5.18 :
|
||||
- Improved command completion.
|
||||
- Changed alias syntax.
|
||||
- Improved stdin read.
|
||||
- Improved pipe in external command.
|
||||
|
||||
5.17 :
|
||||
- Fixed error when bg or iexe terminated.
|
||||
- Implemented gexe command.
|
||||
- Implemented pipe.
|
||||
- Check pipe in ls command.
|
||||
- Improved wildcard.
|
||||
- Fully pipe implemented.
|
||||
|
||||
5.16 :
|
||||
- Implemented back quote and vim quote.
|
||||
- Implemented double quote escape.
|
||||
- Implemented expand home directory.
|
||||
- Fixed stdin redirection bug.
|
||||
- Get status.
|
||||
|
||||
5.15 :
|
||||
- Fixed for ATOK X3.
|
||||
- Improved error catch.
|
||||
- Implemented redirection.
|
||||
- Implemented /dev/null virtual device.
|
||||
- Implemented special functions.
|
||||
- Improved let and ev.
|
||||
|
||||
5.14 :
|
||||
- Implemented echo.
|
||||
- Implemented wildcard.
|
||||
- Executable one liner in Windows.
|
||||
- Improved command search.
|
||||
- Implemented command completion.
|
||||
- Fixed g:vimshell_execute_file_list bug.
|
||||
|
||||
5.13 :
|
||||
- Added command vimshell_delete_previous_prompt.
|
||||
- Fixed lcd escape bug.
|
||||
- Deleted process.vim.
|
||||
- Deleted ! execution.
|
||||
- Added gcd command.
|
||||
- Optimized parse in alias and let commands.
|
||||
|
||||
5.12 Changed command behavior:
|
||||
- Added g:VimShell_EnableInteractive option.
|
||||
- Changed command behavior.
|
||||
- Added exe command.
|
||||
- Convert encoding for system().
|
||||
- Fixed name conversion.
|
||||
- Added g:vimshell_split_height option.
|
||||
|
||||
5.11:
|
||||
- Added VimShellExecute and VimShellInteractive commands.
|
||||
|
||||
5.10:
|
||||
- Implemented iexe.
|
||||
- Improved bg.
|
||||
- Improved print_prompt().
|
||||
- Use neocomplcache#manual_filename_complete().
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
ChangeLog 5.9-4.0
|
||||
5.9:
|
||||
- Fixed background execution.
|
||||
- Fixed auto_cd bug.
|
||||
- Fixed error in screen command.
|
||||
|
||||
5.8:
|
||||
- Fixed !! error.
|
||||
- Implemented filename completion.
|
||||
- Implemented exchange ~ into $HOME.
|
||||
|
||||
5.7:
|
||||
- Implemented g:vimshell_execute_file_list.
|
||||
- Refactoring.
|
||||
- Added screen, bg internal command.
|
||||
|
||||
5.6:
|
||||
- Escape prompt when prompt search.
|
||||
- Fixed auto cd error.
|
||||
|
||||
5.5:
|
||||
- Created ftplugin/vimshell.vim
|
||||
- Added command vimshell_previous_prompt and vimshell_next_prompt.
|
||||
|
||||
5.4:
|
||||
- Fixed alias, cd, histdel bug.
|
||||
|
||||
5.3:
|
||||
- Improved autocmds.
|
||||
- Refactoring plugin call.
|
||||
|
||||
5.2:
|
||||
- Plugin interface changed.
|
||||
- Converted special commands into internal commands.
|
||||
- Deleted quick match.
|
||||
|
||||
5.1:
|
||||
- Improved key-mappings and autocmd.
|
||||
- Implemented command line stack.
|
||||
|
||||
5.0:
|
||||
- Return previous buffer when call vimshell#switch_shell on vimshell.
|
||||
- Implemented vimshell#error_line.
|
||||
- Error when iexe execute without python interface.
|
||||
|
||||
4.9:
|
||||
- Implemented exit command.
|
||||
- Implemented hide command.
|
||||
- Added g:vimshell_smart_case option.
|
||||
|
||||
4.8:
|
||||
- Implemented comment.
|
||||
- Not escape when cd command.
|
||||
- Eval environment variables.
|
||||
|
||||
4.7:
|
||||
- Improved vimshell#switch_shell.
|
||||
- Implemented one command.
|
||||
- Implemented ev command.
|
||||
|
||||
4.6:
|
||||
- Implemented h command.
|
||||
- Implemented VimShell buffer current directory.
|
||||
- History execution was implemented with h command.
|
||||
- Change VimShell current directory when vimshell#switch_shell.
|
||||
|
||||
4.5:
|
||||
- Fixed popd and history bugs.
|
||||
- Implemented history arguments.
|
||||
- Implemented internal command.
|
||||
- Improved syntax color.
|
||||
|
||||
4.4:
|
||||
- Changed s:alias_table into b:vimshell_alias_table.
|
||||
- Interpret cd of no argument as cd $HOME
|
||||
- Added pwd command.
|
||||
- Improved ls on Windows.
|
||||
- Load ~/.vimshrc on init.
|
||||
- Improved escape.
|
||||
|
||||
4.3:
|
||||
- Implemented zsh like cd.
|
||||
- Make built-in command autoload.
|
||||
- Optimized special commands.
|
||||
- Implemented popd, dirs command.
|
||||
|
||||
4.2:
|
||||
- Implemented alias command.
|
||||
- Implemented VimShell script.
|
||||
- Optimized vimshell#process_enter.
|
||||
|
||||
4.1:
|
||||
- Implemented history command.
|
||||
- Implemented histdel command.
|
||||
- Implemented nop command.
|
||||
- Ignore empty command line.
|
||||
|
||||
4.0:
|
||||
- Implemented shell background execution.
|
||||
- Added g:VimShell_UseCkw option.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
ChangeLog 3.9-1.0
|
||||
3.9:
|
||||
- Implemented background execution on Linux.
|
||||
- Improved print prompt.
|
||||
- Fixed cd bug.
|
||||
- Fixed background execution bug.
|
||||
|
||||
3.8:
|
||||
- Implemented background execution on Windows.
|
||||
- Implemented shell execution.
|
||||
- Implemented shell command.
|
||||
- Implemented exit command.
|
||||
|
||||
3.7:
|
||||
- Not escape quotation.
|
||||
- Implemented command completion.
|
||||
|
||||
3.6:
|
||||
- Improved command execute.
|
||||
- Fixed execute program bug.
|
||||
|
||||
3.5:
|
||||
- Implemented by autoload.
|
||||
- Fixed non-Windows platform error.
|
||||
- Improved history executed.
|
||||
- Fixed many bugs.
|
||||
|
||||
3.4:
|
||||
- Fixed filename escape bug.
|
||||
- Fixed vimshell buffer clear when hide.
|
||||
- No setlocal lazyredraw.
|
||||
- Filename escape when cd.
|
||||
- Implemented pseudo shell variables.
|
||||
|
||||
3.3:
|
||||
- Changed escape sequence into \<ESC>.
|
||||
- Changed autocmd timing.
|
||||
- Added filename escape.
|
||||
- Added vimshell_split_switch, vimshell_switch, vimshell_split_create, vimshell_create.
|
||||
- Can have multiple Vimshell instance.
|
||||
|
||||
3.2:
|
||||
- Fixed space name command bug.
|
||||
- Fixed quick match bug.
|
||||
- Implemented vim and view command.
|
||||
|
||||
3.1:
|
||||
- Fixed ATOK X3 is ON when startinsert.
|
||||
- Silent message if exit code isn't 0.
|
||||
|
||||
3.0:
|
||||
- Do startinsert! after command executed.
|
||||
- Added g:vimshell_QuickMatchmax_lists option.
|
||||
- Added g:VimShell_QuickMatchEnable option.
|
||||
- Implemented two digits quick match.
|
||||
|
||||
2.9:
|
||||
- Trial implemented highlight escape sequence.
|
||||
- Fixed history bug.
|
||||
- Convert cd to lcd.
|
||||
|
||||
2.8:
|
||||
- Dup check when quick match.
|
||||
- Due to optimize, filtering len(cur_keyword_str) >.
|
||||
- Ignore head spaces when completion.
|
||||
|
||||
2.7:
|
||||
- Implemented shell history completion by omnifunc.
|
||||
- Mapping omnifunc <C-j>.
|
||||
- Implemented quick match.
|
||||
- Improved escape.
|
||||
|
||||
2.6:
|
||||
- Implemented shell history.
|
||||
|
||||
2.5:
|
||||
- Set lazyredraw in vimshell buffer.
|
||||
- Refactoring.
|
||||
|
||||
2.3:
|
||||
- Code cleanup.
|
||||
|
||||
2.2:
|
||||
- Fix syntax highlight at pipe command.
|
||||
- Fix quotation highlight.
|
||||
|
||||
2.1:
|
||||
- Fix syntax highlights.
|
||||
|
||||
2.0:
|
||||
- Implemented syntax highlight.
|
||||
|
||||
1.0:
|
||||
- Initial version.
|
||||
|
||||
==============================================================================
|
||||
vim:tw=78:ts=8:ft=help:norl:noet:fen:fdl=0:isk+=-:
|
||||
0
vim/.vim/bundle/.neobundle/ftdetect/ftdetect.vim
Normal file
0
vim/.vim/bundle/.neobundle/ftdetect/ftdetect.vim
Normal file
2
vim/.vim/bundle/.neobundle/install_info
Normal file
2
vim/.vim/bundle/.neobundle/install_info
Normal file
@@ -0,0 +1,2 @@
|
||||
3.0
|
||||
{'vimshell': {'checked_time': 1706045295, 'installed_uri': 'https://github.com/Shougo/vimshell.git', 'installed_path': '/Users/joshp/.vim/bundle/vimshell_3787e5', 'revisions': {'1317805056': '3787e52766812d8b99a93ccdda57517bc2a0bab6'}, 'updated_time': '1317805056'}, 'neosnippet.vim': {'checked_time': 1706045295, 'installed_uri': 'https://github.com/Shougo/neosnippet.vim.git', 'installed_path': '/Users/joshp/.vim/bundle/neosnippet.vim', 'revisions': {'1690076198': 'efb2a615df2e6df9364087686dacca223fcfa16a'}, 'updated_time': '1690076198'}, 'vim-colorschemes': {'checked_time': 1706045295, 'installed_uri': 'https://github.com/flazz/vim-colorschemes.git', 'installed_path': '/Users/joshp/.vim/bundle/vim-colorschemes', 'revisions': {'1589579820': 'fd8f122cef604330c96a6a6e434682dbdfb878c9'}, 'updated_time': '1589579820'}, 'neobundle.vim': {'checked_time': 1706045293, 'installed_uri': 'https://github.com/Shougo/neobundle.vim.git', 'installed_path': '/Users/joshp/.vim/bundle/neobundle.vim', 'revisions': {}, 'updated_time': 1706045293}, 'neosnippet-snippets': {'checked_time': 1706045295, 'installed_uri': 'https://github.com/Shougo/neosnippet-snippets.git', 'installed_path': '/Users/joshp/.vim/bundle/neosnippet-snippets', 'revisions': {'1648787969': '725c989f18e9c134cddd63a7c6b15bed5c244657'}, 'updated_time': '1648787969'}, 'ctrlp.vim': {'checked_time': 1706045295, 'installed_uri': 'https://github.com/ctrlpvim/ctrlp.vim.git', 'installed_path': '/Users/joshp/.vim/bundle/ctrlp.vim', 'revisions': {'1689470507': '7c972cb19c8544c681ca345c64ec39e04f4651cc'}, 'updated_time': '1689470507'}, 'vim-fugitive': {'checked_time': 1706045295, 'installed_uri': 'https://github.com/tpope/vim-fugitive.git', 'installed_path': '/Users/joshp/.vim/bundle/vim-fugitive', 'revisions': {'1705705285': '854a8df0d06b8d3fcb30fa7f2b08c62b553eee3b'}, 'updated_time': '1705705285'}, 'vim-nerdtree-syntax-highlight': {'checked_time': 1706045484, 'installed_uri': 'https://github.com/tiagofumo/vim-nerdtree-syntax-highlight.git', 'installed_path': '/Users/joshp/.vim/bundle/vim-nerdtree-syntax-highlight', 'revisions': {'1688700398': '35e70334a2ff6e89b82a145d1ac889e82d1ddb4e'}, 'updated_time': '1688700398'}}
|
||||
7
vim/.vim/bundle/.neobundle/tags_info
Normal file
7
vim/.vim/bundle/.neobundle/tags_info
Normal file
@@ -0,0 +1,7 @@
|
||||
neobundle.vim
|
||||
neosnippet-snippets
|
||||
neosnippet.vim
|
||||
vim-colorschemes
|
||||
vim-fugitive
|
||||
vim-nerdtree-syntax-highlight
|
||||
vimshell
|
||||
8
vim/.vim/bundle/NeoBundle.lock
Normal file
8
vim/.vim/bundle/NeoBundle.lock
Normal file
@@ -0,0 +1,8 @@
|
||||
NeoBundleLock ctrlp.vim 7c972cb19c8544c681ca345c64ec39e04f4651cc
|
||||
NeoBundleLock neobundle.vim 1306c131ff0a6cc094b7ff0727350e442b5427f1
|
||||
NeoBundleLock neosnippet-snippets 725c989f18e9c134cddd63a7c6b15bed5c244657
|
||||
NeoBundleLock neosnippet.vim efb2a615df2e6df9364087686dacca223fcfa16a
|
||||
NeoBundleLock vim-colorschemes fd8f122cef604330c96a6a6e434682dbdfb878c9
|
||||
NeoBundleLock vim-fugitive 854a8df0d06b8d3fcb30fa7f2b08c62b553eee3b
|
||||
NeoBundleLock vim-nerdtree-syntax-highlight 35e70334a2ff6e89b82a145d1ac889e82d1ddb4e
|
||||
NeoBundleLock vimshell 3787e52766812d8b99a93ccdda57517bc2a0bab6
|
||||
1
vim/.vim/bundle/ctrlp.vim
Submodule
1
vim/.vim/bundle/ctrlp.vim
Submodule
Submodule vim/.vim/bundle/ctrlp.vim added at 7c972cb19c
1
vim/.vim/bundle/neobundle.vim
Submodule
1
vim/.vim/bundle/neobundle.vim
Submodule
Submodule vim/.vim/bundle/neobundle.vim added at 1306c131ff
1
vim/.vim/bundle/neosnippet-snippets
Submodule
1
vim/.vim/bundle/neosnippet-snippets
Submodule
Submodule vim/.vim/bundle/neosnippet-snippets added at 725c989f18
1
vim/.vim/bundle/neosnippet.vim
Submodule
1
vim/.vim/bundle/neosnippet.vim
Submodule
Submodule vim/.vim/bundle/neosnippet.vim added at efb2a615df
1
vim/.vim/bundle/vim-colorschemes
Submodule
1
vim/.vim/bundle/vim-colorschemes
Submodule
Submodule vim/.vim/bundle/vim-colorschemes added at fd8f122cef
1
vim/.vim/bundle/vim-fugitive
Submodule
1
vim/.vim/bundle/vim-fugitive
Submodule
Submodule vim/.vim/bundle/vim-fugitive added at 854a8df0d0
1
vim/.vim/bundle/vim-nerdtree-syntax-highlight
Submodule
1
vim/.vim/bundle/vim-nerdtree-syntax-highlight
Submodule
Submodule vim/.vim/bundle/vim-nerdtree-syntax-highlight added at 35e70334a2
1
vim/.vim/bundle/vimshell_3787e5
Submodule
1
vim/.vim/bundle/vimshell_3787e5
Submodule
Submodule vim/.vim/bundle/vimshell_3787e5 added at 3787e52766
713
vim/.vim/colors/onedark.vim
Normal file
713
vim/.vim/colors/onedark.vim
Normal file
@@ -0,0 +1,713 @@
|
||||
" vim:fdm=marker
|
||||
" Vim Color File
|
||||
" Name: onedark.vim
|
||||
" Maintainer: https://github.com/joshdick/onedark.vim/
|
||||
" License: The MIT License (MIT)
|
||||
" Based On: https://github.com/MaxSt/FlatColor/
|
||||
|
||||
" Companion statusline plugin and terminal themes are included with onedark.vim:
|
||||
" * https://github.com/joshdick/onedark.vim#lightlinevim-colorscheme
|
||||
" * https://github.com/joshdick/onedark.vim#vim-airline-theme
|
||||
" * https://github.com/joshdick/onedark.vim/tree/main/term
|
||||
|
||||
" Color Reference {{{
|
||||
|
||||
" The following colors were measured inside Atom using its built-in inspector.
|
||||
|
||||
" +---------------------------------------------+
|
||||
" | Color Name | RGB | Hex |
|
||||
" |--------------+--------------------+---------|
|
||||
" | Black | rgb(40, 44, 52) | #282c34 |
|
||||
" |--------------+--------------------+---------|
|
||||
" | White | rgb(171, 178, 191) | #abb2bf |
|
||||
" |--------------+--------------------+---------|
|
||||
" | Light Red | rgb(224, 108, 117) | #e06c75 |
|
||||
" |--------------+--------------------+---------|
|
||||
" | Dark Red | rgb(190, 80, 70) | #be5046 |
|
||||
" |--------------+--------------------+---------|
|
||||
" | Green | rgb(152, 195, 121) | #98c379 |
|
||||
" |--------------+--------------------+---------|
|
||||
" | Light Yellow | rgb(229, 192, 123) | #e5c07b |
|
||||
" |--------------+--------------------+---------|
|
||||
" | Dark Yellow | rgb(209, 154, 102) | #d19a66 |
|
||||
" |--------------+--------------------+---------|
|
||||
" | Blue | rgb(97, 175, 239) | #61afef |
|
||||
" |--------------+--------------------+---------|
|
||||
" | Magenta | rgb(198, 120, 221) | #c678dd |
|
||||
" |--------------+--------------------+---------|
|
||||
" | Cyan | rgb(86, 182, 194) | #56b6c2 |
|
||||
" |--------------+--------------------+---------|
|
||||
" | Gutter Grey | rgb(76, 82, 99) | #4b5263 |
|
||||
" |--------------+--------------------+---------|
|
||||
" | Comment Grey | rgb(92, 99, 112) | #5c6370 |
|
||||
" +---------------------------------------------+
|
||||
|
||||
" }}}
|
||||
|
||||
" Initialization {{{
|
||||
|
||||
highlight clear
|
||||
|
||||
if exists("syntax_on")
|
||||
syntax reset
|
||||
endif
|
||||
|
||||
set t_Co=256
|
||||
|
||||
let g:colors_name="onedark"
|
||||
|
||||
" Set to "256" for 256-color terminals, or
|
||||
" set to "16" to use your terminal emulator's native colors
|
||||
" (a 16-color palette for this color scheme is available; see
|
||||
" < https://github.com/joshdick/onedark.vim/blob/main/README.md >
|
||||
" for more information.)
|
||||
if !exists("g:onedark_termcolors")
|
||||
let g:onedark_termcolors = 256
|
||||
endif
|
||||
|
||||
" Not all terminals support italics properly. If yours does, opt-in.
|
||||
if !exists("g:onedark_terminal_italics")
|
||||
let g:onedark_terminal_italics = 0
|
||||
endif
|
||||
|
||||
" This function is based on one from FlatColor: https://github.com/MaxSt/FlatColor/
|
||||
" Which in turn was based on one found in hemisu: https://github.com/noahfrederick/vim-hemisu/
|
||||
let s:group_colors = {} " Cache of default highlight group settings, for later reference via `onedark#extend_highlight`
|
||||
function! s:h(group, style, ...)
|
||||
if (a:0 > 0) " Will be true if we got here from onedark#extend_highlight
|
||||
let s:highlight = s:group_colors[a:group]
|
||||
for style_type in ["fg", "bg", "sp"]
|
||||
if (has_key(a:style, style_type))
|
||||
let l:default_style = (has_key(s:highlight, style_type) ? copy(s:highlight[style_type]) : { "cterm16": "NONE", "cterm": "NONE", "gui": "NONE" })
|
||||
let s:highlight[style_type] = extend(l:default_style, a:style[style_type])
|
||||
endif
|
||||
endfor
|
||||
if (has_key(a:style, "gui"))
|
||||
let s:highlight.gui = a:style.gui
|
||||
endif
|
||||
if (has_key(a:style, "cterm"))
|
||||
let s:highlight.cterm = a:style.cterm
|
||||
endif
|
||||
else
|
||||
let s:highlight = a:style
|
||||
let s:group_colors[a:group] = s:highlight " Cache default highlight group settings
|
||||
endif
|
||||
|
||||
if g:onedark_terminal_italics == 0
|
||||
if has_key(s:highlight, "cterm") && s:highlight["cterm"] == "italic"
|
||||
unlet s:highlight.cterm
|
||||
endif
|
||||
if has_key(s:highlight, "gui") && s:highlight["gui"] == "italic"
|
||||
unlet s:highlight.gui
|
||||
endif
|
||||
endif
|
||||
|
||||
if g:onedark_termcolors == 16
|
||||
let l:ctermfg = (has_key(s:highlight, "fg") ? s:highlight.fg.cterm16 : "NONE")
|
||||
let l:ctermbg = (has_key(s:highlight, "bg") ? s:highlight.bg.cterm16 : "NONE")
|
||||
else
|
||||
let l:ctermfg = (has_key(s:highlight, "fg") ? s:highlight.fg.cterm : "NONE")
|
||||
let l:ctermbg = (has_key(s:highlight, "bg") ? s:highlight.bg.cterm : "NONE")
|
||||
endif
|
||||
|
||||
execute "highlight" a:group
|
||||
\ "guifg=" (has_key(s:highlight, "fg") ? s:highlight.fg.gui : "NONE")
|
||||
\ "guibg=" (has_key(s:highlight, "bg") ? s:highlight.bg.gui : "NONE")
|
||||
\ "guisp=" (has_key(s:highlight, "sp") ? s:highlight.sp.gui : "NONE")
|
||||
\ "gui=" (has_key(s:highlight, "gui") ? s:highlight.gui : "NONE")
|
||||
\ "ctermfg=" . l:ctermfg
|
||||
\ "ctermbg=" . l:ctermbg
|
||||
\ "cterm=" (has_key(s:highlight, "cterm") ? s:highlight.cterm : "NONE")
|
||||
endfunction
|
||||
|
||||
" public {{{
|
||||
|
||||
function! onedark#set_highlight(group, style)
|
||||
call s:h(a:group, a:style)
|
||||
endfunction
|
||||
|
||||
function! onedark#extend_highlight(group, style)
|
||||
call s:h(a:group, a:style, 1)
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
" }}}
|
||||
|
||||
" Color Variables {{{
|
||||
|
||||
let s:colors = onedark#GetColors()
|
||||
|
||||
let s:red = s:colors.red
|
||||
let s:dark_red = s:colors.dark_red
|
||||
let s:green = s:colors.green
|
||||
let s:yellow = s:colors.yellow
|
||||
let s:dark_yellow = s:colors.dark_yellow
|
||||
let s:blue = s:colors.blue
|
||||
let s:purple = s:colors.purple
|
||||
let s:cyan = s:colors.cyan
|
||||
let s:white = s:colors.white
|
||||
let s:black = s:colors.black
|
||||
let s:foreground = s:colors.foreground
|
||||
let s:background = s:colors.background
|
||||
let s:comment_grey = s:colors.comment_grey
|
||||
let s:gutter_fg_grey = s:colors.gutter_fg_grey
|
||||
let s:cursor_grey = s:colors.cursor_grey
|
||||
let s:visual_grey = s:colors.visual_grey
|
||||
let s:menu_grey = s:colors.menu_grey
|
||||
let s:special_grey = s:colors.special_grey
|
||||
let s:vertsplit = s:colors.vertsplit
|
||||
|
||||
" }}}
|
||||
|
||||
" Terminal Colors {{{
|
||||
|
||||
if has('nvim')
|
||||
let g:terminal_color_0 = s:black.gui
|
||||
let g:terminal_color_1 = s:red.gui
|
||||
let g:terminal_color_2 = s:green.gui
|
||||
let g:terminal_color_3 = s:yellow.gui
|
||||
let g:terminal_color_4 = s:blue.gui
|
||||
let g:terminal_color_5 = s:purple.gui
|
||||
let g:terminal_color_6 = s:cyan.gui
|
||||
let g:terminal_color_7 = s:comment_grey.gui
|
||||
let g:terminal_color_8 = s:visual_grey.gui
|
||||
let g:terminal_color_9 = s:red.gui
|
||||
let g:terminal_color_10 = s:green.gui
|
||||
let g:terminal_color_11 = s:yellow.gui
|
||||
let g:terminal_color_12 = s:blue.gui
|
||||
let g:terminal_color_13 = s:purple.gui
|
||||
let g:terminal_color_14 = s:cyan.gui
|
||||
let g:terminal_color_15 = s:white.gui
|
||||
else
|
||||
let g:terminal_ansi_colors = [
|
||||
\ s:black.gui, s:red.gui, s:green.gui, s:yellow.gui,
|
||||
\ s:blue.gui, s:purple.gui, s:cyan.gui, s:comment_grey.gui,
|
||||
\ s:visual_grey.gui, s:red.gui, s:green.gui, s:yellow.gui,
|
||||
\ s:blue.gui, s:purple.gui, s:cyan.gui, s:white.gui
|
||||
\]
|
||||
endif
|
||||
|
||||
" }}}
|
||||
|
||||
" Syntax Groups (descriptions and ordering from `:h w18`) {{{
|
||||
|
||||
call s:h("Comment", { "fg": s:comment_grey, "gui": "italic", "cterm": "italic" }) " any comment
|
||||
call s:h("Constant", { "fg": s:cyan }) " any constant
|
||||
call s:h("String", { "fg": s:green }) " a string constant: "this is a string"
|
||||
call s:h("Character", { "fg": s:green }) " a character constant: 'c', '\n'
|
||||
call s:h("Number", { "fg": s:dark_yellow }) " a number constant: 234, 0xff
|
||||
call s:h("Boolean", { "fg": s:dark_yellow }) " a boolean constant: TRUE, false
|
||||
call s:h("Float", { "fg": s:dark_yellow }) " a floating point constant: 2.3e10
|
||||
call s:h("Identifier", { "fg": s:red }) " any variable name
|
||||
call s:h("Function", { "fg": s:blue }) " function name (also: methods for classes)
|
||||
call s:h("Statement", { "fg": s:purple }) " any statement
|
||||
call s:h("Conditional", { "fg": s:purple }) " if, then, else, endif, switch, etc.
|
||||
call s:h("Repeat", { "fg": s:purple }) " for, do, while, etc.
|
||||
call s:h("Label", { "fg": s:purple }) " case, default, etc.
|
||||
call s:h("Operator", { "fg": s:purple }) " sizeof", "+", "*", etc.
|
||||
call s:h("Keyword", { "fg": s:purple }) " any other keyword
|
||||
call s:h("Exception", { "fg": s:purple }) " try, catch, throw
|
||||
call s:h("PreProc", { "fg": s:yellow }) " generic Preprocessor
|
||||
call s:h("Include", { "fg": s:blue }) " preprocessor #include
|
||||
call s:h("Define", { "fg": s:purple }) " preprocessor #define
|
||||
call s:h("Macro", { "fg": s:purple }) " same as Define
|
||||
call s:h("PreCondit", { "fg": s:yellow }) " preprocessor #if, #else, #endif, etc.
|
||||
call s:h("Type", { "fg": s:yellow }) " int, long, char, etc.
|
||||
call s:h("StorageClass", { "fg": s:yellow }) " static, register, volatile, etc.
|
||||
call s:h("Structure", { "fg": s:yellow }) " struct, union, enum, etc.
|
||||
call s:h("Typedef", { "fg": s:yellow }) " A typedef
|
||||
call s:h("Special", { "fg": s:blue }) " any special symbol
|
||||
call s:h("SpecialChar", { "fg": s:dark_yellow }) " special character in a constant
|
||||
call s:h("Tag", {}) " you can use CTRL-] on this
|
||||
call s:h("Delimiter", {}) " character that needs attention
|
||||
call s:h("SpecialComment", { "fg": s:comment_grey }) " special things inside a comment
|
||||
call s:h("Debug", {}) " debugging statements
|
||||
call s:h("Underlined", { "gui": "underline", "cterm": "underline" }) " text that stands out, HTML links
|
||||
call s:h("Ignore", {}) " left blank, hidden
|
||||
call s:h("Error", { "fg": s:red }) " any erroneous construct
|
||||
call s:h("Todo", { "fg": s:purple }) " anything that needs extra attention; mostly the keywords TODO FIXME and XXX
|
||||
|
||||
" }}}
|
||||
|
||||
" Highlighting Groups (descriptions and ordering from `:h highlight-groups`) {{{
|
||||
call s:h("ColorColumn", { "bg": s:cursor_grey }) " used for the columns set with 'colorcolumn'
|
||||
call s:h("Conceal", {}) " placeholder characters substituted for concealed text (see 'conceallevel')
|
||||
call s:h("Cursor", { "fg": s:black, "bg": s:blue }) " the character under the cursor
|
||||
call s:h("CursorIM", {}) " like Cursor, but used when in IME mode
|
||||
call s:h("CursorColumn", { "bg": s:cursor_grey }) " the screen column that the cursor is in when 'cursorcolumn' is set
|
||||
if &diff
|
||||
" Don't change the background color in diff mode
|
||||
call s:h("CursorLine", { "gui": "underline" }) " the screen line that the cursor is in when 'cursorline' is set
|
||||
else
|
||||
call s:h("CursorLine", { "bg": s:cursor_grey }) " the screen line that the cursor is in when 'cursorline' is set
|
||||
endif
|
||||
call s:h("Directory", { "fg": s:blue }) " directory names (and other special names in listings)
|
||||
call s:h("DiffAdd", { "bg": s:green, "fg": s:black }) " diff mode: Added line
|
||||
call s:h("DiffChange", { "fg": s:yellow, "gui": "underline", "cterm": "underline" }) " diff mode: Changed line
|
||||
call s:h("DiffDelete", { "bg": s:red, "fg": s:black }) " diff mode: Deleted line
|
||||
call s:h("DiffText", { "bg": s:yellow, "fg": s:black }) " diff mode: Changed text within a changed line
|
||||
if get(g:, 'onedark_hide_endofbuffer', 0)
|
||||
" If enabled, will style end-of-buffer filler lines (~) to appear to be hidden.
|
||||
call s:h("EndOfBuffer", { "fg": s:black }) " filler lines (~) after the last line in the buffer
|
||||
endif
|
||||
call s:h("ErrorMsg", { "fg": s:red }) " error messages on the command line
|
||||
call s:h("VertSplit", { "fg": s:vertsplit }) " the column separating vertically split windows
|
||||
call s:h("Folded", { "fg": s:comment_grey }) " line used for closed folds
|
||||
call s:h("FoldColumn", {}) " 'foldcolumn'
|
||||
call s:h("SignColumn", {}) " column where signs are displayed
|
||||
call s:h("IncSearch", { "fg": s:yellow, "bg": s:comment_grey }) " 'incsearch' highlighting; also used for the text replaced with ":s///c"
|
||||
call s:h("LineNr", { "fg": s:gutter_fg_grey }) " Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set.
|
||||
call s:h("CursorLineNr", {}) " Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line.
|
||||
call s:h("MatchParen", { "fg": s:blue, "gui": "underline", "cterm": "underline" }) " The character under the cursor or just before it, if it is a paired bracket, and its match.
|
||||
call s:h("ModeMsg", {}) " 'showmode' message (e.g., "-- INSERT --")
|
||||
call s:h("MoreMsg", {}) " more-prompt
|
||||
call s:h("NonText", { "fg": s:special_grey }) " '~' and '@' at the end of the window, characters from 'showbreak' and other characters that do not really exist in the text (e.g., ">" displayed when a double-wide character doesn't fit at the end of the line).
|
||||
call s:h("Normal", { "fg": s:foreground, "bg": s:background }) " normal text
|
||||
call s:h("Pmenu", { "fg": s:white, "bg": s:menu_grey }) " Popup menu: normal item.
|
||||
call s:h("PmenuSel", { "fg": s:cursor_grey, "bg": s:blue }) " Popup menu: selected item.
|
||||
call s:h("PmenuSbar", { "bg": s:cursor_grey }) " Popup menu: scrollbar.
|
||||
call s:h("PmenuThumb", { "bg": s:white }) " Popup menu: Thumb of the scrollbar.
|
||||
call s:h("Question", { "fg": s:purple }) " hit-enter prompt and yes/no questions
|
||||
call s:h("QuickFixLine", { "fg": s:black, "bg": s:yellow }) " Current quickfix item in the quickfix window.
|
||||
call s:h("Search", { "fg": s:black, "bg": s:yellow }) " Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand out.
|
||||
call s:h("SpecialKey", { "fg": s:special_grey }) " Meta and special keys listed with ":map", also for text used to show unprintable characters in the text, 'listchars'. Generally: text that is displayed differently from what it really is.
|
||||
call s:h("SpellBad", { "fg": s:red, "gui": "underline", "cterm": "underline" }) " Word that is not recognized by the spellchecker. This will be combined with the highlighting used otherwise.
|
||||
call s:h("SpellCap", { "fg": s:dark_yellow }) " Word that should start with a capital. This will be combined with the highlighting used otherwise.
|
||||
call s:h("SpellLocal", { "fg": s:dark_yellow }) " Word that is recognized by the spellchecker as one that is used in another region. This will be combined with the highlighting used otherwise.
|
||||
call s:h("SpellRare", { "fg": s:dark_yellow }) " Word that is recognized by the spellchecker as one that is hardly ever used. spell This will be combined with the highlighting used otherwise.
|
||||
call s:h("StatusLine", { "fg": s:white, "bg": s:cursor_grey }) " status line of current window
|
||||
call s:h("StatusLineNC", { "fg": s:comment_grey }) " status lines of not-current windows Note: if this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window.
|
||||
call s:h("StatusLineTerm", { "fg": s:white, "bg": s:cursor_grey }) " status line of current :terminal window
|
||||
call s:h("StatusLineTermNC", { "fg": s:comment_grey }) " status line of non-current :terminal window
|
||||
call s:h("TabLine", { "fg": s:comment_grey }) " tab pages line, not active tab page label
|
||||
call s:h("TabLineFill", {}) " tab pages line, where there are no labels
|
||||
call s:h("TabLineSel", { "fg": s:white }) " tab pages line, active tab page label
|
||||
call s:h("Terminal", { "fg": s:white, "bg": s:black }) " terminal window (see terminal-size-color)
|
||||
call s:h("Title", { "fg": s:green }) " titles for output from ":set all", ":autocmd" etc.
|
||||
call s:h("Visual", { "bg": s:visual_grey }) " Visual mode selection
|
||||
call s:h("VisualNOS", { "bg": s:visual_grey }) " Visual mode selection when vim is "Not Owning the Selection". Only X11 Gui's gui-x11 and xterm-clipboard supports this.
|
||||
call s:h("WarningMsg", { "fg": s:yellow }) " warning messages
|
||||
call s:h("WildMenu", { "fg": s:black, "bg": s:blue }) " current match in 'wildmenu' completion
|
||||
|
||||
" }}}
|
||||
|
||||
" Termdebug highlighting for Vim 8.1+ {{{
|
||||
|
||||
" See `:h hl-debugPC` and `:h hl-debugBreakpoint`.
|
||||
call s:h("debugPC", { "bg": s:special_grey }) " the current position
|
||||
call s:h("debugBreakpoint", { "fg": s:black, "bg": s:red }) " a breakpoint
|
||||
|
||||
" }}}
|
||||
|
||||
" Language-Specific Highlighting {{{
|
||||
|
||||
" CSS
|
||||
call s:h("cssAttrComma", { "fg": s:purple })
|
||||
call s:h("cssAttributeSelector", { "fg": s:green })
|
||||
call s:h("cssBraces", { "fg": s:white })
|
||||
call s:h("cssClassName", { "fg": s:dark_yellow })
|
||||
call s:h("cssClassNameDot", { "fg": s:dark_yellow })
|
||||
call s:h("cssDefinition", { "fg": s:purple })
|
||||
call s:h("cssFontAttr", { "fg": s:dark_yellow })
|
||||
call s:h("cssFontDescriptor", { "fg": s:purple })
|
||||
call s:h("cssFunctionName", { "fg": s:blue })
|
||||
call s:h("cssIdentifier", { "fg": s:blue })
|
||||
call s:h("cssImportant", { "fg": s:purple })
|
||||
call s:h("cssInclude", { "fg": s:white })
|
||||
call s:h("cssIncludeKeyword", { "fg": s:purple })
|
||||
call s:h("cssMediaType", { "fg": s:dark_yellow })
|
||||
call s:h("cssProp", { "fg": s:white })
|
||||
call s:h("cssPseudoClassId", { "fg": s:dark_yellow })
|
||||
call s:h("cssSelectorOp", { "fg": s:purple })
|
||||
call s:h("cssSelectorOp2", { "fg": s:purple })
|
||||
call s:h("cssTagName", { "fg": s:red })
|
||||
|
||||
" Fish Shell
|
||||
call s:h("fishKeyword", { "fg": s:purple })
|
||||
call s:h("fishConditional", { "fg": s:purple })
|
||||
|
||||
" Go
|
||||
call s:h("goDeclaration", { "fg": s:purple })
|
||||
call s:h("goBuiltins", { "fg": s:cyan })
|
||||
call s:h("goFunctionCall", { "fg": s:blue })
|
||||
call s:h("goVarDefs", { "fg": s:red })
|
||||
call s:h("goVarAssign", { "fg": s:red })
|
||||
call s:h("goVar", { "fg": s:purple })
|
||||
call s:h("goConst", { "fg": s:purple })
|
||||
call s:h("goType", { "fg": s:yellow })
|
||||
call s:h("goTypeName", { "fg": s:yellow })
|
||||
call s:h("goDeclType", { "fg": s:cyan })
|
||||
call s:h("goTypeDecl", { "fg": s:purple })
|
||||
|
||||
" HTML (keep consistent with Markdown, below)
|
||||
call s:h("htmlArg", { "fg": s:dark_yellow })
|
||||
call s:h("htmlBold", { "fg": s:dark_yellow, "gui": "bold", "cterm": "bold" })
|
||||
call s:h("htmlBoldItalic", { "fg": s:green, "gui": "bold,italic", "cterm": "bold,italic" })
|
||||
call s:h("htmlEndTag", { "fg": s:white })
|
||||
call s:h("htmlH1", { "fg": s:red })
|
||||
call s:h("htmlH2", { "fg": s:red })
|
||||
call s:h("htmlH3", { "fg": s:red })
|
||||
call s:h("htmlH4", { "fg": s:red })
|
||||
call s:h("htmlH5", { "fg": s:red })
|
||||
call s:h("htmlH6", { "fg": s:red })
|
||||
call s:h("htmlItalic", { "fg": s:purple, "gui": "italic", "cterm": "italic" })
|
||||
call s:h("htmlLink", { "fg": s:cyan, "gui": "underline", "cterm": "underline" })
|
||||
call s:h("htmlSpecialChar", { "fg": s:dark_yellow })
|
||||
call s:h("htmlSpecialTagName", { "fg": s:red })
|
||||
call s:h("htmlTag", { "fg": s:white })
|
||||
call s:h("htmlTagN", { "fg": s:red })
|
||||
call s:h("htmlTagName", { "fg": s:red })
|
||||
call s:h("htmlTitle", { "fg": s:white })
|
||||
|
||||
" JavaScript
|
||||
call s:h("javaScriptBraces", { "fg": s:white })
|
||||
call s:h("javaScriptFunction", { "fg": s:purple })
|
||||
call s:h("javaScriptIdentifier", { "fg": s:purple })
|
||||
call s:h("javaScriptNull", { "fg": s:dark_yellow })
|
||||
call s:h("javaScriptNumber", { "fg": s:dark_yellow })
|
||||
call s:h("javaScriptRequire", { "fg": s:cyan })
|
||||
call s:h("javaScriptReserved", { "fg": s:purple })
|
||||
" https://github.com/pangloss/vim-javascript
|
||||
call s:h("jsArrowFunction", { "fg": s:purple })
|
||||
call s:h("jsClassKeyword", { "fg": s:purple })
|
||||
call s:h("jsClassMethodType", { "fg": s:purple })
|
||||
call s:h("jsDocParam", { "fg": s:blue })
|
||||
call s:h("jsDocTags", { "fg": s:purple })
|
||||
call s:h("jsExport", { "fg": s:purple })
|
||||
call s:h("jsExportDefault", { "fg": s:purple })
|
||||
call s:h("jsExtendsKeyword", { "fg": s:purple })
|
||||
call s:h("jsFrom", { "fg": s:purple })
|
||||
call s:h("jsFuncCall", { "fg": s:blue })
|
||||
call s:h("jsFunction", { "fg": s:purple })
|
||||
call s:h("jsGenerator", { "fg": s:yellow })
|
||||
call s:h("jsGlobalObjects", { "fg": s:yellow })
|
||||
call s:h("jsImport", { "fg": s:purple })
|
||||
call s:h("jsModuleAs", { "fg": s:purple })
|
||||
call s:h("jsModuleWords", { "fg": s:purple })
|
||||
call s:h("jsModules", { "fg": s:purple })
|
||||
call s:h("jsNull", { "fg": s:dark_yellow })
|
||||
call s:h("jsOperator", { "fg": s:purple })
|
||||
call s:h("jsStorageClass", { "fg": s:purple })
|
||||
call s:h("jsSuper", { "fg": s:red })
|
||||
call s:h("jsTemplateBraces", { "fg": s:dark_red })
|
||||
call s:h("jsTemplateVar", { "fg": s:green })
|
||||
call s:h("jsThis", { "fg": s:red })
|
||||
call s:h("jsUndefined", { "fg": s:dark_yellow })
|
||||
" https://github.com/othree/yajs.vim
|
||||
call s:h("javascriptArrowFunc", { "fg": s:purple })
|
||||
call s:h("javascriptClassExtends", { "fg": s:purple })
|
||||
call s:h("javascriptClassKeyword", { "fg": s:purple })
|
||||
call s:h("javascriptDocNotation", { "fg": s:purple })
|
||||
call s:h("javascriptDocParamName", { "fg": s:blue })
|
||||
call s:h("javascriptDocTags", { "fg": s:purple })
|
||||
call s:h("javascriptEndColons", { "fg": s:white })
|
||||
call s:h("javascriptExport", { "fg": s:purple })
|
||||
call s:h("javascriptFuncArg", { "fg": s:white })
|
||||
call s:h("javascriptFuncKeyword", { "fg": s:purple })
|
||||
call s:h("javascriptIdentifier", { "fg": s:red })
|
||||
call s:h("javascriptImport", { "fg": s:purple })
|
||||
call s:h("javascriptMethodName", { "fg": s:white })
|
||||
call s:h("javascriptObjectLabel", { "fg": s:white })
|
||||
call s:h("javascriptOpSymbol", { "fg": s:cyan })
|
||||
call s:h("javascriptOpSymbols", { "fg": s:cyan })
|
||||
call s:h("javascriptPropertyName", { "fg": s:green })
|
||||
call s:h("javascriptTemplateSB", { "fg": s:dark_red })
|
||||
call s:h("javascriptVariable", { "fg": s:purple })
|
||||
|
||||
" JSON
|
||||
call s:h("jsonCommentError", { "fg": s:white })
|
||||
call s:h("jsonKeyword", { "fg": s:red })
|
||||
call s:h("jsonBoolean", { "fg": s:dark_yellow })
|
||||
call s:h("jsonNumber", { "fg": s:dark_yellow })
|
||||
call s:h("jsonQuote", { "fg": s:white })
|
||||
call s:h("jsonMissingCommaError", { "fg": s:red, "gui": "reverse" })
|
||||
call s:h("jsonNoQuotesError", { "fg": s:red, "gui": "reverse" })
|
||||
call s:h("jsonNumError", { "fg": s:red, "gui": "reverse" })
|
||||
call s:h("jsonString", { "fg": s:green })
|
||||
call s:h("jsonStringSQError", { "fg": s:red, "gui": "reverse" })
|
||||
call s:h("jsonSemicolonError", { "fg": s:red, "gui": "reverse" })
|
||||
|
||||
" LESS
|
||||
call s:h("lessVariable", { "fg": s:purple })
|
||||
call s:h("lessAmpersandChar", { "fg": s:white })
|
||||
call s:h("lessClass", { "fg": s:dark_yellow })
|
||||
|
||||
" Markdown (keep consistent with HTML, above)
|
||||
call s:h("markdownBlockquote", { "fg": s:comment_grey })
|
||||
call s:h("markdownBold", { "fg": s:dark_yellow, "gui": "bold", "cterm": "bold" })
|
||||
call s:h("markdownBoldItalic", { "fg": s:green, "gui": "bold,italic", "cterm": "bold,italic" })
|
||||
call s:h("markdownCode", { "fg": s:green })
|
||||
call s:h("markdownCodeBlock", { "fg": s:green })
|
||||
call s:h("markdownCodeDelimiter", { "fg": s:green })
|
||||
call s:h("markdownH1", { "fg": s:red })
|
||||
call s:h("markdownH2", { "fg": s:red })
|
||||
call s:h("markdownH3", { "fg": s:red })
|
||||
call s:h("markdownH4", { "fg": s:red })
|
||||
call s:h("markdownH5", { "fg": s:red })
|
||||
call s:h("markdownH6", { "fg": s:red })
|
||||
call s:h("markdownHeadingDelimiter", { "fg": s:red })
|
||||
call s:h("markdownHeadingRule", { "fg": s:comment_grey })
|
||||
call s:h("markdownId", { "fg": s:purple })
|
||||
call s:h("markdownIdDeclaration", { "fg": s:blue })
|
||||
call s:h("markdownIdDelimiter", { "fg": s:purple })
|
||||
call s:h("markdownItalic", { "fg": s:purple, "gui": "italic", "cterm": "italic" })
|
||||
call s:h("markdownLinkDelimiter", { "fg": s:purple })
|
||||
call s:h("markdownLinkText", { "fg": s:blue })
|
||||
call s:h("markdownListMarker", { "fg": s:red })
|
||||
call s:h("markdownOrderedListMarker", { "fg": s:red })
|
||||
call s:h("markdownRule", { "fg": s:comment_grey })
|
||||
call s:h("markdownUrl", { "fg": s:cyan, "gui": "underline", "cterm": "underline" })
|
||||
|
||||
" Perl
|
||||
call s:h("perlFiledescRead", { "fg": s:green })
|
||||
call s:h("perlFunction", { "fg": s:purple })
|
||||
call s:h("perlMatchStartEnd",{ "fg": s:blue })
|
||||
call s:h("perlMethod", { "fg": s:purple })
|
||||
call s:h("perlPOD", { "fg": s:comment_grey })
|
||||
call s:h("perlSharpBang", { "fg": s:comment_grey })
|
||||
call s:h("perlSpecialString",{ "fg": s:dark_yellow })
|
||||
call s:h("perlStatementFiledesc", { "fg": s:red })
|
||||
call s:h("perlStatementFlow",{ "fg": s:red })
|
||||
call s:h("perlStatementInclude", { "fg": s:purple })
|
||||
call s:h("perlStatementScalar",{ "fg": s:purple })
|
||||
call s:h("perlStatementStorage", { "fg": s:purple })
|
||||
call s:h("perlSubName",{ "fg": s:yellow })
|
||||
call s:h("perlVarPlain",{ "fg": s:blue })
|
||||
|
||||
" PHP
|
||||
call s:h("phpVarSelector", { "fg": s:red })
|
||||
call s:h("phpOperator", { "fg": s:white })
|
||||
call s:h("phpParent", { "fg": s:white })
|
||||
call s:h("phpMemberSelector", { "fg": s:white })
|
||||
call s:h("phpType", { "fg": s:purple })
|
||||
call s:h("phpKeyword", { "fg": s:purple })
|
||||
call s:h("phpClass", { "fg": s:yellow })
|
||||
call s:h("phpUseClass", { "fg": s:white })
|
||||
call s:h("phpUseAlias", { "fg": s:white })
|
||||
call s:h("phpInclude", { "fg": s:purple })
|
||||
call s:h("phpClassExtends", { "fg": s:green })
|
||||
call s:h("phpDocTags", { "fg": s:white })
|
||||
call s:h("phpFunction", { "fg": s:blue })
|
||||
call s:h("phpFunctions", { "fg": s:cyan })
|
||||
call s:h("phpMethodsVar", { "fg": s:dark_yellow })
|
||||
call s:h("phpMagicConstants", { "fg": s:dark_yellow })
|
||||
call s:h("phpSuperglobals", { "fg": s:red })
|
||||
call s:h("phpConstants", { "fg": s:dark_yellow })
|
||||
|
||||
" Ruby
|
||||
call s:h("rubyBlockParameter", { "fg": s:red})
|
||||
call s:h("rubyBlockParameterList", { "fg": s:red })
|
||||
call s:h("rubyClass", { "fg": s:purple})
|
||||
call s:h("rubyConstant", { "fg": s:yellow})
|
||||
call s:h("rubyControl", { "fg": s:purple })
|
||||
call s:h("rubyEscape", { "fg": s:red})
|
||||
call s:h("rubyFunction", { "fg": s:blue})
|
||||
call s:h("rubyGlobalVariable", { "fg": s:red})
|
||||
call s:h("rubyInclude", { "fg": s:blue})
|
||||
call s:h("rubyIncluderubyGlobalVariable", { "fg": s:red})
|
||||
call s:h("rubyInstanceVariable", { "fg": s:red})
|
||||
call s:h("rubyInterpolation", { "fg": s:cyan })
|
||||
call s:h("rubyInterpolationDelimiter", { "fg": s:red })
|
||||
call s:h("rubyInterpolationDelimiter", { "fg": s:red})
|
||||
call s:h("rubyRegexp", { "fg": s:cyan})
|
||||
call s:h("rubyRegexpDelimiter", { "fg": s:cyan})
|
||||
call s:h("rubyStringDelimiter", { "fg": s:green})
|
||||
call s:h("rubySymbol", { "fg": s:cyan})
|
||||
|
||||
" Sass
|
||||
" https://github.com/tpope/vim-haml
|
||||
call s:h("sassAmpersand", { "fg": s:red })
|
||||
call s:h("sassClass", { "fg": s:dark_yellow })
|
||||
call s:h("sassControl", { "fg": s:purple })
|
||||
call s:h("sassExtend", { "fg": s:purple })
|
||||
call s:h("sassFor", { "fg": s:white })
|
||||
call s:h("sassFunction", { "fg": s:cyan })
|
||||
call s:h("sassId", { "fg": s:blue })
|
||||
call s:h("sassInclude", { "fg": s:purple })
|
||||
call s:h("sassMedia", { "fg": s:purple })
|
||||
call s:h("sassMediaOperators", { "fg": s:white })
|
||||
call s:h("sassMixin", { "fg": s:purple })
|
||||
call s:h("sassMixinName", { "fg": s:blue })
|
||||
call s:h("sassMixing", { "fg": s:purple })
|
||||
call s:h("sassVariable", { "fg": s:purple })
|
||||
" https://github.com/cakebaker/scss-syntax.vim
|
||||
call s:h("scssExtend", { "fg": s:purple })
|
||||
call s:h("scssImport", { "fg": s:purple })
|
||||
call s:h("scssInclude", { "fg": s:purple })
|
||||
call s:h("scssMixin", { "fg": s:purple })
|
||||
call s:h("scssSelectorName", { "fg": s:dark_yellow })
|
||||
call s:h("scssVariable", { "fg": s:purple })
|
||||
|
||||
" TeX
|
||||
call s:h("texStatement", { "fg": s:purple })
|
||||
call s:h("texSubscripts", { "fg": s:dark_yellow })
|
||||
call s:h("texSuperscripts", { "fg": s:dark_yellow })
|
||||
call s:h("texTodo", { "fg": s:dark_red })
|
||||
call s:h("texBeginEnd", { "fg": s:purple })
|
||||
call s:h("texBeginEndName", { "fg": s:blue })
|
||||
call s:h("texMathMatcher", { "fg": s:blue })
|
||||
call s:h("texMathDelim", { "fg": s:blue })
|
||||
call s:h("texDelimiter", { "fg": s:dark_yellow })
|
||||
call s:h("texSpecialChar", { "fg": s:dark_yellow })
|
||||
call s:h("texCite", { "fg": s:blue })
|
||||
call s:h("texRefZone", { "fg": s:blue })
|
||||
|
||||
" TypeScript
|
||||
call s:h("typescriptReserved", { "fg": s:purple })
|
||||
call s:h("typescriptEndColons", { "fg": s:white })
|
||||
call s:h("typescriptBraces", { "fg": s:white })
|
||||
|
||||
" XML
|
||||
call s:h("xmlAttrib", { "fg": s:dark_yellow })
|
||||
call s:h("xmlEndTag", { "fg": s:red })
|
||||
call s:h("xmlTag", { "fg": s:red })
|
||||
call s:h("xmlTagName", { "fg": s:red })
|
||||
|
||||
" }}}
|
||||
|
||||
" Plugin Highlighting {{{
|
||||
|
||||
" airblade/vim-gitgutter
|
||||
call s:h("GitGutterAdd", { "fg": s:green })
|
||||
call s:h("GitGutterChange", { "fg": s:yellow })
|
||||
call s:h("GitGutterDelete", { "fg": s:red })
|
||||
|
||||
" dense-analysis/ale
|
||||
call s:h("ALEError", { "fg": s:red, "gui": "underline", "cterm": "underline" })
|
||||
call s:h("ALEWarning", { "fg": s:yellow, "gui": "underline", "cterm": "underline" })
|
||||
call s:h("ALEInfo", { "gui": "underline", "cterm": "underline" })
|
||||
call s:h("ALEErrorSign", { "fg": s:red })
|
||||
call s:h("ALEWarningSign", { "fg": s:yellow })
|
||||
call s:h("ALEInfoSign", { })
|
||||
|
||||
" easymotion/vim-easymotion
|
||||
call s:h("EasyMotionTarget", { "fg": s:red, "gui": "bold", "cterm": "bold" })
|
||||
call s:h("EasyMotionTarget2First", { "fg": s:yellow, "gui": "bold", "cterm": "bold" })
|
||||
call s:h("EasyMotionTarget2Second", { "fg": s:dark_yellow, "gui": "bold", "cterm": "bold" })
|
||||
call s:h("EasyMotionShade", { "fg": s:comment_grey })
|
||||
|
||||
" lewis6991/gitsigns.nvim
|
||||
hi link GitSignsAdd GitGutterAdd
|
||||
hi link GitSignsChange GitGutterChange
|
||||
hi link GitSignsDelete GitGutterDelete
|
||||
|
||||
" mhinz/vim-signify
|
||||
hi link SignifySignAdd GitGutterAdd
|
||||
hi link SignifySignChange GitGutterChange
|
||||
hi link SignifySignDelete GitGutterDelete
|
||||
|
||||
" neoclide/coc.nvim
|
||||
call s:h("CocErrorSign", { "fg": s:red })
|
||||
call s:h("CocWarningSign", { "fg": s:yellow })
|
||||
call s:h("CocInfoSign", { "fg": s:blue })
|
||||
call s:h("CocHintSign", { "fg": s:cyan })
|
||||
call s:h("CocFadeOut", { "fg": s:comment_grey })
|
||||
" https://github.com/joshdick/onedark.vim/issues/313
|
||||
highlight! link CocMenuSel PmenuSel
|
||||
|
||||
" neomake/neomake
|
||||
call s:h("NeomakeErrorSign", { "fg": s:red })
|
||||
call s:h("NeomakeWarningSign", { "fg": s:yellow })
|
||||
call s:h("NeomakeInfoSign", { "fg": s:blue })
|
||||
|
||||
" plasticboy/vim-markdown (keep consistent with Markdown, above)
|
||||
call s:h("mkdDelimiter", { "fg": s:purple })
|
||||
call s:h("mkdHeading", { "fg": s:red })
|
||||
call s:h("mkdLink", { "fg": s:blue })
|
||||
call s:h("mkdURL", { "fg": s:cyan, "gui": "underline", "cterm": "underline" })
|
||||
|
||||
" prabirshrestha/vim-lsp
|
||||
call s:h("LspErrorText", { "fg": s:red })
|
||||
call s:h("LspWarningText", { "fg": s:yellow })
|
||||
call s:h("LspInformationText", { "fg":s:blue })
|
||||
call s:h("LspHintText", { "fg":s:cyan })
|
||||
call s:h("LspErrorHighlight", { "fg": s:red, "gui": "underline", "cterm": "underline" })
|
||||
call s:h("LspWarningHighlight", { "fg": s:yellow, "gui": "underline", "cterm": "underline" })
|
||||
call s:h("LspInformationHighlight", { "fg":s:blue, "gui": "underline", "cterm": "underline" })
|
||||
call s:h("LspHintHighlight", { "fg":s:cyan, "gui": "underline", "cterm": "underline" })
|
||||
|
||||
" tpope/vim-fugitive
|
||||
call s:h("diffAdded", { "fg": s:green })
|
||||
call s:h("diffRemoved", { "fg": s:red })
|
||||
|
||||
" }}}
|
||||
|
||||
" Git Highlighting {{{
|
||||
|
||||
call s:h("gitcommitComment", { "fg": s:comment_grey })
|
||||
call s:h("gitcommitUnmerged", { "fg": s:green })
|
||||
call s:h("gitcommitOnBranch", {})
|
||||
call s:h("gitcommitBranch", { "fg": s:purple })
|
||||
call s:h("gitcommitDiscardedType", { "fg": s:red })
|
||||
call s:h("gitcommitSelectedType", { "fg": s:green })
|
||||
call s:h("gitcommitHeader", {})
|
||||
call s:h("gitcommitUntrackedFile", { "fg": s:cyan })
|
||||
call s:h("gitcommitDiscardedFile", { "fg": s:red })
|
||||
call s:h("gitcommitSelectedFile", { "fg": s:green })
|
||||
call s:h("gitcommitUnmergedFile", { "fg": s:yellow })
|
||||
call s:h("gitcommitFile", {})
|
||||
call s:h("gitcommitSummary", { "fg": s:white })
|
||||
call s:h("gitcommitOverflow", { "fg": s:red })
|
||||
hi link gitcommitNoBranch gitcommitBranch
|
||||
hi link gitcommitUntracked gitcommitComment
|
||||
hi link gitcommitDiscarded gitcommitComment
|
||||
hi link gitcommitSelected gitcommitComment
|
||||
hi link gitcommitDiscardedArrow gitcommitDiscardedFile
|
||||
hi link gitcommitSelectedArrow gitcommitSelectedFile
|
||||
hi link gitcommitUnmergedArrow gitcommitUnmergedFile
|
||||
|
||||
" }}}
|
||||
|
||||
" Neovim-Specific Highlighting {{{
|
||||
|
||||
if has("nvim")
|
||||
" Neovim terminal colors {{{
|
||||
let g:terminal_color_0 = s:black.gui
|
||||
let g:terminal_color_1 = s:red.gui
|
||||
let g:terminal_color_2 = s:green.gui
|
||||
let g:terminal_color_3 = s:yellow.gui
|
||||
let g:terminal_color_4 = s:blue.gui
|
||||
let g:terminal_color_5 = s:purple.gui
|
||||
let g:terminal_color_6 = s:cyan.gui
|
||||
let g:terminal_color_7 = s:white.gui
|
||||
let g:terminal_color_8 = s:visual_grey.gui
|
||||
let g:terminal_color_9 = s:dark_red.gui
|
||||
let g:terminal_color_10 = s:green.gui " No dark version
|
||||
let g:terminal_color_11 = s:dark_yellow.gui
|
||||
let g:terminal_color_12 = s:blue.gui " No dark version
|
||||
let g:terminal_color_13 = s:purple.gui " No dark version
|
||||
let g:terminal_color_14 = s:cyan.gui " No dark version
|
||||
let g:terminal_color_15 = s:comment_grey.gui
|
||||
let g:terminal_color_background = s:background.gui
|
||||
let g:terminal_color_foreground = s:foreground.gui
|
||||
" }}}
|
||||
|
||||
" Neovim Diagnostics {{{
|
||||
call s:h("DiagnosticError", { "fg": s:red })
|
||||
call s:h("DiagnosticWarn", { "fg": s:yellow })
|
||||
call s:h("DiagnosticInfo", { "fg": s:blue })
|
||||
call s:h("DiagnosticHint", { "fg": s:cyan })
|
||||
call s:h("DiagnosticUnderlineError", { "fg": s:red, "gui": "underline", "cterm": "underline" })
|
||||
call s:h("DiagnosticUnderlineWarn", { "fg": s:yellow, "gui": "underline", "cterm": "underline" })
|
||||
call s:h("DiagnosticUnderlineInfo", { "fg": s:blue, "gui": "underline", "cterm": "underline" })
|
||||
call s:h("DiagnosticUnderlineHint", { "fg": s:cyan, "gui": "underline", "cterm": "underline" })
|
||||
" }}}
|
||||
|
||||
" Neovim LSP (for versions < 0.5.1) {{{
|
||||
hi link LspDiagnosticsDefaultError DiagnosticError
|
||||
hi link LspDiagnosticsDefaultWarning DiagnosticWarn
|
||||
hi link LspDiagnosticsDefaultInformation DiagnosticInfo
|
||||
hi link LspDiagnosticsDefaultHint DiagnosticHint
|
||||
hi link LspDiagnosticsUnderlineError DiagnosticUnderlineError
|
||||
hi link LspDiagnosticsUnderlineWarning DiagnosticUnderlineWarn
|
||||
hi link LspDiagnosticsUnderlineInformation DiagnosticUnderlineInfo
|
||||
hi link LspDiagnosticsUnderlineHint DiagnosticUnderlineHint
|
||||
" }}}
|
||||
endif
|
||||
|
||||
" }}}
|
||||
|
||||
" Must appear at the end of the file to work around this oddity:
|
||||
" https://groups.google.com/forum/#!msg/vim_dev/afPqwAFNdrU/nqh6tOM87QUJ
|
||||
set background=dark
|
||||
1
vim/.vim/plugged/ale
Submodule
1
vim/.vim/plugged/ale
Submodule
Submodule vim/.vim/plugged/ale added at 8922478a83
1
vim/.vim/plugged/coc.nvim
Submodule
1
vim/.vim/plugged/coc.nvim
Submodule
Submodule vim/.vim/plugged/coc.nvim added at 7b9e1ef0a1
1
vim/.vim/plugged/copilot.vim
Submodule
1
vim/.vim/plugged/copilot.vim
Submodule
Submodule vim/.vim/plugged/copilot.vim added at 22fd9542e3
1
vim/.vim/plugged/fzf
Submodule
1
vim/.vim/plugged/fzf
Submodule
Submodule vim/.vim/plugged/fzf added at da752fc9a4
1
vim/.vim/plugged/fzf.vim
Submodule
1
vim/.vim/plugged/fzf.vim
Submodule
Submodule vim/.vim/plugged/fzf.vim added at f6cb5b1789
1
vim/.vim/plugged/gruvbox
Submodule
1
vim/.vim/plugged/gruvbox
Submodule
Submodule vim/.vim/plugged/gruvbox added at f1ecde848f
1
vim/.vim/plugged/lightline.vim
Submodule
1
vim/.vim/plugged/lightline.vim
Submodule
Submodule vim/.vim/plugged/lightline.vim added at 58c97bc21c
1
vim/.vim/plugged/minimap.vim
Submodule
1
vim/.vim/plugged/minimap.vim
Submodule
Submodule vim/.vim/plugged/minimap.vim added at 701f4cf4b6
1
vim/.vim/plugged/nerdtree
Submodule
1
vim/.vim/plugged/nerdtree
Submodule
Submodule vim/.vim/plugged/nerdtree added at bc606c43e2
1
vim/.vim/plugged/tagbar
Submodule
1
vim/.vim/plugged/tagbar
Submodule
Submodule vim/.vim/plugged/tagbar added at 12edcb5944
1
vim/.vim/plugged/undotree
Submodule
1
vim/.vim/plugged/undotree
Submodule
Submodule vim/.vim/plugged/undotree added at 7df3be7a26
1
vim/.vim/plugged/vim-commentary
Submodule
1
vim/.vim/plugged/vim-commentary
Submodule
Submodule vim/.vim/plugged/vim-commentary added at f67e3e67ea
1
vim/.vim/plugged/vim-css-color
Submodule
1
vim/.vim/plugged/vim-css-color
Submodule
Submodule vim/.vim/plugged/vim-css-color added at faa6593566
1
vim/.vim/plugged/vim-devicons
Submodule
1
vim/.vim/plugged/vim-devicons
Submodule
Submodule vim/.vim/plugged/vim-devicons added at 71f239af28
1
vim/.vim/plugged/vim-fugitive
Submodule
1
vim/.vim/plugged/vim-fugitive
Submodule
Submodule vim/.vim/plugged/vim-fugitive added at 854a8df0d0
1
vim/.vim/plugged/vim-lsp
Submodule
1
vim/.vim/plugged/vim-lsp
Submodule
Submodule vim/.vim/plugged/vim-lsp added at c20c6650d3
1
vim/.vim/plugged/vim-lsp-settings
Submodule
1
vim/.vim/plugged/vim-lsp-settings
Submodule
Submodule vim/.vim/plugged/vim-lsp-settings added at df2ee3844f
1
vim/.vim/plugged/vim-smooth-scroll
Submodule
1
vim/.vim/plugged/vim-smooth-scroll
Submodule
Submodule vim/.vim/plugged/vim-smooth-scroll added at 0eae2367c7
1
vim/.vim/plugged/vim-startify
Submodule
1
vim/.vim/plugged/vim-startify
Submodule
Submodule vim/.vim/plugged/vim-startify added at 4e089dffda
1
vim/.vim/plugged/vim-surround
Submodule
1
vim/.vim/plugged/vim-surround
Submodule
Submodule vim/.vim/plugged/vim-surround added at 3d188ed211
2350
vim/.viminfo
Normal file
2350
vim/.viminfo
Normal file
@@ -0,0 +1,2350 @@
|
||||
# This viminfo file was generated by Vim 9.0.
|
||||
# You may edit it if you're careful!
|
||||
|
||||
# Viminfo version
|
||||
|1,4
|
||||
|
||||
# Value of 'encoding' when this file was written
|
||||
*encoding=utf-8
|
||||
|
||||
|
||||
# hlsearch on (H) or off (h):
|
||||
~h
|
||||
# Last Search Pattern:
|
||||
~MSle0~/nerdtree
|
||||
|
||||
# Last Substitute Search Pattern:
|
||||
~MSle0&\<matrixDeterminant\>
|
||||
|
||||
# Last Substitute String:
|
||||
$
|
||||
|
||||
# Command Line History (newest to oldest):
|
||||
:wq
|
||||
|2,0,1707945903,,"wq"
|
||||
:so
|
||||
|2,0,1707759623,,"so"
|
||||
:w
|
||||
|2,0,1707759622,,"w"
|
||||
:q
|
||||
|2,0,1707759597,,"q"
|
||||
::
|
||||
|2,0,1707430602,,":"
|
||||
:Ex
|
||||
|2,0,1707379711,,"Ex"
|
||||
:ex
|
||||
|2,0,1707379704,,"ex"
|
||||
:Copilot
|
||||
|2,0,1707373381,,"Copilot"
|
||||
:q\
|
||||
|2,0,1707373095,,"q\\"
|
||||
:q!
|
||||
|2,0,1707336297,,"q!"
|
||||
:wq!
|
||||
|2,0,1707336293,,"wq!"
|
||||
:terminal
|
||||
|2,0,1707328622,,"terminal"
|
||||
:qa
|
||||
|2,0,1707328522,,"qa"
|
||||
:vsplit ../third/third.c
|
||||
|2,0,1707328316,,"vsplit ../third/third.c"
|
||||
:vsplit terminal
|
||||
|2,0,1707328092,,"vsplit terminal"
|
||||
:%s/\<fifth\>/fifth/gI
|
||||
|2,0,1707327514,,"%s/\\<fifth\\>/fifth/gI"
|
||||
:%s/\<out\>/out/gI
|
||||
|2,0,1707327513,,"%s/\\<out\\>/out/gI"
|
||||
:%s/\<matrixDeterminant\>/fifth/gI
|
||||
|2,0,1707327499,,"%s/\\<matrixDeterminant\\>/fifth/gI"
|
||||
:!mv fifth.c fifth
|
||||
|2,0,1707327474,,"!mv fifth.c fifth"
|
||||
:!mv fifth/matrixDeterminant.c fifth.c
|
||||
|2,0,1707327442,,"!mv fifth/matrixDeterminant.c fifth.c"
|
||||
:source %
|
||||
|2,0,1707296314,,"source %"
|
||||
:vsplit ~/.vimrc
|
||||
|2,0,1707296135,,"vsplit ~/.vimrc"
|
||||
:ALEInfo
|
||||
|2,0,1707296105,,"ALEInfo"
|
||||
:ALEStop
|
||||
|2,0,1707296099,,"ALEStop"
|
||||
:ALEEnable
|
||||
|2,0,1707296091,,"ALEEnable"
|
||||
:ALEGoToTypeDefinition
|
||||
|2,0,1707296077,,"ALEGoToTypeDefinition"
|
||||
:ALEGoToImplementation
|
||||
|2,0,1707296075,,"ALEGoToImplementation"
|
||||
:ALEGoToDefinition
|
||||
|2,0,1707296072,,"ALEGoToDefinition"
|
||||
:tabclose
|
||||
|2,0,1707295950,,"tabclose"
|
||||
:PlugInstall
|
||||
|2,0,1707295805,,"PlugInstall"
|
||||
:;q
|
||||
|2,0,1707295764,,";q"
|
||||
:verbose func {194}
|
||||
|2,0,1707292929,,"verbose func {194}"
|
||||
:source ~/nvim/init.lua
|
||||
|2,0,1707290837,,"source ~/nvim/init.lua"
|
||||
:h rtp
|
||||
|2,0,1707290556,,"h rtp"
|
||||
:qa!
|
||||
|2,0,1707290107,,"qa!"
|
||||
:nohlsearch
|
||||
|2,0,1707282079,,"nohlsearch"
|
||||
:%s/\<postorder\>/postorderfree/gI
|
||||
|2,0,1707282073,,"%s/\\<postorder\\>/postorderfree/gI"
|
||||
:source ~/.vimrc
|
||||
|2,0,1707281503,,"source ~/.vimrc"
|
||||
:G pull
|
||||
|2,0,1707279868,,"G pull"
|
||||
:G push
|
||||
|2,0,1707279853,,"G push"
|
||||
:%s/\<postorder\>/post_order_free/gI
|
||||
|2,0,1707279772,,"%s/\\<postorder\\>/post_order_free/gI"
|
||||
:Qa
|
||||
|2,0,1707279695,,"Qa"
|
||||
:!make
|
||||
|2,0,1707279690,,"!make"
|
||||
:kk
|
||||
|2,0,1707278521,,"kk"
|
||||
:!./fourth file1.txt
|
||||
|2,0,1707277608,,"!./fourth file1.txt"
|
||||
:%s/\<NeoBundle\>/NeoBundle]/gI
|
||||
|2,0,1707273603,,"%s/\\<NeoBundle\\>/NeoBundle]/gI"
|
||||
:%s/\<nnoremap\>//gI
|
||||
|2,0,1707273586,,"%s/\\<nnoremap\\>//gI"
|
||||
:%s/\<nnoremap\>/vasdfojjodsf/gI
|
||||
|2,0,1707273578,,"%s/\\<nnoremap\\>/vasdfojjodsf/gI"
|
||||
:%s/\<NeoBundle\>/NeoBundle]]/gI
|
||||
|2,0,1707273548,,"%s/\\<NeoBundle\\>/NeoBundle]]/gI"
|
||||
:NeoBundleInstall
|
||||
|2,0,1707273223,,"NeoBundleInstall"
|
||||
:Copilto
|
||||
|2,0,1707273020,,"Copilto"
|
||||
:source
|
||||
|2,0,1707272518,,"source "
|
||||
:<nop>
|
||||
|2,0,1707271773,,"<nop>"
|
||||
:LspInst:q
|
||||
|2,0,1707271335,,"LspInst:q"
|
||||
:Q
|
||||
|2,0,1707250936,,"Q"
|
||||
:colorscheme gruvbox
|
||||
|2,0,1707250857,,"colorscheme gruvbox"
|
||||
:Minimap
|
||||
|2,0,1707250675,,"Minimap"
|
||||
:help ale-fix-configuration
|
||||
|2,0,1707243986,,"help ale-fix-configuration"
|
||||
:ALEFixSuggest
|
||||
|2,0,1707243871,,"ALEFixSuggest"
|
||||
:ALEFix
|
||||
|2,0,1707243861,,"ALEFix"
|
||||
:ALEDetail
|
||||
|2,0,1707243855,,"ALEDetail"
|
||||
:ALEToggleBuffer
|
||||
|2,0,1707243779,,"ALEToggleBuffer"
|
||||
:GFiles
|
||||
|2,0,1707243327,,"GFiles"
|
||||
:FZF
|
||||
|2,0,1707243224,,"FZF"
|
||||
:Gfiles?
|
||||
|2,0,1707243216,,"Gfiles?"
|
||||
:Gfiles
|
||||
|2,0,1707243212,,"Gfiles"
|
||||
:Files
|
||||
|2,0,1707243167,,"Files"
|
||||
:f
|
||||
|2,0,1707243121,,"f"
|
||||
:fzf
|
||||
|2,0,1707243120,,"fzf"
|
||||
:vsplit ../second/second.c
|
||||
|2,0,1707241815,,"vsplit ../second/second.c"
|
||||
:;
|
||||
|2,0,1707200389,,";"
|
||||
:LspInstallServer
|
||||
|2,0,1707200311,,"LspInstallServer"
|
||||
:UndotreeShow
|
||||
|2,0,1707200213,,"UndotreeShow"
|
||||
:Gpush
|
||||
|2,0,1707199999,,"Gpush"
|
||||
:suorce ~/
|
||||
|2,0,1707199126,,"suorce ~/"
|
||||
:source vimr
|
||||
|2,0,1707199003,,"source vimr"
|
||||
:h coc-action-jumpDefinition
|
||||
|2,0,1707198624,,"h coc-action-jumpDefinition"
|
||||
::h coc-action-jumpDefinition
|
||||
|2,0,1707198613,,":h coc-action-jumpDefinition
|
||||
"
|
||||
:vsplit
|
||||
|2,0,1707198514,,"vsplit "
|
||||
:PlugClean
|
||||
|2,0,1707197802,,"PlugClean"
|
||||
:LspStatus
|
||||
|2,0,1707197731,,"LspStatus"
|
||||
:LspInstallServer`
|
||||
|2,0,1707197717,,"LspInstallServer`"
|
||||
:P
|
||||
|2,0,1707197714,,"P"
|
||||
:Q!
|
||||
|2,0,1707197696,,"Q!"
|
||||
:!source ~/.vimrc
|
||||
|2,0,1707197593,,"!source ~/.vimrc"
|
||||
:Source ~
|
||||
|2,0,1707197584,,"Source ~"
|
||||
:vsplit
|
||||
|2,0,1707197375,,"vsplit"
|
||||
:Vsplit
|
||||
|2,0,1707197373,,"Vsplit"
|
||||
:%s/binarySearchTree/fourth/gc
|
||||
|2,0,1707197335,,"%s/binarySearchTree/fourth/gc"
|
||||
:%s/binarySearchTree.out/fourth/g
|
||||
|2,0,1707197309,,"%s/binarySearchTree.out/fourth/g"
|
||||
:Lsp
|
||||
|2,0,1707197070,,"Lsp"
|
||||
:Git
|
||||
|2,0,1707196487,,"Git"
|
||||
:S=si
|
||||
|2,0,1707196054,,"S=si"
|
||||
:u
|
||||
|2,0,1707196050,,"u"
|
||||
:pv
|
||||
|2,0,1707195977,,"pv"
|
||||
:G commit -m "Fixed Third"
|
||||
|2,0,1707013056,,"G commit -m \"Fixed Third\""
|
||||
:G stage .
|
||||
|2,0,1707013047,,"G stage ."
|
||||
:G add .
|
||||
|2,0,1707013038,,"G add ."
|
||||
:Wq
|
||||
|2,0,1707008030,,"Wq"
|
||||
:G
|
||||
|2,0,1707004768,,"G"
|
||||
:nohlserach
|
||||
|2,0,1707004341,,"nohlserach"
|
||||
:%s/numRows/numRowsCols/g
|
||||
|2,0,1707004335,,"%s/numRows/numRowsCols/g"
|
||||
:%s/numRows/numRowsCols/ga
|
||||
|2,0,1707004325,,"%s/numRows/numRowsCols/ga"
|
||||
:termnial
|
||||
|2,0,1707003368,,"termnial"
|
||||
:Terminal
|
||||
|2,0,1707003366,,"Terminal"
|
||||
:swap
|
||||
|2,0,1707003165,,"swap"
|
||||
:G commit -m "Fixes"
|
||||
|2,0,1707003043,,"G commit -m \"Fixes\""
|
||||
:g stage .
|
||||
|2,0,1707003034,,"g stage ."
|
||||
:git
|
||||
|2,0,1707003018,,"git"
|
||||
:g add .
|
||||
|2,0,1707003016,,"g add ."
|
||||
:%s/matrixExponentiation/third/gc
|
||||
|2,0,1707002351,,"%s/matrixExponentiation/third/gc"
|
||||
:%s/Node/node_t/gc
|
||||
|2,0,1706897965,,"%s/Node/node_t/gc"
|
||||
:iw
|
||||
|2,0,1706896745,,"iw"
|
||||
:'<,'>q
|
||||
|2,0,1706895576,,"'<,'>q"
|
||||
:%s/second.out/second/g
|
||||
|2,0,1706894128,,"%s/second.out/second/g"
|
||||
:%s/orderedLinkedList/second/g
|
||||
|2,0,1706894110,,"%s/orderedLinkedList/second/g"
|
||||
:s/orderedLinkedList/second/g
|
||||
|2,0,1706894097,,"s/orderedLinkedList/second/g"
|
||||
:s/orderedLinkedList
|
||||
|2,0,1706894075,,"s/orderedLinkedList"
|
||||
:Lq
|
||||
|2,0,1706642945,,"Lq"
|
||||
:45
|
||||
|2,0,1706639472,,"45"
|
||||
:40
|
||||
|2,0,1706639435,,"40"
|
||||
:37
|
||||
|2,0,1706639130,,"37"
|
||||
:3
|
||||
|2,0,1706639126,,"3"
|
||||
:W
|
||||
|2,0,1706636510,,"W"
|
||||
:vsplit /Users/joshp/Projects/ComputerArchitecture/lecture-4/test.c
|
||||
|2,0,1706636164,,"vsplit /Users/joshp/Projects/ComputerArchitecture/lecture-4/test.c"
|
||||
:a;
|
||||
|2,0,1706291479,,"a;"
|
||||
:help 'fscanf'
|
||||
|2,0,1706290881,,"help 'fscanf'"
|
||||
:source ~.vimr
|
||||
|2,0,1706289888,,"source ~.vimr"
|
||||
:syntax on
|
||||
|2,0,1706289390,,"syntax on"
|
||||
:syntax off
|
||||
|2,0,1706289387,,"syntax off"
|
||||
:tabnext
|
||||
|2,0,1706239420,,"tabnext"
|
||||
::w
|
||||
|2,0,1706239282,,":w"
|
||||
:Lw
|
||||
|2,0,1706238903,,"Lw"
|
||||
:autocmd User CocStatusChange,CocDiagnosticChange call lightline#update()
|
||||
|2,0,1706238428,,"autocmd User CocStatusChange,CocDiagnosticChange call lightline#update()"
|
||||
:h coc-status
|
||||
|2,0,1706238374,,"h coc-status"
|
||||
:verbose imap <tab>
|
||||
|2,0,1706238215,,"verbose imap <tab>"
|
||||
:verbose imap tab
|
||||
|2,0,1706238201,,"verbose imap tab"
|
||||
:S
|
||||
|2,0,1706237438,,"S"
|
||||
:m
|
||||
|2,0,1706237191,,"m"
|
||||
:hsplit terminal
|
||||
|2,0,1706158089,,"hsplit terminal"
|
||||
:!sh hello.out
|
||||
|2,0,1706158081,,"!sh hello.out"
|
||||
:~./hello.out
|
||||
|2,0,1706158069,,"~./hello.out"
|
||||
:!Make
|
||||
|2,0,1706158060,,"!Make"
|
||||
:vs Makefile
|
||||
|2,0,1706157956,,"vs Makefile"
|
||||
:!ls
|
||||
|2,0,1706157946,,"!ls"
|
||||
:gcc
|
||||
|2,0,1706157932,,"gcc"
|
||||
:!vim ~/.vimrc
|
||||
|2,0,1706143470,,"!vim ~/.vimrc"
|
||||
:verbose imap <CR>
|
||||
|2,0,1706142928,,"verbose imap <CR>"
|
||||
:!vim --version
|
||||
|2,0,1706142872,,"!vim --version"
|
||||
:CocInstall coc-json coc-jedi
|
||||
|2,0,1706142226,,"CocInstall coc-json coc-jedi"
|
||||
:CocInstall coc-rust-analyzer coc-pylsp coc-clangd coc-clang-format-style-options
|
||||
|2,0,1706142180,,"CocInstall coc-rust-analyzer coc-pylsp coc-clangd coc-clang-format-style-options"
|
||||
:verbose imap <Tab>
|
||||
|2,0,1706141981,,"verbose imap <Tab>"
|
||||
:scriptnames
|
||||
|2,0,1706141872,,"scriptnames"
|
||||
:vsplit .vimrc
|
||||
|2,0,1706141589,,"vsplit .vimrc"
|
||||
:CocInstall
|
||||
|2,0,1706141326,,"CocInstall "
|
||||
:vsplit Projects/a2zsoftware/src/App.js
|
||||
|2,0,1706140822,,"vsplit Projects/a2zsoftware/src/App.js"
|
||||
:!la
|
||||
|2,0,1706140796,,"!la"
|
||||
:!cd Projects/a2zsoftware/
|
||||
|2,0,1706140792,,"!cd Projects/a2zsoftware/"
|
||||
:!cd a2zsoftware
|
||||
|2,0,1706140782,,"!cd a2zsoftware"
|
||||
:!cd Projects/
|
||||
|2,0,1706140774,,"!cd Projects/"
|
||||
:vsplit ~/Projects/a2zsoftware:cd
|
||||
|2,0,1706140764,,"vsplit ~/Projects/a2zsoftware:cd"
|
||||
:vs
|
||||
|2,0,1706140729,,"vs"
|
||||
:CocList
|
||||
|2,0,1706128885,,"CocList"
|
||||
:CocInstall coc-java
|
||||
|2,0,1706128838,,"CocInstall coc-java"
|
||||
:q!:CocInstall coc-java
|
||||
|2,0,1706128838,,"q!:CocInstall coc-java"
|
||||
:CocInfo
|
||||
|2,0,1706128793,,"CocInfo"
|
||||
:tsser
|
||||
|2,0,1706128785,,"tsser"
|
||||
:CocInstall coc-tsserver
|
||||
|2,0,1706128777,,"CocInstall coc-tsserver"
|
||||
:CocInstall coc-js
|
||||
|2,0,1706128728,,"CocInstall coc-js"
|
||||
:CocInstall coc-vimlsp
|
||||
|2,0,1706128655,,"CocInstall coc-vimlsp"
|
||||
:CocInstall coc-json coc-tsserver
|
||||
|2,0,1706128617,,"CocInstall coc-json coc-tsserver"
|
||||
:CocInstall coc-clangd
|
||||
|2,0,1706128607,,"CocInstall coc-clangd"
|
||||
:~/.vim/plugged/coc.nvim
|
||||
|2,0,1706128403,,"~/.vim/plugged/coc.nvim"
|
||||
::CocInstall coc-json coc-tsserver
|
||||
|2,0,1706128358,,":CocInstall coc-json coc-tsserver"
|
||||
:PlugIn
|
||||
|2,0,1706128335,,"PlugIn"
|
||||
::CocInstall coc-clangd
|
||||
|2,0,1706128281,,":CocInstall coc-clangd"
|
||||
:PlugStatus
|
||||
|2,0,1706128226,,"PlugStatus"
|
||||
:CocInstall coc-clangd
|
||||
|2,0,1706119364,,"CocInstall coc-clangd
|
||||
"
|
||||
:CocEnable
|
||||
|2,0,1706119275,,"CocEnable"
|
||||
:!npm ci
|
||||
|2,0,1706119267,,"!npm ci"
|
||||
:exit
|
||||
|2,0,1706046239,,"exit"
|
||||
:split
|
||||
|2,0,1706046150,,"split"
|
||||
:colorscheme wombat
|
||||
|2,0,1706045590,,"colorscheme wombat"
|
||||
:colorscheme molokai_dark
|
||||
|2,0,1706045580,,"colorscheme molokai_dark"
|
||||
:NERDTreeToggle
|
||||
|2,0,1706045488,,"NERDTreeToggle"
|
||||
:{
|
||||
|2,0,1706045229,,"{"
|
||||
:NERDTree
|
||||
|2,0,1706044952,,"NERDTree"
|
||||
:NERDTRee
|
||||
|2,0,1706044943,,"NERDTRee"
|
||||
:help devicons
|
||||
|2,0,1706044785,,"help devicons"
|
||||
:helpdevicons
|
||||
|2,0,1706044780,,"helpdevicons"
|
||||
:exiut
|
||||
|2,0,1706044735,,"exiut"
|
||||
:quit
|
||||
|2,0,1706044450,,"quit"
|
||||
:termina
|
||||
|2,0,1706044309,,"termina"
|
||||
:help folding
|
||||
|2,0,1706043782,,"help folding"
|
||||
|
||||
# Search String History (newest to oldest):
|
||||
?/nerdtree
|
||||
|2,1,1707621168,47,"nerdtree"
|
||||
? @$
|
||||
|2,1,1707379732,,"@$"
|
||||
? \<matrixDeterminant\>
|
||||
|2,1,1707327499,,"\\<matrixDeterminant\\>"
|
||||
?/name
|
||||
|2,1,1707327418,47,"name"
|
||||
? searchNum
|
||||
|2,1,1707296039,,"searchNum"
|
||||
?/nvim
|
||||
|2,1,1707290566,47,"nvim"
|
||||
?/postorder
|
||||
|2,1,1707282077,47,"postorder"
|
||||
? \<postorder\>
|
||||
|2,1,1707282073,,"\\<postorder\\>"
|
||||
?/print2d
|
||||
|2,1,1707279443,47,"print2d"
|
||||
?/duplicate
|
||||
|2,1,1707278584,47,"duplicate"
|
||||
?/absent
|
||||
|2,1,1707278401,47,"absent"
|
||||
? \<nnoremap\>
|
||||
|2,1,1707273578,,"\\<nnoremap\\>"
|
||||
?/clip
|
||||
|2,1,1707272539,47,"clip"
|
||||
?/c
|
||||
|2,1,1707272534,47,"c"
|
||||
?/fix
|
||||
|2,1,1707243962,47,"fix"
|
||||
?/let
|
||||
|2,1,1707243940,47,"let"
|
||||
?/'c'
|
||||
|2,1,1707243919,47,"'c'"
|
||||
? ){
|
||||
|2,1,1707241173,,"){"
|
||||
?/Buf*
|
||||
|2,1,1707200491,47,"Buf*"
|
||||
?/buf
|
||||
|2,1,1707200483,47,"buf"
|
||||
?/version
|
||||
|2,1,1707200404,47,"version"
|
||||
?/commit
|
||||
|2,1,1707199968,47,"commit"
|
||||
?/set.*=
|
||||
|2,1,1707198982,47,"set.*="
|
||||
?/jump
|
||||
|2,1,1707198825,47,"jump"
|
||||
?/.
|
||||
|2,1,1707198515,47,"."
|
||||
?/push
|
||||
|2,1,1707198398,47,"push"
|
||||
?/pis
|
||||
|2,1,1707198338,47,"pis"
|
||||
? \<284\>
|
||||
|2,1,1707197790,,"\\<284\\>"
|
||||
? binarySearchTree
|
||||
|2,1,1707197335,,"binarySearchTree"
|
||||
?/m
|
||||
|2,1,1707197329,47,"m"
|
||||
? binarySearchTree.out
|
||||
|2,1,1707197309,,"binarySearchTree.out"
|
||||
?/lsp
|
||||
|2,1,1707197051,47,"lsp"
|
||||
?/crago
|
||||
|2,1,1707167213,47,"crago"
|
||||
?/x
|
||||
|2,1,1707007653,47,"x"
|
||||
?/m,
|
||||
|2,1,1707007634,47,"m,"
|
||||
?//
|
||||
|2,1,1707007484,47,"/"
|
||||
? \*
|
||||
|2,1,1707006526,,"\\*"
|
||||
? numRows
|
||||
|2,1,1707004335,,"numRows"
|
||||
? matrixExponentiation
|
||||
|2,1,1707002351,,"matrixExponentiation"
|
||||
?/empty
|
||||
|2,1,1706984504,47,"empty"
|
||||
? Node
|
||||
|2,1,1706897965,,"Node"
|
||||
?/fclose
|
||||
|2,1,1706895775,47,"fclose"
|
||||
?/
|
||||
|2,1,1706894855,47," "
|
||||
? second.out
|
||||
|2,1,1706894128,,"second.out"
|
||||
? orderedLinkedList
|
||||
|2,1,1706894110,,"orderedLinkedList"
|
||||
?/yes
|
||||
|2,1,1706645728,47,"yes"
|
||||
?/no
|
||||
|2,1,1706645391,47,"no"
|
||||
?/what
|
||||
|2,1,1706643578,47,"what"
|
||||
?/worked
|
||||
|2,1,1706643538,47,"worked"
|
||||
?/k
|
||||
|2,1,1706291315,47,"k"
|
||||
?/plug
|
||||
|2,1,1706289562,47,"plug"
|
||||
?/plgu
|
||||
|2,1,1706289560,47,"plgu"
|
||||
?/set
|
||||
|2,1,1706238440,47,"set"
|
||||
?/statusline
|
||||
|2,1,1706238354,47,"statusline"
|
||||
?/encoding
|
||||
|2,1,1706238097,47,"encoding"
|
||||
?/supertab
|
||||
|2,1,1706238061,47,"supertab"
|
||||
?/map
|
||||
|2,1,1706238050,47,"map"
|
||||
?/amp
|
||||
|2,1,1706142723,47,"amp"
|
||||
?/remap
|
||||
|2,1,1706142718,47,"remap"
|
||||
?/Su
|
||||
|2,1,1706141891,47,"Su"
|
||||
?/supertab;..;;;
|
||||
|2,1,1706141888,47,"supertab;..;;;"
|
||||
?/vim
|
||||
|2,1,1706043335,47,"vim"
|
||||
?/minAsset
|
||||
|2,1,1704049503,47,"minAsset"
|
||||
?/min
|
||||
|2,1,1704049495,47,"min"
|
||||
|
||||
# Expression History (newest to oldest):
|
||||
|
||||
# Input Line History (newest to oldest):
|
||||
@init.lua
|
||||
|2,3,1707379740,,"init.lua"
|
||||
@/Users/joshp/Projects/ComputerArchitecture/pa1/fifth/k
|
||||
|2,3,1707328279,,"/Users/joshp/Projects/ComputerArchitecture/pa1/fifth/k"
|
||||
@y
|
||||
|2,3,1707197615,,"y"
|
||||
@/Users/joshp/Projects/ComputerArchitecture/pa1/third
|
||||
|2,3,1707006805,,"/Users/joshp/Projects/ComputerArchitecture/pa1/third"
|
||||
|
||||
# Debug Line History (newest to oldest):
|
||||
|
||||
# Registers:
|
||||
"0 LINE 0
|
||||
|
||||
|3,0,0,1,1,0,1707379740,""
|
||||
""1 LINE 0
|
||||
"folke/lsp-colors.nvim",
|
||||
|3,1,1,1,1,0,1707758335," \"folke/lsp-colors.nvim\","
|
||||
"2 LINE 0
|
||||
"folke/lsp-trouble",
|
||||
|3,0,2,1,1,0,1707758309," \"folke/lsp-trouble\","
|
||||
"3 LINE 0
|
||||
"folke/lsp-trouble",
|
||||
|3,0,3,1,1,0,1707758308," \"folke/lsp-trouble\","
|
||||
"4 LINE 0
|
||||
"folke/which-key.nvim",
|
||||
|3,0,4,1,1,0,1707758292," \"folke/which-key.nvim\","
|
||||
"5 LINE 0
|
||||
mode = "n", -- mode to trigger which-key
|
||||
window = { border = "single" }, -- set a border, see `|help nvim_open_win|`
|
||||
layout = {
|
||||
height = { min = 4, max = 25 }, -- min and max height of the columns
|
||||
width = { min = 20, max = 50 }, -- min and max width of the columns
|
||||
spacing = 3, -- spacing between columns
|
||||
},
|
||||
triggers = "auto", -- automatically setup triggers
|
||||
triggers_blacklist = {
|
||||
-- list of mode / prefixes that should never be hooked by WhichKey
|
||||
-- this is mostly relevant for key maps that start with a native binding
|
||||
-- most people should not need to change this
|
||||
i = { "j", "k" },
|
||||
v = { "j", "k" },
|
||||
},
|
||||
|3,0,5,1,15,0,1707758284," mode = \"n\", -- mode to trigger which-key"," window = { border = \"single\" }, -- set a border, see `|help nvim_open_win|`"," layout = {"," height = { min = 4, max = 25 }, -- min and max height of the columns"," width = { min = 20, max = 50 }, -- min and max width of the columns"," spacing = 3, -- spacing between columns"," },"," triggers = \"auto\", -- automatically setup triggers"," triggers_blacklist = {",>70
|
||||
|<" -- list of mode / prefixes that should never be hooked by WhichKey"," -- this is mostly relevant for key maps that start with a native binding"," -- most people should not need to change this"," i = { \"j\", \"k\" },"," v = { \"j\", \"k\" },"," },"
|
||||
"6 LINE 0
|
||||
mode = "n", -- mode to trigger which-key
|
||||
window = { border = "single" }, -- set a border, see `|help nvim_open_win|`
|
||||
layout = {
|
||||
height = { min = 4, max = 25 }, -- min and max height of the columns
|
||||
width = { min = 20, max = 50 }, -- min and max width of the columns
|
||||
spacing = 3, -- spacing between columns
|
||||
},
|
||||
triggers = "auto", -- automatically setup triggers
|
||||
triggers_blacklist = {
|
||||
-- list of mode / prefixes that should never be hooked by WhichKey
|
||||
-- this is mostly relevant for key maps that start with a native binding
|
||||
-- most people should not need to change this
|
||||
i = { "j", "k" },
|
||||
v = { "j", "k" },
|
||||
|3,0,6,1,14,0,1707758282," mode = \"n\", -- mode to trigger which-key"," window = { border = \"single\" }, -- set a border, see `|help nvim_open_win|`"," layout = {"," height = { min = 4, max = 25 }, -- min and max height of the columns"," width = { min = 20, max = 50 }, -- min and max width of the columns"," spacing = 3, -- spacing between columns"," },"," triggers = \"auto\", -- automatically setup triggers"," triggers_blacklist = {",>70
|
||||
|<" -- list of mode / prefixes that should never be hooked by WhichKey"," -- this is mostly relevant for key maps that start with a native binding"," -- most people should not need to change this"," i = { \"j\", \"k\" },"," v = { \"j\", \"k\" },"
|
||||
"7 LINE 0
|
||||
fund
|
||||
|3,0,7,1,1,0,1707671806," fund"
|
||||
"8 LINE 0
|
||||
},
|
||||
|3,0,8,1,1,0,1707671801," },"
|
||||
"9 LINE 0
|
||||
{
|
||||
"folke/noice.nvim",
|
||||
event = "VeryLazy",
|
||||
dependencies = {
|
||||
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
|
||||
"MunifTanjim/nui.nvim",
|
||||
-- OPTIONAL:
|
||||
-- `nvim-notify` is only needed, if you want to use the notification view.
|
||||
-- If not available, we use `mini` as the fallback
|
||||
"rcarriga/nvim-notify",
|
||||
},
|
||||
|3,0,9,1,11,0,1707671800," {"," \"folke/noice.nvim\","," event = \"VeryLazy\","," dependencies = {"," -- if you lazy-load any plugin below, make sure to add proper `module=\"...\"` entries"," \"MunifTanjim/nui.nvim\","," -- OPTIONAL:"," -- `nvim-notify` is only needed, if you want to use the notification view."," -- If not available, we use `mini` as the fallback"," \"rcarriga/nvim-notify\","," },"
|
||||
"v CHAR 0
|
||||
y
|
||||
|3,0,31,0,1,0,1707328307,"y"
|
||||
"- CHAR 0
|
||||
j
|
||||
|3,0,36,0,1,0,1707758241,"j"
|
||||
|
||||
# File marks:
|
||||
'0 1 12 ~/.config/nvim/.git/MERGE_MSG
|
||||
|4,48,1,12,1707945903,"~/.config/nvim/.git/MERGE_MSG"
|
||||
'1 14 2 ~/.config/nvim/init.lua
|
||||
|4,49,14,2,1707862893,"~/.config/nvim/init.lua"
|
||||
'2 11 50 ~/.config/nvim/lua/vim-remaps.lua
|
||||
|4,50,11,50,1707759629,"~/.config/nvim/lua/vim-remaps.lua"
|
||||
'3 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,51,1,0,1707759597,"~/.config/nvim/lua/vim-undo.lua"
|
||||
'4 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,52,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
'5 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,53,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
'6 1 0 ~/.config/nvim/init.lua
|
||||
|4,54,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
'7 1 0 ~/.config/nvim/init.lua
|
||||
|4,55,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
'8 17 0 ~/.config/nvim/init.lua
|
||||
|4,56,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
'9 17 0 ~/.config/nvim/init.lua
|
||||
|4,57,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
|
||||
# Jumplist (newest first):
|
||||
-' 1 12 ~/.config/nvim/.git/MERGE_MSG
|
||||
|4,39,1,12,1707945903,"~/.config/nvim/.git/MERGE_MSG"
|
||||
-' 14 2 ~/.config/nvim/init.lua
|
||||
|4,39,14,2,1707862893,"~/.config/nvim/init.lua"
|
||||
-' 14 2 ~/.config/nvim/init.lua
|
||||
|4,39,14,2,1707862893,"~/.config/nvim/init.lua"
|
||||
-' 15 0 ~/.config/nvim/init.lua
|
||||
|4,39,15,0,1707862891,"~/.config/nvim/init.lua"
|
||||
-' 15 0 ~/.config/nvim/init.lua
|
||||
|4,39,15,0,1707862891,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707862887,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707862887,"~/.config/nvim/init.lua"
|
||||
-' 11 50 ~/.config/nvim/lua/vim-remaps.lua
|
||||
|4,39,11,50,1707759629,"~/.config/nvim/lua/vim-remaps.lua"
|
||||
-' 11 50 ~/.config/nvim/lua/vim-remaps.lua
|
||||
|4,39,11,50,1707759629,"~/.config/nvim/lua/vim-remaps.lua"
|
||||
-' 11 50 ~/.config/nvim/lua/vim-remaps.lua
|
||||
|4,39,11,50,1707759629,"~/.config/nvim/lua/vim-remaps.lua"
|
||||
-' 11 50 ~/.config/nvim/lua/vim-remaps.lua
|
||||
|4,39,11,50,1707759629,"~/.config/nvim/lua/vim-remaps.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-remaps.lua
|
||||
|4,39,1,0,1707759606,"~/.config/nvim/lua/vim-remaps.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-remaps.lua
|
||||
|4,39,1,0,1707759606,"~/.config/nvim/lua/vim-remaps.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-remaps.lua
|
||||
|4,39,1,0,1707759606,"~/.config/nvim/lua/vim-remaps.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-remaps.lua
|
||||
|4,39,1,0,1707759606,"~/.config/nvim/lua/vim-remaps.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759597,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759597,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759597,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759597,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759597,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759597,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759597,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759597,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 10 22 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,10,22,1707759570,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759561,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759561,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759561,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759561,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759561,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759561,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759561,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/lua/vim-undo.lua
|
||||
|4,39,1,0,1707759561,"~/.config/nvim/lua/vim-undo.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 1 0 ~/.config/nvim/init.lua
|
||||
|4,39,1,0,1707758357,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 17 0 ~/.config/nvim/init.lua
|
||||
|4,39,17,0,1707758354,"~/.config/nvim/init.lua"
|
||||
-' 18 0 ~/.config/nvim/init.lua
|
||||
|4,39,18,0,1707758308,"~/.config/nvim/init.lua"
|
||||
-' 18 0 ~/.config/nvim/init.lua
|
||||
|4,39,18,0,1707758308,"~/.config/nvim/init.lua"
|
||||
-' 18 0 ~/.config/nvim/init.lua
|
||||
|4,39,18,0,1707758308,"~/.config/nvim/init.lua"
|
||||
|
||||
# History of marks within files (newest to oldest):
|
||||
|
||||
> ~/.config/nvim/.git/MERGE_MSG
|
||||
* 1707945902 0
|
||||
" 1 12
|
||||
|
||||
> ~/.config/nvim/init.lua
|
||||
* 1707862893 0
|
||||
" 14 2
|
||||
^ 14 3
|
||||
. 14 2
|
||||
+ 1 60
|
||||
+ 12 28
|
||||
+ 13 0
|
||||
+ 23 35
|
||||
+ 22 0
|
||||
+ 13 0
|
||||
+ 14 0
|
||||
+ 18 19
|
||||
+ 22 0
|
||||
+ 18 1
|
||||
+ 19 11
|
||||
+ 18 19
|
||||
+ 21 0
|
||||
+ 20 0
|
||||
+ 17 0
|
||||
+ 18 0
|
||||
+ 15 0
|
||||
+ 14 2
|
||||
|
||||
> ~/.config/nvim/lua/vim-remaps.lua
|
||||
* 1707759627 0
|
||||
" 11 50
|
||||
^ 11 51
|
||||
. 11 50
|
||||
+ 10 32
|
||||
+ 11 50
|
||||
|
||||
> ~/.config/nvim/lua/vim-undo.lua
|
||||
* 1707759583 0
|
||||
" 1 0
|
||||
^ 10 23
|
||||
. 10 22
|
||||
+ 10 22
|
||||
|
||||
> ~/.config/nvim/lua/plugins.lua
|
||||
* 1707671806 0
|
||||
" 31 1
|
||||
. 31 0
|
||||
+ 109 0
|
||||
+ 111 1
|
||||
+ 111 0
|
||||
+ 109 0
|
||||
+ 111 0
|
||||
+ 110 0
|
||||
+ 53 0
|
||||
+ 34 0
|
||||
+ 31 0
|
||||
|
||||
> ~/.config/nvim/lua/plugins/plugins.lua
|
||||
* 1707621180 0
|
||||
" 1 0
|
||||
. 74 0
|
||||
+ 74 0
|
||||
|
||||
> ~/.config/nvim/lua/joshp/lazy.lua
|
||||
* 1707611015 0
|
||||
" 18 23
|
||||
. 18 23
|
||||
+ 19 0
|
||||
+ 16 0
|
||||
+ 18 23
|
||||
|
||||
> ~/.config/nvim/lua/joshp/laz
|
||||
* 1707611002 0
|
||||
" 1 0
|
||||
|
||||
> ~/.config/nvim/lua/joshp/lua/plugins/init.lua
|
||||
* 1707610843 0
|
||||
" 149 0
|
||||
^ 149 1
|
||||
. 149 0
|
||||
+ 149 0
|
||||
|
||||
> ~/.config/nvim/lua/joshp/plugins/init.lua
|
||||
* 1707610349 0
|
||||
" 149 0
|
||||
^ 149 1
|
||||
. 149 0
|
||||
+ 149 0
|
||||
|
||||
> ~/.config/nvim/lua/joshp/init.lua
|
||||
* 1707608682 0
|
||||
" 14 0
|
||||
^ 3 19
|
||||
. 15 0
|
||||
+ 1 13
|
||||
+ 3 18
|
||||
+ 15 0
|
||||
|
||||
> ~/.config/nvim/lua/joshp/packer.lua
|
||||
* 1707591572 0
|
||||
" 19 0
|
||||
. 19 0
|
||||
+ 19 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fifth/uninstall_macos.sh
|
||||
* 1707430602 0
|
||||
" 1 34
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fifth/__Tagbar__.1
|
||||
* 1707430594 0
|
||||
" 1 0
|
||||
. 4 0
|
||||
+ 9 0
|
||||
+ 8 0
|
||||
+ 4 0
|
||||
|
||||
> ~/.config/nvim/after/plugin/illuminate.lua
|
||||
* 1707430273 0
|
||||
" 55 1
|
||||
^ 55 2
|
||||
. 55 1
|
||||
+ 1 24
|
||||
+ 55 1
|
||||
|
||||
> ~/.zshrc
|
||||
* 1707409082 0
|
||||
" 11 16
|
||||
^ 8 43
|
||||
. 8 42
|
||||
+ 5 17
|
||||
+ 5 0
|
||||
+ 9 0
|
||||
+ 7 0
|
||||
+ 9 0
|
||||
+ 8 42
|
||||
|
||||
> ~/.vimrc
|
||||
* 1707382046 0
|
||||
" 88 6
|
||||
^ 87 20
|
||||
. 87 0
|
||||
+ 99 0
|
||||
+ 118 0
|
||||
+ 110 0
|
||||
+ 118 0
|
||||
+ 112 0
|
||||
+ 113 0
|
||||
+ 114 0
|
||||
+ 97 0
|
||||
+ 55 0
|
||||
+ 90 8
|
||||
+ 97 0
|
||||
+ 91 0
|
||||
+ 91 18
|
||||
+ 90 22
|
||||
+ 51 0
|
||||
+ 59 0
|
||||
+ 221 0
|
||||
+ 221 32
|
||||
+ 221 22
|
||||
+ 221 3
|
||||
+ 221 2
|
||||
+ 221 0
|
||||
+ 54 0
|
||||
+ 92 32
|
||||
+ 1 0
|
||||
+ 209 18
|
||||
+ 212 24
|
||||
+ 209 0
|
||||
+ 54 24
|
||||
+ 55 0
|
||||
+ 51 0
|
||||
+ 50 0
|
||||
+ 51 0
|
||||
+ 54 0
|
||||
+ 52 0
|
||||
+ 51 0
|
||||
+ 53 0
|
||||
+ 58 21
|
||||
+ 180 22
|
||||
+ 230 0
|
||||
+ 209 18
|
||||
+ 212 27
|
||||
+ 212 0
|
||||
+ 180 22
|
||||
+ 97 11
|
||||
+ 202 0
|
||||
+ 87 0
|
||||
+ 87 23
|
||||
+ 87 0
|
||||
+ 87 25
|
||||
+ 87 0
|
||||
+ 87 25
|
||||
+ 88 0
|
||||
+ 87 0
|
||||
+ 88 0
|
||||
+ 87 0
|
||||
+ 87 24
|
||||
+ 209 0
|
||||
+ 41 0
|
||||
+ 87 2
|
||||
+ 87 0
|
||||
+ 97 23
|
||||
+ 97 0
|
||||
+ 97 16
|
||||
+ 97 21
|
||||
+ 87 0
|
||||
+ 92 0
|
||||
+ 87 16
|
||||
+ 84 2
|
||||
+ 80 0
|
||||
+ 78 0
|
||||
+ 80 10
|
||||
+ 77 0
|
||||
+ 97 9
|
||||
+ 99 5
|
||||
+ 97 19
|
||||
+ 97 0
|
||||
+ 99 0
|
||||
+ 97 0
|
||||
+ 208 21
|
||||
+ 209 15
|
||||
+ 209 0
|
||||
+ 203 0
|
||||
+ 221 0
|
||||
+ 226 6
|
||||
+ 230 0
|
||||
+ 95 69
|
||||
+ 93 0
|
||||
+ 209 0
|
||||
+ 57 23
|
||||
+ 58 0
|
||||
+ 76 0
|
||||
+ 94 37
|
||||
+ 223 0
|
||||
+ 90 18
|
||||
+ 94 18
|
||||
+ 87 18
|
||||
+ 88 18
|
||||
+ 93 18
|
||||
+ 87 0
|
||||
j 184 0
|
||||
u 34 16
|
||||
z 1 0
|
||||
|
||||
> ~/.config/nvim/NERD_tree_1
|
||||
* 1707379773 0
|
||||
" 1 0
|
||||
. 1 0
|
||||
+ 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fifth/fifth.c
|
||||
* 1707373963 0
|
||||
" 39 0
|
||||
^ 72 62
|
||||
. 72 48
|
||||
+ 62 53
|
||||
+ 66 1
|
||||
+ 71 2
|
||||
+ 71 0
|
||||
+ 71 2
|
||||
+ 71 3
|
||||
+ 71 0
|
||||
+ 67 5
|
||||
+ 73 15
|
||||
+ 74 1
|
||||
+ 75 0
|
||||
+ 79 0
|
||||
+ 75 5
|
||||
+ 68 18
|
||||
+ 71 4
|
||||
+ 78 0
|
||||
+ 62 0
|
||||
+ 71 2
|
||||
+ 63 1
|
||||
+ 63 0
|
||||
+ 62 0
|
||||
+ 66 0
|
||||
+ 64 0
|
||||
+ 66 0
|
||||
+ 62 33
|
||||
+ 64 30
|
||||
+ 63 29
|
||||
+ 68 31
|
||||
+ 76 22
|
||||
+ 77 0
|
||||
+ 44 0
|
||||
+ 80 0
|
||||
+ 4 31
|
||||
+ 42 208
|
||||
+ 42 209
|
||||
+ 5 12
|
||||
+ 42 224
|
||||
+ 42 225
|
||||
+ 42 224
|
||||
+ 42 251
|
||||
+ 42 224
|
||||
+ 42 251
|
||||
+ 42 250
|
||||
+ 42 211
|
||||
+ 42 208
|
||||
+ 6 1
|
||||
+ 9 0
|
||||
+ 42 216
|
||||
+ 42 272
|
||||
+ 42 208
|
||||
+ 42 211
|
||||
+ 42 208
|
||||
+ 42 214
|
||||
+ 42 208
|
||||
+ 42 214
|
||||
+ 42 208
|
||||
+ 41 0
|
||||
+ 42 1
|
||||
+ 41 0
|
||||
+ 42 0
|
||||
+ 43 0
|
||||
+ 42 0
|
||||
+ 41 0
|
||||
+ 11 44
|
||||
+ 12 46
|
||||
+ 13 2
|
||||
+ 13 63
|
||||
+ 14 51
|
||||
+ 41 18
|
||||
+ 41 14
|
||||
+ 41 0
|
||||
+ 15 18
|
||||
+ 16 22
|
||||
+ 41 18
|
||||
+ 41 22
|
||||
+ 41 0
|
||||
+ 17 2
|
||||
+ 18 14
|
||||
+ 19 64
|
||||
+ 20 2
|
||||
+ 23 2
|
||||
+ 33 2
|
||||
+ 36 2
|
||||
+ 39 18
|
||||
+ 39 13
|
||||
+ 41 0
|
||||
+ 29 0
|
||||
+ 23 0
|
||||
+ 29 0
|
||||
+ 23 0
|
||||
+ 29 0
|
||||
+ 4 22
|
||||
+ 8 0
|
||||
+ 7 20
|
||||
+ 72 9
|
||||
+ 36 35
|
||||
+ 4 40
|
||||
+ 34 55
|
||||
+ 72 48
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fifth/fifth.
|
||||
* 1707373096 0
|
||||
" 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fifth/NERD_tree_1
|
||||
* 1707336296 0
|
||||
" 4 0
|
||||
. 1 0
|
||||
+ 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fifth/file1.txt
|
||||
* 1707328575 0
|
||||
" 1 0
|
||||
^ 1 1
|
||||
. 1 0
|
||||
+ 11 4
|
||||
+ 11 0
|
||||
+ 1 0
|
||||
+ 11 0
|
||||
+ 3 17
|
||||
+ 4 17
|
||||
+ 5 17
|
||||
+ 6 17
|
||||
+ 7 1
|
||||
+ 7 17
|
||||
+ 8 17
|
||||
+ 9 0
|
||||
+ 11 0
|
||||
+ 10 0
|
||||
+ 10 1
|
||||
+ 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/third/third.c
|
||||
* 1707328346 0
|
||||
" 31 0
|
||||
. 11 0
|
||||
+ 48 26
|
||||
+ 93 1
|
||||
+ 48 0
|
||||
+ 52 7
|
||||
+ 57 0
|
||||
+ 53 8
|
||||
+ 56 0
|
||||
+ 52 36
|
||||
+ 53 37
|
||||
+ 55 0
|
||||
+ 93 1
|
||||
+ 56 0
|
||||
+ 52 0
|
||||
+ 50 0
|
||||
+ 93 1
|
||||
+ 55 28
|
||||
+ 54 46
|
||||
+ 59 35
|
||||
+ 93 1
|
||||
+ 60 10
|
||||
+ 59 36
|
||||
+ 60 14
|
||||
+ 56 0
|
||||
+ 60 0
|
||||
+ 61 0
|
||||
+ 62 0
|
||||
+ 63 0
|
||||
+ 63 2
|
||||
+ 93 0
|
||||
+ 93 1
|
||||
+ 58 0
|
||||
+ 61 0
|
||||
+ 63 0
|
||||
+ 62 8
|
||||
+ 63 25
|
||||
+ 93 1
|
||||
+ 93 17
|
||||
+ 63 8
|
||||
+ 62 7
|
||||
+ 63 23
|
||||
+ 93 1
|
||||
+ 93 15
|
||||
+ 63 16
|
||||
+ 62 0
|
||||
+ 63 17
|
||||
+ 5 38
|
||||
+ 12 0
|
||||
+ 10 1
|
||||
+ 5 45
|
||||
+ 46 0
|
||||
+ 47 21
|
||||
+ 93 21
|
||||
+ 59 24
|
||||
+ 46 8
|
||||
+ 93 30
|
||||
+ 93 40
|
||||
+ 93 1
|
||||
+ 100 11
|
||||
+ 104 0
|
||||
+ 109 0
|
||||
+ 104 0
|
||||
+ 105 12
|
||||
+ 111 12
|
||||
+ 95 0
|
||||
+ 94 0
|
||||
+ 93 0
|
||||
+ 63 3
|
||||
+ 16 0
|
||||
+ 17 65
|
||||
+ 1 0
|
||||
+ 17 0
|
||||
+ 17 13
|
||||
+ 17 0
|
||||
+ 63 51
|
||||
+ 72 0
|
||||
+ 63 90
|
||||
+ 70 0
|
||||
+ 63 128
|
||||
+ 69 0
|
||||
+ 68 20
|
||||
+ 63 123
|
||||
+ 63 47
|
||||
+ 71 15
|
||||
+ 72 0
|
||||
+ 73 6
|
||||
+ 92 0
|
||||
+ 94 0
|
||||
+ 91 34
|
||||
+ 92 0
|
||||
+ 71 0
|
||||
+ 63 2
|
||||
+ 63 33
|
||||
+ 63 52
|
||||
+ 63 0
|
||||
+ 63 2
|
||||
+ 63 33
|
||||
+ 63 52
|
||||
+ 63 0
|
||||
+ 11 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fifth/undotree_2
|
||||
* 1707328243 0
|
||||
" 6 1
|
||||
. 3 0
|
||||
+ 50 0
|
||||
+ 3 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fifth/diffpanel_3
|
||||
* 1707328243 0
|
||||
" 1 0
|
||||
. 8 0
|
||||
+ 14 0
|
||||
+ 8 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/__Tagbar__.1
|
||||
* 1707328189 0
|
||||
" 1 0
|
||||
. 11 0
|
||||
+ 40 0
|
||||
+ 11 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fifth/terminal
|
||||
* 1707328092 0
|
||||
" 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/NERD_tree_1
|
||||
* 1707327547 0
|
||||
" 7 0
|
||||
. 1 0
|
||||
+ 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fifth/Makefile
|
||||
* 1707327545 0
|
||||
" 4 66
|
||||
^ 4 67
|
||||
. 4 66
|
||||
+ 1 0
|
||||
+ 7 13
|
||||
+ 4 66
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/-MINIMAP-
|
||||
* 1707296404 0
|
||||
" 1 0
|
||||
. 1 0
|
||||
+ 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/undotree_2
|
||||
* 1707296401 0
|
||||
" 3 1
|
||||
. 3 0
|
||||
+ 2288 0
|
||||
+ 2286 0
|
||||
+ 2285 0
|
||||
+ 1779 0
|
||||
+ 1273 0
|
||||
+ 674 0
|
||||
+ 3 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/diffpanel_3
|
||||
* 1707296395 0
|
||||
" 1 0
|
||||
. 6 0
|
||||
+ 12 0
|
||||
+ 8 0
|
||||
+ 6 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fourth/fourth.c
|
||||
* 1707296285 0
|
||||
" 15 5
|
||||
^ 1 6
|
||||
. 1 0
|
||||
+ 49 13
|
||||
+ 49 19
|
||||
+ 89 11
|
||||
+ 86 41
|
||||
+ 49 15
|
||||
+ 49 14
|
||||
+ 58 0
|
||||
+ 49 3
|
||||
+ 4 16
|
||||
+ 4 0
|
||||
+ 4 16
|
||||
+ 60 0
|
||||
+ 58 0
|
||||
+ 59 0
|
||||
+ 58 0
|
||||
+ 49 0
|
||||
+ 58 2
|
||||
+ 58 0
|
||||
+ 49 2
|
||||
+ 58 0
|
||||
+ 82 11
|
||||
+ 80 0
|
||||
+ 49 9
|
||||
+ 80 0
|
||||
+ 79 0
|
||||
+ 49 9
|
||||
+ 49 0
|
||||
+ 49 27
|
||||
+ 49 0
|
||||
+ 49 24
|
||||
+ 49 0
|
||||
+ 49 9
|
||||
+ 49 33
|
||||
+ 49 0
|
||||
+ 49 1
|
||||
+ 49 0
|
||||
+ 81 28
|
||||
+ 84 28
|
||||
+ 49 47
|
||||
+ 57 38
|
||||
+ 59 35
|
||||
+ 51 16
|
||||
+ 49 25
|
||||
+ 49 0
|
||||
+ 50 14
|
||||
+ 52 0
|
||||
+ 49 29
|
||||
+ 49 0
|
||||
+ 49 8
|
||||
+ 49 0
|
||||
+ 54 32
|
||||
+ 53 27
|
||||
+ 55 0
|
||||
+ 49 26
|
||||
+ 81 28
|
||||
+ 84 28
|
||||
+ 6 0
|
||||
+ 51 17
|
||||
+ 84 27
|
||||
+ 85 0
|
||||
+ 84 27
|
||||
+ 49 3
|
||||
+ 52 0
|
||||
+ 55 0
|
||||
+ 89 0
|
||||
+ 90 0
|
||||
+ 49 27
|
||||
+ 4 0
|
||||
+ 89 0
|
||||
+ 49 0
|
||||
+ 25 0
|
||||
+ 28 0
|
||||
+ 25 0
|
||||
+ 27 0
|
||||
+ 20 13
|
||||
+ 24 10
|
||||
+ 25 10
|
||||
+ 89 9
|
||||
+ 90 0
|
||||
+ 89 1
|
||||
+ 49 0
|
||||
+ 27 0
|
||||
+ 27 6
|
||||
+ 27 0
|
||||
+ 49 0
|
||||
+ 31 0
|
||||
+ 20 0
|
||||
+ 79 23
|
||||
+ 36 0
|
||||
+ 43 8
|
||||
+ 43 6
|
||||
+ 43 0
|
||||
+ 40 29
|
||||
+ 40 27
|
||||
+ 79 0
|
||||
+ 20 0
|
||||
+ 19 0
|
||||
+ 89 0
|
||||
+ 14 0
|
||||
+ 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fourth/__Tagbar__.1
|
||||
* 1707296278 0
|
||||
" 44 4
|
||||
. 47 0
|
||||
+ 51 0
|
||||
+ 47 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fourth/NERD_tree_1
|
||||
* 1707296231 0
|
||||
" 5 0
|
||||
. 1 0
|
||||
+ 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fourth/ALEPreviewWindow
|
||||
* 1707296187 0
|
||||
" 4 18
|
||||
. 2 0
|
||||
+ 2 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fourth/test1.txt
|
||||
* 1707295957 0
|
||||
" 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fourth/-MINIMAP-
|
||||
* 1707295919 0
|
||||
" 1 0
|
||||
. 1 0
|
||||
+ 1 0
|
||||
|
||||
> ~/__Tagbar__.1
|
||||
* 1707295851 0
|
||||
" 1 0
|
||||
. 11 0
|
||||
+ 11 0
|
||||
|
||||
> ~/nvim/lua/joshp/init.lua
|
||||
* 1707293069 0
|
||||
" 1 0
|
||||
^ 1 25
|
||||
. 1 24
|
||||
+ 1 24
|
||||
|
||||
> ~/nvim/init.lua
|
||||
* 1707292932 0
|
||||
" 1 0
|
||||
^ 1 19
|
||||
. 1 0
|
||||
+ 1 0
|
||||
+ 1 21
|
||||
+ 1 44
|
||||
+ 1 0
|
||||
+ 1 13
|
||||
+ 1 0
|
||||
|
||||
> ~/nvim/NERD_tree_1
|
||||
* 1707292753 0
|
||||
" 1 0
|
||||
. 1 0
|
||||
+ 1 0
|
||||
|
||||
> /usr/share/vim/vim90/doc/options.txt
|
||||
* 1707290570 0
|
||||
" 6683 14
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fourth/test5.txt
|
||||
* 1707290100 0
|
||||
" 2 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fourth/test2.txt
|
||||
* 1707290098 0
|
||||
" 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fourth/test4.txt
|
||||
* 1707290057 0
|
||||
" 2 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fourth/undotree_2
|
||||
* 1707290010 0
|
||||
" 3 1
|
||||
. 3 0
|
||||
+ 2146 0
|
||||
+ 2145 0
|
||||
+ 2127 0
|
||||
+ 2125 0
|
||||
+ 2108 0
|
||||
+ 2090 0
|
||||
+ 2084 0
|
||||
+ 2078 0
|
||||
+ 2079 0
|
||||
+ 2078 0
|
||||
+ 2018 0
|
||||
+ 2024 0
|
||||
+ 2018 0
|
||||
+ 1531 0
|
||||
+ 1022 0
|
||||
+ 513 0
|
||||
+ 4 0
|
||||
+ 3 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fourth/diffpanel_3
|
||||
* 1707290010 0
|
||||
" 1 0
|
||||
. 2 0
|
||||
+ 46 0
|
||||
+ 44 0
|
||||
+ 42 0
|
||||
+ 33 0
|
||||
+ 26 0
|
||||
+ 7 0
|
||||
+ 5 0
|
||||
+ 3 0
|
||||
+ 2 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1_autograder/pa1/fifth/Makefile
|
||||
* 1707281291 0
|
||||
" 7 13
|
||||
. 7 13
|
||||
+ 1 0
|
||||
+ 4 67
|
||||
+ 7 13
|
||||
|
||||
> fugitive:///Users/joshp/Projects/ComputerArchitecture/pa1/.git//4bc68fbfaf8ab95dceba0606208c6b09e90cbacb
|
||||
* 1707279863 0
|
||||
" 29 0
|
||||
. 1 0
|
||||
+ 1 0
|
||||
|
||||
> fugitive:///Users/joshp/Projects/ComputerArchitecture/pa1/.git//697d3efed3e8db10845a2a56fa19b67c2b6f51e8
|
||||
* 1707278523 0
|
||||
" 1 0
|
||||
. 1 0
|
||||
+ 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fourth/file1.txt
|
||||
* 1707277932 0
|
||||
" 1 0
|
||||
^ 6 3
|
||||
. 6 2
|
||||
+ 7 0
|
||||
+ 1 0
|
||||
+ 6 2
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/file1
|
||||
* 1707277634 0
|
||||
" 1 0
|
||||
|
||||
> ~/.vim/plugged/ale/doc/ale.txt
|
||||
* 1707244027 0
|
||||
" 400 0
|
||||
|
||||
> /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include/malloc/_malloc.h
|
||||
* 1707243828 0
|
||||
" 45 7
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/first/file1.txt
|
||||
* 1707243364 0
|
||||
" 1 0
|
||||
. 3 0
|
||||
+ 8 0
|
||||
+ 3 0
|
||||
+ 5 0
|
||||
+ 8 0
|
||||
+ 4 0
|
||||
+ 3 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/second/second.c
|
||||
* 1707241817 0
|
||||
" 104 0
|
||||
^ 17 2
|
||||
. 18 0
|
||||
+ 36 0
|
||||
+ 33 0
|
||||
+ 35 0
|
||||
+ 34 0
|
||||
+ 35 0
|
||||
+ 48 27
|
||||
+ 49 0
|
||||
+ 48 1
|
||||
+ 48 0
|
||||
+ 37 0
|
||||
+ 37 33
|
||||
+ 37 34
|
||||
+ 43 0
|
||||
+ 41 0
|
||||
+ 37 47
|
||||
+ 41 25
|
||||
+ 41 0
|
||||
+ 38 19
|
||||
+ 39 11
|
||||
+ 40 0
|
||||
+ 41 49
|
||||
+ 37 39
|
||||
+ 41 55
|
||||
+ 43 0
|
||||
+ 43 14
|
||||
+ 43 19
|
||||
+ 5 18
|
||||
+ 7 14
|
||||
+ 7 0
|
||||
+ 8 7
|
||||
+ 34 0
|
||||
+ 10 0
|
||||
+ 11 0
|
||||
+ 17 0
|
||||
+ 18 0
|
||||
+ 19 0
|
||||
+ 20 0
|
||||
+ 37 0
|
||||
+ 38 0
|
||||
+ 39 0
|
||||
+ 48 0
|
||||
+ 18 30
|
||||
+ 4 43
|
||||
+ 10 0
|
||||
+ 11 0
|
||||
+ 9 0
|
||||
+ 43 1
|
||||
+ 43 19
|
||||
+ 43 9
|
||||
+ 43 0
|
||||
+ 43 1
|
||||
+ 43 24
|
||||
+ 43 11
|
||||
+ 43 0
|
||||
+ 65 0
|
||||
+ 43 11
|
||||
+ 43 0
|
||||
+ 42 21
|
||||
+ 43 13
|
||||
+ 43 8
|
||||
+ 43 0
|
||||
+ 43 1
|
||||
+ 43 17
|
||||
+ 43 0
|
||||
+ 43 56
|
||||
+ 43 0
|
||||
+ 43 14
|
||||
+ 43 19
|
||||
+ 46 0
|
||||
+ 43 28
|
||||
+ 44 1
|
||||
+ 43 0
|
||||
+ 43 20
|
||||
+ 43 30
|
||||
+ 73 14
|
||||
+ 72 14
|
||||
+ 73 0
|
||||
+ 72 9
|
||||
+ 73 0
|
||||
+ 70 19
|
||||
+ 71 0
|
||||
+ 70 0
|
||||
+ 44 20
|
||||
+ 44 0
|
||||
+ 44 8
|
||||
+ 43 18
|
||||
+ 44 0
|
||||
+ 43 0
|
||||
+ 43 16
|
||||
+ 43 18
|
||||
+ 43 14
|
||||
+ 43 18
|
||||
+ 11 28
|
||||
+ 26 0
|
||||
+ 25 1
|
||||
+ 43 0
|
||||
+ 85 0
|
||||
+ 106 0
|
||||
+ 18 0
|
||||
a 1 0
|
||||
j 53 1
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/first/first.c
|
||||
* 1707240263 0
|
||||
" 59 0
|
||||
. 4 0
|
||||
+ 45 0
|
||||
+ 49 68
|
||||
+ 68 62
|
||||
+ 72 70
|
||||
+ 78 71
|
||||
+ 45 35
|
||||
+ 49 46
|
||||
+ 57 0
|
||||
+ 58 5
|
||||
+ 62 0
|
||||
+ 59 26
|
||||
+ 60 11
|
||||
+ 61 0
|
||||
+ 68 35
|
||||
+ 72 49
|
||||
+ 78 48
|
||||
+ 82 0
|
||||
+ 86 0
|
||||
+ 89 0
|
||||
+ 94 4
|
||||
+ 94 0
|
||||
+ 91 26
|
||||
+ 93 4
|
||||
+ 92 10
|
||||
+ 93 0
|
||||
+ 94 0
|
||||
+ 93 11
|
||||
+ 93 0
|
||||
+ 93 11
|
||||
+ 94 0
|
||||
+ 57 0
|
||||
+ 61 10
|
||||
+ 62 0
|
||||
+ 57 0
|
||||
+ 62 10
|
||||
+ 93 0
|
||||
+ 50 22
|
||||
+ 62 19
|
||||
+ 78 24
|
||||
+ 93 0
|
||||
+ 102 24
|
||||
+ 104 4
|
||||
+ 102 22
|
||||
+ 103 16
|
||||
+ 105 7
|
||||
+ 106 16
|
||||
+ 107 0
|
||||
+ 93 0
|
||||
+ 103 15
|
||||
+ 106 14
|
||||
+ 77 0
|
||||
+ 78 0
|
||||
+ 62 0
|
||||
+ 50 0
|
||||
+ 61 0
|
||||
+ 93 0
|
||||
+ 61 0
|
||||
+ 53 0
|
||||
+ 7 38
|
||||
+ 12 18
|
||||
+ 15 39
|
||||
+ 20 33
|
||||
+ 20 44
|
||||
+ 30 44
|
||||
+ 35 18
|
||||
+ 37 46
|
||||
+ 39 19
|
||||
+ 41 19
|
||||
+ 64 27
|
||||
+ 44 83
|
||||
+ 47 144
|
||||
+ 51 56
|
||||
+ 96 25
|
||||
+ 101 35
|
||||
+ 108 27
|
||||
+ 66 23
|
||||
+ 70 31
|
||||
+ 74 106
|
||||
+ 75 53
|
||||
+ 113 0
|
||||
+ 113 9
|
||||
+ 25 0
|
||||
+ 45 0
|
||||
+ 26 0
|
||||
+ 115 0
|
||||
+ 114 21
|
||||
+ 115 0
|
||||
+ 25 22
|
||||
+ 5 0
|
||||
+ 4 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/third/file1.txt
|
||||
* 1707201273 0
|
||||
" 5 0
|
||||
. 5 0
|
||||
+ 5 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/third/undotree_2
|
||||
* 1707200532 0
|
||||
" 13 1
|
||||
. 3 0
|
||||
+ 78 0
|
||||
+ 3 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/third/diffpanel_3
|
||||
* 1707200532 0
|
||||
" 1 0
|
||||
. 4 0
|
||||
+ 4 0
|
||||
|
||||
> ~/.viomr
|
||||
* 1707200477 0
|
||||
" 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/first/undotree_2
|
||||
* 1707200452 0
|
||||
" 4 1
|
||||
. 3 0
|
||||
+ 3 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/first/diffpanel_3
|
||||
* 1707200440 0
|
||||
" 1 0
|
||||
. 4 0
|
||||
+ 4 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/first/first.
|
||||
* 1707200437 0
|
||||
" 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1_autograder/pa1/undotree_2
|
||||
* 1707200389 0
|
||||
" 23 1
|
||||
. 23 0
|
||||
+ 777 0
|
||||
+ 401 0
|
||||
+ 23 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1_autograder/pa1/diffpanel_3
|
||||
* 1707200350 0
|
||||
" 1 0
|
||||
. 4 0
|
||||
+ 4 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1_autograder/pa1/third/third.c
|
||||
* 1707200238 0
|
||||
" 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1_autograder/pa1/third/undotree_2
|
||||
* 1707200233 0
|
||||
" 1 5
|
||||
. 23 0
|
||||
+ 24 0
|
||||
+ 23 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1_autograder/pa1/third/diffpanel_3
|
||||
* 1707200224 0
|
||||
" 1 0
|
||||
. 2 0
|
||||
+ 2 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1_autograder/pa1/fourth/fourth.c
|
||||
* 1707200216 0
|
||||
" 15 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1_autograder/pa1/fourth/NERD_tree_1
|
||||
* 1707200216 0
|
||||
" 6 0
|
||||
. 1 0
|
||||
+ 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1_autograder/pa1/fourth/undotree_2
|
||||
* 1707200215 0
|
||||
" 3 1
|
||||
. 3 0
|
||||
+ 5 0
|
||||
+ 3 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1_autograder/pa1/fourth/diffpanel_3
|
||||
* 1707200214 0
|
||||
" 1 0
|
||||
. 2 0
|
||||
+ 2 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1_autograder/pa1/fourth/fourth.viom
|
||||
* 1707200183 0
|
||||
" 1 0
|
||||
|
||||
> ~/.vim/plugged/vim-fugitive/doc/fugitive.txt
|
||||
* 1707199972 0
|
||||
" 461 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/third/NERD_tree_1
|
||||
* 1707199953 0
|
||||
" 7 2
|
||||
. 1 0
|
||||
+ 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fourth/Makefile
|
||||
* 1707197365 0
|
||||
" 1 0
|
||||
^ 1 11
|
||||
. 4 0
|
||||
+ 1 0
|
||||
+ 4 0
|
||||
+ 1 0
|
||||
+ 3 0
|
||||
+ 4 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/fourth/binarySearchTree.c
|
||||
* 1707197273 0
|
||||
" 4 1
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/third/third.
|
||||
* 1707197238 0
|
||||
" 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/second/undotree_2
|
||||
* 1707196519 0
|
||||
" 3 1
|
||||
. 3 0
|
||||
+ 1253 0
|
||||
+ 1251 0
|
||||
+ 1249 0
|
||||
+ 1247 0
|
||||
+ 944 0
|
||||
+ 641 0
|
||||
+ 338 0
|
||||
+ 336 0
|
||||
+ 17 0
|
||||
+ 3 0
|
||||
+ 13 0
|
||||
+ 7 0
|
||||
+ 3 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/second/diffpanel_3
|
||||
* 1707196508 0
|
||||
" 1 0
|
||||
. 48 0
|
||||
+ 128 0
|
||||
+ 124 0
|
||||
+ 120 0
|
||||
+ 116 0
|
||||
+ 48 0
|
||||
|
||||
> /private/etc/hosts
|
||||
* 1707093614 0
|
||||
" 9 0
|
||||
. 10 0
|
||||
+ 10 1
|
||||
+ 10 25
|
||||
+ 10 0
|
||||
+ 10 25
|
||||
+ 10 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/NERD_tree_2
|
||||
* 1707006706 0
|
||||
" 1 0
|
||||
. 1 0
|
||||
+ 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/third/Makefile
|
||||
* 1707003079 0
|
||||
" 5 0
|
||||
. 4 67
|
||||
+ 1 0
|
||||
+ 3 0
|
||||
+ 4 0
|
||||
+ 7 13
|
||||
+ 4 67
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/second/second.
|
||||
* 1706985176 0
|
||||
" 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/first/test1.txt
|
||||
* 1706937004 0
|
||||
" 10 0
|
||||
^ 10 0
|
||||
. 9 0
|
||||
+ 9 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/second/file2.txt
|
||||
* 1706895603 0
|
||||
" 10 7
|
||||
^ 10 8
|
||||
. 10 7
|
||||
+ 10 7
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/second/file1.txt
|
||||
* 1706895591 0
|
||||
" 8 7
|
||||
^ 8 8
|
||||
. 8 7
|
||||
+ 1 0
|
||||
+ 8 7
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1/second/Makefile
|
||||
* 1706894130 0
|
||||
" 3 2
|
||||
^ 1 11
|
||||
. 4 0
|
||||
+ 4 56
|
||||
+ 3 5
|
||||
+ 4 0
|
||||
+ 1 0
|
||||
+ 4 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1_autograder/pa1/first/aaa.txt
|
||||
* 1706687254 0
|
||||
" 6 0
|
||||
. 7 0
|
||||
+ 6 4
|
||||
+ 7 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1_autograder/pa1/first/tes1.txt
|
||||
* 1706687213 0
|
||||
" 6 0
|
||||
. 8 0
|
||||
+ 7 4
|
||||
+ 8 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1_autograder/pa1/first/tesss.txt
|
||||
* 1706687190 0
|
||||
" 6 0
|
||||
. 7 0
|
||||
+ 6 4
|
||||
+ 7 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/PA1/first/Makefile
|
||||
* 1706647765 0
|
||||
" 7 13
|
||||
^ 7 13
|
||||
. 7 13
|
||||
+ 1 9
|
||||
+ 3 11
|
||||
+ 4 66
|
||||
+ 7 12
|
||||
+ 4 67
|
||||
+ 7 13
|
||||
|
||||
> ~/Projects/ComputerArchitecture/pa1_autograder/pa1/first/Makefile
|
||||
* 1706646294 0
|
||||
" 4 66
|
||||
. 4 67
|
||||
+ 4 67
|
||||
|
||||
> ~/Projects/ComputerArchitecture/PA1/ProdNums/prodNums.c
|
||||
* 1706645736 0
|
||||
" 83 17
|
||||
^ 83 18
|
||||
. 83 17
|
||||
+ 36 37
|
||||
+ 38 0
|
||||
+ 36 33
|
||||
+ 36 41
|
||||
+ 87 0
|
||||
+ 33 22
|
||||
+ 60 1
|
||||
+ 87 0
|
||||
+ 1 0
|
||||
+ 7 0
|
||||
+ 87 0
|
||||
+ 57 4
|
||||
+ 38 9
|
||||
+ 38 0
|
||||
+ 33 36
|
||||
+ 38 14
|
||||
+ 38 29
|
||||
+ 40 30
|
||||
+ 42 35
|
||||
+ 45 96
|
||||
+ 47 38
|
||||
+ 36 0
|
||||
+ 38 0
|
||||
+ 36 0
|
||||
+ 31 0
|
||||
+ 32 0
|
||||
+ 58 15
|
||||
+ 59 2
|
||||
+ 58 2
|
||||
+ 47 0
|
||||
+ 42 23
|
||||
+ 43 33
|
||||
+ 42 19
|
||||
+ 45 28
|
||||
+ 34 17
|
||||
+ 47 22
|
||||
+ 49 0
|
||||
+ 48 13
|
||||
+ 35 0
|
||||
+ 36 0
|
||||
+ 37 35
|
||||
+ 36 20
|
||||
+ 37 16
|
||||
+ 26 0
|
||||
+ 39 10
|
||||
+ 51 14
|
||||
+ 56 0
|
||||
+ 51 0
|
||||
+ 52 0
|
||||
+ 39 19
|
||||
+ 52 22
|
||||
+ 36 0
|
||||
+ 37 0
|
||||
+ 39 22
|
||||
+ 42 28
|
||||
+ 44 13
|
||||
+ 45 0
|
||||
+ 38 0
|
||||
+ 41 27
|
||||
+ 48 20
|
||||
+ 47 0
|
||||
+ 48 20
|
||||
+ 44 21
|
||||
+ 46 11
|
||||
+ 60 23
|
||||
+ 87 0
|
||||
+ 67 0
|
||||
+ 61 37
|
||||
+ 62 36
|
||||
+ 64 0
|
||||
+ 62 27
|
||||
+ 65 13
|
||||
+ 63 6
|
||||
+ 66 26
|
||||
+ 69 128
|
||||
+ 85 3
|
||||
+ 86 3
|
||||
+ 62 0
|
||||
+ 48 18
|
||||
+ 80 27
|
||||
+ 81 12
|
||||
+ 82 0
|
||||
+ 72 9
|
||||
+ 82 11
|
||||
+ 83 28
|
||||
+ 84 0
|
||||
+ 48 0
|
||||
+ 52 11
|
||||
+ 55 0
|
||||
+ 53 0
|
||||
+ 84 0
|
||||
+ 72 9
|
||||
+ 72 0
|
||||
+ 29 0
|
||||
+ 38 0
|
||||
+ 44 19
|
||||
+ 69 21
|
||||
+ 44 19
|
||||
+ 69 21
|
||||
+ 83 17
|
||||
|
||||
> ~/Projects/ComputerArchitecture/PA1/ProdNums/file1.txt
|
||||
* 1706645722 0
|
||||
" 1 0
|
||||
^ 10 6
|
||||
. 3 0
|
||||
+ 6 3
|
||||
+ 5 0
|
||||
+ 8 5
|
||||
+ 9 5
|
||||
+ 10 5
|
||||
+ 3 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/PA1/ProdNums/prodNums.
|
||||
* 1706639467 0
|
||||
" 1 0
|
||||
|
||||
> ~/Projects/ComputerArchitecture/lecture-4/test.c
|
||||
* 1706637951 0
|
||||
" 44 0
|
||||
^ 42 20
|
||||
. 42 19
|
||||
+ 1 18
|
||||
+ 1 0
|
||||
+ 1 15
|
||||
+ 1 8
|
||||
+ 1 15
|
||||
+ 1 12
|
||||
+ 1 1
|
||||
+ 1 0
|
||||
+ 1 23
|
||||
+ 1 1
|
||||
+ 1 0
|
||||
+ 1 1
|
||||
+ 1 17
|
||||
+ 1 18
|
||||
+ 1 0
|
||||
+ 1 28
|
||||
+ 1 21
|
||||
+ 1 46
|
||||
+ 1 0
|
||||
+ 1 46
|
||||
+ 1 26
|
||||
+ 1 0
|
||||
+ 1 29
|
||||
+ 1 33
|
||||
+ 1 42
|
||||
+ 1 46
|
||||
+ 1 0
|
||||
+ 1 26
|
||||
+ 1 33
|
||||
+ 1 0
|
||||
+ 1 16
|
||||
+ 1 41
|
||||
+ 1 21
|
||||
+ 1 0
|
||||
+ 1 16
|
||||
+ 1 0
|
||||
+ 1 1
|
||||
+ 1 14
|
||||
+ 1 1
|
||||
+ 1 0
|
||||
+ 1 14
|
||||
+ 1 8
|
||||
+ 1 0
|
||||
+ 1 1
|
||||
+ 1 8
|
||||
+ 1 36
|
||||
+ 1 1
|
||||
+ 1 0
|
||||
+ 1 21
|
||||
+ 1 27
|
||||
+ 1 0
|
||||
+ 1 23
|
||||
+ 1 0
|
||||
+ 1 17
|
||||
+ 1 0
|
||||
+ 1 24
|
||||
+ 1 32
|
||||
+ 1 1
|
||||
+ 1 35
|
||||
+ 1 2
|
||||
+ 1 73
|
||||
+ 1 0
|
||||
+ 1 37
|
||||
+ 1 11
|
||||
+ 1 0
|
||||
+ 1 17
|
||||
+ 1 0
|
||||
+ 21 0
|
||||
+ 33 35
|
||||
+ 42 19
|
||||
|
||||
> ~/Projects/ComputerArchitecture/lecture-4/file1.txt
|
||||
* 1706636700 0
|
||||
" 1 0
|
||||
^ 1 1
|
||||
. 1 0
|
||||
229
vim/.vimrc
Normal file
229
vim/.vimrc
Normal file
@@ -0,0 +1,229 @@
|
||||
"NeoBundle Scripts----------------------------- {{{
|
||||
if &compatible
|
||||
set nocompatible " Be iMproved
|
||||
endif
|
||||
|
||||
" Required:
|
||||
set runtimepath+=/Users/joshp/.vim/bundle/neobundle.vim/
|
||||
|
||||
" Required:
|
||||
call neobundle#begin(expand('/Users/joshp/.vim/bundle'))
|
||||
|
||||
" Let NeoBundle manage NeoBundle
|
||||
" Required:
|
||||
NeoBundleFetch 'Shougo/neobundle.vim'
|
||||
|
||||
" Add or remove your Bundles here:
|
||||
NeoBundle 'Shougo/neosnippet.vim'
|
||||
NeoBundle 'Shougo/neosnippet-snippets'
|
||||
NeoBundle 'tpope/vim-fugitive'
|
||||
NeoBundle 'flazz/vim-colorschemes'
|
||||
NeoBundle 'tiagofumo/vim-nerdtree-syntax-highlight'
|
||||
" You can specify revision/branch/tag.
|
||||
NeoBundle 'Shougo/vimshell', { 'rev' : '3787e5' }
|
||||
|
||||
" Required:
|
||||
call neobundle#end()
|
||||
|
||||
" Required:
|
||||
filetype plugin indent on
|
||||
|
||||
" If there are uninstalled bundles found on startup,
|
||||
" this will conveniently prompt you to install them.
|
||||
NeoBundleCheck
|
||||
"End NeoBundle Scripts------------------------- }}}
|
||||
|
||||
" PLUGINS ----------------------------------------- {{{
|
||||
|
||||
call plug#begin('~/.vim/plugged')
|
||||
|
||||
Plug 'dense-analysis/ale'
|
||||
Plug 'ryanoasis/vim-devicons'
|
||||
Plug 'preservim/nerdtree'
|
||||
Plug 'tpope/vim-fugitive'
|
||||
Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
||||
Plug 'itchyny/lightline.vim'
|
||||
Plug 'ap/vim-css-color'
|
||||
Plug 'terryma/vim-smooth-scroll'
|
||||
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
|
||||
Plug 'junegunn/fzf.vim'
|
||||
Plug 'mbbill/undotree'
|
||||
Plug 'tpope/vim-surround'
|
||||
Plug 'wfxr/minimap.vim'
|
||||
Plug 'mhinz/vim-startify'
|
||||
Plug 'github/copilot.vim'
|
||||
Plug 'tpope/vim-commentary'
|
||||
Plug 'morhetz/gruvbox'
|
||||
Plug 'preservim/tagbar'
|
||||
|
||||
if has("persistent_undo")
|
||||
let target_path = expand('~/.undodir')
|
||||
|
||||
" create the directory and any parent directories
|
||||
" if the location does not exist.
|
||||
if !isdirectory(target_path)
|
||||
call mkdir(target_path, "p", 0700)
|
||||
endif
|
||||
|
||||
let &undodir=target_path
|
||||
set undofile
|
||||
endif
|
||||
|
||||
call plug#end()
|
||||
|
||||
" }}}
|
||||
|
||||
" MAPPINGS --------------------------------------------------------------- {{{
|
||||
" Use space as leader key
|
||||
let mapleader = " "
|
||||
" J and K to move lines up and down
|
||||
vnoremap J :m '>+1<CR>gv=gv
|
||||
vnoremap K :m '<-2<CR>gv=gv
|
||||
|
||||
" Use jk to escape from insert mode
|
||||
inoremap jk <Esc>
|
||||
|
||||
" leader mappings
|
||||
nnoremap <leader>nt :NERDTreeToggle<cr>
|
||||
nnoremap <leader>ut :UndotreeToggle<CR>
|
||||
nnoremap <leader>gs :Git<CR>
|
||||
nnoremap <leader>f :Files<CR>
|
||||
nnoremap <leader>gf :GFiles<CR>
|
||||
nnoremap <leader>m :MinimapToggle<CR>
|
||||
nnoremap <leader>sr :%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>
|
||||
nnoremap <leader>t :TagbarToggle<CR>
|
||||
" no more Q
|
||||
nnoremap Q <nop>
|
||||
|
||||
" Smooth scroll
|
||||
noremap <silent> <c-u> :call smooth_scroll#up(&scroll, 40, 2)<CR>
|
||||
noremap <silent> <c-d> :call smooth_scroll#down(&scroll, 40, 2)<CR>
|
||||
noremap <silent> <c-b> :call smooth_scroll#up(&scroll*2, 40, 4)<CR>
|
||||
noremap <silent> <c-f> :call smooth_scroll#down(&scroll*2, 40, 4)<CR>
|
||||
" Use tab for trigger completion with characters ahead and navigate
|
||||
" NOTE: There's always complete item selected by default, you may want to enable
|
||||
" no select by `"suggest.noselect": true` in your configuration file
|
||||
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
|
||||
" other plugin before putting this into your config
|
||||
inoremap <silent><expr> <TAB>
|
||||
\ coc#pum#visible() ? coc#pum#next(1) :
|
||||
\ CheckBackspace() ? "\<Tab>" :
|
||||
\ coc#refresh()
|
||||
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
|
||||
|
||||
" Make <CR> to accept selected completion item or notify coc.nvim to format
|
||||
" <C-g>u breaks current undo, please make your own choice
|
||||
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
|
||||
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
|
||||
|
||||
function! CheckBackspace() abort
|
||||
let col = col('.') - 1
|
||||
return !col || getline('.')[col - 1] =~# '\s'
|
||||
endfunction
|
||||
|
||||
" Use <c-space> to trigger completion
|
||||
if has('nvim')
|
||||
inoremap <silent><expr> <c-space> coc#refresh()
|
||||
else
|
||||
inoremap <silent><expr> <c-@> coc#refresh()
|
||||
endif
|
||||
|
||||
" }}}
|
||||
|
||||
" VIMSCRIPT -------------------------------------------------------------- {{{
|
||||
|
||||
" This will enable code folding.
|
||||
" Use the marker method of folding.
|
||||
augroup filetype_vim
|
||||
autocmd!
|
||||
autocmd FileType vim setlocal foldmethod=marker
|
||||
augroup END
|
||||
"
|
||||
" If the current file type is HTML, set indentation to 2 spaces.
|
||||
autocmd Filetype html setlocal tabstop=2 shiftwidth=2 expandtab
|
||||
|
||||
" If Vim version is equal to or greater than 7.3 enable undofile.
|
||||
" This allows you to undo changes to a file even after saving it.
|
||||
if version >= 703
|
||||
set undodir=~/.vim/backup
|
||||
set undofile
|
||||
set undoreload=10000
|
||||
endif
|
||||
|
||||
augroup cursor_off
|
||||
autocmd!
|
||||
autocmd WinLeave * set nocursorline nocursorcolumn
|
||||
autocmd WinEnter * set cursorline cursorcolumn
|
||||
augroup END
|
||||
|
||||
" }}}
|
||||
|
||||
" STATUS LINE ------------------------------------------------------------ {{{
|
||||
|
||||
" Clear status line when vimrc is reloaded.
|
||||
set statusline=
|
||||
|
||||
" Status line left side.
|
||||
set statusline+=\ %F\ %M\ %Y\ %R
|
||||
|
||||
" Use a divider to separate the left side from the right side.
|
||||
set statusline+=%=
|
||||
|
||||
" Status line right side.
|
||||
set statusline+=\ ascii:\ %b\ hex:\ 0x%B\ row:\ %l\ col:\ %c\ percent:\ %p%%
|
||||
|
||||
" Show the status on the second to last line.
|
||||
set laststatus=2
|
||||
|
||||
" }}}
|
||||
|
||||
" SETTINGS ------------------------------------------------------- {{{
|
||||
|
||||
set nocompatible
|
||||
filetype on
|
||||
syntax on
|
||||
set number
|
||||
set cursorline
|
||||
set cursorcolumn
|
||||
set shiftwidth=2
|
||||
set tabstop=2
|
||||
set incsearch
|
||||
set ignorecase
|
||||
set smartcase
|
||||
set showcmd
|
||||
set showmode
|
||||
set showmatch
|
||||
set hlsearch
|
||||
set history=1000
|
||||
set wildmenu
|
||||
set wildmode=list:longest
|
||||
set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx
|
||||
set encoding=UTF-8
|
||||
set updatetime=300
|
||||
set signcolumn=yes
|
||||
set relativenumber
|
||||
set termguicolors
|
||||
set scrolloff=8
|
||||
set updatetime=50
|
||||
set clipboard=unnamed
|
||||
colorscheme gruvbox
|
||||
|
||||
let g:lightline = {
|
||||
\ 'colorscheme': 'gruvbox',
|
||||
\ 'active': {
|
||||
\ 'left': [ [ 'mode', 'paste' ],
|
||||
\ [ 'cocstatus', 'readonly', 'filename', 'modified' ] ]
|
||||
\ },
|
||||
\ 'component_function': {
|
||||
\ 'cocstatus': 'coc#status'
|
||||
\ },
|
||||
\ }
|
||||
|
||||
let g:ale_linters = {
|
||||
\ 'c': ['clang' , 'gcc'],
|
||||
\ 'python': ['mypy'],
|
||||
\ 'javascript': ['eslint']
|
||||
\ }
|
||||
|
||||
|
||||
" }}}
|
||||
21
zsh/.zprofile
Normal file
21
zsh/.zprofile
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
eval "$(/opt/homebrew/bin/brew shellenv)"
|
||||
|
||||
|
||||
# Added by Toolbox App
|
||||
export PATH="$PATH:/Users/joshp/Library/Application Support/JetBrains/Toolbox/scripts"
|
||||
|
||||
|
||||
##
|
||||
# Your previous /Users/joshp/.zprofile file was backed up as /Users/joshp/.zprofile.macports-saved_2024-01-16_at_13:27:44
|
||||
##
|
||||
|
||||
# MacPorts Installer addition on 2024-01-16_at_13:27:44: adding an appropriate PATH variable for use with MacPorts.
|
||||
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
|
||||
# Finished adapting your PATH environment variable for use with MacPorts.
|
||||
|
||||
|
||||
# MacPorts Installer addition on 2024-01-16_at_13:27:44: adding an appropriate MANPATH variable for use with MacPorts.
|
||||
export MANPATH="/opt/local/share/man:$MANPATH"
|
||||
# Finished adapting your MANPATH environment variable for use with MacPorts.
|
||||
|
||||
2
zsh/.zprofile.bak
Normal file
2
zsh/.zprofile.bak
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
eval "$(/opt/homebrew/bin/brew shellenv)"
|
||||
@@ -1,8 +0,0 @@
|
||||
export HISTSIZE=5000
|
||||
export SAVEHIST=10000
|
||||
HISTFILE=~/.cache/zsh/history
|
||||
setopt EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format.
|
||||
setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits.
|
||||
setopt SHARE_HISTORY # Share history between all sessions.
|
||||
setopt HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history.
|
||||
setopt HIST_IGNORE_DUPS # Don't record an entry that was just recorded again.
|
||||
10
zsh/.zshrc
10
zsh/.zshrc
@@ -2,6 +2,16 @@ export GPG_TTY=$TTY
|
||||
gpgconf --launch gpg-agent
|
||||
export BAT_THEME="Enki-Tokyo-Night"
|
||||
|
||||
# history stuff
|
||||
export HISTSIZE=5000
|
||||
export SAVEHIST=10000
|
||||
export HISTFILE=~/.cache/zsh/.zsh_history
|
||||
setopt EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format.
|
||||
setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits.
|
||||
setopt SHARE_HISTORY # Share history between all sessions.
|
||||
setopt HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history.
|
||||
setopt HIST_IGNORE_DUPS # Don't record an entry that was just recorded again.
|
||||
|
||||
source ~/Projects/zsh-autocomplete/zsh-autocomplete.plugin.zsh
|
||||
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
|
||||
# Initialization code that may require console input (password prompts, [y/n]
|
||||
|
||||
Reference in New Issue
Block a user