• Stars
    star
    652
  • Rank 69,062 (Top 2 %)
  • Language
    CSS
  • License
    The Unlicense
  • Created over 9 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Tutorial about programming Elisp and Emacs text editor customization.

Emacs In a Box

Emacs - Elisp Programming and Customization

Overview

Emacs doesn’t need any presentation. Emacs is a software “Lisp Machine” that provides a programmable text editor, email reader, text web browser, image viwer, calculator, shell, games, easter-eggs and more. Emacs is programmed in Elisp, an Emacs own lisp dialect that is based on MacLisp, one of oldest lisp dialects, older than Common Lisp and Scheme, created in MIT. Emacs was written in 1976 by the legendary Richard Stallman. Despite many incompatibilities with Common Lisp it has many constructs similar to it and n excellent book about Common Lisp that is also useful to understand Elisp and Scheme is On Lisp - by Paul Graham.

Repository Link

Note:

  • It is a work in progress.
  • You can see this document inside Emacs since it was converted to org-mode, see the file README.org. It can also be exported to html, pdf, github markdown and so on.

Configuration File

The user configuration file, which is executed when Emacs starts, is stored in the directory ~/.emacs.d/init.el or ~/.emacs. The first one is better because it is in the same directory of all emacs configuration files.

The Emacs scratch buffer can be used to test new features and try Emacs codes along with IELM - Emacs Lisp interactive shell.

Emacs Features

  • Run in GUI or in terminal.
  • Programmable “text editor” (Lisp Machine)
  • Support to many programming languages
  • Can run shells and interpreters inside Emacs.
  • Highly customizable
  • Easy task automation
  • Package manager
  • Multiple OS support
  • Remote file editting through ssh. (Tramp mode)
  • Keyboard macros
  • Utilities
    • Calculator
    • Eshell
    • Tramp-mode - Edit remote files and edit as super user (sudo).
    • Shells
    • File manager (dired-mode)
    • Git interface (magit)

Objectives

  • Increase Emacs API discoverability;
  • Empower Emacs users to create their own extensions and customization;
  • Provide self-contained working examples about Emacs API and Elisp programming.
  • Unleash all Emacs potentials.

Contents

Elisp Programing

Key bindings / shortcuts

Settings and Packages

Emacs Utilities

Miscellaneous

  • Eshell Eshell - Multi-platform unix shell written in Elisp highly integrated with Emacs and with several platform independent shell commands such as ls, pwd, cp, mv implemented in Elisp.
  • Bookmarks - Emacs bookmarks to Wikis, tutorials, videos, codes and etc.

Future Work

  • [ ] Comint Mode / interacting with REPLs and subprocesses
  • [ ] Network API - Interacting with servers.
  • [ ] Add cross references
  • [ ] Emacs Widget Interfaces and Emacs User Interfaces
  • [ ] Add more examples about org-mode API.
  • [X] Add a better layout.

Downloading it

Download manually

Automated download

curl -L https://github.com/caiorss/Emacs-Elisp-Programming/archive/gh-pages.zip -o elisp.zip
unzip -e elisp.zip 
rm -rf elisp.zip
mv Emacs-Elisp-Programming-gh-pages Emacs-Elisp-Programming
firefox Emacs-Elisp-Programming/index.html &

View the extracted repository contents:

$ ls Emacs-Elisp-Programming/
images/                       Elisp_Snippets2.org            index.html
theme/                        Elisp_Snippets.html            Keybindings.html
Customization.html            Elisp_Snippets.org             Keybindings.org
Customization.org             Emacs_Key_Bindings_Elisp.html  README.org
Development_Environment.html  Emacs_Key_Bindings_Elisp.org   Resources.html
Development_Environment.org   Emacs_On_Windows.html          Resources.org
Elisp_Programming.html        Emacs_On_Windows.org           Utilities.html
Elisp_Programming.org         Eshell.html                    Utilities.org
Elisp_Snippets2.html          Eshell.org

More Repositories

1

Functional-Programming

Functional Programming concepts, examples and patterns illustrated in Haskell, Ocaml and Python
Haskell
2,681
star
2

C-Cpp-Notes

Notes about modern C++, C++11, C++14 and C++17, Boost Libraries, ABI, foreign function interface and reference cards.
C++
677
star
3

org-wiki

Wiki for Emacs org-mode built on top of Emacs org-mode.
CSS
354
star
4

bookmarklet-maker

