lean2/src/emacs
2014-11-04 18:01:20 -08:00
..
features test(emacs/features): add ecukes template 2014-09-11 12:33:49 -07:00
test test(emacs/lean-info-test): add test cases for goal visualization 2014-10-29 17:09:08 -07:00
.gitignore feat(emacs/Cask): add Cask file 2014-09-09 15:11:57 -07:00
Cask chore(emacs/Cask): add ert-runner, ecukes 2014-09-11 11:12:05 -07:00
CMakeLists.txt fix(CMakeLists.txt): rename EMACS_LIB to EMACS_LISP_DIR (default: share/eamcs/site-lisp/lean) 2014-10-07 12:30:39 -07:00
eri.el feat(emacs/eri.el): add eri.el (from agda mode) 2014-08-30 14:57:34 -07:00
lean-changes.el fix(emacs/lean-changes): visit file before process any changes 2014-10-03 10:11:21 -07:00
lean-cmd.el feat(emacs/lean-cmd): add SYNC command 2014-10-02 17:30:03 -07:00
lean-company.el fix(emacs): support tabs in a file 2014-10-07 14:42:35 -07:00
lean-debug.el feat(emacs/lean-debug): add lean-debug minor-mode 2014-09-15 16:50:35 -07:00
lean-flycheck.el fix(emacs/lean-flycheck): should accept error messages with empty lines 2014-10-29 16:51:06 -07:00
lean-info.el chore(emacs): remove unnecessary requires 2014-10-31 16:01:10 -07:00
lean-input.el feat(emacs/lean-input): add lean-input-export-translations 2014-10-29 14:33:05 -07:00
lean-mmm-lua.el feat(lean-mode): enable mmm-parse-when-idle 2014-09-15 10:23:38 -07:00
lean-mode.el feat(src/emacs/lean-mode): add shortcut for restarting lean server 2014-11-04 18:01:20 -08:00
lean-option.el feat(emacs/lean-flycheck): detect and use flycheck error buffer width 2014-09-30 05:54:46 -07:00
lean-project.el chore(emacs): remove unnecessary requires 2014-10-31 16:01:10 -07:00
lean-require.el chore(emacs/README.md): add 'f' as a required package for lean-mode 2014-09-13 23:35:38 -07:00
lean-server.el chore(emacs): remove unnecessary requires 2014-10-31 16:01:10 -07:00
lean-settings.el feat(emacs/lean-settings): add 'lean-follow-changes' option 2014-10-29 23:58:50 -07:00
lean-syntax.el fix(emacs/lean-syntax): bug in syntax highlight, examples do not have names 2014-11-03 18:32:18 -08:00
lean-tags.el fix(emacs/lean-tags): support windows 2014-09-20 10:06:42 -07:00
lean-type.el feat(emacs/lean-info): add goal visualization options 'lean-proofstate-display-style' 2014-10-29 17:08:55 -07:00
lean-util.el fix(emacs/lean-util): fix lean-path-list to only include existing dirs 2014-10-14 20:48:56 -07:00
lean-variable.el feat(emacs/lean-option): save lean-options to lean-global-option-alist 2014-09-15 09:46:06 -07:00
Makefile fix(emacs/Makefile): add missing Makefile 2014-09-14 23:14:42 -07:00
README.md doc(README.md): add Aquamacs case, ask to update lean-rootdir 2014-10-31 09:58:15 -07:00

Emacs mode for lean theorem prover

Requirement

lean-mode requires Emacs 24 and following packages which can be installed via M-x package-install.

The following packages are optional but we recommend to install them to use full features of lean-mode.

Install

Put the following elisp code on your emacs setup (e.g. .emacs.d/init.el [GNU Emacs], ~/Library/Preferences/Aquamacs Emacs/Preferences.el [Aquamacs]) :

(require 'package)
(add-to-list 'package-archives
             '("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)

;; Install required/optional packages for lean-mode
(defvar lean-mode-required-packages
  '(company dash dash-functional flycheck whitespace-cleanup-mode
    f fill-column-indicator s lua-mode mmm-mode))
(let ((need-to-refresh t))
  (dolist (p lean-mode-required-packages)
    (when (not (package-installed-p p))
      (when need-to-refresh
        (package-refresh-contents)
        (setq need-to-refresh nil))
      (package-install p))))

;; Set up lean-root path
(setq lean-rootdir "~/projects/lean")  ;; <=== YOU NEED TO MODIFY THIS
(setq-local lean-emacs-path
            (concat (file-name-as-directory lean-rootdir)
                    (file-name-as-directory "src")
                    "emacs"))
(add-to-list 'load-path (expand-file-name lean-emacs-path))
(require 'lean-mode)

;; Customization for lean-mode
(customize-set-variable 'lean-delete-trailing-whitespace t)
(customize-set-variable 'lean-flycheck-use t)
(customize-set-variable 'lean-eldoc-use t)

Key Bindings

Key Function
C-c C-x lean-std-exe
C-c C-l lean-std-exe
C-c C-t lean-eldoc-documentation-function
C-c C-f lean-fill-placeholder
M-. lean-find-tag
TAB lean-tab-indent-or-complete
C-c C-o lean-set-option
C-c C-e lean-eval-cmd

Known Issues and Possible Solutions

Unicode

If you experience a problem reading unicode characters on emacs, first consider using a unicode-friendly font such as DejaVu Sans Mono:

(when (member "DejaVu Sans Mono" (font-family-list))
  (set-face-attribute 'default nil :font "DejaVu Sans Mono-11"))

If you still experience rendering problem. Please consider trying emacs-unicode-fonts.

Contribution

Contribution is welcome!

If your contribution is a bug fix, create your topic branch from master. If it is a new feature, check if there exists a WIP(work-in-progress) branch (vMAJOR.MINOR-wip). If it does, use that branch, otherwise use master.

Install Cask if you haven't already, then:

$ cd /path/to/lean/src/emacs
$ cask

Run all tests with:

$ make