Updating Doom Emacs.

This commit is contained in:
Derek Taylor
2020-06-19 22:43:40 -05:00
parent 0f664d532a
commit a5c86c514a
453 changed files with 13526 additions and 12454 deletions
+4 -4
View File
@@ -1,11 +1,11 @@
;;; lang/ruby/autoload.el -*- lexical-binding: t; -*-
;;;###autoload
(defun +ruby|cleanup-robe-servers ()
"Clean up dangling inf robe processes if there are no more `enh-ruby-mode'
buffers open."
(defun +ruby-cleanup-robe-servers-h () ; TODO Use me
"Clean up dangling inf robe processes if there are no more `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))
(unless (or (not robe-mode) (doom-buffers-in-mode 'ruby-mode))
(let (inf-buffer kill-buffer-query-functions)
(while (setq inf-buffer (robe-inf-buffer))
(let ((process (get-buffer-process inf-buffer))
+72 -39
View File
@@ -7,59 +7,61 @@
;;
;;; Packages
(use-package! enh-ruby-mode
:mode ("\\.\\(?:pry\\|irb\\)rc\\'" . +ruby-init-h)
:mode ("\\.\\(?:rb\\|rake\\|rabl\\|ru\\|builder\\|gemspec\\|jbuilder\\|thor\\)\\'" . +ruby-init-h)
:mode ("/\\(?:Berks\\|Cap\\|Gem\\|Guard\\|Pod\\|Puppet\\|Rake\\|Thor\\|Vagrant\\)file\\'" . +ruby-init-h)
:preface
(after! ruby-mode
(require 'enh-ruby-mode))
(defun +ruby-init-h ()
"Enable `enh-ruby-mode' if ruby is available, otherwise `ruby-mode'."
(if (executable-find "ruby")
(enh-ruby-mode)
(ruby-mode)))
(use-package! ruby-mode ; built-in
;; Other extensions are already registered in `auto-mode-alist' by `ruby-mode'
:mode "\\.\\(?:a?rb\\|aslsx\\)\\'"
:mode "/\\(?:Brew\\|Fast\\)file\\'"
:interpreter "j?ruby\\(?:[0-9.]+\\)"
:config
(set-electric! '(ruby-mode enh-ruby-mode) :words '("else" "end" "elsif"))
(set-repl-handler! '(ruby-mode enh-ruby-mode) #'inf-ruby)
(setq ruby-insert-encoding-magic-comment nil)
(set-electric! 'ruby-mode :words '("else" "end" "elsif"))
(set-repl-handler! 'ruby-mode #'inf-ruby)
(when (featurep! +lsp)
(add-hook 'enh-ruby-mode-local-vars-hook #'lsp!))
(after! company-dabbrev-code
(add-to-list 'company-dabbrev-code-modes 'enh-ruby-mode nil #'eq)
(add-to-list 'company-dabbrev-code-modes 'ruby-mode nil #'eq))
(add-hook 'ruby-mode-local-vars-hook #'lsp!))
(after! inf-ruby
(add-hook 'inf-ruby-mode-hook #'doom-mark-buffer-as-real-h)
;; switch to inf-ruby from compile if we detect a breakpoint has been hit
(add-hook 'compilation-filter-hook 'inf-ruby-auto-enter))
(add-hook 'compilation-filter-hook #'inf-ruby-auto-enter))
;; so class and module pairs work
(setq-hook! (ruby-mode enh-ruby-mode) sp-max-pair-length 6))
(setq-hook! 'ruby-mode-hook sp-max-pair-length 6)
(map! :localleader
:map ruby-mode-map
"[" #'ruby-toggle-block
"{" #'ruby-toggle-block))
(use-package! robe
:defer t
:init
(add-hook! 'enh-ruby-mode-hook
(add-hook! 'ruby-mode-hook
(defun +ruby-init-robe-mode-maybe-h ()
"Start `robe-mode' if `lsp-mode' isn't active."
(unless (or (bound-and-true-p lsp-mode)
(bound-and-true-p lsp--buffer-deferred))
(robe-mode +1))))
(or (bound-and-true-p lsp-mode)
(bound-and-true-p lsp--buffer-deferred)
(robe-mode +1))))
:config
(set-repl-handler! 'enh-ruby-mode #'robe-start)
(set-company-backend! 'enh-ruby-mode 'company-robe)
(set-lookup-handlers! 'enh-ruby-mode
(set-repl-handler! 'ruby-mode #'robe-start)
(set-company-backend! 'ruby-mode 'company-robe 'company-dabbrev-code)
(set-lookup-handlers! 'ruby-mode
:definition #'robe-jump
:documentation #'robe-doc)
(when (boundp 'read-process-output-max)
;; Robe can over saturate IPC, making interacting with it slow/clobbering
;; the GC, so increase the amount of data Emacs reads from it at a time.
(setq-hook! '(robe-mode-hook inf-ruby-mode-hook)
read-process-output-max (* 1024 1024)))
(when (featurep! :editor evil)
(add-hook 'robe-mode-hook #'evil-normalize-keymaps))
(map! :localleader
:map robe-mode-map
"'" #'robe-start
;; robe mode specific
"h" #'robe-doc
"rr" #'robe-rails-refresh
;; inf-enh-ruby-mode
"R" #'robe-rails-refresh
:prefix "s"
"d" #'ruby-send-definition
"D" #'ruby-send-definition-and-go
@@ -70,12 +72,13 @@
;; NOTE Must be loaded before `robe-mode'
(use-package! yard-mode
:hook (ruby-mode enh-ruby-mode))
:hook ruby-mode)
(use-package! rubocop
:hook (enh-ruby-mode . rubocop-mode)
:hook (ruby-mode . rubocop-mode)
:config
(set-popup-rule! "^\\*RuboCop" :select t)
(map! :localleader
:map rubocop-mode-map
"f" #'rubocop-check-current-file
@@ -91,10 +94,11 @@
:defer t
:init
(setq rake-cache-file (concat doom-cache-dir "rake.cache"))
(map! :after enh-ruby-mode
(setq rake-completion-system 'default)
(map! :after ruby-mode
:localleader
:map enh-ruby-mode-map
:prefix "k"
:map ruby-mode-map
:prefix ("k" . "rake")
"k" #'rake
"r" #'rake-rerun
"R" #'rake-regenerate-cache
@@ -103,10 +107,10 @@
(use-package! bundler
:defer t
:init
(map! :after enh-ruby-mode
(map! :after ruby-mode
:localleader
:map enh-ruby-mode-map
:prefix "b"
:map ruby-mode-map
:prefix ("b" . "bundle")
"c" #'bundle-check
"C" #'bundle-console
"i" #'bundle-install
@@ -114,6 +118,13 @@
"e" #'bundle-exec
"o" #'bundle-open))
(use-package! chruby
:when (featurep! +chruby)
:hook (ruby-mode . chruby-use-corresponding)
:config
(setq rspec-use-rvm nil
rspec-use-chruby t))
(after! rbenv
(setq rspec-use-rvm nil)
(add-to-list 'exec-path (expand-file-name "shims" rbenv-installation-dir)))
@@ -125,9 +136,11 @@
(use-package! rspec-mode
:mode ("/\\.rspec\\'" . text-mode)
:init
(setq rspec-use-spring-when-possible nil)
(when (featurep! :editor evil)
(add-hook 'rspec-mode-hook #'evil-normalize-keymaps))
:config
(set-popup-rule! "^\\*\\(rspec-\\)?compilation" :size 0.3 :ttl nil :select t)
(setq rspec-use-rvm (executable-find "rvm"))
(map! :localleader
:prefix "t"
@@ -163,3 +176,23 @@
"a" #'minitest-verify-all
"s" #'minitest-verify-single
"v" #'minitest-verify))
(use-package! projectile-rails
:when (featurep! +rails)
:hook ((ruby-mode inf-ruby-mode projectile-rails-server-mode) . projectile-rails-mode)
:hook (projectile-rails-server-mode . doom-mark-buffer-as-real-h)
:hook (projectile-rails-mode . auto-insert-mode)
:init
(setq auto-insert-query nil)
(setq projectile-rails-custom-server-command "bundle exec spring rails server --no-log-to-stdout")
(setq inf-ruby-console-environment "development")
(when (featurep! :lang web)
(add-hook 'web-mode-hook #'projectile-rails-mode))
:config
(set-popup-rule! "^\\*\\(projectile-\\)?rails" :ttl nil)
(when (featurep! :editor evil)
(add-hook 'projectile-rails-mode-hook #'evil-normalize-keymaps))
(map! :localleader
:map projectile-rails-mode-map
"r" #'projectile-rails-command-map))
+5 -1
View File
@@ -7,6 +7,10 @@
(unless (executable-find "ruby")
(warn! "Ruby isn't installed."))
(when (executable-find "rbenv")
(when (and (executable-find "rbenv") (featurep! +rbenv))
(unless (split-string (shell-command-to-string "rbenv versions --bare") "\n" t)
(warn! "No versions of ruby are available via rbenv, did you forget to install one?")))
(when (and (executable-find "chruby") (featurep! +chruby))
(unless (split-string (shell-command-to-string "chruby") "\n" t)
(warn! "No versions of ruby are available via chruby, did you forget to install one?")))
+19 -12
View File
@@ -2,28 +2,35 @@
;;; lang/ruby/packages.el
;; Major modes
(package! enh-ruby-mode)
(package! yard-mode)
(package! ruby-mode :built-in t)
(package! yard-mode :pin "ba74a47463b0320ae152bd42a7dd7aeecd7b5748")
;; REPL
(package! inf-ruby)
(package! inf-ruby :pin "41e5ed3a886fca56990486f1987bb3bae0dbd54b")
(when (featurep! :completion company)
(package! company-inf-ruby))
(package! company-inf-ruby :pin "fe3e4863bc971fbb81edad447efad5795ead1b17"))
;; Programming environment
(package! rubocop)
(package! robe)
(package! rubocop :pin "03bf15558a6eb65e4f74000cab29412efd46660e")
(package! robe :pin "68503b32bb3a005787ecb7a7fdeb3bb4a2317e2b")
;; Project tools
(package! bundler)
(package! rake)
(package! bundler :pin "43efb6be4ed118b06d787ce7fbcffd68a31732a7")
(package! rake :pin "9c204334b03b4e899fadae6e59c20cf105404128")
;; Environment management
(when (featurep! +rbenv)
(package! rbenv))
(package! rbenv :pin "2ea1a5bdc1266caef1dd77700f2c8f42429b03f1"))
(when (featurep! +rvm)
(package! rvm))
(package! rvm :pin "134497bc460990c71ab8fa75431156e62c17da2d"))
(when (featurep! +chruby)
(package! chruby :pin "42bc6d521f832eca8e2ba210f30d03ad5529788f"))
;; Testing frameworks
(package! rspec-mode)
(package! minitest)
(package! rspec-mode :pin "9a2a9d2935ae17b8570485bdea7c347533b464f6")
(package! minitest :pin "ddd152c990a528ad09a696bfad23afa4330ea4d7")
;; Rails
(when (featurep! +rails)
(package! projectile-rails :pin "11980b2bcb99208888856a9b8666ff329b6f0142")
(package! inflections :pin "e4f1372cf22e811faca52fc86bdd5d817498a4d8"))