Tool to create bookmarklet/ javascript apps to automate the web browser.
HTML
170
star
5

sample-cpp-plugin

C++ cross-platform plugin architechture demonstration
C++
44
star
6

caiorss.github.io

Static Web page hosting
JavaScript
13
star
7

cpp-project-templates

C++ CPP project templates with CMake + Conan
C++
12
star
8

m2py

Python tools for Physics, Engineering and Finance based on Matlab and R language. Features: Unit Conversion, Physical constants, Steam tables and more.
Python
12
star
9

example-pybind11-vcpkg

Example project of a C++ native code Python3 module with Pybind11 managed by CMake and vcpkg
C++
10
star
10

Emacs-Bootstrap

Emacs wrapper to keep multiple emacs sites, ~/emacs.d and ~/emacs.d/init.el.
Emacs Lisp
9
star
11

clip.jar

Utility to paste images from clipboard to Emacs org-mode or any markdown.
Scala
9
star
12

clj-scheme

Clojure features implemented on top of Gambit Scheme and wrappers to C-libraries.
Scheme
7
star
13

org-nav-theme

org-mode theme with navigation bar for big documents
CSS
7
star
14

qtquick-examples

A CMake Qt5/ QML QtQuick project containing multiple subproject examples and experiments.
QML
6
star
15

xlw-cmake-fork

Fork of XLW project for building Excel Addins using Excel XLL native C-API. This fork changes the building system to CMake for easier usage and deployment.
C++
6
star
16

bookmark-storage-webapp

Python Django web application for storing bookmarks and files.
Python
5
star
17

qapplauncher

Q5/Modern C++ - Application launcher and bookmark system for files and directories
C++
4
star
18

zhserver

Haskell Webserver for Zotero reference manager - based on Zotero.
PLpgSQL
4
star
19

INIReader

Ini file configuration parser for F# and .NET
F#
3
star
20

qtwidgets-sample-uis

Sample C++ CMake project for QT5 Widgets with many user interfaces and executables in the same project
C++
3
star
21

winapi-snippets-cmake

Code snippets and examples for Windows API in modern C++ managed by CMake.
C++
3
star
22

Libreoffice-Macros-Functions

Python and Libreoffice Basic Documentation for Libreoffice and Useful Scripts, documentation and resources.
JavaScript
3
star
23

cpp-experiments

A single C++ CMake/Conan project with many libraries experiments.
CMake
3
star
24

prelude

A functional programming library for python based on Haskell Prelude, Fsharp and OCaml
Python
2
star
25

jmhttp

A portable cross-platform http web server for sharing file and directories on Local Network.
Scala
2
star
26

Rlang-RcppExamples

Examples about R raw native extension C API and Rcpp API for building R libraries in C++
C++
2
star
27

pget

Alternative command line dependency manager for .NET and F# projects.
F#
2
star
28

conan-cpp-recipes

Lots of conan recipes and CMake/Conan project-templates in a single repository.
Python
2
star
29

qemu-launcher-qt

A qt front-end for QEMU emulator that makes it easier to run virtual machines and Linux distributions live CDs iso images.
C++
2
star
30

build-fat-jar

Unix Shell Script to build java/Scala fat-jars and make the distributions and deployment of Scala applications easier.
Shell
2
star
31

fserver

Standalone, single-file file sharing web server written in Kotlin and Javalin web framework.
Kotlin
1
star
32

postgres-docker-container

Very lightweight and simple to setup postgres SQL docker image.
Shell
1
star
33

lazarus-linux-panel

A simple handy Linux panel built with Lazarus IDE Free-Pascal
Pascal
1
star
34

MultiTimeSeries

Multivariate time series library.
Haskell
1
star
35

Spread

Plataforma de negociação de Renda Fixa
C#
1
star
36

unix-clibox

Command line toolbox for Linux and Unix-like operating system built with modern C++17.
C++
1
star
37

sandbox

Experimental Python Sandbox tools to execute unsafe user input.
Python
1
star
38

example-project-pybind11

Sample C++ CMake + Conan project with Pybind11 library for Python3 C++ bindings
C++
1
star
39

dockman

Docker manager tool written in D (D Language) for making easier the use of toolchains and development tools from Docker containers.
D
1
star
40

jarget

Jarget - Toolbox for Java Platform to build uber jars, get information about jar files and download jars libraries from Maven Central.
Scala
1
star
41

netmon

Cross platform app to check internet connectivity and help diagnose connection failures.
Scala
1
star