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

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

359:デフォルトの名無しさん
09/10/25 02:16:32
一時期 RPN 電卓を覚えようとした事があったけど、常にパソコンを
携帯していたので電卓の出番が無くて結局覚えられなかったなあ。

bc って打つ代わりに dc って打てば良いだけだったんだけど、そこは
やっぱり人の性、要らん物は覚えないね。

360:デフォルトの名無しさん
09/10/25 03:16:49
「一事なれば万事成る」っていうじゃないか。
まず一つの事を深く知ることが大事だろ。


361:デフォルトの名無しさん
09/10/25 03:48:27
>>358

>どっちも十分に経験していれば、当然どっちも十分に使えるだろうね。

ただし、
日本ではQwertyを強制される機会は多くてもDvorakを強制される機会はほとんどないため
普通の人はQwertyしか使えない。
自分で乗りかえようと思い立った人か幸運にも最初がDvorakだった人のみが
Dvorakを使えるというのが現状。

だからどっちも十分に経験していれば、という前提が非常にレアケース。

普通の大部分の人は
「最初にQwertyをさわったからQwertyしか使えない。」

362:デフォルトの名無しさん
09/10/25 05:14:32
>>361
もっともらしく文章書いてるが結論でいきなり論理が飛躍している上に間違っている。阿呆。
最初にQwertyをさわったからQwertyしか使えない。
ではなく
QwertyしかないからQwertyしか使わない。
程度の事しかおまえさんの文章では結論できない。

363:デフォルトの名無しさん
09/10/25 05:21:04
>>362

>QwertyしかないからQwertyしか使わない。
そこらじゅうにDvorakに触れる機会はあるよ。
ただみんなそれを選んでないしそうする必要もないだけ。

だから普通は選ばない。
理由は慣れてないから。
なぜ慣れていないかと言うと普通は最初にDvorakを触っていないから。覚えるコストも大きい。

どこか違うの?


364:デフォルトの名無しさん
09/10/25 09:32:36
そんなことよりいい加減スレ違いなのに気付こうぜ。
最初に触れたのが Common Lisp だから Emacs Lisp が気持ち悪いって話題ならともかく・・・

365:デフォルトの名無しさん
09/10/25 09:51:46
>>353
もれはASCII配列のQWERTYしか使えない

366:デフォルトの名無しさん
09/10/25 10:53:59
ANSI配列って言いたいんだろうな

367:デフォルトの名無しさん
09/10/25 10:55:25
Emacsユーザの場合、「使えない」には3つのパターンがある。
a)操作性が同じじゃないので使えない。
b)XXXというEmacsLispと同等のものを、他のエディタ上で用意できない。
c)作り貯めたマクロを移行するのが大変すぎる。
aは極論すれば慣れればなんとかなるわけだが、Emacs歴20年です、
という人なんかはb, cが大変だと思われ。

368:367
09/10/25 11:00:48
で、個人的にはもう一つ、
d)クラスプラットフォームでGUIでもターミナルエミュレータでも使えるエディタが極めて限られる。
てのがあって、Emacsを捨てたくてたまらないのに(今のところ)移行先が見当らないという……。

369:デフォルトの名無しさん
09/10/25 11:26:48
自分が使うエディタは好きな物を選べるから、実質上困った事無いなあ。
困ってない事を解決するのは余程の暇人じゃないと難しい。

370:デフォルトの名無しさん
09/10/25 12:12:36
人によって環境違うしな。
UNIX上での仕事メインならEmacs使うのになんの支障もないだろし
他のOSでもエディタの指定がゆるいならバリアントを入れればいいし
仕事じゃなくて趣味ならおさっしだし。

navi2chしか使ってないくせにEmacsしかもう使えない!なんていってるやつは
死ねばいい

371:デフォルトの名無しさん
09/10/25 12:23:04
>navi2chしか使ってないくせにEmacsしかもう使えない!なんていってるやつは
>死ねばいい
流石にネタだと思いたい


372:デフォルトの名無しさん
09/10/25 14:31:24
あーいそうだそういうのw
UbuntuインストールしただけでLinuxマスター(笑)になっちゃって
わけしり顔でWindows批判はじめだすような人種だな

373:デフォルトの名無しさん
09/10/25 15:36:31
仮想敵かよ

374:デフォルトの名無しさん
09/10/25 17:56:56
♪見えない敵にマシンガンを〜

375:デフォルトの名無しさん
09/10/25 18:58:43
見えない敵ではなく、見える雑魚だろう。

376:デフォルトの名無しさん
09/10/25 19:25:34
deffaceはどうやらdefvarと同じく上書きがされないみたいなんだけど
このdeffaceの引数と同じ書式で上書き可能な関数ってあります?
(set-face-* ...)もあるけど、できればまとめて定義したいので


377:デフォルトの名無しさん
09/11/08 15:28:54
>>376
set-face-attribute とか?

378:デフォルトの名無しさん
09/11/13 21:23:30
>>377
それだと引数がリストじゃないんですよね。。

とりあえず自分でdeffaceを弄ったものが期待どおりに動いたのでよしとします
URLリンク(paste.lisp.org)


379:デフォルトの名無しさん
09/12/01 21:03:37
こんなのってない?

【プログラミング万歩計】
ファイルの拡張子ごと、日付ごとに自分が何回タイプしたか統計を取る。
健康増進的なノリでプログラミング力を鍛える励みにする。




380:デフォルトの名無しさん
09/12/01 21:20:13
>>379
outputz.el みたいなの?

381:デフォルトの名無しさん
09/12/01 21:26:16
みたいなのっていうかそのものっぽいな。
拡張子毎ってあたりは適当に細工しなきゃいけないだろうけど。



382:379
09/12/01 22:05:16
>>380,381
どうもです。
調べてみます。


383:デフォルトの名無しさん
09/12/02 00:41:20
elispでチャット作ったけど使ってくれる人がいない

