トップページunix
1001コメント290KB

Emacs part 28

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2009/01/21(水) 20:20:55
GNU Emacs - Free Software Foundation (FSF) http://www.gnu.org/software/emacs/
EmacsWiki http://www.emacswiki.org/
Emacs 電子書棚 http://www.bookshelf.jp/
Emacs CVS Repositories [Savannah] http://savannah.gnu.org/cvs/?group=emacs
Emacs Lisp List http://www.damtp.cam.ac.uk/user/sje30/emacs/ell-date.html
最新の stable リリースのダウンロード http://ftp.gnu.org/pub/gnu/emacs/
Windows用 NTEmacs の最新ダウンロード https://sourceforge.jp/projects/ntemacsjp/files/

前スレ http://pc11.2ch.net/test/read.cgi/unix/1226188082/
CVS先端: cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co emacs
0228名無しさん@お腹いっぱい。2009/02/17(火) 00:06:21
>>227
Emacsはコード自体もBeautifulだよ。
0229名無しさん@お腹いっぱい。2009/02/17(火) 02:20:03
要するにEmacs23のフォントまわりは腐ってるってことでしょ?
早過ぎたんだ!
0230名無しさん@お腹いっぱい。2009/02/17(火) 02:23:48
いや、遅すぎたんだ
0231名無しさん@お腹いっぱい。2009/02/17(火) 02:43:08
どっちやねん!
0232名無しさん@お腹いっぱい。2009/02/17(火) 05:07:42
おはようございます
0233名無しさん@お腹いっぱい。2009/02/17(火) 05:45:13
dabbrevの補完候補を現在バッファからは探さないようにする設定ってありますか?
0234名無しさん@お腹いっぱい。2009/02/17(火) 10:26:03
Emacs-nox11を使ってる友人の画面を見た事が有るのですが
CUI上にひょうじされている画面上の
File Edit Options Buffers
とかのメニューは何のために有るのでしょうか?
使えるのでしょうか?
0235名無しさん@お腹いっぱい。2009/02/17(火) 11:24:02
>>234
俺はGUIでもメニューは使わないけど、
Emacsが立ち上がってることが分かるように表示させてる。
0236名無しさん@お腹いっぱい。2009/02/17(火) 11:29:05
>>234
キーボードで操作できる。
0237名無しさん@お腹いっぱい。2009/02/17(火) 11:45:00
>>234
M-` で使えたと思う

>>235
普通はmode lineでわかるだろうし変わってるなw
0238名無しさん@お腹いっぱい。2009/02/17(火) 11:53:48
xterm-mouse-mode を使えば、一応マウスに反応する。
02392342009/02/17(火) 12:14:31
>>235-238
ありがとう御座います。
友人にも連絡がついたので聞いてみた所
たしかにF10などのキーでメニューにアクセスはできると教えてくれました。
ありがとう御座います。
0240名無しさん@お腹いっぱい。2009/02/17(火) 12:20:29
すいません、ご回答よろしくおねがいします。
Emacsでshellを立ち上げたときに下手をすると
バックスペースでそのままプロンプトを消してしますのですが、
通常のシェルと同じようにプロンプトが消えないようにするにはどのようにすればいいのでしょうか?
0241名無しさん@お腹いっぱい。2009/02/17(火) 12:25:42
そういうシェルモードを作る。出来たらここでアナウンスしてくれ。
0242名無しさん@お腹いっぱい。2009/02/17(火) 12:28:22
comint-prompt-read-only
0243名無しさん@お腹いっぱい。2009/02/17(火) 12:29:24
eshellというものを知りました。
eshellはプロンプトが消えないみたいですね。
今度ソースを読んでみたいと思います。
0244名無しさん@お腹いっぱい。2009/02/17(火) 12:31:26
>>243
> eshellはプロンプトが消えないみたいですね。

消したいの? じゃ、これで。

(setq eshell-prompt-function (lambda () (interactive) ""))

0245名無しさん@お腹いっぱい。2009/02/17(火) 12:37:51
消したいなんて言ってないだろ
日本語読めねーのかハゲ
0246名無しさん@お腹いっぱい。2009/02/17(火) 14:05:17
>>233
そんな設定は無い
他のバッファを対象にするかどうかの設定ならあるが、
カレントバッファは問答無用で使うよ
0247名無しさん@お腹いっぱい。2009/02/17(火) 14:16:29
>>245
そういう方法もあるってことだよ。
前頭葉があまり発達してなさそうだね君。
02482432009/02/17(火) 14:23:08
まあ、もめないでください。
プロンプトの消し方。
消さない方法、それぞれありがとう御座いました。
0249名無しさん@お腹いっぱい。2009/02/17(火) 15:23:11

 な に も め て ん だ ?

しかしママのおっぱいしか揉んだ事ない奴ら同士で
ある意味揉める事ができるとは画期的なファンクションだな・・・

んでマイコンの話しか?
0250名無しさん@お腹いっぱい。2009/02/17(火) 15:28:41
凍え死ぬかと思ったわ
0251名無しさん@お腹いっぱい。2009/02/17(火) 15:48:32
鬱病になるかと思ったわ
0252名無しさん@お腹いっぱい。2009/02/17(火) 15:51:37
>>246
なんとかなりませんか?
0253名無しさん@お腹いっぱい。2009/02/17(火) 19:39:43
お願いします。
Emacsのshell上で端末割り込みキーを入力するにはどのようにすればいいのでしょうか?
間違えて引数無しでperlを実行してしまい。なんの反応もなくなってしまいました。
0254名無しさん@お腹いっぱい。2009/02/17(火) 19:42:25
>>253
C-c
C-c
0255名無しさん@お腹いっぱい。2009/02/17(火) 19:43:02
>>253
C-d
0256名無しさん@お腹いっぱい。2009/02/17(火) 21:00:14
>>252
dabbrev--find-expansion に advice する、とかで可
0257名無しさん@お腹いっぱい。2009/02/17(火) 21:41:41
changelogモードって、いまいちだよね。
みんな、コードのメモはどうしてる?
0258名無しさん@お腹いっぱい。2009/02/17(火) 21:43:42
コードに書く。あとはchengelogで十分。
0259名無しさん@お腹いっぱい。2009/02/17(火) 23:25:43
日本語入力はscim-bridge-ja使ってます。key-chord.elの存在を知り、
fjキー同時押しでscimの日本語入力モードを起動したいのですが、
どのように設定すればいいでしょうか? 宜しくお願いします。
0260名無しさん@お腹いっぱい。2009/02/18(水) 02:14:44
Emacs長く使ってるけど、key-chord.elは知らなかった。この発想はなかったな。
まだまだ精進が足りないし、Emacsの奥の深さに敬服する。
0261名無しさん@お腹いっぱい。2009/02/18(水) 02:30:25
奥が深い症候群ktkr
0262irie2009/02/18(水) 02:38:05
>>259
↓これでトグルできると思いますけど。

(key-chord-define-global
"fj"
(lambda ()
(interactive)
(if scim-mode
(scim-dispatch-key-event scim-toggle-input-method-event))))

あー、GUI セットアップユーティリティーで SCIM をトグルするキーの
設定を変えている場合は、 `scim-toggle-input-method-event' の値を
変える必要があるかもしれません。
0263名無しさん@お腹いっぱい。2009/02/18(水) 03:32:20
key-chordはどういうわけか勝手に動かなくなるので使うのやめた
いったんoffにしてもっかいonにすると動くようになったけど
0264名無しさん@お腹いっぱい。2009/02/18(水) 03:58:17
>>252
てゆーかC-u 押してやったときの挙動ってそういうことじゃないの?
0265名無しさん@お腹いっぱい。2009/02/18(水) 08:39:31
>>256,264
ありがとうございます、おかげでvimの辞書補完っぽくするのがやっとできました
0266名無しさん@お腹いっぱい。2009/02/18(水) 09:39:27
>>262
ありがとうございます。キーはデフォルトのままなので、望み通り動作しました

