2018-07-06 23:11:26 +02:00
|
|
|
;;; lang/ruby/autoload.el -*- lexical-binding: t; -*-
|
|
|
|
|
2018-09-25 22:45:13 -04:00
|
|
|
(defvar +ruby-version-cache (make-hash-table :test 'equal)
|
|
|
|
"TODO")
|
|
|
|
|
2018-07-06 23:11:26 +02:00
|
|
|
;;;###autoload
|
|
|
|
(defun +ruby|cleanup-robe-servers ()
|
|
|
|
"Clean up dangling inf robe processes if there are no more `enh-ruby-mode'
|
|
|
|
buffers open."
|
|
|
|
;; FIXME This should wait X seconds before cleaning up
|
|
|
|
(unless (or (not robe-mode) (doom-buffers-in-mode 'enh-ruby-mode))
|
|
|
|
(let (inf-buffer kill-buffer-query-functions)
|
|
|
|
(while (setq inf-buffer (robe-inf-buffer))
|
|
|
|
(let ((process (get-buffer-process inf-buffer))
|
|
|
|
confirm-kill-processes)
|
|
|
|
(when (processp process)
|
|
|
|
(kill-process (get-buffer-process inf-buffer))
|
|
|
|
(kill-buffer inf-buffer)))))))
|
2018-07-31 14:22:38 +02:00
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun +ruby-version ()
|
|
|
|
"Return the currently installed version of ruby on your system (the first
|
|
|
|
ruby executable found in your PATH).
|
|
|
|
|
|
|
|
This is not necessarily aware of env management tools like virtualenv, pyenv or
|
|
|
|
pipenv, unless those tools have modified the PATH that Emacs picked up when you
|
|
|
|
started it."
|
2018-09-25 22:45:13 -04:00
|
|
|
(condition-case _
|
|
|
|
(let ((version-str (car (process-lines "ruby" "--version"))))
|
|
|
|
(puthash (doom-project-root)
|
|
|
|
(format "Ruby %s" (cadr (split-string version-str " ")))
|
|
|
|
+ruby-version-cache))
|
|
|
|
(error "Ruby")))
|
|
|
|
|
|
|
|
|
|
|
|
;;
|
|
|
|
;; Hooks
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun +ruby|update-version (&rest _)
|
|
|
|
"Update `+ruby--version' by consulting `+ruby-version' function."
|
|
|
|
(setq +ruby--version
|
|
|
|
(or (gethash (doom-project-root) +python-version-cache)
|
|
|
|
(+ruby-version))))
|
|
|
|
|
|
|
|
;;;###autoload
|
2018-09-26 09:41:43 -04:00
|
|
|
(defun +ruby|update-version-in-all-buffers (&rest )
|
2018-09-25 22:45:13 -04:00
|
|
|
"Update `+ruby--version' in all `enh-ruby-mode' buffers."
|
|
|
|
(dolist (buffer (doom-buffers-in-mode 'enh-ruby-mode))
|
|
|
|
(setq +ruby-version-cache (clrhash +ruby-version-cache))
|
|
|
|
(with-current-buffer buffer
|
|
|
|
(+ruby|update-version))))
|