Skip to content
Dynamic modules for emacs
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
zeromq
.gitignore ignore mac file Jul 11, 2017
Makefile add a bunch of builds Jul 11, 2017
README.org Fix typo Oct 23, 2017
emacs-module-helpers.c add defconst for integers Jul 11, 2017
emacs-module-helpers.h add defconst for integers Jul 11, 2017
emacs-module.h initial commit Jul 10, 2017
examples.org
gsl-constants.c initial commit Jul 10, 2017
gsl-integration.c
gsl-linalg.c add examples and finish code for linalg module Jul 11, 2017
gsl-roots.c add a bunch of new modules Jul 11, 2017
mod-list-vec.c
mod-types.c add a bunch of new modules Jul 11, 2017
tests.el add examples and finish code for linalg module Jul 11, 2017

README.org

Dynamic modules in Emacs

This repo contains examples of creating dynamic modules for Emacs.

Contents

This repo mostly contains proofs of concept so many of these may contain only a single or small number of functions.

  • ./examples.org has examples of using these libraries. Usually these have been blogged at some point.

The GNU Scientific library

Miscellaneous

  • ./mod-types.c shows how to test the type of an arg, and how to get a function to work for integers and floats. Also this has a little variadic function definition.
  • ./mod-list-vec.c contains some test functions for making vectors and indexing them.
  • ./emacs-module-helpers.c provides convenience functions like provide and DEFUN.

Notes to me

testing modules

It is moderately tedious to test modules because once you load them you cannot rebuild and reload them. You have to kill emacs and try again. Here is a pretty fast way to test modules. You develop in one emacs, and run the appropriate make command to build it.

Add test functions to ./tests.el. Then run them from the command line like this.

emacs -batch -q -l tests.el -f test-linalg

Or add lines like that one to the Makefile.

Resources on dynamic modules

For my own notes here are all the resources on dynamic modules I know of:

Here are the official Emacs header and example: emacs-module.h: http://git.savannah.gnu.org/cgit/emacs.git/tree/src/emacs-module.h?id=e18ee60b02d08b2f075903005798d3d6064dc013 mod_test.c: http://git.savannah.gnu.org/cgit/emacs.git/tree/modules/mod-test/mod-test.c?id=e18ee60b02d08b2f075903005798d3d6064dc013

This simple example in C http://diobla.info/blog-archive/modules-tut.html

joymacs
http://nullprogram.com/blog/2016/11/05/
mruby
https://github.com/syohex/emacs-mruby-test
https://github.com/tromey/emacs-ffi
an actual ffi for emacs
elfuse
https://github.com/vkazanov/elfuse a file system in Emacs
asynchronous events
http://nullprogram.com/blog/2017/02/14/ related to elfuse
emacs-sqlite3
sqlite3 binding of Emacs Lisp
emacs-parson
JSON parser with dynamic module feature with parson
libyaml
libyaml
emacs-perl
Embed Perl into Emacs
https://github.com/syohex/emacs-eject
eject a cd
emacs-capstone
elisp bindings for the capstone disassembler
emacs-csound
EmacsLisp link to Csound’s API via Emacs Modules
emacs-cmigemo
Emacs dynamic module for cmigemo
emacs-cipher
OpenSSL cipher binding of Emacs Lisp
emacs-lua
Lua engine from Emacs Lisp
emacs-ztd
libzstd binding of Emacs Lisp
mem-cached
libmemcached
https://coldnew.github.io/2d16cc25/
in Chinese, but with code

A collection of module resources: https://github.com/emacs-pe/emacs-modules

golang
https://github.com/sigma/go-emacs writing modules in go

This may not be a dynamic module but claims an ffi haskell https://github.com/knupfer/haskell-emacs

You can’t perform that action at this time.