summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--COPYING8
-rw-r--r--LICENSE.EN287
-rw-r--r--LICENSE.LV97
-rw-r--r--README.md75
-rw-r--r--dot-tmux.conf62
-rw-r--r--src/KeyMap.zig20
6 files changed, 548 insertions, 1 deletions
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..8c9fd98
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,8 @@
1Copyright Uko Koknevics, 2021-2024
2
3Licensed under the EUPL-1.2-or-later.
4
5See file LICENSE.EN for the English version of the license,
6LICENSE.LV for the Latvian version of the license (UTF-8 encoded),
7<https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12> for official versions in the other
8languages of the European Union.
diff --git a/LICENSE.EN b/LICENSE.EN
new file mode 100644
index 0000000..4153cd3
--- /dev/null
+++ b/LICENSE.EN
@@ -0,0 +1,287 @@
1 EUROPEAN UNION PUBLIC LICENCE v. 1.2
2 EUPL © the European Union 2007, 2016
3
4This European Union Public Licence (the ‘EUPL’) applies to the Work (as defined
5below) which is provided under the terms of this Licence. Any use of the Work,
6other than as authorised under this Licence is prohibited (to the extent such
7use is covered by a right of the copyright holder of the Work).
8
9The Work is provided under the terms of this Licence when the Licensor (as
10defined below) has placed the following notice immediately following the
11copyright notice for the Work:
12
13 Licensed under the EUPL
14
15or has expressed by any other means his willingness to license under the EUPL.
16
171. Definitions
18
19In this Licence, the following terms have the following meaning:
20
21- ‘The Licence’: this Licence.
22
23- ‘The Original Work’: the work or software distributed or communicated by the
24 Licensor under this Licence, available as Source Code and also as Executable
25 Code as the case may be.
26
27- ‘Derivative Works’: the works or software that could be created by the
28 Licensee, based upon the Original Work or modifications thereof. This Licence
29 does not define the extent of modification or dependence on the Original Work
30 required in order to classify a work as a Derivative Work; this extent is
31 determined by copyright law applicable in the country mentioned in Article 15.
32
33- ‘The Work’: the Original Work or its Derivative Works.
34
35- ‘The Source Code’: the human-readable form of the Work which is the most
36 convenient for people to study and modify.
37
38- ‘The Executable Code’: any code which has generally been compiled and which is
39 meant to be interpreted by a computer as a program.
40
41- ‘The Licensor’: the natural or legal person that distributes or communicates
42 the Work under the Licence.
43
44- ‘Contributor(s)’: any natural or legal person who modifies the Work under the
45 Licence, or otherwise contributes to the creation of a Derivative Work.
46
47- ‘The Licensee’ or ‘You’: any natural or legal person who makes any usage of
48 the Work under the terms of the Licence.
49
50- ‘Distribution’ or ‘Communication’: any act of selling, giving, lending,
51 renting, distributing, communicating, transmitting, or otherwise making
52 available, online or offline, copies of the Work or providing access to its
53 essential functionalities at the disposal of any other natural or legal
54 person.
55
562. Scope of the rights granted by the Licence
57
58The Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
59sublicensable licence to do the following, for the duration of copyright vested
60in the Original Work:
61
62- use the Work in any circumstance and for all usage,
63- reproduce the Work,
64- modify the Work, and make Derivative Works based upon the Work,
65- communicate to the public, including the right to make available or display
66 the Work or copies thereof to the public and perform publicly, as the case may
67 be, the Work,
68- distribute the Work or copies thereof,
69- lend and rent the Work or copies thereof,
70- sublicense rights in the Work or copies thereof.
71
72Those rights can be exercised on any media, supports and formats, whether now
73known or later invented, as far as the applicable law permits so.
74
75In the countries where moral rights apply, the Licensor waives his right to
76exercise his moral right to the extent allowed by law in order to make effective
77the licence of the economic rights here above listed.
78
79The Licensor grants to the Licensee royalty-free, non-exclusive usage rights to
80any patents held by the Licensor, to the extent necessary to make use of the
81rights granted on the Work under this Licence.
82
833. Communication of the Source Code
84
85The Licensor may provide the Work either in its Source Code form, or as
86Executable Code. If the Work is provided as Executable Code, the Licensor
87provides in addition a machine-readable copy of the Source Code of the Work
88along with each copy of the Work that the Licensor distributes or indicates, in
89a notice following the copyright notice attached to the Work, a repository where
90the Source Code is easily and freely accessible for as long as the Licensor
91continues to distribute or communicate the Work.
92
934. Limitations on copyright
94
95Nothing in this Licence is intended to deprive the Licensee of the benefits from
96any exception or limitation to the exclusive rights of the rights owners in the
97Work, of the exhaustion of those rights or of other applicable limitations
98thereto.
99
1005. Obligations of the Licensee
101
102The grant of the rights mentioned above is subject to some restrictions and
103obligations imposed on the Licensee. Those obligations are the following:
104
105Attribution right: The Licensee shall keep intact all copyright, patent or
106trademarks notices and all notices that refer to the Licence and to the
107disclaimer of warranties. The Licensee must include a copy of such notices and a
108copy of the Licence with every copy of the Work he/she distributes or
109communicates. The Licensee must cause any Derivative Work to carry prominent
110notices stating that the Work has been modified and the date of modification.
111
112Copyleft clause: If the Licensee distributes or communicates copies of the
113Original Works or Derivative Works, this Distribution or Communication will be
114done under the terms of this Licence or of a later version of this Licence
115unless the Original Work is expressly distributed only under this version of the
116Licence — for example by communicating ‘EUPL v. 1.2 only’. The Licensee
117(becoming Licensor) cannot offer or impose any additional terms or conditions on
118the Work or Derivative Work that alter or restrict the terms of the Licence.
119
120Compatibility clause: If the Licensee Distributes or Communicates Derivative
121Works or copies thereof based upon both the Work and another work licensed under
122a Compatible Licence, this Distribution or Communication can be done under the
123terms of this Compatible Licence. For the sake of this clause, ‘Compatible
124Licence’ refers to the licences listed in the appendix attached to this Licence.
125Should the Licensee's obligations under the Compatible Licence conflict with
126his/her obligations under this Licence, the obligations of the Compatible
127Licence shall prevail.
128
129Provision of Source Code: When distributing or communicating copies of the Work,
130the Licensee will provide a machine-readable copy of the Source Code or indicate
131a repository where this Source will be easily and freely available for as long
132as the Licensee continues to distribute or communicate the Work.
133
134Legal Protection: This Licence does not grant permission to use the trade names,
135trademarks, service marks, or names of the Licensor, except as required for
136reasonable and customary use in describing the origin of the Work and
137reproducing the content of the copyright notice.
138
1396. Chain of Authorship
140
141The original Licensor warrants that the copyright in the Original Work granted
142hereunder is owned by him/her or licensed to him/her and that he/she has the
143power and authority to grant the Licence.
144
145Each Contributor warrants that the copyright in the modifications he/she brings
146to the Work are owned by him/her or licensed to him/her and that he/she has the
147power and authority to grant the Licence.
148
149Each time You accept the Licence, the original Licensor and subsequent
150Contributors grant You a licence to their contributions to the Work, under the
151terms of this Licence.
152
1537. Disclaimer of Warranty
154
155The Work is a work in progress, which is continuously improved by numerous
156Contributors. It is not a finished work and may therefore contain defects or
157‘bugs’ inherent to this type of development.
158
159For the above reason, the Work is provided under the Licence on an ‘as is’ basis
160and without warranties of any kind concerning the Work, including without
161limitation merchantability, fitness for a particular purpose, absence of defects
162or errors, accuracy, non-infringement of intellectual property rights other than
163copyright as stated in Article 6 of this Licence.
164
165This disclaimer of warranty is an essential part of the Licence and a condition
166for the grant of any rights to the Work.
167
1688. Disclaimer of Liability
169
170Except in the cases of wilful misconduct or damages directly caused to natural
171persons, the Licensor will in no event be liable for any direct or indirect,
172material or moral, damages of any kind, arising out of the Licence or of the use
173of the Work, including without limitation, damages for loss of goodwill, work
174stoppage, computer failure or malfunction, loss of data or any commercial
175damage, even if the Licensor has been advised of the possibility of such damage.
176However, the Licensor will be liable under statutory product liability laws as
177far such laws apply to the Work.
178
1799. Additional agreements
180
181While distributing the Work, You may choose to conclude an additional agreement,
182defining obligations or services consistent with this Licence. However, if
183accepting obligations, You may act only on your own behalf and on your sole
184responsibility, not on behalf of the original Licensor or any other Contributor,
185and only if You agree to indemnify, defend, and hold each Contributor harmless
186for any liability incurred by, or claims asserted against such Contributor by
187the fact You have accepted any warranty or additional liability.
188
18910. Acceptance of the Licence
190
191The provisions of this Licence can be accepted by clicking on an icon ‘I agree’
192placed under the bottom of a window displaying the text of this Licence or by
193affirming consent in any other similar way, in accordance with the rules of
194applicable law. Clicking on that icon indicates your clear and irrevocable
195acceptance of this Licence and all of its terms and conditions.
196
197Similarly, you irrevocably accept this Licence and all of its terms and
198conditions by exercising any rights granted to You by Article 2 of this Licence,
199such as the use of the Work, the creation by You of a Derivative Work or the
200Distribution or Communication by You of the Work or copies thereof.
201
20211. Information to the public
203
204In case of any Distribution or Communication of the Work by means of electronic
205communication by You (for example, by offering to download the Work from a
206remote location) the distribution channel or media (for example, a website) must
207at least provide to the public the information requested by the applicable law
208regarding the Licensor, the Licence and the way it may be accessible, concluded,
209stored and reproduced by the Licensee.
210
21112. Termination of the Licence
212
213The Licence and the rights granted hereunder will terminate automatically upon
214any breach by the Licensee of the terms of the Licence.
215
216Such a termination will not terminate the licences of any person who has
217received the Work from the Licensee under the Licence, provided such persons
218remain in full compliance with the Licence.
219
22013. Miscellaneous
221
222Without prejudice of Article 9 above, the Licence represents the complete
223agreement between the Parties as to the Work.
224
225If any provision of the Licence is invalid or unenforceable under applicable
226law, this will not affect the validity or enforceability of the Licence as a
227whole. Such provision will be construed or reformed so as necessary to make it
228valid and enforceable.
229
230The European Commission may publish other linguistic versions or new versions of
231this Licence or updated versions of the Appendix, so far this is required and
232reasonable, without reducing the scope of the rights granted by the Licence. New
233versions of the Licence will be published with a unique version number.
234
235All linguistic versions of this Licence, approved by the European Commission,
236have identical value. Parties can take advantage of the linguistic version of
237their choice.
238
23914. Jurisdiction
240
241Without prejudice to specific agreement between parties,
242
243- any litigation resulting from the interpretation of this License, arising
244 between the European Union institutions, bodies, offices or agencies, as a
245 Licensor, and any Licensee, will be subject to the jurisdiction of the Court
246 of Justice of the European Union, as laid down in article 272 of the Treaty on
247 the Functioning of the European Union,
248
249- any litigation arising between other parties and resulting from the
250 interpretation of this License, will be subject to the exclusive jurisdiction
251 of the competent court where the Licensor resides or conducts its primary
252 business.
253
25415. Applicable Law
255
256Without prejudice to specific agreement between parties,
257
258- this Licence shall be governed by the law of the European Union Member State
259 where the Licensor has his seat, resides or has his registered office,
260
261- this licence shall be governed by Belgian law if the Licensor has no seat,
262 residence or registered office inside a European Union Member State.
263
264Appendix
265
266‘Compatible Licences’ according to Article 5 EUPL are:
267
268- GNU General Public License (GPL) v. 2, v. 3
269- GNU Affero General Public License (AGPL) v. 3
270- Open Software License (OSL) v. 2.1, v. 3.0
271- Eclipse Public License (EPL) v. 1.0
272- CeCILL v. 2.0, v. 2.1
273- Mozilla Public Licence (MPL) v. 2
274- GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3
275- Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) for
276 works other than software
277- European Union Public Licence (EUPL) v. 1.1, v. 1.2
278- Québec Free and Open-Source Licence — Reciprocity (LiLiQ-R) or Strong
279 Reciprocity (LiLiQ-R+).
280
281The European Commission may update this Appendix to later versions of the above
282licences without producing a new version of the EUPL, as long as they provide
283the rights granted in Article 2 of this Licence and protect the covered Source
284Code from exclusive appropriation.
285
286All other changes or additions to this Appendix require the production of a new
287EUPL version.
diff --git a/LICENSE.LV b/LICENSE.LV
new file mode 100644
index 0000000..09f2410
--- /dev/null
+++ b/LICENSE.LV
@@ -0,0 +1,97 @@
1EIROPAS SAVIENĪBAS SABIEDRISKĀ LICENCE 1.2. redakcija
2EUPL © Eiropas Savienība, 2007, 2016
3Eiropas Savienības sabiedriskā licence (EUPL) attiecas uz darbu (saskaņā ar turpmāk sniegto definīciju), kas izmantojams saskaņā ar šīs licences noteikumiem. Darbu ir atļauts izmantot tikai šajā licencē paredzētajā veidā (ciktāl uz šādu lietojumu attiecas darba autortiesību subjekta tiesības). Darbs ir izmantojams saskaņā ar šīs licences noteikumiem, ja licenciārs (saskaņā ar turpmāk sniegto definīciju) pēc darba autortiesību zīmes ir pievienojis šādu norādi:
4 Licencēts saskaņā ar EUPL
5vai jebkādā citā veidā ir izteicis vēlēšanos darbu licencēt saskaņā ar EUPL.
6
71.Definīcijas
8Šajā licencē turpmāk minētos terminus lieto šādā nozīmē:
9— “licence” ir šī licence,
10— “oriģināldarbs” ir darbs vai programmatūra, kuru licenciārs izplata vai dara pieejamu saskaņā ar šo licenci un kurai ir pieejams pirmkods un attiecīgā gadījumā arī izpildkods,
11— “atvasināti darbi” ir darbi vai programmatūra, ko licenciāts var radīt, balstoties uz oriģināldarbu vai tā pārveidojumiem. Šī licence nenosaka nepieciešamo pārveidojumu apmēru vai to, cik lielā mērā darbam jābūt saistītam ar oriģināldarbu, lai to atzītu par atvasinātu darbu; šis apmērs ir noteikts autortiesību regulējuma tiesību aktos, kas piemērojami 15. pantā minētajā valstī,
12— “darbs” ir oriģināldarbs vai no tā atvasināti darbi,
13— “pirmkods” ir darbs tādā cilvēkam lasāmā formā, kas ir visparocīgākā, lai cilvēki varētu to pētīt un pārveidot,
14— “izpildkods” ir jebkurš kompilēts kods, kas ir paredzēts, lai dators to izpildītu kā programmu,
15— “licenciārs” ir fiziska vai juridiska persona, kas darbu izplata vai dara zināmu saskaņā ar licenci,
16— “attīstītājs” ir jebkura fiziska vai juridiska persona, kas saskaņā ar licenci izmantojamo darbu pārveido vai citādi iegulda atvasināta darba radīšanā,
17— “licenciāts” vai “jūs” ir jebkura fiziska vai juridiska persona, kas atbilstoši licences noteikumiem darbu izmanto,
18— “izplatīt” vai “darīt zināmu” ir veikt jebkuru darbību, ar kuru darba kopijas pārdod, dāvina, patapina, iznomā, izplata, dara zināmas, pārraida vai dara pieejamas citādā veidā, tiešsaistē vai bezsaistē, vai dod piekļuvi tā būtiskākajām funkcijām jebkurai fiziskai vai juridiskai personai.
19
202.Ar licenci piešķirto tiesību apjoms
21Ar šo licenciārs uz oriģināldarbam piemērojamo autortiesību aizsardzības laika posmu jums piešķir visā pasaulē izmantojamu vienkāršu bezatlīdzības licenci, ko var nodot trešām personām, šādām darbībām:
22— izmantot darbu jebkādos apstākļos un bez ierobežojumiem,
23— reproducēt darbu,
24— pārveidot darbu un radīt atvasinātus darbus, izmantojot darbu,
25— darīt zināmu sabiedrībai, tostarp darīt pieejamu vai izlikt apskatei, darbu vai tā kopijas un attiecīgā gadījumā darbu izpildīt publiski,
26— izplatīt darbu vai tā kopijas,
27— patapināt un iznomāt darbu vai tā kopijas,
28— nodot licenci darba vai tā kopiju izmantošanai trešām personām.
29Minētās tiesības var īstenot ar jebkuriem informācijas līdzekļiem, nesējiem un formātiem, kas šobrīd zināmi vai kurus nākotnē izgudros, ciktāl to atļauj piemērojamie tiesību akti. Valstīs, kurās eksistē autora personiskās tiesības, licenciārs atsakās īstenot savas autora personiskās tiesības, ciktāl to atļauj tiesību akti un ciktāl tas ir nepieciešams, lai nodrošinātu efektīvu iepriekš minēto autora mantisko tiesību realizāciju. Licenciārs bez tiesībām uz atlīdzību un bez izņēmuma tiesībām piešķir licenciātam visu licenciāra patentu lietošanas tiesības, ciktāl tas ir nepieciešams, lai realizētu ar šo licenci piešķirtās tiesības uz darbu.
30
313.Pirmkoda pieejamība
32Licenciārs var izplatīt darbu vai nu pirmkoda, vai izpildkoda formā. Ja darbs ir pieejams izpildkoda formā, kopā ar katru licenciāra izplatītu darba kopiju licenciārs papildus sniedz piekļuvi mašīnlasāmai darba pirmkoda kopijai vai aiz darbam pievienotās autortiesību zīmes norāda krātuvi, kurā pirmkods ir brīvi un bez maksas pieejams tik ilgi, kamēr licenciārs darbu turpina izplatīt vai darīt zināmu.
33
344.Autortiesību ierobežojumi
35Ar šo licenci netiek ierobežoti licenciāta ieguvumi, kas tam pienākas saskaņā ar jebkādu tādu izņēmumu vai ierobežojumu, kas ierobežo autortiesību subjektu izņēmuma tiesības attiecībā uz darbu, vai kas tam pienākas saskaņā ar šo tiesību izsmelšanu vai saskaņā ar citiem piemērojamiem ierobežojumiem.
36
375.Licenciāta pienākumi
38Iepriekš minēto tiesību piešķiršana uzliek licenciātam vairākus ierobežojumus un pienākumus. Minētie pienākumi ir šādi:
39
40Norādes tiesības: licenciāts nemaina nevienu autortiesību, patenta vai preču zīmes norādi, kā arī nevienu norādi uz šo licenci vai garantijas atrunu. Licenciātam ir jāpievieno šādu norāžu un šīs licences kopija ikvienai darba kopijai, ko tas izplata vai dara pieejamu. Licenciātam ir jānodrošina, ka uz katra atvasināta darba ir skaidri norādīts, ka darbs ir pārveidots, un pārveidošanas datums.
41
42Licences saglabāšana: ja licenciāts izplata vai dara zināmas oriģināldarbu vai atvasinātu darbu kopijas, tās izplata vai dara zināmas atbilstoši šīs licences vai tās vēlākas redakcijas noteikumiem, ja vien nav skaidri noteikts, ka oriģināldarbu izplata tikai saskaņā ar šo licences redakciju, piemēram, ar norādi “piemēro tikai EUPL 1.2. redakciju”. Licenciāts (kļūstot par licenciāru) nedrīkst piedāvāt vai uzspiest tādus papildu noteikumus vai nosacījumus attiecībā uz darbu vai atvasināto darbu, kas maina vai ierobežo licences noteikumus.
43
44Saderības atruna: ja licenciāts izplata vai dara zināmus atvasinātus darbus vai to kopijas, kas balstītas uz darbu un citu darbu ar saderīgu licenci, tos ir atļauts izplatīt vai darīt zināmus saskaņā ar minētās saderīgās licences noteikumiem. Šīs atrunas izpratnē “saderīga licence” nozīmē licences, kas ir uzskaitītas šīs licences pielikumā. Ja licenciāta pienākumi atbilstoši saderīgajai licencei ir pretrunā pienākumiem, kas izriet no šīs licences, noteicošie ir saderīgās licences noteikumi.
45
46Piekļuve pirmkodam: izplatot vai darot zināmas darba kopijas, licenciāts sagādā mašīnlasāmu pirmkoda kopiju vai norāda krātuvi, kurā pirmkods ir brīvi un bez maksas pieejams tik ilgi, kamēr licenciāts darbu turpina izplatīt vai darīt zināmu.
47
48Tiesiskā aizsardzība: šī licence nepiešķir atļauju lietot licenciāra tirdzniecības nosaukumus, preču zīmes, pakalpojumu zīmes vai licenciāra nosaukumus, izņemot gadījumus, kad tas ir nepieciešams pamatotam un ierastam lietojumam, kurā raksturo darba izcelsmi un atkārto autortiesību zīmes saturu.
49
506.Autorības secība
51Sākotnējais licenciārs garantē, ka tam pieder autortiesības uz oriģināldarbu vai tās ir licenciāram piešķirtas ar licenci un ka tam ir tiesības un pilnvaras izdot licenci. Katrs attīstītājs garantē, ka autortiesības uz tā veiktajiem darba pārveidojumiem tam pieder vai ir piešķirtas ar licenci un ka tam ir tiesības un pilnvaras izdot licenci. Katru reizi, kad jūs pieņemat licenci, sākotnējais licenciārs un nākamie attīstītāji jums atļauj izmantot viņu ieguldījumu darbā atbilstoši šīs licences noteikumiem.
52
537.Garantijas atruna
54Darba izstrāde turpinās, to nepārtraukti uzlabo daudzi attīstītāji. Tas nav pabeigts darbs, tāpēc tam var piemist trūkumi vai nepilnības, kas ir šāda veida izstrādes sastāvdaļa. Minētā iemesla dēļ ar šo licenci darbam sniedz piekļuvi tādam, “kāds tas ir”, un bez jebkādām garantijām attiecībā uz darbu, tostarp, bet ne tikai, bez garantijām par tā piemērotību pārdošanai, piemērotību noteiktam nolūkam, defektu vai kļūdu neesību, precizitāti, citu intelektuālā īpašuma tiesību nepārkāpšanu, kas nav šīs licences 6. pantā noteiktās autortiesības. Šī garantijas atruna ir būtiska licences sastāvdaļa un nosacījums, lai piešķirtu jebkādas tiesības uz darbu.
55
568.Atbildības atruna
57Izņemot tīšu nodarījumu vai fiziskām personām tieši nodarītus kaitējumus, licenciārs nekādā gadījumā neuzņemas atbildību ne par kādiem tiešiem vai netiešiem, mantiskiem vai morāliem jebkāda veida kaitējumiem, kas izriet no licences vai darba lietošanas, tostarp, bet ne tikai, kaitējumiem, kas saistīti ar nemateriālās vērtības mazināšanos, darbības pārtraukšanu, datora bojājumiem vai darbības traucējumiem, datu zudumu vai jebkādu komerciālu kaitējumu pat tad, ja licenciāram ir darīta zināma šādu kaitējumu iespējamība. Tomēr licenciārs ir atbildīgs saskaņā ar normatīvajiem aktiem par produktatbildību, ciktāl tie attiecas uz darbu.
58
599.Papildu vienošanās
60Izplatot darbu, jūs drīkstat noslēgt papildu vienošanos, nosakot pienākumus vai pakalpojumus, kas nav pretrunā šai licencei. Taču, uzņemoties pienākumus, jūs varat rīkoties vienīgi savā vārdā un uz savu atbildību, ne sākotnējā licenciāra vai kāda cita attīstītāja vārdā, un vienīgi tad, ja jūs apņematies atbrīvot visus attīstītājus no atbildības par jebkādām saistībām vai prasībām, kā arī atlīdzināt visus zaudējumus un aizstāvēt attīstītājus, ja pret kādu no tiem tiktu celta prasība jūsu garantiju vai papildu saistību dēļ.
61
6210.Licences pieņemšana
63Šīs licences noteikumus var pieņemt, noklikšķinot uz ikonas “Piekrītu”, kas atrodas zem loga, kurā parādīts šīs licences teksts, vai apstiprinot piekrišanu citā līdzīgā veidā saskaņā ar piemērojamiem tiesību aktiem. Noklikšķinot uz ikonas, jūs apliecināt skaidru un neatsaucamu šīs licences un visu tās noteikumu un nosacījumu pieņemšanu. Tāpat jūs neatsaucami pieņemat šo licenci un visus tās noteikumus un nosacījumus, īstenojot jebkuras no tiesībām, kas jums piešķirtas ar šīs licences 2. pantu, piemēram, izmantojot darbu, radot atvasinātu darbu vai izplatot vai darot pieejamu darbu vai tā kopijas.
64
6511.Sabiedrības informēšana
66Ja jūs darbu izplatāt vai darāt zināmu ar elektroniskiem sakaru līdzekļiem (piemēram, piedāvājot darbu lejupielādēt no attālināta datu avota), informācijas izplatīšanas līdzekļiem vai informācijas nesējiem (piemēram, tīmekļa vietnei), ir jāsniedz sabiedrībai vismaz tā informācija, kas ir noteikta piemērojamos tiesību aktos attiecībā uz licenciāru, licenci un to, kā licenciāts tai var piekļūt, kā to var apstiprināt, uzglabāt un reproducēt.
67
6812.Licences izbeigšana
69Licence un ar to piešķirtās tiesības izbeidzas automātiski, līdzko licenciāts pārkāpj licences noteikumus. Šāda izbeigšana neizbeidz licences citām personām, kas ir saņēmušas darbu no licenciāta atbilstoši licencei, ja šīs personas pilnībā turpina rīkoties saskaņā ar licences noteikumiem.
70
7113.Dažādi
72Neskarot 9. pantu, licence pilnībā atspoguļo pušu galīgo vienošanos attiecībā uz darbu. Ja kāds no licences noteikumiem nav spēkā vai nav izpildāms saskaņā ar piemērojamiem tiesību aktiem, tas neietekmē licences spēkā esību vai izpildāmību kopumā. Šādu noteikumu interpretē vai pārveido tā, kā ir nepieciešams, lai to padarītu spēkā esošu un izpildāmu. Eiropas Komisija var publicēt šīs licences redakcijas citās valodās vai jaunas šīs licences redakcijas, vai atjauninātas pielikuma redakcijas, ciktāl tas ir vajadzīgi un pamatoti, nemazinot ar šo licenci piešķirto tiesību apjomu. Katru jaunu licences redakciju publicē ar atšķirīgu redakcijas numuru. Eiropas Komisijas apstiprinātas šīs licences redakcijas visās valodās ir vienlīdzīgas. Puses var izvēlēties, kuras valodas redakciju izmantot.
73
7414.Jurisdikcija
75Neskarot konkrētu starp pusēm noslēgtu vienošanos:
76— jebkura tiesvedība, kas šīs licences interpretēšanas rezultātā rodas starp Eiropas Savienības iestādi, struktūru, biroju vai aģentūru kā licenciāru un jebkuru licenciātu, ir Eiropas Savienības Tiesas kompetencē, kā noteikts Līguma par Eiropas Savienības darbību 272. pantā,
77— jebkura tiesvedība, kas rodas starp citām pusēm un šīs licences interpretēšanas rezultātā, ir tās valsts kompetentās tiesas ekskluzīvā piekritībā, kur licenciārs pastāvīgi uzturas vai kur ir tā galvenā uzņēmējdarbības vieta.
78
7915.Piemērojamie tiesību akti
80Neskarot konkrētu starp pusēm noslēgtu vienošanos:
81— šai licencei ir piemērojami tās Eiropas Savienības dalībvalsts tiesību akti, kur ir licenciāra mītnesvieta, kur tas pastāvīgi uzturas vai kur ir tā juridiskā adrese,
82— ja licenciāra mītnesvieta, pastāvīgā dzīvesvieta vai juridiskā adrese neatrodas Eiropas Savienības dalībvalstī, šai licencei piemēro Beļģijas tiesību aktus.
83
84Papildinājums
85“Saderīgas licences” saskaņā ar EUPL 5. pantu ir:
86— GNU General Public License (GPL) v. 2, v. 3,
87— GNU Affero General Public License (AGPL) v. 3,
88— Open Software License (OSL) v. 2.1, v. 3.0,
89— Eclipse Public License (EPL) v. 1.0,
90— CeCILL v. 2.0, v. 2.1,
91— Mozilla Public Licence (MPL) v. 2,
92— GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3,
93— Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) attiecībā uz darbiem, kas nav programmatūra,
94— Eiropas Savienības sabiedriskā licence (EUPL), 1.1., 1.2. redakcija,
95— Québec Free and Open-Source Licence – Reciprocity (LiLiQ-R) vai Strong Reciprocity (LiLiQ-R+).
96Eiropas Komisija var atjaunināt šo pielikumu, lai iekļautu tajā iepriekš minēto licenču jaunākas redakcijas, nepieņemot jaunu EUPL redakciju, ja ar attiecīgajām licencēm tiek piešķirtas šīs licences 2. pantā noteiktās tiesības un netiek pieļauts, ka pirmkods, uz kuru attiecas licence, nonāk ekskluzīvā piederībā.
97Lai šajā pielikumā varētu izdarīt citas izmaiņas vai papildinājumus, ir jāveido jauna EUPL redakcija. 19.5.2017. L 128/64 Eiropas Savienības Oficiālais Vēstnesis LV
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a656032
--- /dev/null
+++ b/README.md
@@ -0,0 +1,75 @@
1 ES
2====
3
4ES is EMACS but without MACros. This is a shitty little editor, should build with who-knows-which
5zig master version.
6
7This doesn't implement windowing as I don't think I can beat tmux for that. It is expected that
8`C-c` will be used for the tmux prefix key so it is not being assigned to anything in ES.
9
10I have attached a tmux config in `dot-tmux.conf`, symlink `~/.config/tmux/tmux.conf` to it or base
11your own config on it, whatever floats your boat.
12
13Currently you have to guess the keybindings from `src/KeyMap.zig` + tmux, maybe at some point I will
14create a built in help screen.
15
16 Building
17----------
18
19Building this is very simple
20
21```sh
22$ zig build -Doptimize=ReleaseSafe
23```
24
25To run it without installing:
26
27```sh
28$ zig build -Doptimize=ReleaseSafe run
29```
30
31To install it (feel free to replace `~/.local` with any other prefix you want to use).
32
33```sh
34$ zig build -Doptimize=ReleaseSafe -p ~/.local
35```
36
37 Configuration
38---------------
39
40There is a very bare-bones configuration available. An example with default values is installed to
41`$PREFIX/share/arkta/es/es.ini`, copy it to `~/.config/arkta/es/es.ini` (actually any
42`$XDG_CONFIG_HOME`, `$XDG_CONFIG_DIRS`, &c are supported).
43
44<table>
45 <caption>Configuration cheatsheet</caption>
46 <thead>
47 <tr>
48 <th scope="col">Config Key</th>
49 <th scope="col">Meaning</th>
50 </tr>
51 </thead>
52 <tbody>
53 <tr>
54 <td scope="row"><code>hard-tabs</code></td>
55 <td>
56 Whether to insert a literal TAB character when pressing the TAB key or just the equivalent
57 amount of spaces (see <code>tab-stop</code>).
58 </td>
59 </tr>
60 <tr>
61 <td scope="row"><code>line-limit</code></td>
62 <td>Line length past which all characters get a red background.</td>
63 </tr>
64 <tr>
65 <td scope="row"><code>page-overlap</code></td>
66 <td>Amount of lines shared when scrolling up or down with PageDown (C-v) or PageUp (M-v).</td>
67 </tr>
68 <tr>
69 <td scope="row"><code>tab-stop</code></td>
70 <td>How many spaces a single tab equates to.</td>
71 </tr>
72 </tbody>
73</table>
74
75
diff --git a/dot-tmux.conf b/dot-tmux.conf
new file mode 100644
index 0000000..7242b4d
--- /dev/null
+++ b/dot-tmux.conf
@@ -0,0 +1,62 @@
1# Tmux configuration geared for ES usage.
2
3## Server options ##
4set -gs backspace C-?
5set -gs default-terminal tmux-256color
6set -gs editor es
7set -gs escape-time 0
8# SEE: https://github.com/tmux/tmux/wiki/Modifier-Keys#extended-keys
9# TODO: IMPLEMENT THIS http://www.leonerd.org.uk/hacks/fixterms/
10set -gs extended-keys on
11set -gs focus-events on
12set -gs set-clipboard on
13
14## Session options ##
15set -g activity-action other
16set -g base-index 1
17set -g bell-action any
18set -g display-panes-active-colour green
19set -g display-panes-colour blue
20set -g display-time 0
21set -g mouse on
22set -g prefix C-c
23set -g renumber-windows on
24set -g set-titles on
25set -g set-titles-string "#W #{session_alerts}"
26set -g silence-action other
27set -g status-justify absolute-centre
28set -g status-keys emacs
29set -g status-left " tmux[#S] "
30set -g status-position top
31set -g status-right " #H "
32set -g status-style reverse
33set -g visual-activity on
34set -g visual-bell on
35set -g visual-silence on
36
37## Window options ##
38set -gw aggressive-resize on
39set -gw mode-keys emacs
40set -gw monitor-activity off
41set -gw monitor-bell on
42set -gw monitor-silence 0
43set -gw pane-base-index 1
44set -gw pane-border-indicators arrows
45set -gw pane-border-lines single
46set -gw popup-border-lines rounded
47
48## Pane options ##
49set -gp allow-rename on
50set -gp alternate-screen on
51set -gp cursor-style blinking-block
52set -gp remain-on-exit failed
53set -gp scroll-on-clear on
54
55## Key binds ##
56bind C-c send-prefix
57# TODO: keybinds to monitor activity, silence
58
59# A hack to make simple C-x C-c work instead of C-x C-c C-c
60bind -T root C-x send C-x \; switch-client -T cx_table \; set prefix None
61bind -T cx_table Any send \; switch-client -T root \; set prefix C-c
62
diff --git a/src/KeyMap.zig b/src/KeyMap.zig
index 110bc0b..1296f9e 100644
--- a/src/KeyMap.zig
+++ b/src/KeyMap.zig
@@ -94,18 +94,24 @@ pub fn defaultMap(allocator: Allocator) !KeyMap {
94 try map.bind(&.{ Key.meta('g'), Key.char('g') }, Buffer.goToLine); 94 try map.bind(&.{ Key.meta('g'), Key.char('g') }, Buffer.goToLine);
95 95
96 // M-O <*> 96 // M-O <*>
97 // NOTE: These aren't meant to be real shortcuts, some terminal emulators output these for
98 // <home> and <end> and this was the easier way to configure them lol.
97 try map.bind(&.{ Key.meta('O'), Key.char('F') }, Buffer.moveEndOfLine); 99 try map.bind(&.{ Key.meta('O'), Key.char('F') }, Buffer.moveEndOfLine);
98 try map.bind(&.{ Key.meta('O'), Key.char('H') }, Buffer.moveBeginningOfLine); 100 try map.bind(&.{ Key.meta('O'), Key.char('H') }, Buffer.moveBeginningOfLine);
99 101
100 // C-x C-<*> 102 // C-x C-<*>
103 // TODO: C-x C-b should list all buffers instead; list-buffers
101 try map.bind(&.{ Key.ctrl('x'), Key.ctrl('b') }, Editor.switchBuffer); 104 try map.bind(&.{ Key.ctrl('x'), Key.ctrl('b') }, Editor.switchBuffer);
102 try map.bind(&.{ Key.ctrl('x'), Key.ctrl('c') }, Editor.saveBuffersExit); 105 try map.bind(&.{ Key.ctrl('x'), Key.ctrl('c') }, Editor.saveBuffersExit);
103 try map.bind(&.{ Key.ctrl('x'), Key.ctrl('f') }, Editor.openFile); 106 try map.bind(&.{ Key.ctrl('x'), Key.ctrl('f') }, Editor.openFile);
104 try map.bind(&.{ Key.ctrl('x'), Key.ctrl('s') }, Buffer.save); 107 try map.bind(&.{ Key.ctrl('x'), Key.ctrl('s') }, Buffer.save);
108 // TODO: C-x u undo
109 // TODO: C-x C-w write-file
105 110
106 // C-x <*> 111 // C-x <*>
107 try map.bind(&.{ Key.ctrl('x'), Key.char('b') }, Editor.switchBuffer); 112 try map.bind(&.{ Key.ctrl('x'), Key.char('b') }, Editor.switchBuffer);
108 // TODO: C-x h for help 113 // TODO: C-x h for help
114 // TODO: C-x i insert-file
109 try map.bind(&.{ Key.ctrl('x'), Key.char('k') }, Editor.killCurrentBuffer); 115 try map.bind(&.{ Key.ctrl('x'), Key.char('k') }, Editor.killCurrentBuffer);
110 116
111 // M-C-<*> 117 // M-C-<*>
@@ -120,6 +126,9 @@ pub fn defaultMap(allocator: Allocator) !KeyMap {
120 try map.bind(&.{Key.meta(Key.left)}, Buffer.backwardWord); 126 try map.bind(&.{Key.meta(Key.left)}, Buffer.backwardWord);
121 try map.bind(&.{Key.meta(Key.right)}, Buffer.forwardWord); 127 try map.bind(&.{Key.meta(Key.right)}, Buffer.forwardWord);
122 try map.bind(&.{Key.meta(Key.up)}, Buffer.backwardParagraph); 128 try map.bind(&.{Key.meta(Key.up)}, Buffer.backwardParagraph);
129 // TODO: M-% query-replace
130 try map.bind(&.{Key.meta('<')}, Buffer.beginningOfBuffer);
131 try map.bind(&.{Key.meta('>')}, Buffer.endOfBuffer);
123 try map.bind(&.{Key.meta('b')}, Buffer.backwardWord); 132 try map.bind(&.{Key.meta('b')}, Buffer.backwardWord);
124 try map.bind(&.{Key.meta('d')}, Buffer.deleteWord); 133 try map.bind(&.{Key.meta('d')}, Buffer.deleteWord);
125 try map.bind(&.{Key.meta('f')}, Buffer.forwardWord); 134 try map.bind(&.{Key.meta('f')}, Buffer.forwardWord);
@@ -128,9 +137,12 @@ pub fn defaultMap(allocator: Allocator) !KeyMap {
128 // M-O is taken 137 // M-O is taken
129 try map.bind(&.{Key.meta('p')}, Buffer.backwardParagraph); 138 try map.bind(&.{Key.meta('p')}, Buffer.backwardParagraph);
130 try map.bind(&.{Key.meta('v')}, Buffer.pageUp); 139 try map.bind(&.{Key.meta('v')}, Buffer.pageUp);
140 // TODO: M-w copy
131 141
132 // C-<*> 142 // C-<*>
133 try map.bind(&.{Key.ctrl(Key.backspace)}, Buffer.backwardDeleteWord); 143 // NOTE: Don't bind C-<backspace>, that ends up being the same as C-/
144 // TODO: In the future maybe encode <backspace> outside of the character space
145 // try map.bind(&.{Key.ctrl(Key.backspace)}, Buffer.backwardDeleteWord);
134 try map.bind(&.{Key.ctrl(Key.delete)}, Buffer.deleteWord); 146 try map.bind(&.{Key.ctrl(Key.delete)}, Buffer.deleteWord);
135 try map.bind(&.{Key.ctrl(Key.down)}, Buffer.forwardParagraph); 147 try map.bind(&.{Key.ctrl(Key.down)}, Buffer.forwardParagraph);
136 try map.bind(&.{Key.ctrl(Key.end)}, Buffer.endOfBuffer); 148 try map.bind(&.{Key.ctrl(Key.end)}, Buffer.endOfBuffer);
@@ -138,8 +150,11 @@ pub fn defaultMap(allocator: Allocator) !KeyMap {
138 try map.bind(&.{Key.ctrl(Key.left)}, Buffer.backwardWord); 150 try map.bind(&.{Key.ctrl(Key.left)}, Buffer.backwardWord);
139 try map.bind(&.{Key.ctrl(Key.right)}, Buffer.forwardWord); 151 try map.bind(&.{Key.ctrl(Key.right)}, Buffer.forwardWord);
140 try map.bind(&.{Key.ctrl(Key.up)}, Buffer.backwardParagraph); 152 try map.bind(&.{Key.ctrl(Key.up)}, Buffer.backwardParagraph);
153 // TODO: C-@ | C-SPC set-mark
154 // TODO: C-_ | C-/ undo
141 try map.bind(&.{Key.ctrl('a')}, Buffer.moveBeginningOfLine); 155 try map.bind(&.{Key.ctrl('a')}, Buffer.moveBeginningOfLine);
142 try map.bind(&.{Key.ctrl('b')}, Buffer.backwardChar); 156 try map.bind(&.{Key.ctrl('b')}, Buffer.backwardChar);
157 // C-c is reserved to be tmux's prefix char
143 try map.bind(&.{Key.ctrl('d')}, Buffer.deleteChar); 158 try map.bind(&.{Key.ctrl('d')}, Buffer.deleteChar);
144 try map.bind(&.{Key.ctrl('e')}, Buffer.moveEndOfLine); 159 try map.bind(&.{Key.ctrl('e')}, Buffer.moveEndOfLine);
145 try map.bind(&.{Key.ctrl('f')}, Buffer.forwardChar); 160 try map.bind(&.{Key.ctrl('f')}, Buffer.forwardChar);
@@ -151,10 +166,13 @@ pub fn defaultMap(allocator: Allocator) !KeyMap {
151 try map.bind(&.{Key.ctrl('m')}, Buffer.insertNewline); // carriage return 166 try map.bind(&.{Key.ctrl('m')}, Buffer.insertNewline); // carriage return
152 try map.bind(&.{Key.ctrl('n')}, Buffer.nextLine); 167 try map.bind(&.{Key.ctrl('n')}, Buffer.nextLine);
153 try map.bind(&.{Key.ctrl('p')}, Buffer.previousLine); 168 try map.bind(&.{Key.ctrl('p')}, Buffer.previousLine);
169 // TODO: C-r backward-search
154 try map.bind(&.{Key.ctrl('s')}, es.search); 170 try map.bind(&.{Key.ctrl('s')}, es.search);
155 // TODO: C-q quotedInsert 171 // TODO: C-q quotedInsert
156 try map.bind(&.{Key.ctrl('v')}, Buffer.pageDown); 172 try map.bind(&.{Key.ctrl('v')}, Buffer.pageDown);
173 // TODO: C-w cut
157 // C-x is taken 174 // C-x is taken
175 // TODO: C-y paste
158 176
159 // <*> 177 // <*>
160 try map.bind(&.{Key.backspace}, Buffer.backwardDeleteChar); 178 try map.bind(&.{Key.backspace}, Buffer.backwardDeleteChar);