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

Emacs part 27

■ このスレッドは過去ログ倉庫に格納されています
0001Zeno2008/11/09(日) 08:48:02
諸君、ここはかの有名な最強の汎用環境/エディタ、「Emacs」のスレッドである!

スレッドルールは以下の通り:
* 初心者にやさしく接すること
* Emacsユーザーとの仲間意識をしっかり持って、馴れ合いを怠らないこと
* このスレでのコミュニケーションを前スレ以上に活発にすること (用がなくとも、毎日の書き込みが理想)
* 部外者/非Emacsユーザーの書き込みも可。但し、女性の書き込みは場の雰囲気を乱すので不可
* 自分で書いた便利なコード/アイディアは他人とシェアしようと試みること
        _/l__
     /   く
    | ´ω`  | ぐにゅう emacs
     |    C='|
* Emacs スレッドのマスコットキャラである「ぐにゅう君」 (↑のAA) と
吾 (Zeno ◆5nZQbNmQPs) への挨拶も忘れないように!

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 リリース (22.2) のダウンロード http://ftp.gnu.org/pub/gnu/emacs/emacs-22.2.tar.gz
Windows用 NTEmacs の最新ダウンロード https://sourceforge.jp/projects/ntemacsjp/files/

前スレ http://pc11.2ch.net/test/read.cgi/unix/1218093847/
CVS先端: cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co emacs

Emacs は世界を救う!
0374名無しさん@お腹いっぱい。2008/12/07(日) 19:19:37
様々なプログラミング言語を使用することができて、
その他の(マイナー)モードも多彩に操ることができて、
それら其々に対し自分用のフックやらアドバイスやらを
加えていったら、簡単に3500行なんか越えると思うけどな。
>>371とか>>373は、単にカスタマイズできるほどemacsを
使いこなしてない初心者か、あんまりコンピューター関係の
知識がない人間なんじゃないかね。 どっちにしても自慢する
ようなことじゃないわな。
0375名無しさん@お腹いっぱい。2008/12/07(日) 19:23:36



   な
   な
   こ
0376名無しさん@お腹いっぱい。2008/12/07(日) 20:11:48
ぼくは182行。10年前にはやっぱり3000行くらいあった。あれは一種の病気だよな。
0377名無しさん@お腹いっぱい。2008/12/07(日) 20:28:52
知りたての頃はところ構わずやりまくるよな。
0378名無しさん@お腹いっぱい。2008/12/07(日) 21:51:10
>374
分割しないの?
変更の入らないところは分割すれば見通し良くなるし
.emacs.el変更時のバイトコンパイルも早くなるやん
0379名無しさん@お腹いっぱい。2008/12/07(日) 22:54:06
ほかに3500行の猛者があらわれないし
もう無理なんじゃね?お大事に。

0380名無しさん@お腹いっぱい。2008/12/07(日) 22:55:36
>>378
>>363
0381名無しさん@お腹いっぱい。2008/12/07(日) 23:38:41
初級者:200行以下
中級者:200行〜5000行
上級者:5000行〜10000行
超上級者:0行。Emacsにコミット
0382名無しさん@お腹いっぱい。2008/12/08(月) 01:17:32
最近とみに、Emacsのデフォルトはどっちかというと初心者さん向けに
振れてきてるけどねえ。
0383名無しさん@お腹いっぱい。2008/12/08(月) 02:14:23
0行だとnavi2chもつかえないじゃないかー
0384名無しさん@お腹いっぱい。2008/12/08(月) 02:26:52
数えてみたら1500行越えてて,自分でびっくり
でも7割ぐらいコピペかもしれん
まともにelisp勉強したこともなくてmode作ったりするような知識もないし何もアドバイスできないけどね

自分はこんなとこに書き込みしてないでelisp勉強してたほうが役に立つな,うん…
0385名無しさん@お腹いっぱい。2008/12/08(月) 03:02:47
すべて、customizeで済ましてる人とか居るのかな?
それはそれで、すごいな。
0386名無しさん@お腹いっぱい。2008/12/08(月) 07:57:36
customize も .emacs に書かれるお。
0387名無しさん@お腹いっぱい。2008/12/08(月) 16:22:31
約6000行かな
これでも自作関数とか使って圧縮してるんだが…
環境依存を吸収するような設定が1000行ぐらいあるのが原因か
dumpも考えたけどフレーム関連の挙動が怪しすぎるので使ってない
0388名無しさん@お腹いっぱい。2008/12/08(月) 17:18:31
CentOS 上の emacs 22.2.1 + mew 6.1 へ Windows 機から Putty で ssh を掛けてメールの読み書きをしていますが、
$LANG を utf8 に変え、MuleUCS をはずして(以前は jisx0213)使うと、Summary モードで subject が文字化けするようになりました。
まれに本文(body 部分)も化けます。
さらに、(Mew じゃなくても)ダブルバイトの記号類(〜や■など)が書かれたテキストを表示しようとすると表示が乱れます。
解決策をご存知の方、お教えください。
また、板違いでしたら、しかるべきところへ誘導願えると幸いです。
0389名無しさん@お腹いっぱい。2008/12/08(月) 17:26:54
>>388
> さらに、(Mew じゃなくても)ダブルバイトの記号類(〜や■など)が書かれたテキストを表示しようとすると表示が乱れます。
「曖昧な文字幅」でぐぐると何か出てくるかも。
03903882008/12/08(月) 17:48:22
>>389
ありがとうございます!

ご指摘いただいたようにググッてみました。
なるほど、根っこは同じ問題のようですね。
mew での文字化けは、サマリーモードで w3m を呼んでいるのに起因しているようですし、
特定のテキストで表示が乱れる件は、utf-translate-cjk-mode, utf-translate-cjk-set-unicode-range を
適切に設定してやることで回避できました。
しかし、相変わらず emacs は敷居が高いなー。修行します。
0391名無しさん@お腹いっぱい。2008/12/08(月) 21:04:28
eldoc とか apropos とかで skk の変数の説明だけが文字化けするのがウザイ。
どうにかならんかな?
0392名無しさん@お腹いっぱい。2008/12/09(火) 01:02:53
なりますん
0393名無しさん@お腹いっぱい。2008/12/09(火) 02:13:10
(..)φ
0394名無しさん@お腹いっぱい。2008/12/09(火) 05:53:37
emacs って、関数や変数の定義位置には飛べるのに、なんで
adviceの定義位置には飛べないの?
0395名無しさん@お腹いっぱい。2008/12/09(火) 10:29:13
>>211
xyz...
0396名無しさん@お腹いっぱい。2008/12/09(火) 10:35:19
xyzzy と言いたいのか?
あれは「Emacsとは全然関係ないエディタ」とは言えないだろ。
0397名無しさん@お腹いっぱい。2008/12/09(火) 10:41:36
eamcs22でpython.el使ってるのですが
emacs code.py

C-c C-c
の後*python*のバッファーが自動で表示されないのはバグですか?

emacs23に乗り換えれば治りますか?

0398名無しさん@お腹いっぱい。2008/12/09(火) 14:18:26
Emacsではどんなソースが作成できますか?
0399名無しさん@お腹いっぱい。2008/12/09(火) 16:21:33
WindowsはMS-DOSの一アプリだった。
Emacsはshの一アプリだった。
歴史が一歩違えばEmacsがWindowsのようなOSに、
ストールマンがゲイツのようになっていたのか…

そしてこのスレは「Windows part 27」
諸君、ここはかの有名な最強の汎用環境/エディタ、「Windows」のスレッドである!

ということになっていたわけだ。
0400名無しさん@お腹いっぱい。2008/12/09(火) 16:28:12
Lispマシンですねわかります
0401名無しさん@お腹いっぱい。2008/12/09(火) 17:36:51
おまえはあまりにもわかりすぎる
0402名無しさん@お腹いっぱい。2008/12/09(火) 19:03:36
lispがCやJavaを駆逐して主流になってた
ぐらいありえんifだな
0403名無しさん@お腹いっぱい。2008/12/09(火) 22:01:25
必ず最後にelは勝つ
0404名無しさん@お腹いっぱい。2008/12/09(火) 23:24:57
>>399
Emacsの動いていたTECOは、
shのあるシステム上のエディタじゃないぞ。
0405名無しさん@お腹いっぱい。2008/12/09(火) 23:31:49
LispのがCより古いし
「shの一アプリ」という表現がそもそも変なわけだが
まあ細かいことはどうでもいいだろ
0406名無しさん@お腹いっぱい。2008/12/10(水) 00:22:20
CでプログラミングしてるとLispの凄さが分かる。
WindowsもLisp実装ならここまで叩かれなかったろうに。
Visual Lispとか出して。
0407名無しさん@お腹いっぱい。2008/12/10(水) 01:33:40
ゲイツはアセンブラとBasicしか理解できないんだよ。
0408名無しさん@お腹いっぱい。2008/12/10(水) 14:51:42
ゲイツが学生時代にLispにはまってれば…
0409名無しさん@お腹いっぱい。2008/12/10(水) 15:24:47
Lips#
0410名無しさん@お腹いっぱい。2008/12/10(水) 16:13:48
>>408
> ゲイツが学生時代にLispにはまってれば…

当時の Lisp使いは理論から入った人に多かった。
ゲイツは計算理論は全然やってなかったみたいだし、
そもそも、物事の美しさを理解できないタイプであるゲイツは、
Lispを学んでたとしても好きになっていただろうかは疑問だ。
0411名無しさん@お腹いっぱい。2008/12/10(水) 18:28:49
emacs でバージョン管理してる人は
svnですか?
git?
cvs?


dsvnでsf.netにアクセスしたいのでパスワードどこに記載すればいいんだ
0412名無しさん@お腹いっぱい。2008/12/10(水) 19:15:07
>>411
実は自分もそれを知りたかった。人の建てたsvnサーバがあるんだけど、初回に
コマンドラインからアクセス
svn checkout --username *** --password *** ...
したら、その後はdsvn.elでも何も指定なしでアクセスできてる。不思議。

ってそれはEmacs関係ないか。
0413名無しさん@お腹いっぱい。2008/12/10(水) 20:16:56
emacs 21.3.1のcperl-modeを使ってるんですけど、
End of `/ ... /' string/RE not found: (scan-error Unbalanced parentheses 2381 8115)
とミニバッファにずっと表示されます
= split(/<>/);
のあたりから色分けがうまくできてないみたいです
どうやったら直せますか?
0414名無しさん@お腹いっぱい。2008/12/10(水) 21:24:16
>>413
mode-info を使っているんなら、バージョンアップするといい。
0415名無しさん@お腹いっぱい。2008/12/11(木) 01:39:50
>>411
やっぱ Mercurial だなー
仕事では Subverison
0416名無しさん@お腹いっぱい。2008/12/11(木) 02:24:08
分散型は政情安定してなさそうだから出来る限り使いたくないなあ。
右往左往するのしんどいし。その点svnは使ってて安心感があるんだが…
0417名無しさん@お腹いっぱい。2008/12/11(木) 05:20:54
さすがにgitは廃れないだろう
git-svnもあるからいろいろ安心だし。
0418名無しさん@お腹いっぱい。2008/12/11(木) 10:52:49
howmとoutline-mode
どっちが便利?
0419名無しさん@お腹いっぱい。2008/12/11(木) 11:15:25
howmのバッファはoutline-modeなんだが
0420名無しさん@お腹いっぱい。2008/12/11(木) 12:34:09
orz-mode
0421名無しさん@お腹いっぱい。2008/12/11(木) 12:41:24
アッーモードだな
04223602008/12/12(金) 08:57:59
2888行まで凝縮できた。
コメント抜きだと1832行。

