Calling emacs from Prolog

Author(s): The Ciao Development Team.

This library provides a prolog-emacs interface. This interface is complementary to (and independent from) the emacs mode, which is used to develop programs from within the emacs editor/environment. Instead, this library allows calling emacs from a running Prolog program. This facilitates the use of emacs as a “user interface” for a Prolog program. Emacs can be made to:

  • Visit a file, which can then be edited.

  • Execute arbitrary emacs lisp code, sent from Prolog.

In order for this library to work correctly, the following is needed:

  • You should be running the emacs editor on the same machine where the executable calling this library is executing.

  • This emacs should be running the emacs server. This can be done by including the following line in your .emacs file:

    ;; Start a server that emacsclient can connect to.
    (server-start)
    

    Or typing M-x server-start within emacs.

Examples:

Assuming that a .pl file loads this library, then:

..., emacs_edit('foo'), ...
Opens file foo for editing in emacs.

..., emacs_eval_nowait("(run-ciao-toplevel)"), ...
Starts execution of a Ciao top-level within emacs.


Usage and interface

Documentation on exports

PREDICATEemacs_edit/1

Usage:

Opens the given file for editing in emacs. Waits for editing to finish before continuing.

  • The following properties should hold at call time:
    (emacs:filename/1)Arg1 is an atom which is the name of a file.

Usage:

Opens the given file for editing in emacs and continues without waiting for editing to finish.

  • The following properties should hold at call time:
    (emacs:filename/1)Arg1 is an atom which is the name of a file.

PREDICATEemacs_eval/1

Usage:

Executes in emacs the lisp code given as argument. Waits for the command to finish before continuing.

Usage:

Executes in emacs the lisp code given as argument and continues without waiting for it to finish.

Usage:elisp_string(L)

L is a string containing emacs lisp code.

    Documentation on imports

    This module has the following direct dependencies: