lean2/src/emacs/lean-settings.el

216 lines
6.9 KiB
EmacsLisp
Raw Normal View History

;; Copyright (c) 2014 Microsoft Corporation. All rights reserved.
;; Released under Apache 2.0 license as described in the file LICENSE.
;;
;; Author: Soonho Kong
;;
(require 'cl-lib)
(defgroup lean nil
"Lean Theorem Prover"
:prefix "lean-"
:group 'languages
:link '(url-link :tag "Website" "http://leanprover.github.io")
:link '(url-link :tag "Github" "https://github.com/leanprover/lean"))
(defgroup lean-keybinding nil
"Keybindings for lean-mode."
:prefix "lean-"
:group 'lean)
2014-08-14 00:02:49 +00:00
(defvar-local lean-default-executable-name
(cl-case system-type
('gnu "lean")
('gnu/linux "lean")
('gnu/kfreebsd "lean")
('darwin "lean")
('ms-dos "lean")
('windows-nt "lean.exe")
('cygwin "lean.exe"))
"Default executable name of Lean")
(defcustom lean-rootdir nil
"Full pathname of lean root directory. It should be defined by user."
:group 'lean
:type 'string)
(defcustom lean-executable-name lean-default-executable-name
"Name of lean executable"
:group 'lean
:type 'string)
(defcustom lean-company-use t
"Use company mode for lean."
:group 'lean
:type 'boolean)
(defcustom lean-company-type-foreground (face-foreground 'font-lock-keyword-face)
"Color of type parameter in auto-complete candidates"
:group 'lean
:type 'color)
(defcustom lean-eldoc-use t
"Use eldoc mode for lean."
:group 'lean
:type 'boolean)
(defcustom lean-eldoc-nay-retry-time 0.3
"When eldoc-function had nay, try again after this amount of time."
:group 'lean
:type 'number)
(defcustom lean-show-only-type-in-parens t
"Show only types of expression in parens if non-nil. Otherwise,
show both of expressions and types."
:group 'lean
:type 'boolean)
(defcustom lean-server-retry-time 0.1
"Retry interval for event-handler"
:group 'lean
:type 'number)
(defcustom lean-server-options nil
"Additional command line options for the Lean background
process used to perform tasks such as type information and
perform auto-completion"
:group 'lean)
(defcustom lean-flycheck-use t
"Use flycheck for lean."
:group 'lean
:type 'boolean)
(defcustom lean-flycheck-checker-name "linja"
"lean-flychecker checker name"
:group 'lean
:type 'string)
(defcustom lean-flycheck-max-messages-to-display 100
"Maximum number of flycheck messages to displaylean-flychecker checker name
(Restart required to be effective)"
:group 'lean
:type 'number)
(defcustom lean-default-pp-width 120
"Width of Lean error/warning messages"
:group 'lean
:type 'number)
(defcustom lean-flycheck-msg-width nil
"Width of Lean error/warning messages"
:group 'lean
:type '(choice (const :tag "Let lean-mode automatically detect this" nil)
(integer :tag "Specify the value and force lean-mode to use")))
(defcustom lean-flycheck-checker-options
`("--keep-going" ,(format "%d" 999)
"--flycheck"
"--flycheck-max-messages" ,(format "%d" lean-flycheck-max-messages-to-display))
"lean-flychecker checker option"
:group 'lean)
(defcustom lean-delete-trailing-whitespace nil
"Set this variable to true to automatically delete trailing
whitespace when a buffer is loaded from a file or when it is
written."
:group 'lean
:type 'boolean)
(defcustom lean-rule-column 100
"Specify rule-column."
:group 'lean
:type '(choice (integer :tag "Columns")
(const :tag "Unlimited" nil)))
(defcustom lean-rule-color "#cccccc"
"Color used to draw the fill-column rule"
:group 'fill-column-indicator
:tag "Fill-column rule color"
:type 'color)
(defcustom lean-show-rule-column-method nil
"If enabled, it highlights column"
:group 'lean
:type '(choice (const :tag "Disabled" nil)
(const :tag "Vertical Line" vline)
;;(const :tag "Whole Lines" lines)
;;(const :tag "Only Beyond lean-rule-column" lines-tail)
))
(defcustom lean-debug-mode-line '(:eval (lean-debug-mode-line-status-text))
"Mode line lighter for Lean debug mode."
:group 'lean
:type 'sexp
:risky t)
(defcustom lean-show-type-add-to-kill-ring nil
"If it is non-nil, add the type information to the kill-ring so
that user can yank(paste) it later. By default, it's
false (nil)."
:group 'lean
:type 'boolean)
(defcustom lean-show-proofstate-in-minibuffer nil
"Set this variable to true to show proof state at minibuffer."
:group 'lean
:type 'boolean)
(defcustom lean-proofstate-display-style 'show-first-and-other-conclusions
"Choose how to display proof state in *lean-info* buffer."
:group 'lean
:type '(choice (const :tag "Show all goals" show-all)
(const :tag "Show only the first" show-first)
(const :tag "Show the first goal, and the conclusions of all other goals" show-first-and-other-conclusions)))
(defcustom lean-follow-changes t
"If it's nil, we don't set up after-change-functions and
before-change-functions to update the changes to lean-server.
A usage is to batch-process .org files to .html files"
:group 'lean
:type 'boolean)
(defcustom lean-time-to-restart-server 1
"After lean-time-to-kill-server passed, we restart lean-server if
the all jobs in the queue are not process."
:group 'lean
:type 'number)
(defcustom lean-keybinding-std-exe1 (kbd "C-c C-x")
"Lean Keybinding for std-exe #1"
:group 'lean-keybinding :type 'key-sequence)
(defcustom lean-keybinding-std-exe2 (kbd "C-c C-l")
"Lean Keybinding for std-exe #2"
:group 'lean-keybinding :type 'key-sequence)
(defcustom lean-keybinding-show-key (kbd "C-c C-k")
"Lean Keybinding for show-key"
:group 'lean-keybinding :type 'key-sequence)
(defcustom lean-keybinding-set-option (kbd "C-c C-o")
"Lean Keybinding for set-option"
:group 'lean-keybinding :type 'key-sequence)
(defcustom lean-keybinding-eval-cmd (kbd "C-c C-e")
"Lean Keybinding for eval-cmd"
:group 'lean-keybinding :type 'key-sequence)
(defcustom lean-keybinding-show-type (kbd "C-c C-t")
"Lean Keybinding for show-type"
:group 'lean-keybinding :type 'key-sequence)
(defcustom lean-keybinding-fill-placeholder (kbd "C-c C-f")
"Lean Keybinding for fill-placeholder"
:group 'lean-keybinding :type 'key-sequence)
(defcustom lean-keybinding-server-restart-process (kbd "C-c C-r")
"Lean Keybinding for server-restart-process"
:group 'lean-keybinding :type 'key-sequence)
(defcustom lean-keybinding-find-tag (kbd "M-.")
"Lean Keybinding for find-tag"
:group 'lean-keybinding :type 'key-sequence)
(defcustom lean-keybinding-tab-indent-or-complete (kbd "TAB")
"Lean Keybinding for tab-indent-or-complete"
:group 'lean-keybinding :type 'key-sequence)
(defcustom lean-keybinding-lean-show-goal-at-pos (kbd "C-c C-g")
"Lean Keybinding for show-goal-at-pos"
:group 'lean-keybinding :type 'key-sequence)
(defcustom lean-keybinding-lean-show-id-keyword-info (kbd "C-c C-p")
"Lean Keybinding for show-id-keyword-info"
:group 'lean-keybinding :type 'key-sequence)
(provide 'lean-settings)