Skip to content

Latest commit

 

History

History
139 lines (120 loc) · 7.9 KB

1410061430.org-eldoc.org

File metadata and controls

139 lines (120 loc) · 7.9 KB

emacs org-eldoc.el : org-modeで見出し、begin_srcブロックをeldoc表示!Emacs Lisp以外にもC言語、Go、CSS、PHP、Pythonにも対応 | Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名org-eldoc
概要(原文)EL_DOCに説明文を入れてください
リポジトリまだパッケージに登録されていない
関連記事package:org-eldoc package:eldoc package:org package:c-eldoc package:go-eldoc package:css-eldoc package:php-eldoc package:python

<2015-01-18 Sun>本家orgパッケージのcontrib/lisp以下に登録されました。

eldoc はEmacs Lispプログラミングを支援してくれることで定番ですね。

カーソル位置の関数の引数や変数の説明がエコーエリアに 自動的に表示されるアレですよ。

eldocは拡張できるようになっているため、Emacs Lisp以外にも対応しています。

  • C言語(c-eldoc)
  • Go(go-eldoc)
  • CSS(css-eldoc)
  • PHP(php-eldoc)
  • Python(python.el)

この org-eldocorg-mode にて

  • 見出しのフルパス(?) - 大見出し〜現在の見出しまでを/で区切ったもの
  • begin_src blockのパラメータ
  • begin_src 内のソースコード(Emacs Lisp, C言語, CSS, Python, PHP, Go)のeldoc

を表示してくれます。

Emacs 24.3ではbegin_src内のEmacs Lispのeldocが エラーになってしまうので関数を再定義しています。

org-eldoc インストール

これはまだパッケージ化されていないので、手動でインストール する必要があります。

概要

<2015-01-18 Sun>本家orgパッケージのcontrib/lisp以下に登録されました。

eldoc はEmacs Lispプログラミングを支援してくれることで定番ですね。

カーソル位置の関数の引数や変数の説明がエコーエリアに 自動的に表示されるアレですよ。

eldocは拡張できるようになっているため、Emacs Lisp以外にも対応しています。

  • C言語(c-eldoc)
  • Go(go-eldoc)
  • CSS(css-eldoc)
  • PHP(php-eldoc)
  • Python(python.el)

この org-eldocorg-mode にて

  • 見出しのフルパス(?) - 大見出し〜現在の見出しまでを/で区切ったもの
  • begin_src blockのパラメータ
  • begin_src 内のソースコード(Emacs Lisp, C言語, CSS, Python, PHP, Go)のeldoc

を表示してくれます。

Emacs 24.3ではbegin_src内のEmacs Lispのeldocが エラーになってしまうので関数を再定義しています。

(require 'org-eldoc)
(org-eldoc-hook-setup)
(add-hook 'emacs-lisp-mode-hook 'eldoc-mode)
(defun org-eldoc-documentation-function ()
  "Return breadcrumbs when on a headline, args for src block header-line,
  calls other documentation functions depending on lang when inside src body."
  (or
   (org-eldoc-get-breadcrumb)
   (org-eldoc-get-src-header)
   (let ((lang (org-eldoc-get-src-lang)))
     (cond ((or
             (string= lang "elisp")
             (string= lang "emacs-lisp"))
            (cond ((fboundp 'eldoc-documentation-function-default)
                   (eldoc-documentation-function-default))

                  ((locate-library "elisp-mode") ;; we're using development version of Emacs
                   (autoload 'elisp-eldoc-documentation-function "elisp-mode" nil t)
                   (elisp-eldoc-documentation-function))
                  (t                    ;24.3
                   (let (eldoc-documentation-function)
                     (eldoc-print-current-symbol-info)))))
           ((or
             (string= lang "c") ;; http://github.com/nflath/c-eldoc
             (string= lang "C")) (when (require 'c-eldoc nil t)
                                   (c-eldoc-print-current-symbol-info)))
           ;; https://github.com/zenozeng/css-eldoc
           ((string= lang "css") (when (require 'css-eldoc nil t)
                                   (css-eldoc-function)))
           ((string= lang "python") (when (require 'python nil t)
                                      (python-eldoc-function)))
           ;; https://github.com/zenozeng/php-eldoc
           ((string= lang "php") (when (require 'php-eldoc nil t)
                                   (php-eldoc-function)))
           ((or
             (string= lang "go")
             (string= lang "golang")) (when (require 'go-eldoc nil t)
                                        (go-eldoc--documentation-function)))))))

実行方法

$ wget http://rubikitch.com/f/141006143712.org-eldoc.1.el
$ emacs -Q -f package-initialize -l 141006143712.org-eldoc.1.el

http://rubikitch.com/f/20141006143900.png Fig1: 見出しの階層表示

http://rubikitch.com/f/20141006143907.png Fig2: begin_src ブロックのパラメータ表示

http://rubikitch.com/f/20141006145237.png Fig3: begin_src 内のEmacs Lispのeldoc