[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 04/03 02:06 / Filesize : 277 KB / Number-of Response : 955
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【叩かれて】Emacs Lisp道場【強くなれ】



1 名前:おっす [03/09/18 19:29]
なんとなくEmacs 触り始めて、なんとなくelispにも手を出して
しまったアナタ。

なんとなく書いてしまったコードをココに書き込んで叩かれましょう。
タタカレテツヨクナレ。

年季の入った玄人衆は、もしアドバイスできたらお願いします。
いや、叩きついでにでも。

とりあえず入門書は
ttp://www.netfort.gr.jp/~kiyoka/emacs_setq/emacs_setq.html
ttp://www.math.s.chiba-u.ac.jp/~matsu/lisp/emacs-lisp-intro-jp.html

リファレンスマニュアルは(ちと古い)
ttp://www.fan.gr.jp/~ring/doc/elisp-manual/elisp.html

とか、新しいのは(でも英語)
ttp://www.delorie.com/gnu/docs/elisp-manual-21/elisp.html

ではひとつ、コード中心の熱いバトルをよろぴく。


335 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/07 00:10:45]
diredモードで拡張子ごとに色を付けたいんですけどどうやったらいいですか?

336 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/07 09:11:46]
>335
俺の.emacs見てたらこんなんあった
ウザくなってコメントアウトしてたけどうまく動いてたっぽい

(font-lock-add-keywords 'dired-mode
'(
; ;source
("^.*\\.[Ee][Ll]$" . font-lock-variable-name-face)
; ;archive
("^.*\\.[Zz][Ii][Pp]$" . font-lock-builtin-face)
("^.*\\.[Gg][Zz]$" . font-lock-builtin-face)
("^.*\\.[Tt][Aa][Rr]$" . font-lock-builtin-face)
("^.*\\.[Ll][Zz][Hh]$" . font-lock-builtin-face)
; ;text
("^.*\\.[Tt][Xx][Tt]$" . font-lock-reference-face)
; ;executable
("^.*\\.[Ee][Xx][Ee]$" . bold)
; ;dot
("^.+[0-9][0-9] \\.[^.]+.*" . font-lock-variable-name-face)
))

337 名前:335 mailto:sage [05/01/07 19:28:01]
お〜、ありがとうございます。
バッチリ動きました。
ただexeにboldが効いてなかった様な気も・・。
Fontlockの設定とかが原因でboldに気が付かなかっただけかな。
boldを色指定に変えて使ってます。

十分満足なんですけど
拡張子だけに色を付けるとなると相当面倒ですか?
理想としては拡張子はファイル名とは別のカラムに表示して(lsの設定?)
さらに拡張子にだけ色を付けたいのですが。

つーかemacs楽しいですね。時間足りないw
ある程度Lisp覚えてがんがんカスタマイズできるようになりたいな。

338 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/07 20:17:34]
>>337
> 拡張子だけに色を付けるとなると相当面倒ですか?

("^.*\\.\\([Ee][Ll]\\)$" 1 font-lock-variable-name-face)
みたいにしてけばいいだけよ。詳しくは font-lock-add-keywords の
docstring を参照のこと。

> 理想としては拡張子はファイル名とは別のカラムに表示して(lsの設定?)
ちょっとやり方を思い付かないけど、逆に見難くないかね。

> つーかemacs楽しいですね。時間足りないw
> ある程度Lisp覚えてがんがんカスタマイズできるようになりたいな。
ガン(゚д゚)ガレ


339 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/25 21:33:24 ]
すいません、キーバインドの方法について質問させてください。
shift+rightにother-windowを割り当てたいのですが
;(describe-keyでは"ESC [ d"と表示されます。)
うまくいきません。global-set-key で
\M-[-d とか [M-[-d] や [ESC]-[-d等を試してみたのですがどれもだめでした。
ESC [ dはどう表記したらいいのでしょうか?

340 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/25 23:45:32 ]
>>339
その環境だと shift+right も right も一緒になってないか?


341 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/26 00:03:02 ]
shift+right と right が一緒になってるかどうかの確認の方法が分からないのですが
(何かにバインドして確認しようにもバインドの方法が分からない)
describe-keyをすると

right は right
shift+right は ESC [ c
とでます。
ちなみにF1にバインドする時にもつまづきました。
[f1] ではなく\C-ce でf1にバインドできました。
そうするとC-ceにもバインドされました。
C-ce と f1 は一緒になってるようです。

ターミナルの設定の問題なんでしょうか?






342 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/26 00:37:20 ]
スレ違いだろうが、とりあえず [?\e ?\[ ?d] とか "\e[d" とか


343 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/26 00:49:47 ]
おお、いけました。ありがとうございます。
shift+upでバッファ間を移動しまくっております。
previous-bufferみたいな関数あるかと思ったんですけどないみたいですね。残念。
書くスキルないのはもっと残念です。

どこで質問するか迷ったんですけどやっぱりスレ違いでしたか。
emacsスレで聞けばよかったです。
ありがとうございました。




344 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/26 01:40:01 ]
>>343
> shift+upでバッファ間を移動しまくっております。
> previous-bufferみたいな関数あるかと思ったんですけどないみたいですね。残念。

バッファっつーか、ウィンドウ間を移動したいんだよね?
windomove.el がいいんじゃないかと。

345 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/26 01:41:01 ]
> windomove.el
変なところに o が入った。windmove.el だ。スマソ

346 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/26 02:35:31 ]
そうか。windmove使えばいいのか。
(global-set-key [?\e ?\[ ?d] 'windmove-left)
(global-set-key [?\e ?\[ ?a] 'windmove-up)
(global-set-key [?\e ?\[ ?c] 'windmove-right)
(global-set-key [?\e ?\[ ?b] 'windmove-down)
でウインドウ間を超高速移動しまくってます。
ありがとうございました。

347 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/26 09:51:41 ]
超高速移動という響き,イイ!!

348 名前:名無しさん@お腹いっぱい。 [05/01/27 03:17:04 ]
どもども。いや、ホント楽になりました。
C-xo連発してたのがうそみたいです。

349 名前:名無しさん@お腹いっぱい。 [05/02/11 20:21:31 ]
一回のキー操作に複数の手続きを割り当てたいんですけど、例えば
(global-set-key "\C-cg" '(lambda () (begin
(forward-char)
(backward-char)))
これで一文字進んで一文字戻る(なにも起こらない)を想定してるんですが、動いてくれません
普通(global-set-key KEY COMMAND)でCOMMANDにはシンボルを想定してるみたいなんですが、
複数同時に渡せないし...

350 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/11 20:30:48 ]
(global-set-key "\C-cg" "\C-f\C-b")

351 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/11 20:45:11 ]
(interactive)
ていうかelispにbeginは無いし

352 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/11 20:46:07 ]
(define-key mode-specific-map "g"
(lambda ()
(interactive)
(forward-char)
(backward-char)))

353 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/11 21:58:34 ]
どうも、解決しました。
(ここ結構人居るんですね)
other-windowを組み合わせようとしてたんですが、
これが引数とるのに気が付かなくて二重にはまってました。
M-xから呼ぶときは引数いらないのに...いまだに意味不明です。



354 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/11 22:59:58 ]
(other-window ARG &optional ALL-FRAMES)
だから引数は必要。
M-x でいらない(ように見える)のは (interactive "p") で
(prefix-numeric-value current-prefix-arg) が渡されるから。

355 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/12 01:45:40 ]
>>353
要らない世話かも知れないけど>>354に補足すると
(interactive "p") で渡っているのは ARG の方だけね

ALL-FRAMES を指定するときは
(other-window 1 t)
のようにもう一つ引数がいるからね

詳しくは info を


