diff --git a/modules/lang/ruby/config.el b/modules/lang/ruby/config.el index 68753bab5..fbf2f4d7f 100644 --- a/modules/lang/ruby/config.el +++ b/modules/lang/ruby/config.el @@ -91,6 +91,16 @@ "P" #'rubocop-autocorrect-project)) +(use-package! ruby-json-to-hash + :defer t + :init + (map! :after ruby-mode + :map ruby-mode-map + :localleader + "J" #'ruby-json-to-hash-parse-json + "j" #'ruby-json-to-hash-toggle-let)) + + ;; ;;; Package & Ruby version management @@ -182,6 +192,9 @@ "v" #'minitest-verify)) +;; +;;; Rails integration + (use-package! projectile-rails :when (modulep! +rails) :hook ((ruby-mode inf-ruby-mode projectile-rails-server-mode) . projectile-rails-mode) @@ -199,3 +212,29 @@ (map! :localleader :map projectile-rails-mode-map "r" #'projectile-rails-command-map)) + +(use-package! rails-routes + :when (featurep! +rails) + :defer t + :init + (map! :after ruby-mode + :map ruby-mode-map + "C-c o" #'rails-routes-insert + "C-c C-o" #'rails-routes-insert-no-cache + "C-c ! o" #'rails-routes-jump) + (map! :after web-mode + :map web-mode-map + "C-c o" #'rails-routes-insert + "C-c C-o" #'rails-routes-insert-no-cache + "C-c ! o" #'rails-routes-jump)) + +(use-package! rails-i18n + :when (featurep! +rails) + :defer t + :init + (map! :after ruby-mode + :map ruby-mode-map + "C-c i" #'rails-i18n-insert-with-cache) + (map! :after web-mode + :map web-mode-map + "C-c i" #'rails-i18n-insert-with-cache)) diff --git a/modules/lang/ruby/packages.el b/modules/lang/ruby/packages.el index 0348ba532..4e53ae02b 100644 --- a/modules/lang/ruby/packages.el +++ b/modules/lang/ruby/packages.el @@ -30,7 +30,12 @@ (package! rspec-mode :pin "29df3d081c6a1cbdf840cd13d45ea1c100c5bbaa") (package! minitest :pin "5999c45c047212cee15a2be67e78787776a79c35") +;; Refactoring +(package! ruby-json-to-hash :pin "383b22bb2e007289ac0dba146787d02ff99d4415") + ;; Rails (when (modulep! +rails) + (package! rails-routes :pin "eab995a9297ca5bd9bd4f4c2737f2fecfc36def0") + (package! rails-i18n :pin "8e87e4e48e31902b8259ded28a208c2e7efea6e9") (package! projectile-rails :pin "701784df7befe17b861f1b53fe9cbc59d0b94b9f") (package! inflections :pin "55caa66a7cc6e0b1a76143fd40eff38416928941"))