384:デフォルトの名無しさん
09/12/02 06:15:34
全emacsenが泣いた

385:デフォルトの名無しさん
09/12/04 14:20:13
emacs 上で現在動いている timer の一覧を得る、なんてことはできませんか?


386:デフォルトの名無しさん
09/12/04 20:44:03
10年くらい前に書いた関数だけど、まだ動きそう。

(defun describe-timer ()
(interactive)
(let ((tl timer-list)
timer)
(pop-to-buffer (get-buffer-create "*timer*"))
(erase-buffer)
(insert
"TIME FUNCTION\n"
"-------------- --------------------------\n")
(while tl
(setq timer (car tl))
(insert
(concat
(format-time-string "%m/%d %T"
(list (aref timer 1)(aref timer 2)(aref timer 3)))
" "
(symbol-name (aref timer 5))
"\n"))
(setq tl (cdr tl)))))


387:デフォルトの名無しさん
09/12/06 01:38:29
timer-list に保管されてるのか。
すばらしい。ありがとう!!


388:デフォルトの名無しさん
09/12/09 04:58:04
スレ違いですが、教えてください。
さっきMeadowを使っている人は少なくて本家のgnu emacs winバイナリを使っている人が主流みたいに書いてあったのですが、みなさん日本語入力はどうしてます?

389:デフォルトの名無しさん
09/12/09 08:35:32
skk

390:デフォルトの名無しさん
09/12/09 08:43:22
なるほどSKKですか、MS-IMEやATOKを使っている方はいらっしゃらないでしょうか。
そもそも使う方法はないのでしょうか。

391:デフォルトの名無しさん
09/12/09 16:37:41
>>388
なぜ、このスレで質問してるのか、よくわからないが、MS-IMEでMeadowに入力できたと思うけどなあ。
で、Meadowで何をしたいんだ?
emacsを使いたいなら、マウスを持たずにCUIで作業するのが理想だと思うなあ。

392:デフォルトの名無しさん
09/12/09 16:48:44
>>391
いきなりマウスの話題が出てきた理由って何なの?

393:デフォルトの名無しさん
09/12/09 17:32:46
>>391
ん?
Meadow じゃなく gnu emacs win バイナリで日本語入力はどうしてるの?
って質問じゃないかと。

394:デフォルトの名無しさん
09/12/09 18:31:32
URLリンク(ntemacsjp.sourceforge.jp)

395:デフォルトの名無しさん
09/12/09 20:05:24
>>391
elispスレなので、本家のgnu emacsを好む方が多いかなと思って質問させていただきました。

>>394
23baseがあれば嬉しいですが、すみません、わがまま言いすぎですよね。

396:デフォルトの名無しさん
09/12/09 20:10:24
>>394
すみません。リンク先をよく見ていませんでした!
emacs23のIMEパッチをしてくださったんですね。早とちりしてNTemacsのことだと思っていました。すみません。
さっそく試してみます。ありがとうございました!

397:デフォルトの名無しさん
09/12/10 00:13:25
y-or-n-p関数についてなんですが
* 端末から利用するとQuit(\C-g)が効く
* Xから利用するとQuitが効かない
てのは、正しい動作なんでしょうか?


398:デフォルトの名無しさん
09/12/10 01:44:25
今、X上のemacsで (y-or-n-p "hoge") とやってみたけど C-g でquitできたよ。

399:デフォルトの名無しさん
09/12/10 23:00:27
>>398
てことは、ウチの環境だけみたいですかね。。
正しくはXじゃなくてGTK@Ubuntuなんですけど

400:デフォルトの名無しさん
09/12/20 05:31:59
sql-mode をつかってるんだけど、"REM" をコメント風に認識させられない?
remark 文の中の '09/12/20 みたいな ' 文字がでる度に string だと認識されて困る

401:デフォルトの名無しさん
09/12/30 17:25:39
来年は elisp がネイティブコンパイルできる様になります様に ナムナム

402:デフォルトの名無しさん
10/01/18 17:31:37
message 関数の様に使えてC言語の fprintf のようにファイル(バッファでもいいけど)に
出力する関数ってありますか?

403:デフォルトの名無しさん
10/01/18 17:53:44
>>400
よくわからんが mmm-mode とか使えないの?

404:デフォルトの名無しさん
10/01/18 18:11:53
>>402
format


405:デフォルトの名無しさん
10/01/18 19:04:47
format って sprintf ですよね。string とか変数作って いちいち concat して
set-buffer して insert しないといけないんでしょうか。

質問ばかりですみません。

