Replace :eval/:repl with autodef functions
+ :eval => set-eval-handler! + :repl => set-repl-handler! + Updates all internal references.
This commit is contained in:
parent
98632fe086
commit
588359cc5f
21 changed files with 98 additions and 72 deletions
76
modules/feature/eval/autoload/settings.el
Normal file
76
modules/feature/eval/autoload/settings.el
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
;;; feature/eval/autoload/settings.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;;
|
||||||
|
;; REPLs
|
||||||
|
;;
|
||||||
|
|
||||||
|
(defvar +eval-repls nil
|
||||||
|
"An alist mapping major modes to plists that describe REPLs. Used by
|
||||||
|
`+eval/open-repl' and filled with the `:repl' setting.")
|
||||||
|
|
||||||
|
;;;###autodef
|
||||||
|
(defun set-repl-handler! (mode command)
|
||||||
|
"Define a REPL for a mode. MODE is a major mode symbol and COMMAND is a
|
||||||
|
function that creates and returns the REPL buffer."
|
||||||
|
(push (cons mode command) +eval-repls))
|
||||||
|
|
||||||
|
;; FIXME obsolete :repl
|
||||||
|
;;;###autoload
|
||||||
|
(def-setting! :repl (mode command)
|
||||||
|
"Define a REPL for a mode. MODE is a major mode symbol and COMMAND is a
|
||||||
|
function that creates and returns the REPL buffer."
|
||||||
|
:obsolete set-repl-handler!
|
||||||
|
`(push (cons ,mode ,command) +eval-repls))
|
||||||
|
|
||||||
|
|
||||||
|
;;
|
||||||
|
;; Evaluation
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
(defvar +eval-runners nil
|
||||||
|
"Alist mapping major modes to interactive runner functions.")
|
||||||
|
|
||||||
|
;;;###autodef
|
||||||
|
(defun set-eval-handler! (mode command)
|
||||||
|
"Define a code evaluator for major mode MODE with `quickrun'.
|
||||||
|
|
||||||
|
1. If MODE is a string and COMMAND is the string, MODE is a file regexp and
|
||||||
|
COMMAND is a string key for an entry in `quickrun-file-alist'.
|
||||||
|
2. If MODE is not a string and COMMAND is a string, MODE is a major-mode symbol
|
||||||
|
and COMMAND is a key (for `quickrun--language-alist'), and will be registered
|
||||||
|
in `quickrun--major-mode-alist'.
|
||||||
|
3. If MODE is not a string and COMMAND is an alist, see `quickrun-add-command':
|
||||||
|
(quickrun-add-command MODE COMMAND :mode MODE).
|
||||||
|
4. If MODE is not a string and COMMANd is a symbol, add it to
|
||||||
|
`+eval-runners', which is used by `+eval/region'."
|
||||||
|
(cond ((symbolp command)
|
||||||
|
(push (cons mode command) +eval-runners))
|
||||||
|
((stringp command)
|
||||||
|
(after! quickrun
|
||||||
|
(push (cons mode command)
|
||||||
|
(if (stringp mode)
|
||||||
|
quickrun-file-alist
|
||||||
|
quickrun--major-mode-alist))))
|
||||||
|
((listp command)
|
||||||
|
(after! quickrun
|
||||||
|
(quickrun-add-command
|
||||||
|
(symbol-name mode)
|
||||||
|
command :mode mode)))))
|
||||||
|
|
||||||
|
;; FIXME obsolete :eval
|
||||||
|
;;;###autoload
|
||||||
|
(def-setting! :eval (mode command)
|
||||||
|
"Define a code evaluator for major mode MODE with `quickrun'.
|
||||||
|
|
||||||
|
1. If MODE is a string and COMMAND is the string, MODE is a file regexp and
|
||||||
|
COMMAND is a string key for an entry in `quickrun-file-alist'.
|
||||||
|
2. If MODE is not a string and COMMAND is a string, MODE is a major-mode symbol
|
||||||
|
and COMMAND is a key (for `quickrun--language-alist'), and will be registered
|
||||||
|
in `quickrun--major-mode-alist'.
|
||||||
|
3. If MODE is not a string and COMMAND is an alist, see `quickrun-add-command':
|
||||||
|
(quickrun-add-command MODE COMMAND :mode MODE).
|
||||||
|
4. If MODE is not a string and COMMANd is a symbol, add it to
|
||||||
|
`+eval-runners', which is used by `+eval/region'."
|
||||||
|
:obsolete set-eval-handler!
|
||||||
|
`(set-eval-handler! ,mode ,command))
|
|
@ -1,50 +0,0 @@
|
||||||
;;; feature/eval/init.el -*- lexical-binding: t; -*-
|
|
||||||
|
|
||||||
;;
|
|
||||||
;; REPLs
|
|
||||||
;;
|
|
||||||
|
|
||||||
(defvar +eval-repls nil
|
|
||||||
"An alist mapping major modes to plists that describe REPLs. Used by
|
|
||||||
`+eval/open-repl' and filled with the `:repl' setting.")
|
|
||||||
|
|
||||||
(def-setting! :repl (mode command)
|
|
||||||
"Define a REPL for a mode. MODE is a major mode symbol and COMMAND is a
|
|
||||||
function that creates and returns the REPL buffer."
|
|
||||||
`(push (cons ,mode ,command) +eval-repls))
|
|
||||||
|
|
||||||
|
|
||||||
;;
|
|
||||||
;; Evaluation
|
|
||||||
;;
|
|
||||||
|
|
||||||
|
|
||||||
(defvar +eval-runners nil
|
|
||||||
"Alist mapping major modes to interactive runner functions.")
|
|
||||||
|
|
||||||
(def-setting! :eval (mode command)
|
|
||||||
"Define a code evaluator for major mode MODE with `quickrun'.
|
|
||||||
|
|
||||||
1. If MODE is a string and COMMAND is the string, MODE is a file regexp and
|
|
||||||
COMMAND is a string key for an entry in `quickrun-file-alist'.
|
|
||||||
2. If MODE is not a string and COMMAND is a string, MODE is a major-mode symbol
|
|
||||||
and COMMAND is a key (for `quickrun--language-alist'), and will be registered
|
|
||||||
in `quickrun--major-mode-alist'.
|
|
||||||
3. If MODE is not a string and COMMAND is an alist, see `quickrun-add-command':
|
|
||||||
(quickrun-add-command MODE COMMAND :mode MODE).
|
|
||||||
4. If MODE is not a string and COMMANd is a symbol, add it to
|
|
||||||
`+eval-runners', which is used by `+eval/region'."
|
|
||||||
(let ((command (doom-unquote command)))
|
|
||||||
(cond ((symbolp command)
|
|
||||||
`(push (cons ,mode ',command) +eval-runners))
|
|
||||||
((stringp command)
|
|
||||||
`(after! quickrun
|
|
||||||
(push (cons ,mode ',command)
|
|
||||||
,(if (stringp mode)
|
|
||||||
'quickrun-file-alist
|
|
||||||
'quickrun--major-mode-alist))))
|
|
||||||
((listp command)
|
|
||||||
`(after! quickrun
|
|
||||||
(quickrun-add-command
|
|
||||||
,(symbol-name (doom-unquote mode))
|
|
||||||
',command :mode ,mode))))))
|
|
|
@ -31,8 +31,8 @@
|
||||||
(figwheel-sidecar.repl-api/cljs-repl))")
|
(figwheel-sidecar.repl-api/cljs-repl))")
|
||||||
|
|
||||||
(set-popup-rule! "^\\*cider-repl" nil '((quit) (select)))
|
(set-popup-rule! "^\\*cider-repl" nil '((quit) (select)))
|
||||||
(set! :repl 'clojure-mode #'+clojure/repl)
|
(set-repl-handler! 'clojure-mode #'+clojure/repl)
|
||||||
(set! :eval 'clojure-mode #'cider-eval-region)
|
(set-eval-handler! 'clojure-mode #'cider-eval-region)
|
||||||
(set! :lookup 'clojure-mode
|
(set! :lookup 'clojure-mode
|
||||||
:definition #'cider-browse-ns-find-at-point
|
:definition #'cider-browse-ns-find-at-point
|
||||||
:documentation #'cider-browse-ns-doc-at-point)
|
:documentation #'cider-browse-ns-doc-at-point)
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
(set! :lookup 'crystal-mode
|
(set! :lookup 'crystal-mode
|
||||||
:definition #'crystal-def-jump
|
:definition #'crystal-def-jump
|
||||||
:references #'crystal-tool-imp)
|
:references #'crystal-tool-imp)
|
||||||
(set! :eval 'crystal-mode
|
(set-eval-handler! 'crystal-mode
|
||||||
'((:command . "crystal")
|
'((:command . "crystal")
|
||||||
(:exec . "%c %s")
|
(:exec . "%c %s")
|
||||||
(:description . "Run Crystal script"))))
|
(:description . "Run Crystal script"))))
|
||||||
|
|
|
@ -33,6 +33,6 @@
|
||||||
(set! :lookup 'elixir-mode
|
(set! :lookup 'elixir-mode
|
||||||
:definition #'alchemist-goto-definition-at-point
|
:definition #'alchemist-goto-definition-at-point
|
||||||
:documentation #'alchemist-help-search-at-point)
|
:documentation #'alchemist-help-search-at-point)
|
||||||
(set! :eval 'elixir-mode #'alchemist-eval-region)
|
(set-eval-handler! 'elixir-mode #'alchemist-eval-region)
|
||||||
(set! :repl 'elixir-mode #'alchemist-iex-project-run))
|
(set-repl-handler! 'elixir-mode #'alchemist-iex-project-run))
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
(after! elm-mode
|
(after! elm-mode
|
||||||
(add-hook! 'elm-mode-hook #'(flycheck-mode rainbow-delimiters-mode))
|
(add-hook! 'elm-mode-hook #'(flycheck-mode rainbow-delimiters-mode))
|
||||||
(set-company-backend! 'elm-mode 'company-elm)
|
(set-company-backend! 'elm-mode 'company-elm)
|
||||||
(set! :repl 'elm-mode #'run-elm-interactive))
|
(set-repl-handler! 'elm-mode #'run-elm-interactive))
|
||||||
|
|
||||||
|
|
||||||
(def-package! flycheck-elm
|
(def-package! flycheck-elm
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
(def-package! elisp-mode ; built-in
|
(def-package! elisp-mode ; built-in
|
||||||
:mode ("/Cask$" . emacs-lisp-mode)
|
:mode ("/Cask$" . emacs-lisp-mode)
|
||||||
:config
|
:config
|
||||||
(set! :repl 'emacs-lisp-mode #'+emacs-lisp/repl)
|
(set-repl-handler! 'emacs-lisp-mode #'+emacs-lisp/repl)
|
||||||
(set! :eval 'emacs-lisp-mode #'+emacs-lisp-eval)
|
(set-eval-handler! 'emacs-lisp-mode #'+emacs-lisp-eval)
|
||||||
(set! :lookup 'emacs-lisp-mode :documentation 'info-lookup-symbol)
|
(set! :lookup 'emacs-lisp-mode :documentation 'info-lookup-symbol)
|
||||||
(set-docset! '(lisp-mode emacs-lisp-mode) "Emacs Lisp")
|
(set-docset! '(lisp-mode emacs-lisp-mode) "Emacs Lisp")
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
ess-nuke-trailing-whitespace-p t
|
ess-nuke-trailing-whitespace-p t
|
||||||
ess-default-style 'DEFAULT)
|
ess-default-style 'DEFAULT)
|
||||||
(ess-toggle-underscore t)
|
(ess-toggle-underscore t)
|
||||||
(set! :repl 'ess-mode #'+ess/r-repl)
|
(set-repl-handler! 'ess-mode #'+ess/r-repl)
|
||||||
(set! :lookup 'ess-mode :documentation #'ess-display-help-on-object)
|
(set! :lookup 'ess-mode :documentation #'ess-display-help-on-object)
|
||||||
(define-key! ess-doc-map
|
(define-key! ess-doc-map
|
||||||
"h" #'ess-display-help-on-object
|
"h" #'ess-display-help-on-object
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
(after! go-mode
|
(after! go-mode
|
||||||
(set-env! "GOPATH" "GOROOT")
|
(set-env! "GOPATH" "GOROOT")
|
||||||
(set! :repl 'go-mode #'gorepl-run)
|
(set-repl-handler! 'go-mode #'gorepl-run)
|
||||||
(set! :lookup 'go-mode
|
(set! :lookup 'go-mode
|
||||||
:definition #'go-guru-definition
|
:definition #'go-guru-definition
|
||||||
:references #'go-guru-referrers
|
:references #'go-guru-referrers
|
||||||
|
|
|
@ -9,6 +9,6 @@
|
||||||
;;
|
;;
|
||||||
|
|
||||||
(after! haskell-mode
|
(after! haskell-mode
|
||||||
(set! :repl 'haskell-mode #'switch-to-haskell)
|
(set-repl-handler! 'haskell-mode #'switch-to-haskell)
|
||||||
(add-to-list 'completion-ignored-extensions ".hi"))
|
(add-to-list 'completion-ignored-extensions ".hi"))
|
||||||
|
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
:mode "\\.hy\\'"
|
:mode "\\.hy\\'"
|
||||||
:interpreter "hy"
|
:interpreter "hy"
|
||||||
:config
|
:config
|
||||||
(set! :repl 'hy-mode #'hy-shell-start-or-switch-to-shell)
|
(set-repl-handler! 'hy-mode #'hy-shell-start-or-switch-to-shell)
|
||||||
(set-company-backend! 'hy-mode 'company-hy))
|
(set-company-backend! 'hy-mode 'company-hy))
|
||||||
|
|
|
@ -24,5 +24,5 @@
|
||||||
(def-package! groovy-mode
|
(def-package! groovy-mode
|
||||||
:mode "\\.g\\(?:radle\\|roovy\\)$"
|
:mode "\\.g\\(?:radle\\|roovy\\)$"
|
||||||
:config
|
:config
|
||||||
(set! :eval 'groovy-mode "groovy"))
|
(set-eval-handler! 'groovy-mode "groovy"))
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
(add-hook! 'js2-mode-hook #'(flycheck-mode rainbow-delimiters-mode))
|
(add-hook! 'js2-mode-hook #'(flycheck-mode rainbow-delimiters-mode))
|
||||||
|
|
||||||
(set-electric! 'js2-mode :chars '(?\} ?\) ?. ?:))
|
(set-electric! 'js2-mode :chars '(?\} ?\) ?. ?:))
|
||||||
(set! :repl 'js2-mode #'+javascript/repl)
|
(set-repl-handler! 'js2-mode #'+javascript/repl)
|
||||||
|
|
||||||
;; Conform switch-case indentation to js2 normal indent
|
;; Conform switch-case indentation to js2 normal indent
|
||||||
(defvaralias 'js-switch-indent-offset 'js2-basic-offset)
|
(defvaralias 'js-switch-indent-offset 'js2-basic-offset)
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
(use-package julia-mode
|
(use-package julia-mode
|
||||||
:interpreter "julia"
|
:interpreter "julia"
|
||||||
:config
|
:config
|
||||||
(set! :repl 'julia-mode #'+julia/repl)
|
(set-repl-handler! 'julia-mode #'+julia/repl)
|
||||||
|
|
||||||
;; Borrow matlab.el's fontification of math operators
|
;; Borrow matlab.el's fontification of math operators
|
||||||
;; From <https://ogbe.net/emacsconfig.html>
|
;; From <https://ogbe.net/emacsconfig.html>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
(set! :lookup 'lua-mode :documentation 'lua-search-documentation)
|
(set! :lookup 'lua-mode :documentation 'lua-search-documentation)
|
||||||
(set-electric! 'lua-mode :words '("else" "end"))
|
(set-electric! 'lua-mode :words '("else" "end"))
|
||||||
(set! :repl 'lua-mode #'+lua/repl)
|
(set-repl-handler! 'lua-mode #'+lua/repl)
|
||||||
(set-company-backend! 'lua-mode '(company-lua company-yasnippet))
|
(set-company-backend! 'lua-mode '(company-lua company-yasnippet))
|
||||||
|
|
||||||
(def-menu! +lua/build-menu
|
(def-menu! +lua/build-menu
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
;; php+html. Use the .phtml
|
;; php+html. Use the .phtml
|
||||||
(setq php-template-compatibility nil)
|
(setq php-template-compatibility nil)
|
||||||
|
|
||||||
(set! :repl 'php-mode #'php-boris)
|
(set-repl-handler! 'php-mode #'php-boris)
|
||||||
(set! :lookup 'php-mode :documentation #'php-search-documentation)
|
(set! :lookup 'php-mode :documentation #'php-search-documentation)
|
||||||
|
|
||||||
;; ac-php provides custom autocompletion, php-extras provides autocompletion
|
;; ac-php provides custom autocompletion, php-extras provides autocompletion
|
||||||
|
|
|
@ -26,7 +26,7 @@ is loaded.")
|
||||||
|
|
||||||
(set-env! "PYTHONPATH" "PYENV_ROOT")
|
(set-env! "PYTHONPATH" "PYENV_ROOT")
|
||||||
(set-electric! 'python-mode :chars '(?:))
|
(set-electric! 'python-mode :chars '(?:))
|
||||||
(set! :repl 'python-mode #'+python/repl)
|
(set-repl-handler! 'python-mode #'+python/repl)
|
||||||
|
|
||||||
(when (executable-find "ipython")
|
(when (executable-find "ipython")
|
||||||
(setq python-shell-interpreter "ipython"
|
(setq python-shell-interpreter "ipython"
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
(set-company-backend! 'ruby-mode 'company-dabbrev-code)
|
(set-company-backend! 'ruby-mode 'company-dabbrev-code)
|
||||||
(set-electric! 'ruby-mode :words '("else" "end" "elseif"))
|
(set-electric! 'ruby-mode :words '("else" "end" "elseif"))
|
||||||
(set-env! "RBENV_ROOT")
|
(set-env! "RBENV_ROOT")
|
||||||
(set! :repl 'ruby-mode #'inf-ruby) ; `inf-ruby'
|
(set-repl-handler! 'ruby-mode #'inf-ruby) ; `inf-ruby'
|
||||||
(setq ruby-deep-indent-paren t)
|
(setq ruby-deep-indent-paren t)
|
||||||
;; Don't interfere with my custom RET behavior
|
;; Don't interfere with my custom RET behavior
|
||||||
(define-key ruby-mode-map [?\n] nil)
|
(define-key ruby-mode-map [?\n] nil)
|
||||||
|
|
|
@ -21,4 +21,4 @@
|
||||||
|
|
||||||
(def-package! sbt-mode
|
(def-package! sbt-mode
|
||||||
:after scala-mode
|
:after scala-mode
|
||||||
:config (set! :repl 'scala-mode #'run-scala))
|
:config (set-repl-handler! 'scala-mode #'run-scala))
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
:config
|
:config
|
||||||
(add-hook! sh-mode #'(flycheck-mode highlight-numbers-mode))
|
(add-hook! sh-mode #'(flycheck-mode highlight-numbers-mode))
|
||||||
(set-electric! 'sh-mode :words '("else" "elif" "fi" "done" "then" "do" "esac" ";;"))
|
(set-electric! 'sh-mode :words '("else" "elif" "fi" "done" "then" "do" "esac" ";;"))
|
||||||
(set! :repl 'sh-mode #'+sh/repl)
|
(set-repl-handler! 'sh-mode #'+sh/repl)
|
||||||
|
|
||||||
(setq sh-indent-after-continuation 'always)
|
(setq sh-indent-after-continuation 'always)
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
;;; lang/swift/config.el -*- lexical-binding: t; -*-
|
;;; lang/swift/config.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
;; `swift-mode'
|
;; `swift-mode'
|
||||||
(set! :repl 'swift-mode #'run-swift)
|
(set-repl-handler! 'swift-mode #'run-swift)
|
||||||
|
|
||||||
|
|
||||||
(def-package! flycheck-swift
|
(def-package! flycheck-swift
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue