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

Emacs Part 41

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2012/09/07(金) 18:10:22.94
前スレ

Emacs Part 40
http://toro.2ch.net/test/read.cgi/unix/1328958449/
0153名無しさん@お腹いっぱい。2012/09/24(月) 06:56:06.05
>>152 も実は Zeno
0154名無しさん@お腹いっぱい。2012/09/24(月) 07:39:53.75
>>151-153が全部Zeno
0155名無しさん@お腹いっぱい。2012/09/24(月) 13:14:23.35
キチガイってのは季節の変わり目に興奮して活発になる
0156名無しさん@お腹いっぱい。2012/09/24(月) 19:40:19.90
Eamcs 24.2 にしてから、migemoが検索はしてくれなくなりました。
ハイライトはしてくれるんですが…

24.2を使っている人で、同じ症状になった人いません?
0157名無しさん@お腹いっぱい。2012/09/25(火) 00:14:57.71
>>150
ありがとうございます。よくわかりました。
0158名無しさん@お腹いっぱい。2012/09/25(火) 09:30:57.00
編集を想定していないような読み取り専用になってるバッファで
self-insert-command をしたときに Buffer is read-only: ... がでるのがうっとおしいのですが
抑制することはできないんでしょうか?
0159名無しさん@お腹いっぱい。2012/09/25(火) 20:49:29.36
anythingのキーバインドを変えたいのですが、うまくいきません。
C-oをC-lにするには、以下ではだめでしょうか? ネットでは以下のように紹介しているとろが多々あるのですが..。
(define-key anything-map "\C-o" nil)
(define-key anything-map "\C-l" 'anything-next-source)
0160名無しさん@お腹いっぱい。2012/09/25(火) 22:44:34.84
{を打ち込むと勝手に}が入ります><

emacsは24.2で、*.csファイル用に
http://www.emacswiki.org/emacs/csharp-mode.el
を使っています。どうやったらこの邪魔な機能をオフにできますか?
0161名無しさん@お腹いっぱい。2012/09/25(火) 22:55:09.36
C-q { とか。
01621602012/09/25(火) 23:02:01.53
なんとか自己解決したんでメモ。
よく分からずにテケトーに対処したので、まずい点があったら教えてください。

今までの設定をいじりたくないから.emacsの最後の最後に以下を追加。
(add-hook 'cshar-mode-hook
'(lamda() (local-set-key (kbd "{") 'nil)
))

>>161
クオートってことですかね?
0163名無しさん@お腹いっぱい。2012/09/25(火) 23:03:34.47
cshar→csharp
lamda→lambda
0164名無しさん@お腹いっぱい。2012/09/26(水) 12:41:40.25
あるキー入力を示す文字に ctrl や shift、meta 等の修飾キーをつけたり外したりするちゃんとしたやり方ってあるんでしょうか?
例えば (add-shift-prefix ?n) => ?N とか
(add-ctrl-prefix ?n) => ?\C-n とか
(remove-ctrl-prefix ?\C-\M-a) => ?\M-a みたいな。
0165名無しさん@お腹いっぱい。2012/09/26(水) 22:43:24.28
微妙に自己解決しました
キーバインド系の関数のみ、 [(control ?a)] みたいなのを受け付けるとのことだったので
以下のようにして解決させました
(defun add-ctrl-prefix (c)
`(control ,c))
0166名無しさん@お腹いっぱい。2012/09/28(金) 07:03:51.09
数引数(C-u)を与えると、挙動が変わるコマンドがあります。たとえば、shellなど。
このようなコマンドを数引数を与えた形でelispに書いてコールしたいのですが、
どのように書けばいいでしょうか?
0167名無しさん@お腹いっぱい。2012/09/28(金) 07:21:05.72
>>166
(interactive)のヘルプに色々書いてあるよ
0168名無しさん@お腹いっぱい。2012/09/28(金) 07:21:41.21
マニュアル読めよ
ヘルプすら見てないだろ
0169名無しさん@お腹いっぱい。2012/09/28(金) 07:45:41.89
shellのような挙動のコマンドを作りたいということでなくて、そのようなコマンド
をC-uつきでelispからコールするように書きたいということなんだけど、簡単な
ことなんでしょうか? ヘルプも読んでいますが、方法を探せていません。
letでcurrent-prefix-argに値を設定してみたけど、だめだった。
0170名無しさん@お腹いっぱい。2012/09/28(金) 08:21:55.55
emacs lispのinteractiveの仕組みがわかってて気がついてないのか、
そもそもinteractiveが何なのか知らないのかどっちかね?
0171名無しさん@お腹いっぱい。2012/09/28(金) 08:27:12.15
手がかりなんぞ要らんからサンプル書いて教えろっていうガキだろ
ほっとけ
0172名無しさん@お腹いっぱい。2012/09/28(金) 08:54:05.70
デスクトップPCでEmacsが普及するわけないと思った時。
0173名無しさん@お腹いっぱい。2012/09/28(金) 09:34:42.94
というか別に普及なんかして欲しいとも思わんしなあ
使いたい人がひっそり使ってるっていう現状で充分だよね
0174名無しさん@お腹いっぱい。2012/09/28(金) 09:43:33.89
>>166
こういう事をやりたいのか?

(let ((current-prefix-arg '(4)))
(call-interactively 'shell))
0175名無しさん@お腹いっぱい。2012/09/28(金) 20:24:06.29
cond && cond2という文があった時
   ↑この&の部分でM-d(kill-word)するとcond2まで消えてしまうのどうにかなりませんか?
&&だけ消えて欲しいのですが。
0176名無しさん@お腹いっぱい。2012/09/28(金) 20:29:28.12
そのレスする間にC-dを2回押せばいい
0177名無しさん@お腹いっぱい。2012/09/28(金) 20:54:35.99
C-h sしたところで力尽きた
0178名無しさん@お腹いっぱい。2012/09/28(金) 21:32:24.41
syntax table 弄るしかないのかめんどくさいね
0179名無しさん@お腹いっぱい。2012/09/28(金) 21:38:30.13
自分で好きに関数書いてM-dにあててもいいのよ
0180名無しさん@お腹いっぱい。2012/09/28(金) 21:40:28.20
word 単位の処理って微妙に挙動が予測出来ない部分があるから
確かに空白区切りでの処理に置き換えちゃうとかも悪くないかもね。
0181名無しさん@お腹いっぱい。2012/09/28(金) 21:45:35.75
(modify-syntax-entry ?& "w") すれば & も単語とみなされるようになる。
M-d の時だけ書き換えたいのであれば kill-word に with-syntax-table を使った advice でも付けてやるとかどうだろね。
01821752012/09/28(金) 22:30:16.04
みなさまレスありがとうございます
シンタックステーブルと独自関数を作って試してみました

(defvar my-syntax-table
(let ((table (make-syntax-table)))
(modify-syntax-entry ?& "w")
table))

(defun my-kill-word ()
(interactive)
(with-syntax-table my-syntax-table
(call-interactively 'kill-word)))

(global-set-key (kbd "M-d") 'my-kill-word)

として
hoge && hoge
   ↑ここでM-dしてみましたがhogeまで削除されてしまいました
何が足りないのでしょうか?
0183名無しさん@お腹いっぱい。2012/09/28(金) 22:35:05.79
modify-syntax-entry を describe-function してみるとわかるけど
第二匹数を省略すると現在の syntax-table を編集しちゃうよ。
ちゃんと let で作った table を指定してやらないと意味が無い。
0184名無しさん@お腹いっぱい。2012/09/28(金) 22:36:44.87
第二じゃなくて第三ね。
0185名無しさん@お腹いっぱい。2012/09/28(金) 22:42:39.30
あ、なるほど!確かに指定しないと、tableを変更すべきだとmodify-syntax-entryしるよしもありませんね。
即レス感謝!うまくいきました。

;; kill-wordで&&を削除しようとすると次の単語まで削除されてしまうが、それを抑制する
(defvar my-syntax-table
(let ((table (make-syntax-table)))
(modify-syntax-entry ?& "w" table)
table))

(defun my-kill-word ()
(interactive)
(with-syntax-table my-syntax-table
(call-interactively 'kill-word)))

(global-set-key (kbd "C-t") 'my-kill-word)
0186名無しさん@お腹いっぱい。2012/09/29(土) 00:37:51.80
>>174
call-interactivelyを使うんですね。ありがとうございました。
0187名無しさん@お腹いっぱい。2012/09/29(土) 01:34:21.87
Mac環境でemacsを使用しているのですが
emacs起動直後にフレームが2つになってしまいます。

1つ目のフレームは、編集対象のファイルの中身で
2つ目のフレームは、ヘルプ的な画面が出ています。

毎回ファイルを開いたあとに「C-x 1」でフレーム数を一つにしているのですが
最初からフレーム数を一つにするにはどうしたら良いでしょうか?
0188名無しさん@お腹いっぱい。2012/09/29(土) 08:58:14.59
C-x 1 で消えるならそれ多分 Emacs でいうところの window だと思う。
Emacs でいう frame ってのは OS でいうウィンドウのことね。

ヘルプ的な画面ってのはどんなのが表示されてるの?
設定ファイルに不具合があったりすると起動時に別 window にエラーが表示されたりするけど。
0189名無しさん@お腹いっぱい。2012/09/29(土) 09:41:48.19
>>188
すみません、frameじゃなくてwindowでしたか。
下のウィンドウに表示されてるのは以下の通りです。
ところどころにリンクが張ってあり、クリックできます。


Welcome to GNU Emacs, one component of the GNU operating system.
To quit a partially entered command, type Control-g.

Emacs Tutorial Learn basic keystroke commands (Emacs 入門ガイド)
Emacs Guided Tour Overview of Emacs features
View Emacs Manual View the Emacs manual using Info
Absence of Warranty GNU Emacs comes with ABSOLUTELY NO WARRANTY
Copying Conditions Conditions for redistributing and changing Emacs
Ordering Manuals Purchasing printed copies of manuals

This is GNU Emacs 22.3.1 (i386-apple-darwin9.8.0, Carbon Version 1.6.0)
of 2010-01-10 on gs674-seijiz.local
Copyright (C) 2008 Free Software Foundation, Inc.

If an Emacs session crashed recently, type Meta-x recover-session RET
to recover the files you were editing.
Dismiss this startup screen Never show it again.
0190名無しさん@お腹いっぱい。2012/09/29(土) 09:49:03.20
~/.emacs.d/init.el 等の設定ファイルに
(setq inhibit-startup-screen t) あたりを書き込めばいい。
0191名無しさん@お腹いっぱい。2012/09/29(土) 10:12:07.38
>>175
その位置でC-dをポンポーンと打つのではだめなのか…。
M-d使う人にとってはそうなのかな。
0192名無しさん@お腹いっぱい。2012/09/29(土) 10:59:50.72
C-dでひとつずつ消すよりそりゃviのcwのように一発で消せるほうがいいよ。
0193名無しさん@お腹いっぱい。2012/09/29(土) 11:29:14.75
word 系や paragraph 系の操作って使わない人は殆ど使わないよね。削除どころか移動すらも。
なれると凄い便利なんだけどねえ。
0194名無しさん@お腹いっぱい。2012/09/29(土) 13:21:59.94
(global-set-key (kbd "C-M-h") 'backward-sexp)
(global-set-key (kbd "C-M-l") 'forward-sexp)
(global-set-key (kbd "C-M-d") 'kill-sexp)

こうやったらめちゃくちゃ使うようになった
0195名無しさん@お腹いっぱい。2012/09/29(土) 13:25:01.03
>>191
cond && cond2からcond &&を消してcond2だけにしたい時word-kill2回でポンポーンと消したくて。
0196名無しさん@お腹いっぱい。2012/09/29(土) 13:29:28.44
そういう時って C-d 連打する人と C-SPC して M-f して微調整して C-w する人のパターンは想像つくな
0197名無しさん@お腹いっぱい。2012/09/29(土) 13:42:28.88
オレはそういう場合はM-f M-f M-b M-delだな。
0198名無しさん@お腹いっぱい。2012/09/29(土) 13:44:09.79
>>197
それじゃ && が消えなくね?
0199名無しさん@お腹いっぱい。2012/09/29(土) 15:33:31.43
消えるよ。
0200名無しさん@お腹いっぱい。2012/09/29(土) 15:46:21.76
M-d じゃなく M-del か
C-Backspace でもいけるんだな。これ使ったことなかったわ。
0201名無しさん@お腹いっぱい。2012/09/29(土) 16:37:34.02
viのテキストオブジェクトは便利だよな
emacsだとthingがある
0202名無しさん@お腹いっぱい。2012/09/29(土) 16:50:06.90
スレ違いだけどviにちょっとだけ興味あって、
たまに使ってみたりするものの、結局、ZZしか覚えてないw

あと、diredに相当するもんあるんだろうか?
0203名無しさん@お腹いっぱい。2012/09/29(土) 17:15:42.65
vimfiler ってのがあるらしい。
わりとなんでも出来る感じにはなってるみたい。
0204名無しさん@お腹いっぱい。2012/09/29(土) 17:20:15.52
( ´・∀・`)へー
割と何でもできるんなら本格的に試してみてもいいのかも…。
0205名無しさん@お腹いっぱい。2012/09/29(土) 18:22:45.48
M-dC-u4d かなあ
0206名無しさん@お腹いっぱい。2012/09/29(土) 18:30:04.75
結局、すべてのエディタは極めれば Emacs に等しくなるわけだから
年々 Emacs である必要がなくなるのは仕方ない。
0207名無しさん@お腹いっぱい。2012/09/29(土) 18:33:42.42
emacsは機能は充分だからもう少し軽くなったら嬉しい
といってもハードの進化が早いから問題ないか
0208名無しさん@お腹いっぱい。2012/09/29(土) 18:37:07.61
emacsが重いんじゃない
お前のその設定が重いんだ
0209名無しさん@お腹いっぱい。2012/09/29(土) 19:35:53.08
詰めviというものがあるらしい
最小キーストロークで効率的な編集をするんだと

詰めemacsはよ!お前らが普段使ってる自作elispなんでも使用可みたいな事したら面白そうw
0210名無しさん@お腹いっぱい。2012/09/29(土) 19:37:31.04
■ 問題 1.
   1: // 演算子の前後に空白を入れる
   2: for(int ix=0; ix<100; ++ix)
   3: sum+=value[ix];

上記文書を下記の様に修正しなさい。
   1: // 演算子の前後に空白を入れる
   2: for(int ix = 0; ix < 100; ++ix)
   3: sum += value[ix];

出展 ttp://vivi.dyndns.org/vivi/tsume/qa.phtml?n=1&act=ans#ans
0211名無しさん@お腹いっぱい。2012/09/29(土) 19:40:30.42
http://nullprogram.com/blog/2012/09/14/
これは流石にちょっと重かった。emacs内でフラクタル画像生成表示。
0212名無しさん@お腹いっぱい。2012/09/29(土) 19:41:29.42
>>209
そりゃ自作elisp使用可にしちゃったら専用関数作ってワンキーで終わりになるだけじゃない・・・
0213名無しさん@お腹いっぱい。2012/09/29(土) 19:42:11.46
>>210
普通にカーソル移動させてスペーススペースやってる
0214名無しさん@お腹いっぱい。2012/09/29(土) 19:44:03.58
問題に対して毎回特化したelisp書いてきてワンキーで終了だがなにか?みたいな奴いたらそれはそれで面白いな
0215名無しさん@お腹いっぱい。2012/09/29(土) 19:45:47.01
むしろそれだったら問題解決用のスクリプトでコードゴルフの方がemacs向きかもしれない
0216名無しさん@お腹いっぱい。2012/09/30(日) 06:04:27.95
>>190
返信遅くなりました。
やってみたらできました、ありがとう!
0217名無しさん@お腹いっぱい。2012/09/30(日) 12:25:46.38
得意気にコードゴルフとかいう奴が一番信用ならない。

人として。
0218名無しさん@お腹いっぱい。2012/09/30(日) 12:44:04.95
>>217
それ少し分かるw
0219名無しさん@お腹いっぱい。2012/09/30(日) 14:24:29.69
>>210
perl なりなんなりでフィルタ書いて M-| だな。
0220名無しさん@お腹いっぱい。2012/09/30(日) 14:58:46.56
>>217
なんで?
0221名無しさん@お腹いっぱい。2012/09/30(日) 18:10:27.77
コードゴルフに限らず、つまらんバズワードを
得意気に使う奴はうすっぺらい感じはするな。

コードゴルフとか、うまいこと言ったった感を
前面に出してるのも洒落臭いし。
0222名無しさん@お腹いっぱい。2012/09/30(日) 18:14:41.16
一気に空気悪くなったなw
0223名無しさん@お腹いっぱい。2012/09/30(日) 18:16:31.83
コードパチンコ
0224名無しさん@お腹いっぱい。2012/09/30(日) 18:20:01.21
コードゴルフがバズワードでうまい事言った感を醸し出す単語かぁ
0225名無しさん@お腹いっぱい。2012/09/30(日) 18:21:59.53
コードウルフ……一気にかっこよくなったぞ。
0226名無しさん@お腹いっぱい。2012/09/30(日) 18:26:05.83
っていうか、コードゴルフの定義ってプログラミングの定義そのものだからなあ。
わざわざ言うような事か?という感はある。
0227名無しさん@お腹いっぱい。2012/09/30(日) 18:43:58.41
コードは動けばどうでもいいわけだからゴルフからは遠いだろ
0228名無しさん@お腹いっぱい。2012/09/30(日) 18:55:37.68
>>227
は?

お前は3行で済むコードをわざわざ3億行にするのをプログラミングと呼ぶのか?
それはコード農業ではなかったか?
0229名無しさん@お腹いっぱい。2012/09/30(日) 18:58:33.80
普通に書けば簡単でそれなりの長さ(6行)を3行にしてドヤ顔してるのが気持ち悪いな
0230名無しさん@お腹いっぱい。2012/09/30(日) 19:05:02.04
普通のプログラミングは可読性と簡潔性の両立を目指すもので
コードゴルフはひたすら短くするものって事か。
その手の癖をつけた奴って現場では良い意味での
冗長性度外視したりして使えなさそうなんだが。。。
0231名無しさん@お腹いっぱい。2012/09/30(日) 19:14:43.47
この手の冗長性の無さは日本人のすばらしい点(超誠実)でもあり融通の利かないところだと思う
もう少し柔軟であって欲しい
0232名無しさん@お腹いっぱい。2012/09/30(日) 19:17:13.80
いや、詰めviの話がでたからコードゴルフを出しただけで
なんで使える使えないの話になるんだ・・?
0233名無しさん@お腹いっぱい。2012/09/30(日) 19:21:07.66
>>226
それ違うよ。出来るだけ短く書くことで勝負するわけだから一般的によくない書き方とかばんばん使う一種のゲームだぞ。
0234名無しさん@お腹いっぱい。2012/09/30(日) 19:24:56.53
if(1)while(i--)printf(">>%d-%d スレ違い",217,217+i);

