{"id":13442173,"url":"https://github.com/caiorss/Emacs-Elisp-Programming","last_synced_at":"2025-03-20T13:32:49.055Z","repository":{"id":46344666,"uuid":"38110992","full_name":"caiorss/Emacs-Elisp-Programming","owner":"caiorss","description":"Tutorial about programming Elisp and Emacs text editor customization.","archived":false,"fork":false,"pushed_at":"2021-10-29T19:47:55.000Z","size":12690,"stargazers_count":670,"open_issues_count":7,"forks_count":88,"subscribers_count":46,"default_branch":"master","last_synced_at":"2025-03-09T04:56:02.350Z","etag":null,"topics":["customization","dev","elisp","emacs","example","lisp","programming","tutorial","utils"],"latest_commit_sha":null,"homepage":"http://caiorss.github.io/Emacs-Elisp-Programming","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/caiorss.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-06-26T12:53:28.000Z","updated_at":"2025-02-26T00:34:58.000Z","dependencies_parsed_at":"2022-09-12T15:01:22.033Z","dependency_job_id":null,"html_url":"https://github.com/caiorss/Emacs-Elisp-Programming","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiorss%2FEmacs-Elisp-Programming","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiorss%2FEmacs-Elisp-Programming/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiorss%2FEmacs-Elisp-Programming/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiorss%2FEmacs-Elisp-Programming/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caiorss","download_url":"https://codeload.github.com/caiorss/Emacs-Elisp-Programming/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244619249,"owners_count":20482387,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["customization","dev","elisp","emacs","example","lisp","programming","tutorial","utils"],"created_at":"2024-07-31T03:01:42.551Z","updated_at":"2025-03-20T13:32:49.043Z","avatar_url":"https://github.com/caiorss.png","language":"CSS","funding_links":[],"categories":["CSS"],"sub_categories":[],"readme":"# -*- mode: org; -*-\n#+INCLUDE: theme/style.org \n#+TITLE: Emacs In a Box\n#+KEYWORDS: emacs, elisp, lisp, programming, eshell, editor, org-mode\n#+STARTUP: content\n#+DESCRIPTION: Emacs in self-contained box!\n\n* Emacs - Elisp Programming and Customization\n** Overview\n\n# [[file:images/emacs_logo.png][file:images/emacs_logo.png]]\n\n\nEmacs doesn't need any presentation. Emacs is a software [[https://en.wikipedia.org/wiki/Lisp_machine][\"Lisp\nMachine\"]] that provides a programmable text editor, email reader, text\nweb browser, image viwer, calculator, shell, games, easter-eggs and\nmore.  Emacs is programmed in Elisp, an Emacs own lisp dialect that is\nbased on [[https://en.wikipedia.org/wiki/Maclisp][MacLisp]], one of oldest lisp dialects, older than Common Lisp\nand Scheme, created in MIT. Emacs was written in 1976 by the legendary\n[[https://en.wikipedia.org/wiki/Richard_Stallman][Richard Stallman]]. Despite many incompatibilities with Common Lisp it\nhas many constructs similar to it and n excellent book about Common\nLisp that is also useful to understand Elisp and Scheme is [[http://unintelligible.org/onlisp/onlisp.html][On Lisp - by Paul Graham]].\n\n*Repository Link*\n\n    - [[https://github.com/caiorss/Emacs-Elisp-Programming][Github Repository]]\n    - Short Link: http://tinyurl.com/emacsinabox - Mneumonic: *Emacs In A Box*\n    - [[http://caiorss.github.io/Emacs-Elisp-Programming][HTML Version - github.io]]\n\nNote:\n\n - It is a work in progress.\n - You can see this document inside Emacs since it was converted to\n   org-mode, see the file *README.org*. It can also be exported to\n   html, pdf, github markdown and so on.\n\n*Configuration File*\n\nThe user configuration file, which is executed when Emacs starts, is stored in the directory\n=~/.emacs.d/init.el= or =~/.emacs=. The first one is better because it\nis in the same directory of all emacs configuration files.\n\nThe Emacs scratch buffer can be used to test new features and try\nEmacs codes along with IELM - Emacs Lisp interactive shell.\n\n*Emacs Features*\n\n - Run in GUI or in terminal.\n - Programmable \"text editor\" (Lisp Machine)\n - Support to many programming languages\n - Can run shells and interpreters inside Emacs. \n - Highly customizable\n - Easy task automation \n - Package manager \n - Multiple OS support\n - Remote file editting through ssh. (Tramp mode)\n - Keyboard macros\n - Utilities\n   - Calculator\n   - Eshell\n   - Tramp-mode - Edit remote files and edit as super user (sudo).\n   - Shells\n   - File manager (dired-mode)\n   - Git interface (magit)\n\n*Objectives* \n\n - Increase Emacs API discoverability;\n\n - Empower Emacs users to create their own extensions and\n   customization;\n\n - Provide self-contained working examples about Emacs API and Elisp\n   programming.\n\n - Unleash all Emacs potentials.\n\n** Contents\n*** Elisp Programing\n\n - [[file:Elisp_Programming.org][Elisp Programming]]  Elisp programming guide and documentation by examples. \n\n\n - [[file:Elisp_Snippets.org][Elisp Snippets]]  Elisp code examples grouped by category. \n\n*** Key bindings / shortcuts\n\n - [[file:Keybindings.org][Emacs Key bindings]] Emacs standard keybindings and useful commands.\n\n\n - [[file:Emacs_Key_Bindings_Elisp.org][Emacs key bindings for Elisp]] Emacs key bindings and commands for\n   Elisp (Emacs' lisp) development.\n\n*** Settings and Packages\n\n - [[file:Customization.org][Customization]] Emacs settings and customization.\n\n\n - [[file:Packages.org][Packages and Development Environments]] Useful Emacs packages and\n   Programming language specific configurations and packages.\n\n*** Emacs Utilities\n\n - [[file:Utilities.org][Utilities]]  Emacs utilities and goodness like Calculator, Magit, Helm and so on.\n\n - [[file:Org-Mode.org][Org-mode]] Org-mode notes.\n\n - [[file:Org-mode-recipes.org][Org-mode recipes]] - Org-mode literate programming recipes.\n\n*** Miscellaneous\n\n - [[file:Command_Line_and_Scripting.org][Command Line and Scripting]] Command line interaction with Emacs.\n\n\n - [[file:Eshell.org][Eshell]] Eshell - Multi-platform unix shell written in Elisp highly\n   integrated with Emacs and with several platform independent shell\n   commands such as ls, pwd, cp, mv implemented in Elisp.\n\n\n - [[file:Emacs_On_Windows.org][Emacs on Microsoft Windows]]  Emacs settings for Microsoft Windows OS.\n\n\n - [[file:Bookmarks.org][Bookmarks]] - Emacs bookmarks to Wikis, tutorials, videos, codes and\n   etc.\n\n** TODO Future Work \n\n - [ ] Comint Mode / interacting with REPLs and subprocesses \n\n - [ ] Network API - Interacting with servers. \n\n - [ ] Add cross references \n\n - [ ] Emacs Widget Interfaces and Emacs User Interfaces \n\n - [ ] Add more examples about org-mode API.\n\n - [X] Add a better layout.\n\n** Downloading it\n\n*Download manually*\n\n - https://github.com/caiorss/Emacs-Elisp-Programming/archive/gh-pages.zip\n\n*Automated download*\n\n#+BEGIN_SRC sh\ncurl -L https://github.com/caiorss/Emacs-Elisp-Programming/archive/gh-pages.zip -o elisp.zip\nunzip -e elisp.zip \nrm -rf elisp.zip\nmv Emacs-Elisp-Programming-gh-pages Emacs-Elisp-Programming\nfirefox Emacs-Elisp-Programming/index.html \u0026\n#+END_SRC\n\nView the extracted repository contents:\n\n#+BEGIN_SRC sh\n$ ls Emacs-Elisp-Programming/\nimages/                       Elisp_Snippets2.org            index.html\ntheme/                        Elisp_Snippets.html            Keybindings.html\nCustomization.html            Elisp_Snippets.org             Keybindings.org\nCustomization.org             Emacs_Key_Bindings_Elisp.html  README.org\nDevelopment_Environment.html  Emacs_Key_Bindings_Elisp.org   Resources.html\nDevelopment_Environment.org   Emacs_On_Windows.html          Resources.org\nElisp_Programming.html        Emacs_On_Windows.org           Utilities.html\nElisp_Programming.org         Eshell.html                    Utilities.org\nElisp_Snippets2.html          Eshell.org\n#+END_SRC\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaiorss%2FEmacs-Elisp-Programming","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaiorss%2FEmacs-Elisp-Programming","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaiorss%2FEmacs-Elisp-Programming/lists"}