isearch-mode 関係を整理すれば 2650-2700 ぐらいまでいけそう。
0423名無しさん@お腹いっぱい。2008/12/12(金) 14:50:32
俺のEmacs、なんでこんなに大きいのかと思ったら
コメントで自作小説のアイデアメモってた…
0424名無しさん@お腹いっぱい。2008/12/12(金) 22:32:15
Emacs 23のcheck-coding-systems-regionがtを返してくる場合があるのだけど、
docstringにそんなこと書いてないよね?

> if (XINT (end) - XINT (start) == end_byte - start_byte)
> return Qt;

その範囲が全部1バイトで表現される文字(つまりASCII?)ということだと思うのだけど
それらを包含しない文字コードはないという想定なのだろうが
それにしたってtではなくnilを返すべきじゃないのかしらん。
とりあえず手元ではtだったらnilにするようアドバイスをかけちゃった。
0425名無しさん@お腹いっぱい。2008/12/13(土) 18:44:40
お前は関数に上から目線でアドバイスできるほど偉いのか?
0426名無しさん@お腹いっぱい。2008/12/13(土) 18:49:15
PDIC辞書ひきプログラム pdicv を Linux上のEmacs で使っている方、おられますか?

EmacsからPDIC辞書をひくプログラムは他にもありますか?
0427名無しさん@お腹いっぱい。2008/12/13(土) 18:55:38
>>418
howm-mode も outline-mode もマイナーモード。
メインモードは目的によりけり。
0428名無しさん@お腹いっぱい。2008/12/14(日) 02:49:32
おれ、Emacsっぽい新しいエディタつくるよ。
弄りすぎてモード制がボトルネックになってきたから
全部ハードコーディングで実装して快適に暮らすんだ。
0429名無しさん@お腹いっぱい。2008/12/14(日) 04:07:11
その後428を見たものはいない……
0430名無しさん@お腹いっぱい。2008/12/14(日) 04:16:39
>>428
がんばって!!
0431名無しさん@お腹いっぱい。2008/12/14(日) 15:57:24
>>428
できたら公開してね
0432名無しさん@お腹いっぱい。2008/12/14(日) 16:26:31
そんなのよりEmacsのネイティブコンパイラ作ってよ。
0433名無しさん@お腹いっぱい。2008/12/14(日) 16:33:22
;; a)
(setq trees '(maple oak pine birch))
(setcdr (nthcdr 2 trees) nil)
trees
(maple oak pine)
;; b)
(setq trees '(maple oak pine birch))
(setcar (nthcdr 3 trees) nil)
trees
(maple oak pine nil)

a) の場合は リストが短かくなるのに対して、
b) 方法は リストの最後が nil になるのはなぜですか?
0434名無しさん@お腹いっぱい。2008/12/14(日) 16:55:12
consセルとlistの関係がわかってないからじゃない?
0435名無しさん@お腹いっぱい。2008/12/14(日) 16:58:31
google:ドット対記法
0436名無しさん@お腹いっぱい。2008/12/14(日) 18:06:05
>>433は釣りか宿題じゃないのかね。
consセルを全く理解していない人はそもそもいきなりリストの途中へのsetcarとsetcdrを
比較して悩んだりしないだろ。
あるいは理解していないことがわかっているならまずモデルの理解をしようとするのが自然で
そのための疑問でなく応用問題の答をもとめる質問をいきなりしたりはすまい。
0437名無しさん@お腹いっぱい。2008/12/14(日) 18:55:04
かー!くだーねえな!
0438名無しさん@お腹いっぱい。2008/12/14(日) 19:53:32
433はたてよみすると「説得、説得だー!木々」と読めるので
環境保護団体が森林保護のために仕組んだ暗号だと思うんだ。
0439名無しさん@お腹いっぱい。2008/12/14(日) 21:18:53
>>438
おまえ消されるぞ
0440名無しさん@お腹いっぱい。2008/12/14(日) 21:43:43
その後438を見たものはいない……
0441名無しさん@お腹いっぱい。2008/12/14(日) 21:45:31
実は438は最初から存在しない
04423602008/12/15(月) 15:11:29
3ヶ月振りにcvs HEADのemacsをビルドして使ってみた。
emacsはビルド中も比較的安心して見ていられる。
全体的な速度が以前のよりも上がったようだ。
個人用のパッケージも問題なく動いているよう。
0443名無しさん@お腹いっぱい。2008/12/15(月) 22:20:36
>>442
フォントの設定も楽になったしね
0444名無しさん@お腹いっぱい。2008/12/16(火) 00:05:23
それフォント?
0445名無しさん@お腹いっぱい。2008/12/16(火) 00:52:47
>>444
爆笑。
0446名無しさん@お腹いっぱい。2008/12/16(火) 05:39:43
そういえばruby-modeがいつの間にか標準のlangmodeになってるんだな
0447名無しさん@お腹いっぱい。2008/12/16(火) 05:50:11
progmodeね…
0448名無しさん@お腹いっぱい。2008/12/16(火) 08:38:08
haskell-modeも入ってくれないかなー
0449名無しさん@お腹いっぱい。2008/12/16(火) 09:28:30
>>444は誰かがフォントネタを振るのを今か今かと待ってたんだろうなw
0450名無しさん@お腹いっぱい。2008/12/16(火) 12:05:29
>>428
stanley のoptimizeコンパイルをしてくれるemas...
0451名無しさん@お腹いっぱい。2008/12/16(火) 13:10:01
emacsは"できる"人が使うと、異常にできる子になる。
0452名無しさん@お腹いっぱい。2008/12/16(火) 16:28:23
おっと、おれを誉め称えるのはそこまでだ。
0453名無しさん@お腹いっぱい。2008/12/16(火) 17:48:04
おいおい、まるで俺のEmacsがダメな子みたいなこと言わないでくれ
俺はまるでダメだけどEmacsに罪はねーよ
0454sage2008/12/16(火) 20:59:36
現在emacs(22.3.6)でCのソースを書いています。
emacsは自動でインデントを揃えてくれ、とても重宝しているのですが、更に欲を言うと
a=b+c;

