Emacs Lisp 3 ..
[2ch|▼Menu]
173:デフォルトの名無しさん
09/03/28 17:33:24
>>172
必要なことを必要なだけ書けばいいんですよ。
メジャーモードとして機能するためには最低限何が必要か。
そこに、自分が欲しいものを追加していくだけです。
またそのために、例えばsyntax-tableを独自に定義した方がいいならそうするし。
defcustomなんかはdefvarで済ますこともできるけど、ひとが作ったパッケージを
利用するときはdefcustomの方が分かりやすいと思うので、そう考えるならそうするしとか。
コードを書く上では、自分でこれでいいと思うコードを書けばいいんです。
あとは、慣習に従うと。


174:デフォルトの名無しさん
09/03/30 18:51:55
コロン付きのキーワードシンボルってあんまり使われてない気がするんですが、
なにか歴史的理由とかバージョン間互換性とかの理由があったりするんでしょうか?

alistのcarとかオプショナルな引数が沢山ある関数での&restで引数とる時のラベリングとか
値を取らないことを明示的に示してて便利だと思うんですけど(elispモードで色分けもされるし)、
色々ソース眺めた感じ、使ってるパッケージはガンガン使ってるんですが、
まったく使ってないところはcustomとかtext-property等ぐらいでしか使ってません。

175:デフォルトの名無しさん
09/04/15 16:51:29
URLリンク(www.bookshelf.jp)

176:デフォルトの名無しさん
09/04/15 18:05:50
よもや返事がくるとは思わなかったw

値が設定出来無い=ラベルとか専用ってことがコンパイラレベルで保証されてて
よさげだと思うんですが・・・

とりあえずassocのcarはシンボル、plistと関数のrestはキーワードシンボルで
書き進めちゃってるんですが、いいんだろか・・・

177:デフォルトの名無しさん
09/04/15 20:11:53
コードリードしてるとき、コメントアウトうざいなーと思うことが多々あったので、
こんなコード書いてみました。スマートじゃない部分あるのでまだ改良しますが、
方向性として他に方法ないかアドバイスお願いします。


178:デフォルトの名無しさん
09/04/15 20:13:51
改行多すぎと怒られたのでbase64-encode-region
KGRlZnVuIGhpZGUtY29tbWVudC1mYWNlICgpIAogICJmYWNlIGNvbW1lbnQgaGlkZSIgCgkoaW50
ZXJhY3RpdmUpCiAgIDs7JygxIDIgMyAuLi4uIGNvbW1lbnQgZmFjZSBwb2ludCBsaXN0KQoJKHNl
dHEgY29tbWVudC13YWxrCgkJCQkobG9vcCBmb3IgeCBmcm9tIDEgdG8gKHBvaW50LW1heCkKCQkJ
CQkJCWZvciBsb2ZhY2UgPSAobGlzdCAoZ2V0LXRleHQtcHJvcGVydHkgeCAnZmFjZSkgeCkKCQkJ
CQkJCWlmIChvcgoJCQkJCQkJCQkobWVtYmVyICdmb250LWxvY2stY29tbWVudC1kZWxpbWl0ZXIt
ZmFjZSBsb2ZhY2UpCgkJCQkJCQkJCShtZW1iZXIgJ2ZvbnQtbG9jay1kb2MtZmFjZSBsb2ZhY2Up
CgkJCQkJCQkJCShtZW1iZXIgJ2ZvbnQtbG9jay1jb21tZW50LWZhY2UgbG9mYWNlKQoJCQkJCQkJ
CQkpIGNvbGxlY3QgKG50aCAoLSAobGVuZ3RoIGxvZmFjZSkgMSkgbG9mYWNlKSkpCgkoYWRkLXRv
LWxpc3QgJ2NvbW1lbnQtd2FsayAnLTEpIDsgYmFkIGNvZGUKCShhZGQtdG8tbGlzdCAnY29tbWVu
dC13YWxrICctMiB0KSA7IGJhZCBjb2RlCgogICA7Oycoc3RhcnQgZW5kIHN0YXJ0IGVuZCBzdGFy
dCBlbmQgLi4ub3ZlcmxheSByZWdpb24gbGlzdCkKCShzZXRxIGNvbW1lbnQtd2FsawoJCQkJKGxv
b3AgZm9yIHJpZ2h0U3RlcCBpbiBjb21tZW50LXdhbGsKCQkJCQkJCWZvciBsZWZ0U3RlcCBpbiAo
Y2RyIGNvbW1lbnQtd2FsaykKCQkJCQkJCWlmIChub3QgKGVxICgrIHJpZ2h0U3RlcCAxKSBsZWZ0
U3RlcCkpIGFwcGVuZCAobGlzdCByaWdodFN0ZXAgbGVmdFN0ZXApKSkKCShzZXRxIGNvbW1lbnQt
d2FsayAoZGVscSAnLTEgY29tbWVudC13YWxrKSkgOyBiYWQgY29kZQoJKHNldHEgY29tbWVudC13
YWxrIChkZWxxICctMiBjb21tZW50LXdhbGspKTsgYmFkIGNvZGUKCgkoc2V0cSBjb21tZW50LW92
LWxpc3QKCQkJCShsb29wIGZvciBzdGFydCBpbiBjb21tZW50LXdhbGsgYnkgIydjZGRyIAoJCQkJ
CQkJZm9yIGVuZCBpbiAoY2RyIGNvbW1lbnQtd2FsaykgYnkgIydjZGRyIGNvbGxlY3QgKG1ha2Ut
b3ZlcmxheSAoLSBzdGFydCAxKSBlbmQpKSkKICAgOzsgd2h5IG5lZWQgcmVzPwoJKGxldCAocmVz
KQoJCShkb2xpc3QgKG92IGNvbW1lbnQtb3YtbGlzdCByZXMpCgkJCShvdmVybGF5LXB1dCBvdiAn
Y2F0ZWdvcnkgJ2hpZGUtY29tbWVudC1mYWNlKQoJCQkJCQkJCQkJCQkJCQkJCQkJCTsJCShvdmVy
bGF5LXB1dCBvdiAnY2xlYW51cCB0KQoJCQkob3ZlcmxheS1wdXQgb3YgJ2ludmlzaWJsZSB0KQoJ
CQkJCQkJCQkJCQkJCQkJCQkJCTsJCShvdmVybGF5LXB1dCBvdiAnZGlzcGxheSAiIikKCQkJKSkp


179:デフォルトの名無しさん
09/04/15 20:16:39
連投ごめんなさい、コード内容は、
コメントのfaceを見て、overlay作成し不可視にするlispです。

