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:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.