2012年1月11日
Emacsでauto-complete + pycompleteによるPythonの補完 (Gentoo Linux)
Emacsでのpython開発環境を強化しようと思い色々と設定を行っています。
補完機能について色々と試していたが、そこそこな設定ができたので記録を残しておきます。
Emacsでpythonの補完を行う方法は、pythonの思想に反して(?)色々方法があるようです。
ropemacs
pysmell
pycomplete
ac-python
あまりモジュールの依存が多いものは嫌だったので、pycompleteを使うことにしました。
なお、以下の設定はGentooでの設定に依存したものになります。
(一般的な部分もありますが...)
まず必要なパッケージをインストールします。括弧内に実際にインストールしたバージョンを記載しています。
# emerge app-editors/emacs (=app-editors/app-emacs-23.3-r2)
# emerge app-emacs/pymacs (=app-emacs/pymacs-0.23-r1)
# emerge app-emacs/python-mode (=app-emacs/python-mode-5.2.0)
# emerge app-emacs/auto-complete (=app-emacs/auto-complete-1.3.1)
また、Gentooのpython-modeではpycompleteがインストールされないためローカル環境に置きます。
python-modeインストール時に取得されたtgzが/usr/portage/distfilesにあるので、
そこから pycomplete.py と pycomplete.el を取り出します。以下のパスに配置しました。
$HOME/.emacs.d/local-site-lisp/pycomplete.el
$HOME/.emacs.d/pycomplete/pycomplete.py
続いて、Emacsの設定。$HOME/.emacsに以下を記述します。
;; portageでインストールされるelispを読み込む
(load "/usr/share/emacs/site-lisp/site-gentoo")
;; pycomplete.elを保存したディレクトリをload-pathに追加
(setq load-path (append '("~/.emacs.d/local-site-lisp") load-path))
;; auto-completeの設定
(add-to-list 'ac-dictionary-directories "~/.emacs.d/dict")
(require 'auto-complete-config)
(ac-config-default)
(setq ac-use-menu-map t) ; 補完ウィンドウでC-p,C-nで候補選択
;; pycomplete.pyをpymacsに渡す
(eval-after-load "pymacs"
'(add-to-list 'pymacs-load-path "~/.emacs.d/pycomplete"))
;; pycompleteをロードする
(add-hook 'python-mode-hook '(lambda () (require 'pycomplete)))
;; auto-completeでpycompleteを渡すための設定
(defvar ac-source-pycomplete
'((prefix "\\(?:\\.\\|->\\)\\(\\(?:[a-zA-Z_][a-zA-Z0-9_]*\\)?\\)" nil 1)
(candidates . ac-pycomplete-candidates)
(require . 0)))
(defun ac-pycomplete-candidates ()
(pycomplete-get-all-completions (py-symbol-near-point) (py-find-global-imports)))
;; auto-completeをpythonでも有効にする
;; (app-emacs/auto-complete-1.3.1ではpython-modeは設定されていない)
(add-to-list 'ac-modes 'python-mode)
(defun ac-python-mode-setup ()
(setq ac-sources (append '(ac-source-pycomplete)
ac-sources)))
(add-hook 'python-mode-hook 'ac-python-mode-setup)
;; M-hで即座にpycompleteによる補完を行う
;; XXX: ac-complete-pycompleteを利用すると、"sys."等のドット状態で補完ができない
;; XXX: そのため、ac-complete-interactive-pycompleteを定義して呼び出す
(global-set-key (kbd "M-h") 'ac-complete-interactive-pycomplete)
(defvar ac-source-pycomplete-interactive
'((prefix "\\(?:\\.\\|->\\)\\(\\(?:[a-zA-Z_][a-zA-Z0-9_]*\\)?\\)" nil 1)
(candidates . ac-pycomplete-candidates)
(requires . 0)))
(defun ac-complete-interactive-pycomplete ()
(interactive)
(auto-complete '(ac-source-pycomplete-interactive)))
ac-source-pycomplete-interactiveについてですが、関数定義の中身はac-source-pycompleteと一緒です。
ac-complete-interactive-pycompleteからac-source-pycompleteを呼び出すようにすると、
後述のドット(.)で補完を行うことができないため(原因不明)、別の関数で定義しています。
以上の設定で、以下のようにできます。
"sys.__" とか入力すれば、auto-completeで補完してくれる
"time." とか入力後、M-hでシンボル一覧が表示される
これでかなりイイ感じです。
以下のサイトを参考にしました。感謝!
[emacs][python] auto-complete と pycomplete で賢い補完
@yosisaさんのつぶやき
2011年4月24日
Gentoo Linuxで python をアップデート (2.6 -> 2.7)
Gentoo LinuxのPortageでPythonが2.6から2.7にアップデートがありました。アップデートしたら見事に(案の定?)トラブったので、僕が対応した方法をメモしておきます。
現象
portageによるpythonのアップデート(python-2.7.1-r1)後、emergeコマンドが一切動作しなくなる。x86-stableパッケージ(x86)を利用しており、python-2.7はSlotでインストールされていた。
解決方法
僕の場合は以下の方法で解決することができました。
まず、eselectでpythonパッケージを2.7に変更する
$ eselect python list (python2.7の番号を確認。僕の環境では[1])
$ eselect python set 1 (確認した番号[1]で設定する)
続いて python-updater コマンドで旧pythonに依存するパッケージの再ビルドを行う
$ python-updater
これで解決しました。長らく使っていた2.6系はこれで不要に。--depcleanでアンインストール
現象
portageによるpythonのアップデート(python-2.7.1-r1)後、emergeコマンドが一切動作しなくなる。x86-stableパッケージ(x86)を利用しており、python-2.7はSlotでインストールされていた。
解決方法
僕の場合は以下の方法で解決することができました。
まず、eselectでpythonパッケージを2.7に変更する
$ eselect python list (python2.7の番号を確認。僕の環境では[1])
$ eselect python set 1 (確認した番号[1]で設定する)
続いて python-updater コマンドで旧pythonに依存するパッケージの再ビルドを行う
$ python-updater
これで解決しました。長らく使っていた2.6系はこれで不要に。--depcleanでアンインストール
2011年2月11日
GRUBが立ち上がらなくなったときの対応(Gentoo Linux インストールCD)
現在、Windows 7/Gentoo Linux/NetBSDという3つのOSをPCにインストールしていて、ブートローダにGRUBを利用しています。OSの再インストール等を実施していると稀にMBRが書き換えられてGRUBが立ち上がらないあるいはOSが何も立ち上がらないという状況になります。そんなときの対処方法に関して記載します。
僕はいつも、Gentoo Linuxをインストールした際に利用したインストールCDを利用してます。基本的な流れとしては、
という流れです。以下がインストールCD起動からGRUB再設定までに必要なコマンドです。
# swapon /dev/sda2
# mount /dev/sda3 /mnt/gentoo
# mount /dev/sda1 /mnt/gentoo/boot
# cd /mnt/gentoo
# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev
# chroot /mnt/gentoo /bin/bash
# grub
grub> root (hd0, 0)
grub> setup (hd0)
以上でMBRへのGRUB最設定が完了です。上記の方法はKnoppix等のLiveCDでもつかえるはずです。
僕はいつも、Gentoo Linuxをインストールした際に利用したインストールCDを利用してます。基本的な流れとしては、
- インストールCDから起動
- Gentoo Linuxのパーティションをマウント、chroot
- GRUBの再設定
という流れです。以下がインストールCD起動からGRUB再設定までに必要なコマンドです。
# swapon /dev/sda2
# mount /dev/sda3 /mnt/gentoo
# mount /dev/sda1 /mnt/gentoo/boot
# cd /mnt/gentoo
# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev
# chroot /mnt/gentoo /bin/bash
# grub
grub> root (hd0, 0)
grub> setup (hd0)
以上でMBRへのGRUB最設定が完了です。上記の方法はKnoppix等のLiveCDでもつかえるはずです。
2011年1月3日
OProfileを使ってみる
LinuxカーネルのプロファイラであるOProfileを使ってみることにする。
始めて利用するので、今回はセットアップと超簡単な使い方のみ試してみる。
今回試した環境は、
まずは環境のセットアップ。OProfileを利用するためにはLinuxカーネルでのサポートと専用ユーザランドのインストールが必要。Linuxカーネルのサポートは、CONFIG_OPROFILE と CONFIG_HAVE_OPROFILE のサポートがあれば最低限OKらしい。続いてユーザランドのインストール。Portageを使ってインストールする
$ emerge dev-util/oprofile
インストールしたらOProfileで簡単なプロファイルを行ってみる。
$ sudo opcontrol --vmlinux=/usr/src/linux/vmlinux
$ sudo opcontrol --start
# プロファイルをとる任意のプログラムを実行
$ sudo opcontrol --stop
以上でプログラムのトレース取得は成功。
なお、opcontrolで各種処理を行うにはroot権限が必要な模様。そのため、sudoコマンドを用いて行っている。
続いてプロファイル結果の表示
$ opreport # 全体の結果を表示
$ opreport (プログラム名) # 該当するプログラムのみ
$ opreport -l (プログラム名) # ??
$ opreport -c (プログラム名) # ??
opreportでの各種コマンドラインオプションの詳細は今回は未確認。今日のところはこれで終了。もっと詳細を後日見ていきたいと思う。
参考ページ
OProfile : http://oprofile.sourceforge.net/news/
OProfile Documents : http://oprofile.sourceforge.net/docs/
備考
OProfileのサポートCPUを見るとCore-i5は十分なサポートされていないのか??この点も後日確認したいと思う。
またOProfileの実行に伴い、/root/.oprofile/ ディレクトリが作成されて設定が保持される。
さらに実行時の各種詳細情報は /var/lib/oprofile/ ディレクトリ配下に記憶さえる模様。
始めて利用するので、今回はセットアップと超簡単な使い方のみ試してみる。
今回試した環境は、
- システムは Gentoo Linux。カーネルバージョンは 2.6.36-gentoo-r6(Linux-2.6.36にGentoo向けパッチが当たっている)
- PCは、ThinkPad X201を利用。CPUはIntel Core i5-540M
まずは環境のセットアップ。OProfileを利用するためにはLinuxカーネルでのサポートと専用ユーザランドのインストールが必要。Linuxカーネルのサポートは、CONFIG_OPROFILE と CONFIG_HAVE_OPROFILE のサポートがあれば最低限OKらしい。続いてユーザランドのインストール。Portageを使ってインストールする
$ emerge dev-util/oprofile
インストールしたらOProfileで簡単なプロファイルを行ってみる。
$ sudo opcontrol --vmlinux=/usr/src/linux/vmlinux
$ sudo opcontrol --start
# プロファイルをとる任意のプログラムを実行
$ sudo opcontrol --stop
以上でプログラムのトレース取得は成功。
なお、opcontrolで各種処理を行うにはroot権限が必要な模様。そのため、sudoコマンドを用いて行っている。
続いてプロファイル結果の表示
$ opreport # 全体の結果を表示
$ opreport (プログラム名) # 該当するプログラムのみ
$ opreport -l (プログラム名) # ??
$ opreport -c (プログラム名) # ??
opreportでの各種コマンドラインオプションの詳細は今回は未確認。今日のところはこれで終了。もっと詳細を後日見ていきたいと思う。
参考ページ
OProfile : http://oprofile.sourceforge.net/news/
OProfile Documents : http://oprofile.sourceforge.net/docs/
備考
OProfileのサポートCPUを見るとCore-i5は十分なサポートされていないのか??この点も後日確認したいと思う。
またOProfileの実行に伴い、/root/.oprofile/ ディレクトリが作成されて設定が保持される。
さらに実行時の各種詳細情報は /var/lib/oprofile/ ディレクトリ配下に記憶さえる模様。
2010年6月17日
Gentoo Linux の world を調べる方法
Gentoo Linux で portage を使用していると、依存するパッケージ等を自動で解決・インストールしてくれます。では、インストールしているパッケージで「自身で指定したパッケージ」と「依存しているためにインストールされたパッケージ」を調べたい場合にはどうするか?という話。
自身で指定したパッケージは、"world" に指定されます。この world はファイルとして保持されていて、/var/lib/portage/world のファイルを確認すれば分かります。
自身で指定したパッケージは、"world" に指定されます。この world はファイルとして保持されていて、/var/lib/portage/world のファイルを確認すれば分かります。
2008年12月7日
Firefoxのメニューのフォントサイズを設定する
Firefoxにおいて、表示するWebページのフォントサイズは「編集→設定」から変更することができるが、メニューバー等のフォントサイズはここからでは変更できない。
Gentoo Linux に Firefox 2.0.0.18 をインストールしたところ、画面の解像度(1024 x 768)に対してメニューバーのフォントが大きすぎるので、その設定を変更してみた。
変更方法は以下の通り。
参考ページ
GNOME意外でFirefoxとThuderbirdのフォントサイズを決定する
Gentoo Linux に Firefox 2.0.0.18 をインストールしたところ、画面の解像度(1024 x 768)に対してメニューバーのフォントが大きすぎるので、その設定を変更してみた。
変更方法は以下の通り。
- $HOME/.mozilla/firefox/*/chrome/以下に、"userChrome.css" というファイルを作成する。
- 作成した userChome.css に以下を記載する。(同一ディレクトリにuserChome_example.cssというファイルがあるので、それを参考に‥)
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
* {
font-size: 8pt !important
}
参考ページ
GNOME意外でFirefoxとThuderbirdのフォントサイズを決定する
2008年11月22日
Gentoo Linux 2008.0 のインストール
企んでいたOSの再インストールを実施する。
まずはGentoo Linuxのインストール。
インストールするのに参考になるサイトは以下の通り
ハンドブックに従う形で、これと言って問題無くインストール完了!
インストールが完了したら、システムをすべて再ビルドする。(最適化のため)
とりあえず、これで最低限のシステムインストールは完了!
まずはGentoo Linuxのインストール。
インストールするのに参考になるサイトは以下の通り
ハンドブックに従う形で、これと言って問題無くインストール完了!
インストールが完了したら、システムをすべて再ビルドする。(最適化のため)
# emerge --oneshot linux-headers (ヘッダファイルを最新のものにする)
# emerge --oneshot glibc (まず、libcを再ビルドする)
# emerge -e world (システム全体を再ビルドする)
# emerge --depclean (不要なパッケージを削除する)
とりあえず、これで最低限のシステムインストールは完了!
登録:
投稿 (Atom)