a = b + c;
のようにフォーマットをしてくれる機能(またはelisp?)はないでしょうか?
個人的にはVisual Studioの整形みたいなものを想像しています。
Uncrustifyのような細かい設定まで出来れば完璧です。
わかりにくい文章で申し訳ありませんが、よろしくお願い致します。
0455名無しさん@お腹いっぱい。2008/12/17(水) 13:13:39
どちらかというとコーディング規約だからねえ。それ。
0456名無しさん@お腹いっぱい。2008/12/17(水) 14:12:51
>>454
行内で式が完結していれば、
(lambda ()
(interactive)
(shell-command-on-region (beginning-of-line) (end-of-line) "indent" t t)
(command-execute "\t"))
;; region指定あれば優先した方がいいかな
0457名無しさん@お腹いっぱい。2008/12/17(水) 15:56:02
ダイナミックスコープは糞
たまに変数名が衝突してわかりにくいバグが発生する
0458名無しさん@お腹いっぱい。2008/12/17(水) 16:09:16
Common Lispのようにスペシャル変数だけdefparameter宣言するとかすりゃいいんだけどな。
0459名無しさん@お腹いっぱい。2008/12/17(水) 17:01:05
しかし、elispがまともになるのよりも後発の関数型言語による
emacs replacementの完成の方が速そうな勢いだものな…
0460名無しさん@お腹いっぱい。2008/12/17(水) 17:15:54
>>457
またお前か。うんざりだ。もうemacs使うなよ。
04614542008/12/17(水) 17:59:20
みなさんレスありがとうございます。
>>456
.emacs内にそのまま記述してみたのですが、いまいちよく分かりませんでした。
何か実行する手順みたいなのがあるのでしょうか??
何も分かって無くてすみません^^;
0462ms406tar.ms.u-tokyo.ac.jp 名無しさん@お腹いっぱい。2008/12/17(水) 22:04:23
>>461
.emacsには
(defun my-c-indent (rstart rend)
"Format region using the shell command \"indent\" (C program formatter). If the mark is not active, operate on the current line."
(interactive "*r")
(unless mark-active
(beginning-of-line) (setq rstart (point))
(end-of-line) (setq rend (point))
)
(shell-command-on-region rstart rend "indent" t t)
(command-execute "\t")
)

