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:名無しさん@お腹いっぱい。
04/09/10 17:48:24
「してくれないでしょうか?」の間違いではなくて?
個人的には、何故doでやってみようとしたかに興味が少しある。
264:260
04/09/10 18:49:50
>>262
調べろよ、それくらい。
見て猿真似できるサンプルが出てこないと何も出来ない池沼なのかよ。
キーワードが出てくるだけで十分だろ。
# cl-macsにloopがあるとは知らんかった
そもそも「言い合い」になるほど骨のある内容じゃなかったし。
265:名無しさん@お腹いっぱい。
04/09/10 19:05:04
池沼というのは、マンコ関数でひっかかってる時点で明らか。>>253
266:260
04/09/10 19:15:10
言われてみればその通りだった。orz
267:名無しさん@お腹いっぱい。
04/09/12 01:45:39
(let ((i 0))
(while (< i 10)
.....
))
とかの方が分かりやすくて好きなんだけどな
268:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
04/09/12 09:49:16
>>268
おーなかなかいいすね。使わせてもらいまっさ。
でも g + hogehoge は viper 流の (viper-buffer-search-enable) の方が好き :-)
;; しかし viper 異様に重いよなあ…。ボクのマシンがボロなだけ?(´・ω・`)
270:名無しさん@お腹いっぱい。
04/09/12 14:11:08
再帰好きなelisperの人は
max-lisp-eval-depth と max-specpdl-size に
どのくらいの値を設定してるの?
271:268
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:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
04/09/20 18:05:39
>>273
叩かれて強くなるためです
勉強になりました
275:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
04/10/24 23:02:53
何をどう調べたり考えたりしたのか書いた方がいいと思うよ。
これこれを試してみたとか。
ヒントとしては、
mapc + append
277:名無しさん@お腹いっぱい。
04/10/24 23:07:21
宿題なのかなー?
278:名無しさん@お腹いっぱい。
04/10/24 23:09:05
展開後(?)の表記のしかたが悪い。
それを評価した結果になってほしいのか、まさにそれが欲しいのか。
279:名無しさん@お腹いっぱい。
04/10/24 23:14:48
>>275
(apply #'append
(list (list '("A" . "1") '("B" . "2"))
(list '("C" . "3"))
(list '("D" . "4") '("E" . "5"))))
280:名無しさん@お腹いっぱい。
04/10/24 23:16:21
>>275
スレリンク(unix板:405番)
これ書いたやつだろ。
>>276
mapcは違うと思うぞ。
281:276
04/10/24 23:17:46
>>280
applyが思い浮かばなかったのさ……
282:275
04/10/24 23:43:20
素早いレスありがとうございます.うまくいきました.
> 何をどう調べたり考えたりしたのか書いた方がいいと思うよ。
> これこれを試してみたとか。
GNU Emacs Lisp Reference Manual のリスト関連をあさっていました.
> 宿題なのかなー?
趣味です.
> 展開後(?)の表記のしかたが悪い。
> それを評価した結果になってほしいのか、まさにそれが欲しいのか。
おっしゃるとおりですね.勉強不足でした.
>>279
> (apply #'append
すみません,この「#'」はリファレンスマニュアルのどの辺をみれば良いのでしょうか?
ポインタだけでも教えて頂けるとありがたいです.
> スレリンク(unix板:405番)
> これ書いたやつだろ。
そうです.何か問題ありましたでしょうか?
283:276
04/10/24 23:59:29
>>282
#'はemacs lispではほとんど'と一緒。関数にのみ使うと思っておいて。
refrence manualだけじゃなくてemacs-lisp-intro は読んだ?
284:275
04/10/25 00:01:12
>> 283
まだ読んでません.どうも基礎がわかってないみたいなので,まずは
そちらから読んでみます.お世話になりました.
285:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
04/11/09 12:45:52
>>285
unix なら PROGRAM に & を付ければ? って話なんだろうけど。
firefox.exe のオプションか別コマンドで「firefox に url を渡してする終
了する」ってなことができるんじゃないの?
287:名無しさん@お腹いっぱい。
04/11/09 13:27:30
process-kill-without-query じゃない?
288:名無しさん@お腹いっぱい。
04/11/09 14:01:40
ごもっとも orz
289:名無しさん@お腹いっぱい。
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
04/11/09 14:21:42
う、navi2ch のデフォルトフィルタにひっかかった。
>>289 は
( call-process "C:/Program Files/Mozilla Firefox/firefox.exe" nil 0 nil url)
291:285
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:名無しさん@お腹いっぱい。
04/11/09 23:32:45
>>290
start-process と call-process の第3引数を0にするのってそんな違いがあっ
たのか。今までどっちにするか気分で決めてた…(´Д`)
293:名無しさん@お腹いっぱい。
04/11/13 13:00:32
8進数を10進数に変換する関数とかあったりする?
自前でゴリゴリやるしかないスか?
逆は format でできるんだけど…。
294:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
04/11/13 14:43:54
>>294
がーん、string-to-number って基数を指定できるのか、知らなかった。
ありがとう。
296:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
04/11/27 21:42:29
call-process を呼ぶ時って apply 使って呼んでるコードが多いんだけど、ど
うしてなの?
引数をリストで渡せるから? とか思ったんだけどそうでない場合でも apply
使ってることあるしなあ。なぜざんしょ?
298:名無しさん@お腹いっぱい。
04/11/28 13:55:08
元々は直接呼んでたのが、何らかの必要があって apply を使うようになり、
その後の変更で apply である必要が無くなったんじゃないの?
299:名無しさん@お腹いっぱい。
04/12/04 07:28:21
(pol2str "5X^2-3") >>> ((5 2) (-3 0))
入力がSTRINGで出力をリスト形式で出すようなpol2strを定義したいんですけど、
どうかいたらいいかわかります?
反対の作業はなんとなくできたんだけどこれはわからなかったです。
300:297
04/12/04 08:42:10
>>298
遅くなったけどサンクス。そんな経緯があったのか。
301:名無しさん@お腹いっぱい。
04/12/04 10:31:36
一気に変換するか、
一回トークンを切り出してリストに変換、あとはリスト処理。
302:299
04/12/04 14:13:51
情報どうもっす。
色々調べたけど、TOKENに切り出す方法が分からないので諦めます。
303:名無しさん@お腹いっぱい。
04/12/04 14:28:11
初心者なのはみえみえなんだからちゃんと教えてやれよ。
304:名無しさん@お腹いっぱい。
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----
スレリンク(unix板:857-869番)
の流れでちょっとやってみたもの。
- とりあえずつつましく font-lock-keywords の末尾に追加
- でも OVERRIDE はt だったり。本当は 'keep がいいんだろうけど
- っつーか t にしててもところどころにしか色付かない。jit-lock だから?
- symbol-function の結果を直接使うんじゃ駄目なんだっけ?
- もうちょっと正規表現も格好よくしたいけど
とかいろいろ疑問があるけどまだあまりテストしてないです。もっとスマート
なのが出来たら教えて下さい。
305:名無しさん@お腹いっぱい。
04/12/04 23:01:19
>>304
hook ってわかってるか?
306:名無しさん@お腹いっぱい。
04/12/05 02:34:57
なんか妙にややこしいことしてるな。
(font-lock-add-keywords 'emacs-lisp-mode '((REGEXP SUBEXP (progn ...))))
みたいな感じでいいんじゃないのか。
307:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
04/12/05 22:58:55
>>306
最初そっちでやっててリストの先頭に登録されるのが嫌だったんですが新ため
て見たら APPEND ってフラグがありますね。そっちに変更してみました。
>>307
ごもっとも。書いててなんか違和感あったんだけどなんで気付かなかったんだ
ろ orz
とりあえずそれなりに色付くようになりました。どもー。
309:名無しさん@お腹いっぱい。
04/12/06 21:44:56
しつこくてスマン。間違いがあったので訂正。
>>304 の condition-case んとこは void-function だけ受けるんじゃ駄目で
すね。error で受けてやれば全部色付くようになりました。
310:名無しさん@お腹いっぱい。
04/12/07 13:43:05
>>309
なんかいろいろ修正があったようなのですが、自分も一度使用してみたいので、
よかったら修正版 font-lock-test を navi2ch-base64-insert-file してもらえるとうれしいです
311:名無しさん@お腹いっぱい。
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
04/12/08 00:06:08
>>311 ありがとうございました
しかし、これは良くできていますね。
こうやって見てみると自分が普段どれだけ多くのsubrな関数を使用しているのかわかります。
感謝です。
313:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
04/12/08 08:55:07
>>313
> minibuffer で作業してるときにたまに message が表示されて
> 自分が入力してるのが消えるときがあるじゃないですか。
漏れも、LSDBを入れたらその問題で悩みました。Fontifying... という
メッセージがじゃまをするので、~/.emacs で (setq font-lock-verbose nil)
しましたが、こういう手もあったとは。
315:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
04/12/08 23:47:51
>>315
ポインタってポイントのコト?
317:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
04/12/09 02:00:56
なんかいもごめんです。
さっきのやつの insert のとこを
(insert "\n" (apply 'format (ad-get-arg 0) (ad-get-args 1))))
に変えないとダメポです。
あと、skk と相性がわるいなぁ。
319:名無しさん@お腹いっぱい。
04/12/10 22:21:05
URLリンク(example.jp) bar/~baz/
こんな url を encode して
URLリンク(example.jp)
を得たいんだけど、そのものズバリな関数がありそうで見つからない。
(browse-url-file-url "URLリンク(example.jp) bar/~baz/")
=> "URLリンク(example.jp)"
~ は encode してくれないのね。
(w3m-url-encode-string "URLリンク(example.jp) bar/~baz/")
=> "URLリンク(example.jp)"
+ か(´・ω・`)
今は自力でやってるけど、どっかにあったりする?
320:名無しさん@お腹いっぱい。
04/12/10 22:57:43
~ をエンコードすべき理由が思い当たらないんだけど
321:名無しさん@お腹いっぱい。
04/12/10 23:22:32
同一性をチェックしたいとか?
322:名無しさん@お腹いっぱい。
04/12/11 10:59:40
RFC1738 の時代には「+」が unreserved で「~」はエスケープが必要だった。
後に RFC2396 ができて「+」が reserved になり、「~」は unreserved に
なった。
> ~ は encode してくれないのね。
は RFC2396 に
> + か(´・ω・`)
は RFC1738 にしたがっているのだろう。
323:名無しさん@お腹いっぱい。
04/12/11 14:27:03
つまりどれにも準拠してないってことね。
324:名無しさん@お腹いっぱい。
04/12/11 16:19:09
え?
325:319
04/12/12 12:55:16
発端は wget -x で件の url を取得するとああいったディレクトリを掘るんで、
それを emacs 側で知りたいってことからでした。
>>322 氏の解説のように変遷があると既存の関数でズバリな encode を期待す
るのは無理がありそうですね。自力 encode で納得しときます。
レスどーもでした。
326:名無しさん@お腹いっぱい。
04/12/12 21:58:29
wgetってなんで ~ をエンコードしちゃうんだろうね。
だれかハックしてエンコードしないバージョンを配布してくれ。
327:名無しさん@お腹いっぱい。
04/12/12 22:20:03
そんなんハックとはいえん
328:名無しさん@お腹いっぱい。
04/12/13 12:21:41
一文字変えるだけ?
329:名無しさん@お腹いっぱい。
04/12/21 22:10:29
最近Emacsを使うだけの立場から少しいじろうと思って、
「やさしいEmacs-Lisp講座」など読みました。
しかし、この板に書かれてるようなLispははるかに上でびっくりしました。
hookとかどこにもほとんど説明がないし、始めはshow-paren-modeが気に食わなくて
対応する括弧のbackgroundではなく、括弧そのものがboldでredになるようにしたい
と思ったのですが第一歩が踏み出せません。
cc-mode.elとかみれば参考になるかと思いきや、やはり難しい。。
faceというのをいじればよいことまでは分かったのですが、他の機能もごちゃごちゃ
ついているので、boldにしたりするのにどれが本当に必要なものか見分けがつきません。
みなさんはこのギャップをどこで勉強して埋められたのですか?
よろしければ教えてください。
そして、こんな自分にどうやって、そして何を勉強してよいのかアドバイスください。
よろしくお願いします。
330:名無しさん@お腹いっぱい。
04/12/22 00:43:21
知識に上に下もないと思うけど。
「やさしいEmacs-Lisp講座」は自分も一番最初に読んだ。elispの基本を押さえている
し、かなり良い本だと思う。
自分の場合は、その知識を元に .emacs をいじったり、他人の .emacs を覗いたり、日
本語 Info で分からないこと調べたりしていくうちに、個人レベルでやりたいことはで
きるようになった。
その時は分からなくても、何ヶ月後かに調べてみたら、あっさり分かったりするので、
焦らずに知識を蓄えていくのが一番の近道ではないでしょうか。
331:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
04/12/22 01:38:24
>>332
確かにこっちのほうがスマートだね.
何でオレ, あんなふうに書いたんだろ….
334:名無しさん@お腹いっぱい。
04/12/22 04:07:45
>>330-333
ありがとうございます!あれから少し探してみたのですが、
どうも各モードにどんな変数があるかをInfoで見つけて、
それをいじるというのがカスタマイズの初歩のようですね。
335:名無しさん@お腹いっぱい。
05/01/07 00:10:45
diredモードで拡張子ごとに色を付けたいんですけどどうやったらいいですか?
336:名無しさん@お腹いっぱい。
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
05/01/07 19:28:01
お~、ありがとうございます。
バッチリ動きました。
ただexeにboldが効いてなかった様な気も・・。
Fontlockの設定とかが原因でboldに気が付かなかっただけかな。
boldを色指定に変えて使ってます。
十分満足なんですけど
拡張子だけに色を付けるとなると相当面倒ですか?
理想としては拡張子はファイル名とは別のカラムに表示して(lsの設定?)
さらに拡張子にだけ色を付けたいのですが。
つーかemacs楽しいですね。時間足りないw
ある程度Lisp覚えてがんがんカスタマイズできるようになりたいな。
338:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
05/01/25 23:45:32
>>339
その環境だと shift+right も right も一緒になってないか?
341:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
05/01/26 00:37:20
スレ違いだろうが、とりあえず [?\e ?\[ ?d] とか "\e[d" とか
343:名無しさん@お腹いっぱい。
05/01/26 00:49:47
おお、いけました。ありがとうございます。
shift+upでバッファ間を移動しまくっております。
previous-bufferみたいな関数あるかと思ったんですけどないみたいですね。残念。
書くスキルないのはもっと残念です。
どこで質問するか迷ったんですけどやっぱりスレ違いでしたか。
emacsスレで聞けばよかったです。
ありがとうございました。
344:名無しさん@お腹いっぱい。
05/01/26 01:40:01
>>343
> shift+upでバッファ間を移動しまくっております。
> previous-bufferみたいな関数あるかと思ったんですけどないみたいですね。残念。
バッファっつーか、ウィンドウ間を移動したいんだよね?
windomove.el がいいんじゃないかと。
345:名無しさん@お腹いっぱい。
05/01/26 01:41:01
> windomove.el
変なところに o が入った。windmove.el だ。スマソ
346:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
05/02/11 20:30:48
(global-set-key "\C-cg" "\C-f\C-b")
351:名無しさん@お腹いっぱい。
05/02/11 20:45:11
(interactive)
ていうかelispにbeginは無いし
352:名無しさん@お腹いっぱい。
05/02/11 20:46:07
(define-key mode-specific-map "g"
(lambda ()
(interactive)
(forward-char)
(backward-char)))
353:名無しさん@お腹いっぱい。
05/02/11 21:58:34
どうも、解決しました。
(ここ結構人居るんですね)
other-windowを組み合わせようとしてたんですが、
これが引数とるのに気が付かなくて二重にはまってました。
M-xから呼ぶときは引数いらないのに...いまだに意味不明です。
354:名無しさん@お腹いっぱい。
05/02/11 22:59:58
(other-window ARG &optional ALL-FRAMES)
だから引数は必要。
M-x でいらない(ように見える)のは (interactive "p") で
(prefix-numeric-value current-prefix-arg) が渡されるから。
355:名無しさん@お腹いっぱい。
05/02/12 01:45:40
>>353
要らない世話かも知れないけど>>354に補足すると
(interactive "p") で渡っているのは ARG の方だけね
ALL-FRAMES を指定するときは
(other-window 1 t)
のようにもう一つ引数がいるからね
詳しくは info を
356:名無しさん@お腹いっぱい。
05/02/12 08:41:04
Lispはちょっと触った事あったんでいけるかと思ってたんですが、
Emacsの仕様もあって結構難しいですね。
ちょっと勉強してみます。
357:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
05/02/19 01:21:29
(re-search-forward "\\cj" (point-max) t)
Emacs21 なら
(re-search-forward "[[:nonascii:]]" (point-max) t)
が使えたはず。
362:名無しさん@お腹いっぱい。
05/02/19 01:27:41
Emacsのunibyte/multibyteってのはタダのバイト列として読むか
なんらかのエンコーディングで表現された文字として読むかってとこで生じる。
単に表現されたときに1バイトになるかってのは関係ない。
363:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
05/02/19 02:29:27
はいはい。それはmake_string_from_bytesだからでしょ。
それは考慮してるんじゃなくてunibyteにするかmutlibyteにするかっていう
判定材料に使ってるだけだよ。
その関数の使われるところがどういうところかも見れば自明だと思うんだけど。
365:名無しさん@お腹いっぱい。
05/02/19 03:06:30
自日月
366:名無しさん@お腹いっぱい。
05/02/19 03:38:11
>>364
はいはい。じゃあ
(multibyte-string-p (string 97)) => nil
(multibyte-string-p (string 53794)) => t
を説明してみ。
367:名無しさん@お腹いっぱい。
05/02/19 03:49:16
アホだな。Fstringってmake_string_from_bytesを使ってる例でしかないじゃん。
それはインタフェースからしてmultibyteかどうかの情報が与えられないから、
multibyteかどうかを判定するのに文字の範囲から推定するしかできないからでしょ。
逆に例えば既にmultibyteである情報源から文字列を作るとき、
要するにmultibyte bufferからsubstringする場合なんかはいちいち
中身が1バイト文字だけかどうかなんて考慮しないよ。
まあソースコード読みなよ。
Emacsでのunibyte/multibyteの扱いってものについて学習してらっしゃい。
368:名無しさん@お腹いっぱい。
05/02/19 05:04:41
>>362 の
> 単に表現されたときに1バイトになるかってのは関係ない。
に対し、SINGLE_BYTE_CHAR_P でない文字を含む文字列は常に multibyte にな
ると言ってるのに、SINGLE_BYTE_CHAR_P だけからなる文字列も multibyte に
なり得ると反論してもしょうがないだろうに。
369:名無しさん@お腹いっぱい。
05/02/19 05:27:37
> に対し、SINGLE_BYTE_CHAR_P でない文字を含む文字列は常に multibyte にな
> る
そこが問題なのか? 違うだろ。だって当たり前すぎるほど当たり前じゃん。
>>363はタダのバイト列として読むんじゃなくてEmacsの内部表現で表現された
文字列として読んでるんだから。
そこを問題にしているとしたら363の方こそナンセンス。
370:名無しさん@お腹いっぱい。
05/02/19 07:02:02
>>366がどういう意図をもっているのか自分で説明すべきだろ。
何を根拠に何を主張したいのか書かなきゃ単なる煽りの手口。
371:359
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:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
05/02/20 18:40:57
>>373
おおぅ、ナイスです。
ありがたく使わせていただきます。
375:373
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
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
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:名無しさん@お腹いっぱい。
05/03/20 13:59:42
(defadvice next-error (after next-error-plus-alpha activate)
(insert "OMOITSUKANAI"))
定義してgrep+next-error実行しても, OMOITSUKANAIがバッファに挿入され
ないのはどうしてなのだろうか
379:名無しさん@お腹いっぱい。
05/03/20 18:00:24
>>378
(with-current-buffer ) を抜けたあとだから。
380:名無しさん@お腹いっぱい。
05/03/21 13:45:50
>>379 with-current-buffer 以後でも insert を可能にする方法は何
かありますか?
381:名無しさん@お腹いっぱい。
05/03/21 18:16:49
>>380
with-current-buffer
382:名無しさん@お腹いっぱい。
05/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:名無しさん@お腹いっぱい。
05/03/23 09:16:12
>>382
(when (setq next-error-last-buffer (next-error-find-buffer))
...
384:名無しさん@お腹いっぱい。
05/03/23 14:52:04
>>383
その中に入れても結局なりませんでした。。。
385:名無しさん@お腹いっぱい。
05/03/23 21:36:02
>>384
最新の Emacs だと grep バッファは読み込み専用だけど,あらかじめちゃんと
書き込めるように対処はしてあるの?
386:名無しさん@お腹いっぱい。
05/03/24 00:33:30
>>385
書き込みしたいのは、次のエラー箇所が見つかったファイル (この場合はマッチするファイル)に
なので、 *grep* バッファ上でではありません。。
`next-error-last-buffer' がそのファイルじゃないのですか?
387:名無しさん@お腹いっぱい。
05/03/24 01:36:43
試してみると
next-error-last-buffer's value is #<buffer *grep*>
ってなるから違うみたい
388:名無しさん@お腹いっぱい。
05/03/24 22:05:20
emacs 21.4 を使っています。
カーソル配下のtextのface取得方法が解からないので、教えてください。
やりたいことは、特定の単語の色の変更では無く、
その単語の所属するキーワードグループまるごと色を変更したい為、
カーソル配下の単語から、faceを特定したいということです。
お願いします。
389:名無しさん@お腹いっぱい。
05/03/24 22:51:54
(get-text-property (point) 'face)
390:388
05/03/25 00:51:21
>>389
thx
391:名無しさん@お腹いっぱい。
05/03/30 12:38:13
Emacs には「グラフ」データ構造の library がないように思えます。
ここでプログラムしてみちゃってください。
392:名無しさん@お腹いっぱい。
05/03/30 12:52:18
ム板でやると盛り上がると見た。
393:名無しさん@お腹いっぱい。
05/03/30 17:48:01
>>392
ここでよくない? こういうプログラミング練習の為にこのスレッドがあるんじゃないの?
394:名無しさん@お腹いっぱい。
05/03/30 18:33:00
ライブラリ的なのはあっちっしょ。好きそうな人もいるし。
395:名無しさん@お腹いっぱい。
05/03/30 21:02:12
cons と car と cdr で事足りる
396:名無しさん@お腹いっぱい。
UNIX時間(+0900)35年,2005/04/03(日) 07:43:30
>>395
おまえは、 「情報なんて 0 と 1 のみで事足りる」
とでも言うのか?
アホ。
397:名無しさん@お腹いっぱい。
UNIX時間(+0900)35年,2005/04/03(日) 20:28:38
「ハッカーと画家」に
car, cdr, cons, quote, cond, atom, eq
だけで Lisp の関数は書けるとかって書いてあった。
四則演算はどうやってやるんだ?
398:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
05/04/05 10:30:07
おいおまえら、知能ベースを elisp で書けよ。
はやくしろ。
401:Zeno ◆5nZQbNmQPs
05/04/05 16:08:22
Re:>400
それはいいアイディアである
402:名無しさん@お腹いっぱい。
05/04/05 17:27:56
お前なんかに誉められてもうれしくないよ
403:Zeno ◆5nZQbNmQPs
05/04/06 11:34:00
Re:>402
お前のことは誉めていない。
知能ベースでも書いてから物を言うようにしろ
404:Zeno ◆5nZQbNmQPs
05/04/06 11:43:29
Tail Recursion は未だに Elisp に実装されていない。
この事実に理由はあるのか?
405:名無しさん@お腹いっぱい。
05/04/06 12:09:56
tail recursion なら実装されてますがなにか?
おまいの言いたいのは tail recursion optimization のことだろ。
理由はもちろんある。
-- 終了 --
406:名無しさん@お腹いっぱい。
05/04/06 13:29:51
あんま相手すんな。
伝染るぞ。
407:Zeno ◆5nZQbNmQPs
05/04/06 17:14:11
Re:>405
じゃあお前が optimization しろ
408:名無しさん@お腹いっぱい。
05/04/06 17:59:39
動的スコープの言語では末尾再帰の最適化は不可能
(defun bar ()
(fset 'foo (lambda () (print "bar"))))
(defun foo ()
(bar)
(foo))
409:Zeno ◆5nZQbNmQPs
05/04/07 14:22:10
A* サーチ・アルゴリズムの elisp バーションが
ほしくないわけでもないな。
____________
"Self" is that which is in the process of becoming... --Zeno
Today's Lucky Number: 421
410:名無しさん@お腹いっぱい。
05/04/07 23:12:09
>>409
負けたな
411:sakurai osamu
05/04/08 02:23:21
URLリンク(www.club-paruparo.com)
フィリピン万個伝説よろ
windows 最高!
412:名無しさん@お腹いっぱい。
05/04/08 13:01:28
ある文字列から四文字ずつ取り出してリストを作りたいのですが
どういう風にすればよいのでしょうか?
"いろはにほへとち" という風な文字列から '("いろはに" "ほへとち")
という風なリストを得たいのです。
文字列は四文字以上で4の倍数であることは保証されています。
413:412
05/04/08 13:59:44
length と substring を使うと簡単にできました。
どうもすいません。
414:名無しさん@お腹いっぱい。
05/04/09 21:30:09
Dired-modeのコピーとかをバックグラウンドでできませぬか?
415:名無しさん@お腹いっぱい。
05/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:名無しさん@お腹いっぱい。
05/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
05/04/13 21:45:32
>>416
ありがとうございます。萌えてくださって。ってちがうか。
書いて下さった設定例でやってみたんですけど、
やっぱりうまくいきません、、、辞書も、英語のままです。
なにがいったいだめなんでしょうか、、、
418:416
05/04/13 21:56:59
>>417
だめでしたか。
当方ispell-modeを英語で使ったことがあるだけで、personal-dictionaryなん
て変えたこともないのでした。
せっかくなので少し調べてみます。
419:415
05/04/13 22:03:09
>>418
きょ、恐縮です、、、、
わたしももうちょっといろいろやってみます。
420:416
05/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
05/04/13 22:21:46
>>420
調べて下さってありがとうございます。m(_ _)m
ですが、やはりだめでした。。。
そもそも、なぜflyspell-modeさえ自動的にたちあがらないのは
なぜなのか、、、
もうちょっとがんばってしらべてみます。
422:416
05/04/13 22:36:58
げ、そういう状態でしたか。
LaTex-mode-hook じゃなくて latex-mode-hook なのでは?
423:415
05/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
05/04/13 23:12:13
>>423
プロセスを作成するのは最初のparse時であり、
ispell-change-dictionaryでispellプロセスがあれば殺す、
という処理でした。
この辺はflyspellかispellかは関係ないですね。勘違いしてました。
425:415
05/04/13 23:50:34
>>424
わたしにはまだよくわかりませんが
御教授戴きありがとうございました。時間ができしだい
Lispのマニュアルも最初から最後まで読もうと思います。
426:Zeno ◆5nZQbNmQPs
05/04/16 19:01:21
Reply-to:>>425
よかったな。 Lisp の場合、フリーでダウンロードできる本が沢山ある。
探して読め。
____________
If T is consistent, T !|- G_T.
If T is ω-consistent, T !|- ¬G_T.
427:名無しさん@お腹いっぱい。
05/04/16 20:35:55
引数で与えたローマ字文字列を、平仮名に変換してくれる関数ありませんか?
428:Zeno ◆5nZQbNmQPs
05/04/16 20:39:49
Reply-to:>>427
> 引数で与えたローマ字文字列を、平仮名に変換してくれる関数ありませんか?
そんなのあるもなにも、自分で簡単に書けるだろうが。
____________
If T is consistent, T !|- G_T.
If T is ω-consistent, T !|- ¬G_T.
429:名無しさん@お腹いっぱい。
05/04/17 09:38:00
>>427
kakasi 使っていいなら kakasi.el とか skk-kakasi.el とかを参考にすると
か。
430:名無しさん@お腹いっぱい。
05/04/17 17:45:37
読み込んだら文字化け!
何とかして!!
431:名無しさん@お腹いっぱい。
05/04/17 17:48:49
線香と水で供養する!
432:名無しさん@お腹いっぱい。
05/04/17 23:03:48
見るんじゃない 感じるんだ
そのうち文字化けでも読めるようになる
433:名無しさん@お腹いっぱい。
05/04/17 23:44:43
なにその Rogue like
434:Zeno ◆5nZQbNmQPs
05/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
05/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 道場なんだから、後は自分で組み立てろバカ。
436:名無しさん@お腹いっぱい。
05/04/18 12:48:24
二日考えた結果がそれか
437:名無しさん@お腹いっぱい。
05/04/18 13:13:37
うん。何でそう書くのかって感じだな。
438:Zeno ◆5nZQbNmQPs
05/04/18 13:54:18
Reply-to:>>436
別に考えていない。
Reply-to:>>437
相手が初心者である故、一番直観的な実装方法を書いてやっただけだ。
実際、ストリングではなく、char 単位で比較をした方が早く処理できる。
____________
If T is consistent, T !|- G_T.
If T is ω-consistent, T !|- ¬G_T.
439:名無しさん@お腹いっぱい。
05/04/18 14:06:21
ふつーに書けば
(let ((r-h-alist
'((a . あ) (i . い) (u . う) (e . え) (o . お)
(ka . か) (ki . き) (ku . く) (ke . け) (ko . こ)
(sa . さ) (si . し) (su . す) (se . せ) (so . そ))))
(defconst r-h-table
(let ((table (make-hash-table :test 'eq)))
(dolist (x r-h-alist)
(puthash (car x) (cdr x) table))
table))
(defconst r-h-regexp
(regexp-opt (mapcar (lambda (x) (symbol-name (car x))) r-h-alist))))
(defun r-h (roma)
(let ((start 0) result)
(while (string-match r-h-regexp roma start)
(if (> (match-beginning 0) start)
(push (substring roma start (match-beginning 0)) result))
(setq start (match-end 0))
(push (symbol-name (gethash (intern (match-string 0 roma)) r-h-table))
result))
(push (substring roma start) result)
(apply #'concat (nreverse result))))
こんな感じだろ。cond で比較してくなんて小学生か?
440:Zeno ◆5nZQbNmQPs
05/04/18 14:16:32
Reply-to:>>439
最適化などいくらでもできる。
その関数をプログラム中に何度も使用のであれば、早くすればよい。
さっきも言ったように「一番直観的な実装方法を書いてやっただけ」だ。
吾の君ので比較した場合、どっちが直観的かは自明である。
____________
If T is consistent, T !|- G_T.
If T is ω-consistent, T !|- ¬G_T.
441:名無しさん@お腹いっぱい。
05/04/18 14:31:47
ローマ字とかなの対応リスト作ったほうが直感的だよ。
442:名無しさん@お腹いっぱい。
05/04/18 14:32:27
中学生じゃなかったっけ
443:名無しさん@お腹いっぱい。
05/04/18 14:34:59
>>440
おツムの程度がずいぶんお粗末ですねえ。
444:名無しさん@お腹いっぱい。
05/04/18 15:11:40
438 が最適化されていると感じるのなら
(defconst r-h-alist
'(("a" . "あ") ("i" . "い") ("u" . "う") ("e" . "え") ("o" . "お")
("ka" . "か") ("ki" . "き") ("ku" . "く") ("ke" . "け") ("ko" . "こ")
("sa" . "さ") ("si" . "し") ("su" . "す") ("se" . "せ") ("so" . "そ")))
(defconst r-h-regexp
(regexp-opt (mapcar #'car r-h-alist)))
(defun r-h (roma)
(let ((start 0) (result ""))
(while (string-match r-h-regexp roma start)
(setq start (match-end 0))
(setq result (concat result
(cdr (assoc (match-string 0 roma) r-h-alist)))))
result))
これで理解できるかな。
ローマ字にマッチする正規表現を検索し、結果をひらがなとの対応表から引く。
one-char two-char とやらを cond でだらだら比較するよりずっと「直観的」
じゃないか。
445:名無しさん@お腹いっぱい。
05/04/18 15:39:00
ローマ字綴りが変でマッチしない時の処理を加えねば。
446:名無しさん@お腹いっぱい。
05/04/18 15:53:42
式が違っているのに、算盤使うか電卓使うかで喧嘩されてもなあ
447:名無しさん@お腹いっぱい。
05/04/18 16:04:31
コードも出してこないのに、口先だけで煽られてもなあ
448:名無しさん@お腹いっぱい。
05/04/18 17:24:31
アンサーノーと電卓の奇屍
449:名無しさん@お腹いっぱい。
05/04/18 20:46:10
Zeno ◆5nZQbNmQPs やこれに類似したレスは池沼コテなので、スルー推奨
450:名無しさん@お腹いっぱい。
05/04/18 22:41:34
もう少しいじれば n=(ry くらい言い出すのではなかろうか。
451:名無しさん@お腹いっぱい。
05/04/23 10:15:07
Zeno ◆5nZQbNmQPs (笑)
452:名無しさん@お腹いっぱい。
05/04/24 17:21:08
「em → emacs」 のabbreviation展開が定義してあるとして、
text-mode や emacs-lisp-mode などで例えば
( em
の後に expand-abbrev を実行すれば展開がされるのですが、
(em
の後に expand-abbrev を実行しても、emacs への展開がされません。
どうすれば、後者の場合にも展開がなされるようになりますか?
453:名無しさん@お腹いっぱい。
05/05/02 22:11:39
今日の日付2005-05-02から一日前とか二日前の日付をゲットする
うまい方法ある?なんか普通にプログラムすると、汚くなりそうなので
454:名無しさん@お腹いっぱい。
05/05/02 22:49:46
current-timeにオフセット指定できたらなー。
455:名無しさん@お腹いっぱい。
05/05/02 22:55:51
time-date.elのtime-addとか使ってみるとか?
456:名無しさん@お腹いっぱい。
05/05/02 23:51:02
スレリンク(tech板:306-307番)
457:名無しさん@お腹いっぱい。
05/05/03 16:57:33
float-time は?
458:457
05/05/03 16:59:41
全然読んでなかった。キャンセルします。
459:453
05/05/03 19:00:32
>>456
サンクス。
460:名無しさん@お腹いっぱい。
05/05/29 18:46:12
すみません,きわめて初歩的な質問です.
setq で,関数側の名前空間に lambda 関数をセットするにはどうしたら良い
のでしょうか?つまり,(defun square (x) (* x x)) と同じことを setq で
やるにはどうしたら良いでしょうか?
Common Lisp (というか,xyzzy Lisp)では
(setq square #'(lambda (x) (* x x))) でできるのですが.
461:名無しさん@お腹いっぱい。
05/05/29 18:58:14
fset
462:名無しさん@お腹いっぱい。
05/05/29 19:00:09
∧ ∧
(σ・∀・)σ 460 ゲッツ!!
\ \
/ \
∪ ̄ ̄ ̄\)
463:460
05/05/29 19:10:01
>>461
ありがとうございます.(fset 'square (lambda (x) (* x x))) でうまく行き
ました.それにしても,名前空間は本当にややこしいですね.このあたりは,
Scheme が本当に楽だと思います.
>>462
騙りはやめてください.私はアスキーアートを貼ったりすることに興味はあり
ません.
464:名無しさん@お腹いっぱい。
05/05/29 19:14:17
>>460
騙りじゃないYO。
|:::|::|__ 、-'''"´ ̄ ̄`"''''-、 __|_::::||
__|::::|::|_|_ / / \ \|::::||;;;||.. ___ .___
㍊|::|::|::::|_/ ● ,,. .,, ● ヽ:||::::::_|__|_ | |iiii
::::||::::|;;;;;|. (__人__) |目;;∥|≡| ̄|iiii
::::||::::|旦''-、、,,,,,,______,,,,,,、、-'' 超巨大ショボーン
465:名無しさん@お腹いっぱい。
05/05/29 19:21:52
関数の名前空間にlambda関数をセットするって意味わからん
466:460
05/05/29 19:22:01
訂正です.xyzzy-Lisp で,(setq square #'(lambda (x) (* x x))) という書
き方ができると書きましたが,間違いでした.これだと変数側の名前空間にセッ
トされるだけでした.ごめんなさい.しかし,xyzzy ではどう書くのだろう...
fset もないみたいだし.
>>464
すみませんでした.ただ,どうも私は,「番号ゲット」の人と,アスキーアー
トが苦手なのです.前者は全く意義がわからないし,後者は w3m ではアスキー
アートはきちんと表示されませんし.
467:名無しさん@お腹いっぱい。
05/05/29 19:36:39
お前の好みをここに書くことに意義はあるのか。
468:460
05/05/29 20:40:11
>>467 遅くなりました.個人的には意義があると思っております.
道端で大音量の音楽をかけている人がいたとして,そういう人に「私はその種
の行為を好まない」と伝えることには,意義があるというのと同じです.
もちろん,それを聞いてその人が音楽を止めるかはその人の自由ですし,周囲
の第三者が一連の流れをどう受け取るかも,それぞれの自由です.
469:名無しさん@お腹いっぱい。
05/05/29 20:43:23
道端じゃなくてライブハウスでもそうするのかな?
470:460
05/05/29 20:57:21
>>469
なるほど,良い例えですね.ライブハウスなら私はそれをしないでしょう.た
だし私は,その比喩に乗っかるなら,ライブハウスには行きません.
私は UNIX 板などの専門板は道端(ないしは公共空間)と考えており,ラウン
ジやニュース速報板などをライブハウスだと考えているということです(だか
らその種の板には行きません).
しかし,その受け取り方が正しいかはわかりません.というより,こういうも
のに正しいということは存在しません.ただし,その場の第三者の支持をより
多く受ける意見のほうが選択として望ましいでしょう.
以上です.しかし,この種の意見をたくさん書くのは,明らかにこのスレにとっ
て望ましくないですね.これで終わりにします.すみません.
471:名無しさん@お腹いっぱい。
05/05/29 21:41:54
書いてて自己矛盾してるのに気付かないもんかね、まったく。
472:名無しさん@お腹いっぱい。
05/05/29 22:00:32
結論: 句読点に , や . を使うやつはおかしなひとがおおい
473:名無しさん@お腹いっぱい。
05/05/29 22:02:07
この辺で雑談終わりにしないか
474:名無しさん@お腹いっぱい。
05/05/29 22:10:04
>>472
私も句読点は「,」「.」にしてるよ.日本語の論文誌では
そう指定されることが多いから,私の周りでもそういう人は多い.
君はきっとそんな世界とは無縁なんだろうね.
475:名無しさん@お腹いっぱい。
05/05/29 22:18:53
texの時だけそうしてる。
476:名無しさん@お腹いっぱい。
05/05/29 22:21:42
大学院に行くやつはたいてい就職できなかったやつ。
477:名無しさん@お腹いっぱい。
05/05/29 22:44:20
TeXの場合はその方が見栄えがいいから「, 」「. 」だけど、それとてASCIIコードの方だしなあ。
なんにせよ、場もわきまえずに関係の無いことをグダグダと垂れ流し、
挙句の果てには「私も」なーんて他人の振りして自己弁護するような池沼だということだけは分かった。
478:460 203-179-90-199.cust.bit-drive.ne.jp
05/05/29 22:59:38
ID がでないので証拠はありませんが,私は>>470 を最後に書き込みはしてお
りません.私の書き込みは,fill-region で整形してありますので,句読点以
外でも見分けがつくのではないかと思います.私の批判をなさるのは皆さんの
自由ですが.
(それにしても,私はよく自作自演の誤解を受けます.理由はわかりませんが,
>>474さんには申し訳ありません)
ただ一点だけ,>>471 の書き込みの「自己矛盾」という言葉が何を指している
のか,しばらく考えましたがどうしてもわかりません.よろしかったら,矛盾
点をご指摘いただけたら幸いです.皮肉でなしに,真剣に知りたいのです.
もし,お教えする価値がないと思われましたら,このレスを最後に,スレ本来
の流れに戻していただければ幸いです.
479:名無しさん@お腹いっぱい。
05/05/29 23:04:19
460よりもこいつ↓の方が断然好ましいと思う。つか気に入った。
|:::|::|__ 、-'''"´ ̄ ̄`"''''-、 __|_::::||
__|::::|::|_|_ / / \ \|::::||;;;||.. ___ .___
㍊|::|::|::::|_/ ● ,,. .,, ● ヽ:||::::::_|__|_ | |iiii
::::||::::|;;;;;|. (__人__) |目;;∥|≡| ̄|iiii
::::||::::|旦''-、、,,,,,,______,,,,,,、、-'' 超巨大ショボーン
480:名無しさん@お腹いっぱい。
05/05/29 23:05:45
xyzzy-lispってなぁ…
481:名無しさん@お腹いっぱい。
05/05/29 23:24:45
>>477
> TeXの場合はその方が見栄えがいいから「, 」「. 」だけど、それとてASCIIコードの方だしなあ。
日本語の論文では,ASCIIでなくて全角の「,」「.」を指定されるんだけど.
君はほんとに何も知らないんだね.Fランク大の出身者でしょうな.
> なんにせよ、場もわきまえずに関係の無いことをグダグダと垂れ流し、
> 挙句の果てには「私も」なーんて他人の振りして自己弁護するような池沼だということだけは分かった。
最早このあたりになると哀れというか見っともないというか・・・
自作自演じゃないんだけどね.まあ,君のような頭の悪そうな人に
どう思われてもかまわないけど (笑)
482:名無しさん@お腹いっぱい。
05/05/29 23:37:09
結論: 句読点に , や . を使うやつはおかしなひとがおおい
483:名無しさん@お腹いっぱい。
05/05/29 23:42:41
>>481 は学歴しかとりえがない社会不適合者かな?
大学はこういうやつを隔離しておくところ。
ずっと入院して、永遠に退院してこないでください。:-)
484:名無しさん@お腹いっぱい。
05/05/29 23:43:59
いつまで続けんのよ。
485:名無しさん@お腹いっぱい。
05/05/29 23:44:02
>>481
これはどっちのキャラで読んだらいいのかな。
フシアナしてないから「弁護する他人」キャラ?
>>479
いいよな。初めて見た。
486:名無しさん@お腹いっぱい。
05/05/29 23:44:19
:-) ←とかいう顔文字を使う奴が自分は社会に適合できてると思ってるのが笑える
487:名無しさん@お腹いっぱい。
05/05/30 01:19:50
なんで山崎スレでテストしてんだ>>478は。
スレリンク(unix板:17番)
488:名無しさん@お腹いっぱい。
05/05/30 02:22:12
>>481
日本語の論文って、あんた、Gランク大ですか?
島国根性まるだしですね。
489:名無しさん@お腹いっぱい。
05/05/30 07:10:51
>>488
はあ? いま日本語の論文の話題をしてるんだろ?
なんで突然英語の論文の話題になるの? ふつーは論文を英語で
書いてるよ,そんなの言うまでもないじゃん.
得意げに島国根性だってよ (苦笑).馬鹿と話すと疲れるね.
490:名無しさん@お腹いっぱい。
05/05/30 07:49:04
>>489
(add-hook 'yatex-mode-hook
(lambda ()
(require 'skk)
(setq skk-kutouten-type 'en)))
とでもしとけ。
491:名無しさん@お腹いっぱい。
05/05/30 09:16:54
結論: 句読点に , や . を使うやつはおかしなひとがおおい
492:名無しさん@お腹いっぱい。
05/05/31 02:23:52
日本でまともな研究しているやつっているの?
493:名無しさん@お腹いっぱい。
05/05/31 16:16:20
まともな研究したいやつは皆アメリカへ行く。
494:Zeno ◆5nZQbNmQPs
05/06/01 21:51:38
:)
________________________________________________________
セオドア・カジンスキー 「産業社会とその未来」 (aka. マニフェスト) の抜粋
URLリンク(www.cnn.com)
495:名無しさん@お腹いっぱい。
05/06/14 21:04:19
M-x で呼び出せる関数書いたんですが、
それに C-u を前置しても4回連続で実行とかしてくれません
ESC [任意の数字] でも同じ
複数回連続動作させたい場合は、何か特別な事をしなくちゃならないんでしょうか?
496:名無しさん@お腹いっぱい。
05/06/14 21:20:07
(interactive "p")
497:名無しさん@お腹いっぱい。
05/06/14 21:25:33
>>495
特別なっつーか、引数を自分のやりたいように処理してやんなきゃ。
その前置引数を見てその回数だけ繰り返すように関数を書かないと駄目っしょ。
C-u を前置すると Emacs が勝手に繰り返してる訳じゃなくって、C-u が渡さ
れたら繰り返すように関数が作ってある訳で。
498:名無しさん@お腹いっぱい。
05/06/14 22:11:40
>>496-497
すんません。そのようですね
URLリンク(www.math.s.chiba-u.ac.jp)
今この辺見て勉強してるんですが、何故だかうまくいかねっす
もう少しやってみます
499:名無しさん@お腹いっぱい。
05/06/14 22:28:00
(defun hoge (n)
(interactive "p")
(dotimes (i n)
(insert "hoge")))
500:498
05/06/14 23:26:34
一応解決しました
ifの使い方で躓いてただけだった
perlとかCみたいに{}で複数行をひとまとめにできないんで
>>499
ありがとうございます
dotimesなんてものもあるんですね
関数もっと知ってれば結構書けるんじゃないかな、とか思っちゃってる俺
ネット上に結構充実したリファレンス(しかも日本語訳されてる)とかあるし、
金出さなくても勉強できそう
501:名無しさん@お腹いっぱい。
05/06/15 00:46:14
emacs lisp は info のヘルプが超便利だと思うよ。
502:名無しさん@お腹いっぱい。
05/06/15 01:28:29
そだね
いろんな日本語のinfoを捜して、
それ読むだけでもいいんじゃない
503:名無しさん@お腹いっぱい。
05/06/23 13:33:40
lisp 以下のソースを見たらいいんじゃない?
使用したい function の使用例として。
504:名無しさん@お腹いっぱい。
05/06/25 10:23:50
文字列で与えられたシンボルを束縛したいんだけどどうやればいいでしょうか。
font-lock-mode => t
(let* ((bound-str "font-lock-mode")
(intern-soft bound-str))
font-lock-mode)
=> t
これじゃ駄目だし orz
505:名無しさん@お腹いっぱい。
05/06/25 10:32:34
eval すればいい
(let ((bound-str "font-lock-mode"))
(eval `(let ((,(intern bound-str) nil))
font-lock-mode)))
=> nil
よく使うならマクロに
(defmacro hoge (str value &rest body)
(let ((sym (intern (eval str))))
`(let ((,sym ,value))
,@body)))
(let ((bound-str "font-lock-mode"))
(hoge bound-str nil font-lock-mode))
=> nil
506:名無しさん@お腹いっぱい。
05/06/25 11:09:42
>>505
おおー、できました。
eval すりゃいいのか…ってまだよく理解できてないけど。感謝。
507:名無しさん@お腹いっぱい。
05/06/26 18:11:07
eval 必要ないみたい。
(defmacro let-string (str-value-list &rest body)
`(let ,(mapcar (lambda (sval)
(list (intern (car sval)) (cadr sval)))
str-value-list) ,@body))
(let-string (("font-lock-mode" nil)
("test" 11))
(cons font-lock-mode test))
=> (nil . 11)
508:名無しさん@お腹いっぱい。
05/06/26 18:24:34
eval 無いと
(let ((bound-str "font-lock-mode")) (let-string ((bound-str nil)) ...))
みたいに使えないよね。
文字列リテラル書けるのなら最初からシンボルにすればいいんだから、
よそから持って来た文字列に値を束縛したいって話なんじゃないの?
509:名無しさん@お腹いっぱい。
05/06/26 19:24:09
すみません、書いてから気付きました。
510:名無しさん@お腹いっぱい。
05/08/07 01:07:26
hoge という関数が定義されているか調べるにはどのように書けばよいのでしょ
うか?
511:名無しさん@お腹いっぱい。
05/08/07 01:22:09
(fboundp 'hoge)
512:名無しさん@お腹いっぱい。
05/08/17 15:11:54
Linux板のAtok Wnnスレで放置されたんで作ってみた。
(defun to-hankaku ()
"change current word from zenkaku to hankaku"
(interactive)
(save-excursion
(push-mark)
(backward-word 1)
(japanese-hankaku-region (region-beginning) (region-end))
(pop-mark)))
(global-set-key "\M-n" 'to-hankaku)
どなたか叩いてくだひゃい。
本当に聞きたいのはWnn7eggで半角カタカナ入力できるか否かなんだが
513:名無しさん@お腹いっぱい。
05/08/17 16:07:04
普通、関数内部の処理では mark は使わない。
mark は基本的に、ユーザーが手動で region 指定したり移動したりするためのもの。
移動コマンドなんかで、あとでユーザーが使えるように push-mark しとくとか、そういうときに使う。
普段の処理で使うのは marker のほう。
でもこの場合は、その場で region 指定するだけだから、 marker も使わないで済みそうかな。
(save-excursion
(let ((end (point)))
(backward-word 1)
(japanese-hankaku-region (point) end)))
みたいな。
514:名無しさん@お腹いっぱい。
05/08/17 17:00:47
>>513
ありがとさんです。regionといっても
markしなきゃいけないわけじゃないんですね。
えらくすっきりしました。
またなんかあったらよろしく
515:名無しさん@お腹いっぱい。
05/08/21 20:15:39
質問なんですが、例えば(decode-time)の結果のようなリストを
これまた例えば(sec minute hour day month)のような変数(のリスト)に
一気に代入するようなコマンドってないもんでしょうか。
Perlでいう
($sec, $minute, $day, $mon, $year) = localtime();
みたいなイメージなんですが。
あと、Emacs-Lisp Farm ていうMLがあるようですが
過去ログって見れないんでしょうか?
516:名無しさん@お腹いっぱい。
05/08/21 21:07:43
間違った使い方な気がするけど、multiple-value-setqとか?
ログはMLはいってからコマンドメール投げれば取得できるよ。
517:名無しさん@お腹いっぱい。
05/08/21 21:31:55
>>515
(apply (lambda (sec minute hour day month year dow dst zone)
...)
(decode-time))
とか CL 使うなら
(destructuring-bind
(sec minute hour day month year dow dst zone)
(decode-time)
...)
518:名無しさん@お腹いっぱい。
05/08/21 21:55:07
>>516,517
レスどうもっす。
(setq num '(1 2 3 4))
(multiple-value-setq (a b c d) num)
みたいに簡単にできるのですね。助かります。
「間違った使い方」つうのが気になるけど、、。
(apply (lambda (sec minute hour day month year dow dst zone)
(message "%d年%d月%d日%d時%d分" year month day hour minute sec)
)
(decode-time))
として動くのは確認しました。が、当方未だラムダ式とかよくわかっていないので
じっくり考えてみようと思います。
とりあえずapplyのドキュメントを丸のみすれば
「(decode-time)で返されたリストを引数(リスト)としたlambda式が実行された」
ということですね?
519:名無しさん@お腹いっぱい。
05/08/21 23:12:02
間違った使い方な気が……っていうのは、
elispには多値はないのにmultiple-value-*を使ってるから。
520:Zeno ◆5nZQbNmQPs
05/08/23 11:25:55
ユニバーサルな解釈など存在しない為
間違った使い方など存在しない
_________________
If T is consistent then T !|- R_T
If T is consistent then T !|- ¬R_T. -- John B. Rosser
521:名無しさん@お腹いっぱい。
05/08/23 12:55:11
そういう考えだとあらゆる価値が平等に無意味になって
思考停止に陥るお。
522:名無しさん@お腹いっぱい。
05/08/23 13:10:54
思考する前に馬鹿を殺そう
523:Zeno ◆5nZQbNmQPs
05/08/23 21:34:07
Reply-to:>>521
知っていた (る) 人の文調に似ている・・・
君は吾がそう思っている人物か?
> そういう考えだとあらゆる価値が平等に無意味になって
> 思考停止に陥るお。
人間は無限近くのチョイスを全て吟味するパワーはない為、
結局はプラグマティク、若しくは他人が選んでいるチョイスを
選んでしまう。
ただ 520 は「Lisp のような自由度の高い -- 故に創造性の必要とされる --
言語でただ一つの解釈を強要するのは間違っているのではないのか」
ということを伝えたかっただけだ。
> Reply-to:>>522
お前誰だよ
_________________
If T is consistent then T !|- R_T
If T is consistent then T !|- ¬R_T. -- John B. Rosser
524:名無しさん@お腹いっぱい。
05/08/23 21:53:28
520と523がみえない
525:名無しさん@お腹いっぱい。
05/08/24 00:18:17
見えないのが気になるならフィルタ使わないほうがいいよ
526:521
05/08/24 04:51:42
よくわからんがニューハーフに知り合いはいないよ。
527:名無しさん@お腹いっぱい。
05/08/24 11:37:34
ゴキブリを見て見ぬふりする愚かさ
528:名無しさん@お腹いっぱい。
05/08/24 13:29:28
今は一匹なんだから叩いてつぶしちゃうよりは、
どっかに行くのを待ってもらった方がいい。
529:Zeno ◆5nZQbNmQPs
05/08/24 13:45:30
Reply-to:>>524 お前もな
Reply-to:>>526
> よくわからんがニューハーフに知り合いはいないよ。
人違いのようだ
Reply-to:>>528 お前誰だよ
_________________
If T is consistent then T !|- R_T
If T is consistent then T !|- ¬R_T. -- John B. Rosser
530:名無しさん@お腹いっぱい。
05/08/24 14:20:22
Reply-to:>>529
う ざ い
_________________
If T is consistent then T !|- R_T
If T is consistent then T !|- ¬R_T. -- John B. Rosser
531:名無しさん@お腹いっぱい。
05/08/24 16:44:22
インライン関数を変更した際、
それを呼出している関数(バイトコンパイル済み)に反映させる
手軽な方法はないでしょうか?
いちいち定義してるとこに飛んで評価するのは面倒なもので。
532:名無しさん@お腹いっぱい。
05/08/29 14:30:23
>>531
unload-featureとか使えない?
わたし自身、一度も使った事が無いから
良く分かんないけど。
533:名無しさん@お腹いっぱい。
05/08/31 09:25:32
テキストファイルを Emacs でバッチ処理して結果を stdout に吐きたいんです
が、
--- testout.el ---
(defun testout (file)
(insert-file-contents file)
;; なんか処理する とりあえずここではなにもしない
(princ (buffer-string)))
--- testout.el ends here ---
emacs -Q --batch -l testout.el --execute='(testout "in.txt")' > out.txt
とした時に、in.txt にある日本語が out.txt では化けてしまいます。(各文字
の頭に '\222' が付くみたい、ascii は大丈夫)
ちゃんと動かすにはどうすりゃいいでしょうか。
534:名無しさん@お腹いっぱい。
05/08/31 10:32:55
a) coding systemを設定する。
b) testout.elの中でout.txtに書く。
535:名無しさん@お腹いっぱい。
05/08/31 10:38:22
>>533
set-terminal-coding-system
536:名無しさん@お腹いっぱい。
05/08/31 10:44:24
stdout がファイルの場合は terminal-coding-system は無視されて
emacs-mule になるよ。なので 534 の b のようにするしかない。
537:533
05/08/31 18:13:37
>>534-536
むむ、write-file するしかないのかあ。フィルタの類ではないとはいえちょっ
と意外な気も。まあ、関数内でファイルに書いてもなんとかなるのでそうしま
す。サンクスでした。
538:名無しさん@お腹いっぱい。
05/09/01 17:23:05
encode-coding-string したものを princ するのはだめか?
(未確認)
539:名無しさん@お腹いっぱい。
05/09/01 23:28:29
>>538
おお、なるほど。
(princ (encode-coding-string (buffer-string) 'euc-jp))
でやってみたら大丈夫なようです。エンコードが決め打ちなのが格好悪いです
が、まぁしょうがないかな。ありがとうございました。
540:名無しさん@お腹いっぱい。
05/09/01 23:45:04
terminal-coding-systemにすれば?
541:名無しさん@お腹いっぱい。
05/09/02 00:11:15
>>540
emacs -Q --batch --execute='(print (terminal-coding-system))'
で japanese-iso-8bit が返ってきますね。.emacs 読んでなくても大丈夫なの
か。terminal-coding-system 使うことにします。どうもでした。
542:ヽ(´ー`)ノ ◆.ogCuANUcE
05/09/02 00:35:37
>>541
ロケール見てるっぽいね。
$ LC_ALL=C emacs -Q --batch --execute='(print (terminal-coding-system))'
だと nil だったから。nil の時だけ us-ascii にしておけば問題ないと思う。
543:名無しさん@お腹いっぱい。
05/09/02 09:32:49
>>539
入力ファイルと同じ coding-system にしたいのであれば,
insert-file-contents した直後の last-coding-system-used を
使うというのはどうだろう。
544:名無しさん@お腹いっぱい。
05/09/04 13:45:39
Elispを初めて改造してみたのですが
うまく行きませんでした
changeが設定されていれば、nonにchangeを入れたいのですが
以下のように書いたところうまくいきませんでした
間違っているでしょうか?
(if change
(setq non change))
545:544
05/09/04 13:49:30
ちなみに、
(setq change 'hoge)
のように設定されていると、うまくどうさします
546:544
05/09/04 13:51:48
解決しました
変更しない場合は
(setq change ')
として、変数は作成しておかないとダメなんですね
変数が無い場合も正しく動作するようにはできないでしょうか?
547:名無しさん@お腹いっぱい。
05/09/04 14:04:21
質問は上げとけ
548:名無しさん@お腹いっぱい。
05/09/04 14:17:23
>>543
なるほど。今回のは元ファイルと常に同じって訳でもなかったんですが、そう
限定できる場合はいいかもしれませんね。アドバイスどうもです。
>>546
よくわからんが
(and (boundp 'change) change
(setq non change))
とか?
549:名無しさん@お腹いっぱい。
05/09/05 15:14:56
>>546
そんな構文あるのかー!
と思って思わず確認しちゃったよ。
550:名無しさん@お腹いっぱい。
05/09/06 09:40:12
emacs-cvs 使おうと思ったら、its とやらが含まれてないっぽいんんだけど、
どうしたらいい?
551:名無しさん@お腹いっぱい。
05/09/06 09:52:04
あ、みっけた。
552:名無しさん@お腹いっぱい。
05/09/06 12:38:05
>>550
tamgao入れれ。
553:名無しさん@お腹いっぱい。
05/09/06 13:27:48
>>552
emcws あてますた。
Makefile.in は手でなおして、configure は autoconf で作りなおしますた。
tamago と emcws ってどっちがいいの?
554:名無しさん@お腹いっぱい。
05/09/06 13:52:42
tamago
555:名無しさん@お腹いっぱい。
05/09/15 03:44:22
Elispはじめて間もないのですが、質問です。
ある変数に入っている文字コードを判別するのって
どうやればいいのでしょうか??
例えば、
(setq hoge1 "ほげ" hoge2 "hoge")
ここで、hoge2 に入っている文字列がローマ字であるかどうかだけ
分かれば、もしくは hoge1 に2バイト文字が入っているかどうかが
分かれば分かればいいのですが・・・
get-text-property あたりを見ているのですが・・・
ご教授お願いします。
556:名無しさん@お腹いっぱい。
05/09/15 04:06:20
>>555
その目的なら multibyte-string-p でよさそうな気がする。
正規表現で調べるって手もあるだろうけど。
557:名無しさん@お腹いっぱい。
05/09/15 04:07:42
「ローマ字であるかどうかだけ」
これは、「アルファベットのみからなる」と置き換えてもいいの?
558:名無しさん@お腹いっぱい。
05/09/15 04:09:45
そーいえばset-buffer-multibyteの使い方よくわからん
559:名無しさん@お腹いっぱい。
05/09/15 04:27:26
>>556
全然よくない。
560:555
05/09/15 10:03:45
皆様、レスありがとうございます。
>>557さんの言うとおり、入っている文字列が
ただ単に日本語かまた違うものかを判別したいだけ
なので”アルファベットのみからなる”と
置き換えても構わないと思います。
すみません、よろしくお願いします。
561:名無しさん@お腹いっぱい。
05/09/15 10:10:12
Ro-maji hyouki no nihongo wa dousuruno?
562:名無しさん@お腹いっぱい。
05/09/15 10:10:53
hoge が、アルファベットのみで構成された文字列かどうか調べるなら、
(string-match "\\`[A-Za-z]+\\'" hoge)
charset で調べるなら、
(let ((charsets (find-charset-string hoge)))
(catch 'done
(while charsets
(unless (memq (car charsets)
'(ascii eight-bit-control eight-bit-graphic))
(throw 'done t))
(setq charsets (cdr charsets)))
nil))
とか?
563:555
05/09/15 10:34:56
おお、素早いレスありがとうございます!!
今試して見ます!!
564:555
05/09/15 10:50:33
>>562
おお、出来ました!!
正規表現での判別と文字そのものの判別ですか~
なるほどなるほど。どうもありがとうございます。
勉強になりました。
565:名無しさん@お腹いっぱい。
05/09/15 11:32:24
カテゴリ使って
(string-match "\\Ca" "abc")
=> nil
(string-match "\\Ca" "あいうえお")
=> 0
566:名無しさん@お腹いっぱい。
05/09/15 19:09:26
再度書き込みすみません。
例えば、以下のように関数の続きとして>>562さんのコードを
使いたいのですが、(let を外してしまうと
上手く動いてくれません。let は局所的変数宣言でしたよね?
(defun .....
.
.
(setq hoge (split-string "name1 name2 name3"))
(setq name_s (length hoge) name_n 0 mew-from-sex 1)
(if (let ((charsets (find-charset-string (nth name_n hoge))))
(catch 'done
(while charsets
(unless (memq (car charsets)
'(ascii eight-bit-control eight-bit-graphic))
(throw 'done t))
(setq charsets (cdr charsets)))
nil))
(setq people 0)
(setq people 1))
.
)
よろしくお願いします。。。
567:名無しさん@お腹いっぱい。
05/09/15 19:17:35
(let を外したいのは何故?
568:名無しさん@お腹いっぱい。
05/09/15 19:27:46
関数の始めにいっきに let で変数宣言したくて、
(let ((charsets (find-charset-string (nth name_n hoge))))
も含めて宣言しようと外したのですが。。。
569:名無しさん@お腹いっぱい。
05/09/15 19:42:22
多段let撲滅
570:名無しさん@お腹いっぱい。
05/09/15 19:45:03
該当の部分を函数にする
途中に let がある事に慣れる
(let (charsets)
...
(if (progn
(setq charsets (find-charset-string ...
のどれか
571:名無しさん@お腹いっぱい。
05/09/15 19:54:27
>>569
参考までに教えて欲しんだけど
1. 実行速度
2.可読性
のいづれかの理由によるものでしょうか? それとも他の理由?
572:569
05/09/15 19:55:16
>>571
いや、俺はちょっと皮肉(?)ってみただけで。
573:名無しさん@お腹いっぱい。
05/09/15 19:57:03
えっと、以下のようにするということでしょうか??
(let (charsets) hoge name_s name_n people mew-from-sex
(setq hoge (split-string "name1 name2 name3"))
(setq name_s (length hoge) name_n 0 mew-from-sex 1)
(if (progn setq charsets (find-charset-string (nth name_n hoge))
(catch 'done
(while charsets
(unless (memq (car charsets)
'(ascii eight-bit-control eight-bit-graphic))
(throw 'done t))
(setq charsets (cdr charsets)))
nil))
(setq people 0)
(setq people 1)))
574:名無しさん@お腹いっぱい。
05/09/15 19:58:15
うわ、空白がすごくみずらいですね。。。
すみません。。
575:名無しさん@お腹いっぱい。
05/09/15 19:58:33
>>573
letの使い方理解してないぞ
576:名無しさん@お腹いっぱい。
05/09/15 20:01:27
あ、申し訳ないです。
変数リストを()でひとまとめにしていなかったですね。
(let (charsets) hoge name_s name_n people mew-from-sex
こんな感じでしょうか??
577:名無しさん@お腹いっぱい。
05/09/15 20:02:36
こうでした、何度もすみません。
(let ((charsets) hoge name_s name_n people mew-from-sex)
578:名無しさん@お腹いっぱい。
05/09/15 20:50:17
初心者は setq 禁止
579:名無しさん@お腹いっぱい。
05/09/15 21:34:54
Emacs をわたし色に染めて♪ の人は自殺しそうでしたがまだ生きてますか?
580:名無しさん@お腹いっぱい。
05/09/15 21:46:13
>>579
なにがあったの?
581:名無しさん@お腹いっぱい。
05/09/17 06:30:27
LISPのクラスを取るか迷っている初心者ですが、LISPが出きると、どういうことができるようになるのか教えてください。
582:名無しさん@お腹いっぱい。
05/09/17 08:00:56
>>581
特にない。
583:名無しさん@お腹いっぱい。
05/09/17 08:54:52
>>581
普通のやつらの上を行ける。
584:名無しさん@お腹いっぱい。
05/09/17 11:44:54
>>583
どういう点で?
585:名無しさん@お腹いっぱい。
05/09/17 13:42:35
>>584
URLリンク(www.shiro.dreamhost.com)
586:名無しさん@お腹いっぱい。
05/09/17 14:05:26
>>581
クラスって大学か何かか。
EmacsLispでCLOSみたいなもんを誰か作ったのかと思った。
587:名無しさん@お腹いっぱい。
05/09/17 14:29:15
学校の授業という意味です。
588:名無しさん@お腹いっぱい。
05/09/17 14:44:13
>>585
ありがとうございます。読みました。
中で「Lispはパワフルな言語だとは知っているけど」等、LISPは凄いと絶賛していますが、
具体的にどう凄いのかってのが、どんなところで使われているのかってのが分からないのですが…。
LISPが出きると、どういうときにそれを活かせますか?
この授業は卒業のため取らなければならない科目ではないのですが、
将来役に立つのなら、取って見ようかなと迷っています。
589:名無しさん@お腹いっぱい。
05/09/17 15:16:50
学生なのに自分からは何も調べようとしないやつには、どんなことであろうと将来役に立たない
590:名無しさん@お腹いっぱい。
05/09/17 15:17:55
lisp なんかできたとして、将来研究所とかに行かない限り用途ないのでは?
perl なり php なり使えたほうがバイトも出来ておとく。
591:名無しさん@お腹いっぱい。
05/09/17 15:41:04
perlなんか授業でやるか?
592:名無しさん@お腹いっぱい。
05/09/17 16:06:14
perlの授業あります。
将来はネットワークエンジニア希望です。
593:sage
05/09/17 17:56:43
>>592
いらないんじゃね?
594:名無しさん@お腹いっぱい。
05/09/17 17:59:54
久しぶりに2chに来たらsageるつもりがageちまった。
595:名無しさん@お腹いっぱい。
05/09/17 18:06:49
とりあえず、この板ってのは古い知識しか持たない老人が多いので、
こんな場所で進路相談をするのは不適切なんじゃないかなと思う。
596:名無しさん@お腹いっぱい。
05/09/17 20:58:02
将来役に立つかっつったら微妙だわな。
だけど大学において考え方を学ぶ、学び方を学ぶって意味ではlispはおすすめ
かもしれず。
関係ないけど、「出きる」って変換は気持ち悪いな。
597:名無しさん@お腹いっぱい。
05/09/17 21:02:25
LISPを使って(応用して)なにをするかによるだろう。
単純に、LISPを勉強するだけなら独学で(Emacs使ってるうちに)勉強
できるよ。なにしろ、単純な言語だからな。
インタプリタの作成とかまでやるんだったらいいんじゃないかな?
言語仕様が簡単だから結構楽しいと思うよ。
598:名無しさん@お腹いっぱい。
05/09/17 21:07:32
> 将来役に立つかっつったら微妙だわな。
> だけど大学において考え方を学ぶ、学び方を学ぶって意味ではlispはおすすめ
> かもしれず。
関係ないけど、気持悪い書き方だな。
599:名無しさん@お腹いっぱい。
05/09/17 21:24:34
だいたい、Emacs Lispの板でLispについて訊いても……
600:名無しさん@お腹いっぱい。
05/09/17 21:27:13
> 訊
おじさん、何でこんな漢字つかってるの?
601:名無しさん@お腹いっぱい。
05/09/17 22:20:25
>>600
>>600
>>600
602:名無しさん@お腹いっぱい。
05/09/17 22:25:40
>>601
一時帰宅が許されたのですか。病状も多少はよくなったようで、
御同慶の至り。
603:名無しさん@お腹いっぱい。
05/09/18 00:46:55
Emacs Lispの板???