うわ... 私のEmacs力、低すぎ...?
佐野 正浩
自己紹介

• Emacs歴6年 (=Linux歴)
  • 暇な時はひたすら設定していた
• 既存のelispを拡張するくらい
  • elscreen, flymake, websocketなど
• 好きなパッケージ
  • xterm-mouse-mode
  • flymake
  • elscreen
                                     2
Emacs vs Visual Studio

• EmacsはVSよりも良い…?
 •   そんなのは幻想
 •   補完周り、デバッグ機能など機能面で負ける
 •   速度面でもパッケージ入れまくれば遅くなる
 •   VSのemacs(vim)プラグインが結構良いという話




 •   Eclipseはいらない
                                   3
素のEmacsに意味はない

• 拡張性(カスタマイズ力)で勝負
 • キーバインドの柔軟な割り当て
 • 他のスクリプトとの連携
 • 自己満足


• そして全てを組み合わせればVSに近づける...!


                         4
C++の開発力を上げるパッケージ

•   google-c-style
•   flymake
•   auto-complete
•   gtags(GNU GLOBAL)
•   quickrun
•   moccur-edit
•   gdb-mode
                        5
google-c-style

• Google C++ Style Guideに沿ったインデント
  • スペース2つ
  • 細かいインデントの調整は難しいのでこれで統一が楽
  • vim版もあるよ(google.vim)
