├── LICENSE ├── README.md ├── changelog.xml ├── cheatsheet.css ├── cheatsheet.dtd ├── emacs-cs.pdf ├── emacs-cs.xml ├── todo.xml └── tohtml.xsl /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 | {one line to give the program's name and a brief idea of what it does.} 635 | Copyright (C) {year} {name of author} 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 | {project} Copyright (C) {year} {fullname} 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 | # The Big Emacs Cheat Sheet 2 | 3 | ## Rationale 4 | 5 | I'm reading the IBM Emacs tutorial (to read it follow the link given 6 | in the following sections) and I feel the need of taking note of what 7 | I'm reading. So I started to write this cheat sheet. 8 | 9 | I'm studyng XML and XSLT too, so I preferred to use XML to track down 10 | my Emacs commands. 11 | 12 | 13 | ## How to use this cheat sheet. 14 | 15 | The body of the cheat sheet is an XML structure contained into the 16 | file `emacs-cs.xml`; since it's provided a stylesheet for the XML 17 | (`tohtml.xsl`), you can read the cheat sheet directly with the web 18 | browser, just like an HTML page. Just put into the same directory 19 | the files `emacs-cs.xml`, `tohtml.xsl` and `cheatsheet.css`, then open 20 | `emacs-cs.xml` with your browser. 21 | 22 | > **Note**: The font management in the CSS file uses some advanced 23 | > features that are (afaik) only supported by Firefox. The font 24 | > rendering on other browsers is highly unpredictable. 25 | 26 | The stylesheet contains directives for printing, so you can print the 27 | cheatsheet with the "print" feature of your web browser (again, it is 28 | tested on firefox, I don't know anything about other browsers). 29 | 30 | This is the biggest Emacs cheat sheet I've seen on the web. You can 31 | print it on four sides of sheets in A4 format (landscape), or on two 32 | sides of sheets in A3 format (portrait). 33 | 34 | 35 | ## The simple way 36 | 37 | I've added the file `emacs-cs.pdf` as a sample of the printed form of 38 | the cheat sheet. I've printed it with firefox with the following 39 | settings: 40 | 41 | Format: A4 42 | Orientation: landscape 43 | Scale: Custom > 104% 44 | Print on file > ~/Desktop/emacs-cs.pdf 45 | Options > Header and Footer > Bottom Right: Page # 46 | 47 | It takes six sides of A4 sheets. 48 | 49 | Notably, I've managed the metadata of the PDF file with Emacs. 50 | 51 | 52 | ## Acknowledgements 53 | 54 | * The design style for the card is inspired from the [famous one][1] 55 | of Stephen Gildea. 56 | * Most of the material and it's organization is taken from 57 | the IBM's [Emacs tutorial][2]. 58 | * The section about the Emacs games is taken mostly from the 59 | Mickey Petersen's blog [Mastering Emacs][3]. 60 | * The paragraph about "nXML mode" is taken and adapted from the 61 | document "*XML document authoring with emacs nxml-mode*" of the 62 | [New Mexico Tech][6]. 63 | * Regular expressions and some other details are taken from 64 | the [Emacs Wiki][4]. 65 | * The sections about abbreviations (or *abbrev* minor mode) and 66 | *re-builder* are taken and adapted from the [Emacs 67 | manual][5]*. 68 | 69 |
70 | * All of the listed links were active on november 2017. 71 | 72 | [1]: https://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf 73 | [2]: https://www.ibm.com/developerworks/aix/tutorials/au-emacs1/index.html 74 | [3]: https://www.masteringemacs.org/article/fun-games-in-emacs 75 | [4]: https://www.emacswiki.org 76 | [5]: https://www.gnu.org/software/emacs/manual/ 77 | [6]: http://www.nmt.edu/tcc/help/pubs/nxml/ 78 | 79 | -------------------------------------------------------------------------------- /changelog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | Deleted the CSS directives from the xsl 9 | stylesheet and created an external CSS file. 10 | Google fonts for serif and 11 | monospace. 12 | A note about new features. 13 | 14 | 15 | 16 | Minor changes 17 | Replaced the 'b' element name with 18 | 'strong' 19 | 20 | 21 | 22 | The CSS listing now is more 23 | 'cascading'. 24 | 25 | 26 | 27 | 30 | 31 | Some minor addings. 32 | 33 | 34 | 35 | Minor changes. 36 | Printed smaller, on six pages. 37 | 38 | 39 | 40 | 43 | 44 | A paragraph about the "re-builder" minor 45 | mode. Closed task #17. 46 | 47 | 48 | 49 | Minor changes. 50 | A better formatting for paragraphs about 51 | regular expressions. Closed task #13. 52 | 53 | 54 | 55 | Minor bugs. 56 | 57 | 58 | 59 | 62 | 63 | Some aknowledgements. 64 | Two paragraphs about regular 65 | expressions. Closed task #11. 66 | A paragraph about highlighting. 67 | Instruction "save as" C-x C-w 68 | Added formatting features to the "d" 69 | element. Closed task #9. 70 | Commented the DTD instructions. 71 | 72 | 73 | 74 | Shortened some items in the "nXML mode" 75 | paragraph. Closed task #3. 76 | Some strings changed. 77 | Tags "k", "f" and "d" changed 78 | respectively in "key>, "func" and "descr". 79 | Reordered some paragraphs 80 | location. Closed task #12. 81 | The attribute "resolved" now is "closed". 82 | Better formatting. 83 | Formatting of "k" and "f" elements now is 84 | more "elastic". 85 | New names of tags according to 86 | "cheatsheet.dtd". Closed task #15. 87 | New title of the resulting HTML 88 | document. 89 | Rewritten the logic of the "page-brake" 90 | directives. Generalized the formatting with some more CSS 91 | directives. Closed task #10. 92 | More explicit names for tags "k", "f" 93 | and "d": "key", "func" and "descr". Closed task #14. 94 | Updated with the new features. 95 | Renamed some tags into the repo. 96 | 97 | 98 | 99 | Deleted some minor bugs with xmllint. 100 | 101 | 102 | 103 | 106 | 107 | Formalized the structure of 108 | "emacs-cs.xml". 109 | New "Abbreviations" chapter. Solved 110 | task #8. 111 | A new aknowledgement. 112 | 113 | 114 | 115 | Deleted many "page-break" directives. 116 | Updated the sample file with the new 117 | addings. 118 | 119 | 120 | 121 | 124 | 125 | Added this pdf to the repo as a 126 | dowloadable example. 127 | Some lines about the newly added 128 | file "emacs-cs.pdf" 129 | 130 | 131 | 132 | Now the name of the file is 133 | "emacs-cs.xml" 134 | Field "description" (<d>) now setted 135 | with "page-break-inside: auto". 136 | Field "function" (<f>) now is 137 | right-justifyed. 138 | The tag <kbd> now now is formatted 139 | with the MathJax_Typewriter font. Solved task #5. 140 | 141 | 142 | 143 | Fixed the indentation. 144 | 145 | 146 | 147 | 150 | 151 | Matching parentheses and shell 152 | commands. Solved tasks #6 and #7 153 | New aknowledgments". 154 | 155 | 156 | 157 | 160 | 161 | Sixth installement. 162 | Seventh (last) installement. 163 | A subtitle; section "Aknowledgments". 164 | Added the attribute "n" (number) to the tag 165 | "task". 166 | 167 | 168 | 169 | Rewritten the section about the Emacs 170 | games. Solved task #4 171 | Deleted the tag "version", replaced by 172 | the attribute "ver". 173 | 174 | 175 | 176 | 179 | 180 | A better dictionary. 181 | Better explanations. 182 | 183 | 184 | 185 | Now the name is "todo.xml". 186 | 187 | 188 | 189 | HTML code into the "d" tag now transforms 190 | properly. 191 | Enclosed keyboard commands into "d" tags 192 | between "kbd" tags. 193 | Minor changes. 194 | 195 | 196 | 197 | 200 | 201 | IBM course, 5th module. 202 | Attribute "email" into the tag 203 | "release" 204 | Added the readme file. 205 | 206 | 207 | 208 | "@font-face" now uses only local files. 209 | 210 | 211 | 212 | 215 | 216 | Attribute "file" into the "i" tag. 217 | "Things you shuld never know about", a good 218 | idea from another cheatsheet. 219 | IBM course, 3rd and 4th module. 220 | 221 | 222 | 223 | Modified the structure. 224 | Implemented the footer with 225 | "padding-bottom" 226 | 227 | 228 | 229 | 232 | 233 | Added the footer; 234 | Added the Caslon fonts; 235 | Added this changelog; 236 | Added CSS instructions for the printing pagination; 237 | Added a TODO list file; 238 | Added some content. 239 | 240 | 241 | 242 | Deleted the empty lines between the paragraphs; replaced with 243 | "padding-bottom" values in the CSS. 244 | Some minor changes. 245 | 246 | 247 | 248 | 251 | 252 | Created the project; 253 | 254 | 255 | 256 | 257 | 258 | 312 | -------------------------------------------------------------------------------- /cheatsheet.css: -------------------------------------------------------------------------------- 1 | /* 2 | local fonts 3 | serif 4 | Caslon regular 5 | */ 6 | @font-face { 7 | font-family: 'Caslon Pro'; 8 | src: local('Adobe Caslon Pro Regular'), 9 | local('ACaslonPro-Regular'); 10 | font-weight: normal; 11 | font-style: normal; 12 | } 13 | 14 | /* 15 | local fonts 16 | serif 17 | Caslon bold 18 | */ 19 | @font-face { 20 | font-family: 'Caslon Pro'; 21 | src: local('Adobe Caslon Pro Bold'), 22 | local('ACaslonPro-Bold'); 23 | font-weight: bold; 24 | font-style: normal; 25 | } 26 | 27 | /* 28 | local fonts 29 | serif 30 | Caslon italic 31 | */ 32 | @font-face { 33 | font-family: 'Caslon Pro'; 34 | src: local('Adobe Caslon Pro Italic'), 35 | local('ACaslonPro-Italic'); 36 | font-weight: normal; 37 | font-style: italic; 38 | } 39 | 40 | /* 41 | local fonts 42 | monospace 43 | Mathjax Typewriter 44 | */ 45 | @font-face { 46 | font-family: 'Mathjax Typewriter'; 47 | src: local('MathJax_Typewriter'), 48 | local('MathJax_Typewriter-Regular'); 49 | font-weight: normal; 50 | font-style: normal; 51 | } 52 | 53 | /* 54 | Google fonts: 55 | serif 56 | Cormorant Garamond Italic 57 | latin-ext 58 | */ 59 | @font-face { 60 | font-family: 'Cormorant Garamond'; 61 | font-style: italic; 62 | font-weight: 400; 63 | src: local('Cormorant Garamond Italic'), 64 | local('CormorantGaramond-Italic'), 65 | url(https://fonts.gstatic.com/s/cormorantgaramond/v5/eGTlzchVxDKKvK6d7drzlumAg5ssEa0WGIxkzKvYUGI.woff2) format('woff2'); 66 | unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, 67 | U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; 68 | } 69 | 70 | /* 71 | Google font: 72 | serif 73 | Cormorant Garamond Italic 74 | latin 75 | */ 76 | @font-face { 77 | font-family: 'Cormorant Garamond'; 78 | font-style: italic; 79 | font-weight: 400; 80 | src: local('Cormorant Garamond Italic'), 81 | local('CormorantGaramond-Italic'), 82 | url(https://fonts.gstatic.com/s/cormorantgaramond/v5/eGTlzchVxDKKvK6d7drzlvi-tDgJCth50KiWWhEUOb0.woff2) format('woff2'); 83 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, 84 | U+02C6, U+02DA, U+02DC, 85 | U+2000-206F, U+2074, U+20AC, 86 | U+2212, U+2215; 87 | } 88 | 89 | /* 90 | Google font: 91 | serif 92 | Cormorant Garamond bold italic 93 | latin-ext 94 | */ 95 | @font-face { 96 | font-family: 'Cormorant Garamond'; 97 | font-style: italic; 98 | font-weight: 700; 99 | src: local('Cormorant Garamond Bold Italic'), 100 | local('CormorantGaramond-BoldItalic'), 101 | url(https://fonts.gstatic.com/s/cormorantgaramond/v5/zuqx3k1yUEl3Eavo-ZPEAuj-olUBLqgnONkVe92Cgt_2Ot9t5h1GRSTIE78Whtoh.woff2) format('woff2'); 102 | unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, 103 | U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; 104 | } 105 | 106 | /* 107 | Google font: 108 | serif 109 | Cormorant Garamond bold italic 110 | latin 111 | */ 112 | @font-face { 113 | font-family: 'Cormorant Garamond'; 114 | font-style: italic; 115 | font-weight: 700; 116 | src: local('Cormorant Garamond Bold Italic'), 117 | local('CormorantGaramond-BoldItalic'), 118 | url(https://fonts.gstatic.com/s/cormorantgaramond/v5/zuqx3k1yUEl3Eavo-ZPEAjU8ONjE7togmghLbfzbi70.woff2) format('woff2'); 119 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, 120 | U+02C6, U+02DA, U+02DC, 121 | U+2000-206F, U+2074, U+20AC, 122 | U+2212, U+2215; 123 | } 124 | 125 | /* 126 | Google font: 127 | serif 128 | Cormorant Garamont regular 129 | latin-ext 130 | */ 131 | @font-face { 132 | font-family: 'Cormorant Garamond'; 133 | font-style: normal; 134 | font-weight: 400; 135 | src: local('Cormorant Garamond Regular'), 136 | local('CormorantGaramond-Regular'), 137 | url(https://fonts.gstatic.com/s/cormorantgaramond/v5/EI2hhCO6kSfLAy-Dpd8fdzQAQ_YXXHNmahILJeEq070.woff2) format('woff2'); 138 | unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, 139 | U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; 140 | } 141 | 142 | /* 143 | Google font: 144 | serif 145 | Cormorant Garamond regular 146 | latin 147 | */ 148 | @font-face { 149 | font-family: 'Cormorant Garamond'; 150 | font-style: normal; 151 | font-weight: 400; 152 | src: local('Cormorant Garamond Regular'), 153 | local('CormorantGaramond-Regular'), 154 | url(https://fonts.gstatic.com/s/cormorantgaramond/v5/EI2hhCO6kSfLAy-Dpd8fdz_Dq57Lo4snLFwBvsf35Hk.woff2) format('woff2'); 155 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, 156 | U+02C6, U+02DA, U+02DC, 157 | U+2000-206F, U+2074, U+20AC, 158 | U+2212, U+2215; 159 | } 160 | 161 | /* 162 | Google font: 163 | serif 164 | Cormorant Garamond bold 165 | latin-ext 166 | */ 167 | @font-face { 168 | font-family: 'Cormorant Garamond'; 169 | font-style: normal; 170 | font-weight: 700; 171 | src: local('Cormorant Garamond Bold'), 172 | local('CormorantGaramond-Bold'), 173 | url(https://fonts.gstatic.com/s/cormorantgaramond/v5/iEjm9hVxcattz37Y8gZwVfL06F_JhvErhhtTMpt0Ekw.woff2) format('woff2'); 174 | unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, 175 | U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; 176 | } 177 | 178 | /* 179 | Google font: 180 | serif 181 | Cormorant Garamond bold 182 | latin 183 | */ 184 | @font-face { 185 | font-family: 'Cormorant Garamond'; 186 | font-style: normal; 187 | font-weight: 700; 188 | src: local('Cormorant Garamond Bold'), 189 | local('CormorantGaramond-Bold'), 190 | url(https://fonts.gstatic.com/s/cormorantgaramond/v5/iEjm9hVxcattz37Y8gZwVX9I6T0daTnoiQ8pbdYJRgI.woff2) format('woff2'); 191 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, 192 | U+02C6, U+02DA, U+02DC, 193 | U+2000-206F, U+2074, U+20AC, 194 | U+2212, U+2215; 195 | } 196 | 197 | /* 198 | Google fonts: 199 | monospace 200 | Inconsolata 201 | latin-ext 202 | */ 203 | @font-face { 204 | font-family: 'Inconsolata'; 205 | font-style: normal; 206 | font-weight: 400; 207 | src: local('Inconsolata Regular'), 208 | local('Inconsolata-Regular'), 209 | url(https://fonts.gstatic.com/s/inconsolata/v16/BjAYBlHtW3CJxDcjzrnZCCYE0-AqJ3nfInTTiDXDjU4.woff2) format('woff2'); 210 | unicode-range: U+0100-024F, U+1E00-1EFF, 211 | U+20A0-20AB, U+20AD-20CF, 212 | U+2C60-2C7F, U+A720-A7FF; 213 | } 214 | 215 | /* 216 | Google fonts: 217 | monospace 218 | Inconsolata 219 | latin 220 | */ 221 | @font-face { 222 | font-family: 'Inconsolata'; 223 | font-style: normal; 224 | font-weight: 400; 225 | src: local('Inconsolata Regular'), 226 | local('Inconsolata-Regular'), 227 | url(https://fonts.gstatic.com/s/inconsolata/v16/BjAYBlHtW3CJxDcjzrnZCI4P5ICox8Kq3LLUNMylGO4.woff2) format('woff2'); 228 | unicode-range: U+0000-00FF, U+0131, 229 | U+0152-0153, U+02C6, 230 | U+02DA, U+02DC, 231 | U+2000-206F, U+2074, 232 | U+20AC, U+2212, 233 | U+2215; 234 | } 235 | 236 | /* ========================================================= */ 237 | 238 | body { 239 | font-family: 'Caslon Pro', 'Cormorant Garamond', serif; 240 | font-size-adjust: .414; 241 | font-size: .75em; 242 | column-count: 4; 243 | column-gap: 10px; 244 | } 245 | table { 246 | font-size: 1em; 247 | width: 100%; 248 | border: 0; 249 | border-spacing: 0; 250 | } 251 | td { 252 | text-indent: 0; 253 | vertical-align: top; 254 | padding: 0; 255 | border-spacing: 10px; 256 | } 257 | kbd { 258 | font-family: 'Mathjax Typewriter', 'Inconsolata', monospace; 259 | font-size-adjust: .431; 260 | } 261 | .headtitle { 262 | font-size: 1.25em; 263 | font-weight: bold; 264 | } 265 | .headsubtitle { 266 | font-size: 1em; 267 | font-weight: bold; 268 | } 269 | .headerdiv { 270 | text-align: center; 271 | margin-bottom: 1em; 272 | } 273 | .bodydiv { 274 | margin-bottom: .66667em; 275 | page-break-after: avoid; 276 | } 277 | .bodytitle { 278 | text-align: center; 279 | font-weight: bold; 280 | } 281 | .itdiv { 282 | padding-bottom: .125em; 283 | } 284 | .footdiv { 285 | page-break-inside: avoid; 286 | font-size: .75em; 287 | } 288 | .foothd{ 289 | page-break-inside: avoid; 290 | padding-top: .3em; 291 | padding-bottom: .3em; 292 | } 293 | 294 | /* 295 | printed page 296 | */ 297 | @page { 298 | size: 297mm 210mm; 299 | margin: 10mm; 300 | orphans: 2; 301 | widows: 2; 302 | } 303 | -------------------------------------------------------------------------------- /cheatsheet.dtd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 13 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 31 | 32 | 34 | 35 | 40 | 41 | 42 | 43 | 44 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /emacs-cs.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PeteZaSayari/emacs-cs/79aaf71bd699d8c298b30ed75e13551ed815554c/emacs-cs.pdf -------------------------------------------------------------------------------- /emacs-cs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | The Big Emacs Cheatsheet 9 | For version 25 10 |
11 | 12 | 13 | 14 | 15 | --visit=<filespec> | --file=<filespec> | 16 | <filespec> 17 | 18 | Open filespec into individual buffers for 19 | editing. 20 | 21 | 22 | 23 | +row[:column] 24 | 25 | Move point to line number row and (optional) horizontal 26 | position column in the file (default is +1:1). 27 | 28 | 29 | 30 | --insert <file> 31 | 32 | Insert file at the beginning of the buffer. 33 | 34 | 35 | 36 | --load <file> | -l <file> 37 | 38 | Execute the Emacs Lisp instructions in file. 39 | 40 | 41 | 42 | --g <dimensions> | --geometry 43 | <dimensions> 44 | 45 | Set the window's width, height, and position according 46 | to the given X window dimensions (the default is to make the 47 | window 80x40 characters). 48 | 49 | 50 | 51 | -nw | --no-windows 52 | 53 | In X, don't use an X client window, but open in the 54 | current terminal window instead. This option doesn't affect 55 | console sessions. 56 | 57 | 58 | 59 | 60 | 61 | C-c 62 | 63 | Commands particular to the current editing mode 64 | 65 | 66 | 67 | C-x 68 | 69 | Commands for files and buffers 70 | 71 | 72 | 73 | C-h 74 | 75 | Help commands 76 | 77 | 78 | 79 | M-x 80 | 81 | Literal function name 82 | 83 | 84 | 85 | M-! 86 | shell-command 87 | Execute external shell command from within Emacs.The 88 | output from the shell command is displayed in the minibuffer 89 | or in a separate buffer, depending on the output size. When 90 | used with a prefix argument (e.g, C-u M-!), the 91 | shell-command output is inserted in the current buffer at 92 | point. 93 | 94 | 95 | 96 | M-| 97 | shell-command-on-region 98 | Provide the region text to the shell command as input. 99 | If you want the shell to replace the region text with the 100 | output from the shell command, use C-u M-|. 101 | 102 | 103 | 104 | 105 | 106 | C-x C-f 107 | find-file 108 | Visit a file. 109 | 110 | 111 | 112 | C-x C-s 113 | save-buffer 114 | Save current buffer to disk. 115 | 116 | 117 | 118 | C-x C-w 119 | write-file 120 | Ask for a filename and write the current buffer with 121 | that name. Like the command "Save as ..." on other 122 | editors. 123 | 124 | 125 | 126 | C-x s 127 | save-some-buffers 128 | Ask about saving all unsaved buffers to disk. 129 | 130 | 131 | 132 | C-x C-c 133 | save-buffers-kill-emacs 134 | Ask about saving all unsaved buffers to disk and exit 135 | Emacs. 136 | 137 | 138 | 139 | C-x C-z | C-z 140 | suspend-emacs 141 | Suspend Emacs and make it a background process (press 142 | fg | fg %emacs to awake it back. 143 | 144 | 145 | 146 | C-x b 147 | Switch-to-buffer 148 | Display buffer BUFFER-OR-NAME in the 149 | selected window. 150 | 151 | 152 | 153 | C-x C-b 154 | list-buffers 155 | List all buffers. 156 | 157 | 158 | 159 | C-x k 160 | kill-buffer 161 | Kill a buffer (the current buffer, by default). 162 | 163 | 164 | 165 | C-x C-q 166 | vc-toggle-read-only 167 | Toggle read-only status on the current buffer (and 168 | perform version control if applicable). 169 | 170 | 171 | 172 | C-x i 173 | insert-file 174 | Insert the contents of a file at point. 175 | 176 | 177 | 178 | 179 | 180 | C-p | UpArrow 181 | previous-line 182 | Move point up to the previous line. 183 | 184 | 185 | 186 | C-n | DownArrow 187 | next-line 188 | Move point down to the next line. 189 | 190 | 191 | 192 | C-f | RightArrow 193 | forward-char 194 | Move point forward to the next character. 195 | 196 | 197 | 198 | C-b | LeftArrow 199 | back-char 200 | Move point backward to the previous character. 201 | 202 | 203 | 204 | M-f | C-RightArrow 205 | forward-word 206 | Move point forward to the next word. 207 | 208 | 209 | 210 | M-b | C-LeftArrow 211 | backward-word 212 | Move point backward to the previous word. 213 | 214 | 215 | 216 | C-v | PgDn 217 | scroll-up 218 | Scroll the text upward by a screen. 219 | 220 | 221 | 222 | M-v | PgUp 223 | scroll-down 224 | Scroll the text downward by a screen. 225 | 226 | 227 | 228 | C-Home 229 | beginning-of-buffer 230 | Move point to the beginning of the buffer. (On some 231 | versions, this key is defined by default to move to the 232 | beginning of the current line.) 233 | 234 | 235 | 236 | C-End 237 | end-of-buffer 238 | Move point to the end of the buffer. (On some versions, 239 | this key is defined by default to move to the end of the 240 | current line.) 241 | 242 | 243 | 244 | Home | C-a 245 | beginning-of-line 246 | Move point to the beginning of the line. 247 | 248 | 249 | 250 | End | C-e 251 | end-of-line 252 | Move point to the end of the line. 253 | 254 | 255 | 256 | M-a 257 | beginning-of-sentence 258 | Move point to the beginning of the sentence. 259 | 260 | 261 | 262 | M-e 263 | end-of-sentence 264 | Move point to the end of the sentence. 265 | 266 | 267 | 268 | C-{ 269 | beginning-of-paragraph 270 | Move point to the beginning of the paragraph. 271 | 272 | 273 | 274 | C-} 275 | end-of-paragraph 276 | Move point to the end of the paragraph. 277 | 278 | 279 | 280 | 281 | 282 | C-M-n 283 | forward-list 284 | Move forward over a parenthetical group. 285 | 286 | 287 | 288 | C-M-p 289 | backward-list 290 | Move backward over a parenthetical group. 291 | 292 | 293 | 294 | C-M-f 295 | forward-sexp 296 | Move forward over a balanced expression. 297 | 298 | 299 | 300 | C-M-b 301 | backward-sexp 302 | Move backward over a balanced expression. 303 | 304 | 305 | 306 | C-M-k 307 | kill-sexp 308 | Kill balanced expression forward. 309 | 310 | 311 | 312 | C-M-SPC 313 | mark-sexp 314 | Put the mark at the end of the sexp. 315 | 316 | 317 | 318 | 319 | 320 | Ins 321 | overwrite-mode 322 | Toggle overwrite mode (default is off). 323 | 324 | 325 | 326 | Backspace | Del 327 | delete-backward-char 328 | Delete the character before point. 329 | 330 | 331 | 332 | C-d 333 | delete-char 334 | Delete the character at point. 335 | 336 | 337 | 338 | M-d 339 | kill-word 340 | Delete the characters from point forward to the end of 341 | the word. 342 | 343 | 344 | 345 | M-Backspace | M-Del 346 | backward-kill-word 347 | Delete the characters from point backward to the 348 | beginning of the word. 349 | 350 | 351 | 352 | C-_ 353 | undo 354 | Undo your last typing or action. To redo just 355 | undo the last undo (!). 356 | 357 | 358 | 359 | C-x z 360 | repeat 361 | Repeat most recently executed command. 362 | 363 | 364 | 365 | C-x M-: | C-x M-ESC 366 | repeat-complex-command 367 | Edit and re-evaluate last complex command. A complex 368 | command is one which used the minibuffer. The command is 369 | placed in the minibuffer as a Lisp form for editing. The 370 | result is executed, repeating the command as changed. 371 | 372 | 373 | 374 | C-q[CHAR] or [NUM] 375 | quoted-insert 376 | Insert, at point, the literal character keypress or the 377 | character whose octal value is XXX. 378 | 379 | 380 | 381 | C-u[NUM][COMMAND] 382 | universal-argument 383 | Execute command a total of number (default 4) times in 384 | succession. 385 | 386 | 387 | 388 | 389 | 390 | C-Space 391 | set-mark-command 392 | Set the mark at point. 393 | 394 | 395 | 396 | C-k 397 | kill-line 398 | Kill all text from point to the end of the 399 | line. 400 | 401 | 402 | 403 | C-w 404 | kill-region 405 | Kill the region. 406 | 407 | 408 | 409 | M-w 410 | kill-ring-save 411 | Save the region in the kill ring, but don't kill 412 | it. 413 | 414 | 415 | 416 | C-y 417 | yank 418 | Yank text from the kill ring. 419 | 420 | 421 | 422 | 423 | 424 | C-space 425 | set-mark-command 426 | Marks one corner of a rectangle (point marks the 427 | opposite corner). 428 | 429 | 430 | 431 | C-x r k 432 | kill-rectangle 433 | Kills the current rectangle and saves it in a special 434 | rectangle buffer. 435 | 436 | 437 | 438 | C-x r d 439 | delete-rectangle 440 | Deletes the current rectangle and doesn't save it for 441 | yanking. 442 | 443 | 444 | 445 | C-x r c 446 | clear-rectangle 447 | Clears the current rectangle, replacing the entire area 448 | with whitespace. 449 | 450 | 451 | 452 | C-x r o 453 | open-rectangle 454 | Opens the current rectangle, filling the entire area 455 | with whitespace and moving all text from the rectangle to the 456 | right. 457 | 458 | 459 | 460 | C-x r y 461 | yank-rectangle 462 | Yanks the contents of the last-killed rectangle at 463 | point, moving all existing text to the right. 464 | 465 | 466 | 467 | 468 | 469 | C-u C-space 470 | pop-to-mark-command 471 | Moves to the previous mark in the mark ring. 472 | 473 | 474 | 475 | C-x C-x 476 | exchange-point-and-mark 477 | Swaps the location of point and the mark. 478 | 479 | 480 | 481 | M-@ 482 | mark-word 483 | Marks all text from point to the end of the current 484 | word. 485 | 486 | 487 | 488 | M-h 489 | mark-paragraph 490 | Marks the current paragraph, regardless of the location 491 | of point. 492 | 493 | 494 | 495 | 496 | transient-mark-mode 497 | Toggles Transient Mark mode. 498 | 499 | 500 | 501 | C-x h 502 | mark-whole-buffer 503 | Marks the entire buffer, regardless of the location of 504 | point. 505 | 506 | 507 | 508 | 509 | 510 | [NUM] C-k 511 | kill-line 512 | Kills integer number of lines. If 0, kills from point 513 | to the beginning of the line; if negative, kills in reverse 514 | (not sure for version 25). 515 | 516 | 517 | 518 | M-k 519 | kill-sentence 520 | Kills from point to the end of the sentence. 521 | 522 | 523 | 524 | M-z 525 | zap-to-char 526 | Zaps all text from point to the specified 527 | character. 528 | 529 | 530 | 531 | M-y 532 | yank-pop 533 | Moves to the next slot in the kill ring. 534 | 535 | 536 | 537 | [NUM] C-y 538 | yank 539 | Yanks the specified slot in the kill ring. 540 | 541 | 542 | 543 | 544 | 545 | Esc 546 | 547 | Prefix for mode-specific commands 548 | 549 | 550 | 551 | Esc Tab | M-Tab 552 | ispell-complete-word 553 | 554 | 555 | 556 | 557 | Esc S | M-S 558 | center-paragraph 559 | 560 | 561 | 562 | 563 | Esc s | M-s 564 | center-line 565 | 566 | 567 | 568 | 569 | 570 | 571 | C-x C-i | C-x Tab 572 | indent-rigidly 573 | This command indents lines in the region (or at 574 | point). 575 | 576 | 577 | 578 | 579 | fill-region 580 | This command fills all paragraphs in the 581 | region. 582 | 583 | 584 | 585 | M-q 586 | fill-paragraph 587 | This command fills the single paragraph at 588 | point. 589 | 590 | 591 | 592 | M-\ 593 | delete-horizontal-space 594 | This command removes any horizontal space to the right 595 | and left of point. 596 | 597 | 598 | 599 | C-o 600 | open-line 601 | This command opens a new line of vertical space below 602 | point, without moving point. 603 | 604 | 605 | 606 | C-t 607 | transpose-chars 608 | This command transposes the single characters to the 609 | right and left of point. 610 | 611 | 612 | 613 | M-t 614 | transpose-words 615 | This command transposes the single words to the right 616 | and left of point. 617 | 618 | 619 | 620 | C-x C-t 621 | transpose-lines 622 | This command transposes the line at point with the line 623 | before it. 624 | 625 | 626 | 627 | M-^ 628 | delete-indentation 629 | This command joins the line at point with the previous 630 | line. Preface with C-1 to join the line at point 631 | with the next line. 632 | 633 | 634 | 635 | M-u 636 | uppercase-word 637 | This command converts the text at point to the end of 638 | the word to uppercase letters. 639 | 640 | 641 | 642 | M-l 643 | downcase-word 644 | This command converts the text at point to the end of 645 | the word to lowercase letters. 646 | 647 | 648 | 649 | C-x C-l 650 | downcase-region 651 | This command converts the region to lowercase 652 | letters. 653 | 654 | 655 | 656 | C-x C-u 657 | upcase-region 658 | This command converts the region to uppercase 659 | letters. 660 | 661 | 662 | 663 | 664 | 665 | C-s [STRING] [C-w] [C-y] 666 | isearch-forward 667 | Incrementally search forward through the buffer for 668 | string (default is the last search string you gave, if any); 669 | C-w uses the text from point forward to the end of 670 | the word and C-y uses everything from point to the 671 | end of the line. 672 | 673 | 674 | 675 | C-r [STRING] [C-w] [C-y] 676 | isearch-backward 677 | Incrementally search backward through the buffer for 678 | string (default is the last search string you gave, if any); 679 | C-w uses the text from point forward to the end of 680 | the word, and C-y uses everything from point to the 681 | end of the line. 682 | 683 | 684 | 685 | C-s Enter C-w [WORD OR PHRASE] 686 | word-search-forward 687 | Search forward through the buffer for the given word or 688 | phrase, regardless of spacing. 689 | 690 | 691 | 692 | C-r Enter C-w [WORD OR PHRASE] 693 | word-search-backward 694 | Search backward through the buffer for the given word 695 | or phrase, regardless of spacing. 696 | 697 | 698 | 699 | C-M-s 700 | isearch-forward-regexp 701 | Incrementally search forward through the buffer for a 702 | given regular expression. 703 | 704 | 705 | 706 | C-M-r 707 | isearch-backward-regexp 708 | Incrementally search backward through the buffer for a 709 | given regular expression. 710 | 711 | 712 | 713 | 714 | replace-string 715 | Search for a given string from point to the end of the 716 | buffer and replace it with a given string. 717 | 718 | 719 | 720 | 721 | replace-regexp 722 | Search for a given regular expression from point to the 723 | end of the buffer and replace it with a given string. 724 | 725 | 726 | 727 | M-% 728 | query-replace 729 | Search for a given string from point to the end of the 730 | buffer and, in each instance, query to replace it with a given 731 | string. 732 | 733 | 734 | 735 | C-M-% 736 | query-replace-regexp 737 | Search for a given regular expression from point to the 738 | end of the buffer and, in each instance, query to replace it 739 | with a given string. 740 | 741 | 742 | 743 | 744 | 745 | . 746 | any character (but newline) 747 | 748 | 749 | 750 | 751 | * 752 | previous character or group, repeated 0 or more 753 | time 754 | 755 | 756 | 757 | 758 | + 759 | previous character or group, repeated 1 or more 760 | time 761 | 762 | 763 | 764 | 765 | ? 766 | previous character or group, repeated 0 or 1 time 767 | 768 | 769 | 770 | 771 | ^ 772 | start of line 773 | 774 | 775 | 776 | 777 | $ 778 | end of line 779 | 780 | 781 | 782 | 783 | [...] 784 | any character between brackets 785 | 786 | 787 | 788 | 789 | [^..] 790 | any character not in the brackets 791 | 792 | 793 | 794 | 795 | [a-z] 796 | any character between a and z 797 | 798 | 799 | 800 | 801 | \ 802 | prevents interpretation of following special char 803 | 804 | 805 | 806 | 807 | \| or \w 808 | word constituent 809 | 810 | 811 | 812 | 813 | \b 814 | word boundary 815 | 816 | 817 | 818 | 819 | \sc 820 | character with c syntax (e.g. \s- for whitespace 821 | char) 822 | 823 | 824 | 825 | 826 | \( \) 827 | start\end of group 828 | 829 | 830 | 831 | 832 | \< \> 833 | start\end of word (faulty rendering: backslash + 834 | less-than and backslash + greater-than) 835 | 836 | 837 | 838 | 839 | \_< \_> 840 | start\end of symbol 841 | 842 | 843 | 844 | 845 | \` \' 846 | start\end of buffer\string 847 | 848 | 849 | 850 | 851 | \1 852 | string matched by the first group 853 | 854 | 855 | 856 | 857 | \n 858 | string matched by the nth group 859 | 860 | 861 | 862 | 863 | \{3\} 864 | previous character or group, repeated 3 times 865 | 866 | 867 | 868 | 869 | \{3,\} 870 | previous character or group, repeated 3 or more 871 | times 872 | 873 | 874 | 875 | 876 | \{3,6\} 877 | previous character or group, repeated 3 to 6 878 | times 879 | 880 | 881 | 882 | 883 | \= 884 | match succeeds if it is located at point 885 | 886 | 887 | 888 | 889 | *?, +?, and ?? 890 | non-greedy versions of *, +, and ? 891 | 892 | 893 | 894 | 895 | \ca 896 | ascii character 897 | 898 | 899 | 900 | 901 | \Ca 902 | non-ascii character (newline included) 903 | 904 | 905 | 906 | 907 | \cl 908 | latin character 909 | 910 | 911 | 912 | 913 | \cg 914 | greek character 915 | 916 | 917 | 918 | 919 | [:digit:] 920 | a digit, same as [0-9] (\d is not supported) 921 | 922 | 923 | 924 | 925 | [:alpha:] 926 | a letter (an alphabetic character) 927 | 928 | 929 | 930 | 931 | [:alnum:] 932 | a letter or a digit (an alphanumeric character) 933 | 934 | 935 | 936 | 937 | [:upper:] 938 | a letter in uppercase 939 | 940 | 941 | 942 | 943 | [:lower:] 944 | a letter in lowercase 945 | 946 | 947 | 948 | 949 | [:graph:] 950 | a visible character 951 | 952 | 953 | 954 | 955 | [:print:] 956 | a visible character plus the space character 957 | 958 | 959 | 960 | 961 | [:space:] 962 | a whitespace character, as defined by the syntax table, 963 | but typically [ \t\r\n\v\f], which includes the newline 964 | character 965 | 966 | 967 | 968 | 969 | [:blank:] 970 | a space or tab character 971 | 972 | 973 | 974 | 975 | [:xdigit:] 976 | an hexadecimal digit 977 | 978 | 979 | 980 | 981 | [:cntrl:] 982 | a control character 983 | 984 | 985 | 986 | 987 | [:ascii:] 988 | an ascii character 989 | 990 | 991 | 992 | 993 | \s- 994 | whitespace character 995 | 996 | 997 | 998 | 999 | \sw 1000 | word constituent 1001 | 1002 | 1003 | 1004 | 1005 | \s_ 1006 | symbol constituent 1007 | 1008 | 1009 | 1010 | 1011 | \s. 1012 | punctuation character 1013 | 1014 | 1015 | 1016 | 1017 | \s( 1018 | open delimiter character 1019 | 1020 | 1021 | 1022 | 1023 | \s) 1024 | close delimiter character 1025 | 1026 | 1027 | 1028 | 1029 | \s" 1030 | string quote character 1031 | 1032 | 1033 | 1034 | 1035 | \s\ 1036 | escape character 1037 | 1038 | 1039 | 1040 | 1041 | \s/ 1042 | character quote character 1043 | 1044 | 1045 | 1046 | 1047 | \s$ 1048 | paired delimiter 1049 | 1050 | 1051 | 1052 | 1053 | \s' 1054 | expression prefix 1055 | 1056 | 1057 | 1058 | 1059 | \s< 1060 | comment starter 1061 | 1062 | 1063 | 1064 | 1065 | \s> 1066 | comment ender 1067 | 1068 | 1069 | 1070 | 1071 | \s! 1072 | generic comment delimiter 1073 | 1074 | 1075 | 1076 | 1077 | \s| 1078 | generic string delimiter 1079 | 1080 | 1081 | 1082 | 1083 | 1084 | 1085 | [-+[:digit:]] 1086 | digit or + or - sign 1087 | 1088 | 1089 | 1090 | 1091 | \(\+\|-\)?[0-9]+\(\.[0-9]+\)? 1092 | decimal number (-2 or 1.5 but not .2 or 1.) 1093 | 1094 | 1095 | 1096 | 1097 | \<\(\w+\) +\1\> 1098 | two consecutive, identical words 1099 | 1100 | 1101 | 1102 | 1103 | \<[[:upper:]]\w* 1104 | word starting with an uppercase letter 1105 | 1106 | 1107 | 1108 | 1109 | +$ 1110 | trailing whitespaces (note the starting SPC) 1111 | 1112 | 1113 | 1114 | 1115 | \w\{20,\} 1116 | word with 20 letters or more 1117 | 1118 | 1119 | 1120 | 1121 | \w+phony\> 1122 | word ending by phony 1123 | 1124 | 1125 | 1126 | 1127 | \(19\|20\)[0-9]\{2\} 1128 | year 1900-2099 1129 | 1130 | 1131 | 1132 | 1133 | ^.\{6,\} 1134 | at least 6 symbols 1135 | 1136 | 1137 | 1138 | 1139 | ^[a-zA-Z0-9_]\{3,16\}$ 1140 | decent string for a user name 1141 | 1142 | 1143 | 1144 | 1145 | <tag[^> C-q C-j ]*>\(.*?\)</tag> 1146 | html tag 1147 | 1148 | 1149 | 1150 | 1151 | 1152 | 1153 | M-x re-b <RET> 1154 | re-builder 1155 | Start the RE Buider mode. 1156 | 1157 | 1158 | 1159 | C-c C-q 1160 | reb-quit 1161 | Quit the RE Builder mode. 1162 | 1163 | 1164 | 1165 | C-c C-c 1166 | reb-toggle-case 1167 | Toggle case sensitivity of searches for RE Builder 1168 | target buffer. 1169 | 1170 | 1171 | 1172 | C-c C-w 1173 | reb-copy 1174 | Copy current RE into the kill ring for later 1175 | insertion. 1176 | 1177 | 1178 | 1179 | C-c C-s 1180 | reb-next-match 1181 | Go to next match in the RE Builder target 1182 | window. 1183 | 1184 | 1185 | 1186 | C-c C-r 1187 | reb-prev-match 1188 | Go to previous match in the RE Builder target 1189 | window. 1190 | 1191 | 1192 | 1193 | C-c C-i 1194 | reb-change-syntax 1195 | Change the syntax used by the RE Builder. 1196 | 1197 | 1198 | 1199 | C-c C-e 1200 | reb-enter-subexp-mode 1201 | Enter the subexpression mode in the RE Builder. 1202 | 1203 | 1204 | 1205 | C-c C-b 1206 | reb-change-target-buffer 1207 | Change the target buffer and display it in the target 1208 | window. 1209 | 1210 | 1211 | 1212 | C-c C-u 1213 | reb-force-update 1214 | Force an update in the RE Builder target window without 1215 | a match limit. 1216 | 1217 | 1218 | 1219 | 1220 | 1221 | C-x r space X 1222 | point-to-register 1223 | Save point to register X. 1224 | 1225 | 1226 | 1227 | C-x r s X 1228 | copy-to-register 1229 | Save the region to register X. 1230 | 1231 | 1232 | 1233 | C-x r r X 1234 | copy-rectangle-to-register 1235 | Save the selected rectangle to register X. 1236 | 1237 | 1238 | 1239 | 1240 | view-register 1241 | View the contents of a given register. 1242 | 1243 | 1244 | 1245 | C-x r j X 1246 | jump-to-register 1247 | Move point to the location given in register X. 1248 | 1249 | 1250 | 1251 | C-x r i X 1252 | insert-register 1253 | Insert the contents of register X at point. 1254 | 1255 | 1256 | 1257 | 1258 | 1259 | (setq-default abbrev-mode t) 1260 | 1261 | Write this into .emacs to switch 1262 | abbrev minor mode on at start-up. 1263 | 1264 | 1265 | 1266 | 1267 | abbrev-mode 1268 | Toggles Abbrev mode; with a numeric argument, 1269 | it turns Abbrev mode on if the argument is positive, 1270 | off otherwise. 1271 | 1272 | 1273 | 1274 | C-x a g 1275 | add-global-abbrev 1276 | Define an abbrev, using one or more words before point 1277 | as its expansion. 1278 | 1279 | 1280 | 1281 | C-x a l 1282 | add-mode-abbrev 1283 | Similar, but define an abbrev specific to the current 1284 | major mode. 1285 | 1286 | 1287 | 1288 | C-x a i g 1289 | inverse-add-global-abbrev 1290 | Define a word in the buffer as an abbrev. 1291 | 1292 | 1293 | 1294 | C-x a i l 1295 | inverse-add-mode-abbrev 1296 | Define a word in the buffer as a mode-specific 1297 | abbrev. 1298 | 1299 | 1300 | 1301 | M-' 1302 | abbrev-prefix-mark 1303 | Separate a prefix from a following abbrev to be 1304 | expanded. 1305 | 1306 | 1307 | 1308 | C-x a e 1309 | expand-abbrev 1310 | Expand the abbrev before point. This is effective even 1311 | when Abbrev mode is not enabled. 1312 | 1313 | 1314 | 1315 | 1316 | expand-region-abbrevs 1317 | Expand some or all abbrevs found in the region. 1318 | 1319 | 1320 | 1321 | 1322 | list-abbrevs 1323 | Display a list of all abbrev definitions. With a 1324 | numeric argument, list only local abbrevs. 1325 | 1326 | 1327 | 1328 | 1329 | edit-abbrevs 1330 | Edit a list of abbrevs; you can add, alter or remove 1331 | definitions. 1332 | 1333 | 1334 | 1335 | M-/ 1336 | dabbrev-expand 1337 | Expand the word in the buffer before point as a dynamic 1338 | abbrev, by searching for words starting with that 1339 | abbreviation. 1340 | 1341 | 1342 | 1343 | C-M-/ 1344 | dabbrev-completion 1345 | Complete the word before point as a dynamic 1346 | abbrev. 1347 | 1348 | 1349 | 1350 | 1351 | 1352 | C-x r m Bookmark 1353 | bookmark-set 1354 | Set a bookmark named Bookmark. 1355 | 1356 | 1357 | 1358 | C-x r l 1359 | bookmarks-bmenu-list 1360 | List all saved bookmarks. 1361 | 1362 | 1363 | 1364 | 1365 | bookmark-delete 1366 | Delete a bookmark. 1367 | 1368 | 1369 | 1370 | C-x r b Bookmark 1371 | bookmark-jump 1372 | Jump to the location set in the bookmark named 1373 | Bookmark. 1374 | 1375 | 1376 | 1377 | 1378 | bookmark-save 1379 | Save all bookmarks to the bookmark file, 1380 | ~/.emacs.bmk. 1381 | 1382 | 1383 | 1384 | 1385 | 1386 | C-x 2 1387 | split-window-vertically 1388 | Split the current window in half across the middle, 1389 | stacking the new buffers vertically. 1390 | 1391 | 1392 | 1393 | C-x 4 b 1394 | switch-to-buffer-other-window 1395 | Split the current window in half vertically, prompting 1396 | for the buffer to use the bottom window and making that the 1397 | active window. 1398 | 1399 | 1400 | 1401 | C-x 4 C-o 1402 | display-buffer 1403 | Display a buffer in another window, prompting for the 1404 | buffer to use the other window but keeping the current window 1405 | active. (If only one window exists, then split the window 1406 | vertically to display the other buffer.) 1407 | 1408 | 1409 | 1410 | C-x 4 f 1411 | find-file-other-window 1412 | Open a new file in a new buffer, drawing it in a new 1413 | vertical window. 1414 | 1415 | 1416 | 1417 | C-x 4 r 1418 | find-file-read-only-other-window 1419 | Open a new file in a new read-only buffer, drawing it 1420 | in a new vertical window. 1421 | 1422 | 1423 | 1424 | C-M-v 1425 | scroll-other-window 1426 | Scroll to the window that would be the next one to 1427 | switch to with C-x o. 1428 | 1429 | 1430 | 1431 | 1432 | scroll-all 1433 | Toggle the scroll-all minor mode. When it's on, all 1434 | windows displaying the buffer in the current window are 1435 | scrolled simultaneously and in equal, relative 1436 | amounts. 1437 | 1438 | 1439 | 1440 | C-x o 1441 | other-window 1442 | Move the cursor to the next window, and make it the 1443 | active window. 1444 | 1445 | 1446 | 1447 | C-x 0 1448 | delete-window 1449 | Delete the current window, and move the cursor to the 1450 | window that would be the next one to switch to with 1451 | C-x o. 1452 | 1453 | 1454 | 1455 | C-x 1 1456 | delete-other-windows 1457 | Delete all windows except the current window. 1458 | 1459 | 1460 | 1461 | C-x 4 0 1462 | kill-buffer-and-window 1463 | Delete the current window, and kill its buffer. 1464 | 1465 | 1466 | 1467 | C-x 3 1468 | split-window-horizontally 1469 | Split the current window in half down the middle, 1470 | stacking the new buffers horizontally. 1471 | 1472 | 1473 | 1474 | 1475 | follow-mode 1476 | Toggle follow, a minor mode. When it's on in a buffer, 1477 | all windows displaying the buffer are connected into a large 1478 | virtual window. 1479 | 1480 | 1481 | 1482 | C-x ^ 1483 | enlarge-window 1484 | Make the current window taller by a line; preceded by a 1485 | negative, this makes the current window shorter by a 1486 | line. 1487 | 1488 | 1489 | 1490 | C-x } 1491 | shrink-window-horizontally 1492 | Make the current active window thinner by a single 1493 | column. 1494 | 1495 | 1496 | 1497 | C-x { 1498 | enlarge-window-horizontally 1499 | Make the current active window wider by a single 1500 | column. 1501 | 1502 | 1503 | 1504 | C-x - 1505 | shrink-window-if-larger-than-buffer 1506 | Reduce the current active window to the smallest 1507 | possible size for the buffer it contains. 1508 | 1509 | 1510 | 1511 | C-x + 1512 | balance-windows 1513 | Balance the size of all windows, making them 1514 | approximately equal. 1515 | 1516 | 1517 | 1518 | 1519 | compare-windows 1520 | Compare the current window with the next window, 1521 | beginning with point in both windows and moving point in both 1522 | buffers to the first character that differs until reaching the 1523 | end of the buffer. 1524 | 1525 | 1526 | 1527 | 1528 | 1529 | M-! <cmd> 1530 | shell-command 1531 | Run the shell command line cmd and display 1532 | the output. 1533 | 1534 | 1535 | 1536 | M-| <cmd> 1537 | shell-command-on-region 1538 | Run the shell command line cmd with region 1539 | contents as input; optionally replace the region with the 1540 | output. 1541 | 1542 | 1543 | 1544 | 1545 | shell 1546 | Run a subshell with input and output through an Emacs 1547 | buffer. You can then give commands interactively. 1548 | 1549 | 1550 | 1551 | 1552 | term 1553 | Run a subshell with input and output through an Emacs 1554 | buffer. You can then give commands interactively. Full 1555 | terminal emulation is available. 1556 | 1557 | 1558 | 1559 | 1560 | eshell 1561 | Start the Emacs shell. 1562 | 1563 | 1564 | 1565 | 1566 | 1567 | C-x w h [regexp] <RET> [face] <RET> 1568 | highlight-regexp 1569 | Highlight text that matches regexp using 1570 | face face. The highlighting will remain as long as 1571 | the buffer is loaded. 1572 | 1573 | 1574 | 1575 | C-x w r [regexp] <RET> 1576 | unhighlight-regexp 1577 | Unhighlight regexp. 1578 | 1579 | 1580 | 1581 | C-x w l [regexp] <RET> [face] <RET> 1582 | highlight-lines-matching-regexp 1583 | Highlight entire lines containing a match for regexp, 1584 | using face face. 1585 | 1586 | 1587 | 1588 | 1589 | 1590 | M-x nxml-mode 1591 | 1592 | Start the nXml mode. 1593 | 1594 | 1595 | 1596 | C-c C-n 1597 | rng-next-error 1598 | Move to the next location where the document structure 1599 | is not valid. 1600 | 1601 | 1602 | 1603 | C-c C-v 1604 | rng-validate-mode 1605 | Turn validation on or off. If validation is turned on, 1606 | in the status line's mode area you will see either “nXML 1607 | Valid” or “nXML Invalid”. If validation is turned off, neither 1608 | word will appear after “nXML” in the mode line. 1609 | 1610 | 1611 | 1612 | tab 1613 | indent-for-tab-command 1614 | Indent the current line according to the level of 1615 | nested block tags. The indentation is two spaces per 1616 | level. 1617 | 1618 | 1619 | 1620 | M-C-\ 1621 | indent-region 1622 | Indent all the lines in the region using the same 1623 | process as for tab. 1624 | 1625 | 1626 | 1627 | C-c C-f 1628 | nxml-finish-element 1629 | Insert an end tag for whatever element the cursor is 1630 | in. 1631 | 1632 | 1633 | 1634 | C-c C-i 1635 | nxml-balanced-close-start-tag-inline This 1636 | command adds the closing “>” and an end tag, and then 1637 | places the cursor between the tags so you can type the 1638 | content. 1639 | 1640 | 1641 | 1642 | C-c C-b 1643 | nxml-balanced-close-start-tag-block Adds 1644 | the closing “>”, then a blank line, then an end tag on yet 1645 | another separate line. The cursor is left indented at the 1646 | proper level on the central blank line. 1647 | 1648 | 1649 | 1650 | M-q 1651 | fill-paragraph 1652 | Reformat the paragraph containing the cursor. 1653 | 1654 | 1655 | 1656 | C-c C-x 1657 | nxml-insert-xml-declaration 1658 | Inserts an XML processing instruction at the top of the 1659 | file. 1660 | 1661 | 1662 | 1663 | M-C-f 1664 | forward-sexp 1665 | Move forward over tag. 1666 | 1667 | 1668 | 1669 | M-C-b 1670 | backward-sexp 1671 | Move backward over tag. 1672 | 1673 | 1674 | 1675 | M-C-n 1676 | nxml-forward-element 1677 | Move the cursor to the end of the next element. 1678 | 1679 | 1680 | 1681 | M-C-p 1682 | nxml-backward-element 1683 | Move the cursor before the previous element. 1684 | 1685 | 1686 | 1687 | M-C-d 1688 | nxml-down-element 1689 | Move the cursor to the next included element after 1690 | point, to a position just after the start tag; d is for 1691 | “down.” 1692 | 1693 | 1694 | 1695 | M-C-u 1696 | nxml-backward-up-element 1697 | Move the cursor to a position just before the start tag 1698 | of the element containing point; u is for “up.” 1699 | 1700 | 1701 | 1702 | C-c C-o C-d 1703 | nxml-hide-subheadings 1704 | Hide the children of the current element, as in emacs 1705 | outline-mode. 1706 | 1707 | 1708 | 1709 | C-c C-o C-s 1710 | nxml-hide-subheadings 1711 | Reverses the action of C-c C-o C-d, 1712 | revealing the children of the current element. 1713 | 1714 | 1715 | 1716 | 1717 | 1718 | 1719 | set-variable 1720 | Ask for a variable to change and for the needed 1721 | value. 1722 | 1723 | 1724 | 1725 | 1726 | auto-mode-alist 1727 | If set to nil, automatic selection of major 1728 | mode based on file name extension is turned off. Its default 1729 | value is a list of file name extensions and corresponding 1730 | modes. 1731 | 1732 | 1733 | 1734 | 1735 | auto-save-default 1736 | If not set to nil, Emacs automatically saves a 1737 | changed buffer to its corresponding file at preset 1738 | intervals. Its default value is t. 1739 | 1740 | 1741 | 1742 | 1743 | auto-save-interval 1744 | Contains the number of character changes after which 1745 | Auto-save mode, if true, is invoked; the default value is 1746 | 300. 1747 | 1748 | 1749 | 1750 | 1751 | calendar-latitude 1752 | Contains the latitude value for the location of the 1753 | user's workstation, in degrees; the default value is 1754 | nil. 1755 | 1756 | 1757 | 1758 | 1759 | calendar-longitude 1760 | Contains the longitude value for the location of the 1761 | user's workstation, in degrees; the default value is 1762 | nil. 1763 | 1764 | 1765 | 1766 | 1767 | calendar-location-name 1768 | Contains the value for the location name (such as city, 1769 | state, and country) for the location of the user's 1770 | workstation; the default value is nil. 1771 | 1772 | 1773 | 1774 | 1775 | colon-double-space 1776 | If not set to nil, commands for filling text 1777 | insert two spaces after a colon instead of one. The default 1778 | value is nil. 1779 | 1780 | 1781 | 1782 | 1783 | command-line-args 1784 | Contains the list of arguments used in the command line 1785 | that executed the current Emacs session. 1786 | 1787 | 1788 | 1789 | 1790 | command-line-default-directory 1791 | Contains the path name of the directory from which the 1792 | current Emacs session was executed. 1793 | 1794 | 1795 | 1796 | 1797 | compare-ignore-case 1798 | If not set to nil, Emacs ignores differences 1799 | in uppercase and lowercase letters when running the 1800 | compare-windows function, as described in fifth installment of 1801 | this series (see Resources). The default value is 1802 | nil. 1803 | 1804 | 1805 | 1806 | 1807 | confirm-kill-emacs 1808 | If set to nil, Emacs doesn't ask for a 1809 | confirmation when exiting; otherwise, the exit verification 1810 | might be customized as an Emacs Lisp function such as 1811 | y-or-n-p. The default value is nil. 1812 | 1813 | 1814 | 1815 | 1816 | default-justification 1817 | Sets the default justification style. The value can be 1818 | one of left, right, center, full, or none. The default value 1819 | is left. 1820 | 1821 | 1822 | 1823 | 1824 | default-major-mode 1825 | Selects the default major mode for new files or 1826 | buffers. The default value is 1827 | fundamental-mode. 1828 | 1829 | 1830 | 1831 | 1832 | display-time-24hr-format 1833 | If set to t, Emacs displays time in 24-hour military 1834 | format, instead of the standard 12-hour format with AM or PM 1835 | suffix. The default value is nil. 1836 | 1837 | 1838 | 1839 | 1840 | display-time-day-and-date 1841 | If not set to nil, Emacs displays time with 1842 | the current day of the week, current month, and current day of 1843 | the month, instead of just the hour and minute. The default 1844 | value is nil. 1845 | 1846 | 1847 | 1848 | 1849 | fill-column 1850 | Contains the number for the column on each line where 1851 | text begins to be filled to the next line. The default value 1852 | is 70. 1853 | 1854 | 1855 | 1856 | 1857 | initial-major-mode 1858 | Specifies the major mode to use for the 1859 | *scratch* buffer on startup. The default value is 1860 | lisp-interaction-mode. 1861 | 1862 | 1863 | 1864 | 1865 | inverse-video 1866 | If not set to nil, Emacs inverts the display 1867 | colors, if possible. The default value is 1868 | nil. 1869 | 1870 | 1871 | 1872 | 1873 | kill-ring 1874 | Contains the contents of the Emacs kill ring. 1875 | 1876 | 1877 | 1878 | 1879 | kill-ring-max 1880 | Sets the number of allowable entries in the Emacs kill 1881 | ring. The default value is 60. 1882 | 1883 | 1884 | 1885 | 1886 | kill-whole-line 1887 | If not set to nil, the kill-line function 1888 | (bound to C-k) kills the current line and its 1889 | trailing newline character, if the function is executed at the 1890 | very beginning of the line. The default value is 1891 | nil. 1892 | 1893 | 1894 | 1895 | 1896 | make-backup-files 1897 | If not set to nil, Emacs saves a backup of a 1898 | buffer before any changes are made to a file of the same name 1899 | but with a tilde character (~) appended to the 1900 | end. 1901 | 1902 | 1903 | 1904 | 1905 | mark-ring 1906 | Contains the contents of the current mark ring of the 1907 | buffer. 1908 | 1909 | 1910 | 1911 | 1912 | mark-ring-max 1913 | Contains the number of allowable entries in the mark 1914 | ring. The default value is 16. 1915 | 1916 | 1917 | 1918 | 1919 | mouse-avoidance-mode 1920 | Contains a value describing the type of mouse-avoidance 1921 | mode. The default value is nil. 1922 | 1923 | 1924 | 1925 | 1926 | next-line-add-newline 1927 | If not set to nil, Emacs adds a new line 1928 | whenever the down arrow is pressed at the end of the 1929 | buffer. The default value is nil (in more recent 1930 | versions of Emacs). 1931 | 1932 | 1933 | 1934 | 1935 | scroll-bar-mode 1936 | Contains the value for the side of the Emacs frame on 1937 | which to place the scroll bar: right or left. If set to 1938 | nil, the scroll bar is turned off. The default value 1939 | is left. 1940 | 1941 | 1942 | 1943 | 1944 | scroll-step 1945 | Contains the number of lines to move through the buffer 1946 | lines with the scroll-down and scroll-up 1947 | functions (which are bound to the PgDn and 1948 | PgUp keys by default). If set to 0, Emacs centers 1949 | point in the middle of the window when scrolling. 1950 | 1951 | 1952 | 1953 | 1954 | show-trailing-whitespace 1955 | If not set to nil, Emacs makes any whitespace 1956 | at the end of lines in the current buffer visible. The default 1957 | value is nil. 1958 | 1959 | 1960 | 1961 | 1962 | visible-bell 1963 | If not set to nil, Emacs makes the frame blink 1964 | instead of ringing the audible system bell. The default value 1965 | is nil. 1966 | 1967 | 1968 | 1969 | 1970 | x-cut-buffer-max 1971 | Sets the maximum number of characters from the kill 1972 | ring that are also stored in the X Window System cut 1973 | buffer. The default value is 20000. 1974 | 1975 | 1976 | 1977 | 1978 | 1979 | 1980 | column-number-mode 1981 | Toggle the display, in the mode line, of the current 1982 | column the cursor is at, preceded by a C. The 1983 | default value is nil. 1984 | 1985 | 1986 | 1987 | 1988 | display-time 1989 | Toggle the display of the current time in the mode 1990 | line. The default value is nil. 1991 | 1992 | 1993 | 1994 | 1995 | font-lock-mode 1996 | If not set to nil, Emacs turns on the Font 1997 | Lock mode automatically for the current buffer. The default 1998 | value is nil. 1999 | 2000 | 2001 | 2002 | 2003 | global-font-lock-mode 2004 | If not set to nil, Emacs turns on the Font 2005 | Lock mode automatically for all buffers. The default value is 2006 | nil. 2007 | 2008 | 2009 | 2010 | 2011 | line-number-mode 2012 | Toggle the display, in the mode line, of the current 2013 | line the cursor is at, preceded by an L. The 2014 | default value is t. 2015 | 2016 | 2017 | 2018 | 2019 | show-paren-mode 2020 | Allows one to see matching pairs of parentheses and 2021 | other characters. When point is on one of the paired 2022 | characters, the other is highlighted. 2023 | 2024 | 2025 | 2026 | 2027 | menu-bar-mode 2028 | Toggle the display of the Emacs menu bar. The default 2029 | value is t. 2030 | 2031 | 2032 | 2033 | 2034 | sunrise-sunset 2035 | Display the time of today's sunrise and sunset for the 2036 | current geographic location. If preceded with the 2037 | universal-argument, this function prompts for a 2038 | specific day. 2039 | 2040 | 2041 | 2042 | 2043 | tool-bar-mode 2044 | Toggle the display of the Emacs toolbar. The default 2045 | value is t. 2046 | 2047 | 2048 | 2049 | 2050 | 2051 | 2052 | customize-changed-options <Enterversion> 2053 | Open a new customization buffer for all faces, options, 2054 | or groups that have been changed since the version of Emacs 2055 | given by version. 2056 | 2057 | 2058 | 2059 | 2060 | customize-customized 2061 | Open a new customization buffer for all options and 2062 | faces that have already been customized but haven't been saved 2063 | to disk. 2064 | 2065 | 2066 | 2067 | 2068 | customize-face <Enter> <regexp> 2069 | Open a new customization buffer for all the face, 2070 | option, or groups relevant to the regular expression given by 2071 | <regexp>. 2072 | 2073 | 2074 | 2075 | 2076 | customize-face <Enter> <face> 2077 | Open a new customization buffer for the face name given 2078 | by <face>. 2079 | 2080 | 2081 | 2082 | 2083 | customize-group <Enter> <group> 2084 | Open a new customization buffer for the group name 2085 | given by <group>. 2086 | 2087 | 2088 | 2089 | 2090 | customize-option <Enter> <option> 2091 | Open a new customization buffer for the option name 2092 | given by <option>. 2093 | 2094 | 2095 | 2096 | 2097 | customize-saved 2098 | Open a new customization buffer for all faces and 2099 | options that you've changed with the Customize 2100 | function. 2101 | 2102 | 2103 | 2104 | 2105 | 2106 | Tab 2107 | 2108 | This command performs command completion if given as 2109 | part of a command, showing all possible input values for the 2110 | given command. 2111 | 2112 | 2113 | 2114 | <command prefix> or <keystroke> C-h 2115 | 2116 | This command describes all the possible commands and 2117 | functions available for the given <command 2118 | prefix> or <keystroke>. 2119 | 2120 | 2121 | 2122 | C-h c <keystroke> 2123 | describe-key-briefly 2124 | This command reports in the minibuffer the name of 2125 | function that <keystroke>is bound to. 2126 | 2127 | 2128 | 2129 | C-h k <keystroke> 2130 | describe-key 2131 | This command opens a new help-buffer window that 2132 | describes the function that <keystroke> is 2133 | bound to. 2134 | 2135 | 2136 | 2137 | C-h l 2138 | view-lossage 2139 | This command opens a new buffer and displays the last 2140 | 100 characters typed. 2141 | 2142 | 2143 | 2144 | 2145 | open-dribble-file 2146 | This command opens a specified file and dribbles a copy 2147 | of all keyboard input to that file. 2148 | 2149 | 2150 | 2151 | 2152 | apropos 2153 | This command gives a list of apropos commands and 2154 | variables to a given regexp. 2155 | 2156 | 2157 | 2158 | C-h a <regexp> 2159 | command-apropos 2160 | This command gives a list of apropos commands to 2161 | regexp. 2162 | 2163 | 2164 | 2165 | C-h b 2166 | describe-bindings 2167 | This command describes all the valid key bindings for 2168 | the current major mode in a new help buffer window. 2169 | 2170 | 2171 | 2172 | C-h f <function> 2173 | describe-function 2174 | This command describes the purpose of 2175 | <function> in a new help buffer 2176 | window. 2177 | 2178 | 2179 | 2180 | C-h v <variable> 2181 | describe-variable 2182 | This command describes the purpose of 2183 | <variable> in a new help buffer 2184 | window. 2185 | 2186 | 2187 | 2188 | C-h w <function> 2189 | where-is 2190 | This command describes which keyboard binding (if any) 2191 | a particular <function> is bound to. 2192 | 2193 | 2194 | 2195 | C-h s | F1 s 2196 | describe-syntax 2197 | Display the Emacs Syntax Table for the current 2198 | mode (useful for the matching parentheses commands). 2199 | 2200 | 2201 | 2202 | 2203 | 2204 | H 2205 | Info-help 2206 | This command opens a hands-on Info tutorial 2207 | in a new buffer. 2208 | 2209 | 2210 | 2211 | Q 2212 | Info-exit 2213 | This command moves to the last buffer you visited, 2214 | putting the *info* buffer in the end of the buffer 2215 | list. 2216 | 2217 | 2218 | 2219 | <Enter> 2220 | 2221 | This command follows the cross reference at or near 2222 | point. 2223 | 2224 | 2225 | 2226 | N 2227 | Info-next 2228 | This command moves to the current node's 2229 | Next node. 2230 | 2231 | 2232 | 2233 | P 2234 | Info-prev 2235 | This command moves to the current node's 2236 | Previous node. 2237 | 2238 | 2239 | 2240 | U 2241 | Info-up 2242 | This command moves to the current node's Up 2243 | node. 2244 | 2245 | 2246 | 2247 | D 2248 | Info-directory 2249 | This command moves to the Directory 2250 | node. 2251 | 2252 | 2253 | 2254 | L 2255 | Info-last 2256 | This command moves to the last node you 2257 | visited. 2258 | 2259 | 2260 | 2261 | T 2262 | Info-top-node 2263 | This command moves to the Top node of the 2264 | current document. 2265 | 2266 | 2267 | 2268 | > 2269 | Info-final-node 2270 | This command moves to the final node pointed to in the 2271 | current document. 2272 | 2273 | 2274 | 2275 | <Spacebar> 2276 | Info-scroll-up 2277 | This command moves forward in the current node by a 2278 | single screen; if at the end of the node, then move to the 2279 | Next node. 2280 | 2281 | 2282 | 2283 | <Backspace> 2284 | Info-scroll-down 2285 | This command moves backward in the current node by a 2286 | single screen; if at the beginning of the node, then move to 2287 | the Previous node. 2288 | 2289 | 2290 | 2291 | B 2292 | beginning-of-buffer 2293 | This command goes to the beginning of the current 2294 | node. 2295 | 2296 | 2297 | 2298 | S 2299 | Info-search 2300 | This command searches forward in the current 2301 | Info document for a given 2302 | regexp. 2303 | 2304 | 2305 | 2306 | Tab 2307 | Info-next-reference 2308 | This command moves the cursor forward to the first 2309 | cross reference. 2310 | 2311 | 2312 | 2313 | M-Tab 2314 | Info-prev-reference 2315 | This command moves the cursor backward to the last 2316 | cross reference. 2317 | 2318 | 2319 | 2320 | 2321 | 2322 | C-h C-d 2323 | describe-distribution 2324 | File DISTRIB: Information on obtaining a 2325 | copy of the latest distribution of the Emacs software 2326 | 2327 | 2328 | 2329 | C-h F 2330 | view-emacs-faq 2331 | /usr/share/info/; 2332 | emacs-mainversion/efaq.gz Emacs FAQ 2333 | 2334 | 2335 | 2336 | C-h C-c 2337 | describe-copying 2338 | File COPYING: GNU General Public License 2339 | (GNU GPL) 2340 | 2341 | 2342 | 2343 | C-h C-w 2344 | describe-no-warranty 2345 | File COPYING: Section "NO WARRANTY" of the 2346 | GNU General Public License (GNU GPL) 2347 | 2348 | 2349 | 2350 | C-h n 2351 | view-emacs-news 2352 | File NEWS: News concerning the latest 2353 | changes in the current version of Emacs 2354 | 2355 | 2356 | 2357 | C-h P 2358 | view-emacs-problems 2359 | File PROBLEMS: Emacs problems file 2360 | 2361 | 2362 | 2363 | C-h C-p 2364 | describe-project 2365 | File THE-GNU-PROJECT: Essay by Richard 2366 | Stallman concerning the founding of the GNU Project 2367 | 2368 | 2369 | 2370 | C-h t 2371 | help-with-tutorial 2372 | File TUTORIAL: Hands-on tutorial for 2373 | learning the basics of Emacs 2374 | 2375 | 2376 | 2377 | 2378 | 2379 | 2380 | hanoi 2381 | The hanoi tower, with a default of 3 discs; M-x 2382 | hanoi-unix and M-x hanoi-unix-64 uses the 2383 | unix timestamp, making a move each second in line with the 2384 | clock, and with the latter pretending it uses a 64-bit 2385 | clock. 2386 | 2387 | 2388 | 2389 | 2390 | 5x5 2391 | You are given a 5x5 grid with a central cross already 2392 | filled-in; your goal is to fill all the cells by toggling them 2393 | on and off in the right order to win. With an optional digit 2394 | argument you can change the size of the grid. 2395 | 2396 | 2397 | 2398 | 2399 | animate-birthday-present 2400 | A fancy birthday present animation. 2401 | 2402 | 2403 | 2404 | 2405 | butterfly 2406 | The animate package is also used by M-x 2407 | butterfly command, a command added to Emacs as an homage 2408 | to the XKCD strip at www.xkcd.com/378/ 2409 | 2410 | 2411 | 2412 | 2413 | blackbox 2414 | The object of the game is to find four hidden balls by 2415 | shooting rays into the black box. There are four 2416 | possibilities: 1) the ray will pass thru the box undisturbed, 2417 | 2) it will hit a ball and be absorbed, 3) it will be deflected 2418 | and exit the box, or 4) be deflected immediately, not even 2419 | being allowed entry into the box. 2420 | 2421 | 2422 | 2423 | 2424 | bubbles 2425 | You must clear out as many “bubbles” as you can in as 2426 | few moves as possible. When you remove bubbles the other 2427 | bubbles drop and stick together. You can configure the 2428 | difficulty of the game by calling M-x 2429 | bubbles-set-game-<difficulty> where 2430 | <difficulty> is one of: easy, 2431 | medium, difficult, hard, or 2432 | userdefined. Furthermore, you can alter the 2433 | graphics, grid size and colors using Customize: M-x 2434 | customize-group bubbles. 2435 | 2436 | 2437 | 2438 | 2439 | decipher 2440 | It’s a (very complex) package to help you break simple 2441 | substitution ciphers (like cryptogram puzzles) using a helpful 2442 | user interface. 2443 | 2444 | 2445 | 2446 | 2447 | dissociated-press 2448 | It's a semi-randomizing algorithm that takes your 2449 | buffer, runs it through a blender, and displays the 2450 | result. 2451 | 2452 | 2453 | 2454 | 2455 | doctor 2456 | Based on the original ELIZA, the “Doctor” 2457 | tries to psychoanalyze what you say and attempts to repeat the 2458 | question back to you. It simulates a Rogerian psychotherapist 2459 | and uses rules, dictated into a script, to respond with 2460 | non-directional questions to user inputs. 2461 | 2462 | 2463 | 2464 | 2465 | dunnet 2466 | Emacs’s very own Zork-like text adventure game. 2467 | 2468 | 2469 | 2470 | 2471 | gomoku 2472 | You have to connect 5 squares, tic-tac-toe style. You 2473 | can customize the group gomoku to adjust the size 2474 | of the grid. 2475 | 2476 | 2477 | 2478 | 2479 | life 2480 | Conway’s Game of Life is a famous example of cellular 2481 | automata. The Emacs version comes with a handful of starting 2482 | patterns that you can (programmatically with elisp) alter by 2483 | adjusting the life-patterns variable. 2484 | 2485 | 2486 | 2487 | 2488 | pong | snake | tetris 2489 | These classic games are all implemented using the Emacs 2490 | package gamegrid, a generic framework for building grid-based 2491 | games like Tetris and Snake. 2492 | 2493 | 2494 | 2495 | 2496 | solitaire 2497 | It is a peg-based game where you have to end up with 2498 | just one stone on the board, by taking a stone (the 2499 | o) and “jumping” over an adjacent stone into the 2500 | hole (the .), removing the stone you jumped over in 2501 | the process. Rinse and repeat until the board is empty. There 2502 | is a handy solver built in called M-x 2503 | solitaire-solve if you get stuck. 2504 | 2505 | 2506 | 2507 | 2508 | zone 2509 | A series of screensavers. Type M-x zone and 2510 | watch what happens to your screen! You can configure a 2511 | screensaver idle time by running M-x zone-when-idle 2512 | (or calling it from elisp) with an idle time in seconds. You 2513 | can turn it off with M-x 2514 | zone-leave-me-alone. 2515 | 2516 | 2517 | 2518 | 2519 | mpuz 2520 | A multiplication puzzle where you have to replace the 2521 | letters with numbers and ensure the numbers add (multiply?) 2522 | up. You can run M-x mpuz-show-solution to solve the 2523 | puzzle if you get stuck. 2524 | 2525 | 2526 | 2527 | 2528 | morse-region 2529 | Translates a region into morse code. Undo 2530 | (C-S-_) or M-x unmorse-region to 2531 | unmorse. 2532 | 2533 | 2534 | 2535 | 2536 | 2537 |
2538 | Copyright (C) 2017 Pete Za Sayari 2539 | <petezasayari@gmail.com> 2540 | 2541 | Released under the terms of the GNU General Public 2542 | License version 3 or later. 2543 | 2544 | The last version of this cheatsheet so as the XML-XSLT 2545 | source is at https://github.com/PeteZaSayari/emacs-cs. 2546 |
2547 | 2548 |
2549 | 2550 | 2563 | -------------------------------------------------------------------------------- /todo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | Some words about "re-builder". 7 | 8 | 9 | 11 | Add some words into the "Search and replace" paragraph about 12 | searching into regions, so as for regex into regions. WONTDO: it 13 | seem that there is not such a command; it can be replaced with M-% 14 | (query-replace) and C-M-% (query-replace-regexp). 15 | 16 | 17 | 19 | CHANGE THE NAMES OF TAGS INTO "tohtml.xsl" ACCORDING TO 20 | "cheatsheet.dtd". 21 | 22 | 23 | 25 | Change the name of tags "d", "f" and "k" into "cheatsheet.dtd". 26 | 27 | 28 | 30 | REVIEW THE FORMATTING OF THE PARAGRAPHS ABOUT REGEXs. 31 | 32 | 33 | 35 | The paragraph about rectangles has to be moved right after 36 | "Functions for marking and killing text". 37 | 38 | 39 | 41 | Add a paragraph about regex, or set a new thematic cheatsheet upon 42 | regular expressions. 43 | 44 | 45 | 47 | Rewrite, in "tohtml.xsl", the logic of "page-break"s to improve 48 | the formatting of the cheatsheet, mainly for the printing. 49 | 50 | 51 | 53 | Add HTML-like formatting features into "cheatsheet.dtd". 54 | See http://www.xmlfiles.com/dtd/dtd_examples.asp 55 | 56 | 57 | 59 | Add chapter "Abbreviation" in emacs-cs.xml about the "abbrev" 60 | block of commands. See 61 | https://www.gnu.org/software/emacs/manual/html_node/emacs/Abbrevs.html 62 | 63 | 64 | 66 | Refine using new material. 67 | 68 | 69 | 71 | Add some commands for the shell and for parentheses. 72 | 73 | 74 | 76 | Find a better font for the "kbd" tag. 77 | 78 | 79 | 81 | "Games" section: a more complete list and a better description of 82 | every function. 83 | 84 | 85 | 87 | The descriptions for the nXML mode are too long. Shorten them. 88 | 89 | 90 | 91 | Split the .xsl file into two files: one for the screen and one for 92 | the printer. 93 | 94 | 95 | 97 | Ask at stackoverflow about the problem of the fonts. 98 | Solved by myself!. 99 | 100 | 101 | 103 | A README file. It needs instructions to read the cheat sheet on a 104 | web browser and to print it on paper. 105 | 106 | 107 | 108 | 124 | -------------------------------------------------------------------------------- /tohtml.xsl: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | The Big Emacs Cheatsheet 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 | 26 | 27 |

28 |
29 |
30 |
31 | 32 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
45 |
46 | 47 |
48 | 49 | 50 |
51 | 52 | 53 | 54 | 55 | 58 | 59 | 60 | 63 | 64 | 65 | 66 | 67 | 68 | 81 | 82 | 83 | 86 | 87 | 88 | 89 |
56 | 57 | 61 | 62 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 84 | 85 |
90 | 91 |
92 | 93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 | 101 | 102 |
103 |
104 |
105 |
106 | 107 |
108 | 109 | 110 | 111 |
112 |
113 | 114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 | 122 |
123 | --------------------------------------------------------------------------------