180:デフォルトの名無しさん
09/04/15 20:29:36
ろくに読まずに発言するけど、
ループのところってnext-property-changeで検索じゃだめなん?


181:デフォルトの名無しさん
09/04/15 20:34:18
>>175
elisp-manual-21-2.8.tar.gz を見てみたが、
keyword-symbols-constant-flag はすでになかった。


182:177
09/04/15 20:37:10
>>180
ありがとございます、それ知らなかったので調べてみたら、
自分がやってることは非効率極まりないことまでわかりました。
ちょっと書き換えてみます。

183:デフォルトの名無しさん
09/04/15 20:37:21
というよりkeyword-symbol自体がそんなに沢山使われてない。

184:デフォルトの名無しさん
09/04/15 20:43:06
>>182
自分は使ったことないけど、
comment-search-forward と backward なんていう
もっとよさげな関数があったよ。

185:デフォルトの名無しさん
09/04/16 23:21:38
>>176
Emacs19 用 Elisp マニュには keyword で始まる名前自体がなくて : に関する記述もなさげだから
Emacs20 あたりで追加された新機能だと思われ
古い Emacs との互換性が不要なら使ってもいいんでないかな

186:デフォルトの名無しさん
09/04/17 16:03:55
自分自身を remove-hook するような hook は邪道でしょうか?

具体的にはバッファの内容を別の形式で別ウィンドウに表示するアプリを作っています。
編集中の内容をリアルタイムに反映させるため post-command-hook で監視を行なおうと思っているのですが、
変換後の表示バッファが消されていた場合、自分自身で remove-hook して後始末をしたいなと・・・


187:デフォルトの名無しさん
09/04/17 16:44:34
自分自身でremove-hook するって、子bufferの有無をずっと監視するってこと?

別ウィンドウで表示しているbufferのkill-buffer-hookに
buffer local で post-command-hookのhookをremove するものを
仕掛けておくって思いついたんだけど、どうかな?



188:デフォルトの名無しさん
09/04/17 17:12:30
>>187
なるほど!
どう考えてもその方がスマートですよね。一々 buffer-live-p しなくて済みますし。
ありがとうございます。

189:デフォルトの名無しさん
09/04/24 01:48:31
/bin/shとかだと``でコマンドの実行結果をテキストで得られるけど
同じことをelispでしたい場合どうすれば良い?
バッククォートはlispでは別な意味なのでアレだが
(print `date`)で"Fri Apr 24 01:47:15 JST 2009"のようなことは出来ないかな

190:デフォルトの名無しさん
09/04/24 01:55:51
>>189ドゾー
(print (shell-command-to-string "date"))


191:デフォルトの名無しさん
09/04/24 23:42:19
さんきゅー!

192:デフォルトの名無しさん
09/05/05 12:11:19
buffer中で使った単語をリストアップするlispを書いてます。(想定する用途は、coding中にtypoした単語がないかチェックする)

単語とその出現回数のAssociationListを作って、新規に作ったbufferにinsertするようにしました。