356 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/12 08:41:04 ]
Lispはちょっと触った事あったんでいけるかと思ってたんですが、
Emacsの仕様もあって結構難しいですね。
ちょっと勉強してみます。

357 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/19 00:17:22 ]
(multibyte-string-p "a")
=> nil
(with-temp-buffer
(insert "a")
(multibyte-string-p (buffer-substring-no-properties (point-min) (point-max))))
=> t
HEAD でも 21.3 でもこうなるみたいなんだけどこーゆーもんなんすか?

358 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/19 00:30:43 ]
>>357
はい。

(with-temp-buffer
(set-buffer-multibyte nil)
(insert "a")
(multibyte-string-p (buffer-substring-no-properties (point-min) (point-max))))
=> nil


359 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/19 00:55:48 ]
>>358
むむ、なるほど、どうもです。
じつは任意の buffer から substring してきた文字列に multibyte (とりあえ
ずは日本語) が含まれてるかどうかを判定したいんですが、そんな場合はどう
するのが常套手段なんでしょう。思い付いたのは↓なんですが

(with-temp-buffer
(insert "あ")
(goto-char (point-min))
(if (re-search-forward "\cj" (point-max) t)
"日本語あり"
"日本語なし"))
=> "日本語なし"

(´・ω・`)

360 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/19 01:12:14 ]
(find-charset-string "abc")
=> (ascii)
(find-charset-string "abcほげ")
=> (ascii japanese-jisx0208)

(let ((str "あ"))
(if (memq 'japanese-jisx0208 (find-charset-string str))
"日本語あり"
"日本語なし"))
=> "日本語あり"

361 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/19 01:21:29 ]
(re-search-forward "\\cj" (point-max) t)

Emacs21 なら
(re-search-forward "[[:nonascii:]]" (point-max) t)
が使えたはず。

362 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/19 01:27:41 ]
Emacsのunibyte/multibyteってのはタダのバイト列として読むか
なんらかのエンコーディングで表現された文字として読むかってとこで生じる。
単に表現されたときに1バイトになるかってのは関係ない。


363 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/19 01:49:37 ]
>>362
うそー、関係あるよ。

src/alloc.c:
Lisp_Object
make_string_from_bytes (contents, nchars, nbytes)
const char *contents;
int nchars, nbytes;
{
register Lisp_Object val;
val = make_uninit_multibyte_string (nchars, nbytes);
bcopy (contents, SDATA (val), nbytes);
if (SBYTES (val) == SCHARS (val))
STRING_SET_UNIBYTE (val);
return val;
}

文字列中の文字が全て1バイトになるかを思いっきり考慮してんじゃん。



364 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/19 02:29:27 ]
はいはい。それはmake_string_from_bytesだからでしょ。
それは考慮してるんじゃなくてunibyteにするかmutlibyteにするかっていう
判定材料に使ってるだけだよ。
その関数の使われるところがどういうところかも見れば自明だと思うんだけど。


365 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/19 03:06:30 ]
自日月

366 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/19 03:38:11 ]
>>364
はいはい。じゃあ
(multibyte-string-p (string 97)) => nil
(multibyte-string-p (string 53794)) => t
を説明してみ。

367 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/19 03:49:16 ]
アホだな。Fstringってmake_string_from_bytesを使ってる例でしかないじゃん。
それはインタフェースからしてmultibyteかどうかの情報が与えられないから、
multibyteかどうかを判定するのに文字の範囲から推定するしかできないからでしょ。

逆に例えば既にmultibyteである情報源から文字列を作るとき、
要するにmultibyte bufferからsubstringする場合なんかはいちいち
中身が1バイト文字だけかどうかなんて考慮しないよ。

まあソースコード読みなよ。
Emacsでのunibyte/multibyteの扱いってものについて学習してらっしゃい。


368 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/19 05:04:41 ]
>>362
> 単に表現されたときに1バイトになるかってのは関係ない。
に対し、SINGLE_BYTE_CHAR_P でない文字を含む文字列は常に multibyte にな
ると言ってるのに、SINGLE_BYTE_CHAR_P だけからなる文字列も multibyte に
なり得ると反論してもしょうがないだろうに。

369 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/19 05:27:37 ]
> に対し、SINGLE_BYTE_CHAR_P でない文字を含む文字列は常に multibyte にな
> る
そこが問題なのか? 違うだろ。だって当たり前すぎるほど当たり前じゃん。
>>363はタダのバイト列として読むんじゃなくてEmacsの内部表現で表現された
文字列として読んでるんだから。

そこを問題にしているとしたら363の方こそナンセンス。



370 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/19 07:02:02 ]
>>366がどういう意図をもっているのか自分で説明すべきだろ。
何を根拠に何を主張したいのか書かなきゃ単なる煽りの手口。


371 名前:359 mailto:sage [05/02/19 09:05:52 ]
>>360
> (find-charset-string "abc")

>>361
> (re-search-forward "[[:nonascii:]]" (point-max) t)
おー、ありがとう。勉強になるっす。

> (re-search-forward "\\cj" (point-max) t)
うぼあ、なんたる初歩的ミス orz

372 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/20 14:51:39 ]
Emacs の multibyte, unibyte まわりって確かにわかりずらいですよねー。
試しに unibyte な文字列中に "\\cj" で検索かけてみたんですけど、結果は nil なん
ですねぇ。当然と言えば当然ですが。

(string-match "\\cj" "あいうえお")
=> 0
(string-match "\\cj" (string-as-unibyte "あいうえお"))
=> nil

(find-charset-string "あいうえお")
=> (japanese-jisx0208)
(find-charset-string (string-as-unibyte "あいうえお"))
=> (eight-bit-graphic eight-bit-control)

coding-system の binary, raw-string とかとの関係も難しい・・・。

373 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/20 14:56:20 ]
閑話休題。
iswitchb で migemo を使えるようにしてみたですよ。

(setq iswitchb-regexp t)
(setq iswitchb-use-migemo-p t)
(defadvice iswitchb-get-matched-buffers (before iswitchb-use-migemo activate)
"iswitchb で migemo を使ってみる。"
(when iswitchb-use-migemo-p
(ad-set-arg 0 (migemo-get-pattern (ad-get-arg 0)))))




374 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/20 18:40:57 ]
>>373
おおぅ、ナイスです。
ありがたく使わせていただきます。

375 名前:373 mailto:sage [05/02/21 23:35:24 ]
昔の「自慢の.emacsを貼り付けよう」スレのように活気付く事を祈って。
dired とか ibuffer で色を付けて、長いファイル名があってもそれなりに見やすくしてみる。

まずは dired:
(defun dired-font-lock-information-matcher (limit)
"dired でまん中へんに色を付けてみる matcher。"
(when (dired-move-to-filename nil limit)
(let (end)
(backward-char)
(setq end (point-marker))
(progn (beginning-of-line)
(forward-sexp (if (looking-at dired-re-mark) 2 1))
(forward-char))
(store-match-data (list (point-marker) end)))
(forward-line)))

(font-lock-add-keywords
'dired-mode
'((dired-font-lock-information-matcher . font-lock-constant-face)))


376 名前:373 mailto:sage [05/02/21 23:36:57 ]
んで ibuffer:
(setq ibuffer-fontify-information-field-list '(size mode))
(defadvice ibuffer-insert-buffers-and-marks (after ibuffer-fontify-information-field activate)
"ibuffer でまん中へんに色を付けてみる。"
(save-excursion
(ibuffer-goto-beg)
(while (not (eobp))
(let ((pos (point))
(limit (line-end-position)))
(while (and (setq pos (next-single-property-change pos 'ibuffer-field nil limit))
(< pos limit))
(goto-char pos)
(let ((buffer-read-only nil)
(field (get-text-property (point) 'ibuffer-field))
(beg pos))
(when (memq field ibuffer-fontify-information-field-list)
(setq pos (next-single-property-change pos 'ibuffer-field nil limit))
(goto-char pos)
(put-text-property beg pos
'face 'font-lock-constant-face)))))
(forward-line))))

dired-mode で、dircolors の色を使うようにすると派手でいいかもしれないとか思った。


377 名前:373 mailto:sage [05/02/22 00:21:53 ]
dircolors 使うやつができたっぽい。

(require 'dircolors)
(font-lock-add-keywords
'dired-mode
(mapcar (lambda (x)
(list
(format "\\(%s\\)$"
(mapconcat (lambda (ext)
(if (stringp ext)
(format "\\.%s" ext)
(format ".*%s.*" (cadr ext))))
(car x)
"\\|"))
`(".+" (dired-move-to-filename) nil (0 ',(cadr x)))))
dircolors-extension))


378 名前:名無しさん@お腹いっぱい。 mailto:sage [05/03/20 13:59:42 ]
(defadvice next-error (after next-error-plus-alpha activate)
(insert "OMOITSUKANAI"))
定義してgrep+next-error実行しても, OMOITSUKANAIがバッファに挿入され
ないのはどうしてなのだろうか

379 名前:名無しさん@お腹いっぱい。 mailto:sage [05/03/20 18:00:24 ]
>>378
(with-current-buffer ) を抜けたあとだから。


380 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/21(月) 13:45:50 ]
>>379 with-current-buffer 以後でも insert を可能にする方法は何
かありますか?

