[表示 : 全て 最新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

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


236 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/31 11:55]
>>235
code convetion lang

237 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/31 15:49]
16bit,32bit,64bit,128bit単位の表示、および
ビッグ・エンディアン、リトル・エンディアンの切り替え
もできれば、言うこと無しだが・・・

238 名前:名無しさん@お腹いっぱい。 mailto:sage [04/06/03 17:13]
(defun bdccl-write-8bit (reg terminator bit)
(let ((x (+ bit 8)) (r (list `(write ,terminator))))
(while (< bit x)
(setq r (cons `(if (,reg & ,(lsh 1 bit)) (write ?1) (write ?0)) r))
(setq bit (+ bit 1)))
r))

(defun bdccl-write-hibit (reg terminator)
(bdccl-write-8bit reg terminator 8))

(defun bdccl-write-lobit (reg terminator)
(bdccl-write-8bit reg terminator 0))

239 名前:名無しさん@お腹いっぱい。 [04/06/09 23:51]
すいません初歩的質問なんですが、リファレンスマニュアルを最終的にPDF化したいのですが、
ftp://ftp.ascii.co.jp/pub/GNU/elisp-manual-20/elisp-manual-20-2.5-jp.tgz
これを展開して、README.jisを読んだんですが、elisp.dviの作成手順で
GNU Emacs Lisp Reference Manual のソースツリーのファイルtexinfo.texが
どこにあるのだか分かりません。どこにあるんでしょうか?



240 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/02 17:30]
>>239
texinfo のソースツリーに入ってます。
ttp://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/doc/

ところで、bookshelf.jp にある私的日本語化プロジェクトは
texinfo 形式のソースがあるのかな?

241 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/02 21:33]
>>240
texinfo でやってますので,ソースはありますけど,公開はしてません.


242 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/02 21:42]
では公開していただけますか?

243 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/03 09:21]
>>241
あ、texinfoのやつがあると僕もうれしい。支障なかったら公開きぼんぬです。

244 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/03 09:45]
>> 242,243
支障ないので,そのうちに公開しておきます.
少しお待ちを



245 名前:名無しさん@お腹いっぱい。 [04/07/13 23:34]
>>232
(defun bdccl-write-hibit (reg terminator)
`((if (,reg & ,(lsh 1 15)) (write ?1) (write ?0))
(if (,reg & ,(lsh 1 14)) (write ?1) (write ?0))
(if (,reg & ,(lsh 1 13)) (write ?1) (write ?0))
...

(lsh 1 15) これを下のように定数にしないのは
マクロ展開されるて、実行時には関係なくなるから?

(defun bdccl-write-hibit (reg terminator)
`((if (,reg & 32768) (write ?1) (write ?0))
(if (,reg & 16384)) (write ?1) (write ?0))



246 名前:名無しさん@お腹いっぱい。 [04/07/13 23:37]
>>232
と同じような Hex dump ってあるのかな? そっちの方が僕は使うな。
binary にしてどんな時に便利か教えてくれ。

247 名前:名無しさん@お腹いっぱい。 mailto:sage [04/08/11 23:45]
ほしゅ。


248 名前:名無しさん@お腹いっぱい。 mailto:sage [04/08/15 01:57]
つか、ほしゅしなくても落ちないのでは?

249 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/07 11:11]
連番を作るのに、こんなのを作ってるんだけど、
うまく動かない。 どこが悪いのかな…。

(do ((i 1)) ((> i 10))
(insert (format "Sequence%d\n" i))
(setq i (1+ i)))


250 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/07 11:43]
あなたは elisper ではありませんね?

251 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/07 14:16]
先生!
このマンコ関数はどうでしょう?
(defun manko(i)
(cond ((> i 0) (insert (format "Sequence%d\n" i)) (manko (- i 1)))
(t nil)))
(manko 10)

252 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/07 23:36]
number-sequence

253 名前:249 mailto:sage [04/09/08 11:31]
>>251

