Emacs Tidbits eest Ruby Arendajate

Märge tõlgitud http://blog.senny.ch/blog/2012/10/06/emacs-tidbits-for-ruby-developers/

see on kogumik vähe Emacs nippe ja trikke ma kasutada minu igapäevane arendustegevus. Et hoida see lühike ma mainida vaid asi, mis on seotud Ruby.

rvm.el

Kui te kasutate taaraautomaatide sa peaksid definitly installida rvm.el. See on väike pakett, mis ma kirjutasin 3 aastat tagasi, ühendab Emacs oma taaraautomaatide setup. Ta seadistab Emacs, et leida õige Ruby executables, et teised režiimid nagu inf-ruby on loodud nii nagu sa tahad seda. See loeb .rvmrc faile ja saab vahetada kehtiva ruby sõita.

Kõige olulisem funktsioon, kuigi on avatud allikas tahes rubygem oma praeguse gemset. Kui te kõne rvm-open-gem saate immedietly hüpata, et iga pärl ja loe läbi allikas. See on tohutu aja saver.

Te võite leida rohkem teavet rvm.el aastal Emacs Reboot 14 alates Avdi Grimm ja seal on ka blogi postitust emacsrookie blogi.

Avatud spec faili tahes klass

See on vähe funktsioon nõuab rspec-režiim. See on määratletud uue funktsiooni avamiseks spec faili iga klass oma projekti. Kui teil on ainult üks aken lahti, ta jagab oma ekraani ja avab spec faili teistes aknas. See töötab ka teistpidi ja lubab teil avada rakendamist, kui sul spec fail avatud.

Ma olen kohustatud seda, et C-c , , aga muidugi saab muuta siduvaks.

(defun senny-ruby-open-spec-other-buffer ()
  (interactive)
  (when (featurep 'rspec-mode)
    (let ((source-buffer (current-buffer))
          (other-buffer (progn
                          (rspec-toggle-spec-and-target)
                          (current-buffer))))
      (switch-to-buffer source-buffer)
      (pop-to-buffer other-buffer))))

(eval-after-load 'ruby-mode
  '(progn
     (define-key ruby-mode-map (kbd "C-c , ,") 'senny-ruby-open-spec-other-buffer)))

rida interpolatsiooni

See funktsioon laigud teie klahvi #, et automaatselt laieneda #{} kui kirjutasid sees topelt jutumärkides rida.

(defun senny-ruby-interpolate ()
  "In a double quoted string, interpolate."
  (interactive)
  (insert "#")
  (when (and
         (looking-back "\".*")
         (looking-at ".*\""))
    (insert "{}")
    (backward-char 1)))

(eval-after-load 'ruby-mode
  '(progn
     (define-key ruby-mode-map (kbd "#") 'senny-ruby-interpolate)))

fikseeritud süntaksi esiletõstmine kurk samm mõisted

Ma ei ole kindel, kui see on kinnitatud hiljem release ruby-režiim. Versioon ruby-režiim, mis ma kasutan, Emacs saab segi ajada regulaaravaldisi sees samm määratlus faile ja oma süntaksi esiletõstmine on katki ülejäänud puhvri. Ma kirjutasin seda paika saada see töötab nagu oodatud:

(eval-after-load 'ruby-mode
  '(progn
     (add-to-list 'ruby-font-lock-syntactic-keywords
                  '("\\(\\(\\)\\(\\)\\|Given\\|When\\|Then\\)\\s *\\(/\\)[^/\n\\\\]*\\(\\\\.[^/\n\\\\]*\\)*\\(/\\)"
                    (4 (7 . ?/))
                    (6 (7 . ?/))))))

flymake, et kontrollida oma süntaks

Ma kasutan flymake koheselt vt tüübid minu kood. See konfiguratsioon on esile iga syntax error oma käsiloleva.

(eval-after-load 'ruby-mode
  '(progn
     ;; Libraries
     (require 'flymake)

     ;; Invoke ruby with '-c' to get syntax checking
     (defun flymake-ruby-init ()
     (let* ((temp-file (flymake-init-create-temp-buffer-copy
                          'flymake-create-temp-inplace))
              (local-file (file-relative-name
                           temp-file
                   (file-name-directory buffer-file-name))))
         (list "ruby" (list "-c" local-file))))

(push '(".+\\.rb$" flymake-ruby-init) flymake-allowed-file-name-masks)
(push '("Rakefile$" flymake-ruby-init) flymake-allowed-file-name-masks)

     (push '("^\\(.*\\):\\([0-9]+\\): \\(.*\\)$" 1 2 nil 3)
           flymake-err-line-patterns)

     (add-hook 'ruby-mode-hook 'cabbage-flymake-init)

     (add-hook 'ruby-mode-hook
               (lambda ()
                 (when (and buffer-file-name
                            (file-writable-p
                     (file-name-directory buffer-file-name))
                         (file-writable-p buffer-file-name)
                     (if (fboundp 'tramp-list-remote-buffers)
                                (not (subsetp
                                      (list (current-buffer))
                         (tramp-list-remote-buffers)))
                              t))
                   (local-set-key (kbd "C-c d")
                 'flymake-display-err-menu-for-current-line)
                   (flymake-mode t))))))

kolmanda osapoole teeke

Kui ma kasutan Emacs Ruby ja Rööpad areng I kasutada järgmised teegid:

  • rspec-režiim (RSpec toetus)
  • inf-ruby (see on interaktiivne ruby kesta sees Emacs, see on diststributed koos ruby-režiimis)
  • yari (sirvi RI dokumenteerimise Emacs)
  • cucumber.el toetus *.funktsioon failid)

Mida te kasutate?

Need olid mõned abilised ma kasutan teha Emacs fantastiline Ruby arengut. Otsi a kapsas, et näha, milline konfiguratsioon kasutada. Ma olen pidevalt parandada minu töövoogu. Kui sul vinge Emacs tidbits Ruby palun jäta kommentaar.

Tagasi pealehele