トップページ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/
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ユーザなんですかぁ
0253名無しさん@お腹いっぱい。2012/10/01(月) 11:17:04.36
どこからネタなのか分からず混乱している。
0254名無しさん@お腹いっぱい。2012/10/01(月) 11:19:32.04
スレ違いがメソッド化されていない時点で
0255名無しさん@お腹いっぱい。2012/10/01(月) 11:20:37.12
emacsスレなんだからeieioで書いて欲しかった
0256名無しさん@お腹いっぱい。2012/10/01(月) 11:22:10.96
まぁネタはこのくらいでやめとこう。
0257名無しさん@お腹いっぱい。2012/10/01(月) 16:07:51.14
(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の時の様なインデントがなされて欲しいのですが
オートインデントに情報を加えるにはどうすれば良いのでしょうか?
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.13
>>258
http://d.hatena.ne.jp/zknx/20091205/1259982042
02602582012/10/01(月) 16:25:01.12
>>259
即レス感謝です!結果
(defmacro let1 (args &rest body)
(declare (indent 1))
`(let (,args) ,@body))

で希望の動作をするようになりました。
indent 2や3にしてみると。あーこの挙動か、と楽しめました。
こんなお手軽な方法があったのですね。
ありがとうございました!
0261名無しさん@お腹いっぱい。2012/10/01(月) 19:32:38.49
かなりすごい!
http://blog.supermomonga.com/articles/emacs/my-imaginary-emacs-future.html
0262名無しさん@お腹いっぱい。2012/10/01(月) 20:36:01.76
eieioといえば他にもlunaとかいろいろオブジェクト指向化パッケージがあったような気がするんだけど
一向に普及しないね
0263名無しさん@お腹いっぱい。2012/10/01(月) 22:00:31.26
>>262
lunaってw3m shimbun くらいしか使われてないのかな。
情報を調べようと思っていつも苦労する。
0264名無しさん@お腹いっぱい。2012/10/01(月) 22:31:03.86
クロージャ入ったからeieioが書き直されるか
別で本命clos系パッケージが来るのを密かに待ってる
0265名無しさん@お腹いっぱい。2012/10/01(月) 23:27:58.79
>>261
書いてすらないものを宣伝しに来るとか
ゴミクズとしての第一歩を踏みだしちゃったな
0266名無しさん@お腹いっぱい。2012/10/01(月) 23:32:26.22
もう人生消したほうがいいレベル
0267名無しさん@お腹いっぱい。2012/10/02(火) 00:21:10.55
>>265
日本語でおk
0268名無しさん@お腹いっぱい。2012/10/02(火) 00:22:46.53
265+1 :名無しさん@お腹いっぱい。 [sage] :2012/10/01(月) 23:27:58.79
>>261
(実際にコードを)書いてすらないものを宣伝しに来るとか
ゴミクズとしての第一歩を踏みだしちゃったな
0269名無しさん@お腹いっぱい。2012/10/02(火) 00:28:19.37
そういえばいまのemacsの開発版ってブラウザ組み込めるんだっけ
markdownのレンダリング結果をemacsで綺麗に表示できたりすると夢がひろがりんぐ
0270名無しさん@お腹いっぱい。2012/10/02(火) 01:01:14.91
emacs24 で windows postgres9.2に

つながらない、、パスワードも聞かれんし どうなってるん?
0271名無しさん@お腹いっぱい。2012/10/02(火) 01:08:53.57
postgresがおまえのこと嫌いになったんだよ
それ以外に考えられない
0272名無しさん@お腹いっぱい。2012/10/02(火) 01:10:25.42
いや待て落ち着け
もしかしたらEmacsからも嫌われてるのでは?
0273名無しさん@お腹いっぱい。2012/10/02(火) 01:22:08.68
うーーーーん。違う環境ではできたんだよなぁ。。

sql-postgres で パスワードも聞かれたし、、
文字コードの問題かなぁ。。
0274名無しさん@お腹いっぱい。2012/10/02(火) 02:32:12.93
できたーーー。
windows localじゃあだめだけど

つなぎさきがlinux だったらできたーー 
0275名無しさん@お腹いっぱい。2012/10/02(火) 02:50:21.83
passwordを返すやり方が難しいな。。
0276名無しさん@お腹いっぱい。2012/10/02(火) 04:01:27.19
ここはお前のスレじゃねーんだよ死ね
0277名無しさん@お腹いっぱい。2012/10/02(火) 08:44:24.48
>>269
xwidget のことなら開発版じゃなくて勝手に派生した版だったと思う
本家に組み込まれるかはかなり怪しげ。

JSとEmacsで実装されたHTTPDを組み合わせてブラウザにリロード無しでリアルタイムで
編集結果を表示し続けるパッケージは最近幾つかみたよ。
0278名無しさん@お腹いっぱい。2012/10/02(火) 17:03:31.41
   /⌒⌒\
   / /ヽ ヽ
  / /__\ ヽ  あー俺の環境と違うわー
 / / bb) | |   ん?これ文字コードの問題じゃね?
<彡(リ  >  ソ ヽ  てか、ウィンドウズだよ
 ≦イ   ̄ /\_≧  ウィンドウズのせいだったよ
`/ |  ー イ\     (ッターーン!!!)
/  ヽ   | ヽ
レ⌒\ \  / | |
\//  ̄ ̄ヽ |T ̄ ̄ ̄|
/////゙zノノU ||   |
 // ヾ☆/ || | ̄| |
0279名無しさん@お腹いっぱい。2012/10/02(火) 21:42:54.85
>>277
emacsとnode.jsを使ってもできそうだが
誰か頼む
0280名無しさん@お腹いっぱい。2012/10/03(水) 09:05:56.80
MS公式が配布してるTypeScriptモードのスクリプト、Emacsだけやったらサイズ大きい(のわりに機能そんなにあるように見えない?)のは
ちょっと悲しいな。
0281名無しさん@お腹いっぱい。2012/10/06(土) 00:46:18.24
^Mが改行文字だとして
(replace-string "^M" "")
このelispは正常に動作するのですが、wikiなどにこれを投稿して表示すると^Mの部分で改行されてしまいます
可読性を考えて改行文字は文字として表示し、かつelispとして意図したとおりに動作させる手は無いかと思ったのですが
それらしい物を見つけることはできませんでした
何か策はあるでしょうか
0282名無しさん@お腹いっぱい。2012/10/06(土) 00:57:16.63
(replace-string "\r" "")とか(replace-string "\015" "")とか?
0283名無しさん@お腹いっぱい。2012/10/06(土) 01:21:32.07
>>282
ばっちりです!ありがとうございます。
0284名無しさん@お腹いっぱい。2012/10/06(土) 12:03:55.31
今更これ聞くのも恥ずかしいんですが…。
fooをbar置換しているときに、
foo1 // ここから
foo2
foo3 // ここまで置換したい
foo4 // ここにカーソル来て欲しくない

説明の都合上、矩形で処理できそうなならびになってますが、
実際は散らかっています。foo3の時yを押してfoo4に来ちゃう問題、みんなどうしてる?
0285名無しさん@お腹いっぱい。2012/10/06(土) 12:25:45.77
^
0286名無しさん@お腹いっぱい。2012/10/06(土) 12:27:21.74
>>284
narrow-to-regionしてから置換
0287名無しさん@お腹いっぱい。2012/10/06(土) 13:22:38.57
>>285
うはっwこれはww 即レスありがとうございます。重宝します。

>>286
勉強になります。これも役に立ちそうです。↓メモ。
C-x n n
Narrow down to between point and mark (narrow-to-region).
C-x n w
Widen to make the entire buffer accessible again (widen).
0288名無しさん@お腹いっぱい。2012/10/06(土) 17:21:06.01
対話的に置換するなら、(transient-mark-mode 1)を評価して
region範囲の表示を有効にしておくとnarrowingと同じ効果がある
あと、foo3でピリオドもある
0289名無しさん@お腹いっぱい。2012/10/06(土) 17:41:19.61
普通にfoo3で.押す!
0290名無しさん@お腹いっぱい。2012/10/06(土) 17:47:33.22
>>288
うおおお!!!

> (transient-mark-mode 1)

デフォでこれenabledにして使ってたんですが、
それにそんな効果が隠されていたとは知らなかったです。

> foo3でピリオド

これだ!! これかつ、ミスったときに^押せば完璧ですね。
皆さんのおかげで俺捗って仕方ありません。どうもありがとうございました。
0291名無しさん@お腹いっぱい。2012/10/06(土) 17:48:28.55
>>289
ありがとうございます!!
0292名無しさん@お腹いっぱい。2012/10/06(土) 19:08:35.71
ピリオドなんてあったのか・・知らんかった・・
なんか結構長いこと使ってるが、こういう知らないけど地味に便利なこと結構ありそうだなぁ
0293名無しさん@お腹いっぱい。2012/10/06(土) 19:45:05.29
>>289
"Period to replace one match and exit."

素晴らしい。。。
0294名無しさん@お腹いっぱい。2012/10/06(土) 19:46:26.22
別トピックだけどC-M-SPCのリージョン選択機能知った時は
思わず笑みがこぼれた
0295名無しさん@お腹いっぱい。2012/10/06(土) 20:34:02.35
C-M-SPCのリージョン選択機能kwsk
0296名無しさん@お腹いっぱい。2012/10/06(土) 21:17:50.38
 (+ 1 8)で

ここにカーソル持ってきてC-M-SPC押すと)までが選択されるってやつだな。
あんま使ってないけど。

F1 k C-M-SPCでヘルプ見れるぜ。
0297名無しさん@お腹いっぱい。2012/10/06(土) 21:17:52.24
(with-temp-buffer)によって作った作業用バッファの内容を
バッファ切り替えによって表示させるにはどうすればいいですか
今はscratchバッファで
(with-temp-buffer
(progn
...)
(write-region (point-min) (point-max) "c:/hoge.txt"))
これを実行して作業内容をc:/hoge.txtに置きそれを開いています
(princ (buffer-string))とするとscratchバッファにそれが追記されてしまいます
よろしくお願いします
0298名無しさん@お腹いっぱい。2012/10/06(土) 22:19:57.43
with-temp-bufferは作業用バッファを削除してから戻るから、そのバッファに切り替えるとかは無理じゃないの?
作業用バッファ作ってそこに何か出力してそれに切り替えるなら、
with-temp-bufferから適当に借用してこんな感じかね?
もっとちゃんとしたやり方がありそうだけど
(let ((nbf (generate-new-buffer "*MYTEMP*")))
(with-current-buffer nbf
(unwind-protect
(progn (insert-string "テスト"))
(pop-to-buffer nbf))))
0299名無しさん@お腹いっぱい。2012/10/06(土) 22:54:05.70
>>298
こういう手がありましたか。ありがとうございます。勉強になりました。
0300名無しさん@お腹いっぱい。2012/10/07(日) 06:39:29.58
>>297

(with-temp-buffer
(insert "dddd")
(switch-to-buffer (current-buffer))
(sit-for 5))

ってこと?
0301名無しさん@お腹いっぱい。2012/10/07(日) 11:54:16.30
insert-file-contents でファイルをバッファに挿入すると日本語が
\346\227\245
のような文字列に化けてしまいます
(コピペすると半角空白になります)
ascii文字は問題ありません
何がいけないのですか
0302名無しさん@お腹いっぱい。2012/10/07(日) 11:56:19.08
自己解決しました
実際にはinsert-fire-contents-literallyを使っていました
insert-fire-contentsにしたら問題がなくなりました
0303名無しさん@お腹いっぱい。2012/10/07(日) 13:36:18.76
そう言えば大仁田厚ってどうしてるんだろうなぁ
0304名無しさん@お腹いっぱい。2012/10/07(日) 18:25:08.91
上のピリオドみたいに、結構使ってるけど、ひょっとして知らねー奴いるんじゃねえの?
っていう便利コマンド教えてくれ。
0305名無しさん@お腹いっぱい。2012/10/07(日) 18:41:29.24
ピリオドの場合は俺の場合ヘルプになかったからなー。
y,n,!しか使ってなかった。ちなみに終わらせるときはC-g使ってたw
0306名無しさん@お腹いっぱい。2012/10/07(日) 18:46:02.14
うちのには query-replace 中の ? で出てくるヘルプにちゃんと載ってたよ
>RET or `q' to exit, Period to replace one match and exit,
0307名無しさん@お腹いっぱい。2012/10/07(日) 18:56:46.97
うわごめん。たしかにPeriodって書いてあった…。
'.'って書いとけよなー(#^ω^)ピキピキ

うそですごめんなさい。
0308名無しさん@お腹いっぱい。2012/10/07(日) 19:39:24.38
C-rが上手く使えない
0309名無しさん@お腹いっぱい。2012/10/07(日) 19:55:38.21
最近M-^を地味に使うようになったな。
最初はあんま使わなかったのだが、徐々に。

condition
|| condition2 ←この行でM-^すると

condition || condition2 ←こうなる

あとはC-M-SPCかね。
0310名無しさん@お腹いっぱい。2012/10/07(日) 20:10:44.29
C-s '検索文字' C-s で飛んでからミニバッファにカーソル移動する方法がわからん。
0311名無しさん@お腹いっぱい。2012/10/07(日) 20:40:03.87
カーソル移動は出来ないと思うがDELで直前の文字消せるべ
0312名無しさん@お腹いっぱい。2012/10/07(日) 21:32:20.36
>>310
C-s(C-r) の検索中なら M-e で再編集できるけど?
あと、C−w や M−r や M−c も便利。
0313名無しさん@お腹いっぱい。2012/10/07(日) 22:21:46.65
thanks
0314名無しさん@お腹いっぱい。2012/10/07(日) 23:31:38.08
検索中のM-r便利だな。正規表現の検索諦めてた。
M-c便利だな。それが必要になったらいつもぐぐって、ごにょごにょ打ち込んでいちいち切り替えてやってた。

正規表現の置換はいちいち
M-x replace-regexp
やってるけど、標準でこれを一発実行できるキーある?
0315名無しさん@お腹いっぱい。2012/10/08(月) 01:06:53.37
一発実行するためのキーバインドを設定すればいいんじゃね?
0316名無しさん@お腹いっぱい。2012/10/08(月) 01:26:21.14
>>314
C-h w とか M-x where-is とかやってキーバインド探すといいよ。
replace-regexp は標準ではバインドされてないとは思うけど。
0317名無しさん@お腹いっぱい。2012/10/08(月) 01:36:01.15
1行あたり一定の字数を超過したらそれ以後行末までの文字色を変更するelispをどこかで見たのですが
どなかたご存じですか
0318名無しさん@お腹いっぱい。2012/10/08(月) 05:52:09.76
>>312
ご参考
ttp://www.emacswiki.org/emacs/IncrementalSearch
0319名無しさん@お腹いっぱい。2012/10/08(月) 07:10:29.05
helm-c-moccurのhelm-c-moccur-dmoccurが動かないんですが、動作確認できている人いますか?
emacs24、helmはgitの最新版です

現在は代用でhelm-do-grepを使っているのですが、選択すると同時に移動するのが便利なのでできたらdmoccurを使いたいです
0320名無しさん@お腹いっぱい。2012/10/08(月) 10:19:31.59
>>316
M-x where-is こんなのあったのか…。
0321名無しさん@お腹いっぱい。2012/10/08(月) 11:28:23.55
>>317
whitespace.el
0322名無しさん@お腹いっぱい。2012/10/08(月) 19:20:37.19
317じゃないけど試してみます
0323名無しさん@お腹いっぱい。2012/10/08(月) 21:05:07.03
sql-postgres だれもできない わろた
0324名無しさん@お腹いっぱい。2012/10/08(月) 23:14:09.44
>>317
fill-column-indicator かも
0325名無しさん@お腹いっぱい。2012/10/08(月) 23:22:11.90
fciは以前試したらauto-completeとの相性悪かったけどもうどっちかで対策されたかな?
0326名無しさん@お腹いっぱい。2012/10/08(月) 23:52:45.95
>>321のlines-tailでした
知らなかった>>324のfill-column-indicatorはかなりよさそうですね
emacsが本格的なIDEに見えてきました
■ このスレッドは過去ログ倉庫に格納されています