ありがとう。
でも、こういわれてしまう…。

Debugger entered--Lisp error: (void-function manko)
(manko 10)
eval((manko 10))
eval-last-sexp-1(nil)
eval-last-sexp(nil)
* call-interactively(eval-last-sexp)
recursive-edit()
byte-code("堰ニ!秩ー∨ 秩ー¬!秩ッ⊃n?


254 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/09 21:01]
(do ((i 1 (1+ i)) ((> i 10))
(insert (format "Sequence%d\n" i)))



255 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/09 22:02]
ちゃんと書きなよ。
しかし do なんか使わなくても。

256 名前:249 mailto:sage [04/09/09 22:37]
>>254

環境が悪いのでしょうか。

Debugger entered--Lisp error: (invalid-function (i 1 (1+ i)))
((i 1 (1+ i)) ((> i 10)) (insert (format "Sequence%d\n" i)))
eval(((i 1 (1+ i)) ((> i 10)) (insert (format "Sequence%d\n" i))))
eval-last-sexp-1(nil)
eval-last-sexp(nil)
* call-interactively(eval-last-sexp)


257 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/09 23:43]
>>249
そもそも「うまく動」いたらどうなるんだ?
期待してる結果が書いてない。

258 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/10 01:03]
(require 'cl)

(do ((i 1 (1+ i))) ((> i 10))
(insert (format "Sequence%d\n" i)))

259 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/10 09:17]
なんか覚えにくい構文だな。
まだloopのほうが、という気がした。

260 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/10 10:12]
eldocでミニバッファに出るから覚えなくても書ける。
でも普通はdotimesなんかを使うとは思うんだが。


261 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/10 11:14]
エコーエリア

262 名前:249 mailto:sage [04/09/10 17:28:00]
>>258

ありがとう!!

(require 'cl)

これが不足でした。

(do ((i 1 (1+ i))) ((> i 10))
(insert (format "Sequence%d\n" i)))

(do ((i 1)) ((> i 10))
(insert (format "Sequence%d\n" i))
(setq i (1+ i)))

どちらでも動きました。


しかし。
doなんてとか、loopのほうが、っていうなら、
サンプルを掲示してみてはどうでしょう。
言い合いをしているだけでは何にもならないじゃないですか。


263 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/10 17:48:24]
「してくれないでしょうか?」の間違いではなくて?
個人的には、何故doでやってみようとしたかに興味が少しある。

264 名前:260 mailto:sage [04/09/10 18:49:50]
>>262
調べろよ、それくらい。
見て猿真似できるサンプルが出てこないと何も出来ない池沼なのかよ。
キーワードが出てくるだけで十分だろ。
# cl-macsにloopがあるとは知らんかった

そもそも「言い合い」になるほど骨のある内容じゃなかったし。




265 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/10 19:05:04]
池沼というのは、マンコ関数でひっかかってる時点で明らか。>>253

266 名前:260 mailto:sage [04/09/10 19:15:10]
言われてみればその通りだった。orz


267 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/12 01:45:39]
(let ((i 0))
(while (< i 10)
.....
))
とかの方が分かりやすくて好きなんだけどな

268 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/12 04:07:53]
viperで、vimの"*"コマンドを実装した。