381 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/21(月) 18:16:49 ]
>>380
with-current-buffer

382 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/23(水) 00:29:38 ]
>>381
(defadvice next-error (after next-error-plus-alpha activate)
 (with-current-buffer next-error-last-buffer
   (insert "OMOITSUKANAI")))

なりませんけど・・・?


383 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/23(水) 09:16:12 ]
>>382
(when (setq next-error-last-buffer (next-error-find-buffer))
...



384 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/23(水) 14:52:04 ]
>>383
その中に入れても結局なりませんでした。。。

385 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/23(水) 21:36:02 ]
>>384
最新の Emacs だと grep バッファは読み込み専用だけど,あらかじめちゃんと
書き込めるように対処はしてあるの?


386 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/24(木) 00:33:30 ]
>>385
書き込みしたいのは、次のエラー箇所が見つかったファイル (この場合はマッチするファイル)に
なので、 *grep* バッファ上でではありません。。
`next-error-last-buffer' がそのファイルじゃないのですか?

387 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/24(木) 01:36:43 ]
試してみると
next-error-last-buffer's value is #<buffer *grep*>
ってなるから違うみたい


388 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/24(木) 22:05:20 ]
emacs 21.4 を使っています。
カーソル配下のtextのface取得方法が解からないので、教えてください。
やりたいことは、特定の単語の色の変更では無く、
その単語の所属するキーワードグループまるごと色を変更したい為、
カーソル配下の単語から、faceを特定したいということです。

お願いします。

389 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/24(木) 22:51:54 ]
(get-text-property (point) 'face)

390 名前:388 mailto:sage [2005/03/25(金) 00:51:21 ]
>>389
thx

391 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/30(水) 12:38:13 ]
Emacs には「グラフ」データ構造の library がないように思えます。
ここでプログラムしてみちゃってください。

392 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/30(水) 12:52:18 ]
ム板でやると盛り上がると見た。

393 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/30(水) 17:48:01 ]
>>392
ここでよくない? こういうプログラミング練習の為にこのスレッドがあるんじゃないの?



394 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/30(水) 18:33:00 ]
ライブラリ的なのはあっちっしょ。好きそうな人もいるし。

395 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/30(水) 21:02:12 ]
cons と car と cdr で事足りる

396 名前:名無しさん@お腹いっぱい。 [UNIX時間(+0900)35年,2005/04/03(日) 07:43:30 ]
>>395
おまえは、 「情報なんて 0 と 1 のみで事足りる」
とでも言うのか?

アホ。

397 名前:名無しさん@お腹いっぱい。 mailto:sage [UNIX時間(+0900)35年,2005/04/03(日) 20:28:38 ]
「ハッカーと画家」に
car, cdr, cons, quote, cond, atom, eq
だけで Lisp の関数は書けるとかって書いてあった。
四則演算はどうやってやるんだ?

398 名前:名無しさん@お腹いっぱい。 mailto:sage [UNIX時間(+0900)35年,2005/04/03(日) 20:57:40 ]
(t) => 1、(t t) => 2、(t t t) => 3
のように表わすことにして
(defun plus (x y)
(cond (y (plus (cons (car y) x) (cdr y)))
(t x)))
(plus '(t t t) '(t t))
=> (t t t t t)
足し算ができれば後はどうとでも。

399 名前:名無しさん@お腹いっぱい。 mailto:sage [UNIX時間(+0900)35年,2005/04/03(日) 23:04:31 ]
398 は効率悪すぎだから (t) => 1、(nil t) => 2、(t t) => 3 と
little endian な 2 進表記にして

(defun plus (x y &optional c)
(cond ((cond ((eq x nil) (eq y nil)))
(cond (c (cons c nil))))
((car x)
(cond ((car y)
(cons c (plus (cdr x) (cdr y) t)))
((cons (not c) (plus (cdr x) (cdr y) c)))))
((car y)
(cons (not c) (plus (cdr x) (cdr y) c)))
((cons c (plus (cdr x) (cdr y) nil)))))

(defun mul (x y)
(cond ((eq y nil) nil)
((plus (cond ((car y) x))
(mul (cons nil x)
(cdr y))))))

(plus '(t t nil t) '(t nil t)) ; 11 + 5
=> (nil nil nil nil t) ; 16

(mul '(t t nil t) '(t nil t)) ; 11 * 5
=> (t t t nil t t) ; 55

400 名前:名無しさん@お腹いっぱい。 [2005/04/05(火) 10:30:07 ]
おいおまえら、知能ベースを elisp で書けよ。
はやくしろ。

401 名前:Zeno ◆5nZQbNmQPs [2005/04/05(火) 16:08:22 ]
Re:>400
              それはいいアイディアである

402 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/05(火) 17:27:56 ]
お前なんかに誉められてもうれしくないよ

403 名前:Zeno ◆5nZQbNmQPs [2005/04/06(水) 11:34:00 ]
Re:>402
              お前のことは誉めていない。
          知能ベースでも書いてから物を言うようにしろ



404 名前:Zeno ◆5nZQbNmQPs [2005/04/06(水) 11:43:29 ]

Tail Recursion は未だに Elisp に実装されていない。
この事実に理由はあるのか?


405 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/06(水) 12:09:56 ]
tail recursion なら実装されてますがなにか?
おまいの言いたいのは tail recursion optimization のことだろ。
理由はもちろんある。
-- 終了 --

406 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/06(水) 13:29:51 ]
あんま相手すんな。
伝染るぞ。

407 名前:Zeno ◆5nZQbNmQPs [2005/04/06(水) 17:14:11 ]
Re:>405

             じゃあお前が optimization しろ

408 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/06(水) 17:59:39 ]
動的スコープの言語では末尾再帰の最適化は不可能
(defun bar ()
(fset 'foo (lambda () (print "bar"))))
(defun foo ()
(bar)
(foo))

409 名前:Zeno ◆5nZQbNmQPs [2005/04/07(木) 14:22:10 ]

         A* サーチ・アルゴリズムの elisp バーションが
              ほしくないわけでもないな。

____________
"Self" is that which is in the process of becoming... --Zeno
Today's Lucky Number: 421

410 名前:名無しさん@お腹いっぱい。 [2005/04/07(木) 23:12:09 ]
>>409
負けたな

411 名前:sakurai osamu mailto:sage [2005/04/08(金) 02:23:21 ]
www.club-paruparo.com/

フィリピン万個伝説よろ

windows 最高!

412 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/08(金) 13:01:28 ]
ある文字列から四文字ずつ取り出してリストを作りたいのですが
どういう風にすればよいのでしょうか?

"いろはにほへとち" という風な文字列から '("いろはに" "ほへとち")
という風なリストを得たいのです。
文字列は四文字以上で4の倍数であることは保証されています。


413 名前:412 mailto:sage [2005/04/08(金) 13:59:44 ]
length と substring を使うと簡単にできました。
どうもすいません。



414 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/09(土) 21:30:09 ]
Dired-modeのコピーとかをバックグラウンドでできませぬか?

415 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/13(水) 21:05:28 ]
拡張子 .tex を開けると自動的にflyspell-modeになるようにしたくて、
ついでに辞書もデフォルト(英語)からかえたくて、以下の
コードを~/.emacs にいれたんですけど、flyspell-mode
も辞書の変換もうまくいきません。なにがだめなんでしょう?


(add-hook 'LaTeX-mode-hook 'flyspell-mode)
(setq LaTex-mode-hook
'(lambda ()
(setq ispell-personal-dictionary "~/.ispell-dico-perso")
(ispell-change-dictionary "dansk")
))

エラーのメッセージはでないんですけど、、、



416 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/13(水) 21:28:40 ]
>>415
>も辞書の変換もうまくいきません。なにがだめなんでしょう?
せっかくadd-hookしたのに、次のsetqで上書きされてます。
danskに萌えたので、設定例も。
(setq LaTex-mode-hook
(lambda ()
(flyspell-mode 1)
(set (make-local-variable 'ispell-personal-dictionary) "~/.ispell-dico-perso")
(ispell-change-dictionary "dansk")
))


417 名前:415 mailto:sage [2005/04/13(水) 21:45:32 ]
>>416
ありがとうございます。萌えてくださって。ってちがうか。
書いて下さった設定例でやってみたんですけど、
やっぱりうまくいきません、、、辞書も、英語のままです。
なにがいったいだめなんでしょうか、、、



418 名前:416 mailto:sage [2005/04/13(水) 21:56:59 ]
>>417
だめでしたか。
当方ispell-modeを英語で使ったことがあるだけで、personal-dictionaryなん
て変えたこともないのでした。
せっかくなので少し調べてみます。


419 名前:415 mailto:sage [2005/04/13(水) 22:03:09 ]
>>418
きょ、恐縮です、、、、
わたしももうちょっといろいろやってみます。

420 名前:416 mailto:sage [2005/04/13(水) 22:09:56 ]
flyspell-modeだとプロセスを上げっぱなしにし、
それに付随して、辞書の指定はプロセス立ち上げ時なので、
辞書の設定を先に行う必要があるようですね。
こんなんでどうでしょうか。
(setq LaTex-mode-hook
(lambda ()
(let ((ispell-local-dictionary "dansk"))
(set (make-local-variable 'ispell-personal-dictionary) "~/.ispell-dico-perso")
(flyspell-mode 1)
)))
#自分で試してみる気はしません



421 名前:415 mailto:sage [2005/04/13(水) 22:21:46 ]
>>420
調べて下さってありがとうございます。m(_ _)m
ですが、やはりだめでした。。。
そもそも、なぜflyspell-modeさえ自動的にたちあがらないのは
なぜなのか、、、
もうちょっとがんばってしらべてみます。


422 名前:416 mailto:sage [2005/04/13(水) 22:36:58 ]
げ、そういう状態でしたか。
LaTex-mode-hook じゃなくて latex-mode-hook なのでは?


423 名前:415 mailto:sage [2005/04/13(水) 22:49:20 ]
>>422
あああありがとうございます!(涙
うまくいきました!
あのコードはどっかから拾ってきたものなので盲目に過信してました,,,orz

最初に書いてもらったコードのLaTex をlatexに変えることでいけました。
一応貼っておきます。

(setq latex-mode-hook
(lambda ()
(flyspell-mode 1)
(set (make-local-variable 'ispell-personal-dictionary) "~/.ispell-dico-perso")
(ispell-change-dictionary "dansk")
))




424 名前:416 mailto:sage [2005/04/13(水) 23:12:13 ]
>>423
プロセスを作成するのは最初のparse時であり、
ispell-change-dictionaryでispellプロセスがあれば殺す、
という処理でした。

この辺はflyspellかispellかは関係ないですね。勘違いしてました。


425 名前:415 mailto:sage [2005/04/13(水) 23:50:34 ]
>>424
わたしにはまだよくわかりませんが
御教授戴きありがとうございました。時間ができしだい
Lispのマニュアルも最初から最後まで読もうと思います。

426 名前:Zeno ◆5nZQbNmQPs [2005/04/16(土) 19:01:21 ]
Reply-to:>>425
    よかったな。 Lisp の場合、フリーでダウンロードできる本が沢山ある。
                 探して読め。

____________
If T is consistent, T !|- G_T.
If T is ω-consistent, T !|- ¬G_T.

427 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/16(土) 20:35:55 ]
引数で与えたローマ字文字列を、平仮名に変換してくれる関数ありませんか?


428 名前:Zeno ◆5nZQbNmQPs [2005/04/16(土) 20:39:49 ]
Reply-to:>>427
> 引数で与えたローマ字文字列を、平仮名に変換してくれる関数ありませんか?

        そんなのあるもなにも、自分で簡単に書けるだろうが。

____________
If T is consistent, T !|- G_T.
If T is ω-consistent, T !|- ¬G_T.

429 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/17(日) 09:38:00 ]
>>427
kakasi 使っていいなら kakasi.el とか skk-kakasi.el とかを参考にすると
か。

430 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/17(日) 17:45:37 ]
読み込んだら文字化け!
何とかして!!

431 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/17(日) 17:48:49 ]
線香と水で供養する!

432 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/17(日) 23:03:48 ]
見るんじゃない 感じるんだ
そのうち文字化けでも読めるようになる


433 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/17(日) 23:44:43 ]
なにその Rogue like



434 名前:Zeno ◆5nZQbNmQPs [2005/04/18(月) 12:23:06 ]
Reply-to:>>427
> 引数で与えたローマ字文字列を、平仮名に変換してくれる関数ありませんか?

                pt を 0 で始める。
         pt を相対として、 substring で引数の文字列の
           `one-char'、`two-char'、`three-char'
                 をゲットする。

            s は empty string として初期化。

                (setq s (concat s
                   (cond
             ((string= one-char "a" ) "あ")
             ((string= one-char "i" ) "い")
                   ...
             ((string= two-char "ka" ) "か")
                   ...
                   )))
               んで、 pt を動かす。

               上の作業を繰りかえせ。
        Elisp 道場なんだから、後は自分で組み立てろバカ。


____________
If T is consistent, T !|- G_T.
If T is ω-consistent, T !|- ¬G_T.

435 名前:.Zeno ◆5nZQbNmQPs [2005/04/18(月) 12:24:07 ]
Reply-to:>>427
> 引数で与えたローマ字文字列を、平仮名に変換してくれる関数ありませんか?

pt を 0 で始める。
pt を相対として、 substring で引数の文字列の
`one-char'、`two-char'、`three-char'
をゲットする。

s は empty string として初期化。

(setq s (concat s
(cond
((string= one-char "a" ) "あ")
((string= one-char "i" ) "い")
...
((string= two-char "ka" ) "か")
...
)))
んで、 pt を動かす。

上の作業を繰りかえせ。
Elisp 道場なんだから、後は自分で組み立てろバカ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<277KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef