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-eldoc は org-mode にて
- 見出しのフルパス(?) - 大見出し〜現在の見出しまでを/で区切ったもの
- begin_src blockのパラメータ
- begin_src 内のソースコード(Emacs Lisp, C言語, CSS, Python, PHP, Go)のeldoc
を表示してくれます。
Emacs 24.3ではbegin_src内のEmacs Lispの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-eldoc は org-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