(define-key viper-vi-global-user-map "*" 'viper-exec-word-search-nearest-cursor)
(define-key viper-vi-global-user-map "#" '(lambda () (interactive) (viper-exec-word-search-nearest-cursor t)))
(define-key viper-vi-global-user-map "g*" '(lambda () (interactive) (viper-exec-word-search-nearest-cursor nil t)))
(define-key viper-vi-global-user-map "g#" '(lambda () (interactive) (viper-exec-word-search-nearest-cursor t t)))
(defun viper-exec-word-search-nearest-cursor (&optional reverse unbound)
"Emulate vim \"*\" command."
(interactive)
(let ((word (viper-surrounding-word 1 1)))
(when (stringp word)
(setq viper-s-string (if unbound word (concat "\\<" word "\\>")))
(setq viper-s-forward (not reverse))
(setq viper-search-history (cons viper-s-string viper-search-history))
(setq viper-intermediate-command 'viper-exec-word-search-nearest-cursor)
(viper-search viper-s-string viper-s-forward 1))))


269 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/12 09:49:16]
>>268
おーなかなかいいすね。使わせてもらいまっさ。
でも g + hogehoge は viper 流の (viper-buffer-search-enable) の方が好き :-)

;; しかし viper 異様に重いよなあ…。ボクのマシンがボロなだけ?(´・ω・`)

270 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/12 14:11:08]
再帰好きなelisperの人は
max-lisp-eval-depth と max-specpdl-size に
どのくらいの値を設定してるの?



271 名前:268 mailto:sage [04/09/18 10:06:39]
www.vim.orgで公開されているscriptで定番のやつの実装。
;;; alternate files quickly
(defvar a-extension-map
'(("c" . "h") ("cc" . "h") ("h" . ("c" "cc")) ("emacs" . "viper") ("viper" . "emacs"))
"The corresponding associative list of extensions.")
(defun alternate-files-quickly ()
"A few of quick commands to swtich between source files and header files quickly."
(interactive)
(if buffer-file-name
(let ((ext (file-name-extension buffer-file-name))
(base (file-name-sans-extension (file-name-nondirectory buffer-file-name)))
data a_ext a_file)
(when (and ext base (< 0 (length ext)))
(setq data (cdr (assoc ext a-extension-map)))
(cond ((stringp data)
(setq a_ext data)
(when (< 0 (length a_ext))
(setq a_file (concat base "." a_ext))
(when (file-exists-p a_file)
(find-file a_file))))
((listp data)
(catch 'break
(while data
(setq a_ext (car data))
(when (and (stringp a_ext) (< 0 (length a_ext)))
(setq a_file (concat base "." a_ext))
(when (file-exists-p a_file)
(find-file a_file)
(throw 'break t)))
(setq data (cdr data))))))))))


272 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/20 17:14:26]
;;; filecache の対象を load-path にすると、
;;; .el 以外のファイルもついてきて面倒なので以外を消す
;;; 必要なのはあとで追加する

(defun file-cache-not-el-list ()
(let (nelist)
(dolist (list file-cache-alist)
(catch 'quit
(unless (string-match "^.*\\.el\\'" (car list))
(setq nelist (cons (car list) nelist))
(throw 'quit nil))))
nelist))
(file-cache-add-directory-list load-path)
(file-cache-delete-file-list (file-cache-not-el-list))
(file-cache-add-file-list '("~/.emacs" "~/.skk" "~/.wl" "~/.folders" "~/.bashrc"))


273 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/20 17:58:29]
cach - throw は何のため?

(defun file-cache-not-el-list ()
(delq nil (mapcar (lambda (list)
(unless (string-match "\\.el\\'" (car list))
(car list)))
file-cache-alist)))

274 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/20 18:05:39]
>>273
叩かれて強くなるためです
勉強になりました




275 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/24 22:51:00]
30 分ほど考えたり調べたりしましたが,わからなかったので質問させてください.

(list (list '("A" . "1") '("B" . "2"))
(list '("C" . "3"))
(list '("D" . "4") '("E" . "5")))



(list '("A" . "1")
'("B" . "2")
'("C" . "3")
'("D" . "4")
'("E" . "5"))


のように展開(?)するにはどうしたら良いのでしょうか?

276 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/24 23:02:53]
何をどう調べたり考えたりしたのか書いた方がいいと思うよ。
これこれを試してみたとか。

ヒントとしては、
mapc + append


277 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/24 23:07:21]
宿題なのかなー?

278 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/24 23:09:05]
展開後(?)の表記のしかたが悪い。
それを評価した結果になってほしいのか、まさにそれが欲しいのか。

279 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/24 23:14:48]
>>275
(apply #'append
(list (list '("A" . "1") '("B" . "2"))
(list '("C" . "3"))
(list '("D" . "4") '("E" . "5"))))


280 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/24 23:16:21]
>>275
pc5.2ch.net/test/read.cgi/unix/1083394705/405
これ書いたやつだろ。

>>276
mapcは違うと思うぞ。


281 名前:276 mailto:sage [04/10/24 23:17:46]
>>280
applyが思い浮かばなかったのさ……


282 名前:275 mailto:sage [04/10/24 23:43:20]
素早いレスありがとうございます.うまくいきました.

> 何をどう調べたり考えたりしたのか書いた方がいいと思うよ。
> これこれを試してみたとか。

GNU Emacs Lisp Reference Manual のリスト関連をあさっていました.

> 宿題なのかなー?
趣味です.

> 展開後(?)の表記のしかたが悪い。
> それを評価した結果になってほしいのか、まさにそれが欲しいのか。
おっしゃるとおりですね.勉強不足でした.

>>279
> (apply #'append
すみません,この「#'」はリファレンスマニュアルのどの辺をみれば良いのでしょうか?
ポインタだけでも教えて頂けるとありがたいです.

> pc5.2ch.net/test/read.cgi/unix/1083394705/405
> これ書いたやつだろ。
そうです.何か問題ありましたでしょうか?

283 名前:276 mailto:sage [04/10/24 23:59:29]
>>282
#'はemacs lispではほとんど'と一緒。関数にのみ使うと思っておいて。
refrence manualだけじゃなくてemacs-lisp-intro は読んだ?


284 名前:275 mailto:sage [04/10/25 00:01:12]
>> 283
まだ読んでません.どうも基礎がわかってないみたいなので,まずは
そちらから読んでみます.お世話になりました.



285 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/09 12:28:51]
(defun my-w3m-view-url-with-external-browser ()
"emacs-w3mから外部ブラウザを起動する"
(interactive)
(let ((url (or (w3m-anchor)
(ffap-url-at-point)
w3m-current-url)))
(message "Browsing <%s>..." url)
(start-process "external-browser"
nil
"C:/Program Files/Mozilla Firefox/firefox.exe"
url)))

FireFoxを閉じないと、↓こんなメッセージが出てEmacsも閉じられない・・・

Active processes exist; kill them and exit anyway? (y or n)

どなたかアドバイスをお願いします。



286 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/09 12:45:52]
>>285
unix なら PROGRAM に & を付ければ? って話なんだろうけど。
firefox.exe のオプションか別コマンドで「firefox に url を渡してする終
了する」ってなことができるんじゃないの?

287 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/09 13:27:30]
process-kill-without-query じゃない?

288 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/09 14:01:40]
ごもっとも orz

289 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/09 14:19:05]
Emacs 終了時に Firefox も終了したいわけじゃないんだよね。
プロセスをバックグラウンドで動かしっぱなしにするには、
BUFFER 引数を 0 にして call-process を
(call-process "C:/Program Files/Mozilla Firefox/firefox.exe" nil 0 nil url)
こんな感じで呼び出してやればいい。

290 名前:289 mailto:sage [04/11/09 14:21:42]
う、navi2ch のデフォルトフィルタにひっかかった。
>>289
( call-process "C:/Program Files/Mozilla Firefox/firefox.exe" nil 0 nil url)

291 名前:285 mailto:sage [04/11/09 14:57:44]
レスありがとうございます。

>>286
firefoxのオプションを調べてみたんですが、適切なものが見つかりませんでした。

>>287
説明が足りなかったようで、すいません。
僕がやりたかったのは、emacsから起動したfirefoxは閉じずに
emacsだけを終了するというものです。
process-kill-without-queryを使ったら、問い合わせなしにfirefoxも
終了されてしまったので、どうやら僕がやりたいこととは違ったようです。

>>290
おおっ、うまくいきました。
ちなみにコードは以下のように変更しました。

(defun my-w3m-view-url-with-external-browser ()
"emacs-w3mから外部ブラウザを起動する"
(interactive)
(let ((url (or (w3m-anchor)
(ffap-url-at-point)
w3m-current-url)))
(message "Browsing <%s>..." url)
( call-process "C:/Program Files/Mozilla Firefox/firefox.exe" nil 0 nil url)))

どうもありがとうございました。

292 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/09 23:32:45]
>>290
start-process と call-process の第3引数を0にするのってそんな違いがあっ
たのか。今までどっちにするか気分で決めてた…(´Д`)

293 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/13 13:00:32]
8進数を10進数に変換する関数とかあったりする?
自前でゴリゴリやるしかないスか?
逆は format でできるんだけど…。

294 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/13 13:08:06]
>>293
(string-to-number (number-to-string 10) 8)
=> 8
(string-to-number (number-to-string 20) 8)
=> 16




295 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/13 14:43:54]
>>294
がーん、string-to-number って基数を指定できるのか、知らなかった。
ありがとう。