できないのがありまして、
アルファベット順にsortするのが上手くできないです。(出現回数の方も同様にオプションでsortするようにしたいけど、後回しになってます)
(sort (mapcar '(lambda (x) (car x)) word-alist) 'string-lessp)
とsortしたら、sort対象のcar部分だけでなく、元のリストがsortされて、値がもどってくるにはどうしたらいいのでしょう?

(defun my-list-words ()
(interactive)
(save-excursion
(goto-char (point-min))
(let (word word-alist cu-word)
(while (re-search-forward "[-_a-zA-Z]+" nil t)
(setq word (buffer-substring (match-beginning 0) (match-end 0)))
(if (assoc word word-alist)
(setcdr (assoc word word-alist) (1+ (cdr (assoc word word-alist))))
(setq word-alist (cons (cons word 1) word-alist))))
;;;この下のS式が、上手く表現できない
(setq word-alist (sort (mapcar '(lambda (x) (car x)) word-alist) 'string-lessp))
(pop-to-buffer "*words list*")
(erase-buffer)
(mapc '(lambda (x) (insert (format "%s\n" x))) word-alist)
)))

他の点でもアドバイスがあれば、お願いします。





193:デフォルトの名無しさん
09/05/05 15:35:33
>>192
sort は破壊的関数。元のリストを残して置きたいならリストのコピーを sort する。
でも、この場合には必要ないと思う。

比較関数の例: (lambda (x y) (> x y)) == '>

word を取得するには、match-string が使える。

局所変数を使えば、assoc の呼び出しは1回でいい。

push を使ってもいい。


194:192
09/05/05 17:54:22
>>193さん、ありがとうござます。
おかげさまで、想定通りに動くようになりました。
比較関数の書き方もわかりました。
pushについては、後ほど調べて、また書き込みます。

直したところ:
match-string
(setq word (match-string 0))

局所変数、
(let、、に入れて、(setq current-word (assoc word word-alist))

比較関数の書き方を直しました。
(sort word-alist '(lambda (x y) (string-lessp (car x) (car y))))

このようになりました。
(defun my-list-words ()
(interactive)
(save-excursion
(goto-char (point-min))
(let (word word-alist current-word)
(while (re-search-forward "[-_a-zA-Z]+" nil t)
(setq word (match-string 0))
(setq current-word (assoc word word-alist))
(if current-word
(setcdr current-word (1+ (cdr current-word)))
(setq word-alist (cons (cons word 1) word-alist))))
(sort word-alist '(lambda (x y) (string-lessp (car x) (car y))))
(pop-to-buffer "*words list*")
(erase-buffer)
(mapc '(lambda (x) (insert (format "%s\n" x))) word-alist))
))

195:192
09/05/05 18:22:13
すいません、少し間違えてました。
sortした結果を 
(setq re-list (sort word-alist '(lambda (x y) (string-lessp (car x) (car y)))))
のように受けないといけませんでした。
sort対象のリストは、破壊されてしまうのですね。sortされるように破壊されると思い込んでました。

(setq lst '((banana . 1) (apple . 2) (orange . 1)))
(setq r (sort lst '(lambda (x y)(string-lessp (car x) (car y)))))
r => ((apple . 2) (banana . 1) (orange . 1))
lst => ((banana . 1) (orange . 1)

もう一度、直したものを張っておきます。
(defun my-list-words ()
(interactive)
(save-excursion
(goto-char (point-min))
(let (word word-alist current-word)
(while (re-search-forward "[-_a-zA-Z]+" nil t)
(setq word (match-string 0))
(setq current-word (assoc word word-alist))
(if current-word
(setcdr current-word (1+ (cdr current-word)))
(setq word-alist (cons (cons word 1) word-alist))))
(setq re-list (sort word-alist '(lambda (x y) (string-lessp (car x) (car y)))))
(pop-to-buffer "*words list*")
(erase-buffer)
(mapc '(lambda (x) (insert (format "%s\n" x))) re-list))
))


196:デフォルトの名無しさん
09/05/05 18:52:20
clの作法に則るとこんなんじゃろか。
URLリンク(paste.lisp.org)

197:デフォルトの名無しさん
09/05/05 19:17:11
hash を使って CL なしでやってみたよ。
URLリンク(paste.lisp.org)

198:デフォルトの名無しさん
09/05/05 19:37:33
あ、hashあるんだ。
>>197の方が圧倒的に速いね。

199:デフォルトの名無しさん
09/05/05 20:40:33
hash って emacs lisp の info にあんまり使うなって書いてあった気がするから
なんでも assoc で済まそうって癖がついてしまった。

200:デフォルトの名無しさん
09/05/05 20:53:17
>>199
kwsk

201:デフォルトの名無しさん
09/06/24 03:26:29
>>199
infoには、10項目以内なら連想リストの方が速いけど、それ以上の場合は
ハッシュを使ったほうがいいと書いてあるぞ。


202:デフォルトの名無しさん
09/07/02 23:02:53
elispの&optionalって省略されたときnilが設定されるようだが
使い方はこんな感じで良いのでしょうか?

(defun iota (count &optional start step)
(or start (setq start 0))
(or step (setq step 1))
(loop for n from start to (+ start (* (1- count) step)) by step collect n))



203:デフォルトの名無しさん
09/07/03 00:02:58
そんな感じ
省略時にnil以外の値という扱いのときはdocstringに書いておいた方がいいかな

204:202
09/07/03 00:59:59
>>203
docstringね
ありがとう

それとこの場合はこうか
(setq start (or start 0))
(setq step (or step 1))




205:202
09/07/03 01:05:03
(setq start (or start 0) step (or step 1))

206:デフォルトの名無しさん
09/07/03 02:58:28
(eval-when-compile (require 'cl))

(defun* foo (a &optional b (c 5)
&key d (e (user-login-name)))
(list 'a a 'b b 'c c 'd d 'e e))

(foo 1)
(a 1 b nil c 5 d nil e "bar")

clだと全部使える。やっぱ、clはいいね。


207:デフォルトの名無しさん
09/07/03 12:19:01
clにformat*ってのがあるといいんだけどなぁ

208:デフォルトの名無しさん
09/07/27 01:26:01
作れよ

209:デフォルトの名無しさん
09/08/11 17:39:12

emacs-lisp 上での common lisp の関数/マクロ名と
ピュアな common lisp の関数/マクロ名との
マッピングの在処を知っている方いませんか?

例えば、

defun* → defun
(cl*/el → cl)

とかです。


210:デフォルトの名無しさん
09/08/11 17:47:10
clモジュールのことか?
cl.el を見ればわかるんじゃね?
CL と emacs-lisp では根本的に違うところもあるから
必ずしも一対一に対応してるとは限らんが

211:デフォルトの名無しさん
09/08/14 06:09:19
Emacs Lisp が末尾再帰を最適化していない理由って何ですか?


212:デフォルトの名無しさん
09/08/14 09:02:49
みんな末尾再帰を使わないから

213:デフォルトの名無しさん
09/08/14 09:06:49
>>212
最適化が成されていないから使う必要がない。
だから末尾再帰を使う人がCLに比べるとかなり少なくなる。
それは最適化していないことの理由ではない。
違いわかるよね?

214:デフォルトの名無しさん
09/08/14 11:48:42
末尾再帰しててもアドバイス定義したら末尾再帰にならなくなったりするんじゃね?
コンパイル時に最適化してしまうと後で困る。

よく誤解している人がいるけど、
cl や emacs-lisp は関数型言語なんかじゃありませんから!!

215:デフォルトの名無しさん
09/08/14 11:58:15
じゃあなんなんだよ。
そんなの「吉野屋やすき屋は牛丼なんかじゃありませんから!」並の理屈だぞ。

216:デフォルトの名無しさん
09/08/14 12:11:12
URLリンク(en.wikipedia.org)
手続的、関数的、オブジェクト指向の連携をサポートしたマルチパラダイム言語

217:デフォルトの名無しさん
09/08/14 12:52:25
勝手に末尾再帰されるようなマクロ書けってスタンスじゃね?
マルチパラダイムうんぬんは関係ないかと

218:デフォルトの名無しさん
09/08/14 14:27:05
>>214
emacs-lisp は "ほぼ" 関数型言語。
cl は関数型言語。

219:デフォルトの名無しさん
09/08/14 21:49:36
吉野屋やすき屋は牛丼じゃない

220:デフォルトの名無しさん
09/08/14 22:20:31
>>211
実装が面倒くさいから。
ってcompile.elのソースに書いてあったと思ったよ
ソースすら読まない馬鹿は本当にしょうがないな

221:デフォルトの名無しさん
09/08/15 03:33:36
……何にどう書いてあるって?

222:デフォルトの名無しさん
09/08/15 03:38:57
                \
                \
              ∧ニユ/ ̄ヽ
    \        ( ´∀/)    i
    \.\    _(」つ/とl) .  | \
    ;::;::\i\  匚レ| .〈/ )    |  \
     。::;;:'\.\   (_,)ー'    |_,, -'''"!
    ^人;:'::;゚:;.\l\     _,,, -''"|_,, -''"|
     ^^从::;;:。':\.\_,, -''"|_,, -''"|   . :|
     へ ^へ;;::';;:'\l_,, -''" .   | 从^    〜
     ^ ^ヘ^人从::;;;:|    ,ィ人^. |  ^ ^へ^^
      〜 ^.へ' ^':レ^从 へ'  | 〜   ^
     へ ^^ へ 〜人^ ^  へ〜  〜



223:デフォルトの名無しさん
09/08/15 15:50:25
>>220
最近 emacs スレッドにもいる、前頭葉が未発達で可哀想な方ですよね。
わかります。

$ grep -E '\b(tail|recursion)\b' compile.el | wc -l
0


224:デフォルトの名無しさん
09/08/16 16:02:44
emacsclient の、標準入力って使えないのかな?

こんな感じに
% date | emacsclient

これとか、
% date | emacsclient -
% date | emacsclient --eval '(read)'

試したんだけど、違った。


225:デフォルトの名無しさん
09/08/16 22:25:43
>>220
> ってcompile.elのソースに書いてあったと思ったよ
byte-opt.elの間違いじゃないの?

>>223
もうちょっと頭使えば正解にたどり着けたのにね

226:デフォルトの名無しさん
09/08/16 22:30:13
泣きながらgrepしたんだねw でも面倒くさいからなんて書いてないからwww

227:デフォルトの名無しさん
09/08/16 22:41:08
とgrep厨が申しております

228:デフォルトの名無しさん
09/08/17 00:10:51
じゃあ私はemacs厨!

229:デフォルトの名無しさん
09/08/17 12:31:16
キッチンシンクなだけに厨がよく似合います


230:デフォルトの名無しさん
09/08/17 20:21:52
うまいな

231:host-130-64-82-173.medford.tufts.edu
09/08/21 00:23:18
Xubuntu8.04 にEmacs Speaks Statistics を入れています。

起動時に

URLリンク(bugs.launchpad.net)

と同様、

Error while loading 50a2ps

のメッセージが出て気持ち悪いです.(動くことは動く)

patchのあて方が分かりません.どなたか教えてください.



232:デフォルトの名無しさん
09/08/21 07:48:16
>>231
Emacs Lisp全く関係ないと思うけど、

Wikipedia項目リンク
URLリンク(www.linux.or.jp)

でも、そこにあるパッチって、一ヶ所クォートするだけだから、
どう考えてもエディタで編集した方が早いよ。

233:デフォルトの名無しさん
09/08/21 18:50:29
Emacs LispにCommon Lispの merge-pathnames に相当する関数はありますか?

234:デフォルトの名無しさん
09/08/21 21:05:19
>>233
expand-filename ?

235:デフォルトの名無しさん
09/08/21 21:41:25
>>234
expand-file-name ですね。
ありがとうございます。期待通りの動作ができました。

236:231
09/08/22 04:16:29
sudo patch -p0 < 50a2ps.patch
でいけました。lispとは関係なかったですか。

237:デフォルトの名無しさん
09/08/22 07:09:48
>>236
だって、知りたいのはpatchコマンドの使い方だったわけじゃない?
例えば、LinuxカーネルがC言語で書かれてるからって、
C言語のスレでカーネルのコンパイルの仕方とか聞かないでしょ?

diffとpatchは、UNIX系のOSを使う上で知っていると便利だから、
当て方、作り方、読み方は知っておくといいと思う。

ともあれ、無事に当たって良かったね。

238:名無しさん@そうだ選挙に行こう
09/08/30 11:07:48
Python だと、例えば

def foo (*args):
...

の関数を
L = (1, 2, 3)
foo(*L) # foo(1, 2, 3) と同じ意味
と実行することが可能なのですが、emacs lisp でも同様に

(defun foo (&rest args)
...)

の関数の引数をpre-expandすることは可能ですか? イメージとしでは
(setq L '(1 2 3))
(foo *L)
のような感じです。

239:名無しさん@そうだ選挙に行こう
09/08/30 11:19:51
applyを使う
詳しい使い方は(info "elisp")見てくれ

(let ((strs '("foo" "bar" "baz")))
(assert (string= (apply 'concat strs)
(concat "foo" "bar" "baz"))))

240:名無しさん@そうだ選挙に行こう
09/08/30 11:28:59
やはりその用途だと apply を使うしかなさそうですか。
ありがとうございました。

241:名無しさん@そうだ選挙に行こう
09/08/30 11:40:52
度々質問すみません。

`sleep-for' は "without updating display" なので、

(insert foo)
(sleep-for n)

をしても foo の中の文字列がバッファ上に表示される前に
n 秒止まる作用があるのですが、 foo の内容を "表示させた後" に
sleep する方法はありますか?

242:名無しさん@そうだ選挙に行こう
09/08/30 11:44:27
>>241
自己解決しました。 (redisplay t)

243:デフォルトの名無しさん
09/09/01 16:21:41
mode line と echo area を消す方法はありますか?

244:デフォルトの名無しさん
09/09/02 14:43:29
しかし、emacsコアのソースコードは綺麗だなー。

245:デフォルトの名無しさん
09/09/03 03:31:39
Emacsで独自コマンドを定義したいのですが
M-x hoge 3
の用に引数を与えるか、もしくは
M-x hoge
Input number:
の用にプロンプトを出したいです。
両方の方法について調べてみたのですが
どちらについても解説が見つかりませんでした。
どのようにすれば良いのかご教授ください。

246:デフォルトの名無しさん
09/09/03 04:06:45
>>245
前者は interactive の引数に N だか p だかを加える。
後者は (defun hoge () (read-number "Input number: "))


247:デフォルトの名無しさん
09/09/03 04:26:39
ありがとう御座います。
助かりました.


248:デフォルトの名無しさん
09/09/03 22:16:51
interactive に n ってのがあるよ。

249:デフォルトの名無しさん
09/09/05 17:29:11
(defun hoge (num)
(interactive "nInput number:")
(message "%d" num))

250:デフォルトの名無しさん
09/09/05 18:10:26
interactive は関数型的ではないので嫌い。
便利そうに見せかけて逆にプログラムを汚くするから嫌い。
コードレターが文字列に混ざっていてキモイので嫌い。


251:デフォルトの名無しさん
09/09/05 18:23:59
どうしたいんだ?文句いうだけ?

252:デフォルトの名無しさん
09/09/05 19:58:02
>>251
たった今、今年一番のセックルしてきたからこの際素直になるわ。

ごめん、文句言うだけだった。


253:デフォルトの名無しさん
09/09/06 11:39:53
emacs(parentプロセス)が死んだ時に、emacsから立ち上げた
特定のchildプロセスは生き残るようにする方法はありますか?

254:デフォルトの名無しさん
09/09/06 13:31:57
>>253
daemon化するのと同じような処理をする。
二段forkしたり、ttyやプロセスグループを切り離したり。

255:デフォルトの名無しさん
09/09/06 14:22:33
>>254
いままでは bash 経由でそれを実現していたのですが、
emacs の関数でそういったオプション指定は可能なのかと思って質問しました。

256:デフォルトの名無しさん
09/09/11 10:26:26
sense-region.el は使えるんだが、コードがちと orz なんだよな。
emacs 23.* コンパイラーでwarningがでないように、コードクリーンアップ
した人いる?

257:デフォルトの名無しさん
09/09/13 16:36:02
したよ。

rm ./sense-region.el

258:デフォルトの名無しさん
09/09/13 16:48:22
>>257
つまらない。

259:デフォルトの名無しさん
09/09/13 17:36:23
つまらなくはない。

むしろ本質をついたレスだと思う。
哲学的な嫌いはあるけどね。

260:デフォルトの名無しさん
09/09/13 18:34:10
うん、つまらないね。

261:デフォルトの名無しさん
09/09/13 18:51:22
デカルトになぞらえていえば

sense-region.elある故に問題あり

一つの正答だろう。

262:デフォルトの名無しさん
09/09/13 19:06:25
つまらんだろ普通に。

263:デフォルトの名無しさん
09/09/13 19:21:47
つまらなくない。

264:デフォルトの名無しさん
09/09/13 19:24:23
 \もうね、アボカド/ \バナナかと/
                     ┌┐
      ヽ           / /
     γ⌒^ヽ       / / i
     /:::::::::::::ヽ      | (,,゚Д゚)
     /::::::::(,,゚Д゚)       |(ノi  |)
    i:::::(ノDole|)     |  i  i
     ゙、:::::::::::::ノ      \_ヽ_,ゝ
      U"U         U" U

265:デフォルトの名無しさん
09/09/13 22:27:05
>>261
コードがちと orz 故に問題あり
と思われ

266:デフォルトの名無しさん
09/09/15 17:23:24
アホな質問すいません。

dired-do-shell-command したところ、
*Shell Command Output*
のバッファーが kill-bufferで削除できなくなりました。

emacs -Q で起動して試すと削除出来たので、
自分で入れているelispの設定だと思うのですが、
見当がつきません。

kill-bufferで削除できなくするflagとか有りませんでしょうか?

それを単語を元にひっかけようかと思うんですが…

267:Zeno ◆5nZQbNmQPs
09/09/15 17:36:11

>>266

(progn
(setq kill-buffer-hook nil)
(ignore-errors (ad-disable-advice 'kill-buffer 'any ".")))

を実行してみたまえ。


268:266
09/09/16 00:42:32
>>267
レス、どうもです。

上記、S式を評価しても、削除出来ませんでした。

その後、しばらくイジっても削除できず、
結局、再起動したのちshell-command を使って、
そのbufferを削除すると、出来ました。

そして、おかしくなった前回のsessionでやったようなことを順番に行っては
shell-command -> buffer の削除
と、繰り返してみたのですが、すべて削除できてしまいました。

この事象は、今回だけではなく、少し前にも起きたことなので、
まるっきり偶発的でもないと思っています。

ただ、どのような仕組みで、bufferが削除できないのか良く判らないので、
ご存知の方、教えてください。

; 実害は、ないんですけどね。
; 結果を見た後、C-x k を押して、bufferが残ってると
; ちょっと、イラッとくるぐらいで。


269:デフォルトの名無しさん
09/09/24 19:45:25

quote や lambda の内部で予め式を評価する方法がわかりません.
例えば
(let ((v 10))
(lambda (n) (+ n v)))
=> (lambda (n) (+ n v))
これを以下のように評価することは可能でしょうか.
(lambda (n) (+ n 10))

初歩的な質問で申しわけありませんが,ご教示願います.

270:デフォルトの名無しさん
09/09/24 20:19:27
(let ((v 10))
`(lambda (n) (+ n ,v)))

271:デフォルトの名無しさん
09/09/24 20:36:03
>> 270
ありがとうございます.
やはり方法があったんですね,非常に助かりました!!


272:Zeno ◆5nZQbNmQPs
09/09/25 08:16:26

>>269
>>270
その場合は意味合い的に

(lexical-let ((v 10))
(lambda (n) (+ n v)))

とした方が良い。


273:デフォルトの名無しさん
09/09/25 08:49:41
>>272
しかしこういう場合には>>270のやり方の方がいいんではなかろうか。
(setf foo nil)
(lexical-let ((v 10))
(push (lambda (n) (+ n v)) foo)
(incf v)
(push (lambda (n) (+ n v)) foo))
(message (format "%S" (cons (funcall (car foo) 1) (funcall (cadr foo) 1)))) => (12 . 12)


274:Zeno ◆5nZQbNmQPs
09/09/25 09:03:55

>>273
"こういう場合には" とは言うが、そのような
馬鹿げたコードを書く人間は放置されるであろう。
同様のことをしたいのであれば、以下のように書けば良い
(というか、以下のスタイルにするべき)。

(setf foo nil)
(defun bar (v)
(lexical-let ((v v))
(lambda (n) (+ n v))))
(push (bar 10) foo)
(push (bar 11) foo)

(message (format "%S" (cons (funcall (car foo) 1) (funcall (cadr foo) 1))))
=> "(12 . 11)"


275:デフォルトの名無しさん
09/09/25 14:43:03
lexical-let 使うなら (require 'cl-macs) 書いておくべきだろ

276:デフォルトの名無しさん
09/09/25 18:14:35
いつからか知らないけど、少し前から autoload ついてるよ。


277:デフォルトの名無しさん
09/09/26 01:26:35
let と let* で二つに分ける理由ってなんですか?

ついでにもう一つ、macroexpand-系を使って、
マクロ動作を勉強してるんですが、
*Message*バッファには省略形のリストしか表示されないです。
全部理解するには、edebug-defunでデバッガ起動するしかないのですか?

278:Zeno ◆5nZQbNmQPs
09/09/26 03:08:07

>>277
> let と let* で二つに分ける理由ってなんですか?

(let* ((x 1)
(y x))
(cons x y))
=> (1 . 1)

(let ((x 1)
(y x))
(cons x y))
=> Error ...

let* は (let 変数定義1 (let 変数定義2 (let ...)))
という風にletでネストされていると考えても良い。

分かったら固定ハンドルを付けろ。


279:デフォルトの名無しさん
09/09/26 03:09:45
いや意味の違いじゃなくて”何故”両方ある必要があるのかって質問でしょ

280:Zeno ◆5nZQbNmQPs
09/09/26 03:11:02

>>279
> いや意味の違いじゃなくて”何故”両方ある必要があるのかって質問でしょ

| let* は (let 変数定義1 (let 変数定義2 (let ...)))
| という風にletでネスト

するのが面倒だから。


281:269
09/09/26 04:27:21
>>272-276
回答頂きありがとうございます.
まだ未熟でコードの善し悪しの判別は付きませんが,提示頂いた lexical-let
を使って書くことにしました.

ちなみに quote 内で評価する場合は(回答頂いた中では) >>270 でしか展開さ
れないみたいですね.

(lexical-let ((s "test"))
(quote s))
=> s
(let ((s "test"))
`(quote ,s))
=> "test"

非常に勉強になりました!!


282:Zeno ◆5nZQbNmQPs
09/09/26 04:41:58

>>281
> ちなみに quote 内で評価する場合は(回答頂いた中では) >>270 でしか展開さ
> れないみたいですね.

当たり前だ。 quote は数ある special form の一つで、
その引数は評価されないまま内部に渡される。

根本的に理解できていないようだから、まずは common lisp から
学んでみることを勧める。

わかったらさっさと本屋に直行しろ。


283:Zeno ◆5nZQbNmQPs
09/09/26 04:47:51

私は emacs スレを長らく留守にしていたのだが、
フンバリャーウンコ・ヨーデルは現れなかったかね?

フンバリャーウンコ・ヨーデルはいるかね? 見ているなら返事をしたまえ。


284:269 ◆PC9p7J5igw
09/09/26 05:59:41
>>282
quote については理解しているつもりですが,
今回は引数を渡す前に例外的に評価されるようにしたかったのです.

quote でも渡される前に評価されると思ったのは, lambda が function で内
包して返すマクロだからです.
(macroexpand (lambda () "test"))
=> (function (lambda nil "test"))

しかし,function でも渡される前に評価されるわけではないんですね
(lexical-let ((s "test"))
(function s))
=> s

そもそも help に書いてありました...
>lambdas inside BODY will create lexical closures

lisp を理解できていないのは自覚しているのでアドバイス通り common lisp
から勉強したいと思います.


285:デフォルトの名無しさん
09/09/26 08:39:51
復刊なった「はじめての人のためのLisp」が発売されたら、
少しは、「少しは本を読め」な質問減るかなぁ。

286:デフォルトの名無しさん
09/09/26 09:37:27
CommonLispを勉強したら
EmacsLispが嫌になっちゃったりして。

287:デフォルトの名無しさん
09/09/26 11:05:12
そしたらようこそwin&xyzzy
Macで使えたらなぁ…

288:デフォルトの名無しさん
09/09/26 11:12:08
ソース公開されてるよ。C++で書かれていたので面倒くさくて読んでないけど。

289:デフォルトの名無しさん
09/09/26 18:52:57
Common Lisp と Emacs Lisp の関数の対照表みたいなのってある?

290:Zeno ◆5nZQbNmQPs
09/09/26 20:56:17

>>289
ああ、在る。


291:Zeno ◆5nZQbNmQPs
09/10/02 16:10:23

>>284
頑張れよ
URLリンク(www.gnu.org)


292:デフォルトの名無しさん
09/10/05 22:29:10
Emacs LispとCommon Lispの違いは何でしょうか?
私はUbuntuにclispをインストールし、端末上でClispを起動した後,(format t "Hello World")と打ち込んでEnterを押しました。
実行結果として、端末にHello Worldと表示されました。

しかし、Emacs上で上記を打ち込んでCtrl + jを押しますと、エラーらしき文章が・・・
Emacs Lisp と Common Lispというのは方言の違いを表しているのでしょうか、

実際に、出来ることと出来ないことの差というものもあるのでしょうか?



293:デフォルトの名無しさん
09/10/05 22:37:44
そりゃ別のものだからね。差もあるだろう。

294:デフォルトの名無しさん
09/10/05 22:43:04
>>293
Emacs lispの使われる用途
Common lispの使われる主な用途
を教えてください。

また、上記両方のlispに関して参考サイトとしての大御所・・・と言えるような海外サイトがあれば教えて頂きたい


295:デフォルトの名無しさん
09/10/05 22:50:08
Emacs Lisp はそりゃ Emacs を拡張したり開発したりするのに使う。
Common Lisp はもっと計算速度が欲しいとか大規模なものを作る人々が使う。
大御所ねぇ。権威が欲しいならHaskellとかScalaとかピカピカのやつやったほうがいいと思うよ。

296:デフォルトの名無しさん
09/10/05 22:53:29
成る程・・・
わかりました。最初はCommon Lispから始めようと思います。それでは

297:デフォルトの名無しさん
09/10/05 22:54:26
オイオイ…
Emacs Lisp は Emacs の名を冠するだけあって Emacs の拡張・カスタマイズ用に決まっておろうが。
Emacs は本当に基本的なコアを除いて Emacs Lisp で書かれてるんだぜ。

Common Lisp の主な用途って言っても汎用言語の主な用途なんて言ってもしょうがないと思う。
とりあえず Common Lisp スレがあるからそっち行け。

298:デフォルトの名無しさん
09/10/05 23:10:48
URLリンク(www.ice.nuie.nagoya-u.ac.jp)

299:デフォルトの名無しさん
09/10/06 09:26:11
lispは方言が多い言語としても有名なんだったよね。

300:デフォルトの名無しさん
09/10/06 23:01:43
ruby

301:デフォルトの名無しさん
09/10/07 00:35:00
JavaScript も Lisp in C's Clothing だ

302:デフォルトの名無しさん
09/10/07 00:39:37
標準ライブラリみたいなもんって lisp だと何?

303:デフォルトの名無しさん
09/10/07 00:42:55
CL なら CLtL2
Scheme なら SRFI

304:デフォルトの名無しさん
09/10/07 17:19:58
Emacs Lisp でウェブアプリって書けないかな?
ウェブできればグラマーの幅が広がって共有ノウハウも増えるはずなんだけど。

305:デフォルトの名無しさん
09/10/07 18:11:57
グラマー?

306:デフォルトの名無しさん
09/10/07 18:40:55
トランジスタ?

307:デフォルトの名無しさん
09/10/07 19:13:58
>>304
そりゃ書けると思うけどグラマーの幅が広がるって意味がわからん。
ウェブアプリってのもクライアントなのかサーバアプリなのかわからん。
前者なら普通に存在してるよ。

あと昔Emacsで動くhttpdなんてのも作られてたよ。
こんなん。

URLリンク(sachachua.com)
URLリンク(elserv.sourceforge.net)

308:デフォルトの名無しさん
09/10/07 22:58:12
>>304
ウェブのソフトウェアなんてシェルスクリプトでも書けるんだぜ。
Emacs のノウハウを心配するより、君自身のノウハウを増やした方が良いと思うぞ。

309:デフォルトの名無しさん
09/10/09 12:57:59
GNU Emacs 23.1.1 (i386-mingw-nt5.1.2600) of 2009-07-30 on SOFT-MJASON で EmacsWiki から持ってきた
anything, anything-config を使っています。

anything-sources に anything-c-source-* 一つずつ足していって試してみているのですが
anything-c-source-info-elisp を足したところで

progn: Symbol's function definition is void: Info-find-node

とエラーを吐いて止ってしまいます。

Enter Debugger on Error を使ってみたところ、*Backtrace*に次のようなメッセージ(次レスに貼ります)が出ました。

どうやら Info-find-node が定義されていないとのことですが
どう対処してよいかわかりません。
何かアドバイスをいただけませんでしょうか?

310:デフォルトの名無しさん
09/10/09 12:59:28
Debugger entered--Lisp error: (void-function Info-find-node)
(Info-find-node "elisp" "Index")
(progn (Info-find-node "elisp" "Index") (setq anything-c-info-elisp (split-string ... "\n")) (Info-exit))
(unwind-protect (progn (Info-find-node "elisp" "Index") (setq anything-c-info-elisp ...) (Info-exit)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
(save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn ... ... ...) (and ... ...)))
(with-current-buffer temp-buffer (unwind-protect (progn ... ... ...) (and ... ...)))
(let ((temp-buffer ...)) (with-current-buffer temp-buffer (unwind-protect ... ...)))
(with-temp-buffer (Info-find-node "elisp" "Index") (setq anything-c-info-elisp (split-string ... "\n")) (Info-exit))
(if anything-c-info-elisp nil (with-temp-buffer (Info-find-node "elisp" "Index") (setq anything-c-info-elisp ...) (Info-exit)))
(unless anything-c-info-elisp (with-temp-buffer (Info-find-node "elisp" "Index") (setq anything-c-info-elisp ...) (Info-exit)))
(save-window-excursion (unless anything-c-info-elisp (with-temp-buffer ... ... ...)))
(lambda nil (save-window-excursion (unless anything-c-info-elisp ...)))()
apply((lambda nil (save-window-excursion (unless anything-c-info-elisp ...))) nil)
(let ((anything-source-name ...)) (apply func args))
anything-funcall-with-source(((name . "Info Elisp") (init lambda nil (save-window-excursion ...)) (candidates lambda nil (loop for i in anything-c-info-elisp if ... collect ...)) (ここで改行を挿入)
(action lambda (candidate) (Info-find-node "elisp" "Index") (Info-index ...)) (volatile) (requires-pattern . 2)) (lambda nil (save-window-excursion (unless anything-c-info-elisp ...))))

311:デフォルトの名無しさん
09/10/09 12:59:35
(while --cl-dolist-temp-- (setq func (car --cl-dolist-temp--)) (anything-funcall-with-source source func) (setq --cl-dolist-temp-- (cdr --cl-dolist-temp--)))
(let ((--cl-dolist-temp-- ...) func) (while --cl-dolist-temp-- (setq func ...) (anything-funcall-with-source source func) (setq --cl-dolist-temp-- ...)) nil)
(catch (quote --cl-block-nil--) (let (... func) (while --cl-dolist-temp-- ... ... ...) nil))
(cl-block-wrapper (catch (quote --cl-block-nil--) (let ... ... nil)))
(block nil (let (... func) (while --cl-dolist-temp-- ... ... ...) nil))
(dolist (func (if ... ... it)) (anything-funcall-with-source source func))
(if it (dolist (func ...) (anything-funcall-with-source source func)))
(let ((it ...)) (if it (dolist ... ...)))
(anything-aif (assoc-default sym source) (dolist (func ...) (anything-funcall-with-source source func)))
(while --cl-dolist-temp-- (setq source (car --cl-dolist-temp--)) (when (symbolp source) (setq source ...)) (anything-aif (assoc-default sym source) (dolist ... ...)) (setq --cl-dolist-temp-- (cdr --cl-dolist-temp--)))
(let ((--cl-dolist-temp-- ...) source) (while --cl-dolist-temp-- (setq source ...) (when ... ...) (anything-aif ... ...) (setq --cl-dolist-temp-- ...)) nil)
(catch (quote --cl-block-nil--) (let (... source) (while --cl-dolist-temp-- ... ... ... ...) nil))
(cl-block-wrapper (catch (quote --cl-block-nil--) (let ... ... nil)))
(block nil (let (... source) (while --cl-dolist-temp-- ... ... ... ...) nil))
(dolist (source (anything-get-sources)) (when (symbolp source) (setq source ...)) (anything-aif (assoc-default sym source) (dolist ... ...)))
anything-funcall-foreach(init)
ad-Orig-anything-initialize()
(setq ad-return-value (ad-Orig-anything-initialize))
(let (ad-return-value) (setq anything-c-adaptive-done nil) (setq ad-return-value (ad-Orig-anything-initialize)) ad-return-value)
anything-initialize

312:デフォルトの名無しさん
09/10/09 19:30:54
info.el ロードされてないんだな。anything より前に
(require 'info)
とでも書いたらどうかな。

313:デフォルトの名無しさん
09/10/09 19:53:14
>>312
ありがとうございました。できました。

314:デフォルトの名無しさん
09/10/10 00:32:01
Emacs怖い。数十年後もEmacs使ってそう。

315:デフォルトの名無しさん
09/10/10 21:12:34
選択した語をサーチエンジンで検索してw3mで表示するelispってあります?

316:デフォルトの名無しさん
09/10/10 22:31:51
どっかで拾った google.el ってのがそんな挙動だな。
内容は region が活性だったら google 用の検索 URL 作って
browse-url で デフォルトのブラウザ呼び出すだけのシンプルなのだったけど。

317:デフォルトの名無しさん
09/10/10 22:54:01
EmacsWikiのdim-google.elっていうのが求めるものでした
探せばすぐに見つかるものでしたね
お手数をかけました

318:デフォルトの名無しさん
09/10/10 23:37:36
孫にEmacsの手ほどきをするのが老後の夢


319:デフォルトの名無しさん
09/10/10 23:55:47
emacsをp2pで繋ぐのが夢だ

320:デフォルトの名無しさん
09/10/15 16:27:56
Emacsがmacびいきな名前だからEwinsにするのが俺の夢だ。

321:Zeno ◆5nZQbNmQPs
09/10/15 16:41:39

>>320
自分でソースを引っ張ってきて、ソース内、そしてファイル名に含まれる
[Ee]macs を [Ee]wins に変換すれば良いだろうが。



322:Zeno ◆5nZQbNmQPs
09/10/15 16:45:56

>>320
それと一応教えておくが、MacよりもEmacsの方が先だ。

もしそういうことにしたいのであれば「Emacsがmacびいきな名前」ではなく、
「MacがEmacsびいきな名前」と解釈するのが正しい。


323:デフォルトの名無しさん
09/10/15 17:14:51
いまどきEmacsなんか使ってたら厨か老人扱いだろ。
なんでそうなったかっていうと、圧倒的大多数を占めるWindowsに
インターフェースを合わせなかったからだろうな。
標準をWindowsに合わせて、オプションで旧Emacsを選べるのが
本来の正しい姿。

324:デフォルトの名無しさん
09/10/15 17:17:24
>>323
君面白いねw

というかWindowsがEmacsにあわせるべき。
Macはもう合わせてる。


325:Zeno ◆5nZQbNmQPs
09/10/15 17:31:04

中身が理解できていない為、デフォルトの見た目について
あれこれ文句を言うことしかできない真性の阿呆は放っておけ


326:デフォルトの名無しさん
09/10/15 17:35:42
xkeymacsでええやん

327:デフォルトの名無しさん
09/10/15 19:00:12
「窓使いの憂鬱」も忘れないで!


328:デフォルトの名無しさん
09/10/15 20:07:39
ありゃキーロガーだから死すべきもの

329:デフォルトの名無しさん
09/10/15 21:24:17
>>320
URLリンク(www.ueda.info.waseda.ac.jp)
Emacs ライクな Scheme ベースのエディタ Edwin
ただし日本語は通らないらしいが

330:デフォルトの名無しさん
09/10/15 22:15:20
なんでEmacsはwindowsで使えないの?
windowsアンチなの?

331:デフォルトの名無しさん
09/10/15 22:28:12
なんでwindowsではEmacs使えないの?
Emacsアンチなの?


332:デフォルトの名無しさん
09/10/15 22:41:05
なんでwindowsでEmacs使えないと思ってるのかが謎だ

333:デフォルトの名無しさん
09/10/15 23:12:35
meadowもemacsだろ

334:デフォルトの名無しさん
09/10/16 00:20:17
emacsでパソコンとお友達になれますか?

335:デフォルトの名無しさん
09/10/16 00:29:15
オフィシャルに Windows のバイナリもあるというに。

336:デフォルトの名無しさん
09/10/16 00:42:28
いまどきMeadowはないだろ。。。

337:デフォルトの名無しさん
09/10/16 00:46:58
meadowはemacsenだけどNTEmacsはEmacsだよな

338:デフォルトの名無しさん
09/10/16 16:43:29
xyzzy も忘れずに

339:デフォルトの名無しさん
09/10/16 19:42:53
Windows マシンを持ってないんだけど、xyzzy って Emacs ユーザから見て実際どうなの?

・これだったら Emacs で十分だぜ
・これなら十分 Emacs の代替になるな
・こ、これは Emacs より断然スゲー!

340:デフォルトの名無しさん
09/10/16 19:52:42
mgみたいなもの

341:デフォルトの名無しさん
09/10/16 20:10:49
それは elisp が使えなければ Emacs に非ずって事かな?

342:デフォルトの名無しさん
09/10/16 20:18:49
Emacs 的に見るとまがいもんだけど、
エディタ全般的に見ると xyzzy には xyzzy の良さがある。
着想の元が Emacs だとしても今では別物。
比較するようなもんじゃない。

343:デフォルトの名無しさん
09/10/16 20:26:26
なるほど、別物なのか…
ありがと。

344:デフォルトの名無しさん
09/10/16 22:59:31
Emacsとして見ようとすると違和感があるけど、
Windowsアプリとして見るとEmacsより違和感が無いって感じ(´・ω・`)

345:デフォルトの名無しさん
09/10/16 23:00:56
メモ帳感覚で使えて、かなりemacsぽくもつかえる

346:デフォルトの名無しさん
09/10/16 23:08:32
正直、Windowsつこうてる時は、Emacsよりもxyzzy使うことのほうが多い僕は異端児。

347:デフォルトの名無しさん
09/10/17 08:41:20
ただ細かい部分でEmacsと違うから
Emacs好き好きすぎるとかえってストレスたまるかもしれんね。


348:デフォルトの名無しさん
09/10/17 09:17:51
Emacs好き好きだったら当然Window上でも本物Emacs入れてるでしょ。
今のWindows用EmacsはUSBに入れて持って歩けるしね。


349:デフォルトの名無しさん
09/10/24 18:44:32
emacsそのものより利用者が作ったライブラリとか付属のelispを使う為ってのが大きい

350:デフォルトの名無しさん
09/10/24 20:49:56
>>349
大昔にマイコンさわったときの最初のエディタがmince(micro emacs)だったと言うだけでemacs以外さわれない体になった俺みたいなのもいる(普通はwordmasterだった頃)
RPN電卓さわってしまった工学系学生とおなじようなもんだけど


351:デフォルトの名無しさん
09/10/24 20:56:13
よく「最初にXXXXをさわったからXXXXしか使えなくなった」って言う人がいるけど
単に適応能力が普通の人に比べて足りてない能無しってだけだよね。
価値のある体験談でもないし勿論自慢にはならない。

352:デフォルトの名無しさん
09/10/24 21:09:32
さわれないっていうよりさわりたくない、ぐらいだろね
必要にせまられればどんなエディタでも結構なんとかなったりする


353:デフォルトの名無しさん
09/10/24 21:26:45
>>351
もちろん君はQwerty配列でもDvorak配列でも全く同等に使えるんだよね?

354:デフォルトの名無しさん
09/10/24 21:41:26
>>351
emacsとvi好きに喧嘩売るとはなんという宗教戦争マニア!


355:デフォルトの名無しさん
09/10/24 21:47:06
>>351
エディタとか割とよく使うもの(鉛筆とノートのように)だと最初の原体験で得た物と次にさわった物の間で入力速度に差があると二度と他に移りたくなくなる物だよ
今の時代のようにしょっちゅう入れ替えができたり物が選べる時代じゃないならなおのことだ(当時はストレージがFDドライブ二個が上限だったしエディタ買うのだってものすごく高価だった)

今でも各種IDEのキーバインドにエディタ名を冠した設定がある事がそれを物語ってるよ


356:デフォルトの名無しさん
09/10/25 01:38:28
仕事だとそんなふぬけたこと言ってらんないんだけどね。


357:デフォルトの名無しさん
09/10/25 01:51:57
>>353
それ、良い喩えだね。面白い。

358:デフォルトの名無しさん
09/10/25 02:00:11
>>353
どっちも十分に経験していれば、当然どっちも十分に使えるだろうね。
普通の人は。

脳に欠陥のある人は、二つ目の経験が一つ目を吹き飛ばしてしまうかも。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5201日前に更新/147 KB
担当:undef