のように書いて、成形したい行にカーソルを置くかリージョン選択して
M-x my-c-indent
とやればいいのではなかろうか。
04634542008/12/17(水) 23:12:38
>>462
レスありがとうございます。
教えて頂いた通り、以下をリージョンを選択後、M-x my-c-indentを実行した結果、

#include<stdio.h>
main(){
int a,b,c;
a=b+c;
}



/bin/bash: indent: command not found

という文字列に置き換わってしまいました。
えっと、これは"indent"の部分を何かフォーマットを行ってくれるような外部プログラムに置き換えるのでしょうか・・・?
0464名無しさん@お腹いっぱい。2008/12/17(水) 23:48:23
( ゚д゚)ポカーン
04654622008/12/17(水) 23:56:01
>>463
そしたらGNU indentをインスコしないといかんね。ftp.gnu.orgから拾ってくればいいはずだけど、どうやら2.2.9はソースをちこっといじる(indent.hの100行目をコメントアウト)必要があるみたいだ。
04664542008/12/18(木) 16:00:28
おおおおおお!SUGEEEEEE
きっと後はindentの設定をいじれば、自分の好きなコーディング規約に出来るんですね!
聞いてばっかりで申し訳ないんですが、
;や}を入力してステートメントやブロックの入力を終了したとき、また貼り付けを行ったときなどにオートフォーマットをさせることは可能でしょうか?
それとインデントを揃えるコマンドであるC-M-\をこのmy-c-indentに置き換えたりすることもできれば嬉しいのですが。。。
04674622008/12/18(木) 21:12:16
>>466
上のmy-c-indentの後でこう書けばいいかな。C-M-\とセミコロンだけだが閉じ括弧は自分でやってみてくだされ。
(add-hook 'c-mode-common-hook
'(lambda ()
(define-key c-mode-base-map "\C-\M-\\" 'my-c-indent)
(define-key c-mode-base-map ";"
(lambda (arg) (interactive "*P")
;; use "indent" to format the line
(let ((start) (end))
(beginning-of-line) (setq start (point))
(end-of-line) (setq end (point))
(shell-command-on-region start end "indent" t t)
)
;; default behavior for semicolon
(end-of-line) (c-electric-semi&comma arg)
;; eliminate an extra line comming from "indent" above
(c-electric-delete-forward arg)
)
)
)
)
ところで上のmy-c-..の (command-execute "\t")は(c-indent-command)のほうが良い
鴨。
0468名無しさん@お腹いっぱい。2008/12/18(木) 21:27:07
command-execute なんかあったのか、どこかで役に立ちそうだ
04694542008/12/18(木) 22:17:18
レスありがとうございます。行末でセミコロンを打ったとき感動しました!
'}'の時は対応パラグラフ内のフォーマッティングを考えているのですが、教えて頂いたdefine-key c-mode-base-map ";"の部分を単純に'}'へ変えただけでは当然一行しかフォーマッティングされずorz
(let ((start) (end))
(beginning-of-line) (setq start (point))
(end-of-line) (setq end (point))
(shell-command-on-region start end "indent" t t)
)
の部分を書き換えるのかなぁ等と思っているのですが。。。
ちなみにうまくやれば、
a+b+c+
d+e+f;
と数行に渡って式を書いた後のセミコロンで
a + b + c +
d + e + f;
のように複数行へ渡った場合のフォーマッティングもできるのでしょうか?
長文すみませんm(_ _)m

P.S.
C-M-\でのフォーマッティングは仰るとおり(command-execute "\t")を(c-indent-command)へ変えることでうまくできました^^
0470名無しさん@お腹いっぱい。2008/12/18(木) 22:44:19
よみづら。
まずはその投稿を整形すべきだな。
0471名無しさん@お腹いっぱい。2008/12/19(金) 00:25:03
M-! がうまく入力できません。
ESC ! や M-x shell-command でよいことは知っています。
Shift-Alt-1 では ! そのものが、Alt-Shift-1 では M-1 が入力されているようです。
これは私の環境のみのバグでしょうか?
0472名無しさん@お腹いっぱい。2008/12/19(金) 00:26:23
バグじゃなくて、あんたがそのように設定しているだけ。
0473名無しさん@お腹いっぱい。2008/12/19(金) 00:50:32
なんだと。
■ このスレッドは過去ログ倉庫に格納されています