Better evil/REPL support

This commit is contained in:
Henrik Lissner 2015-12-09 01:54:30 -05:00
parent 4882df4847
commit 2503232edf
9 changed files with 69 additions and 15 deletions

View file

@ -17,16 +17,11 @@
(use-package repl-toggle
:commands (rtog/toggle-repl rtog/add-repl)
:config
:init
(setq rtog/goto-buffer-fun 'popwin:pop-to-buffer
rtog/mode-repl-alist
'((php-mode . php-boris)
(python-mode . run-python)
(lua-mode . run-lua)
(emacs-lisp-mode . ielm)
(ruby-mode . inf-ruby)
(js2-mode . nodejs-repl)))
)
rtog/mode-repl-alist '())
(add-hook! repl-toggle-mode (evil-initialize-state 'emacs)))
(provide 'core-quickrun)
;;; core-quickrun.el ends here

View file

@ -70,5 +70,35 @@ If ARG is nil this function calls `recompile', otherwise it calls
(insert (current-kill 0)))))
(t (quickrun-replace-region beg end))))
(defvar narf--repl-buffer nil)
;;;###autoload (autoload 'narf:repl "defuns-quickrun" nil t)
(evil-define-command narf:repl (&optional bang)
:repeat nil
(interactive "<!>")
(if (and narf--repl-buffer (buffer-live-p narf--repl-buffer))
(if (popwin:popup-window-live-p)
(popwin:select-popup-window)
(popwin:pop-to-buffer narf--repl-buffer))
(rtog/toggle-repl (if (use-region-p) 4))
(setq narf--repl-buffer (current-buffer))))
;;;###autoload (autoload 'narf:repl-eval "defuns-quickrun" nil t)
(evil-define-operator narf:repl-eval (&optional beg end bang)
:type inclusive
:repeat nil
(interactive "<r><!>")
(let ((region-p (use-region-p))
(selection (s-trim (buffer-substring-no-properties beg end))))
(narf:repl bang)
(when (and region-p beg end)
(let* ((buf narf--repl-buffer)
(win (get-buffer-window buf)))
(unless (eq buf popwin:popup-buffer)
(popwin:pop-to-buffer buf nil t))
(when (and narf--repl-buffer (buffer-live-p narf--repl-buffer))
(with-current-buffer narf--repl-buffer
(goto-char (point-max))
(insert selection)))))))
(provide 'defuns-quickrun)
;;; defuns-quickrun.el ends here

View file

@ -9,5 +9,9 @@ additional check to make sure they exist in the project root."
(narf/project-has-files ,build-file))
(setq narf--build-command '(,command . ,build-file)))))
;;;###autoload
(defmacro define-repl! (mode command)
`(push '(,mode . ,command) rtog/mode-repl-alist))
(provide 'macros-quickrun)
;;; macros-quickrun.el ends here

View file

@ -3,6 +3,8 @@
(use-package js2-mode
:mode "\\.js$"
:interpreter "node"
:init
(define-repl! js2-mode nodejs-repl)
:config
(setq-default
js2-skip-preprocessor-directives t

View file

@ -1,6 +1,7 @@
;;; module-lisp --- all things lisp
;; see lib/elisp-defuns.el
(define-repl! emacs-lisp-mode ielm)
(add-hook! emacs-lisp-mode 'turn-on-eldoc-mode)
;; [pedantry intensifies]

View file

@ -4,11 +4,16 @@
:mode "\\.lua$"
:interpreter "lua"
:init
(define-repl! lua-mode narf-inf-lua)
(setq-default lua-indent-level tab-width)
;; (after! company-dict
;; (add-to-list 'company-dict-minor-mode-alist 'love-mode))
(add-hook! lua-mode '(narf|enable-tab-width-2 flycheck-mode))
(add-hook! lua-mode (setq lua-indent-level 2)))
(add-hook! lua-mode (setq lua-indent-level 2))
(defun narf-inf-lua ()
(lua-start-process "lua" "lua")
(pop-to-buffer lua-process-buffer)))
(define-minor-mode love-mode
"Buffer local minor mode for Love2D"

View file

@ -24,7 +24,12 @@
(require 'php-refactor-mode)
(add-hook! php-mode '(turn-on-eldoc-mode emr-initialize php-refactor-mode)))
(use-package php-boris :defer t)
(use-package php-boris :defer t
:init
(define-repl! php-mode php-boris)
:config
(evil-set-initial-state 'php-boris-mode 'emacs)
(setq php-boris-command "~/.dotfiles/scripts/run-boris"))
(use-package hack-mode :mode "\\.hh$")

View file

@ -12,6 +12,10 @@
python-shell-interpreter "ipython")
:config
(define-env-command! python-mode "python --version | cut -d' ' -f2")
(define-repl! python-mode narf-inf-python)
(defun narf-inf-python ()
(run-python python-shell-interpreter t t))
;; interferes with smartparens
(define-key python-mode-map (kbd "DEL") nil)

View file

@ -1,11 +1,19 @@
;;; module-sh.el --- description
;; [pedantry intensifies]
(after! sh-script
(defadvice sh-mode (after sh-mode-rename-modeline activate)
(setq mode-name "Sh"))
(define-repl! sh-mode narf-inf-shell)
(add-hook! sh-mode 'flycheck-mode)
(add-hook! sh-mode 'flycheck-mode))
;; [pedantry intensifies]
(defadvice sh-mode (after sh-mode-rename-modeline activate)
(setq mode-name "sh"))
(defun narf-inf-shell ()
(let* ((dest-sh (symbol-name sh-shell))
(sh-shell-file dest-sh))
(sh-shell-process t)
(with-current-buffer "*shell*"
(rename-buffer (format "*shell [%s]*" dest-sh))))))
(provide 'module-sh)
;;; module-sh.el ends here