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