>>263
日本語入力モードにすると動かなくことがあるようですね。
ttp://d.hatena.ne.jp/grandVin/20080917/1221653750
0267名無しさん@お腹いっぱい。2009/02/18(水) 22:36:06
Emacs22 で、-nw で起動して C-x 3 すると真ん中のセパレーターに背景色が付くようになったのですが、
これを Emacs21 のように背景色無しに設定するにはどうしたらいいでしょうか。
0268名無しさん@お腹いっぱい。2009/02/18(水) 22:59:22
list-faces-display して自己解決しました。
0269名無しさん@お腹いっぱい。2009/02/19(木) 06:46:01
C-x C-bでバッファ一覧が一画面に収まらないので
グループ分けすることできないでしょうか
0270名無しさん@お腹いっぱい。2009/02/19(木) 07:18:07
ttp://www.jurta.org/en/emacs/ee
これ入れてみるとか
0271名無しさん@お腹いっぱい。2009/02/19(木) 08:01:18
文字単位でフォントが指定できるなんて、
やっぱりemacsはすごいなー。
0272名無しさん@お腹いっぱい。2009/02/19(木) 09:59:44
改行コードのご認識について質問です。

CentOS上のEmacs22でPHPソースの編集をしているのですが、なぜか改行コード
の誤判定が多いのです。正しくは、mule-utf-8-dos なのですが(元々、
Windows 上で作成されたソース)、なぜか mule-utf-8 と判定されて、行末に
「^M 」が並ぶことになり、ソースを開くたびに C-x RET C mule-utf-8-dos
C-x C-v を繰り返しております。

