Knowledge (XXG)

Emacs Lisp

Source đź“ť

1333:; lexical scoping was still uncommon and of uncertain performance. In computer scientist Olin Shivers’s recollection, "I asked RMS when he was implementing emacs lisp why it was dynamically scoped and his exact reply was that lexical scope was too inefficient." Dynamic scoping was also meant to provide greater flexibility for user customizations. However, dynamic scoping has several disadvantages. Firstly, it can easily lead to bugs in large programs, due to unintended interactions between variables in different functions. Secondly, accessing variables under dynamic scoping is generally slower than under lexical scoping. 3470: 1473:, and a little by Common Lisp. If you know Common Lisp, you will notice many similarities. However, many features of Common Lisp have been omitted or simplified in order to reduce the memory requirements of GNU Emacs. Sometimes the simplifications are so drastic that a Common Lisp user might be very confused. We will occasionally point out how GNU Emacs Lisp differs from Common Lisp." – from the "History" section of the "Introduction" to the Emacs Lisp Manual, as of Emacs 21 1482:"So the development of that operating system, the GNU operating system, is what led me to write the GNU Emacs. In doing this, I aimed to make the absolute minimal possible Lisp implementation. The size of the programs was a tremendous concern. There were people in those days, in 1985, who had one-megabyte machines without virtual memory. They wanted to be able to use GNU Emacs. This meant I had to keep the program as small as possible." – from 2953: 2943: 2923: 2913: 3444: 3146: 3000: 3434: 2933: 38: 1269:. This package replaces an earlier "cl" package, which would overwrite existing Emacs Lisp function definitions with ones more similar to those found in Common Lisp. The "cl-lib" package, on the other hand, follows Emacs Lisp style guidelines more closely and prefixes each function and macro it defines with "cl-" (e.g., 1046:
to execute the user-supplied code whenever it is called, after executing the rest of the function. Advice can also be specified to execute before the original function, around it (literally wrapping the original), or to conditionally execute the original function based on the results of the advice.
833:
The development of Emacs Lisp was guided by the goal of providing data structures and features specific to making a versatile text editor over implementing a general-purpose programming language. For example, Emacs Lisp cannot easily read a file a line at a time—the entire file must be read into an
1256:
Bytecode still runs more slowly than primitives, but functions loaded as bytecode can be easily modified and re-loaded. In addition, bytecode files are platform-independent. The standard Emacs Lisp code distributed with Emacs is loaded as bytecode, although the matching source files are usually
1167:
component of the Emacs program reads and parses the functions and variables, storing them in memory. They are then available to other editing functions, and to user commands. Functions and variables can be freely modified and redefined without restarting the editor or reloading the config file.
859:. Normally, when the new window appears, it displays the same buffer as the previous one. Suppose we wish to make it display the next available buffer. In order to do this, the user writes the following Emacs Lisp code, in either an existing Emacs Lisp source file or an empty Emacs buffer: 976:
around existing functions instead of defining their own. This has the advantage of not requiring keybindings to be changed and working wherever the original function is called, as well as being simpler to write but the disadvantage of making debugging more complicated. For this reason,
1215:. Functions may be written as primitives because they need access to external data and libraries not otherwise available from Emacs Lisp, or because they are called often enough that the comparative speed of C versus Emacs Lisp makes a worthwhile difference. 408:
by default. That is, a function may reference local variables in the scope it is called from, but not in the scope where it was defined. Recently, there has been an ongoing effort to update code to use lexical scoping, for reasons outlined below.
403:
The Lisp dialect used in Emacs differs substantially from the more modern Common Lisp and Scheme dialects used for applications programming. A prominent characteristic of Emacs Lisp is in its use of dynamic rather than lexical
391:
into GNU Emacs, he also chose Lisp as the extension language, because of its powerful features, including the ability to treat functions as data. Although the Common Lisp standard had yet to be formulated,
344:. In this way it may be called from the command line or via an executable file, and its editing functions, such as buffers and movement commands are available to the program just as in the normal mode. No 1130:
a configuration file. If the code is saved into an Emacs init file, then Emacs will load the extension the next time it starts. Otherwise, the changes must be reevaluated manually when Emacs is restarted.
1171:
In order to save time and memory space, much of the functionality of Emacs loads only when required. Each set of optional features shipped with Emacs is implemented by a collection of Emacs code called a
3525: 295:
pages allowing the user to set options and preview their effect in the running Emacs session. When the user saves their changes, Customize simply writes the necessary Emacs Lisp code to the user's
2604: 1329:
In dynamic scoping, if a programmer declares a variable within the scope of a function, it is available to subroutines called from within that function. Originally, this was intended as an
1163:. Additionally, users may specify any file to load as a config file on the command line, or explicitly state that no config file is to be loaded. When the files are loaded, an 1757: 834:
Emacs buffer. However, Emacs Lisp provides many features for navigating and modifying buffer text at a sentence, paragraph, or higher syntactic level as defined by modes.
3490: 2513: 1438: 1257:
provided for the user's reference as well. User-supplied extensions are typically not byte-compiled, as they are neither as large nor as computationally intensive.
3520: 981:
is not allowed in the source code of GNU Emacs, but if a user wishes, the advice feature can be used in their code to reimplement the above code as follows:
1697: 2610: 2007: 3505: 2957: 2917: 2240: 3500: 1750: 837:
Here follows a simple example of an Emacs extension written in Emacs Lisp. In Emacs, the editing area can be split into separate areas called
3305: 2989: 2598: 1784: 1707: 1223: 348:
is presented when Emacs is started in batch mode; it simply executes the passed-in script and exits, displaying any output from the script.
3474: 2947: 2937: 2649: 1414: 1426:
We have some experience in Lisp implementation now, since Elisp (the extended implementation of Rutgers/UCI Lisp) is essentially finished.
1887: 1173: 1530: 3361: 2725: 2705: 2615: 2459: 1789: 1743: 396:
existed at the time but Stallman chose not to use it because of its comparatively poor performance on workstations (as opposed to the
2276: 2927: 1203:. Although primitives can be called from Lisp code, they can only be modified by editing the C source files and recompiling. In 2720: 2684: 2023: 1330: 1164: 3351: 2044: 2028: 1873: 1318:, offering static (or lexical) as an option starting from version 24. It can be activated by setting the file local variable 1306:
like Common Lisp, meaning that it has a function namespace which is separate from the namespace it uses for other variables.
694: 432: 1820: 2793: 2385: 2077: 1998: 1253:". Compared to source files, bytecode files load and run faster, occupy less disk space, and use less memory when loaded. 1180:. For example, there is a library for highlighting keywords in program source code, and a library for playing the game of 740: 550: 393: 3460: 845:. A buffer is a region of text loaded into Emacs' memory (possibly from a file) which can be saved into a text document. 299:, which can be set to a special file that only Customize uses, to avoid the possibility of altering the user's own file. 3510: 2567: 2231: 2054: 1825: 1222:
or to more subtle bugs, which crash the editor, and because writing C code that interacts correctly with the Emacs Lisp
400:
that were Emacs' traditional home), and he wanted to develop a dialect which he thought would be more easily optimized.
1649: 2831: 2379: 2146: 2092: 2069: 2033: 1853: 1766: 1432: 959:(the old window-splitting function), then tells the new window to display another (new) buffer. The second statement, 129: 71: 1058:, which is claimed to be more flexible and simpler. The advice above could be reimplemented using the new system as: 1385: 288: 2341: 2321: 2306: 2291: 2211: 800: 790: 569: 526: 208: 1544: 1361: 287:
Emacs Lisp code is used to modify, extend and customize Emacs. Those not wanting to write the code themselves the
2982: 2762: 2394: 2266: 1988: 1862: 810: 276:. It is used for implementing most of the editing functionality built into Emacs, the remainder being written in 266: 2922: 2679: 2492: 2102: 1835: 1809: 1315: 642: 405: 277: 171: 3177: 2854: 1568: 323: 281: 1675: 2497: 2336: 1982: 1947: 1920: 1281: 1219: 1184:. Each library is implemented using one or more Emacs Lisp source files. Libraries can define one or more 376: 372: 61: 53: 3515: 3290: 3268: 3081: 3054: 2806: 2508: 2464: 2442: 1964: 1799: 1556:
Lisp programmers will want to note that the current Emacs Lisp compiler does not optimize tail recursion
973: 1495: 1607: 1586: 1277:), avoiding the unexpected changes in behavior that could occur whenever the "cl" package was loaded. 2975: 2710: 2664: 2432: 1628: 968: 303: 48: 3300: 3187: 3171: 1915: 1843: 1299:
library aids in writing portable Emacs Lisp code, with the help of the polysylabi platform bridge.
1177: 269: 1296: 1226:
is error-prone, the number of functions implemented as primitives is kept to a necessary minimum.
3341: 3336: 3331: 3121: 2816: 2801: 2753: 2659: 1942: 1896: 425: 326: 215: 181: 95: 88: 1410: 1207:, primitives are not available as external libraries; they are part of the Emacs executable. In 3437: 3409: 3379: 3217: 3197: 3145: 2892: 2811: 2778: 2412: 2296: 1703: 820: 538: 3374: 3091: 2758: 2730: 2644: 2562: 2371: 384: 203: 193: 83: 1211:, runtime loading of such primitives is possible, using the operating system's support for 3025: 2869: 2864: 2639: 2530: 2081: 1953: 1936: 1246: 1212: 78: 57: 1155:" despite being evaluated as any Emacs Lisp code. Since the mid-1990s, Emacs also loads 3495: 3384: 3310: 3295: 3192: 3111: 3011: 2859: 2849: 2844: 2783: 2654: 2059: 1794: 1289: 1285: 345: 3484: 3346: 3315: 3285: 3106: 3069: 2821: 2768: 2748: 2700: 2669: 2351: 418: 388: 380: 315: 164: 2999: 1516: 3277: 2887: 2420: 1830: 1814: 397: 333: 1326:
macro from the (now deprecated) "cl" package to provide effective lexical scope.
1241:
which can translate Emacs Lisp source files into a special representation termed
3366: 3356: 3116: 2839: 2773: 2740: 2692: 2674: 2425: 2235: 2018: 1905: 1868: 1804: 1496:"Re: [Emacs-diffs] /srv/bzr/emacs/trunk r111086: gmm-utils.el (gmm-flet" 1303: 1266: 852: 654: 599: 368: 319: 296: 250: 160: 155: 100: 379:
methods. Lisp was the default extension language for Emacs derivatives such as
3414: 3096: 2715: 2572: 2557: 2356: 2257: 2107: 1931: 1342: 1144: 1140: 734: 622: 589: 292: 3419: 3182: 3033: 2967: 2577: 2271: 2087: 2064: 2039: 1959: 1735: 1204: 760: 579: 514: 3447: 17: 3404: 3212: 3074: 3059: 2361: 2346: 2331: 2221: 2216: 2164: 2125: 1838: 1409:"HEDRICK at RUTGERS (Mngr DEC-20's/Dir LCSR Comp Facility" (1981-12-18). 1242: 1238: 770: 724: 684: 674: 355:, although there are also older, unrelated Lisp dialects with that name. 311: 307: 1483: 2582: 2503: 2326: 2316: 2301: 2261: 2226: 2169: 2159: 2154: 2049: 1470: 780: 750: 612: 502: 364: 254: 37: 3227: 3160: 3038: 2879: 2389: 2286: 2252: 2198: 2187: 2179: 2117: 2013: 1977: 1208: 1181: 1127: 714: 704: 490: 1727: 229: 3232: 3222: 3207: 3165: 3126: 3101: 3003: 2469: 2311: 2281: 2193: 1926: 1265:
Notably, the "cl-lib" package implements a fairly large subset of
632: 273: 186: 3258: 3202: 3131: 3086: 3064: 2399: 2097: 1969: 1280:
Emacs Lisp (unlike some other Lisp implementations) does not do
1123: 337: 330: 2971: 1739: 3237: 3020: 1151:". The user's init file is an exception, often appearing as " 2605:
MIT Computer Science and Artificial Intelligence Laboratory
1126:. It is not necessary to recompile, restart Emacs, or even 1237:
can make Emacs Lisp code execute faster. Emacs contains a
1191:
Emacs developers write certain functions in C. These are
1458:
CCA EMACS and Elisp are trademarks of CCA Uniworks, Inc.
855:
to open a new window. This runs the Emacs Lisp function
1273:, which doesn't conflict with the name of the built-in 963:
re-binds the key sequence "C-x 2" to the new function.
1484:"My Lisp Experiences and the Development of GNU Emacs" 3526:
GNU Project Lisp programming language implementations
3458: 1218:
However, because errors in C code can easily lead to
3397: 3324: 3276: 3267: 3246: 3153: 3047: 3019: 3010: 2878: 2830: 2792: 2739: 2628: 2591: 2550: 2543: 2523: 2485: 2478: 2452: 2441: 2411: 2370: 2178: 2145: 2138: 2116: 1997: 1904: 1895: 1886: 1852: 1773: 244: 224: 214: 202: 192: 180: 170: 154: 128: 106: 94: 77: 67: 47: 1322:. Before this option was added, one could use the 966:This can also be written using the feature called 2514:Structure and Interpretation of Computer Programs 1696:Featherston, Sam; Winkler, Susanne (2009-06-02). 1122:These changes take effect as soon as the code is 1411:""information about Common Lisp implementation"" 1147:files, by convention with the filename suffix " 2983: 1751: 426: 8: 1413:. Letter to "rpg at SU-AI, jonl at MIT-AI". 30: 2611:Stanford Artificial Intelligence Laboratory 1437:: CS1 maint: numeric names: authors list ( 291:function can be used. It provides a set of 3273: 3016: 2990: 2976: 2968: 2912: 2632: 2547: 2482: 2449: 2142: 1901: 1892: 1777: 1758: 1744: 1736: 1386:"Compilation of Emacs Lisp to native code" 433: 419: 411: 29: 3491:Dynamically scoped programming languages 1188:to activate and control their function. 27:Dialect of Lisp in the Emacs text editor 3465: 1469:"GNU Emacs Lisp is largely inspired by 1353: 620: 3443: 1430: 1314:Like MacLisp, Emacs Lisp uses dynamic 818: 808: 798: 788: 778: 768: 758: 748: 738: 732: 722: 712: 702: 692: 682: 672: 662: 652: 640: 630: 610: 603: 597: 587: 577: 567: 560: 557: 554: 548: 536: 524: 512: 500: 488: 363:Emacs Lisp is most closely related to 3521:Programming languages created in 1985 3306:Massachusetts Institute of Technology 2599:Massachusetts Institute of Technology 1245:. Emacs Lisp bytecode files have the 322:, Emacs Lisp can also function as an 7: 3433: 2932: 1629:"Dynamic Binding Vs Lexical Binding" 2616:University of California, Berkeley 2460:Scheme Requests for Implementation 972:, which allows the user to create 580:ZIL (Zork Implementation Language) 25: 2277:Knowledge Engineering Environment 367:, with some later influence from 3506:Lisp programming language family 3468: 3442: 3432: 3144: 2998: 2952: 2951: 2942: 2941: 2931: 2921: 2911: 1545:"Appendix C Porting Common Lisp" 36: 3501:Free compilers and interpreters 1654:GNU Emacs Common Lisp Emulation 1417:from the original on 2016-09-20 1310:From dynamic to lexical scoping 359:Compared to other Lisp dialects 1114:switch-to-next-window-in-split 1069:switch-to-next-window-in-split 841:, each displaying a different 1: 3475:Free and open-source software 2386:Common Lisp Interface Manager 1456:. December 1984. p. 16. 1139:Emacs Lisp code is stored in 1785:Automatic storage management 848:Users can press the default 3311:Thorn EMI Computer Software 2034:Game Oriented Assembly Lisp 1610:. Lists.gnu.org. 2011-04-01 1498:. Lists.gnu.org. 2012-12-05 1362:"Byte compiling Emacs Lisp" 176:Dynamic, optionally lexical 135:29.4 / 22 June 2024 112:; 39 years ago 3542: 3438:Emacs on Wikimedia Commons 1650:"Obsolete Lexical Binding" 1001:my-window-splitting-advice 951:, defines a new function, 816: 806: 796: 786: 776: 494: 351:Emacs Lisp is also termed 3428: 3142: 2909: 2635: 1863:Common Lisp Object System 1780: 1767:Lisp programming language 1050:Emacs 24.4 replaces this 766: 756: 746: 730: 720: 710: 700: 690: 680: 670: 660: 650: 646: 638: 628: 618: 608: 595: 585: 575: 565: 546: 542: 534: 530: 522: 518: 510: 506: 498: 414:Timeline of Lisp dialects 249: 150: 124: 35: 2563:Bolt, Beranek and Newman 2493:Common Lisp the Language 1060: 983: 861: 483: 480: 477: 474: 471: 468: 465: 462: 459: 456: 453: 450: 447: 444: 3178:Emacs Speaks Statistics 1631:. EmacsWiki. 2013-05-17 1288:can eventually lead to 1220:segmentation violations 1105:'split-window-below 2498:How to Design Programs 2337:Portable Standard Lisp 1983:Steel Bank Common Lisp 1948:Embeddable Common Lisp 1921:Armed Bear Common Lisp 1800:Higher-order functions 1678:. People.csail.mit.edu 1282:tail-call optimization 377:functional programming 340:, by calling Emacs in 137:; 3 months ago 2807:Shriram Krishnamurthi 2509:Practical Common Lisp 2465:Common Lisp HyperSpec 1989:Symbolics Common Lisp 1965:Macintosh Common Lisp 1702:. Walter de Gruyter. 1587:"Emacs 24.1 released" 947:The first statement, 3357:Joris van der Hoeven 2711:Robert Tappan Morris 2665:Robert Bruce Findler 2433:Space-cadet keyboard 1844:Tree data structures 1821:Read–eval–print loop 1531:"Porting old advice" 1452:"Ad for CCA EMACS". 961:(global-set-key ...) 953:my-split-window-func 939:my-split-window-func 870:my-split-window-func 604: ANSI standard 304:programming language 3511:Scripting languages 3448:Emacs on Wikiquotes 3301:Mark of the Unicorn 2453:Technical standards 1916:Allegro Common Lisp 489: LISP 1, 1.5, 441: 216:Filename extensions 107:First appeared 32: 3342:Richard P. Gabriel 2817:Gerald Jay Sussman 2802:Matthias Felleisen 2754:Richard P. Gabriel 2685:Richard Greenblatt 2660:Matthias Felleisen 1943:Corman Common Lisp 1433:cite press release 1197:built-in functions 1161:~/.emacs.d/init.el 1044:split-window-below 992:split-window-below 957:split-window-below 888:split-window-below 857:split-window-below 412: 327:scripting language 89:Guy L. Steele, Jr. 3456: 3455: 3410:Dissociated press 3393: 3392: 3380:Guy L. Steele Jr. 3140: 3139: 2965: 2964: 2905: 2904: 2901: 2900: 2893:Robin Popplestone 2812:Guy L. Steele Jr. 2779:Guy L. Steele Jr. 2624: 2623: 2539: 2538: 2407: 2406: 2297:Lisp Machine Lisp 2207: 2206: 2134: 2133: 1882: 1881: 1709:978-3-11-021614-1 1608:"Lexical binding" 1573:groups.google.com 1261:Language features 1224:garbage collector 1078:set-window-buffer 1019:set-window-buffer 930:"C-x 2" 897:set-window-buffer 826: 825: 561: R7RS small 539:Lisp Machine Lisp 280:, as is the Lisp 260: 259: 156:Typing discipline 16:(Redirected from 3533: 3473: 3472: 3471: 3464: 3446: 3445: 3436: 3435: 3375:Richard Stallman 3296:Perfect Software 3274: 3148: 3017: 3002: 2992: 2985: 2978: 2969: 2955: 2954: 2945: 2944: 2935: 2934: 2925: 2915: 2914: 2759:Philip Greenspun 2731:Richard Stallman 2645:Daniel G. Bobrow 2633: 2548: 2483: 2450: 2372:Operating system 2143: 1902: 1893: 1778: 1760: 1753: 1746: 1737: 1731: 1730: 1728:Official website 1714: 1713: 1693: 1687: 1686: 1684: 1683: 1672: 1666: 1665: 1663: 1661: 1646: 1640: 1639: 1637: 1636: 1625: 1619: 1618: 1616: 1615: 1604: 1598: 1597: 1595: 1594: 1583: 1577: 1576: 1565: 1559: 1558: 1553: 1552: 1541: 1535: 1534: 1527: 1521: 1520: 1513: 1507: 1506: 1504: 1503: 1492: 1486: 1480: 1474: 1467: 1461: 1460: 1449: 1443: 1442: 1436: 1428: 1423: 1422: 1406: 1400: 1399: 1397: 1396: 1390:GNU Emacs manual 1382: 1376: 1375: 1373: 1372: 1366:GNU Emacs manual 1358: 1325: 1321: 1302:Emacs Lisp is a 1284:. Without this, 1276: 1272: 1252: 1162: 1158: 1154: 1150: 1118: 1115: 1112: 1109: 1106: 1103: 1100: 1097: 1094: 1091: 1088: 1085: 1082: 1079: 1076: 1073: 1070: 1067: 1064: 1057: 1053: 1045: 1038: 1035: 1032: 1029: 1026: 1023: 1020: 1017: 1014: 1011: 1008: 1005: 1002: 999: 996: 993: 990: 987: 962: 958: 954: 950: 943: 940: 937: 934: 931: 928: 925: 922: 919: 916: 913: 910: 907: 904: 901: 898: 895: 892: 889: 886: 883: 880: 877: 874: 871: 868: 865: 858: 442: 435: 428: 421: 385:Richard Stallman 329:, much like the 302:Besides being a 240: 237: 235: 233: 231: 145: 143: 138: 120: 118: 113: 84:Richard Stallman 79:Designed by 40: 33: 21: 3541: 3540: 3536: 3535: 3534: 3532: 3531: 3530: 3481: 3480: 3479: 3469: 3467: 3459: 3457: 3452: 3424: 3389: 3320: 3291:Lugaru Software 3263: 3242: 3149: 3136: 3043: 3024: 3012:Implementations 3006: 2996: 2966: 2961: 2897: 2874: 2870:Cynthia Solomon 2865:Mitchel Resnick 2826: 2788: 2735: 2689:Timothy P. Hart 2650:William Clinger 2640:Edmund Berkeley 2620: 2587: 2535: 2531:ProgramByDesign 2519: 2474: 2444: 2437: 2403: 2366: 2203: 2174: 2130: 2112: 1993: 1954:GNU Common Lisp 1937:CMU Common Lisp 1907: 1888:Implementations 1878: 1848: 1769: 1764: 1726: 1725: 1722: 1717: 1710: 1695: 1694: 1690: 1681: 1679: 1674: 1673: 1669: 1659: 1657: 1648: 1647: 1643: 1634: 1632: 1627: 1626: 1622: 1613: 1611: 1606: 1605: 1601: 1592: 1590: 1589:. Lists.gnu.org 1585: 1584: 1580: 1569:"Google Groups" 1567: 1566: 1562: 1550: 1548: 1543: 1542: 1538: 1529: 1528: 1524: 1515: 1514: 1510: 1501: 1499: 1494: 1493: 1489: 1481: 1477: 1468: 1464: 1451: 1450: 1446: 1429: 1420: 1418: 1408: 1407: 1403: 1394: 1392: 1384: 1383: 1379: 1370: 1368: 1360: 1359: 1355: 1351: 1339: 1323: 1320:lexical-binding 1319: 1312: 1286:tail recursions 1274: 1270: 1263: 1250: 1247:filename suffix 1232: 1213:dynamic linking 1160: 1156: 1152: 1148: 1137: 1120: 1119: 1116: 1113: 1110: 1107: 1104: 1101: 1098: 1095: 1092: 1089: 1086: 1083: 1080: 1077: 1074: 1071: 1068: 1065: 1062: 1055: 1054:mechanism with 1051: 1043: 1042:This instructs 1040: 1039: 1036: 1033: 1030: 1027: 1024: 1021: 1018: 1015: 1012: 1009: 1006: 1003: 1000: 997: 994: 991: 988: 985: 960: 956: 952: 948: 945: 944: 941: 938: 935: 932: 929: 926: 923: 920: 917: 914: 911: 908: 905: 902: 899: 896: 893: 890: 887: 884: 881: 878: 875: 872: 869: 866: 863: 856: 851: 831: 440: 439: 361: 228: 220:.el, .elc, .eln 146: 141: 139: 136: 116: 114: 111: 87: 43: 28: 23: 22: 15: 12: 11: 5: 3539: 3537: 3529: 3528: 3523: 3518: 3513: 3508: 3503: 3498: 3493: 3483: 3482: 3478: 3477: 3454: 3453: 3451: 3450: 3440: 3429: 3426: 3425: 3423: 3422: 3417: 3412: 3407: 3401: 3399: 3395: 3394: 3391: 3390: 3388: 3387: 3385:Daniel Weinreb 3382: 3377: 3372: 3369: 3364: 3359: 3354: 3349: 3344: 3339: 3334: 3328: 3326: 3322: 3321: 3319: 3318: 3313: 3308: 3303: 3298: 3293: 3288: 3282: 3280: 3271: 3265: 3264: 3262: 3261: 3256: 3250: 3248: 3244: 3243: 3241: 3240: 3235: 3230: 3225: 3220: 3215: 3210: 3205: 3200: 3195: 3190: 3185: 3180: 3175: 3168: 3163: 3157: 3155: 3151: 3150: 3143: 3141: 3138: 3137: 3135: 3134: 3129: 3124: 3119: 3114: 3112:Perfect Writer 3109: 3104: 3099: 3094: 3089: 3084: 3079: 3078: 3077: 3067: 3062: 3057: 3051: 3049: 3045: 3044: 3042: 3041: 3036: 3030: 3028: 3014: 3008: 3007: 2997: 2995: 2994: 2987: 2980: 2972: 2963: 2962: 2910: 2907: 2906: 2903: 2902: 2899: 2898: 2896: 2895: 2890: 2884: 2882: 2876: 2875: 2873: 2872: 2867: 2862: 2860:Seymour Papert 2857: 2852: 2850:Wally Feurzeig 2847: 2845:Denison Bollay 2842: 2836: 2834: 2828: 2827: 2825: 2824: 2819: 2814: 2809: 2804: 2798: 2796: 2790: 2789: 2787: 2786: 2784:Daniel Weinreb 2781: 2776: 2771: 2766: 2756: 2751: 2745: 2743: 2737: 2736: 2734: 2733: 2728: 2723: 2718: 2713: 2708: 2703: 2698: 2695: 2690: 2687: 2682: 2677: 2672: 2667: 2662: 2657: 2655:R. Kent Dybvig 2652: 2647: 2642: 2636: 2630: 2626: 2625: 2622: 2621: 2619: 2618: 2613: 2608: 2602: 2595: 2593: 2589: 2588: 2586: 2585: 2580: 2575: 2570: 2565: 2560: 2558:Apple Computer 2554: 2552: 2545: 2541: 2540: 2537: 2536: 2534: 2533: 2527: 2525: 2521: 2520: 2518: 2517: 2511: 2506: 2501: 2495: 2489: 2487: 2480: 2476: 2475: 2473: 2472: 2467: 2462: 2456: 2454: 2447: 2439: 2438: 2436: 2435: 2430: 2429: 2428: 2417: 2415: 2409: 2408: 2405: 2404: 2402: 2397: 2392: 2383: 2376: 2374: 2368: 2367: 2365: 2364: 2359: 2354: 2349: 2344: 2339: 2334: 2329: 2324: 2319: 2314: 2309: 2304: 2299: 2294: 2289: 2284: 2279: 2274: 2269: 2264: 2255: 2250: 2245: 2229: 2224: 2219: 2214: 2208: 2205: 2204: 2202: 2201: 2196: 2191: 2184: 2182: 2176: 2175: 2173: 2172: 2167: 2162: 2157: 2151: 2149: 2140: 2139:Unstandardized 2136: 2135: 2132: 2131: 2129: 2128: 2122: 2120: 2114: 2113: 2111: 2110: 2105: 2100: 2095: 2090: 2085: 2075: 2072: 2067: 2062: 2060:MIT/GNU Scheme 2057: 2052: 2047: 2042: 2037: 2031: 2026: 2021: 2016: 2011: 2003: 2001: 1995: 1994: 1992: 1991: 1986: 1980: 1975: 1972: 1967: 1962: 1957: 1951: 1945: 1940: 1934: 1929: 1924: 1918: 1912: 1910: 1899: 1890: 1884: 1883: 1880: 1879: 1877: 1876: 1871: 1866: 1859: 1857: 1850: 1849: 1847: 1846: 1841: 1833: 1828: 1823: 1818: 1812: 1807: 1802: 1797: 1795:Dynamic typing 1792: 1787: 1781: 1775: 1771: 1770: 1765: 1763: 1762: 1755: 1748: 1740: 1734: 1733: 1721: 1720:External links 1718: 1716: 1715: 1708: 1688: 1667: 1641: 1620: 1599: 1578: 1560: 1536: 1522: 1508: 1487: 1475: 1462: 1444: 1401: 1377: 1352: 1350: 1347: 1346: 1345: 1338: 1335: 1311: 1308: 1290:stack overflow 1262: 1259: 1235:Byte-compiling 1231: 1228: 1195:, also termed 1136: 1133: 1061: 984: 955:, which calls 921:global-set-key 862: 849: 830: 827: 824: 823: 817: 814: 813: 807: 804: 803: 797: 794: 793: 787: 784: 783: 777: 774: 773: 767: 764: 763: 757: 754: 753: 747: 744: 743: 737: 731: 728: 727: 721: 718: 717: 711: 708: 707: 701: 698: 697: 691: 688: 687: 681: 678: 677: 671: 668: 667: 661: 658: 657: 651: 648: 647: 645: 639: 636: 635: 629: 626: 625: 619: 616: 615: 609: 606: 605: 602: 596: 593: 592: 586: 583: 582: 576: 573: 572: 566: 563: 562: 559: 556: 553: 547: 544: 543: 541: 535: 532: 531: 529: 523: 520: 519: 517: 511: 508: 507: 505: 499: 496: 495: 493: 486: 485: 482: 479: 476: 473: 470: 467: 464: 461: 458: 455: 452: 449: 446: 438: 437: 430: 423: 415: 413: 371:. It supports 360: 357: 346:user interface 258: 257: 247: 246: 242: 241: 226: 222: 221: 218: 212: 211: 206: 200: 199: 198:Cross-platform 196: 190: 189: 184: 178: 177: 174: 168: 167: 158: 152: 151: 148: 147: 134: 132: 130:Stable release 126: 125: 122: 121: 108: 104: 103: 98: 92: 91: 81: 75: 74: 69: 65: 64: 51: 45: 44: 41: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 3538: 3527: 3524: 3522: 3519: 3517: 3514: 3512: 3509: 3507: 3504: 3502: 3499: 3497: 3494: 3492: 3489: 3488: 3486: 3476: 3466: 3462: 3449: 3441: 3439: 3431: 3430: 3427: 3421: 3418: 3416: 3413: 3411: 3408: 3406: 3403: 3402: 3400: 3396: 3386: 3383: 3381: 3378: 3376: 3373: 3371:David Reitter 3370: 3368: 3365: 3363: 3362:Daniel Murphy 3360: 3358: 3355: 3353: 3350: 3348: 3347:James Gosling 3345: 3343: 3340: 3338: 3335: 3333: 3332:Thomas Dickey 3330: 3329: 3327: 3323: 3317: 3314: 3312: 3309: 3307: 3304: 3302: 3299: 3297: 3294: 3292: 3289: 3287: 3284: 3283: 3281: 3279: 3278:Organizations 3275: 3272: 3270: 3266: 3260: 3257: 3255: 3252: 3251: 3249: 3245: 3239: 3236: 3234: 3231: 3229: 3226: 3224: 3221: 3219: 3216: 3214: 3211: 3209: 3206: 3204: 3201: 3199: 3196: 3194: 3191: 3189: 3186: 3184: 3181: 3179: 3176: 3174: 3173: 3169: 3167: 3164: 3162: 3159: 3158: 3156: 3152: 3147: 3133: 3130: 3128: 3125: 3123: 3120: 3118: 3115: 3113: 3110: 3108: 3107:Multics Emacs 3105: 3103: 3100: 3098: 3095: 3093: 3090: 3088: 3085: 3083: 3080: 3076: 3073: 3072: 3071: 3070:Gosling Emacs 3068: 3066: 3063: 3061: 3058: 3056: 3053: 3052: 3050: 3046: 3040: 3037: 3035: 3032: 3031: 3029: 3027: 3022: 3018: 3015: 3013: 3009: 3005: 3001: 2993: 2988: 2986: 2981: 2979: 2974: 2973: 2970: 2960: 2959: 2950: 2949: 2940: 2939: 2930: 2929: 2924: 2920: 2919: 2908: 2894: 2891: 2889: 2886: 2885: 2883: 2881: 2877: 2871: 2868: 2866: 2863: 2861: 2858: 2856: 2853: 2851: 2848: 2846: 2843: 2841: 2838: 2837: 2835: 2833: 2829: 2823: 2822:Julie Sussman 2820: 2818: 2815: 2813: 2810: 2808: 2805: 2803: 2800: 2799: 2797: 2795: 2791: 2785: 2782: 2780: 2777: 2775: 2772: 2770: 2769:David A. Moon 2767: 2764: 2760: 2757: 2755: 2752: 2750: 2749:Scott Fahlman 2747: 2746: 2744: 2742: 2738: 2732: 2729: 2727: 2726:Steve Russell 2724: 2722: 2719: 2717: 2714: 2712: 2709: 2707: 2706:John McCarthy 2704: 2702: 2701:David Luckham 2699: 2696: 2694: 2691: 2688: 2686: 2683: 2681: 2678: 2676: 2673: 2671: 2670:Matthew Flatt 2668: 2666: 2663: 2661: 2658: 2656: 2653: 2651: 2648: 2646: 2643: 2641: 2638: 2637: 2634: 2631: 2627: 2617: 2614: 2612: 2609: 2606: 2603: 2600: 2597: 2596: 2594: 2590: 2584: 2581: 2579: 2576: 2574: 2571: 2569: 2566: 2564: 2561: 2559: 2556: 2555: 2553: 2549: 2546: 2544:Organizations 2542: 2532: 2529: 2528: 2526: 2522: 2515: 2512: 2510: 2507: 2505: 2502: 2499: 2496: 2494: 2491: 2490: 2488: 2484: 2481: 2477: 2471: 2468: 2466: 2463: 2461: 2458: 2457: 2455: 2451: 2448: 2446: 2440: 2434: 2431: 2427: 2424: 2423: 2422: 2419: 2418: 2416: 2414: 2410: 2401: 2398: 2396: 2393: 2391: 2387: 2384: 2382: 2381: 2377: 2375: 2373: 2369: 2363: 2360: 2358: 2355: 2353: 2350: 2348: 2345: 2343: 2340: 2338: 2335: 2333: 2330: 2328: 2325: 2323: 2320: 2318: 2315: 2313: 2310: 2308: 2305: 2303: 2300: 2298: 2295: 2293: 2290: 2288: 2285: 2283: 2280: 2278: 2275: 2273: 2270: 2268: 2265: 2263: 2259: 2256: 2254: 2251: 2249: 2246: 2243: 2242: 2237: 2233: 2230: 2228: 2225: 2223: 2220: 2218: 2215: 2213: 2210: 2209: 2200: 2197: 2195: 2192: 2189: 2186: 2185: 2183: 2181: 2177: 2171: 2168: 2166: 2163: 2161: 2158: 2156: 2153: 2152: 2150: 2148: 2144: 2141: 2137: 2127: 2124: 2123: 2121: 2119: 2115: 2109: 2106: 2104: 2101: 2099: 2096: 2094: 2091: 2089: 2086: 2083: 2079: 2076: 2074:Pocket Scheme 2073: 2071: 2068: 2066: 2063: 2061: 2058: 2056: 2053: 2051: 2048: 2046: 2043: 2041: 2038: 2035: 2032: 2030: 2027: 2025: 2022: 2020: 2017: 2015: 2012: 2010: 2009: 2005: 2004: 2002: 2000: 1996: 1990: 1987: 1984: 1981: 1979: 1976: 1973: 1971: 1968: 1966: 1963: 1961: 1958: 1955: 1952: 1949: 1946: 1944: 1941: 1938: 1935: 1933: 1930: 1928: 1925: 1922: 1919: 1917: 1914: 1913: 1911: 1909: 1903: 1900: 1898: 1894: 1891: 1889: 1885: 1875: 1872: 1870: 1867: 1864: 1861: 1860: 1858: 1855: 1851: 1845: 1842: 1840: 1837: 1834: 1832: 1831:S-expressions 1829: 1827: 1824: 1822: 1819: 1816: 1815:M-expressions 1813: 1811: 1808: 1806: 1803: 1801: 1798: 1796: 1793: 1791: 1788: 1786: 1783: 1782: 1779: 1776: 1772: 1768: 1761: 1756: 1754: 1749: 1747: 1742: 1741: 1738: 1732:, GNU Project 1729: 1724: 1723: 1719: 1711: 1705: 1701: 1700: 1692: 1689: 1677: 1671: 1668: 1655: 1651: 1645: 1642: 1630: 1624: 1621: 1609: 1603: 1600: 1588: 1582: 1579: 1574: 1570: 1564: 1561: 1557: 1546: 1540: 1537: 1532: 1526: 1523: 1518: 1512: 1509: 1497: 1491: 1488: 1485: 1479: 1476: 1472: 1466: 1463: 1459: 1455: 1448: 1445: 1440: 1434: 1427: 1416: 1412: 1405: 1402: 1391: 1387: 1381: 1378: 1367: 1363: 1357: 1354: 1348: 1344: 1341: 1340: 1336: 1334: 1332: 1327: 1317: 1309: 1307: 1305: 1300: 1298: 1293: 1291: 1287: 1283: 1278: 1268: 1260: 1258: 1254: 1248: 1244: 1240: 1236: 1229: 1227: 1225: 1221: 1216: 1214: 1210: 1206: 1202: 1198: 1194: 1189: 1187: 1183: 1179: 1175: 1169: 1166: 1146: 1142: 1134: 1132: 1129: 1125: 1059: 1048: 982: 980: 975: 971: 970: 964: 860: 854: 846: 844: 840: 835: 828: 822: 815: 812: 805: 802: 795: 792: 785: 782: 775: 772: 765: 762: 755: 752: 745: 742: 736: 729: 726: 719: 716: 709: 706: 699: 696: 689: 686: 679: 676: 669: 666: 659: 656: 649: 644: 637: 634: 627: 624: 617: 614: 607: 601: 594: 591: 584: 581: 574: 571: 564: 552: 545: 540: 533: 528: 521: 516: 509: 504: 497: 492: 487: 443: 436: 431: 429: 424: 422: 417: 416: 410: 407: 401: 399: 398:minicomputers 395: 390: 389:Gosling Emacs 386: 382: 381:EINE and ZWEI 378: 374: 370: 366: 358: 356: 354: 349: 347: 343: 339: 335: 332: 328: 325: 321: 317: 316:transcompiled 313: 309: 305: 300: 298: 294: 290: 285: 283: 279: 275: 271: 268: 264: 256: 252: 248: 245:Influenced by 243: 239: 227: 223: 219: 217: 213: 210: 207: 205: 201: 197: 195: 191: 188: 185: 183: 179: 175: 173: 169: 166: 162: 159: 157: 153: 149: 133: 131: 127: 123: 109: 105: 102: 99: 97: 93: 90: 85: 82: 80: 76: 73: 70: 66: 63: 59: 55: 52: 50: 46: 39: 34: 19: 3516:Text editors 3253: 3170: 2956: 2946: 2936: 2926: 2916: 2888:Rod Burstall 2855:Brian Harvey 2421:Lisp machine 2378: 2247: 2239: 2006: 1897:Standardized 1836:Self-hosting 1817:(deprecated) 1805:Linked lists 1790:Conditionals 1698: 1691: 1680:. Retrieved 1670: 1658:. Retrieved 1653: 1644: 1633:. Retrieved 1623: 1612:. Retrieved 1602: 1591:. Retrieved 1581: 1572: 1563: 1555: 1549:. Retrieved 1539: 1525: 1511: 1500:. Retrieved 1490: 1478: 1465: 1457: 1453: 1447: 1425: 1419:. Retrieved 1404: 1393:. Retrieved 1389: 1380: 1369:. Retrieved 1365: 1356: 1331:optimization 1328: 1313: 1301: 1294: 1279: 1264: 1255: 1234: 1233: 1217: 1200: 1196: 1192: 1190: 1185: 1170: 1138: 1121: 1093:other-buffer 1049: 1041: 1034:other-buffer 978: 967: 965: 946: 912:other-buffer 847: 842: 838: 836: 832: 664: 402: 362: 352: 350: 341: 334:Bourne shell 306:that can be 301: 286: 262: 261: 3367:Russ Nelson 3117:GNU TeXmacs 2840:Hal Abelson 2774:Kent Pitman 2741:Common Lisp 2693:Louis Hodes 2680:Paul Graham 2675:Phyllis Fox 2445:of practice 2426:TI Explorer 2019:Chez Scheme 1869:CommonLoops 1656:. GNU Press 1517:"NEWS.24.4" 1454:Unix Review 1324:lexical-let 1267:Common Lisp 1186:major modes 1165:interpreter 1157:~/.emacs.el 1141:filesystems 1135:Source code 1084:next-window 1025:next-window 949:(defun ...) 903:next-window 879:interactive 853:key binding 771:Visual LISP 655:Chez Scheme 600:Common Lisp 558: R6RS 555: R5RS 369:Common Lisp 324:interpreted 320:native code 297:config file 293:preferences 282:interpreter 251:Common Lisp 101:GNU Project 3485:Categories 3415:Editor war 3254:Emacs Lisp 3097:MicroEMACS 3026:derivative 2721:David Park 2716:Joel Moses 2697:Mike Levin 2573:Lucid Inc. 2524:Curriculum 2357:Spice Lisp 2258:Franz Lisp 2248:Emacs Lisp 2108:TinyScheme 1932:Clozure CL 1682:2013-08-18 1635:2013-08-18 1614:2013-08-18 1593:2013-08-18 1551:2019-10-28 1502:2013-08-18 1421:2019-07-28 1395:2024-06-14 1371:2024-06-14 1349:References 1343:Vim script 1193:primitives 1145:plain text 1102:advice-add 1056:advice-add 735:PLT Scheme 665:Emacs Lisp 623:MIT Scheme 590:Franz Lisp 373:imperative 342:batch mode 263:Emacs Lisp 142:2024-06-22 62:reflective 54:Functional 42:Emacs logo 31:Emacs Lisp 18:Emacs lisp 3420:Spacemacs 3286:Honeywell 3269:Community 3247:Internals 3183:Emacspeak 3034:GNU Emacs 2763:10th rule 2592:Education 2578:Symbolics 2568:Harlequin 2479:Education 2443:Community 2272:Interlisp 2088:Scheme 48 2065:MultiLisp 2040:GNU Guile 1960:LispWorks 1826:Recursion 1547:. Gnu.org 1230:Byte code 1205:GNU Emacs 1124:evaluated 1052:defadvice 989:defadvice 761:GNU Guile 515:Interlisp 289:Customize 272:made for 236:/software 96:Developer 3405:Conkeror 3352:Jim Hall 3337:Paul Fox 3316:UniPress 3213:Org-mode 3075:Mocklisp 3060:Freemacs 2958:Category 2948:Category 2551:Business 2413:Hardware 2362:Zetalisp 2347:S-1 Lisp 2332:Picolisp 2222:BBN LISP 2217:AutoLISP 2165:StarLogo 2126:OpenLisp 2082:features 1839:compiler 1774:Features 1415:Archived 1337:See also 1271:cl-defun 1243:bytecode 1239:compiler 1010:activate 974:wrappers 821:Chialisp 725:OpenLisp 685:PicoLisp 675:AutoLISP 312:bytecode 308:compiled 182:Platform 49:Paradigm 3218:Planner 3082:Hemlock 3055:Epsilon 2938:Commons 2607:(CSAIL) 2583:Xanalys 2504:On Lisp 2327:PC-LISP 2317:newLISP 2302:Maclisp 2262:PC-LISP 2241:history 2227:Clojure 2190:(POP-1) 2170:UCBLogo 2160:NetLogo 2155:MSWLogo 2050:JScheme 2024:Chicken 2008:History 1939:(CMUCL) 1874:Flavors 1856:systems 1699:Process 1471:Maclisp 1178:library 1174:package 1108::before 839:windows 829:Example 781:Clojure 751:newLISP 613:Le Lisp 503:Maclisp 387:forked 383:. When 365:Maclisp 270:dialect 255:Maclisp 225:Website 204:License 161:Dynamic 140: ( 115: ( 3461:Portal 3325:People 3228:RefTeX 3172:Dunnet 3161:AUCTeX 3039:XEmacs 2794:Scheme 2629:People 2516:(SICP) 2500:(HTDP) 2395:Genera 2390:McCLIM 2287:LeLisp 2253:EuLisp 2199:POP-11 2188:COWSEL 2118:ISLISP 2078:Racket 2045:Ikarus 2036:(GOAL) 2029:Gambit 2014:Bigloo 1999:Scheme 1985:(SBCL) 1978:Poplog 1974:Movitz 1923:(ABCL) 1906:Common 1865:(CLOS) 1854:Object 1810:Macros 1706:  1660:27 May 1304:Lisp-2 1209:XEmacs 1182:Tetris 1153:.emacs 1128:rehash 1111:#' 979:advice 969:advice 936:#' 843:buffer 819:  809:  799:  789:  779:  769:  759:  749:  741:Racket 739:  733:  723:  715:ISLISP 713:  705:EuLisp 703:  695:Gambit 693:  683:  673:  663:  653:  641:  631:  621:  611:  598:  588:  578:  568:  551:Scheme 549:  537:  525:  513:  501:  491:LISP 2 394:Scheme 238:/emacs 165:strong 68:Family 3496:Emacs 3398:Other 3233:SLIME 3223:rcirc 3208:Magit 3166:Dired 3154:Modes 3127:Zmacs 3102:MINCE 3048:Other 3004:Emacs 2928:Books 2601:(MIT) 2486:Books 2470:X3J13 2352:SKILL 2312:MLisp 2282:*Lisp 2236:Apple 2232:Dylan 2194:POP-2 1956:(GCL) 1950:(ECL) 1927:CLISP 1316:scope 1275:defun 1201:subrs 1066:defun 1004:first 998:after 867:defun 850:C-x 2 633:XLISP 484:2020 481:2015 478:2010 475:2005 472:2000 469:1995 466:1990 463:1985 460:1980 457:1975 454:1970 451:1965 448:1960 445:1958 406:scope 353:Elisp 274:Emacs 265:is a 209:GPLv3 187:Emacs 172:Scope 3259:MULE 3203:Gnus 3188:EMMS 3132:ZWEI 3122:vile 3087:JOVE 3065:EINE 2918:List 2832:Logo 2400:Scsh 2380:List 2147:Logo 2098:SIOD 2070:Pico 2055:Kawa 1970:Mocl 1908:Lisp 1704:ISBN 1662:2021 1439:link 1297:apel 1295:The 1251:.elc 1159:and 375:and 338:Perl 331:Unix 314:and 267:Lisp 234:.org 232:.gnu 117:1985 110:1985 72:Lisp 58:meta 3238:w3m 3198:eww 3193:ERC 3023:and 3021:GNU 2880:POP 2342:RPL 2322:NIL 2307:MDL 2292:LFE 2212:Arc 2180:POP 2093:SCM 1676:"T" 1199:or 1176:or 1149:.el 1143:as 1096:))) 1037:))) 927:kbd 915:))) 801:LFE 791:Arc 570:NIL 527:MDL 336:or 318:to 310:to 230:www 3487:: 3092:mg 2388:, 2267:Hy 2260:, 2238:, 1652:. 1571:. 1554:. 1435:}} 1431:{{ 1424:. 1388:. 1364:. 1292:. 1072:() 1007:() 873:() 811:Hy 284:. 253:, 194:OS 163:, 60:, 56:, 3463:: 2991:e 2984:t 2977:v 2765:) 2761:( 2244:) 2234:( 2103:T 2084:) 2080:( 1759:e 1752:t 1745:v 1712:. 1685:. 1664:. 1638:. 1617:. 1596:. 1575:. 1533:. 1519:. 1505:. 1441:) 1398:. 1374:. 1249:" 1117:) 1099:( 1090:( 1087:) 1081:( 1075:( 1063:( 1031:( 1028:) 1022:( 1016:( 1013:) 995:( 986:( 942:) 933:) 924:( 918:( 909:( 906:) 900:( 894:( 891:) 885:( 882:) 876:( 864:( 643:T 434:e 427:t 420:v 278:C 144:) 119:) 86:, 20:)

Index

Emacs lisp

Paradigm
Functional
meta
reflective
Lisp
Designed by
Richard Stallman
Guy L. Steele, Jr.
Developer
GNU Project
Stable release
Typing discipline
Dynamic
strong
Scope
Platform
Emacs
OS
License
GPLv3
Filename extensions
www.gnu.org/software/emacs
Common Lisp
Maclisp
Lisp
dialect
Emacs
C

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