296 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/21 21:51:33]
(let ((y 1.2))
(while (>= y -1.2)
(let ((x -2.0))
(while (<= x 1.0)
(let ((zx x) (zy y) (v 126))
(while (and (< (+ (* zx zx) (* zy zy)) 4.0) (> v 32))
(let ((temp (+ (* 2 zx zy) y)))
(setq zx (+ (* zx zx) (- (* zy zy)) x))
(setq zy temp))
(setq v (- v 1)))
(insert v))
(setq x (+ x 0.04))))
(insert "\n")
(setq y (- y 0.1))))

297 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/27 21:42:29]
call-process を呼ぶ時って apply 使って呼んでるコードが多いんだけど、ど
うしてなの?
引数をリストで渡せるから? とか思ったんだけどそうでない場合でも apply
使ってることあるしなあ。なぜざんしょ?

298 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/28 13:55:08]
元々は直接呼んでたのが、何らかの必要があって apply を使うようになり、
その後の変更で apply である必要が無くなったんじゃないの?

299 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/04 07:28:21]
(pol2str "5X^2-3") >>> ((5 2) (-3 0))

入力がSTRINGで出力をリスト形式で出すようなpol2strを定義したいんですけど、
どうかいたらいいかわかります?
反対の作業はなんとなくできたんだけどこれはわからなかったです。