406:デフォルトの名無しさん
10/01/18 19:21:32
(defun insert-to-buffer (buf fmt &rest args)
(with-current-buffer buf
(insert (apply #'format fmt args))))
みたいな関数を自分で作っちゃえばいいんじゃない?
標準にありそうな匂いがプンプンするけど

407:デフォルトの名無しさん
10/01/18 19:43:12
>>406
とりあえずありがとう。やりたい事がやっとできました。

408:デフォルトの名無しさん
10/01/19 20:10:59
>>402
sprintfのようにフォーマットの指定まではできないが
文字列の出力先を指定する関数はいくつかある。print/prin1/princなんかがそう
(princ (format "Hello %s.\n" "Emacs") (find-buffer "*scratch*"))

(info "(elisp) Output Streams") も参照
emacsの場合はファイルよりもバッファをやりくりするのが基本かな。


409:デフォルトの名無しさん
10/01/19 21:12:16
リージョン内の数字にカンマを打とうと思って、

(defun ins-comma (start end)
"insert comma to digits in region."
(interactive "r")
(let ((res t))
(while res
(save-excursion
(goto-char start)
(if (setq res
(re-search-forward "\\([0-9]+\\)\\([0-9]\\{3\\}\\)" end t))
(replace-match "\\1,\\2" nil nil))))))

とすると、リージョンの尻にある数字にマッチしません。
どこが間違ってるでしょうか。
re-search-forwardの第二引数をnilにすればマッチするんですが。

410:デフォルトの名無しさん
10/01/21 19:22:28
・endがマーカーじゃない
・replace-matchにより該当部分の長さが変わる
・前から順に書き換えている
から。

411:デフォルトの名無しさん
10/01/21 19:25:32
わかりました。ありがとうございます。

412:デフォルトの名無しさん
10/01/22 08:51:54
先生、質問があります。以下のように defvar で定義されたリストを関数の一
部として使っているような場合に、edebug してトレースしたいときは、どう
すれば良いのでしょうか? (以下の場合では、anything-c-source-recentf の
中をトレースしたい。 )

(defvar anything-c-source-recentf
'((name . "Recentf")
(candidates . recentf-list)
(match . (anything-c-match-on-file-name
anything-c-match-on-directory-name))
(type . file))
"See (info \"(emacs)File Conveniences\").")

(anything 'anything-c-source-recentf)

413:デフォルトの名無しさん
10/01/22 17:09:30
質問の前提が間違ってます。

414:デフォルトの名無しさん
10/01/23 03:29:24
>>413
前提というのは、「defvar で定義されたリストを関数の一部」かなと思うから
anything コードを見てみたら、必要に応じてリストから部分的に取り出して
使ってるように見えるから前提があってない。 そういうこと?

だから edebug でトレースは無理ということで終了?


415:デフォルトの名無しさん
10/01/23 14:47:01
そう。edebugするなら対象はanythingの中の
> anything コードを見てみたら、必要に応じてリストから部分的に取り出して
> 使ってる
この部分になるでしょう。

416:デフォルトの名無しさん
10/01/27 03:38:30
>>414
レスありがとう。やってみます!!

417:デフォルトの名無しさん
10/01/31 08:49:08
テスト

418:デフォルトの名無しさん
10/02/08 16:01:36
こんにちは。hash について質問させてください。

(defun case-fold-string= (a b)
(compare-strings a nil nil b nil nil t))

(defun case-fold-string-hash (a)
(sxhash (upcase a)))

(define-hash-table-test 'case-fold
'case-fold-string= 'case-fold-string-hash)

(setq lang-hash (make-hash-table :test 'case-fold))

elisp info にあるように上記のようにして、ハッシュを作成してみましたが、
キーによっては、以下のようにハッシュ値が同じになってしまい、うまくいき
ません。こういう場合は、どうするんでしょうか?

(case-fold-string-hash "RU")1397
(case-fold-string-hash "SE")1397



419:デフォルトの名無しさん
10/02/08 16:30:25
>>418
ハッシュ値は関係ないと思う
完全ハッシュ関数を作らないかぎり、ハッシュ値はふつう重複する
Wikipedia のハッシュテーブルとかハッシュ関数の頁を参照

で、問題は compare-strings は文字列が一致しないときに数値を返すこと
(defun case-fold-string= (a b)
(string-equal (upcase x) (upcase y)))
ならうまく動いた

420:デフォルトの名無しさん
10/02/11 09:52:56
>>419
ありがとうございます。同じハッシュ値をもつキーでもバリュー値を上書きす
るわけじゃないんですね。

421:デフォルトの名無しさん
10/02/12 14:13:42
Emacs Lisp で書かれたものってソフトウェア?

422:デフォルトの名無しさん
10/02/12 14:52:36
そう。

423:デフォルトの名無しさん
10/02/12 14:58:35
すくなくともハードウェアでないことは確か。

424:デフォルトの名無しさん
10/02/12 15:20:20
OK

425:デフォルトの名無しさん
10/02/18 02:41:54
java-mode でインデントを2にしたいのですが、
下のlispを.emacsに書いても反映されません。 C-x C-e でも同様でした。
.emacsに書いてる他の部分は反映されています。

(add-hook 'java-mode-hook
'(lambda ()
(setq default-tab-width 2)
(setq tab-width 2)))

何がおかしいのか調べるにはどうすべきでしょうか?

Emacsの単なる使用にあたるのか、
Lispになるのかわからなかったのでこちらに書き込ませて頂きました。


426:デフォルトの名無しさん
10/02/18 02:55:15
(setq c-basic-offset 2)

427:デフォルトの名無しさん
10/02/18 04:42:31
>>426
できました!
ありがとうございます。

428:デフォルトの名無しさん
10/02/18 09:45:25
>>425
フック書かなくてもできる。
(c-add-style "java2" '("java" (c-basic-offset . 2)))
(setq c-default-style
'((java-mode . "java2")
(other ."k&r")))

429:デフォルトの名無しさん
10/03/11 00:38:15
>>400
syntaxテーブルにREM追加すりゃよいかも。
-- で検索すれば雰囲気つかめるんじゃない。

430:デフォルトの名無しさん
10/03/11 00:41:58
(defun a (arg) (+ 1 arg))
をさ、
+ 1 じゃなくて、 + 2にしたいときってどうすればlispっぽくかけます?

431:デフォルトの名無しさん
10/03/11 03:03:52
(defun a (arg n)
 (if (< n 2)
  (+ 1 arg)
  (a (arg (+1 n))))
(a num 0)

432:デフォルトの名無しさん
10/03/11 03:05:10
(defun a (arg n)
 (if (< n 2)
  (+ 1 arg)
  (a arg (+1 n)))

(a 12 0)

433:デフォルトの名無しさん
10/03/11 03:43:32
>>430
質問の意味がまるでわからないけど
(defun a (arg &optional n)
(+ arg (or n 1)))
ということ?
>>432
n >= 2 のとき停止しないような
あと、 Emacs Lisp は末尾再帰の最適化が効かないから
適当にループを使った方がいい

434:430
10/03/11 23:25:22
あぁぁごめんなさい、すでに a って定義されてるけど、
+ 1 じゃなくて + 2 にしたいなー

っていう時です。
複雑で便利な関数がすでに定義されてあるけど、
なんでこの部分だけこうなんだ!コピペするのはなんだかなぁ・・・
ってときに、リストってのを利用して良い方法はないものかと。


435:430
10/03/11 23:27:04
連投さーせん。
さらに、a はすでに定義されてていろんなパッケージで使われてるから、
aの使い方は崩したくない。
そして、aにパッチも送りたくないから、aの定義があるソースコードは
変更しない。って感じ。

436:430
10/03/11 23:31:32
自分のイメージをかいとくと、
処理が(別な言語で表現すると
array( +, 1, arg )
ってあるんだから、
newfunc = [ array[0], 2, array[2] ]
みたいなノリで、新しい関数作れないのかな?ってのを
試行錯誤してる感じです。

437:デフォルトの名無しさん
10/03/11 23:38:22
諦めろ

438:デフォルトの名無しさん
10/03/12 00:05:57
>>436
それってclosureやCLOSの抽象関数などに向かう話だと思われ。

つまりCommon Lisp方面。

439:デフォルトの名無しさん
10/03/12 00:33:52
>>435
defadvice が使えることがある。例えば >>430 の例なら
(defadvice + (after foo)
(setq ad-return-value (- ad-return-value -1)))
ってするとか。
ただし、 + みたいな基本関数にこんな advice をつけて大丈夫かは知らない。
たぶん大丈夫じゃない。
ある程度用途が限定されている関数なら defadvice で少し動作を変えるというのはたまにやる。

440:デフォルトの名無しさん
10/03/12 01:55:32
>>436
evalで出来なくはないだろうけど、手間が掛かるだけで全然便利じゃない。
あとは、ダイナミックスコープを利用した+の再定義とかもできるだろうけど、
これもバグの元でオススメできない。>>439の言うdefadviceもあるけど、
あれも限定的にしか使えない。

Lispでのそういう場合のセオリーは、関数を渡せるようにしておいて、
行いたい処理はその中で実行して、適宜切り替えられるようにするんだけど、
そういう風に設計されてなきゃそれまでだしなー。

その関数を書いたやつを内心で罵りながら書き直すに一票。

441:デフォルトの名無しさん
10/03/12 09:48:16
動的スコープを利用するとこんな感じかな。
(defvar plus (symbol-function '+))
(defun a (n) (+ n 1))
(flet ((+ (&rest args) (apply plus 1 args)))
(a 2))
ただし、この方法ももとの関数の実体をうまく退避しないと
簡単に無限再帰になってスタックオーバーフローするのでまったくオススメしない。
;; これを書いてるときも何度かスタックオーバーフローさせた
Common Lisp だったら function-lambda-expression をごにょごにょして
eval もできるかもしれないけど、 Emacs Lisp じゃできないし、何よりも不毛。
もとの関数をちょっと書き換えていいなら、変数の動的束縛をはさんで
(defvar *b* 1)
(defun a (n) (+ a *b*))
(let ((*b* 2)) (a 2)) ; => 4
とかも。
defadvice でどうにかできないか検討して、それで無理だったら諦めるのが無難かなあ。

442:デフォルトの名無しさん
10/03/12 14:36:38
そこはコールバックにしとけよ、みたいなの結構あるよね。
url.el とかそんなんばっかり。

443:デフォルトの名無しさん
10/03/12 19:26:16
このあたりって各lispの方言に悩むよね
といってもemacs lisp,CL,schemeの3種くらいか、今悩むのは

444:430
10/03/13 00:10:38
皆さんどうもありがとうございます!
アドバイスは知っていましたが、引数に気をつけないと後遺症が怖いんですよね。
もーちょい皆さんの意見参考にしつつ、粘ります。

>>442
> そこはコールバックにしとけよ、みたいなの結構あるよね。
ありますよねー。でも作った人には利用の仕方が無数に思いつくから、
面倒なんだと思います。

すべてがリスト、っていうプログラムの表現の仕方にあこがれてるので、がんばります、
みなさんありがとー

445:デフォルトの名無しさん
10/04/05 18:54:20
emacs HEADにコミットしたいのですが、コミット権限は誰にどうすれば貰えるのでしょうか?

446:デフォルトの名無しさん
10/04/07 01:39:49
大卒の新卒が大量に入ったけど、elispに興味持ってる人ほとんどいないね…時代の流れかな
iphoneアプリの人気がすごかった。

447:デフォルトの名無しさん
10/04/07 01:50:38
昔は elisp に興味がある新卒が沢山居たの?
こういうのは研究室で身に付けてくるか、入社してから師匠に叩き込まれる物かと思ってた。

448:デフォルトの名無しさん
10/04/07 08:22:50
研究室で身に付ける人が少なくなったってことだろ

449:デフォルトの名無しさん
10/04/07 13:35:21
elisp 書く時間あったら javascript 書くだろうなぁ。

450:デフォルトの名無しさん
10/04/07 13:54:08
俺も最近elispよりchrome拡張をJavascriptで書く方が多い。
mewじゃなくてgmailだし。


451:デフォルトの名無しさん
10/04/07 16:02:15
今ある elisp でわりと事足りてるってのもあるな。
あとなんでもかんでも emacs 中でやろうと思うのは結構時間の無駄なんじゃ?って思うようになった。
一つの端末をずっと使い続けられない職場だからなのかもしれないけど。

452:デフォルトの名無しさん
10/04/07 18:07:23
テキスト編集はこれからもEmacs。
Elispアプリでは、mewは使わなくなったけど、
navi2chやlookupは使ってる。
HTML/CSSの世界ではFirefox + Javascriptを、
Emacs + elispのように使うようになるのかと想像していたが、
そんなことは全くなかった。
HTML/CSS界のEmacsが現れて欲しい。
XMLで七面倒くさいXULは使わなかったが、
chrome拡張ならなんとかなるかもなあ。
Lispならいいのになあ。

453:デフォルトの名無しさん
10/04/07 22:16:13
別に lisp である必要性は全然無いと思う。
javascript がベストな言語だとは思えないけどねえ。


つか「HTML/CSS界のEmacs」()笑っていったいどんなの想像してんのよwww

454:デフォルトの名無しさん
10/04/07 22:22:49
>>453
>()笑

って書く人初めて見たwww

455:デフォルトの名無しさん
10/04/07 22:38:32
最近はnavi2chぐらいかなぁ。
仕事だとJavaのコードばっかり書いてるからeclipseメインだわ。


456:デフォルトの名無しさん
10/04/08 06:48:38
>>()笑
>って書く人初めて見たwww

漏れも時々そうなる
()を先に入力してから
カーソルを()の中に入れて笑を書くと
一部のIMEでいつのまにか()の外に笑が移動するんだよ
気付いたら治すけど



457:デフォルトの名無しさん
10/04/08 06:50:49
ついでにもうちょっと補足しておくと

>()を先に入力してから

の理由は()が全角になるのを嫌って半角にするんだが
半角(

半角)
の順で入力すると切替が面倒なので
先に()を書いてしまう習慣がある




単語登録しろとかいう突っ込みは野暮というもの

458:デフォルトの名無しさん
10/04/08 08:04:51
つ boiled-egg

459:デフォルトの名無しさん
10/04/08 12:09:35
(笑)自体入力することなくなったなぁ
草生やしちゃわない?


460:デフォルトの名無しさん
10/04/08 13:18:52
「スイーツ(笑)」とかのお陰で語尾以外では再興してきた気もするけどな。

461:デフォルトの名無しさん
10/04/08 20:51:24
"()笑"が面白いと思うのはlisp使いだからじゃね?
Tシャツとnilシャツ
ウエイトレス:食後は珈琲でよろしいですか?
客:T
とか言うのと同じ楽屋落ちネタつーか


462:デフォルトの名無しさん
10/04/08 20:58:33
質問文の最後に p 付けるとかな。


463:デフォルトの名無しさん
10/04/08 22:01:15
Schme使いはどうしたら?

464:デフォルトの名無しさん
10/04/08 22:29:05
h の後に e 付けるとかかな。

465:デフォルトの名無しさん
10/04/08 23:14:11
h の後は賢者だろ

466:デフォルトの名無しさん
10/04/09 03:35:58
「()笑」でC-tだろ常考

467:デフォルトの名無しさん
10/04/13 14:40:33
minibuffer 用に Abbrev Table をセットするにはどうすればよいですか?
local-abbrev-table をセットしても使えませんでした。

468:デフォルトの名無しさん
10/04/13 14:46:37
(global-set-key "\C-z" 'foo)
により \C-z がマップする関数が定義してあると仮定して、その場合、
「\C-z がマップする関数に \C-x もマップする」
という意味の関数を書きたいのですが、どうすれば良いですか?
イメージとしては
(map-same-keyfunc "\C-x" "\C-z")
により、'foo が \C-x がマップされるといったものです。

469:デフォルトの名無しさん
10/04/13 15:09:30
ここいら辺の関数を使えば出きるんじゃん?
* (elisp) Active Keymaps
(key-binding "\C-x\C-f")
=> find-file
とか
* (elisp) Functions for Key Lookup
(lookup-key (current-global-map) "\C-x\C-f")
=> find-file


470:デフォルトの名無しさん
10/04/13 22:42:35
>>468
> C-z がマップする関数に C-x もマップする
とはちょっと異なりますが、C-z に C-x をマップするってのが
global-set-key じゃなくて define-key を使えばできます。(キーボードマクロの登録)
これでどうでしょうか。具体的には以下の通りです。
(define-key global-map "\C-x" "\C-z")

471:デフォルトの名無しさん
10/04/14 03:30:56
>>467
ミニバッファーで展開されるのはfundamental-mode-abbrev-tableと
global-abbrev-tableみたい。

472:デフォルトの名無しさん
10/04/14 21:18:58
>>397
y-or-n-p関数の挙動について少し分かったので自己カキコ

Gnome側で「CapsLockをCtrlとして扱う」に設定した擬似Ctrl-gだと
Emacs側ではC-S-gとして扱われるみたい

C-g (translated from C-S-g) runs the command keyboard-quit
# もちろん通常のCtrlキー使用なら変換なしにC-gになる

y-or-n-pのソース(fns.c)を見てみると、生のC-g以外は入力やり直しに
なるのでEmacsの動作としては問題なし。
…と、ここまで書いたはいいが結局解決策は見つかりませんでした。。

473:デフォルトの名無しさん
10/04/14 22:35:42
>>472
> Gnome側で「CapsLockをCtrlとして扱う」に設定した擬似Ctrl-gだと

Gnomeのコントロールパネルで変えると、
keysym自体が置き換わるんじゃない?
問題はadd Control = Caps_Lockした時なんじゃないのかな?
これはどの規定だったか忘れたけど、違反する使い方。
昔のXEmacsはこの状態見つけるとログ吐いていたと思う。

474:デフォルトの名無しさん
10/04/22 20:03:41
>>473
反応が遅くてスマン

nocapsとswapcapsではkeysym?の挙動が違うみたい。
自分が使ってるのはnocapsの方。

swapcapsだと単純にCapsLockがControlに置き換わるけど
nocapsだと"translated from C-S-g"となるらしい

X11のキーコードの話は今までよく分かってなかったので
現在ググって調べ中…そろそろスレ違いになってきたぞ

475:デフォルトの名無しさん
10/05/05 22:56:01
かつて無いほどに過疎ってるな…
流石にもうelispの時代は終わってしまったのかのう

476:デフォルトの名無しさん
10/05/05 23:07:02
う、うん……(´・ω・`)

477:デフォルトの名無しさん
10/05/05 23:52:37
Lispって言うほど魅力ないなあ、って勉強しててオモタ。

言語を作れるっていう宣伝が巷に溢れているが、
マクロのことであって、特に一般的に想像するような言語を作れるってのとは違う、
どちらかというとXMLで言う言語を作ってという感じに近い、
プログラミング言語の出来方でいえば、ある構造を別の原始的構造に翻訳する、というものだ。

あと抽象的とは言うが、オブジェクト指向的な意味での抽象性がない。
たとえば、リストがIterableだからリストじゃないものもIterableに振舞えば
リストのように扱えるというか、そういうものが無いように見える。

まあそれはともかくとして、Elispは秀丸マクロよりマシだと思うよ。

478:デフォルトの名無しさん
10/05/06 01:03:44
scalaにハマった友人がLispを研究する意味が無くなったと言ってた

479:デフォルトの名無しさん
10/05/06 01:47:07
エディタのマクロの中じゃ一番細かい事から大物まで書ける部類だと思うぞ
他のエディタで此処までかけるのってVisualStudioのVBマクロだろうけど、あれは細かいことするのがちょっと大変過ぎるし
Briefも割と良くできてたけど大物書くのはイヤになるっていう感じだし

Eclipseのプラグインがもっと柔軟になる以外elisp環境に対抗できるのってSmalltalk位じゃないの?



480:デフォルトの名無しさん
10/05/06 07:24:14
マクロで簡単なレポートを作ったりもできて楽しいけどなあ

481:デフォルトの名無しさん
10/05/06 10:51:22
>>477
> 言語を作れるっていう宣伝が巷に溢れているが、

Paul Graham 氏がそれを流行らせたのではなかろうか。

>>480
elispは楽しいよ。ただ、pythonとかに比べるとコーディングが
かなり遅くなっちゃう。名前空間がないから、同じ
関数を再コーディングするハメになったり、lispがlispである故、
「綺麗に書かなきゃな」ってのがあって、綺麗に書くこと自体が
割と面倒だったりする。


482:デフォルトの名無しさん
10/05/06 11:44:07
関数呼び出しと、スペシャルフォーム・マクロのインデントのルールみなさん守ってますか?
defunとかは勝手にインデントされるけど、
defmacroしたのはdefunとかと同じようなインデントルールにしてますか?
正直インデントは構文にかかわらないわりに面倒。
まあ、視覚的に関数の構造を見られるのはいいけれども。

483:デフォルトの名無しさん
10/05/07 14:32:20
君がlisp-indent-functionを知らんだけでは?

484:デフォルトの名無しさん
10/05/07 15:32:37
自分でdefmacroしたやつもスペース2つのインデントにできる?

485:デフォルトの名無しさん
10/05/08 18:54:52
>>477
入門本とかだと、表面的なことしかやってないから、全然面白くないよね。

Lispでの抽象っていうのは、OOP的な手法じゃなくって、
関数的な手法を使ってることが多い。つまり、クロージャを渡して、
それを内部で呼び出すことで、柔軟性を確保するとかそういうの。
OOPでもMOPとかどぎついのがあるけど。

On Lisp辺りは、邦訳がネットで無料で公開されてるから、読んでみたら良いよ。
言語を作るというのがどういうことなのか、関数的な抽象化とは何なのか、
具体的な例が乗ってるから。他の言語でも参考になる考え方だと思う。

486:デフォルトの名無しさん
10/05/08 19:01:05
>>477
忘れてた。

> たとえば、リストがIterableだからリストじゃないものもIterableに振舞えば
> リストのように扱えるというか、そういうものが無いように見える。

これは流石に誤解。CLならGray Stream、Schemeならポートがまさにそれだし、
動的型付けを利用した手法は、日常的にみんな使ってる。Emacs Lispでも。

487:デフォルトの名無しさん
10/05/08 22:24:49
関数型言語面白そうだし Lisp でもやってみるかねとか言ってた層は
Scala あたりに移っちゃったのかな

488:デフォルトの名無しさん
10/05/08 22:31:10
Haskellじゃないかなー。

関数型スキーはHaskell、S式スキーはCommon LispやScheme、
Java資産を活かしたい実用派がScalaやClojure、
並列処理スキーがErlangみたいな気がする。

489:デフォルトの名無しさん
10/05/09 06:08:11
Scheme使ってる人ですら最初はHaskellとか勧めるぐらいだしな
関数型を学ぶなら今はHaskellがいいんだろうな多分
個人的にはCoqのGallinaもいいんだけど、依存型はまだ難しすぎるから…

490:デフォルトの名無しさん
10/05/09 10:01:52
Lispはあっちこっち手続きだし。

491:デフォルトの名無しさん
10/05/09 10:23:52
でもなんつーか、Haskellはやってもしょうがないとは思うよ。
Lispだって、社会人になってからは、ハードコアなEmacs使いが
いじり倒したいから趣味で学ぶぐらいでしょ。
そうやって関数型には適度に慣れておくぐらいで十分。
Haskell学んだからって使える場所がないし後にも残らん。
どうせならElispに近いCommon Lisp学んで、CLのコードをポートしたりするのが良い。

492:デフォルトの名無しさん
10/05/09 12:25:15
elisp やってたら Common Lisp も馴染みやすいかと思い始めたら、
format の辺りなど色々な部分が elisp と違っていて微妙だった。
elisp は C 言語系列をやってきた人に取っ付きやすいよう作られてるなと感じた.

493:デフォルトの名無しさん
10/05/09 12:25:30
たしかに Haskell を実務で・・・なんて普通のやつらの上を行くぐらいの人じゃないと無理だろな
そういう意味じゃ Scala はまだ現実的な線だし elisp も emacs 使い続けるなら悪くないよね。

494:デフォルトの名無しさん
10/05/09 13:06:23
>>493
> たしかに Haskell を実務で・・・なんて普通のやつらの上を行くぐらいの人じゃないと無理だろな

言っている意味がわからない。
「普通のやつらの上を行くぐらいの人」だと Haskell を実務で使わせてもらえると言っているの?

>>492
> format の辺りなど色々な部分が elisp と違っていて微妙だった。

底が浅いなー。 format なんてほとんど表面上のみの違いでしょ。
そんな関数1つより、もっと言語の中を突つかなきゃ。


495:デフォルトの名無しさん
10/05/09 13:14:50
底が浅いというのは自分でも重々承知している所だが、表面も結構重要だと感じる。
例えば C を書く時と elisp を書く時では自分の中で切り替えが上手く出来るが、
elisp と Common Lisp ではどうしても似た気分で書いてしまう。
それゆえに細かなところが違っていると、ストレスになる。
まあ、書いていて思ったがこれは自分の問題だな。


496:デフォルトの名無しさん
10/05/09 14:05:27
>>494
Paul Graham の「普通のやつらの上を行け」で Lisp を業務に使った話になぞらえたんだけど・・・

497:Zeno ◆5nZQbNmQPs
10/05/09 14:22:14

まあ Haskell はプロジェクトには使わせてもらえんだろうな。
VCS で管理もされない個人用のツール程度だったら自由に Haskell を使っても問題はない。
というより、その用途であれば何の言語を使っても良い。


498:デフォルトの名無しさん
10/05/09 14:59:12
単純に技術者の数の問題じゃない?
あと自社製品とかWebサービスみたいなのだったらHaskell使ったって良いとは思うけど。

請負いで納品するようなのだと運用・保守がかわいそうだなぁ。

499:デフォルトの名無しさん
10/05/09 16:58:28
EIEIOが標準入りすることでCL packageのdefstructがobsolateになるとかありますか?

500:デフォルトの名無しさん
10/05/09 17:08:09
最近誰かも書いてたが「俺のチームならよそでできないその仕事をやれます。」って
状況じゃないと雇われの身としては主流以外の言語使えないよな。

501:デフォルトの名無しさん
10/05/09 17:19:30
lisp(とかHaskellとか)だと他の言語とくらべて開発効率/保守性/性能がこれだけ良いんですってのを
客観的に説明出来るなら良いんだけど、実際業務アプリ作るとかの場合
C#とかJavaあたりで書いた方が楽なんだよねえ。

502:デフォルトの名無しさん
10/05/10 01:13:14
業務系だとやるべきことのパターンがかなり決まってるってのはあると思う。
フレームワークに従った方がうまくいく領域なら自由すぎる Lisp 系言語はかえってつらいってのはわかる。
Lisp が DSL 構築できるったって、わざわざ構築せずに済む言語環境があるならそっち使った方がそりゃ楽だ。
それはそれでいいんじゃないの。
ものごとはトレードオフだ。 Lisp がある条件で活躍するためには切り捨てざるを得なかったものだってあるだろうさ。

503:デフォルトの名無しさん
10/05/10 06:50:40
今のところ、関数型言語が業務向けで役に立つであろうシチュエーションって
並列化しやすいからスケールアウト時のコストが低いですよ!ぐらいなのかなぁ。

504:デフォルトの名無しさん
10/05/10 07:28:42
当たり前だけどクライアントのリクエスト単位では、
すでに並列化されてるんだよね。
リクエストごとにスレッド割り当ててるから。

リクエスト内部の処理を別スレッドにぶった切ったからといって
そこまで早くなるとは考えづらい気がする。

505:デフォルトの名無しさん
10/05/10 23:27:25
どっちにしろ普通のアプリで恩恵こうむるのは難しそう・・・


506:デフォルトの名無しさん
10/05/30 02:05:04
macOSXのターミナルからEmacsでC#のプログラムを行おうとしている初心者です
見やすさのためにEmacsにcsharp-modeというのを取り入れようとしていますがうまくいきません
取りあえずsite_lispに拾いもののcsharp-mode.elを入れホームディレクトリで.emacsの設定を軽く追加しました
Emacsを--debug-initから.csファイルを開くと以下のように出ます。
Debugger entered--Lisp error: (file-error "Cannot open load file" "csharp-mode")
require(csharp-mode)
eval-buffer(#<buffer *load*> nil "/Users/host名/.emacs" nil t) ; Reading at buffer position 13
load-with-code-conversion("/Users/host名/.emacs" t t)
load("-/.emacs" t t)
#[nil "・・・・$
command-line()
normal-top-level()
.csファイルを新規に作成してもcsharp-modeに認識されずに通常のmodeで開いてしまいます
解決法などご教授頂けたら幸いです

507:デフォルトの名無しさん
10/05/31 06:30:05
>>506
そのエラーメッセージが全てだと思うんだけど。
Cannot open load fileって書いてあるじゃない。
ちゃんとsite-lispにファイルはあるの?

あと、こういう場合に一番大事な、

* どう「入れ」たのか
* どのような「設定を軽く追加」したのか

といったことを全略されると、まともな回答貰いづらいよ。
ついでに言えば、多分スレ違い。

508:デフォルトの名無しさん
10/06/04 17:52:11
全てのシンボルのリストを返す関数ってなんだっけ?

509:デフォルトの名無しさん
10/06/05 15:35:50
そんな関数はない!
(lexical-let (x) (mapatoms (lambda (y) (push y x))) x)

510:デフォルトの名無しさん
10/06/05 16:26:24
obarray 見ればいいんじゃない
(append obarray nil)


511:デフォルトの名無しさん
10/06/05 16:56:24
>>510
そう、それどぁ。
elisp manual読んでぃて便利だと思ってとぉあ。
アリャガトネ

512:デフォルトの名無しさん
10/06/24 21:31:27
auto-completeで日本語入力をしようと無謀なことやってる者です
内容がemacs自体とは関係なくなってきたような気がしたのでここで質問します。
2バイト文字のあとに1バイト文字が来たらそこを単語の区切りにしたいのですが、
どうしたらいいのでしょうか?
何をword-separating-categoriesに入れていいものかわかりません。
category-tableを使えばいいのはわかったのですが、
2バイト文字すべてを要素に持つようなcategory-tableの作り方がわかりません
どうにかヒントだけでも教えていただければと思います。


513:デフォルトの名無しさん
10/06/24 21:50:42
M-x describe-categories
(re-search-forward "\\cj")

514:デフォルトの名無しさん
10/06/24 22:26:08
あ、
(add-to-list 'word-separating-categories (cons ?j ?a))
でよかったのか。
ありがとうございます。

が、駄目orz

auto-completeはsyntaxがwordの文字が並んでるとすべてcompletionの餌にするのかー、、、
どこでその処理やってるのかわかんない…
全角のあとに半角が着たら半角だけ餌にしたいんだけどなー

もうちょっとがんばってみます。
>>513
なんというか申し訳なかったです
ありがとうございました

515:デフォルトの名無しさん
10/07/05 23:16:10
LISPの仏様こと竹内育男が参加するイベント。

--
国産LISPマシンELISの設計者である、JAIST副学長日比野先生が、この夏、ELISの復活祭を企画されています。
復活祭には、竹内先生をはじめ、TAO/ELISに関わった方々に多数ご講演いただきます。
会場が石川県とちょっと遠いですが、小旅行気分で、ぜひぜひ多くのLISPファンのみなさまにご参加いただきたいと思います。(yshigeru)

日時:8/7(土)〜8/9(月)
場所:JAIST(石川県美濃市)
詳細と参加申し込みは、ELIS復活祭ページをご参照下さい

URLリンク(www.jaist.ac.jp)


516:デフォルトの名無しさん
10/07/05 23:59:54
>>514
skkじゃだめ?誤入力を考えるとskkちょー便利だと思うけど。

517:デフォルトの名無しさん
10/07/06 19:01:35
EmacsLispプログラミング入門の12・3の関数forward-sentenceで
引数を1以上にして M-x で動作させるとエラーになってしまいます。
デバッガー?を使ってもいかんせんよくわかりません
sentence-endを評価した値が nil なのが原因?

Debugger entered--Lisp error: (wrong-type-argument stringp nil)
re-search-forward(nil 592 t)
(if (re-search-forward sentence-end par-end t) (skip-chars-backward " \n") (goto-char par-end))
(let ((par-end ...)) (if (re-search-forward sentence-end par-end t) (skip-chars-backward " \n") (goto-char par-end)))
(while (> arg 0) (let (...) (if ... ... ...)) (setq arg (1- arg)))
forward-sentence1(1)
call-interactively(forward-sentence1 t nil)
execute-extended-command(1)
call-interactively(execute-extended-command nil nil)

追記:M-eはきちんと動作しています



518:デフォルトの名無しさん
10/07/06 19:53:09
>>516
skkも考えたんですが、そもそもこれ作ろうと思った発端は、
入力方式の切換えが面倒だった事なのですよ。
須く日本語入力ソフトは切換えが必要なので、
どうにか良い方法はないかと思って辿り着いたのがauto-completeなんです。
自動的に候補が出る形です。

取り敢えず一応完成させました。
入力方式の切換えが必要無いのは便利ですね。
日本語と英語の入り乱れたリストとか
テンプレートがあってそれを編集するような場合は使える気がします。

あと、skk だと日本語と英語で配列が違う場合設定が面倒だっていうのもあります。
今打っているのもそれなのですが、これなら配列が違う方が良いというか、むしろ同じだと駄目というか。

519:デフォルトの名無しさん
10/07/07 00:08:38
>>517
re-search-forwardの第一引数にnilが渡ってるのが原因だと思う。
想像の通り、sentence-endがnilだから。本来、正規表現を文字列で渡す所。

(wrong-type-argument stringp nil)
(間違った型の引数 文字列かどうかを判別する関数 nil)

って意味。その下にずらずら出てるのは、バックトレース。
どこから呼ばれたコードがエラーになったのか、それで判断できる。
下に行くほど上位の関数。forward-sentence1とかも出てるでしょ?

520:デフォルトの名無しさん
10/07/07 00:39:47
Emacs Lisp プログラミング入門のその部分が変化に追いついてないみたい。
sentence-end を参照している部分は (sentence-end) に変えてください。
sentence-end はnilでデフォルト値を使うことを意味するようになったので、
正規表現そのものが欲しい場合は関数sentence-endを使うようになりました。

C-h v sentence-end とすれば説明の中に次の記述があります。
> The value nil means to use the default value defined by the
> function `sentence-end'. You should always use this function
> to obtain the value of this variable.

521:デフォルトの名無しさん
10/07/07 00:48:24
Emacsのソースコードのtarballの中に入ってるemacs-lisp-introでは
ちゃんと反映されているようなので↓は取り消します。
> Emacs Lisp プログラミング入門のその部分が変化に追いついてないみたい。

なんかおかしいなと思ったらお使いのEmacsのバージョンにあったものを
参照してくださいってことで。

522:デフォルトの名無しさん
10/07/07 20:31:34
skk のオンデマンドで再帰的な辞書登録をなんで他のIMEでも採用しないのか不思議でならん。
特に Google IME・・・

523:517
10/07/07 20:58:59
(sentence-end)に変更したところ無事動かすことが出来ました。
ちゃんとヘルプ読んでるつもりだったんですが全然できてなかったみたいで・・・
今後はちゃんと読みまくるよう頑張って先に進んでいきます。

レスくださった方々ありがとうございました



524:名無しさん@そうだ選挙に行こう
10/07/11 02:17:01
URLリンク(www.bookshelf.jp)

kill-read-only-ok がnilの場合はキルできないと書いてあるはずなんだが
変数がどうあれC-kで行コピーができるような気がするんだが…

俺の解釈が間違ってるのか?

525:名無しさん@そうだ選挙に行こう
10/07/11 04:38:33
エラーが出るかどうか

526:名無しさん@そうだ選挙に行こう
10/07/11 23:05:07
>>525
つまりコピーできるのは間違ってないのね…


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

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