誤判定が起こりやすい理由と対策をご存知の方がおられましたら、教えていた
だけないでしょうか?

ちなみに同じソースをSamba経由でxyzzyで開くと、誤判定は起こりません。
0273名無しさん@お腹いっぱい。2009/02/19(木) 10:17:44
1行目を訂正
×ご認識 → ○誤認識
0274名無しさん@お腹いっぱい。2009/02/19(木) 10:34:38
src/coding.cのdetect_eof_type()/detect_eof()にあるとおり、
混在していると-unixになります。

grep -v '^M$' filename

で確認してみてください。
0275名無しさん@お腹いっぱい。2009/02/19(木) 12:07:41
>>274
アドバイス、ありがとうございます。

> grep -v '^M$' filename
実行してみたのですが、ファイルの全行が画面に出力されてしまいました。
なにがまずいんだろう...。
0276名無しさん@お腹いっぱい。2009/02/19(木) 13:02:58
ホントに全行?
wc -l とかして比較してみそ。
0277名無しさん@お腹いっぱい。2009/02/19(木) 13:10:36
ホントに全行です。どちらも4376行。
そもそも、編集ウィンドウを見渡す限り、どの行末にも ^M がついているのに、
大量に画面出力されること自体、妙な話ではありますが。
0278名無しさん@お腹いっぱい。2009/02/19(木) 13:29:41
単に全ての行の終わりに \r しかないんじゃないのか?
DOSだと \r\n だが、Unixは \n。
\n が見つからなけりゃ一行になる。
0279名無しさん@お腹いっぱい。2009/02/19(木) 14:03:50
'^M' が行頭のMと認識されているような気がwww

\r の '^M' を入力するには eshell 上で C-q C-m する
0280名無しさん@お腹いっぱい。2009/02/19(木) 16:01:44
>>279
> '^M' が行頭のMと認識されているような気がwww
大正解...。普通に「^」(ハット)のキーを押してました...。