300 名前:297 mailto:sage [04/12/04 08:42:10]
>>298
遅くなったけどサンクス。そんな経緯があったのか。

301 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/04 10:31:36]
一気に変換するか、
一回トークンを切り出してリストに変換、あとはリスト処理。

302 名前:299 mailto:sage [04/12/04 14:13:51]
情報どうもっす。
色々調べたけど、TOKENに切り出す方法が分からないので諦めます。

303 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/04 14:28:11]
初心者なのはみえみえなんだからちゃんと教えてやれよ。


304 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/04 22:08:21]
----BEGIN BASE64----(font-lock-test.el.gz)
H4sICDWssUEAA2ZvbnQtbG9jay10ZXN0LmVsAI2RzW7DIBCEz/FTrHLJopZDnqdu
FQzrBAVYC0gjv30B569qWtVH77czOwMaGk8B/CxHDlk61kc5qZhIOpsmQGe9zaID
wPOBAmAkmUhFfSh8PKtoYI19j28fKKAP7y99L9bQlqCtlUVHGRCLiwbUHIzNloPU
KhEE67rVqlFp9gM7WbE6B7QhUwwy8ZgLs1CF8yoX85SjDXsZWE6RJ4rZUoKtEKLJ
4Sdb06SqUjERdXIRUMFAHXVVETkCDnMmqdnQzV1ODRHdxbWcdxri5Wf7OnxSXKS9
TVkeaT5zNAmwFbfkJ0ceNvhr0VvY3Ae3O4Ly5SqlqbR5zYB2hDt6NetWeAqOUnH1
5AeK0Bx/gi0UJsralOxOpfwMgh2+VoHH4oyRmeu5+fHWW9r7Rq2n0gfmI2xqPtle
Uy2hfK16mf1V3zcR8kqnVtX/178A0ylMGtwCAAA=
----END BASE64----

pc5.2ch.net/test/read.cgi/unix/1083394705/857-869
の流れでちょっとやってみたもの。

- とりあえずつつましく font-lock-keywords の末尾に追加
- でも OVERRIDE はt だったり。本当は 'keep がいいんだろうけど
- っつーか t にしててもところどころにしか色付かない。jit-lock だから?
- symbol-function の結果を直接使うんじゃ駄目なんだっけ?
- もうちょっと正規表現も格好よくしたいけど

とかいろいろ疑問があるけどまだあまりテストしてないです。もっとスマート
なのが出来たら教えて下さい。



305 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/04 23:01:19]
>>304
hook ってわかってるか?


306 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/05 02:34:57]
なんか妙にややこしいことしてるな。
(font-lock-add-keywords 'emacs-lisp-mode '((REGEXP SUBEXP (progn ...))))
みたいな感じでいいんじゃないのか。

307 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/05 03:00:41]
>>304
> - っつーか t にしててもところどころにしか色付かない。jit-lock だから?
my-font-lock-parse-lisp で、
(and func
(or (byte-code-function-p func)
(subrp func)))
が nil になったときにそのまま nil を返しちゃまずい。
もう一回探さないとそれ以降に色が付かないぞ。

308 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/05 22:58:55]
>>306
最初そっちでやっててリストの先頭に登録されるのが嫌だったんですが新ため
て見たら APPEND ってフラグがありますね。そっちに変更してみました。

>>307
ごもっとも。書いててなんか違和感あったんだけどなんで気付かなかったんだ
ろ orz

とりあえずそれなりに色付くようになりました。どもー。

309 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/06 21:44:56]
しつこくてスマン。間違いがあったので訂正。
>>304 の condition-case んとこは void-function だけ受けるんじゃ駄目で
すね。error で受けてやれば全部色付くようになりました。

310 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/07 13:43:05]
>>309
なんかいろいろ修正があったようなのですが、自分も一度使用してみたいので、
よかったら修正版 font-lock-test を navi2ch-base64-insert-file してもらえるとうれしいです

311 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/07 22:35:01]
----BEGIN BASE64----(font-lock-test2.el.gz)
H4sICDSvtUEAA2ZvbnQtbG9jay10ZXN0Mi5lbADdVEFu3DAMPNuvIPZiCoWA5to8
JU4Br01vhFiSK8nY+j/5QD6RS5FP9CWl6G63aex0DznlZJjiDDkzlrGjvm9aAjvr
/NQ0mDhq27TBQ4WYAL/0PtAh+Ml1sIvUwCEQuZ1SCpwZVInrFHHahzWGcQrjQP+F
95Nr1+CWOjNZ2A/TPxyTEwbvkh58e/9CCA7GmqRKADzekQMMpFlJaO8YEI5NYOKb
Cm/rGm++ooLa3X6qa7UDwYEgGesDYMNLoPO8liX7DfBASSf6nvQY/EghzfAZKtGD
tkk8IKZg3AGulCqLoqjwvGHrrSV+ke5zmddxjJCyyiiQ4a13nUnGO902kbJu5gOM
s937QezKh4DGJQpOR9+nlyto509LGop5oRM3s1MIrC6bmau46eRiZG7a9lyS/wiW
ZyHjhvPFm87nBk7nggCKlQA2EhBfLwlA7s5HCGA/J2JIR39c1uPpm924EG/fiHKJ
5aJgLolEnP4rkvN503X6nuajD12ESpplj2aRYVnU4s32XbuCau2vzKNyOu81SyS8
GiXVd54k3++rSVL9Pen6GohFRr3IZTZ4+Pn0+Pz88KP8BYGg2TyqBgAA
----END BASE64----
>>310
今のところこんなかんじに落ち着いてます。lisp なだけにかなりの部分に色
付くため1色だと逆に見難かったので3色使ってます。

312 名前:310 mailto:sage [04/12/08 00:06:08]
>>311 ありがとうございました
しかし、これは良くできていますね。
こうやって見てみると自分が普段どれだけ多くのsubrな関数を使用しているのかわかります。
感謝です。

313 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/08 03:56:47]
minibuffer で作業してるときにたまに message が表示されて
自分が入力してるのが消えるときがあるじゃないですか。
で、そんなときに消えないようにと以下の advice を付けてみたんですけど、
今いち視線が上下してよろしくない気がします。
何かいい案はないですかね?
momentary-string-display をうまく使えばいい感じになりそうな気もするけど。。。

(defadvice message (around if-minibuffer-use-momentary-string-display activate)
(if (window-minibuffer-p (selected-window))
(save-window-excursion
(save-selected-window
(select-window (display-buffer (get-buffer-create "*message on minibuffer*")))
(delete-other-windows)
(erase-buffer)
(insert (make-string (window-height) ?\n)
(format (ad-get-arg 0) (ad-get-arg 1)))
(goto-char (point-max))
(recenter))
(sit-for minibuffer-message-timeout))
ad-do-it))


314 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/08 08:55:07]
>>313
> minibuffer で作業してるときにたまに message が表示されて
> 自分が入力してるのが消えるときがあるじゃないですか。

漏れも、LSDBを入れたらその問題で悩みました。Fontifying... という
メッセージがじゃまをするので、~/.emacs で (setq font-lock-verbose nil)
しましたが、こういう手もあったとは。




315 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/08 22:46:40]
>>313
何となくわかればいいだけなら、こんな感じでは?
一発目だけポインタを移動するとか、小細工はあってもいいけど

(defadvice message (around my-message-ad activate)
(if (window-minibuffer-p (selected-window))
(let ((executing-kbd-macro t))
ad-do-it
(display-buffer "*Messages*"))
ad-do-it))



316 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/08 23:47:51]
>>315
ポインタってポイントのコト?


317 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/09 01:29:52]
結局こんなんになりました。
これだと視線の上下もないしいい感じ。
ついでに、minibuffer での isearch のときもいい感じになってくれました。
ただ signal とかの emacs の中の人が処理してるやつはやっぱりだめっぽいです。

(defadvice message (around minibuffer-workaround activate)
(if (window-minibuffer-p (selected-window))
(let ((pos (point-max)))
(when (ad-get-arg 0)
(unwind-protect
(progn
(save-excursion
(goto-char pos)
(insert "\n" (format (ad-get-arg 0) (ad-get-arg 1))))
(sit-for (or minibuffer-message-timeout 1)))
(delete-region pos (point-max)))))
ad-do-it))


318 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/09 02:00:56]
なんかいもごめんです。
さっきのやつの insert のとこを
(insert "\n" (apply 'format (ad-get-arg 0) (ad-get-args 1))))
に変えないとダメポです。

あと、skk と相性がわるいなぁ。


319 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/10 22:21:05]
example.jp/foo bar/~baz/
こんな url を encode して
example.jp/foo%20bar/%7Ebaz/
を得たいんだけど、そのものズバリな関数がありそうで見つからない。

(browse-url-file-url "example.jp/foo bar/~baz/")
=> "example.jp/foo%20bar/~baz/"

~ は encode してくれないのね。

(w3m-url-encode-string "example.jp/foo bar/~baz/")
=> "example.jp/foo+bar/%7ebaz/"

+ か(´・ω・`)
今は自力でやってるけど、どっかにあったりする?

320 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/10 22:57:43]
~ をエンコードすべき理由が思い当たらないんだけど

321 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/10 23:22:32]
同一性をチェックしたいとか?

322 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/11 10:59:40]
RFC1738 の時代には「+」が unreserved で「~」はエスケープが必要だった。
後に RFC2396 ができて「+」が reserved になり、「~」は unreserved に
なった。

> ~ は encode してくれないのね。
は RFC2396 に

> + か(´・ω・`)
は RFC1738 にしたがっているのだろう。



323 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/11 14:27:03]
つまりどれにも準拠してないってことね。


324 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/11 16:19:09]
え?



325 名前:319 mailto:sage [04/12/12 12:55:16]
発端は wget -x で件の url を取得するとああいったディレクトリを掘るんで、
それを emacs 側で知りたいってことからでした。
>>322 氏の解説のように変遷があると既存の関数でズバリな encode を期待す
るのは無理がありそうですね。自力 encode で納得しときます。
レスどーもでした。


326 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/12 21:58:29]
wgetってなんで ~ をエンコードしちゃうんだろうね。
だれかハックしてエンコードしないバージョンを配布してくれ。


327 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/12 22:20:03]
そんなんハックとはいえん

328 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/13 12:21:41]
一文字変えるだけ?

329 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/21 22:10:29]
最近Emacsを使うだけの立場から少しいじろうと思って、
「やさしいEmacs-Lisp講座」など読みました。

しかし、この板に書かれてるようなLispははるかに上でびっくりしました。
hookとかどこにもほとんど説明がないし、始めはshow-paren-modeが気に食わなくて
対応する括弧のbackgroundではなく、括弧そのものがboldでredになるようにしたい
と思ったのですが第一歩が踏み出せません。

cc-mode.elとかみれば参考になるかと思いきや、やはり難しい。。
faceというのをいじればよいことまでは分かったのですが、他の機能もごちゃごちゃ
ついているので、boldにしたりするのにどれが本当に必要なものか見分けがつきません。

みなさんはこのギャップをどこで勉強して埋められたのですか?
よろしければ教えてください。
そして、こんな自分にどうやって、そして何を勉強してよいのかアドバイスください。
よろしくお願いします。

330 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/22 00:43:21]
知識に上に下もないと思うけど。

「やさしいEmacs-Lisp講座」は自分も一番最初に読んだ。elispの基本を押さえている
し、かなり良い本だと思う。

自分の場合は、その知識を元に .emacs をいじったり、他人の .emacs を覗いたり、日
本語 Info で分からないこと調べたりしていくうちに、個人レベルでやりたいことはで
きるようになった。

その時は分からなくても、何ヶ月後かに調べてみたら、あっさり分かったりするので、
焦らずに知識を蓄えていくのが一番の近道ではないでしょうか。


331 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/22 01:09:28]
>>329
(show-paren-mode) の評価より先に
show-paren-match-face を上書きすると変えられるよ.
ちょっと paren.el のソース見たけどこんな感じ.

(defface show-paren-match-face '((t (:foreground "red" :bold t))) nil)
(show-paren-mode t)

この際だから mic-paren.el でも捜して比較してみたらどうでしょう.


332 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/22 01:33:27]
>>331
揚げ足取るわけじゃないけど、、、
set-face-*()で変えるほうが自然じゃない?

(show-paren-mode 1)
(set-face-foreground 'show-paren-match-face "red")
(set-face-bold-p 'show-paren-match-face t)


333 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/22 01:38:24]
>>332
確かにこっちのほうがスマートだね.
何でオレ, あんなふうに書いたんだろ….


334 名前:名無しさん@お腹いっぱい。 mailto:sage [04/12/22 04:07:45]
>>330-333
ありがとうございます!あれから少し探してみたのですが、
どうも各モードにどんな変数があるかをInfoで見つけて、
それをいじるというのがカスタマイズの初歩のようですね。




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)
))






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

前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