├── LICENSE ├── README.md ├── Splash.org ├── Welcome.org ├── data ├── Article.org ├── Calculus.org ├── Example.py ├── Gaussian-Integral.org ├── Languages.org ├── file-1.txt ├── file-2.txt └── logo.svg ├── elegance.el ├── elegant-dark-theme.el ├── elegant-light-theme.el ├── elegant.el ├── sanity.el └── screenshots ├── screenshot-0.png ├── screenshot-1.png ├── screenshot-10.png ├── screenshot-11.png ├── screenshot-2.png ├── screenshot-3.png ├── screenshot-4.png ├── screenshot-5.png ├── screenshot-6.png ├── screenshot-7.png ├── screenshot-8.png └── screenshot-9.png /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # A very minimal but elegant emacs (I think) 3 | 4 | The goal is to have a minimal consistent vanilla emacs (i.e. no 5 | package) and yet elegant. 6 | The defaul font is [Roboto Mono](https://fonts.google.com/specimen/Roboto+Mono) 7 | and optionally, you'll also need the [Fira Code](https://fonts.google.com/specimen/Fira+Code) font. 8 | 9 | Elegant Emacs is mostly a prototype or proof of concept. While it is 10 | perfectly usable, you might want to have a look a [GNU Emacs / N Λ N 11 | O](https://github.com/rougier/nano-emacs) which is more mature and 12 | maintained. 13 | 14 | 15 | **Usage**: `emacs -q -l sanity.el -l elegance.el Splash.org &` 16 | 17 | 18 | -------------------------------------------------------------------------------- /Splash.org: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | [[file:data/logo.svg]] 12 | [[https://www.gnu.org][ www.gnu.org ]] 13 | *GNU Emacs* version 26.3 14 | Type[[file:Welcome.org][ Ctrl-h ]]for help 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | /GNU Emacs comes with ABSOLUTELY NO WARRANTY/ 26 | /Copyright (C) 2019 Free Software Foundation, Inc./ 27 | -------------------------------------------------------------------------------- /Welcome.org: -------------------------------------------------------------------------------- 1 | 2 | [[file:data/logo.svg]] 3 | 4 | *Welcome to Emacs* /GNU Emacs version 26.3/ 5 | 6 | [[https://www.gnu.org/software/emacs][ Emacs ]]is an extensible, customizable, free/libre text editor — and 7 | more. At its core is an interpreter for Emacs Lisp, a dialect of the 8 | Lisp programming language with extensions to support text editing. 9 | 10 | *Quick help* 11 | 12 | Learn basic keystroke commands ............................[[elisp:help-with-tutorial][ Tutorial ]] 13 | See an overview of Emacs features at[[https://gnu.org][ gnu.org ]] ..........[[https://www.gnu.org/software/emacs/tour][ Guided Tour ]] 14 | Get help from Emacs users .............................[[https://lists.gnu.org/mailman/listinfo/help-gnu-emacs][ Mailing list ]] 15 | Read the extensive documentation .....................[[info:emacs][ Documentation ]] 16 | 17 | *Quick commands* /C: Control, M: alt or ⌘/ 18 | 19 | Save ............... =[C-x]= =[C-s]= Help ..................... =[C-h]= 20 | Save as ............ =[C-x]= =[C-w]= Cancel ................... =[C-g]= 21 | Open a new file .... =[C-x]= =[C-f]= Undo ..................... =[C-/]= 22 | Open recent ........ =[C-x]= =[C-r]= Close buffer ......... =[C-x]= =[k]= 23 | Browse directory ..... =[C-x]= =[d]= Quit ............... =[C-x]= =[C-c]= 24 | 25 | 26 | /[[elisp:(scroll-up%2027)][1/2]]/ 27 | 28 | 29 | *Other commands* /[[info:emacs#Key%2520Bindings][ Other key bindings ]]/ 30 | 31 | Search ................... =[C-s]= Go to line ......... =[M-g]= =[M-g]= 32 | Replace .................. =[M-%]= Execute .................. =[M-x]= 33 | 34 | Start of buffer .......... =[M-<]= End of buffer ............ =[M->]= 35 | Start of line ............ =[C-a]= End of line .............. =[C-e]= 36 | 37 | Mark ................... =[C-spc]= Copy from mark............ =[M-w]= 38 | Kill from mark............ =[C-w]= Kill from cursor.......... =[C-k]= 39 | Paste .................... =[C-y]= Paste older ........ =[C-y]= =[M-y]= 40 | 41 | *Quick preferences* /[[elisp:(customize-group%20'emacs)][ Full preferences ]]/ 42 | 43 | [[elisp:menu-set-font][ Select ]]default font [[elisp:display-line-numbers-mode][ Toggle ]]line numbers 44 | [[elisp:tool-bar-mode][ Toggle ]]tool bar [[elisp:toggle-truncate-lines][ Toggle ]]line wrap 45 | [[elisp:scroll-bar-mode][ Toggle ]]scroll bar [[elisp:blink-cursor-mode][ Toggle ]]blinking cursor 46 | [[elisp:menu-bar-mode][ Toggle ]]menu bar Select cursor:[[elisp:(set-default%20'cursor-type%20%20'(hbar%20.%202))][ HBar ]]|[[elisp:(set-default%20'cursor-type%20%20'(bar%20.%202))][ VBar ]]|[[elisp:(set-default%20'cursor-type%20'box)][ Box ]] 47 | 48 | *Theme selection* /[[elisp:(customize-themes)][ Theme customization ]]/ 49 | 50 | [[elisp:(load-theme%20'adwaita)][ adwaita ]] [[elisp:(load-theme%20'deeper-blue)][ deeper-blue ]] [[elisp:(load-theme%20'dichromacy)][ dichromacy ]] [[elisp:(load-theme%20'leuven)][ leuven ]] [[elisp:(load-theme%20'light-blue)][ light-blue ]] 51 | [[elisp:(load-theme%20'manoj-dark)][ manoj-dark ]] [[elisp:(load-theme%20'misterioso)][ misterioso ]] [[elisp:(load-theme%20'tango)][ tango ]] [[elisp:(load-theme%20'tango-dark)][ tango-dark ]] [[elisp:(load-theme%20'tsdh-dark)][ tsdh-dark ]] 52 | [[elisp:(load-theme%20'tsdh-light)][ tsdh-light]] [[elisp:(load-theme%20'wheatgrass)][ wheatgrass ]] [[elisp:(load-theme%20'whiteboard)][ whiteboard ]] [[elisp:(load-theme%20'wombat)][ wombat ]] 53 | 54 | *Install some packages* /[[elisp:(package-list-packages)][ Packages list ]]/ 55 | 56 | [[elisp:(package-install%20'magit)][ magit ]]................................. A Git porcelain inside Emacs 57 | [[elisp:(package-install%20'projectile)][ projectile ]]............ Manage and navigate projects in Emacs easily 58 | [[elisp:(package%20install%20'helm)][ helm ]].................. An Emacs incremental and narrowing framework 59 | [[elisp:(package-install%20'company)][ company ]].......................... Modular text completion framework 60 | [[elisp:(package-install%20'markdown-mode)][ markdown-mode ]]............... Major mode for Markdown-formatted text 61 | [[elisp:(package-install%20'popup)][ popup ]].................................. Visual popup user interface 62 | 63 | /[[elisp:(scroll-down%2028)][2/2]]/ 64 | -------------------------------------------------------------------------------- /data/Article.org: -------------------------------------------------------------------------------- 1 | /Proc. ACM Program. Lang., Vol. 4, No. HOPL, Article 74. Publication date: June 2020./ 2 | 3 | =Evolution of Emacs Lisp= 4 | *STEFAN MONNIER*, Université de Montréal, Canada 5 | *MICHAEL SPERBER*,Active Group GmbH, German 6 | Shepherd: Brent Hailpern, IBM Research, USA 7 | 8 | 9 | While Emacs proponents largely agree that it is Fulfilling this requirement in a more static 10 | the world’s greatest text editor, it is almost as language would have been difficult at best. One of 11 | much a Lisp machine disguised as an Lisp’s chief characteristics is its malleability 12 | editor. Indeed, one of its chief appeals is that through its uniform syntax and the use of 13 | it is programmable via its own programming macros. This has allowed the language to evolve 14 | language. Emacs Lisp is a Lisp in the classic much more rapidly and substantively than the 15 | tradition. In this article, we present the evolution of its core would suggest, by letting 16 | history of this language over its more than 30 Emacs packages provide new surface syntax 17 | years of evolution. Its core has remained alongside new functions. In particular, Emacs 18 | remarkably stable since its inception in 1985, in Lisp can be customized to look much like Common 19 | large part to preserve compatibility with the many Lisp, and additional packages provide 20 | third-party packages providing a multitude of multiple-dispatch object systems, legible regular 21 | extensions. Still, Emacs Lisp has evolved and expressions, programmable pattern-matching 22 | continues to do so. Important aspects of Emacs constructs, generalized variables, and 23 | Lisp have been shaped by concrete requirements of more. Still, the core has also evolved, albeit 24 | the editor it supports as well as implementation slowly. Most notably, it acquired support for 25 | constraints. These requirements led to the choice lexical scoping.The timeline of Emacs Lisp 26 | of a Lisp dialect as Emacs’s language in the first development is closely tied to the projects and 27 | place, specifically its simplicity and dynamic people who have shaped itover the years: We 28 | nature: Loading additional Emacs packages or document Emacs Lisp history through its 29 | changing the ones in place occurs frequently, and predecessors, Mocklisp and MacLisp, its early 30 | having to restart the editor in order to development up to the “Emacs schism” and the fork 31 | re-compile or re-link the code would be of Lucid Emacs, the development of XEmacs, and the 32 | unacceptable. subsequent rennaissance of Emacs development. 33 | 34 | CCS Concepts: • *Social and professional topics* → History of programming languages. 35 | Additional Key Words and Phrases: History of programming languages, Lisp, Emacs Lisp 36 | 37 | *ACM Reference Format*: 38 | Stefan Monnier and Michael Sperber. 2020. Evolution of Emacs Lisp.Proc. ACM Program. Lang.4, HOPL, 39 | Article 74 (June 2020), 55 pages. https://doi.org/10.1145/3386324 40 | 41 | ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 42 | 43 | *Authors’ addresses*: Stefan Monnier, Université de Montréal, C.P. 6128, succ. centre-ville, Montréal, 44 | QC, H3C 3J7, Canada, [[mailto:monnier@iro.umontreal.ca][monnier@iro.umontreal.ca]]; Michael Sperber, Active Group GmbH, Hechinger Str.12/1, 45 | Tübingen, Germany, [[mailto:sperber@deinprogramm.de][sperber@deinprogramm.de]]. 46 | 47 | ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 48 | 49 | Permission to make digital or hard copies of part or all of this work for personal or classroom use is 50 | granted without fee provided that copies are not made or distributed for profit or commercial advantage 51 | and that copies bear this notice and the full citation on the first page. Copyrights for third-party 52 | components of this work must be honored. For all other uses,contact the owner/author(s). 53 | 54 | (c) 2020 Copyright held by the owner/author(s).2475-1421/2020/6-ART74 https://doi.org/10.1145/3386324 55 | 56 | 57 | -------------------------------------------------------------------------------- /data/Calculus.org: -------------------------------------------------------------------------------- 1 | *CHAPTER I.* /TO DELIVER YOU FROM THE PRELIMINARY TERRORS/. 2 | 3 | The preliminary terror, which chokes off most fifth-form boys from 4 | even attempting to learn how to calculate, can be abolished once for 5 | all by simply stating what is the meaning–in common-sense terms–of the 6 | two principal symbols that are used in calculating. These dreadful 7 | symbols are: 8 | 9 | (1) *d* which merely means /“a little bit of.”/ 10 | 11 | Thus *dx* means a little bit of *x*; or *du* means a little bit of *u*. 12 | Ordinary mathematicians think it more polite to say /“an element of,”/ 13 | instead of /“a little bit of.”/ Just as you please. But you will find 14 | that these little bits (or elements) may be considered to be 15 | indefinitely small. 16 | 17 | (2) *∫* which is merely a long *S*, and may be called (if you like) 18 | /“the sum of.”/ 19 | 20 | Thus *∫dx* means the sum of all the little bits of *x*; or *∫dt* means the 21 | sum of all the little bits of *t*. Ordinary mathematicians call this 22 | symbol /“the integral of.”/ Now any fool can see that if *x* is considered 23 | as made up of a lot of little bits, each of which is called *dx*, if you 24 | add them all up together you get the sum of all the *dx*'s, (which is 25 | the same thing as the whole of *x*). The word /“integral”/ simply means 26 | /“the whole.”/ If you think of the duration of time for one hour, you 27 | may (if you like) think of it as cut up into 3600 little bits called 28 | seconds. The whole of the 3600 little bits added up together make one 29 | hour. 30 | 31 | When you see an expression that begins with this terrifying symbol, 32 | you will henceforth know that it is put there merely to give you 33 | instructions that you are now to perform the operation (if you can) of 34 | totalling up all the little bits that are indicated by the symbols 35 | that follow. That's all. 36 | 37 | /Calculus Made Easy by Silvanus P. Thompson/ 38 | /What one fool can do, another can/. 39 | -------------------------------------------------------------------------------- /data/Example.py: -------------------------------------------------------------------------------- 1 | # --------------------------------------------------------------------- 2 | # Copyright 2020 Nicolas P. Rougier 3 | # Released under the BSD License 4 | # --------------------------------------------------------------------- 5 | # Note : Experimental, use at your own risk! 6 | 7 | def answer(None): 8 | """ Compute answer to the ultimate question of 9 | life, the universe and everything. """ 10 | return 42 11 | 12 | if __name__ == '__main__': 13 | import this 14 | print(answer) 15 | -------------------------------------------------------------------------------- /data/Gaussian-Integral.org: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------------------------- 2 | #+TITLE: Gaussian integral 3 | #+STARTUP: showall showstars latexpreview indent 4 | # -------------------------------------------------------------------- 5 | 6 | * Introduction 7 | 8 | The /Gaussian integral/, also known as the /Euler–Poisson integral/, is 9 | the integral of the Gaussian function $f(x) = \exp^{-x^2}$ over the 10 | entire real line. Named after the German mathematician *Carl Friedrich 11 | Gauss*, the integral is: 12 | 13 | \[ 14 | \int_{-\infty}^{+\infty} e^{-x^2} dx = \sqrt{\pi} 15 | \] 16 | 17 | Although no elementary function exists for the error function, as can 18 | be proven by the Risch algorithm, the Gaussian integral can be solved 19 | analytically through the methods of multivariable calculus. That is, 20 | there is no elementary indefinite integral for 21 | 22 | \[ 23 | \int e^{-x^2} dx = \sqrt{\pi} 24 | \] 25 | 26 | but the definite integral can be evaluated. The definite integral of 27 | an arbitrary Gaussian function is: 28 | 29 | \[ 30 | \int_{-\infty}^{+\infty} e^{-a(x+b)^2} dx = \sqrt{\frac{\pi}{a}} 31 | \] 32 | 33 | * Computation by polar coordinates 34 | 35 | A standard way to compute the Gaussian integral, the idea of which 36 | goes back to Poisson, is to make use of the property that: 37 | 38 | \[ 39 | \left(\int_{-\infty}^{\infty} e^{-x^2}\,dx\right)^2 = \int_{-\infty}^{\infty} e^{-x^2}\,dx \int_{-\infty}^{\infty} e^{-y^2}\,dy = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} e^{-(x^2+y^2)}\, dx\,dy 40 | \] 41 | -------------------------------------------------------------------------------- /data/Languages.org: -------------------------------------------------------------------------------- 1 | 2 | "*I can eat glass"* (http://www.columbia.edu/~fdc/utf8/index.html) 3 | ---------------------------------------------------------------- 4 | 5 | *English*: I can eat glass and it doesn't hurt me. 6 | *English (IPA)*: [aɪ kæn iːt glɑːs ænd ɪt dɐz nɒt hɜːt miː] 7 | *English (Braille)*: ⠊⠀⠉⠁⠝⠀⠑⠁⠞⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑ 8 | *French*: Je peux manger du verre, ça ne me fait pas mal. 9 | *Sanskrit*: काचं शक्नोम्यत्तुम् । नोपहिनस्ति माम् ॥ 10 | *Greek*: Μπορώ να φάω σπασμένα γυαλιά χωρίς να πάθω τίποτα. 11 | *Íslenska / Icelandic*: Ég get etið gler án þess að meiða mig. 12 | *Polish*: Mogę jeść szkło, i mi nie szkodzi. 13 | *Romanian*: Pot să mănânc sticlă și ea nu mă rănește. 14 | *Ukrainian*: Я можу їсти шкло, й воно мені не пошкодить. 15 | *Armenian*: Կրնամ ապակի ուտել և ինծի անհանգիստ չըներ։ 16 | *Georgian*: მინას ვჭამ და არა მტკივა. 17 | *Hindi*: मैं काँच खा सकता हूँ, मुझे उस से कोई पीडा नहीं होती. 18 | *Hebrew*: אני יכול לאכול זכוכית וזה לא מזיק לי. 19 | *Yiddish*: איך קען עסן גלאָז און עס טוט מיר נישט װײ. 20 | *Arabic*: أنا قادر على أكل الزجاج و هذا لا يؤلمني. 21 | *Japanese*: 私はガラスを食べられます。それは私を傷つけません。 22 | *Thai*: ฉันกินกระจกได้ แต่มันไม่ทำให้ฉันเจ็บ 23 | *Turkish (Ottoman)*: جام ييه بلورم بڭا ضررى طوقونمز 24 | *Bangla / Bengali*: আমি কাঁচ খেতে পারি, তাতে আমার কোনো ক্ষতি হয় না। 25 | *Marathi*: मी काच खाऊ शकतो, मला ते दुखत नाही. 26 | *Kannada*: ನನಗೆ ಹಾನಿ ಆಗದೆ, ನಾನು ಗಜನ್ನು ತಿನಬಹುದು 27 | *Hindi*: मैं काँच खा सकता हूँ और मुझे उससे कोई चोट नहीं पहुंचती. 28 | *Tamil*: நான் கண்ணாடி சாப்பிடுவேன், அதனால் எனக்கு ஒரு கேடும் வராது. 29 | *Telugu*: నేను గాజు తినగలను మరియు అలా చేసినా నాకు ఏమి ఇబ్బంది లేదు 30 | *Sinhalese*: මට වීදුරු කෑමට හැකියි. එයින් මට කිසි හානියක් සිදු නොවේ. 31 | *Urdu*: میں کانچ کھا سکتا ہوں اور مجھے تکلیف نہیں ہوتی ۔ 32 | *Pashto*: زه شيشه خوړلې شم، هغه ما نه خوږوي 33 | *Farsi / Persian*: .من می توانم بدونِ احساس درد شيشه بخورم 34 | *Chinese*: 我能吞下玻璃而不伤身体。 35 | *Old Norse (Runes)*: ᛖᚴ ᚷᛖᛏ ᛖᛏᛁ ᚧ ᚷᛚᛖᚱ ᛘᚾ ᚦᛖᛋᛋ ᚨᚧ ᚡᛖ ᚱᚧᚨ ᛋᚨᚱ 36 | -------------------------------------------------------------------------------- /data/file-1.txt: -------------------------------------------------------------------------------- 1 | 2 | I need to buy apples. 3 | I need to run the laundry. 4 | I need to wash the dog. 5 | I need to get the car detailed. 6 | -------------------------------------------------------------------------------- /data/file-2.txt: -------------------------------------------------------------------------------- 1 | 2 | I need to buy apples. 3 | I need to do the laundry. 4 | I need to wash the car. 5 | I need to get the dog detailed. 6 | -------------------------------------------------------------------------------- /data/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 18 | 20 | 21 | 23 | image/svg+xml 24 | 26 | 28 | 29 | 30 | Dmitry Dzhus 31 | 32 | 33 | 2007-07 34 | Emacs logo 35 | 36 | 37 | emacs 38 | logo 39 | 40 | 41 | Emacs logo by Luis Fernandes was created in 2001. This is an SVG version created by hand from scratch in Inkscape. 42 | en 43 | 44 | 46 | 48 | 50 | 52 | 54 | 56 | 58 | 59 | 60 | 61 | 63 | 85 | 90 | 95 | 98 | 103 | 108 | 113 | 116 | 121 | 126 | 127 | 132 | 133 | 136 | 141 | 146 | 151 | 156 | 161 | 162 | 166 | 167 | -------------------------------------------------------------------------------- /elegance.el: -------------------------------------------------------------------------------- 1 | ;; ------------------------------------------------------------------- 2 | ;; A very minimal but elegant and consistent theme 3 | ;; Copyright 2020 Nicolas P. Rougier 4 | ;; ------------------------------------------------------------------- 5 | ;; This file is not part of GNU Emacs. 6 | ;; 7 | ;; This program is free software: you can redistribute it and/or 8 | ;; modify it under the terms of the GNU General Public License as 9 | ;; published by the Free Software Foundation, either version 3 of the 10 | ;; License, or (at your option) any later version. 11 | ;; 12 | ;; This program is distributed in the hope that it will be useful, but 13 | ;; WITHOUT ANY WARRANTY; without even the implied warranty of 14 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | ;; General Public License for more details. 16 | ;; 17 | ;; You should have received a copy of the GNU General Public License 18 | ;; along with this program. If not, see 19 | ;; ------------------------------------------------------------------- 20 | 21 | 22 | ;; Only necessary for the splash screen mockup 23 | ;; ------------------------------------------------------------------- 24 | (with-eval-after-load 'org 25 | (setq org-display-inline-images t) 26 | (setq org-redisplay-inline-images t) 27 | (setq org-startup-with-inline-images "inlineimages") 28 | (setq org-hide-emphasis-markers t) 29 | (setq org-confirm-elisp-link-function nil) 30 | (setq org-link-frame-setup '((file . find-file)))) 31 | ;; ------------------------------------------------------------------- 32 | 33 | 34 | ;; Font and frame size 35 | (set-face-font 'default "Roboto Mono Light 14") 36 | (setq default-frame-alist 37 | (append (list '(width . 72) '(height . 40) 38 | '(vertical-scroll-bars . nil) 39 | '(internal-border-width . 24) 40 | '(font . "Roboto Mono Light 14")))) 41 | (set-frame-parameter (selected-frame) 42 | 'internal-border-width 24) 43 | 44 | ;; Line spacing, can be 0 for code and 1 or 2 for text 45 | (setq-default line-spacing 0) 46 | 47 | ;; Underline line at descent position, not baseline position 48 | (setq x-underline-at-descent-line t) 49 | 50 | ;; No ugly button for checkboxes 51 | (setq widget-image-enable nil) 52 | 53 | ;; Line cursor and no blink 54 | (set-default 'cursor-type '(bar . 1)) 55 | (blink-cursor-mode 0) 56 | 57 | ;; No sound 58 | (setq visible-bell t) 59 | (setq ring-bell-function 'ignore) 60 | 61 | ;; No Tooltips 62 | (tooltip-mode 0) 63 | 64 | ;; Paren mode is part of the theme 65 | (show-paren-mode t) 66 | 67 | ;; No fringe but nice glyphs for truncated and wrapped lines 68 | (fringe-mode '(0 . 0)) 69 | (defface fallback '((t :family "Fira Code Light" 70 | :inherit 'face-faded)) "Fallback") 71 | (set-display-table-slot standard-display-table 'truncation 72 | (make-glyph-code ?… 'fallback)) 73 | (set-display-table-slot standard-display-table 'wrap 74 | (make-glyph-code ?↩ 'fallback)) 75 | (set-display-table-slot standard-display-table 'selective-display 76 | (string-to-vector " …")) 77 | 78 | 79 | ;; When we set a face, we take care of removing any previous settings 80 | (defun set-face (face style) 81 | "Reset a face and make it inherit style." 82 | (set-face-attribute face nil 83 | :foreground 'unspecified :background 'unspecified 84 | :family 'unspecified :slant 'unspecified 85 | :weight 'unspecified :height 'unspecified 86 | :underline 'unspecified :overline 'unspecified 87 | :box 'unspecified :inherit style)) 88 | 89 | ;; A theme is fully defined by these six faces 90 | (defgroup elegance nil 91 | "Faces for the elegance theme" 92 | :prefix "face-") 93 | 94 | ;; Do not show prefix when displaying the elegance group 95 | (setq custom-unlispify-remove-prefixes t) 96 | 97 | (defface face-critical nil 98 | "Critical face is for information that requires immediate action. 99 | It should be of high constrast when compared to other faces. This 100 | can be realized (for example) by setting an intense background 101 | color, typically a shade of red. It must be used scarcely." 102 | :group 'elegance) 103 | 104 | (defface face-popout nil 105 | "Popout face is used for information that needs attention. 106 | To achieve such effect, the hue of the face has to be 107 | sufficiently different from other faces such that it attracts 108 | attention through the popout effect." 109 | :group 'elegance) 110 | 111 | (defface face-strong nil 112 | "Strong face is used for information of a structural nature. 113 | It has to be the same color as the default color and only the 114 | weight differs by one level (e.g., light/regular or 115 | regular/bold). IT is generally used for titles, keywords, 116 | directory, etc." 117 | :group 'elegance) 118 | 119 | (defface face-salient nil 120 | "Salient face is used for information that are important. 121 | To suggest the information is of the same nature but important, 122 | the face uses a different hue with approximately the same 123 | intensity as the default face. This is typically used for links." 124 | 125 | :group 'elegance) 126 | 127 | (defface face-faded nil 128 | "Faded face is for information that are less important. 129 | It is made by using the same hue as the default but with a lesser 130 | intensity than the default. It can be used for comments, 131 | secondary information and also replace italic (which is generally 132 | abused anyway)." 133 | :group 'elegance) 134 | 135 | (defface face-subtle nil 136 | "Subtle face is used to suggest a physical area on the screen. 137 | It is important to not disturb too strongly the reading of 138 | information and this can be made by setting a very light 139 | background color that is barely perceptible." 140 | :group 'elegance) 141 | 142 | 143 | ;; Mode line (this might be slow because of the "☰" that requires substitution) 144 | ;; This line below makes things a bit faster 145 | (set-fontset-font "fontset-default" '(#x2600 . #x26ff) "Fira Code 16") 146 | 147 | (define-key mode-line-major-mode-keymap [header-line] 148 | (lookup-key mode-line-major-mode-keymap [mode-line])) 149 | 150 | (defun mode-line-render (left right) 151 | (let* ((available-width (- (window-width) (length left) ))) 152 | (format (format "%%s %%%ds" available-width) left right))) 153 | (setq-default mode-line-format 154 | '((:eval 155 | (mode-line-render 156 | (format-mode-line (list 157 | (propertize "☰" 'face `(:inherit mode-line-buffer-id) 158 | 'help-echo "Mode(s) menu" 159 | 'mouse-face 'mode-line-highlight 160 | 'local-map mode-line-major-mode-keymap) 161 | " %b " 162 | (if (and buffer-file-name (buffer-modified-p)) 163 | (propertize "(modified)" 'face `(:inherit face-faded))))) 164 | (format-mode-line 165 | (propertize "%4l:%2c " 'face `(:inherit face-faded))))))) 166 | 167 | 168 | ;; Comment if you want to keep the modeline at the bottom 169 | (setq-default header-line-format mode-line-format) 170 | (setq-default mode-line-format'("")) 171 | 172 | 173 | ;; Vertical window divider 174 | (setq window-divider-default-right-width 3) 175 | (setq window-divider-default-places 'right-only) 176 | (window-divider-mode) 177 | 178 | ;; Modeline 179 | (defun set-modeline-faces () 180 | 181 | ;; Mode line at top 182 | (set-face 'header-line 'face-strong) 183 | (set-face-attribute 'header-line nil 184 | :underline (face-foreground 'default)) 185 | (set-face-attribute 'mode-line nil 186 | :height 10 187 | :underline (face-foreground 'default) 188 | :overline nil 189 | :box nil 190 | :foreground (face-background 'default) 191 | :background (face-background 'default)) 192 | (set-face 'mode-line-inactive 'mode-line) 193 | 194 | ;; Mode line at bottom 195 | ;; (set-face 'header-line 'face-strong) 196 | ;; (set-face-attribute 'mode-line nil 197 | ;; :height 1.0 198 | ;; :overline (face-background 'default) 199 | ;; :underline nil 200 | ;; :foreground (face-foreground 'default) 201 | ;; :background (face-background 'face-subtle) 202 | ;; :box `(:line-width 2 203 | ;; :color ,(face-background 'face-subtle) 204 | ;; :style nil)) 205 | ;; (set-face 'mode-line-highlight '(face-popout mode-line)) 206 | ;; (set-face 'mode-line-emphasis 'face-strong) 207 | ;; (set-face-attribute 'mode-line-buffer-id nil :weight 'regular) 208 | ;; (set-face-attribute 'mode-line-inactive nil 209 | ;; :height 1.0 210 | ;; :overline (face-background 'default) 211 | ;; :underline nil 212 | ;; :foreground (face-foreground 'face-faded) 213 | ;; :background (face-background 'face-subtle) 214 | ;; :box `(:line-width 2 215 | ;; :color ,(face-background 'face-subtle) 216 | ;; :style nil)) 217 | 218 | 219 | (set-face-attribute 'cursor nil 220 | :background (face-foreground 'default)) 221 | (set-face-attribute 'window-divider nil 222 | :foreground (face-background 'mode-line)) 223 | (set-face-attribute 'window-divider-first-pixel nil 224 | :foreground (face-background 'default)) 225 | (set-face-attribute 'window-divider-last-pixel nil 226 | :foreground (face-background 'default)) 227 | ) 228 | 229 | ;; Buttons 230 | (defun set-button-faces () 231 | (set-face-attribute 'custom-button nil 232 | :foreground (face-foreground 'face-faded) 233 | :background (face-background 'face-subtle) 234 | :box `(:line-width 1 235 | :color ,(face-foreground 'face-faded) 236 | :style nil)) 237 | (set-face-attribute 'custom-button-mouse nil 238 | :foreground (face-foreground 'default) 239 | ;; :background (face-foreground 'face-faded) 240 | :inherit 'custom-button 241 | :box `(:line-width 1 242 | :color ,(face-foreground 'face-subtle) 243 | :style nil)) 244 | (set-face-attribute 'custom-button-pressed nil 245 | :foreground (face-background 'default) 246 | :background (face-foreground 'face-salient) 247 | :inherit 'face-salient 248 | :box `(:line-width 1 249 | :color ,(face-foreground 'face-salient) 250 | :style nil) 251 | :inverse-video nil)) 252 | 253 | ;; Light theme 254 | (defun elegance-light () 255 | (setq frame-background-mode 'light) 256 | (set-background-color "#ffffff") 257 | (set-foreground-color "#333333") 258 | (set-face-attribute 'default nil 259 | :foreground (face-foreground 'default) 260 | :background (face-background 'default)) 261 | (set-face-attribute 'face-critical nil :foreground "#ffffff" 262 | :background "#ff6347") 263 | (set-face-attribute 'face-popout nil :foreground "#ffa07a") 264 | (set-face-attribute 'face-strong nil :foreground "#333333" 265 | :weight 'regular) 266 | (set-face-attribute 'face-salient nil :foreground "#00008b" 267 | :weight 'light) 268 | (set-face-attribute 'face-faded nil :foreground "#999999" 269 | :weight 'light) 270 | (set-face-attribute 'face-subtle nil :background "#f0f0f0") 271 | 272 | (set-modeline-faces) 273 | 274 | (with-eval-after-load 'cus-edit (set-button-faces))) 275 | 276 | ;; Dark theme 277 | (defun elegance-dark () 278 | (setq frame-background-mode 'dark) 279 | (set-background-color "#3f3f3f") 280 | (set-foreground-color "#dcdccc") 281 | (set-face-attribute 'default nil 282 | :foreground (face-foreground 'default) 283 | :background (face-background 'default)) 284 | (set-face-attribute 'face-critical nil :foreground "#385f38" 285 | :background "#f8f893") 286 | (set-face-attribute 'face-popout nil :foreground "#f0dfaf") 287 | (set-face-attribute 'face-strong nil :foreground "#dcdccc" 288 | :weight 'regular) 289 | (set-face-attribute 'face-salient nil :foreground "#dca3a3" 290 | :weight 'light) 291 | (set-face-attribute 'face-faded nil :foreground "#777767" 292 | :weight 'light) 293 | (set-face-attribute 'face-subtle nil :background "#4f4f4f") 294 | (set-modeline-faces) 295 | (with-eval-after-load 'cus-edit (set-button-faces))) 296 | 297 | ;; Set theme 298 | (elegance-dark) 299 | 300 | ;; Structural 301 | (set-face 'bold 'face-strong) 302 | (set-face 'italic 'face-faded) 303 | (set-face 'bold-italic 'face-strong) 304 | (set-face 'region 'face-subtle) 305 | (set-face 'highlight 'face-subtle) 306 | (set-face 'fixed-pitch 'default) 307 | (set-face 'fixed-pitch-serif 'default) 308 | (set-face 'variable-pitch 'default) 309 | (set-face 'cursor 'default) 310 | 311 | ;; Semantic 312 | (set-face 'shadow 'face-faded) 313 | (set-face 'success 'face-salient) 314 | (set-face 'warning 'face-popout) 315 | (set-face 'error 'face-critical) 316 | 317 | ;; General 318 | (set-face 'buffer-menu-buffer 'face-strong) 319 | (set-face 'minibuffer-prompt 'face-strong) 320 | (set-face 'link 'face-salient) 321 | (set-face 'fringe 'face-faded) 322 | (set-face 'isearch 'face-strong) 323 | (set-face 'isearch-fail 'face-faded) 324 | (set-face 'lazy-highlight 'face-subtle) 325 | (set-face 'trailing-whitespace 'face-subtle) 326 | (set-face 'show-paren-match 'face-popout) 327 | (set-face 'show-paren-mismatch 'face-normal) 328 | (set-face-attribute 'tooltip nil :height 0.85) 329 | 330 | ;; Programmation mode 331 | (set-face 'font-lock-comment-face 'face-faded) 332 | (set-face 'font-lock-doc-face 'face-faded) 333 | (set-face 'font-lock-string-face 'face-popout) 334 | (set-face 'font-lock-constant-face 'face-salient) 335 | (set-face 'font-lock-warning-face 'face-popout) 336 | (set-face 'font-lock-function-name-face 'face-strong) 337 | (set-face 'font-lock-variable-name-face 'face-strong) 338 | (set-face 'font-lock-builtin-face 'face-salient) 339 | (set-face 'font-lock-type-face 'face-salient) 340 | (set-face 'font-lock-keyword-face 'face-salient) 341 | 342 | ;; Documentation 343 | (with-eval-after-load 'info 344 | (set-face 'info-menu-header 'face-strong) 345 | (set-face 'info-header-node 'face-normal) 346 | (set-face 'Info-quoted 'face-faded) 347 | (set-face 'info-title-1 'face-strong) 348 | (set-face 'info-title-2 'face-strong) 349 | (set-face 'info-title-3 'face-strong) 350 | (set-face 'info-title-4 'face-strong)) 351 | 352 | ;; Bookmarks 353 | (with-eval-after-load 'bookmark 354 | (set-face 'bookmark-menu-heading 'face-strong) 355 | (set-face 'bookmark-menu-bookmark 'face-salient)) 356 | 357 | ;; Message 358 | (with-eval-after-load 'message 359 | (set-face 'message-cited-text 'face-faded) 360 | (set-face 'message-header-cc 'default) 361 | (set-face 'message-header-name 'face-strong) 362 | (set-face 'message-header-newsgroups 'default) 363 | (set-face 'message-header-other 'default) 364 | (set-face 'message-header-subject 'face-salient) 365 | (set-face 'message-header-to 'face-salient) 366 | (set-face 'message-header-xheader 'default) 367 | (set-face 'message-mml 'face-popout) 368 | (set-face 'message-separator 'face-faded)) 369 | 370 | ;; Outline 371 | (with-eval-after-load 'outline 372 | (set-face 'outline-1 'face-strong) 373 | (set-face 'outline-2 'face-strong) 374 | (set-face 'outline-3 'face-strong) 375 | (set-face 'outline-4 'face-strong) 376 | (set-face 'outline-5 'face-strong) 377 | (set-face 'outline-6 'face-strong) 378 | (set-face 'outline-7 'face-strong) 379 | (set-face 'outline-8 'face-strong)) 380 | 381 | ;; Interface 382 | (with-eval-after-load 'cus-edit 383 | (set-face 'widget-field 'face-subtle) 384 | (set-face 'widget-button 'face-strong) 385 | (set-face 'widget-single-line-field 'face-subtle) 386 | (set-face 'custom-group-subtitle 'face-strong) 387 | (set-face 'custom-group-tag 'face-strong) 388 | (set-face 'custom-group-tag-1 'face-strong) 389 | (set-face 'custom-comment 'face-faded) 390 | (set-face 'custom-comment-tag 'face-faded) 391 | (set-face 'custom-changed 'face-salient) 392 | (set-face 'custom-modified 'face-salient) 393 | (set-face 'custom-face-tag 'face-strong) 394 | (set-face 'custom-variable-tag 'default) 395 | (set-face 'custom-invalid 'face-popout) 396 | (set-face 'custom-visibility 'face-salient) 397 | (set-face 'custom-state 'face-salient) 398 | (set-face 'custom-link 'face-salient)) 399 | 400 | ;; Package 401 | (with-eval-after-load 'package 402 | (set-face 'package-description 'default) 403 | (set-face 'package-help-section-name 'default) 404 | (set-face 'package-name 'face-salient) 405 | (set-face 'package-status-avail-obso 'face-faded) 406 | (set-face 'package-status-available 'default) 407 | (set-face 'package-status-built-in 'face-salient) 408 | (set-face 'package-status-dependency 'face-salient) 409 | (set-face 'package-status-disabled 'face-faded) 410 | (set-face 'package-status-external 'default) 411 | (set-face 'package-status-held 'default) 412 | (set-face 'package-status-incompat 'face-faded) 413 | (set-face 'package-status-installed 'face-salient) 414 | (set-face 'package-status-new 'default) 415 | (set-face 'package-status-unsigned 'default) 416 | 417 | ;; Button face is hardcoded, we have to redefine the relevant 418 | ;; function 419 | (defun package-make-button (text &rest properties) 420 | "Insert button labeled TEXT with button PROPERTIES at point. 421 | PROPERTIES are passed to `insert-text-button', for which this 422 | function is a convenience wrapper used by `describe-package-1'." 423 | (let ((button-text (if (display-graphic-p) 424 | text (concat "[" text "]"))) 425 | (button-face (if (display-graphic-p) 426 | '(:box `(:line-width 1 427 | :color "#999999":style nil) 428 | :foreground "#999999" 429 | :background "#F0F0F0") 430 | 'link))) 431 | (apply #'insert-text-button button-text 432 | 'face button-face 'follow-link t properties))) 433 | ) 434 | 435 | ;; Flyspell 436 | (with-eval-after-load 'flyspell 437 | (set-face 'flyspell-duplicate 'face-popout) 438 | (set-face 'flyspell-incorrect 'face-popout)) 439 | 440 | ;; Ido 441 | (with-eval-after-load 'ido 442 | (set-face 'ido-first-match 'face-salient) 443 | (set-face 'ido-only-match 'face-faded) 444 | (set-face 'ido-subdir 'face-strong)) 445 | 446 | ;; Diff 447 | (with-eval-after-load 'diff-mode 448 | (set-face 'diff-header 'face-faded) 449 | (set-face 'diff-file-header 'face-strong) 450 | (set-face 'diff-context 'default) 451 | (set-face 'diff-removed 'face-faded) 452 | (set-face 'diff-changed 'face-popout) 453 | (set-face 'diff-added 'face-salient) 454 | (set-face 'diff-refine-added '(face-salient face-strong)) 455 | (set-face 'diff-refine-changed 'face-popout) 456 | (set-face 'diff-refine-removed 'face-faded) 457 | (set-face-attribute 'diff-refine-removed nil :strike-through t)) 458 | 459 | ;; Term 460 | (with-eval-after-load 'term 461 | ;; (setq eterm-256color-disable-bold nil) 462 | (set-face 'term-bold 'face-strong) 463 | (set-face-attribute 'term-color-black nil 464 | :foreground (face-foreground 'default) 465 | :background (face-foreground 'default)) 466 | (set-face-attribute 'term-color-white nil 467 | :foreground "white" :background "white") 468 | (set-face-attribute 'term-color-blue nil 469 | :foreground "#42A5F5" :background "#BBDEFB") 470 | (set-face-attribute 'term-color-cyan nil 471 | :foreground "#26C6DA" :background "#B2EBF2") 472 | (set-face-attribute 'term-color-green nil 473 | :foreground "#66BB6A" :background "#C8E6C9") 474 | (set-face-attribute 'term-color-magenta nil 475 | :foreground "#AB47BC" :background "#E1BEE7") 476 | (set-face-attribute 'term-color-red nil 477 | :foreground "#EF5350" :background "#FFCDD2") 478 | (set-face-attribute 'term-color-yellow nil 479 | :foreground "#FFEE58" :background "#FFF9C4")) 480 | 481 | ;; org-agende 482 | (with-eval-after-load 'org-agenda 483 | (set-face 'org-agenda-calendar-event 'default) 484 | (set-face 'org-agenda-calendar-sexp 'face-faded) 485 | (set-face 'org-agenda-clocking 'face-faded) 486 | (set-face 'org-agenda-column-dateline 'face-faded) 487 | (set-face 'org-agenda-current-time 'face-faded) 488 | (set-face 'org-agenda-date 'face-salient) 489 | (set-face 'org-agenda-date-today '(face-salient face-strong)) 490 | (set-face 'org-agenda-date-weekend 'face-faded) 491 | (set-face 'org-agenda-diary 'face-faded) 492 | (set-face 'org-agenda-dimmed-todo-face 'face-faded) 493 | (set-face 'org-agenda-done 'face-faded) 494 | (set-face 'org-agenda-filter-category 'face-faded) 495 | (set-face 'org-agenda-filter-effort 'face-faded) 496 | (set-face 'org-agenda-filter-regexp 'face-faded) 497 | (set-face 'org-agenda-filter-tags 'face-faded) 498 | ;; fixes issue #18 (set-face 'org-agenda-property-face 'face-faded) 499 | (set-face 'org-agenda-restriction-lock 'face-faded) 500 | (set-face 'org-agenda-structure 'face-faded)) 501 | 502 | ;; org mode 503 | (with-eval-after-load 'org 504 | (set-face 'org-archived 'face-faded) 505 | (set-face 'org-block 'face-faded) 506 | (set-face 'org-block-begin-line 'face-faded) 507 | (set-face 'org-block-end-line 'face-faded) 508 | (set-face 'org-checkbox 'face-faded) 509 | (set-face 'org-checkbox-statistics-done 'face-faded) 510 | (set-face 'org-checkbox-statistics-todo 'face-faded) 511 | (set-face 'org-clock-overlay 'face-faded) 512 | (set-face 'org-code 'face-faded) 513 | (set-face 'org-column 'face-faded) 514 | (set-face 'org-column-title 'face-faded) 515 | (set-face 'org-date 'face-faded) 516 | (set-face 'org-date-selected 'face-faded) 517 | (set-face 'org-default 'face-faded) 518 | (set-face 'org-document-info 'face-faded) 519 | (set-face 'org-document-info-keyword 'face-faded) 520 | (set-face 'org-document-title 'face-faded) 521 | (set-face 'org-done 'default) 522 | (set-face 'org-drawer 'face-faded) 523 | (set-face 'org-ellipsis 'face-faded) 524 | (set-face 'org-footnote 'face-faded) 525 | (set-face 'org-formula 'face-faded) 526 | (set-face 'org-headline-done 'face-faded) 527 | ;; (set-face 'org-hide 'face-faded) 528 | ;; (set-face 'org-indent 'face-faded) 529 | (set-face 'org-latex-and-related 'face-faded) 530 | (set-face 'org-level-1 'face-strong) 531 | (set-face 'org-level-2 'face-strong) 532 | (set-face 'org-level-3 'face-strong) 533 | (set-face 'org-level-4 'face-strong) 534 | (set-face 'org-level-5 'face-strong) 535 | (set-face 'org-level-6 'face-strong) 536 | (set-face 'org-level-7 'face-strong) 537 | (set-face 'org-level-8 'face-strong) 538 | (set-face 'org-link 'face-salient) 539 | (set-face 'org-list-dt 'face-faded) 540 | (set-face 'org-macro 'face-faded) 541 | (set-face 'org-meta-line 'face-faded) 542 | (set-face 'org-mode-line-clock 'face-faded) 543 | (set-face 'org-mode-line-clock-overrun 'face-faded) 544 | (set-face 'org-priority 'face-faded) 545 | (set-face 'org-property-value 'face-faded) 546 | (set-face 'org-quote 'face-faded) 547 | (set-face 'org-scheduled 'face-faded) 548 | (set-face 'org-scheduled-previously 'face-faded) 549 | (set-face 'org-scheduled-today 'face-faded) 550 | (set-face 'org-sexp-date 'face-faded) 551 | (set-face 'org-special-keyword 'face-faded) 552 | (set-face 'org-table 'default) 553 | (set-face 'org-tag 'face-faded) 554 | (set-face 'org-tag-group 'face-faded) 555 | (set-face 'org-target 'face-faded) 556 | (set-face 'org-time-grid 'face-faded) 557 | (set-face 'org-todo 'face-popout) 558 | (set-face 'org-upcoming-deadline 'face-faded) 559 | (set-face 'org-verbatim 'face-faded) 560 | (set-face 'org-verse 'face-faded) 561 | (set-face 'org-warning 'face-popout)) 562 | 563 | ;; Mu4e 564 | (with-eval-after-load 'mu4e 565 | (set-face 'mu4e-attach-number-face 'face-strong) 566 | (set-face 'mu4e-cited-1-face 'face-faded) 567 | (set-face 'mu4e-cited-2-face 'face-faded) 568 | (set-face 'mu4e-cited-3-face 'face-faded) 569 | (set-face 'mu4e-cited-4-face 'face-faded) 570 | (set-face 'mu4e-cited-5-face 'face-faded) 571 | (set-face 'mu4e-cited-6-face 'face-faded) 572 | (set-face 'mu4e-cited-7-face 'face-faded) 573 | (set-face 'mu4e-compose-header-face 'face-faded) 574 | (set-face 'mu4e-compose-separator-face 'face-faded) 575 | (set-face 'mu4e-contact-face 'face-salient) 576 | (set-face 'mu4e-context-face 'face-faded) 577 | (set-face 'mu4e-draft-face 'face-faded) 578 | (set-face 'mu4e-flagged-face 'face-faded) 579 | (set-face 'mu4e-footer-face 'face-faded) 580 | (set-face 'mu4e-forwarded-face 'face-faded) 581 | (set-face 'mu4e-header-face 'default) 582 | (set-face 'mu4e-header-highlight-face 'face-subtle) 583 | (set-face 'mu4e-header-key-face 'face-strong) 584 | (set-face 'mu4e-header-marks-face 'face-faded) 585 | (set-face 'mu4e-header-title-face 'face-strong) 586 | (set-face 'mu4e-header-value-face 'default) 587 | (set-face 'mu4e-highlight-face 'face-popout) 588 | (set-face 'mu4e-link-face 'face-salient) 589 | (set-face 'mu4e-modeline-face 'face-faded) 590 | (set-face 'mu4e-moved-face 'face-faded) 591 | (set-face 'mu4e-ok-face 'face-faded) 592 | (set-face 'mu4e-region-code 'face-faded) 593 | (set-face 'mu4e-replied-face 'face-salient) 594 | (set-face 'mu4e-special-header-value-face 'default) 595 | (set-face 'mu4e-system-face 'face-faded) 596 | (set-face 'mu4e-title-face 'face-strong) 597 | (set-face 'mu4e-trashed-face 'face-faded) 598 | (set-face 'mu4e-unread-face 'face-strong) 599 | (set-face 'mu4e-url-number-face 'face-faded) 600 | (set-face 'mu4e-view-body-face 'default) 601 | (set-face 'mu4e-warning-face 'face-faded)) 602 | 603 | (provide 'elegance) 604 | 605 | -------------------------------------------------------------------------------- /elegant-dark-theme.el: -------------------------------------------------------------------------------- 1 | ;;; elegant-dark-theme.el --- A very minimal but elegant and consistent theme 2 | ;;; Copyright (C) 2020 Nicolas P. Rougier and Nicolò Zorzetto 3 | ;;; ------------------------------------------------------------------- 4 | ;;; Authors: Nicolas P. Rougier and Nicolò Zorzetto 5 | ;;; ------------------------------------------------------------------- 6 | ;;; URL: https://github.com/rougier/elegant-emacs 7 | ;;; ------------------------------------------------------------------- 8 | ;;; Version: 1 9 | ;;; Package-Requires: ((emacs "25.1")) 10 | ;;; ------------------------------------------------------------------- 11 | ;;; This file is not part of GNU Emacs. 12 | ;;; 13 | ;;; This program is free software: you can redistribute it and/or 14 | ;;; modify it under the terms of the GNU General Public License as 15 | ;;; published by the Free Software Foundation, either version 3 of the 16 | ;;; License, or (at your option) any later version. 17 | ;;; 18 | ;;; This program is distributed in the hope that it will be useful, but 19 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of 20 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21 | ;;; General Public License for more details. 22 | ;;; 23 | ;;; You should have received a copy of the GNU General Public License 24 | ;;; along with this program. If not, see 25 | ;;; ------------------------------------------------------------------- 26 | ;;; Commentary: 27 | ;;; This theme offers an almost vanilla yet elegant Emacs experience 28 | ;;; ------------------------------------------------------------------- 29 | ;;; Code: 30 | 31 | 32 | ;;; Theme definition 33 | ;;; ------------------------------------------------------------------- 34 | (deftheme elegant-dark 35 | "A simple yet elegant theme for emacs.") 36 | ;;; ------------------------------------------------------------------- 37 | 38 | 39 | ;;; Require elegant-emacs-common 40 | ;;; ------------------------------------------------------------------- 41 | ; (load "~/.emacs.d/elegant/elegant.el") 42 | (require 'elegant) 43 | ;;; ------------------------------------------------------------------- 44 | 45 | 46 | ;;; General colors 47 | ;;; ------------------------------------------------------------------- 48 | (set-background-color "#3f3f3f") 49 | (set-foreground-color "#dcdccc") 50 | (set-face-attribute 'default nil 51 | :foreground (face-foreground 'default) 52 | :background (face-background 'default)) 53 | (set-face-attribute 'face-critical nil :foreground "#385f38" 54 | :background "#f8f893") 55 | (set-face-attribute 'face-popout nil :foreground "#f0dfaf") 56 | (set-face-attribute 'face-strong nil :foreground "#dcdccc" 57 | :weight 'regular) 58 | (set-face-attribute 'face-salient nil :foreground "#dca3a3" 59 | :weight 'light) 60 | (set-face-attribute 'face-faded nil :foreground "#777767" 61 | :weight 'light) 62 | (set-face-attribute 'face-subtle nil :background "#4f4f4f") 63 | (set-modeline-faces) 64 | ;;; ------------------------------------------------------------------- 65 | 66 | 67 | ;;; Provide the elegant-emacs-dark theme 68 | ;;; ------------------------------------------------------------------- 69 | (provide-theme 'elegant-dark) 70 | ;;; ------------------------------------------------------------------- 71 | 72 | 73 | ;;; elegant-dark-theme.el ends here 74 | 75 | -------------------------------------------------------------------------------- /elegant-light-theme.el: -------------------------------------------------------------------------------- 1 | ;;; elegant-light-theme.el --- A very minimal but elegant and consistent theme 2 | ;;; Copyright (C) 2020 Nicolas P. Rougier and Nicolò Zorzetto 3 | ;;; ------------------------------------------------------------------- 4 | ;;; Authors: Nicolas P. Rougier and Nicolò Zorzetto 5 | ;;; ------------------------------------------------------------------- 6 | ;;; URL: https://github.com/rougier/elegant-emacs 7 | ;;; ------------------------------------------------------------------- 8 | ;;; Version: 1 9 | ;;; Package-Requires: ((emacs "25.1")) 10 | ;;; ------------------------------------------------------------------- 11 | ;;; This file is not part of GNU Emacs. 12 | ;;; 13 | ;;; This program is free software: you can redistribute it and/or 14 | ;;; modify it under the terms of the GNU General Public License as 15 | ;;; published by the Free Software Foundation, either version 3 of the 16 | ;;; License, or (at your option) any later version. 17 | ;;; 18 | ;;; This program is distributed in the hope that it will be useful, but 19 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of 20 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21 | ;;; General Public License for more details. 22 | ;;; 23 | ;;; You should have received a copy of the GNU General Public License 24 | ;;; along with this program. If not, see 25 | ;;; ------------------------------------------------------------------- 26 | ;;; Commentary: 27 | ;;; This theme offers an almost vanilla yet elegant Emacs experience 28 | ;;; ------------------------------------------------------------------- 29 | ;;; Code: 30 | 31 | ;;; Theme definition 32 | ;;; ------------------------------------------------------------------- 33 | (deftheme elegant-light 34 | "A simple yet elegant theme for emacs.") 35 | ;;; ------------------------------------------------------------------- 36 | 37 | 38 | ;;; Require elegant-emacs-common 39 | ;;; ------------------------------------------------------------------- 40 | ;; (load "~/.emacs.d/elegant/elegant.el") 41 | (require 'elegant) 42 | ;;; ------------------------------------------------------------------- 43 | 44 | 45 | ;;; General colors 46 | ;;; ------------------------------------------------------------------- 47 | (set-background-color "#ffffff") 48 | (set-foreground-color "#333333") 49 | (set-face-attribute 'default nil 50 | :foreground (face-foreground 'default) 51 | :background (face-background 'default)) 52 | (set-face-attribute 'face-critical nil :foreground "#ffffff" 53 | :background "#ff6347") 54 | (set-face-attribute 'face-popout nil :foreground "#ffa07a") 55 | (set-face-attribute 'face-strong nil :foreground "#333333" 56 | :weight 'regular) 57 | (set-face-attribute 'face-salient nil :foreground "#00008b" 58 | :weight 'light) 59 | (set-face-attribute 'face-faded nil :foreground "#999999" 60 | :weight 'light) 61 | (set-face-attribute 'face-subtle nil :background "#f0f0f0") 62 | 63 | (set-modeline-faces) 64 | 65 | '(cus-edit (set-button-faces)) 66 | ;;; ------------------------------------------------------------------- 67 | 68 | 69 | ;;; Provide the elegant-emacs-dark theme 70 | ;;; ------------------------------------------------------------------- 71 | (provide-theme 'elegant-light) 72 | ;;; ------------------------------------------------------------------- 73 | 74 | 75 | ;;; elegant-light-theme.el ends here 76 | -------------------------------------------------------------------------------- /elegant.el: -------------------------------------------------------------------------------- 1 | ;;; elegant.el --- A very minimal but elegant and consistent theme 2 | ;;; Copyright (C) 2020 Nicolas P. Rougier and Nicolò Zorzetto 3 | ;;; ------------------------------------------------------------------- 4 | ;;; Authors: Nicolas P. Rougier and Nicolò Zorzetto 5 | ;;; ------------------------------------------------------------------- 6 | ;;; URL: https://github.com/rougier/elegant-emacs 7 | ;;; ------------------------------------------------------------------- 8 | ;;; Version: 1 9 | ;;; Package-Requires: ((emacs "25.1")) 10 | ;;; ------------------------------------------------------------------- 11 | ;;; This file is not part of GNU Emacs. 12 | ;;; 13 | ;;; This program is free software: you can redistribute it and/or 14 | ;;; modify it under the terms of the GNU General Public License as 15 | ;;; published by the Free Software Foundation, either version 3 of the 16 | ;;; License, or (at your option) any later version. 17 | ;;; 18 | ;;; This program is distributed in the hope that it will be useful, but 19 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of 20 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21 | ;;; General Public License for more details. 22 | ;;; 23 | ;;; You should have received a copy of the GNU General Public License 24 | ;;; along with this program. If not, see 25 | ;;; ------------------------------------------------------------------- 26 | ;;; Commentary: 27 | ;;; This theme offers an almost vanilla yet elegant Emacs experience 28 | ;;; ------------------------------------------------------------------- 29 | ;;; Code: 30 | 31 | 32 | ;;; Font and frame size 33 | ;;; ------------------------------------------------------------------- 34 | (setq default-frame-alist 35 | (append (list '(width . 72) '(height . 40) 36 | '(vertical-scroll-bars . nil) 37 | '(internal-border-width . 24) 38 | '(font . "Roboto Mono Light 14")))) 39 | (set-frame-parameter (selected-frame) 40 | 'internal-border-width 24) 41 | ;;; ------------------------------------------------------------------- 42 | 43 | ;;; Line spacing, can be 0 for code and 1 or 2 for text 44 | ;;; ------------------------------------------------------------------- 45 | (setq-default line-spacing 0) 46 | (setq x-underline-at-descent-line t) 47 | (setq widget-image-enable nil) 48 | ;;; ------------------------------------------------------------------- 49 | 50 | ;;; Line cursor and no blink 51 | ;;; ------------------------------------------------------------------- 52 | (set-default 'cursor-type '(bar . 1)) 53 | (blink-cursor-mode 0) 54 | ;;; ------------------------------------------------------------------- 55 | 56 | 57 | ;;; No sound 58 | ;;; ------------------------------------------------------------------- 59 | (setq visible-bell t) 60 | (setq ring-bell-function 'ignore) 61 | ;;; ------------------------------------------------------------------- 62 | 63 | 64 | ;;; No Tooltips 65 | ;;; ------------------------------------------------------------------- 66 | (tooltip-mode 0) 67 | ;;; ------------------------------------------------------------------- 68 | 69 | 70 | ;;; Paren mode is part of the theme 71 | ;;; ------------------------------------------------------------------- 72 | (show-paren-mode t) 73 | ;;; ------------------------------------------------------------------- 74 | 75 | 76 | ;;; When we set a face, we take care of removing any previous settings 77 | ;;; ------------------------------------------------------------------- 78 | (defun set-face (face style) 79 | "Reset a FACE and make it inherit STYLE." 80 | (set-face-attribute face nil 81 | :foreground 'unspecified :background 'unspecified 82 | :family 'unspecified :slant 'unspecified 83 | :weight 'unspecified :height 'unspecified 84 | :underline 'unspecified :overline 'unspecified 85 | :box 'unspecified :inherit style)) 86 | ;;; ------------------------------------------------------------------- 87 | 88 | 89 | ;;; A theme is fully defined by these six faces 90 | ;;; ------------------------------------------------------------------- 91 | (defgroup elegance nil 92 | "Faces for the elegance theme" 93 | :prefix "elegance-face-" 94 | :group 'faces) 95 | ;;; ------------------------------------------------------------------- 96 | 97 | 98 | ;;; Custom faces definition 99 | ;;; ------------------------------------------------------------------- 100 | (defface face-critical nil 101 | "Critical face is for information that requires immediate action. 102 | It should be of high constrast when compared to other faces. This 103 | can be realized (for example) by setting an intense background 104 | color, typically a shade of red. It must be used scarcely." 105 | :group 'elegance) 106 | 107 | (defface face-popout nil 108 | "Popout face is used for information that needs attention. 109 | To achieve such effect, the hue of the face has to be 110 | sufficiently different from other faces such that it attracts 111 | attention through the popout effect." 112 | :group 'elegance) 113 | 114 | (defface face-strong nil 115 | "Strong face is used for information of a structural nature. 116 | It has to be the same color as the default color and only the 117 | weight differs by one level (e.g., light/regular or 118 | regular/bold). IT is generally used for titles, keywords, 119 | directory, etc." 120 | :group 'elegance) 121 | 122 | (defface face-salient nil 123 | "Salient face is used for information that are important. 124 | To suggest the information is of the same nature but important, 125 | the face uses a different hue with approximately the same 126 | intensity as the default face. This is typically used for links." 127 | 128 | :group 'elegance) 129 | 130 | (defface face-faded nil 131 | "Faded face is for information that are less important. 132 | It is made by using the same hue as the default but with a lesser 133 | intensity than the default. It can be used for comments, 134 | secondary information and also replace italic (which is generally 135 | abused anyway)." 136 | :group 'elegance) 137 | 138 | (defface face-subtle nil 139 | "Subtle face is used to suggest a physical area on the screen. 140 | It is important to not disturb too strongly the reading of 141 | information and this can be made by setting a very light 142 | background color that is barely perceptible." 143 | :group 'elegance) 144 | ;;; ------------------------------------------------------------------- 145 | 146 | 147 | ;;; Mode line rendering 148 | ;;; ------------------------------------------------------------------- 149 | ;;; This line below makes things a bit faster 150 | (set-fontset-font "fontset-default" '(#x2600 . #x26ff) "Fira Code 16") 151 | 152 | (define-key mode-line-major-mode-keymap [header-line] 153 | (lookup-key mode-line-major-mode-keymap [mode-line])) 154 | 155 | (defun mode-line-render (left right) 156 | "Function to render the modeline LEFT to RIGHT." 157 | (concat left 158 | (propertize " " 'display `(space :align-to (- right ,(length right)))) 159 | right)) 160 | (setq-default mode-line-format 161 | '((:eval 162 | (mode-line-render 163 | (format-mode-line (list 164 | (propertize "☰" 'face `(:inherit mode-line-buffer-id) 165 | 'help-echo "Mode(s) menu" 166 | 'mouse-face 'mode-line-highlight 167 | 'local-map mode-line-major-mode-keymap) 168 | " %b " 169 | (if (and buffer-file-name (buffer-modified-p)) 170 | (propertize "(modified)" 'face `(:inherit face-faded))))) 171 | (format-mode-line 172 | (propertize "%4l:%2c" 'face `(:inherit face-faded))))))) 173 | ;;; ------------------------------------------------------------------- 174 | 175 | 176 | ;;; Set modeline at the top 177 | ;;; ------------------------------------------------------------------- 178 | (setq-default header-line-format mode-line-format) 179 | (setq-default mode-line-format'("")) 180 | ;;; ------------------------------------------------------------------- 181 | 182 | 183 | ;;; Vertical window divider 184 | ;;; ------------------------------------------------------------------- 185 | (setq window-divider-default-right-width 3) 186 | (setq window-divider-default-places 'right-only) 187 | (window-divider-mode) 188 | ;;; ------------------------------------------------------------------- 189 | 190 | 191 | ;;; Modeline 192 | ;;; ------------------------------------------------------------------- 193 | (defun set-modeline-faces () 194 | "Mode line at top." 195 | (set-face 'header-line 'face-strong) 196 | (set-face-attribute 'header-line nil 197 | :underline (face-foreground 'default)) 198 | (set-face-attribute 'mode-line nil 199 | :height 10 200 | :underline (face-foreground 'default) 201 | :overline nil 202 | :box nil 203 | :foreground (face-background 'default) 204 | :background (face-background 'default)) 205 | (set-face 'mode-line-inactive 'mode-line) 206 | (set-face-attribute 'cursor nil 207 | :background (face-foreground 'default)) 208 | (set-face-attribute 'window-divider nil 209 | :foreground (face-background 'mode-line)) 210 | (set-face-attribute 'window-divider-first-pixel nil 211 | :foreground (face-background 'default)) 212 | (set-face-attribute 'window-divider-last-pixel nil 213 | :foreground (face-background 'default))) 214 | ;;; ------------------------------------------------------------------- 215 | 216 | 217 | ;;; Buttons 218 | ;;; ------------------------------------------------------------------- 219 | (defun set-button-faces () 220 | "Set button faces." 221 | (set-face-attribute 'custom-button nil 222 | :foreground (face-foreground 'face-faded) 223 | :background (face-background 'face-subtle) 224 | :box `(:line-width 1 225 | :color ,(face-foreground 'face-faded) 226 | :style nil)) 227 | (set-face-attribute 'custom-button-mouse nil 228 | :foreground (face-foreground 'default) 229 | ;;; :background (face-foreground 'face-faded) 230 | :inherit 'custom-button 231 | :box `(:line-width 1 232 | :color ,(face-foreground 'face-subtle) 233 | :style nil)) 234 | (set-face-attribute 'custom-button-pressed nil 235 | :foreground (face-background 'default) 236 | :background (face-foreground 'face-salient) 237 | :inherit 'face-salient 238 | :box `(:line-width 1 239 | :color ,(face-foreground 'face-salient) 240 | :style nil) 241 | :inverse-video nil)) 242 | '(cus-edit (set-button-faces)) 243 | ;;; ------------------------------------------------------------------- 244 | 245 | 246 | 247 | 248 | ;; Structural 249 | ;; ------------------------------------------------------------------- 250 | (set-face 'bold 'face-strong) 251 | (set-face 'italic 'face-faded) 252 | (set-face 'bold-italic 'face-strong) 253 | (set-face 'region 'face-subtle) 254 | (set-face 'highlight 'face-subtle) 255 | (set-face 'fixed-pitch 'default) 256 | (set-face 'fixed-pitch-serif 'default) 257 | (set-face 'variable-pitch 'default) 258 | (set-face 'cursor 'default) 259 | ;;; ------------------------------------------------------------------- 260 | 261 | 262 | ;; Semantic 263 | ;;; ------------------------------------------------------------------- 264 | (set-face 'shadow 'face-faded) 265 | (set-face 'success 'face-salient) 266 | (set-face 'warning 'face-popout) 267 | (set-face 'error 'face-critical) 268 | ;;; ------------------------------------------------------------------- 269 | 270 | 271 | ;; General 272 | ;;; ------------------------------------------------------------------- 273 | (set-face 'buffer-menu-buffer 'face-strong) 274 | (set-face 'minibuffer-prompt 'face-strong) 275 | (set-face 'link 'face-salient) 276 | (set-face 'fringe 'face-faded) 277 | (set-face 'isearch 'face-strong) 278 | (set-face 'isearch-fail 'face-faded) 279 | (set-face 'lazy-highlight 'face-subtle) 280 | (set-face 'trailing-whitespace 'face-subtle) 281 | (set-face 'show-paren-match 'face-popout) 282 | (set-face 'show-paren-mismatch 'face-normal) 283 | (set-face-attribute 'tooltip nil :height 0.85) 284 | ;;; ------------------------------------------------------------------- 285 | 286 | 287 | ;; Programmation mode 288 | ;;; ------------------------------------------------------------------- 289 | (set-face 'font-lock-comment-face 'face-faded) 290 | (set-face 'font-lock-doc-face 'face-faded) 291 | (set-face 'font-lock-string-face 'face-popout) 292 | (set-face 'font-lock-constant-face 'face-salient) 293 | (set-face 'font-lock-warning-face 'face-popout) 294 | (set-face 'font-lock-function-name-face 'face-strong) 295 | (set-face 'font-lock-variable-name-face 'face-strong) 296 | (set-face 'font-lock-builtin-face 'face-salient) 297 | (set-face 'font-lock-type-face 'face-salient) 298 | (set-face 'font-lock-keyword-face 'face-salient) 299 | ;;; ------------------------------------------------------------------- 300 | 301 | 302 | ;; Documentation 303 | ;;; ------------------------------------------------------------------- 304 | ''(set-face 'info-header-node 'face-normal) 305 | '(set-face 'Info-quoted 'face-faded) 306 | '(set-face 'info-title-1 'face-strong) 307 | '(set-face 'info-title-2 'face-strong) 308 | '(set-face 'info-title-3 'face-strong) 309 | '(set-face 'info-title-4 'face-strong) 310 | ;;; ------------------------------------------------------------------- 311 | 312 | 313 | ;; Bookmarks 314 | ;;; ------------------------------------------------------------------- 315 | '(bookmark-menu-heading 'face-strong) 316 | '(bookmark-menu-bookmark 'face-salient) 317 | ;;; ------------------------------------------------------------------- 318 | 319 | 320 | ;; Message 321 | ;;; ------------------------------------------------------------------- 322 | '(message-cited-text 'face-faded) 323 | '(message-header-cc 'default) 324 | '(message-header-name 'face-strong) 325 | '(message-header-newsgroups 'default) 326 | '(message-header-other 'default) 327 | '(message-header-subject 'face-salient) 328 | '(message-header-to 'face-salient) 329 | '(message-header-xheader 'default) 330 | '(message-mml 'face-popout) 331 | '(message-separator 'face-faded) 332 | ;;; ------------------------------------------------------------------- 333 | 334 | 335 | ;; Outline 336 | ;;; ------------------------------------------------------------------- 337 | '(outline-1 'face-strong) 338 | '(outline-2 'face-strong) 339 | '(outline-3 'face-strong) 340 | '(outline-4 'face-strong) 341 | '(outline-5 'face-strong) 342 | '(outline-6 'face-strong) 343 | '(outline-7 'face-strong) 344 | '(outline-8 'face-strong) 345 | ;;; ------------------------------------------------------------------- 346 | 347 | 348 | ;; Interface 349 | ;;; ------------------------------------------------------------------- 350 | '(widget-field 'face-subtle) 351 | '(widget-button 'face-strong) 352 | '(widget-single-line-field 'face-subtle) 353 | '(custom-group-subtitle 'face-strong) 354 | '(custom-group-tag 'face-strong) 355 | '(custom-group-tag-1 'face-strong) 356 | '(custom-comment 'face-faded) 357 | '(custom-comment-tag 'face-faded) 358 | '(custom-changed 'face-salient) 359 | '(custom-modified 'face-salient) 360 | '(custom-face-tag 'face-strong) 361 | '(custom-variable-tag 'default) 362 | '(custom-invalid 'face-popout) 363 | '(custom-visibility 'face-salient) 364 | '(custom-state 'face-salient) 365 | '(custom-link 'face-salient) 366 | ;;; ------------------------------------------------------------------- 367 | 368 | 369 | ;; Package 370 | ;;; ------------------------------------------------------------------- 371 | '(package-description 'default) 372 | '(package-help-section-name 'default) 373 | '(package-name 'face-salient) 374 | '(package-status-avail-obso 'face-faded) 375 | '(package-status-available 'default) 376 | '(package-status-built-in 'face-salient) 377 | '(package-status-dependency 'face-salient) 378 | '(package-status-disabled 'face-faded) 379 | '(package-status-external 'default) 380 | '(package-status-held 'default) 381 | '(package-status-incompat 'face-faded) 382 | '(package-status-installed 'face-salient) 383 | '(package-status-new 'default) 384 | '(package-status-unsigned 'default) 385 | ;;; ------------------------------------------------------------------- 386 | 387 | 388 | ;; Button function (hardcoded) 389 | ;;; ------------------------------------------------------------------- 390 | (defun package-make-button (text &rest properties) 391 | "Insert button labeled TEXT with button PROPERTIES at point. 392 | PROPERTIES are passed to `insert-text-button', for which this 393 | function is a convenience wrapper used by `describe-package-1'." 394 | (let ((button-text (if (display-graphic-p) 395 | text (concat "[" text "]"))) 396 | (button-face (if (display-graphic-p) 397 | '(:box `(:line-width 1 398 | :color "#999999":style nil) 399 | :foreground "#999999" 400 | :background "#F0F0F0") 401 | 'link))) 402 | (apply #'insert-text-button button-text 403 | 'face button-face 'follow-link t properties))) 404 | ;;; ------------------------------------------------------------------- 405 | 406 | 407 | ;; Flyspell 408 | ;;; ------------------------------------------------------------------- 409 | '(flyspell-duplicate 'face-popout) 410 | '(flyspell-incorrect 'face-popout) 411 | ;;; ------------------------------------------------------------------- 412 | 413 | 414 | ;; Ido 415 | ;;; ------------------------------------------------------------------- 416 | '(ido-first-match 'face-salient) 417 | '(ido-only-match 'face-faded) 418 | '(ido-subdir 'face-strong) 419 | ;;; ------------------------------------------------------------------- 420 | 421 | 422 | ;; Diff 423 | ;;; ------------------------------------------------------------------- 424 | '(diff-header 'face-faded) 425 | '(diff-file-header 'face-strong) 426 | '(diff-context 'default) 427 | '(diff-removed 'face-faded) 428 | '(diff-changed 'face-popout) 429 | '(diff-added 'face-salient) 430 | '(diff-refine-added '(face-salient face-strong)) 431 | '(diff-refine-changed 'face-popout) 432 | '(diff-refine-removed 'face-faded) 433 | '(set-face-attribute 'diff-refine-removed nil :strike-through t) 434 | ;;; ------------------------------------------------------------------- 435 | 436 | 437 | ;; Term 438 | ;;; ------------------------------------------------------------------- 439 | '(term-bold 'face-strong) 440 | '(set-face-attribute 'term-color-black nil 441 | :foreground (face-foreground 'default) 442 | :background (face-foreground 'default)) 443 | '(set-face-attribute 'term-color-white nil 444 | :foreground "white" :background "white") 445 | '(set-face-attribute 'term-color-blue nil 446 | :foreground "#42A5F5" :background "#BBDEFB") 447 | '(set-face-attribute 'term-color-cyan nil 448 | :foreground "#26C6DA" :background "#B2EBF2") 449 | '(set-face-attribute 'term-color-green nil 450 | :foreground "#66BB6A" :background "#C8E6C9") 451 | '(set-face-attribute 'term-color-magenta nil 452 | :foreground "#AB47BC" :background "#E1BEE7") 453 | '(set-face-attribute 'term-color-red nil 454 | :foreground "#EF5350" :background "#FFCDD2") 455 | '(set-face-attribute 'term-color-yellow nil 456 | :foreground "#FFEE58" :background "#FFF9C4") 457 | ;;; ------------------------------------------------------------------- 458 | 459 | 460 | ;; org-agendas 461 | ;;; ------------------------------------------------------------------- 462 | '(org-agenda-calendar-event 'default) 463 | '(org-agenda-calendar-sexp 'face-faded) 464 | '(org-agenda-clocking 'face-faded) 465 | '(org-agenda-column-dateline 'face-faded) 466 | '(org-agenda-current-time 'face-faded) 467 | '(org-agenda-date 'face-salient) 468 | '(org-agenda-date-today '(face-salient face-strong)) 469 | '(org-agenda-date-weekend 'face-faded) 470 | '(org-agenda-diary 'face-faded) 471 | '(org-agenda-dimmed-todo-face 'face-faded) 472 | '(org-agenda-done 'face-faded) 473 | '(org-agenda-filter-category 'face-faded) 474 | '(org-agenda-filter-effort 'face-faded) 475 | '(org-agenda-filter-regexp 'face-faded) 476 | '(org-agenda-filter-tags 'face-faded) 477 | '(org-agenda-restriction-lock 'face-faded) 478 | '(org-agenda-structure 'face-faded) 479 | ;;; ------------------------------------------------------------------- 480 | 481 | 482 | ;; org mode 483 | ;;; ------------------------------------------------------------------- 484 | '(org-archived 'face-faded) 485 | '(org-block 'face-faded) 486 | '(org-block-begin-line 'face-faded) 487 | '(org-block-end-line 'face-faded) 488 | '(org-checkbox 'face-faded) 489 | '(org-checkbox-statistics-done 'face-faded) 490 | '(org-checkbox-statistics-todo 'face-faded) 491 | '(org-clock-overlay 'face-faded) 492 | '(org-code 'face-faded) 493 | '(org-column 'face-faded) 494 | '(org-column-title 'face-faded) 495 | '(org-date 'face-faded) 496 | '(org-date-selected 'face-faded) 497 | '(org-default 'face-faded) 498 | '(org-document-info 'face-faded) 499 | '(org-document-info-keyword 'face-faded) 500 | '(org-document-title 'face-faded) 501 | '(org-done 'default) 502 | '(org-drawer 'face-faded) 503 | '(org-ellipsis 'face-faded) 504 | '(org-footnote 'face-faded) 505 | '(org-formula 'face-faded) 506 | '(org-headline-done 'face-faded) 507 | '(org-latex-and-related 'face-faded) 508 | '(org-level-1 'face-strong) 509 | '(org-level-2 'face-strong) 510 | '(org-level-3 'face-strong) 511 | '(org-level-4 'face-strong) 512 | '(org-level-5 'face-strong) 513 | '(org-level-6 'face-strong) 514 | '(org-level-7 'face-strong) 515 | '(org-level-8 'face-strong) 516 | '(org-link 'face-salient) 517 | '(org-list-dt 'face-faded) 518 | '(org-macro 'face-faded) 519 | '(org-meta-line 'face-faded) 520 | '(org-mode-line-clock 'face-faded) 521 | '(org-mode-line-clock-overrun 'face-faded) 522 | '(org-priority 'face-faded) 523 | '(org-property-value 'face-faded) 524 | '(org-quote 'face-faded) 525 | '(org-scheduled 'face-faded) 526 | '(org-scheduled-previously 'face-faded) 527 | '(org-scheduled-today 'face-faded) 528 | '(org-sexp-date 'face-faded) 529 | '(org-special-keyword 'face-faded) 530 | '(org-table 'face-faded) 531 | '(org-tag 'face-faded) 532 | '(org-tag-group 'face-faded) 533 | '(org-target 'face-faded) 534 | '(org-time-grid 'face-faded) 535 | '(org-todo 'face-popout) 536 | '(org-upcoming-deadline 'face-faded) 537 | '(org-verbatim 'face-faded) 538 | '(org-verse 'face-faded) 539 | '(org-warning 'face-popout) 540 | (setq org-hide-emphasis-markers t) 541 | ;;; ------------------------------------------------------------------- 542 | 543 | 544 | ;; Mu4e 545 | ;;; ------------------------------------------------------------------- 546 | '(mu4e-attach-number-face 'face-strong) 547 | '(mu4e-cited-1-face 'face-faded) 548 | '(mu4e-cited-2-face 'face-faded) 549 | '(mu4e-cited-3-face 'face-faded) 550 | '(mu4e-cited-4-face 'face-faded) 551 | '(mu4e-cited-5-face 'face-faded) 552 | '(mu4e-cited-6-face 'face-faded) 553 | '(mu4e-cited-7-face 'face-faded) 554 | '(mu4e-compose-header-face 'face-faded) 555 | '(mu4e-compose-separator-face 'face-faded) 556 | '(mu4e-contact-face 'face-salient) 557 | '(mu4e-context-face 'face-faded) 558 | '(mu4e-draft-face 'face-faded) 559 | '(mu4e-flagged-face 'face-faded) 560 | '(mu4e-footer-face 'face-faded) 561 | '(mu4e-forwarded-face 'face-faded) 562 | '(mu4e-header-face 'default) 563 | '(mu4e-header-highlight-face 'face-subtle) 564 | '(mu4e-header-key-face 'face-strong) 565 | '(mu4e-header-marks-face 'face-faded) 566 | '(mu4e-header-title-face 'face-strong) 567 | '(mu4e-header-value-face 'default) 568 | '(mu4e-highlight-face 'face-popout) 569 | '(mu4e-link-face 'face-salient) 570 | '(mu4e-modeline-face 'face-faded) 571 | '(mu4e-moved-face 'face-faded) 572 | '(mu4e-ok-face 'face-faded) 573 | '(mu4e-region-code 'face-faded) 574 | '(mu4e-replied-face 'face-salient) 575 | '(mu4e-special-header-value-face 'default) 576 | '(mu4e-system-face 'face-faded) 577 | '(mu4e-title-face 'face-strong) 578 | '(mu4e-trashed-face 'face-faded) 579 | '(mu4e-unread-face 'face-strong) 580 | '(mu4e-url-number-face 'face-faded) 581 | '(mu4e-view-body-face 'default) 582 | '(mu4e-warning-face 'face-faded) 583 | ;;; ------------------------------------------------------------------- 584 | 585 | 586 | ;;;;###autoload 587 | ;;; ------------------------------------------------------------------- 588 | (when load-file-name 589 | (add-to-list 'custom-theme-load-path 590 | (file-name-as-directory (file-name-directory load-file-name)))) 591 | ;;; ------------------------------------------------------------------- 592 | 593 | 594 | ;;; Provide commons for the elegant-emacs-themes 595 | ;;; ------------------------------------------------------------------- 596 | (provide 'elegant) 597 | ;;; ------------------------------------------------------------------- 598 | 599 | ;;; elegant.el ends here 600 | -------------------------------------------------------------------------------- /sanity.el: -------------------------------------------------------------------------------- 1 | ;; Some sane defaults 2 | ;; Copyright 2020 Nicolas P. Rougier 3 | ;; 4 | ;; This file is not part of GNU Emacs. 5 | ;; 6 | ;; This program is free software: you can redistribute it and/or 7 | ;; modify it under the terms of the GNU General Public License as 8 | ;; published by the Free Software Foundation, either version 3 of the 9 | ;; License, or (at your option) any later version. 10 | ;; 11 | ;; This program is distributed in the hope that it will be useful, but 12 | ;; WITHOUT ANY WARRANTY; without even the implied warranty of 13 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | ;; General Public License for more details. 15 | ;; 16 | ;; You should have received a copy of the GNU General Public License 17 | ;; along with this program. If not, see 18 | (setq gc-cons-threshold (* 100 1024 1024)) 19 | (setq inhibit-startup-screen t) 20 | (setq inhibit-startup-echo-area-message t) 21 | (setq inhibit-startup-message t) 22 | (setq initial-scratch-message nil) 23 | (setq initial-major-mode 'org-mode) 24 | (setq-default indent-tabs-mode nil) 25 | (setq pop-up-windows nil) 26 | (tool-bar-mode 0) 27 | (tooltip-mode 0) 28 | (scroll-bar-mode 0) 29 | 30 | (defun custom/kill-this-buffer () 31 | (interactive) (kill-buffer (current-buffer))) 32 | (global-set-key (kbd "C-x k") 'custom/kill-this-buffer) 33 | 34 | (require 'uniquify) 35 | (setq uniquify-buffer-name-style 'forward) 36 | 37 | (save-place-mode 1) 38 | 39 | (global-set-key (kbd "C-z") 'undo) 40 | (global-set-key (kbd "C-x C-x") 'execute-extended-command) 41 | 42 | (provide 'sanity) 43 | -------------------------------------------------------------------------------- /screenshots/screenshot-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rougier/elegant-emacs/d901cf9456b030707ee39ce7cc35e9b988040cf0/screenshots/screenshot-0.png -------------------------------------------------------------------------------- /screenshots/screenshot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rougier/elegant-emacs/d901cf9456b030707ee39ce7cc35e9b988040cf0/screenshots/screenshot-1.png -------------------------------------------------------------------------------- /screenshots/screenshot-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rougier/elegant-emacs/d901cf9456b030707ee39ce7cc35e9b988040cf0/screenshots/screenshot-10.png -------------------------------------------------------------------------------- /screenshots/screenshot-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rougier/elegant-emacs/d901cf9456b030707ee39ce7cc35e9b988040cf0/screenshots/screenshot-11.png -------------------------------------------------------------------------------- /screenshots/screenshot-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rougier/elegant-emacs/d901cf9456b030707ee39ce7cc35e9b988040cf0/screenshots/screenshot-2.png -------------------------------------------------------------------------------- /screenshots/screenshot-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rougier/elegant-emacs/d901cf9456b030707ee39ce7cc35e9b988040cf0/screenshots/screenshot-3.png -------------------------------------------------------------------------------- /screenshots/screenshot-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rougier/elegant-emacs/d901cf9456b030707ee39ce7cc35e9b988040cf0/screenshots/screenshot-4.png -------------------------------------------------------------------------------- /screenshots/screenshot-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rougier/elegant-emacs/d901cf9456b030707ee39ce7cc35e9b988040cf0/screenshots/screenshot-5.png -------------------------------------------------------------------------------- /screenshots/screenshot-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rougier/elegant-emacs/d901cf9456b030707ee39ce7cc35e9b988040cf0/screenshots/screenshot-6.png -------------------------------------------------------------------------------- /screenshots/screenshot-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rougier/elegant-emacs/d901cf9456b030707ee39ce7cc35e9b988040cf0/screenshots/screenshot-7.png -------------------------------------------------------------------------------- /screenshots/screenshot-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rougier/elegant-emacs/d901cf9456b030707ee39ce7cc35e9b988040cf0/screenshots/screenshot-8.png -------------------------------------------------------------------------------- /screenshots/screenshot-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rougier/elegant-emacs/d901cf9456b030707ee39ce7cc35e9b988040cf0/screenshots/screenshot-9.png --------------------------------------------------------------------------------