> \r の '^M' を入力するには eshell 上で C-q C-m する
今度はうまく行きました。ありがとうございます。
しかし、grep -v '^M$'では一行も出力されませんでした。
やっぱり ^M は全行にあるようです。
0281名無しさん@お腹いっぱい。2009/02/19(木) 16:33:17
$ cat test.el
(setq initial-frame-alist
'((font . "Sans") (background-color . "white")))
(setq default-frame-alist '((font . "Monospace")))
$ emacs -Q --load test.el
するとフォントがMonospaceになるんだけど、バグかな。
0282名無しさん@お腹いっぱい。2009/02/19(木) 17:39:54
>>280
まさかとおもうけれど、
M-x describe-coding-system
すると、*-unixのオンパレードで、
> 誤判定が多いのです。
いつも*-unixになっているってことは…

0283名無しさん@お腹いっぱい。2009/02/19(木) 19:09:31
>>282
ありがとうございます。そういうことはないようです。
0284名無しさん@お腹いっぱい。2009/02/19(木) 21:22:27
>>283

(setq auto-coding-functions nil)
ってするとどう?
0285名無しさん@お腹いっぱい。2009/02/19(木) 21:39:03
>>284
ありがとうございます。やはり誤判定が続きます...。
0286名無しさん@お腹いっぱい。2009/02/19(木) 22:31:22
だれでも再現できるようにファイル晒しませんか
0287名無しさん@お腹いっぱい。2009/02/19(木) 22:34:51
unix2dos すれば。
0288名無しさん@お腹いっぱい。2009/02/19(木) 22:39:56
emacs -q で起動して開けば、ちゃんと表示できないか?
0289名無しさん@お腹いっぱい。2009/02/19(木) 23:38:27
初歩的な質問ですが、
C-kではカーソル位置からの削除ですが、viのddのように1行を削除するにはどうやるのでしょうか?
0290名無しさん@お腹いっぱい。2009/02/19(木) 23:51:11
>>289
C-a C-k とするのが普通だと思うよ。
0291名無しさん@お腹いっぱい。2009/02/19(木) 23:53:16
emacs wikiより

(defun kill-whole-line (&optional numlines)
"One line is deleted wherever there is a cursor."
(interactive "p")
(setq pos (current-column))
(beginning-of-line)
(kill-line numlines)
(move-to-column pos))

(define-key esc-map "k" 'kill-whole-line)

でM-kで1行削除
0292名無しさん@お腹いっぱい。2009/02/19(木) 23:57:16
Meadow/Emacs memoだったかも…
0293名無しさん@お腹いっぱい。2009/02/20(金) 00:04:29
>>291
kill-whole-lineはEmacs22からあるよ。
Ctrl-Shift-BackSpace に割り当てられていた。
0294名無しさん@お腹いっぱい。2009/02/20(金) 00:11:29
うぉ、それは知らなかったぜ
0295名無しさん@お腹いっぱい。2009/02/20(金) 11:05:44
>>285
読んでるソースの中に coding-system の指定が埋まってるとかいう
オチではないよね。
0296名無しさん@お腹いっぱい。2009/02/20(金) 11:45:40
>>293
うっかり、Ctrl+Alt+Backspaceと間違えそう。危険すぎる。
0297名無しさん@お腹いっぱい。2009/02/20(金) 12:36:32
>>286
> だれでも再現できるようにファイル晒しませんか
すみません、ソース全体は、守秘義務でさらせません。
時間があったら、現象の再現するサブセットを作るべきなのですが...。

>>287
> unix2dos すれば。
このツールは知りませんでした。ありがとうございます。
適用したところ、当該ファイルの誤判定はなくなりました!

しかし不思議なのは、svn diff を取っても、差が何もないことです。
いったい何を間違えたんだろう??
まさか.svnディレクトリの中まで修正してしまった?!
まあ解決したからいいのかな...。

ちなみにほかにも誤判定するファイルがあるのですが、それははっきりと改行
コードが混在していて、 unix2dos後に svn diff は差を示しました。

>>288
> emacs -q で起動して開けば、ちゃんと表示できないか?
ありがとうございます。試してみましたが、あまり関係なかったようです。

>>295
> 読んでるソースの中に coding-system の指定が埋まってるとかいう
> オチではないよね。
ありがとうございます。マジックコメントはありません。このプロジェクトは
たぶん、ほかにEmacsを使っている人がいませんので。


とりあえず以上です。皆さん、たいへんお世話になりました。
0298名無しさん@お腹いっぱい。2009/02/20(金) 13:01:32
>>296
Xorg.confのServerFlagsセクションにDontZapオプションを追加すればいいらしいよ
02992892009/02/20(金) 14:21:33
>>290-293
ありがとうございます。おとなしくC-a C-kにします
0300名無しさん@お腹いっぱい。2009/02/20(金) 15:37:20
emacs-noxとemacs -nwって全く同じですか?
0301名無しさん@お腹いっぱい。2009/02/20(金) 15:53:42
noxはX11ライブラリが無くても立ち上がる。
0302名無しさん@お腹いっぱい。2009/02/20(金) 16:24:58
emacsってすげなー
Putty on Linuxから日本語入力できるんだな

3年計画ぐらいでWindowsを仮想化していくぞ
0303名無しさん@お腹いっぱい。2009/02/20(金) 17:39:39
OS: Debian lenny/stable
emacs: GNU Emacs 22.2.1 (i486-pc-linux-gnu, GTK+ Version 2.12.11)

lenny が stable になったのを機会に emacs21 から emacs22 に移行
前と同じ動作をするように .emacs 編集中
色々よくわからない

一例
これまで redo.el という lisp を
~/elisp/redo.el
において

(add-to-list 'load-path "~/elisp")
(require 'redo)
(global-set-key "\C-z" 'redo)

としていたのですが、これが上手く働かない
Describe key (<f1> c) Ctrl z
と打っても
C-z runs the command iconify-or-deiconify-frame
と返されて global set key が反映されていない模様
emacs21 と emacs22 では .emacs の書き方が大きく
変わったのでしうょか?
0304名無しさん@お腹いっぱい。2009/02/20(金) 17:41:28
>>302
C-\とかを通すのは一工夫必要だけどね・・・
03053032009/02/20(金) 18:05:08
自己レスです

どうも lisp ファイルの文字コードの問題らしいです
ロードする lisp ファイルの文字コードを utf-8 に変換して
保存したら、読み込むようになったっぽいです

起動時の窓の大きさ指定が反映されないとか
まだいろいろありますが
とりあえず検証を続けます
0306名無しさん@お腹いっぱい。2009/02/20(金) 21:23:32
>>304
一工夫、必要みたいですね・・・

そう言えば、この前、putty上で試したときに日本語は、飛んでいて、英語しか出力されていなかったわ
emacs上でpythonインタラクティブモードで文字コードをみると表示は、されないけど
入力は、されているみたいですね

puttyごった煮 for winってすごいんですね
0307名無しさん@お腹いっぱい。2009/02/20(金) 22:45:54
>>297
svn diff じゃなくて unix2dos 前後のファイルで diff とりゃ良かったのに。
03083032009/02/20(金) 22:51:44
結局素の GNU Emacs 22.2.1 にしました。
あとはフォントの設定なのですが、
日本語フォントが bold になってくれません。

フォントの設定を
~/elisp/emacs-fontsets.el に以下のように書いて

(if (eq window-system 'x)
(create-fontset-from-fontset-spec
(concat
"-*-fixed-bold-r-normal--*-*-*-*-*-*-fontset-shinogothibold,
ascii:-bitstream-bitstream vera sans mono-medium-r-normal-*-17-120-100-100-c-*-iso8859-1,
katakana-jisx0201:-shinonome-gothic-bold-r-normal--16-150-75-75-c-80-jisx0201.1976-0,
japanese-jisx0208:-shinonome-gothic-bold-r-normal--16-150-75-75-c-160-jisx0208.1990-0"
)))

.emacs で
(load "emacs-fontsets.el")
(setq default-frame-alist
'(font . "fontset-shinogothibold")
default-frame-alist))

ascii フォントは設定どおりになっているので
lisp ファイルは読み込めていると思うのですが、
なんで shinonome は bold になってくれないのでしょうか?

かれこれ 2 年以上、emacs21 を上記の設定で使っており、
フォントまわりはまったくいじってなかったので、
また改めてフォンとの設定についてググってます。
0309名無しさん@お腹いっぱい。2009/02/20(金) 23:21:44
emacs22 の create-fontset-from-fontset-spec って、まともに動くんだっけ?
0310名無しさん@お腹いっぱい。2009/02/20(金) 23:47:30
>>280
> しかし、grep -v '^M$'では一行も出力されませんでした。
> やっぱり ^M は全行にあるようです。

これちゃんと行数確認できてなかっただろw
03113032009/02/21(土) 00:46:35
>>309
動かないんですか?
代わりの呪文があったら教えていただきたいです。

emacs-snapshot も入れて色々試しています。
アンチエイリアスが効いてなかなか美しいのですが、
いかんせん日本語入力が上手く行きません。
Anthy を使えばできないこともないのですが、
どうしても使いたい wnn7egg は Debian の snapshot だと
利用できないそうで・・・。
ubuntu の emacs-snapshot だと利用できるようなのですが、
そのうち Debian の方でも対応してくれるものなのでしょうか?
よくわかりません。
0312名無しさん@お腹いっぱい。2009/02/21(土) 01:24:28
>>311
とりあえずこれでどうかな?

(let* ((name "303")
(fontset-name (concat "fontset-" name)))
(create-fontset-from-ascii-font
"-Shinonome-Gothic-*-*-*--16-*-*-*-*-*-ISO8859-1" nil name)
(mapcar '(lambda (alist)
(set-fontset-font fontset-name (car alist) (cdr alist)))
'(
(katakana-jisx0201 . "-Shinonome-Gothic-Medium-*-*--16-*-*-*-*-*-JISX0201.1976-0")
(japanese-jisx0208 . "-Shinonome-Gothic-Medium-*-*--16-*-*-*-*-*-JISX0208.1990-0"))))

で、うまくいったら、フォント名のところを変えてみて。
0313名無しさん@お腹いっぱい。2009/02/21(土) 01:45:53
補足。↑のでだいたいわかると思うけど、
shnm8x16a.bdf shnm8x16ab.bdf shnm8x16r.bdf shnm8x16rb.bdf shnmk16.bdf shnmk16b.bdf
の 6 つのファイルがあることを前提にしている。
無いなら、捜してきてね。
0314名無しさん@お腹いっぱい。2009/02/21(土) 01:51:23
>>313
どうもありがとうございます。

検索したりなんだりでもう疲れてしまったので、
今日はもう寝てしまいますが、明日さっそくやってみることにします。
0315名無しさん@お腹いっぱい。2009/02/21(土) 14:07:14
初歩的な質問なんですが、Emacsで何万行もあるコード群を扱うことってできますか?
0316名無しさん@お腹いっぱい。2009/02/21(土) 14:14:12
>>315
できます。数万行なんて、普通のemacs使いではザラです。
0317名無しさん@お腹いっぱい。2009/02/21(土) 14:21:54
ってかあんまり行数がいくら以上だと使えないなんていうエディタはあんまりないよな
0318名無しさん@お腹いっぱい。2009/02/21(土) 14:24:55
「あんまり」ってか、そんなのみたことない。
0319名無しさん@お腹いっぱい。2009/02/21(土) 14:30:07
ですがfont-lockとかcolun-number-modeを使ってる状態で一行に数万文字とかいうのを扱うと色々とヤバいことになります
0320名無しさん@お腹いっぱい。2009/02/21(土) 14:43:28
>>316
クラスが複雑になってきたりとかでも大丈夫ですか?
マクロも大量にあるようなので、熟練すればIDE並みのことができるということですか?
0321名無しさん@お腹いっぱい。2009/02/21(土) 14:47:16
出た!! 「マクロ」出た!!
0322名無しさん@お腹いっぱい。2009/02/21(土) 14:48:48
semanticという糞ライブラリベースのコードブラウザしか無いのでIDE並みには無理です
0323名無しさん@お腹いっぱい。2009/02/21(土) 14:53:01
C++のコードの分析については
VS>Eclipse>>(産廃の壁)>>semantic with ecb
です
0324名無しさん@お腹いっぱい。2009/02/21(土) 15:24:15
>>323
ということはやはり、このスレの熟練者の方もある程度以上の規模ではVS等のIDEを使う、ということですか?
0325名無しさん@お腹いっぱい。2009/02/21(土) 15:33:06
>>324
プロジェクトによるだろ。
例えば、同じ3Dゲーム開発などのチームプロジェクトではIDEを使ったほうがいいだろう。

ただ、大半の開発ではIDE無しで十分。
それに、IDEに頼らずに、自分でコマンドやelispで開発効率を上げる技と磨いていった方が
後々役に立つ。

俺はどんなプロジェクトでもIDEは使わない。
関数ジャンプはetags/grepで十分。変換もsed/awk/perlでok。
0326名無しさん@お腹いっぱい。2009/02/21(土) 15:37:54
VCなとこでもIDE使わないの?
ソース修正はemacsでコンパイルはIDEとか使い分けないの?
0327名無しさん@お腹いっぱい。2009/02/21(土) 15:38:45
むしろEmacsもIDEです
■ このスレッドは過去ログ倉庫に格納されています