Better evil/REPL support
This commit is contained in:
parent
4882df4847
commit
2503232edf
9 changed files with 69 additions and 15 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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$")
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue