Emacs Part 41
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2012/09/07(金) 18:10:22.94Emacs Part 40
http://toro.2ch.net/test/read.cgi/unix/1328958449/
0162160
2012/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.47lamda→lambda
0164名無しさん@お腹いっぱい。
2012/09/26(水) 12:41:40.25例えば (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このようなコマンドを数引数を与えた形でelispに書いてコールしたいのですが、
どのように書けばいいでしょうか?
0167名無しさん@お腹いっぱい。
2012/09/28(金) 07:21:05.72(interactive)のヘルプに色々書いてあるよ
0168名無しさん@お腹いっぱい。
2012/09/28(金) 07:21:41.21ヘルプすら見てないだろ
0169名無しさん@お腹いっぱい。
2012/09/28(金) 07:45:41.89をC-uつきでelispからコールするように書きたいということなんだけど、簡単な
ことなんでしょうか? ヘルプも読んでいますが、方法を探せていません。
letでcurrent-prefix-argに値を設定してみたけど、だめだった。
0170名無しさん@お腹いっぱい。
2012/09/28(金) 08:21:55.55そもそもinteractiveが何なのか知らないのかどっちかね?
0171名無しさん@お腹いっぱい。
2012/09/28(金) 08:27:12.15ほっとけ
0172名無しさん@お腹いっぱい。
2012/09/28(金) 08:54:05.700173名無しさん@お腹いっぱい。
2012/09/28(金) 09:34:42.94使いたい人がひっそり使ってるっていう現状で充分だよね
0174名無しさん@お腹いっぱい。
2012/09/28(金) 09:43:33.89こういう事をやりたいのか?
(let ((current-prefix-arg '(4)))
(call-interactively 'shell))
0175名無しさん@お腹いっぱい。
2012/09/28(金) 20:24:06.29↑この&の部分でM-d(kill-word)するとcond2まで消えてしまうのどうにかなりませんか?
&&だけ消えて欲しいのですが。
0176名無しさん@お腹いっぱい。
2012/09/28(金) 20:29:28.120177名無しさん@お腹いっぱい。
2012/09/28(金) 20:54:35.990178名無しさん@お腹いっぱい。
2012/09/28(金) 21:32:24.410179名無しさん@お腹いっぱい。
2012/09/28(金) 21:38:30.130180名無しさん@お腹いっぱい。
2012/09/28(金) 21:40:28.20確かに空白区切りでの処理に置き換えちゃうとかも悪くないかもね。
0181名無しさん@お腹いっぱい。
2012/09/28(金) 21:45:35.75M-d の時だけ書き換えたいのであれば kill-word に with-syntax-table を使った advice でも付けてやるとかどうだろね。
0182175
2012/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第二匹数を省略すると現在の syntax-table を編集しちゃうよ。
ちゃんと let で作った table を指定してやらないと意味が無い。
0184名無しさん@お腹いっぱい。
2012/09/28(金) 22:36:44.870185名無しさん@お腹いっぱい。
2012/09/28(金) 22:42:39.30即レス感謝!うまくいきました。
;; 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.80call-interactivelyを使うんですね。ありがとうございました。
0187名無しさん@お腹いっぱい。
2012/09/29(土) 01:34:21.87emacs起動直後にフレームが2つになってしまいます。
1つ目のフレームは、編集対象のファイルの中身で
2つ目のフレームは、ヘルプ的な画面が出ています。
毎回ファイルを開いたあとに「C-x 1」でフレーム数を一つにしているのですが
最初からフレーム数を一つにするにはどうしたら良いでしょうか?
0188名無しさん@お腹いっぱい。
2012/09/29(土) 08:58:14.59Emacs でいう frame ってのは OS でいうウィンドウのことね。
ヘルプ的な画面ってのはどんなのが表示されてるの?
設定ファイルに不具合があったりすると起動時に別 window にエラーが表示されたりするけど。
0189名無しさん@お腹いっぱい。
2012/09/29(土) 09:41:48.19すみません、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(setq inhibit-startup-screen t) あたりを書き込めばいい。
0191名無しさん@お腹いっぱい。
2012/09/29(土) 10:12:07.38その位置でC-dをポンポーンと打つのではだめなのか…。
M-d使う人にとってはそうなのかな。
0192名無しさん@お腹いっぱい。
2012/09/29(土) 10:59:50.720193名無しさん@お腹いっぱい。
2012/09/29(土) 11:29:14.75なれると凄い便利なんだけどねえ。
0194名無しさん@お腹いっぱい。
2012/09/29(土) 13:21:59.94(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.03cond && cond2からcond &&を消してcond2だけにしたい時word-kill2回でポンポーンと消したくて。
0196名無しさん@お腹いっぱい。
2012/09/29(土) 13:29:28.440197名無しさん@お腹いっぱい。
2012/09/29(土) 13:42:28.880198名無しさん@お腹いっぱい。
2012/09/29(土) 13:44:09.79それじゃ && が消えなくね?
0199名無しさん@お腹いっぱい。
2012/09/29(土) 15:33:31.430200名無しさん@お腹いっぱい。
2012/09/29(土) 15:46:21.76C-Backspace でもいけるんだな。これ使ったことなかったわ。
0201名無しさん@お腹いっぱい。
2012/09/29(土) 16:37:34.02emacsだとthingがある
0202名無しさん@お腹いっぱい。
2012/09/29(土) 16:50:06.90たまに使ってみたりするものの、結局、ZZしか覚えてないw
あと、diredに相当するもんあるんだろうか?
0203名無しさん@お腹いっぱい。
2012/09/29(土) 17:15:42.65わりとなんでも出来る感じにはなってるみたい。
0204名無しさん@お腹いっぱい。
2012/09/29(土) 17:20:15.52割と何でもできるんなら本格的に試してみてもいいのかも…。
0205名無しさん@お腹いっぱい。
2012/09/29(土) 18:22:45.480206名無しさん@お腹いっぱい。
2012/09/29(土) 18:30:04.75年々 Emacs である必要がなくなるのは仕方ない。
0207名無しさん@お腹いっぱい。
2012/09/29(土) 18:33:42.42といってもハードの進化が早いから問題ないか
0208名無しさん@お腹いっぱい。
2012/09/29(土) 18:37:07.61お前のその設定が重いんだ
0209名無しさん@お腹いっぱい。
2012/09/29(土) 19:35:53.08最小キーストロークで効率的な編集をするんだと
詰めemacsはよ!お前らが普段使ってる自作elispなんでも使用可みたいな事したら面白そうw
0210名無しさん@お腹いっぱい。
2012/09/29(土) 19:37:31.041: // 演算子の前後に空白を入れる
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これは流石にちょっと重かった。emacs内でフラクタル画像生成表示。
0212名無しさん@お腹いっぱい。
2012/09/29(土) 19:41:29.42そりゃ自作elisp使用可にしちゃったら専用関数作ってワンキーで終わりになるだけじゃない・・・
0213名無しさん@お腹いっぱい。
2012/09/29(土) 19:42:11.46普通にカーソル移動させてスペーススペースやってる
0214名無しさん@お腹いっぱい。
2012/09/29(土) 19:44:03.580215名無しさん@お腹いっぱい。
2012/09/29(土) 19:45:47.010216名無しさん@お腹いっぱい。
2012/09/30(日) 06:04:27.95返信遅くなりました。
やってみたらできました、ありがとう!
0217名無しさん@お腹いっぱい。
2012/09/30(日) 12:25:46.38人として。
0218名無しさん@お腹いっぱい。
2012/09/30(日) 12:44:04.95それ少し分かるw
0219名無しさん@お腹いっぱい。
2012/09/30(日) 14:24:29.69perl なりなんなりでフィルタ書いて M-| だな。
0220名無しさん@お腹いっぱい。
2012/09/30(日) 14:58:46.56なんで?
0221名無しさん@お腹いっぱい。
2012/09/30(日) 18:10:27.77得意気に使う奴はうすっぺらい感じはするな。
コードゴルフとか、うまいこと言ったった感を
前面に出してるのも洒落臭いし。
0222名無しさん@お腹いっぱい。
2012/09/30(日) 18:14:41.160223名無しさん@お腹いっぱい。
2012/09/30(日) 18:16:31.830224名無しさん@お腹いっぱい。
2012/09/30(日) 18:20:01.210225名無しさん@お腹いっぱい。
2012/09/30(日) 18:21:59.530226名無しさん@お腹いっぱい。
2012/09/30(日) 18:26:05.83わざわざ言うような事か?という感はある。
0227名無しさん@お腹いっぱい。
2012/09/30(日) 18:43:58.410228名無しさん@お腹いっぱい。
2012/09/30(日) 18:55:37.68は?
お前は3行で済むコードをわざわざ3億行にするのをプログラミングと呼ぶのか?
それはコード農業ではなかったか?
0229名無しさん@お腹いっぱい。
2012/09/30(日) 18:58:33.800230名無しさん@お腹いっぱい。
2012/09/30(日) 19:05:02.04コードゴルフはひたすら短くするものって事か。
その手の癖をつけた奴って現場では良い意味での
冗長性度外視したりして使えなさそうなんだが。。。
0231名無しさん@お腹いっぱい。
2012/09/30(日) 19:14:43.47もう少し柔軟であって欲しい
0232名無しさん@お腹いっぱい。
2012/09/30(日) 19:17:13.80なんで使える使えないの話になるんだ・・?
0233名無しさん@お腹いっぱい。
2012/09/30(日) 19:21:07.66それ違うよ。出来るだけ短く書くことで勝負するわけだから一般的によくない書き方とかばんばん使う一種のゲームだぞ。
0234名無しさん@お腹いっぱい。
2012/09/30(日) 19:24:56.53って事?
0235名無しさん@お腹いっぱい。
2012/09/30(日) 19:27:17.500236名無しさん@お腹いっぱい。
2012/09/30(日) 19:30:45.51癖とか冗長性とかそんな生半可なレベルじゃないから
0237名無しさん@お腹いっぱい。
2012/09/30(日) 19:33:53.100238名無しさん@お腹いっぱい。
2012/09/30(日) 19:41:29.88完璧なコードとはこういう事をいう。
0239名無しさん@お腹いっぱい。
2012/09/30(日) 19:42:57.460240名無しさん@お腹いっぱい。
2012/09/30(日) 19:45:49.060241名無しさん@お腹いっぱい。
2012/09/30(日) 19:46:32.310242名無しさん@お腹いっぱい。
2012/09/30(日) 20:03:53.140243名無しさん@お腹いっぱい。
2012/09/30(日) 20:04:24.82http://kohada.2ch.net/test/read.cgi/prog/1338703896/
0244名無しさん@お腹いっぱい。
2012/09/30(日) 22:10:11.77すげえ、変数に大文字って。しかも puts にフォーマット文字列とか。
ちゃんと動くコードかいてくださいよ 217さん。
0245名無しさん@お腹いっぱい。
2012/09/30(日) 22:19:47.410246名無しさん@お腹いっぱい。
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このスレのレベルではそこには気付けず重箱の隅つつきが限界か。
レベル差は明らかになった形だけど、まあいいや。
スレ違いが続いたからもうこの話題はここで終わり。
これ以上続けると荒らしだからね。
0248名無しさん@お腹いっぱい。
2012/10/01(月) 01:26:56.41emascスレ付属総合隔離病棟スレ
http://toro.2ch.net/test/read.cgi/unix/1342582441/
0249名無しさん@お腹いっぱい。
2012/10/01(月) 02:22:22.89i が未定義な時点で終了
オブジェクトか?以前の問題だな
0250名無しさん@お腹いっぱい。
2012/10/01(月) 10:33:36.230251名無しさん@お腹いっぱい。
2012/10/01(月) 10:44:00.500252名無しさん@お腹いっぱい。
2012/10/01(月) 10:51:08.370253名無しさん@お腹いっぱい。
2012/10/01(月) 11:17:04.360254名無しさん@お腹いっぱい。
2012/10/01(月) 11:19:32.040255名無しさん@お腹いっぱい。
2012/10/01(月) 11:20:37.120256名無しさん@お腹いっぱい。
2012/10/01(月) 11:22:10.960257名無しさん@お腹いっぱい。
2012/10/01(月) 16:07:51.14`(let (,args) ,@body))
というマクロを書きました。これは
(let ((str "hoge"))
hoge
hoge)
を
(let1 (str "hoge")
hoge
hoge)
と書けるようにするものです。
うまく動くのですがインデントがletの場合と異なり
(let1 (str "hoge")
hoge
hoge)
となってしまいます。letの時の様なインデントがなされて欲しいのですが
オートインデントに情報を加えるにはどうすれば良いのでしょうか?
0258名無しさん@お腹いっぱい。
2012/10/01(月) 16:09:24.75(defmacro let1 (args &rest body)
`(let (,args) ,@body))
というマクロを書きました。これは
(let ((str "hoge"))
hoge
hoge)
を
(let1 (str "hoge")
hoge
hoge)
と書けるようにするものです。
うまく動くのですがインデントがletの場合と異なり
(let1 (str "hoge")
hoge
hoge)
となってしまいます。letの時の様なインデントがなされて欲しいのですが
オートインデントに情報を加えるにはどうすれば良いのでしょうか?
0259名無しさん@お腹いっぱい。
2012/10/01(月) 16:16:42.13http://d.hatena.ne.jp/zknx/20091205/1259982042
0260258
2012/10/01(月) 16:25:01.12即レス感謝です!結果
(defmacro let1 (args &rest body)
(declare (indent 1))
`(let (,args) ,@body))
で希望の動作をするようになりました。
indent 2や3にしてみると。あーこの挙動か、と楽しめました。
こんなお手軽な方法があったのですね。
ありがとうございました!
0261名無しさん@お腹いっぱい。
2012/10/01(月) 19:32:38.49http://blog.supermomonga.com/articles/emacs/my-imaginary-emacs-future.html
■ このスレッドは過去ログ倉庫に格納されています