iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 24
0
Software Development

Emacs 來寫程式系列 第 24

[Emacs-24] 用 Emacs 來寫 Ruby 實戰篇

Ruby 實戰篇

前篇介紹完用 Emacs 寫 Ruby 程式的設定篇,我們這一篇實際來看一下這些功能的使用

建立一個類別 (Class)

Ruby 是一個物件導向語言,建立類別是很重要的工作,我們啟動 Emacs 按 Ctrl-x Ctrl-f 先來建立一個類別 greet.rb,首先看一下環境設定

  • 先看程式補全的 Company backends 的設定,按 Ctrl-h v company-backendsImgur
    沒錯,有三個群組,第一個群組使用 company-robe

  • 再來看一下語法檢查 flychekc 的設定,按 Ctrl-c ! v Imgur
    Ruby-mode 的 flycheck 支援 chef-foodcritic, rubocop, reek, rubylint 等等後端,我們介紹使用的rubocop 已經看到執行檔跟設定檔都已經設定,可以使用

  • 我們開始打入 cla 會啟動 company 的補全 Imgur
    看一下補全的來源,按 Meta-x company-diag,原來來自於 yasnippet Imgur

  • 看一下 yasnipeet 的預設 snippets,按 Meta-x yas-describe-table,預設很多的 ruby 程式片段,當然包含了類別的定義 Imgur

  • def 來展開類別函式 Imgur

  • ruby-mode 會顯示函式或類別,區塊的區間 Imgur

  • 如果語法有錯誤,flycheck 會以粉紅色顯示錯誤,並在狀態列下顯示 FlyC: 1/0 ,前面的數字是錯誤,後面的數字是警告 Imgur

看詳細的問題,按 Ctrl-c ! l, 是 end 的問題 Imgur

繼續打完簡單的類別定義,我們故意留下一些多餘的行 Imgur

  • 儲存後會 rufo 會自動將程式排列 Imgur

建立主程式

開啟一個 test.rb,打入 requ,奇怪,為什麼沒有補全?檢查一下 company-backends Imgur
用 company-robe,但 robe 好像沒作用

需要啟動 Meta-x robe-start Imgur
需要先啟動 ruby console 打 yes Imgur
不行,no matching directory found Imgur
這是因為它試著啟動 inf-ruby-console-auto Imgur

這 inf-ruby-console-auto 是為 ruby 的一些專案使用的,官網上的文件 Imgur

因為我們不在專案內,所以無法自動啟動,我們手工啟動 Ctrl-c Ctrl-s inf-ruby Imgur

再來啟動 robe-start Imgur
可以啟動了,回到 test.rb, 打入 req ,補全出現了 Imgur

我們將 greet.rb 的類別匯入,來實現一個物件,打入 Gre ,沒有出現補全?因為沒有將 greet.rb 載入 inf-ruby ,按 Ctrl-c Ctrl-l 來載入 Imgur

這時就會讓 test.rb 看到 greet.rb 的函式 Imgur

同時 Eldoc 也會在小緩衝區顯示類別的函式定義 Imgur

  • 跳到函式或模組,這時按 Meta-. 就可以跳到函式的定義,Meta-, 跳回 Imgur

執行

可以將程式用 Ctrl-space 劃起來,按 Ctrl-c Ctrl-r 到 inf-ruby 執行 Imgur

相關影片:

相關簡報:簡報
相關程式:Github,請下載到 ~/.emacs.d 啟動 Emacs 會自動安裝個套件
相關資訊:我的部落格


上一篇
[Emacs-23] 用 Emacs 來寫 Ruby 設定篇
下一篇
[Emacs-25] 用 Emacs 來寫 C# 設定篇
系列文
Emacs 來寫程式30

尚未有邦友留言

立即登入留言