• インデントの調整のみでその他の項目は強制されない
  • cpplint.pyでチェックする


     ;; google-c-style
     (require 'google-c-style)
     (add-hook 'c-mode-common-hook 'google-set-c-style)
                                                          6
flymake

• リアルタイムにコンパイルして構文エラーを指摘
 • gccでは-fsyntax-onlyで構文チェックのみできる
   • 開発が爆速になる
 • cpplintと組み合わせてスタイルチェックも可能
   • エラー表示が目障りなので直したくなる

 # Makefile
 .PHONY: check-syntax
 check-syntax:
        cpplint.py $(CHK_SOURCES); ¥
        $(CC) $(CFLAGS) –Wall –fsyntax-only $(CHK_SOUCES)
                                                            7
auto-complete

• GNU Emacsのための最も賢い自動補完機能(公式より)
 • 標準機能のdabbrev-expandは何が補完されるかわからない
 • まるでVisual Studio!!
 • 補完候補を柔軟にカスタマイズ可能
• Clangとの連携で文脈に応じた補完が可能
 • emacs-clang-complete-async.el
 • 完全にVisual Studio!!
 • gccにはGCCSenseというのもあるが使うハードルが高すぎる...

                 設定面倒なのでがんばって!
                                         8
gtags(GNU GLOBAL)

• いわゆるTAGS
 • ctagsやetagsよりも高機能
   • 関数呼び出し元ジャンプがある
 • Google Tagsじゃないよ
 • 開発中はもちろんコードリーディング中は必須ツール

• 操作は4つ
    gtags-find-tags     関数の定義元へジャンプ
    gtags-find-rtags    関数の参照元へジャンプ
    gtags-find-symbol   シンボルの利用場所へジャンプ
    gtags-pop-stack     ジャンプ元に戻る         9
moccur-edit(color-moccur)

• color-moccur
  • バッファ、ファイル、ディレクトリから検索(grep)
  • 標準のgrep-findとかより高機能(たぶん)
  • むしろmoccur-editがあるからこれを使う
• moccur-edit
  • color-moccurの検索結果を編集できる
  • 例:recieveとtypoした箇所が複数のファイルにある
    • color-moccurでgrepした後にquery-replaceするだけで全ファイル一括
      置換

                                                 10
quickrun

• 編集中のファイルをモードに合わせて実行
 • quickrun.vimのemacs版
 • smart-compileより良い(?)
 • 特に設定しなくてもほとんどの言語に対応




                          11
gdb-mode

• Emacsを使ったGDBのGUI
 • 割と直感的に使える?
 • 見た目がなんかVS
 • あんまり使ったことない…




                     12
その他

• yasnippet.el
  • 定型コードのテンプレート
• project.el, eproject.el
  • プロジェクト管理
• speedbar, emacs-nav
  • ファイル一覧表示
• elscreen.el
  • タブ表示
                            13
まとめ

• VisualStudioは数万円もするからプロ向けだけど
• Emacsは無料だから初心者向けだよ!




                            fin.

うわ…私のEmacs力、低すぎ...?

  • 1.
  • 2.
    自己紹介 • Emacs歴6年 (=Linux歴) • 暇な時はひたすら設定していた • 既存のelispを拡張するくらい • elscreen, flymake, websocketなど • 好きなパッケージ • xterm-mouse-mode • flymake • elscreen 2
  • 3.
    Emacs vs VisualStudio • EmacsはVSよりも良い…? • そんなのは幻想 • 補完周り、デバッグ機能など機能面で負ける • 速度面でもパッケージ入れまくれば遅くなる • VSのemacs(vim)プラグインが結構良いという話 • Eclipseはいらない 3
  • 4.
    素のEmacsに意味はない • 拡張性(カスタマイズ力)で勝負 •キーバインドの柔軟な割り当て • 他のスクリプトとの連携 • 自己満足 • そして全てを組み合わせればVSに近づける...! 4
  • 5.
    C++の開発力を上げるパッケージ • google-c-style • flymake • auto-complete • gtags(GNU GLOBAL) • quickrun • moccur-edit • gdb-mode 5
  • 6.
    google-c-style • Google C++Style Guideに沿ったインデント • スペース2つ • 細かいインデントの調整は難しいのでこれで統一が楽 • vim版もあるよ(google.vim) • インデントの調整のみでその他の項目は強制されない • cpplint.pyでチェックする ;; google-c-style (require 'google-c-style) (add-hook 'c-mode-common-hook 'google-set-c-style) 6
  • 7.
    flymake • リアルタイムにコンパイルして構文エラーを指摘 •gccでは-fsyntax-onlyで構文チェックのみできる • 開発が爆速になる • cpplintと組み合わせてスタイルチェックも可能 • エラー表示が目障りなので直したくなる # Makefile .PHONY: check-syntax check-syntax: cpplint.py $(CHK_SOURCES); ¥ $(CC) $(CFLAGS) –Wall –fsyntax-only $(CHK_SOUCES) 7
  • 8.
    auto-complete • GNU Emacsのための最も賢い自動補完機能(公式より) • 標準機能のdabbrev-expandは何が補完されるかわからない • まるでVisual Studio!! • 補完候補を柔軟にカスタマイズ可能 • Clangとの連携で文脈に応じた補完が可能 • emacs-clang-complete-async.el • 完全にVisual Studio!! • gccにはGCCSenseというのもあるが使うハードルが高すぎる... 設定面倒なのでがんばって! 8
  • 9.
    gtags(GNU GLOBAL) • いわゆるTAGS • ctagsやetagsよりも高機能 • 関数呼び出し元ジャンプがある • Google Tagsじゃないよ • 開発中はもちろんコードリーディング中は必須ツール • 操作は4つ gtags-find-tags 関数の定義元へジャンプ gtags-find-rtags 関数の参照元へジャンプ gtags-find-symbol シンボルの利用場所へジャンプ gtags-pop-stack ジャンプ元に戻る 9
  • 10.
    moccur-edit(color-moccur) • color-moccur • バッファ、ファイル、ディレクトリから検索(grep) • 標準のgrep-findとかより高機能(たぶん) • むしろmoccur-editがあるからこれを使う • moccur-edit • color-moccurの検索結果を編集できる • 例:recieveとtypoした箇所が複数のファイルにある • color-moccurでgrepした後にquery-replaceするだけで全ファイル一括 置換 10
  • 11.
    quickrun • 編集中のファイルをモードに合わせて実行 •quickrun.vimのemacs版 • smart-compileより良い(?) • 特に設定しなくてもほとんどの言語に対応 11
  • 12.
    gdb-mode • Emacsを使ったGDBのGUI •割と直感的に使える? • 見た目がなんかVS • あんまり使ったことない… 12
  • 13.
    その他 • yasnippet.el • 定型コードのテンプレート • project.el, eproject.el • プロジェクト管理 • speedbar, emacs-nav • ファイル一覧表示 • elscreen.el • タブ表示 13
  • 14.