って事?
0235名無しさん@お腹いっぱい。2012/09/30(日) 19:27:17.50
いやちゃんと動くコード書いてくださいよ217さん
0236名無しさん@お腹いっぱい。2012/09/30(日) 19:30:45.51
現物見てこいよ
癖とか冗長性とかそんな生半可なレベルじゃないから
0237名無しさん@お腹いっぱい。2012/09/30(日) 19:33:53.10
むしろすぐにバズワードとかいうバズワードを持ち出す奴こそ信用ならん
0238名無しさん@お腹いっぱい。2012/09/30(日) 19:41:29.88
int START=217;for(i=0;i<this.resNumber-START;i++)puts(">>%d スレ違い",START+i);

完璧なコードとはこういう事をいう。
0239名無しさん@お腹いっぱい。2012/09/30(日) 19:42:57.46
変数に大文字w
0240名無しさん@お腹いっぱい。2012/09/30(日) 19:45:49.06
わいは猿や、コードゴルファー猿や!
0241名無しさん@お腹いっぱい。2012/09/30(日) 19:46:32.31
みんな結構微妙なコード書くのな
0242名無しさん@お腹いっぱい。2012/09/30(日) 20:03:53.14
res241->destroy();
0243名無しさん@お腹いっぱい。2012/09/30(日) 20:04:24.82
TWO == イラッつとするコーディングスタイル
http://kohada.2ch.net/test/read.cgi/prog/1338703896/
0244名無しさん@お腹いっぱい。2012/09/30(日) 22:10:11.77
>>238
すげえ、変数に大文字って。しかも puts にフォーマット文字列とか。
ちゃんと動くコードかいてくださいよ 217さん。
0245名無しさん@お腹いっぱい。2012/09/30(日) 22:19:47.41
>>238は一体何言語なんだろうな
0246名無しさん@お腹いっぱい。2012/09/30(日) 23:16:30.09
コードを否定する際には改善したコードの例示もまた必要ではないかと吾輩は思った

(defmacro for (data &rest body)
(let ((var (car data))
(start (cadr data))
(stop (caddr data))
(gstop (gensym)))
`(do ((,var ,start (1+ ,var))
(,gstop ,stop))
((> ,var ,gstop))
,@body) ))

(setq thread (make-hash-table))
(setf (gethash 'resNumber thread) 245)

(let ((start 217))
(for (i start (gethash 'resNumber thread))
(insert (format ">>%d スレ違い\n" i))))
0247名無しさん@お腹いっぱい。2012/10/01(月) 00:39:07.97
>>238 はレスをオブジェクト化しているところがミソなんだけど
このスレのレベルではそこには気付けず重箱の隅つつきが限界か。
レベル差は明らかになった形だけど、まあいいや。

スレ違いが続いたからもうこの話題はここで終わり。
これ以上続けると荒らしだからね。
0248名無しさん@お腹いっぱい。2012/10/01(月) 01:26:56.41
つづきはこっちで!

emascスレ付属総合隔離病棟スレ
http://toro.2ch.net/test/read.cgi/unix/1342582441/
0249名無しさん@お腹いっぱい。2012/10/01(月) 02:22:22.89
>>247
i が未定義な時点で終了
オブジェクトか?以前の問題だな
0250名無しさん@お腹いっぱい。2012/10/01(月) 10:33:36.23
#define zero 1
0251名無しさん@お腹いっぱい。2012/10/01(月) 10:44:00.50
オブジェクト化wwww
0252名無しさん@お腹いっぱい。2012/10/01(月) 10:51:08.37
今更オブジェクト指向でドヤ顔するのがEmacsユーザなんですかぁ
■ このスレッドは過去ログ倉庫に格納されています