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 ではひとつ、コード中心の熱いバトルをよろぴく。
573 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/15(木) 19:58:15 ] うわ、空白がすごくみずらいですね。。。 すみません。。
575 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/15(木) 19:58:33 ] >>573 letの使い方理解してないぞ
576 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/15(木) 20:01:27 ] あ、申し訳ないです。 変数リストを()でひとまとめにしていなかったですね。 (let (charsets) hoge name_s name_n people mew-from-sex こんな感じでしょうか??
577 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/15(木) 20:02:36 ] こうでした、何度もすみません。 (let ((charsets) hoge name_s name_n people mew-from-sex)
578 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/15(木) 20:50:17 ] 初心者は setq 禁止
579 名前:名無しさん@お腹いっぱい。 [2005/09/15(木) 21:34:54 ] Emacs をわたし色に染めて♪ の人は自殺しそうでしたがまだ生きてますか?
580 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/15(木) 21:46:13 ] >>579 なにがあったの?
581 名前:名無しさん@お腹いっぱい。 [2005/09/17(土) 06:30:27 ] LISPのクラスを取るか迷っている初心者ですが、LISPが出きると、どういうことができるようになるのか教えてください。
582 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/17(土) 08:00:56 ] >>581 特にない。
583 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/17(土) 08:54:52 ] >>581 普通のやつらの上を行ける。
584 名前:名無しさん@お腹いっぱい。 [2005/09/17(土) 11:44:54 ] >>583 どういう点で?
585 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/17(土) 13:42:35 ] >>584 ttp://www.shiro.dreamhost.com/scheme/trans/beating-the-averages-j.html
586 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/17(土) 14:05:26 ] >>581 クラスって大学か何かか。 EmacsLispでCLOSみたいなもんを誰か作ったのかと思った。
587 名前:名無しさん@お腹いっぱい。 [2005/09/17(土) 14:29:15 ] 学校の授業という意味です。
588 名前:名無しさん@お腹いっぱい。 [2005/09/17(土) 14:44:13 ] >>585 ありがとうございます。読みました。 中で「Lispはパワフルな言語だとは知っているけど」等、LISPは凄いと絶賛していますが、 具体的にどう凄いのかってのが、どんなところで使われているのかってのが分からないのですが…。 LISPが出きると、どういうときにそれを活かせますか? この授業は卒業のため取らなければならない科目ではないのですが、 将来役に立つのなら、取って見ようかなと迷っています。
589 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/17(土) 15:16:50 ] 学生なのに自分からは何も調べようとしないやつには、どんなことであろうと将来役に立たない
590 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/17(土) 15:17:55 ] lisp なんかできたとして、将来研究所とかに行かない限り用途ないのでは? perl なり php なり使えたほうがバイトも出来ておとく。
591 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/17(土) 15:41:04 ] perlなんか授業でやるか?
592 名前:名無しさん@お腹いっぱい。 [2005/09/17(土) 16:06:14 ] perlの授業あります。 将来はネットワークエンジニア希望です。
593 名前:sage [2005/09/17(土) 17:56:43 ] >>592 いらないんじゃね?
594 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/17(土) 17:59:54 ] 久しぶりに2chに来たらsageるつもりがageちまった。
595 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/17(土) 18:06:49 ] とりあえず、この板ってのは古い知識しか持たない老人が多いので、 こんな場所で進路相談をするのは不適切なんじゃないかなと思う。
596 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/17(土) 20:58:02 ] 将来役に立つかっつったら微妙だわな。 だけど大学において考え方を学ぶ、学び方を学ぶって意味ではlispはおすすめ かもしれず。 関係ないけど、「出きる」って変換は気持ち悪いな。
597 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/17(土) 21:02:25 ] LISPを使って(応用して)なにをするかによるだろう。 単純に、LISPを勉強するだけなら独学で(Emacs使ってるうちに)勉強 できるよ。なにしろ、単純な言語だからな。 インタプリタの作成とかまでやるんだったらいいんじゃないかな? 言語仕様が簡単だから結構楽しいと思うよ。
598 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/17(土) 21:07:32 ] > 将来役に立つかっつったら微妙だわな。 > だけど大学において考え方を学ぶ、学び方を学ぶって意味ではlispはおすすめ > かもしれず。 関係ないけど、気持悪い書き方だな。
599 名前:名無しさん@お腹いっぱい。 [2005/09/17(土) 21:24:34 ] だいたい、Emacs Lispの板でLispについて訊いても……
600 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/17(土) 21:27:13 ] > 訊 おじさん、何でこんな漢字つかってるの?
601 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/17(土) 22:20:25 ] >>600 >>600 >>600
602 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/17(土) 22:25:40 ] >>601 一時帰宅が許されたのですか。病状も多少はよくなったようで、 御同慶の至り。
603 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/18(日) 00:46:55 ] Emacs Lispの板???
604 名前:名無しさん@お腹いっぱい。 [2005/09/18(日) 02:21:31 ] 返事が遅れました。初心者に付き合っていただいて、ありがとうございます。 LISPがC言語とどう違うのか教えてください。 言語が違うってのは略。利点や使う場面等。 UNIXと深い関係にあるのですか?
605 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/18(日) 02:22:56 ] Lisp なんかつかうやつはばかです。ということじゃないかな。
606 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/18(日) 02:37:36 ] ム板のlispスレできいたら?
607 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/18(日) 03:20:23 ] とりあえず初心者装った釣りでないならバカでしょう 知ってか知らずかかまうね、ここの人は
608 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/18(日) 17:53:19 ] 使う場面: スクリプティング用途 例: Emacsのカスタマイズ Gimpのプラグイン (script-fu) ゲーム作り (AisleRiotのルールとかtrackballsのステージとか) WMのカスタマイズ (scwm.sourceforge.net/ とか) uimの各種IMの実装 利点: クロージャとマクロが使える いや、「LispとCがどう違うか」なんて言ってる奴にマジレスするなんて 我ながら釣られているとしか思えないが…
609 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/18(日) 18:15:22 ] C 使えれば、ライブラリ使っていろんなもの開発できるしなぁ。
610 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/18(日) 23:22:31 ] 複雑なことをやろうとすると、 結局Cで未完成なLISP(略
611 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/18(日) 23:24:42 ] どれだけ lisp な製品が世の中に出ているかもあわせて考えるべきんじゃないかと。
612 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/19(月) 13:02:46 ] >>611 誰かがクラッシュバンディクーの中でlispが動いているとか言っていた
613 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/19(月) 13:24:27 ] 建築系でメジャーな AutoCAD も lisp でカスタマイズする。 Emacs みたいに lisp interpreter をコアにしてるのか?
614 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/20(火) 02:30:22 ] ってか、俺としてはむしろ、LispとCの共通点の方が知りたい。
615 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/20(火) 11:43:27 ] >>612 ゲームはメモリ管理がシビアだから既存の物を使えないんで、 1から実装することになって、結局、実装の容易なlispになるんだろう。
616 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/20(火) 11:48:46 ] >>612 これか。 ttp://www.ogis-ri.co.jp/otc/hiroba/others/OORing/interview21.html
617 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/20(火) 12:24:10 ] >>616 正直、PythonやRubyが普及している今となってはlispを使う意味はないよなぁ。 その記事で、オブジェクトの永続化とか動的バインドとかで、すごい助かった って言ってるけど、それなら別にlispでなくてええやん。Pythonでええやん。
618 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/20(火) 13:23:54 ] まとめると、lisp なんか使う奴はバカですってことか。
619 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/20(火) 13:24:50 ] 別に Python でなくてもええやん。
620 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/20(火) 14:16:29 ] いつまでもこのスレでこの話を扱ってる奴が知障
621 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/20(火) 21:40:31 ] 池沼がこのスレに粘着するから、 そんなこと書いてはいけません。
622 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/22(木) 05:23:11 ] Lisp 道場らしくいこう。 java のソース上で、find-file-at-point したときに、クラスに対応したファイルを探 してみる。 制限: - 同じソースツリー上にあるものだけが対象。 - 今見てるソースと同じディレクトリにクラス名と同じパッケージがあったりするとダメ だったりする。 次のレスからソース。
623 名前:622 mailto:sage [2005/09/22(木) 05:24:27 ] ;; その1 (require 'ffap) (eval-when-compile (require 'cl)) (defun ffap-java-package-to-path (package-or-fqcn) (replace-regexp-in-string "\\." "/" package-or-fqcn)) (defun ffap-java-import-list () (save-excursion (goto-char (point-min)) (let (list) (while (re-search-forward "import\\s-+\\(.+\\)\\s-*;" nil t) (push (match-string 1) list)) (nreverse list)))) (defun ffap-java-src-directory () (save-excursion (goto-char (point-min)) (if (re-search-forward "package\\s-+\\(.+\\)\\s-*;" nil t) (let ((package (match-string 1))) (replace-regexp-in-string (concat (regexp-quote (ffap-java-package-to-path package)) "$") "" (directory-file-name default-directory))) default-directory)))
624 名前:622 mailto:sage [2005/09/22(木) 05:25:17 ] ;; その2 (defun ffap-java-mode (name) (let ((class (car (split-string name "\\."))) (import-list (ffap-java-import-list)) (src-directory (ffap-java-src-directory))) (or (catch 'found-class (dolist (import-class import-list) (when (string-match (concat "\\." (regexp-quote class) "$") import-class) (throw 'found-class (expand-file-name (concat (ffap-java-package-to-path import-class) ".java") src-directory))))) (ffap-locate-file name '(".java") (delq nil (cons "." (mapcar (lambda (import-class) (when (string-match "\\.\\*$" import-class) (expand-file-name (ffap-java-package-to-path (replace-match "" nil nil import-class)) src-directory))) import-list)))))))
625 名前:622 mailto:sage [2005/09/22(木) 05:26:45 ] ;; 設定 (add-to-list 'ffap-alist '(java-mode . ffap-java-mode)) これでおしまい。 素直に jde とか gtags 使えよって話もあるけどね。 ちょっと開いたソースのクラスを追ったりするのには使えると思う。
626 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/24(土) 12:38:06 ] >>622 おっ、これ結構つかえる。あんがと
627 名前:622 mailto:sage [2005/10/08(土) 02:57:34 ] 淋しすぎるから、ちょっとだけネタ投下。 nxml ネタその1 昔どっかに書いた気もするけど、無理矢理 mule-ucs と共存させるにはこんな感じに修 正すればそれっぽくいける。 ただし、どんな問題が起きるか分からないから自己責任でやる事。 ;; 何かあるから無効にしてるハズだから。 --- nxml-mode-orig/nxml-mode.el +++ nxml-mode/nxml-mode.el @@ -33,8 +33,8 @@ -(when (featurep 'mucs) - (error "nxml-mode is not compatible with Mule-UCS")) +;; (when (featurep 'mucs) +;; (error "nxml-mode is not compatible with Mule-UCS")) --- nxml-mode-orig/rng-auto.el +++ nxml-mode/rng-auto.el @@ -26,8 +26,8 @@ -(when (featurep 'mucs) - (error "nxml-mode is not compatible with Mule-UCS")) +;; (when (featurep 'mucs) +;; (error "nxml-mode is not compatible with Mule-UCS"))
628 名前:622 mailto:sage [2005/10/08(土) 03:01:50 ] nxml ネタその2 自分で mime-charset の名前を定義できるようにする。 ari さんの cp932.el を使えばカンペキ。 (defvar nxml-mime-charset-coding-system-alist '(("windows-31j" . shift_jis) ("cp932" . shift_jis) ("ms932" . shift_jis))) (defadvice nxml-mime-charset-coding-system (after nxml-mime-charset-coding-system-use-alist activate) (unless ad-return-value (setq ad-return-value (cdr (assoc-ignore-case (ad-get-arg 0) nxml-mime-charset-coding-system-alist)))))
629 名前:名無しさん@お腹いっぱい。 [2005/10/21(金) 12:16:09 ] バッファリストをソートしようと こんな感じにしたけど、全部のバッファが表示されない。。 (defadvice buffer-list (around buffer-list-around activate) (sort ad-do-it '(lambda (b1 b2) (string< (buffer-name b1) (buffer-name b2))))) defadvice 良く分からん。 Elispも。
630 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/21(金) 16:32:23 ] make-variable-buffer-localとdefvaraliasの 合の子みたいなのってできないでしょうか。 デフォルトでは変数Bは変数Aの値を使うけれど、 setqされるとAの値を変更するのではなく、 以後は独立した値を持つ、と。
631 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/21(金) 16:38:22 ] ムリ。
632 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/21(金) 16:50:26 ] (or B A) で代用か
633 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/21(金) 17:29:55 ] make-local-variable?
634 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/21(金) 17:37:53 ] >>629 buffer-listは表示なんかしない。 何がしたいのかよくわからんが、list-buffersでの並びを制御したいのだったら list-buffers-noselectをadviceするべきだと思う。
635 名前:名無しさん@お腹いっぱい。 [2005/10/21(金) 19:49:11 ] したいことは、C-xC-bのとき ソートしたいなーと思ったんだけど。 list-buffers-noselect の中で buffer-list を呼んでるんで いいと思ったが、だめか。。
636 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/21(金) 20:10:55 ] >>635 (setq ibuffer-default-sorting-mode 'alphabetic)してibuffer使っとけ。
637 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/21(金) 20:23:34 ] list-buffers 使いやすいか?
638 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/21(金) 20:59:36 ] Oh Thanks. ところで、ibuffer ってファイルだけ 表示って可能か? C-uC-xC-b っぽいこと。
639 名前:名無しさん@お腹いっぱい。 [2005/10/26(水) 16:58:28 ] 初歩的な質問だと思いますが, xemacsで /home/mako/jikken/userFiles/690562.txt など, /homeではじまり.txtで終るファイル へのパスが書かれていた場合, そのパスの上でマウスの中ボタンをクリックすれば, xemacsでそのファイルを起動できるようにする方法を 教えてください. あまりLISPにくわしくないので,記述法など詳細に教えて頂ければ 助かります. googleで検索したところ,URLをマウスの中ボタンをクリックすれば, ブラウザで起動できるようにする方法は, (autoload 'browse-url-at-mouse "browse-url" "Ask a WWW browser to load a URL clicked with the mouse." t) (add-hook 'mew-message-mode-hook (function (lambda() (local-set-key [mouse-2] 'browse-url-at-mouse) ))) でできるという事は分かりました. これを,txtファイル,XEMACSで起動という形に出来れば最高なのですが. またいろいろ調べていると,thingatptやfiberという プログラムを使うと出来そうなのですが,そこからどうすれば良いのかが 分かりません.明日までに出来るようにしてと頼まれているので, 急いでいます. 宜しくお願い致します.
640 名前:名無しさん@お腹いっぱい。 [2005/10/26(水) 17:44:52 ] よろしくお願い致します. 急いでいます.
641 名前:名無しさん@お腹いっぱい。 [2005/10/26(水) 17:45:58 ] すみません. 自己解決しました.
642 名前:639 [2005/10/26(水) 19:05:10 ] 解決はしていません. よろしくお願い致します.
643 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/26(水) 19:14:58 ] Emacs Lisp道場っつーネタかよそれ。しかもすげー自己中。そしてバカ。 小学生が大学生の電気工学の授業中に乗り込んでいって これができる回路を作ってください。明日までに提出する自由工作なんです。よろしく。 ついては電子工作に詳しくないので回路や作り方も懇切丁寧に教えてください。 というみたいな行動を自分がしているというのは認識しているか? >>639
644 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/26(水) 19:57:32 ] Emacs 22だとlist-buffersではWindowsのエクスプローラとかみたいに 見出しをクリックして並べ替えできるようになってるんだけど、 ibufferは旧態依然なので見劣りしてしまうね。
645 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/26(水) 22:19:06 ] クリック
646 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/26(水) 23:28:46 ] >>644 Emacsの上でまでマウスを使いたくない派の俺としては、旧態依然としていても , や s a とかでソートのモードが変更できる ibuffer の方が100万倍使いやすいわけだが。
647 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/26(水) 23:42:04 ] マウスでできる != マウスでしかできない
648 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/27(木) 01:58:41 ] >>639 が「自分はヌルーされている」と気付くのはいったいいつかな?(ワクテカ(AA略
649 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/27(木) 10:40:24 ] 俺もマウスは嫌いだが、Diredの中のファイルは マウスで他のアプリにドロップしたくなる。
650 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/27(木) 12:17:30 ] そもそもマウス刺さってないし。
651 名前:名無しさん@お腹いっぱい。 [2005/10/27(木) 13:49:43 ] kill-ring-save は 'invisible 属性のテキストもコピーしてしまいますが、 'invisible 属性のない普通のテキストのみをコピーするようにするにはどうすれ ば良いでしょうか?
652 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/28(金) 01:25:52 ] >>649 Windows だったら CraftDrop と組み合わせればいけるよ。
653 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/28(金) 02:15:52 ] >>651 でっちあげてみた。 ただ、複数の invisible 属性があるような場合だとうまく動かない。 たとえばこんなの (concat "a" (propertize "b" 'invisible 'test1) (propertize "c" 'invisible 'test2) "d") (defun kill-ring-save-without-invisible (beg end) (interactive "r") (kill-ring-save beg end) (let ((kill (car kill-ring)) new-kill pos) (when (get-text-property 0 'invisible kill) (setq kill (substring kill (or (next-single-property-change 0 'invisible kill) (length kill))))) (while (setq pos (next-single-property-change 0 'invisible kill)) (setq new-kill (concat new-kill (substring kill 0 pos))) (setq kill (substring kill (or (next-single-property-change pos 'invisible kill) (length kill))))) (setq new-kill (concat new-kill kill)) (kill-new new-kill t)))
654 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/28(金) 05:44:14 ] 複数の invisible 属性に対応してみた。 (defun kill-ring-save-without-invisible (beg end) (interactive "r") (kill-ring-save beg end) (let ((kill (car kill-ring)) (pos 0) new-kill) (while (> (length kill) 0) (setq pos (or (next-single-property-change 0 'invisible kill) (length kill))) (unless (get-text-property 0 'invisible kill) (setq new-kill (concat new-kill (substring kill 0 pos)))) (setq kill (substring kill pos))) (kill-new new-kill t)))
655 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/28(金) 10:25:41 ] >>652 だんな! このご恩は一生わすれませんぜ! マウス使わないでOKなとこもGoodですぜ!
656 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/28(金) 13:03:48 ] どこが道場なんだ?
657 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/28(金) 13:28:05 ] ここ。
658 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/28(金) 14:03:40 ] 六三郎
659 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/28(金) 15:52:28 ] >>653-654 さん お返事ありがとうございます。 多分その関数は 21.3 までなら動くでしょうが、22.* では動かないかと思います。 (22 では (get-char-property pos 'invisible) が invisible 属性のテキストに対してうまく機能しないので。) まあでもなんとか自力でやりたいことを達成することができました。 お世話になりました
660 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/28(金) 16:08:26 ] んじゃ22で動くようにしたものを貼ってよう。giveはするがtakeはしない?
661 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/28(金) 16:09:02 ] まちがった、giveとtakeが逆だった……orz
662 名前:659 mailto:sage [2005/10/29(土) 00:04:49 ] >>660 san そうですよね。 ;; [ 2005-10-28 (00:38) ] (defun kill-ring-save-visible (beg end) (interactive "r" ) (let ((s "") from to) (save-excursion (save-restriction (narrow-to-region beg end) (setq from (goto-char (point-min))) (while (not (eobp)) (if (point-invisible-p) (progn (setq to (point)) (setq s (concat s (buffer-substring-no-properties from to))) (end-of-visible-line) (setq from (point))) (forward-char))) (if (> (setq to (point)) from) (setq s (concat s (buffer-substring-no-properties from to)))) (kill-new s))))) invisible になるまで1文字ずつ進まないようにしてるので、ここら辺はもうちょっと 速くなるかもしれません。
663 名前:659 mailto:sage [2005/10/29(土) 00:06:03 ] 1文字ずつ → 1文字ずつしか
664 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/29(土) 02:29:21 ] 22 で確認 (defun kill-ring-save-visible (begin end) (interactive "r") (let ((r '()) (p begin) n) (while (and (setq n (next-single-property-change p 'invisible nil end)) (> n p)) (unless (get-text-property p 'invisible) (push (buffer-substring p n) r)) (setq p n)) (kill-new (apply #'concat (nreverse r)))))
665 名前:659 mailto:sage [2005/10/29(土) 14:06:12 ] >>664 san やっぱり自分の環境ではその関数も全く機能しません。 emacs-version => GNU Emacs 22.0.50.1 (i386-mingw-nt5.1.2600) of 2005-07-11 on A208752
666 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/29(土) 18:56:32 ] next-single-property-change が nil を返した時の処理が抜けてるせいかな。 (defun remove-invisible (s) (interactive "r") (let ((r '()) (p 0) n) (while (and (setq n (next-single-property-change p 'invisible s)) (> n p)) (unless (get-text-property p 'invisible s) (push (substring s p n) r)) (setq p n)) (unless (get-text-property p 'invisible s) (push (substring s p) r)) (apply #'concat (nreverse r)))) (remove-invisible (concat "a" (propertize "b" 'invisible 'test1) (propertize "c" 'invisible 'test2) "d")) => "ad" になる? GNU Emacs 22.0.50.2 (i386-unknown-freebsd6.0, X toolkit, Xaw3d scroll bars) of 2005-10-29 だと期待どおりの動作をするが。
667 名前:659 mailto:sage [2005/10/29(土) 20:35:40 ] >>666 はい、今評価してみた所、 "ad" になりました。 >>662 に追加: すみません、肝心な関数を貼るのが抜けていました。 >>662 の側に置いてあげて下さい。 (defun point-invisible-p () (line-move-invisible-p (point))) ↑でも使用してある通り、 `line-move-invisible-p' であれば invisible をうまく見つける ことができるのですけどね。。。 (defun line-move-invisible-p (pos) "Return non-nil if the character after POS is currently invisible." (let ((prop (get-char-property pos 'invisible))) (if (eq buffer-invisibility-spec t) prop (or (memq prop buffer-invisibility-spec) (assq prop buffer-invisibility-spec)))))
668 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/29(土) 23:16:07 ] もしかしてこーゆーこと? (defun invisible-p (position &optional object) (let ((invisible (get-char-property position 'invisible object))) (if (eq buffer-invisibility-spec t) invisible (catch :result (dolist (prop (if (consp invisible) invisible (list invisible))) (when (or (memq prop buffer-invisibility-spec) (assq prop buffer-invisibility-spec)) (throw :result t))))))) (defun kill-ring-save-visible (begin end) (interactive "r") (let ((r '()) (p begin) n) (while (and (setq n (next-single-char-property-change p 'invisible nil end)) (> n p)) (unless (invisible-p p) (push (buffer-substring p n) r)) (setq p n)) (unless (invisible-p p) (push (buffer-substring p end) r)) (kill-new (apply #'concat (nreverse r)))))
669 名前:659 mailto:sage [2005/10/30(日) 05:21:17 ] >>668 そうそれです。完璧に動作しました! しかも速度も高速ですね。 buffer-invisibility-spec が鍵を握るのはわかって いたのですが、今コードを解釈する時間がない為、連絡だけさせていただきました。
670 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/30(日) 06:24:23 ] >>659 で言っていたうまく機能しないと言うのは見えているものまで一緒に消えちゃっ ていたと言う事でOK?
671 名前:670 mailto:sage [2005/10/30(日) 06:34:20 ] 少しわかりずらいな。 つまり、 (with-current-buffer (window-buffer (display-buffer (get-buffer-create "*test*"))) (erase-buffer) (add-to-invisibility-spec '(test1 . t)) (insert (concat "a" (propertize "b" 'invisible 'test1) (propertize "c" 'invisible 'test2) "d"))) をした結果の *test* buffer の中身に対して kill-ring-save-visible を実行した結果が => "acd" となって欲しかったという事でいい?
672 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/30(日) 19:48:20 ] もしかすると text-property -> char-property で overlay が認識される ことで解決したってことかも。 何にせよ、Emacs 22 だからというより設定のせいっぽいが。 (デフォルトでは buffer-invisibility-spec は 22 でも t だし invisible な overlay も存在しない)
673 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/30(日) 22:50:13 ] あるソフトウェア独自の簡単なスクリプト言語に対応するメジャーモードを作りたいのですが、 コメント部の色をかえるにはどうしたらいいのでしょうか? コメントはC言語の /* が @cs に、*/ が @ce になったような感じです。複数行可。 comment-start と comment-endにそれぞれ値をセットするばいいだけというわけではないのでしょうか? よろしくお願い致します。
674 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/10/31(月) 11:27:48 ] Emacs Lisp神社
675 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/01(火) 02:51:02 ] >>673 それっぽく色を付けるならこんな感じかな。 modify-syntax-entry でコメント開始/終了文字の1文字目と2文字目を指定する。 実は Emacs で3文字以上からなるコメント文字を扱うのは結構面倒臭い。 どこかにお手軽に扱える elisp が転がってないかな? (defvar hoge-mode-syntax-table nil) (unless hoge-mode-syntax-table (setq hoge-mode-syntax-table (make-syntax-table)) (modify-syntax-entry ?@ ". 13" hoge-mode-syntax-table) (modify-syntax-entry ?c ". 24" hoge-mode-syntax-table)) (defvar hoge-font-lock-keywards nil) (defun hoge-mode () (interactive) (kill-all-local-variables) (setq comment-start "@cs") (setq comment-end "@ce") (set-syntax-table hoge-mode-syntax-table) (set (make-local-variable 'font-lock-defaults) '(hoge-font-lock-keywards)) (setq mode-name "Hoge") (setq major-mode 'hoge-mode))
676 名前:675 mailto:sage [2005/11/01(火) 03:17:06 ] 強引にやってみた。 複数行にマッチするのは font-lock で激しくすすめられてないっぽいけど、おーけー としとく。 実は hoge-font-lock-comment-matcher は内部で comment-start, comment-end を使う ようにすると色んな mode で使えて嬉しいかもしれないとか思った。 (defvar hoge-font-lock-keywards nil) (defvar hoge-font-lock-syntax-keywords '((hoge-font-lock-comment-matcher (1 "!") (2 "!")))) (defun hoge-font-lock-comment-matcher (limit) (let (beg end) (when (re-search-forward "@cs" limit t) (setq beg (cons (copy-marker (match-beginning 0)) (copy-marker (match-end 0)))) (when (re-search-forward "@ce" limit t) (setq end (cons (copy-marker (match-beginning 0)) (copy-marker (match-end 0)))) (set-match-data (list (car beg) (cdr end) (car beg) (cdr beg) (car end) (cdr end))) t)))) (defun hoge-mode () (interactive) (kill-all-local-variables) (setq comment-start "@cs") (setq comment-end "@ce") (set (make-local-variable 'font-lock-defaults) '(hoge-font-lock-keywards)) (set (make-local-variable 'font-lock-syntactic-keywords) hoge-font-lock-syntax-keywords) (setq mode-name "Hoge") (setq major-mode 'hoge-mode))
677 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/01(火) 21:34:42 ] 非同期にHTTPサーバとXMLなどのデータをやりとりする仕組みで、 ユーザイベントに動的に反応して、半リアルタイムに挙動を変える ようなUIのelispって何かある?
678 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/01(火) 21:46:00 ] ajax ですか?
679 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/01(火) 23:08:31 ] emacs-w3m
680 名前:677 mailto:sage [2005/11/02(水) 13:49:44 ] >>678 Ajaxのelisp版を想定中。alax? aelax? >>679 少なくとも現状のままでは、「非同期」ではなく動的ではないと思う。
681 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/02(水) 14:24:42 ] slime
682 名前:名無しさん@お腹いっぱい。 [2005/11/12(土) 21:34:51 ] リストを連結する関数は何ですか。 RubyでいうとArray#joinです。
683 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/12(土) 22:39:40 ] >>682 mapconcat
684 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/16(水) 14:10:37 ] re-search-forward で「カーソルのある位置から」マッチさせることって出来ないの? (looking-at REGEXP) 使ってみたけど、(match-string 0) 使ったら (args-out-of-range 0 0) って言われた。
685 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/16(水) 18:23:41 ] (with-temp-buffer (insert "hoge") (goto-char (point-min)) (and (looking-at "hoge") (match-string 0))) => "hoge"
686 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/17(木) 00:03:45 ] 普通にre-search-forwardするのと、事前にチェックした(point)を組み合わせる。
687 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/17(木) 03:08:58 ] save-excursion と save-current-buffer の使い分けはどうすればいい?
688 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/17(木) 04:04:48 ] pointやmarkをどうするか次第
689 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/18(金) 11:51:29 ] faceを少しだけ明るく(もしくは暗く)する関数ってないですか? (color-values "color-name")した値を加工して、そのままset-face-backgroundしようとしたら stringpじゃねぇよボケ、と言われました。何か良い方法はないでしょうか。
690 名前:689 mailto:age [2005/11/18(金) 11:51:57 ] 質問age
691 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/18(金) 12:18:02 ] 28秒
692 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/18(金) 12:34:04 ] なんで実際に書いたコードを隠すんだ? stringp云々って根本的におかしなことやったとしか思えないんだけど
693 名前:688 mailto:sage [2005/11/18(金) 13:31:54 ] >>692 根本的におかしいことやってるのは分かってるので、何か良い方法を教えてほしい、 という質問なんですが。 (defun more-bright-color (color) (mapcar '(lambda (n) (* n * 1.1)) (color-values color)) ) (make-face 'brightly-face) (set-face-background 'brightly-face (more-bright-color "khaki")) > Debugger entered--Lisp error: (wrong-type-argument stringp (65535 65021 39578))
694 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/18(金) 13:42:01 ] >>693 色は、"#00aaff"みたいにすればいいんだよ。
695 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/18(金) 13:46:07 ] >>693 brighter
696 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/18(金) 14:11:42 ] これでいいかな。 (defun more-bright-color (color) (apply #'format (append '("#%02x%02x%02x") (mapcar '(lambda (n) (floor (min 255 (/ (* n 1.1) 256)))) (color-values color)))))
697 名前:688 mailto:sage [2005/11/18(金) 14:16:40 ] >>694 なるほど。 >>696 今手元で同じような関数が出来た。目的を達成することが出来ました。 ありがとう。
698 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/18(金) 15:45:49 ] >>696 brighter だっつってんだろが。 "more bright" なんて英語通じないっつーの
699 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/18(金) 16:01:04 ] 不自然だと感じるけど通じるよ
700 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/18(金) 16:05:38 ] >>698 "brighter" とだけレスされても日本語通じないっつーの。 「brighter だと英語としておかしい」とキチンと書けばいいのに。
701 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/18(金) 16:31:47 ] >700 よっぽど悔しかったんだね
702 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/18(金) 16:41:35 ] >>701 おまいも大人げないよ スレが荒れるからヤメれ
703 名前:696 mailto:sage [2005/11/18(金) 16:45:33 ] >>696 appendいらなかったな。 >>701 >>700 は俺じゃないぞ。
704 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/21(月) 09:49:47 ] Perlのjoinにあたる関数ってないですか。今はこうしてます。 (defun join-string (s seq) (reduce '(lambda (x y) (concat x s y)) seq))
705 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/21(月) 09:59:01 ] mapconcatか。reduceなんてシラネ。
706 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/22(火) 19:24:37 ] 例えば emacs yarou hello emacs kun to lisp yarou のようなラインがバッファ内にあったと仮定して、 M-x foo を実行すると Line containing: というプロンプトがミニバッファにでて、 emac li <RET> と打ちこむと、 "emac" と "li" のサブストリングを含むライン (この場合は 2行目) を occur などでマッチする関数 foo がほしいのですが。。。作って。。。
707 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/22(火) 21:27:04 ] 正規表現でいいじゃん
708 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/22(火) 21:38:21 ] 正規表現でいいだろう
709 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/22(火) 22:35:38 ] 正規表現でいいような気がする
710 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/22(火) 22:42:25 ] 正規表現でいいと思われ。
711 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/22(火) 22:48:41 ] 正規表現じゃ大変だ
712 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/22(火) 23:15:19 ] 正規表現ってのはどうだ
713 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/22(火) 23:19:25 ] もういいから。
714 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/23(水) 00:11:44 ] もういいよ。
715 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/23(水) 02:36:12 ] もういいな。
716 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/28(月) 00:18:36 ] (defun foo(str) "HG" (interactive "sLine containing:") (if (not (string= str "emacs li")) (message "not found!") (if (not (re-search-forward "emac.*li" nil t)) (message "not found!!") (message "found!") )))
717 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/13(火) 13:47:33 ] ライブラリのリビジョンに応じて設定を変えたい場合なんかに便利かなと (setq get-revision-number-line-limit 20) ;; 1.1.1.1 には対応してない (defun get-revision-number (library) (let* ((file (locate-library (concat library ".el"))) (buf-exists-p (get-file-buffer file)) (buf buf-exists-p) rev) (unless buf-exists-p (setq buf (find-file-noselect file))) (save-match-data (with-current-buffer buf (save-excursion (save-restriction (widen) (goto-char (point-min)) (let (search-limit) (forward-line get-revision-number-line-limit) (setq search-limit (point)) (goto-char (point-min)) (when (re-search-forward (concat "$Id: " (regexp-quote (concat library ".el")) ",v " "\\([0-9]+\\.[0-9]+\\)" " ") search-limit t) (setq rev (string-to-number (match-string 1))))))))) (unless buf-exists-p (kill-buffer buf)) rev))
718 名前:名無しさん@お腹いっぱい。 [2005/12/14(水) 00:43:34 ] emacs-version "22.0.50.1" Diredのバッファ名のように、 mode-lineのcvsのリビジョンの部分だけ色を変えたいのですが、 (setq-default mode-line-format `(" " ;;mw32-ime-mode-line-state-indicator mode-line-mule-info mode-line-modified " " mode-line-buffer-identification (vc-mode ,(propertize vc-mode 'face '(:foreground "blue" :background "red"))) " " global-mode-string (-3 . "%p") " " "-%-")) これを.emacsで評価すると、mode-lineでは.emacsのリビジョンが赤くなりますが、 別のバッファにうつっても.emacsのリビジョンが赤くなってしまいます。 着色しないときのようにファイル毎にそれぞれのリビジョンを表示するには、 どうしたら良いでしょうか?
719 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/14(水) 05:34:22 ] (setq-default mode-line-format '(" " ;;mw32-ime-mode-line-state-indicator mode-line-mule-info mode-line-modified " " mode-line-buffer-identification (vc-mode (:eval (propertize vc-mode 'face '(:foreground "blue" :background "red")))) " " global-mode-string (-3 . "%p") " " "-%-"))
720 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/15(木) 00:31:01 ] >>719 できました。便利な属性(?)があるんですね。
721 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/15(木) 01:28:18 ] どんなタイミングでevalされるの?
722 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/20(火) 08:53:44 ] Vim の dircolors.vim みたいな ~/.dir_colors 編集用メジャーモードを作ったので晒してみます。 begin-base64 644 dircolors-mode.el.gz H4sICJBGp0MAA2RpcmNvbG9ycy1tb2RlLmVsAK1Y0W7bNhR9z1cQ6oPlDfLk 8DoG4qBBazuNUccqHD/sQUChWHSmWZYySU4aYOi/DFCH/cMG7HFFCwzYZwx7 2/YBIyXbSUhfUwbmIBAl3nPu5Tk0KbPT6RA/SKZxGCeptYh91mAhsciF922c EHFPZrzB/CALomvy/qsGj35bhh8cmD6bTZdpFi8kEuubOJ6TKAgPCDE2XSWf 6GoYvOM4u79hpCbuxd11Ei9vSM33Mq9eUs+8KZOJ74LQn3qJb4lODquZZkbM Y14kEwSRT4xnZ/xj20a9Xhcl1AuuWy/ZScUT7+jdUZBtPy3lSdatgKZU+1Uc +iTT40DC8cGyJAwiVgXc2rfKtpQtiG5ZkjLrNvBZXCEjtXdZBLb4M/QssliS 0bYtG72V5XAXi22r02UrC9130m1lkW2UahHVVGBp6XSpxHKk06USizxVFF2q sIA8X6686fyJLlXUBeXL9Zil6nwBeb5ItVRzGmSnpVr+D5aq8wXk+aLoUolF ni+KLpVY5Pmi6CKzbFm8V8uusmyvnuO4JoJranCA4ECDayG4lgbXRnDt3TiK 6EI1ulBEF6rRZbW0qrhDDY4iOKrBIT5QjQ8U8YFqfFgtkSruSIND/KMa/wDx DzT+AeIfaPwDxD/Q+AeIf6DxDxD/QOMfIP6Bxj9A/AONf4D4B2v/MGB6H2Xe O8sLgzQrlzjj7XuDNIhxZ9SJefpMNE+KphuJ9nO+1m15TX7M0zDwfLM4yqww ns6tObu/ixM/XWV13RPXNSf98YXrft91hs6YX/uDV+eTl4MJbzpvJgNndOm6 ddd9LgpUmFYjJfyzphs544sXQ44+Gwz7/NIbCNbhYPRaMI7fnL8Y8cbF4PJy MHpVhJ05/HLpdEVAzymKeDkUN93zoqCv+939Shj2zyZdpyeyj8VoVu3+qFe2 qnJ94bqNU9e9+3IVv/v9f41q7I04se3t8Zut6iGyiUQ2lUhAIkGJbCGRLSWy jUS25UiKjIgqI6LIiKgyInqIRB4qkRSJpEokohJVVKKISlRRiR4hkUdKJKIn VfQERE9Q9ARET1D0BERPUPQERE9Q9ARET1D0BERPUPQERE9Q9AREz/WSvG0V VVfHXWvpwrtBDi04mndusMtIgvJf1AJV5dhEHH2YQZSxxJtmwa3YSviDeRCG fLEPRbFeaPHiAu8qZKmgNZf8d3f5XFSoFl1SLLw5k+Ck9iAAL9tbhlnJmLLs O6L2FWKLT6dDJk7POSb5p/yf/LcnuxHJP3/649d/879//pj/mH/88NOHP3/4 Jf/MI//Kfz99RFEztXuVkLv437GLkit2HUQRF9KKZ5Y48KjXN1n2yVFpK96a bSNZkSLyFowYvXVe40HRhfC/nBDSi0MRkyyj4mQsJbWMvcsejspECvMmicXh ior8Dy4122KlEwAA ====
723 名前:722 mailto:sage [2005/12/20(火) 09:04:41 ] それで、いくつか作ってて疑問な点があったので聞いてみたいのですが * 123行目で SYNTAX-ALIST 引数に dircolors-mode-syntax-alist を使うと (直前でコメントアウトしてあるコードのことです) font-lock が発動した際に型が違うと言われてしまうのですが、これは何故なんでしょうか? * defface で face を定義した後、同名の変数を defvar する操作は必須ですか? 自分の環境では省略しても問題ないように見えるんですが、ネットで見掛けるコードでは 何故かわざわざ defface, defvar を並べて書いてるのでちょっと不安です。 必要なのであれば、その理由も教えて頂けるとうれしいです。 というかもしかして face と普通の変数ってスコープが違ったりしますか?
724 名前:722 mailto:sage [2005/12/20(火) 09:08:14 ] すみません、>>723 で嘘書いてしまいました。 defface の後の defvar を省略すると face が有効にならないみたいです。 これって何故なんでしょうか?
725 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/21(水) 00:51:58 ] deffaceはfaceの定義、defvarは変数の定義 たとえば dired.elの (defface dired-header '((t (:inherit font-lock-type-face)))) (defvar dired-header-face 'dired-header) dired-headerという名前で定義したfaceを用意しておいて、 dired-header-faceに代入しておく。 実際にfaceを決定するところではdired-header-faceを使用する。 elispコード内でdired-headerを直接指定していたら、 もしもあとでdired-header-faceを変えたくなったときに、 dired-headerを上書きするかコードを書き変えないといけないけど、 変数を経由するようにしておけば、別のfaceを定義してその変数に代入してあげればいい。 そういう意味で、paren.elなんかはfaceを直接overlayしているので、 faceの色や字体を変えたいときは、set-face-x系を使って faceの設定を上書きしてあげないといけないね。
726 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/21(水) 07:12:14 ] > そういう意味で、paren.elなんかはfaceを直接overlayしているので、 > faceの色や字体を変えたいときは、set-face-x系を使って > faceの設定を上書きしてあげないといけないね。 それで何か不都合あんの?
727 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/22(木) 00:55:23 ] ほとんどの人は上書きしてしまって不都合ないと思いますよ。 起動後にfaceを変えるってあまりないですよね。 でもまぁ、setqでちょこちょこ変えたい人には箱があったほうがいいですし、 それくらいのレベルだと思います。
728 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/10(火) 20:35:07 ] はじめまして。Emacs LISPの勉強をしている高校生です(はじめたばかりです。すみません)。 カレントバッファに対して文字列の検索や置換をする関数は見つけられたのですが、 文字列そのものを引数にとるような同様の関数はありますでしょうか。 具体的には、ある入力文字列から、決められた文字を取り除きたいのです。
729 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/10(火) 21:12:04 ] M-x apropos その程度で質問してるようじゃ先が思いやられるよ
730 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/10(火) 21:40:19 ] なんでそんなに見下した態度取るんだ? 高校生か、がんばれよーでいいじゃん。
731 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/10(火) 21:43:34 ] replace-regexp-in-string とかでええのか? または string-match して substring してみたり適当に
732 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/10(火) 23:25:20 ] read-string が知りたかったりして。
733 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/11(水) 00:57:18 ] オレも最初 read-from-minibuffer かと思った
734 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/11(水) 02:34:19 ] >731 replace-regexp-in-string、これです!ありがとうございました。 >729 今後はしばらく"M-x apropos"で調べていけそうです。Emacs LISPのこういうインタラクティブな感じがとっても好きです。 しょーもない質問をしてすみませんでした。そしてありがとうございました。 その他の方々もありがとうございました!
735 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/12(木) 18:54:34 ] time-stamp.elを使ってるとundoの時に不満ない? timestamp部分はundoできなくなるけど、こんな事してみた。 (defadvice time-stamp-once (around cannot-be-undone activate) (let ((buffer-undo-list t)) ad-do-it)) 後から気付いたんだけど、redo.elを入れてたのをすっかり忘れてた。 ちゃんと使っていればそのような不満はあまり感じなかったかもしれない。
736 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/12(木) 20:01:00 ] >>735 Meadow meme だかに似たようなのがあったね。
737 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/12(木) 20:14:23 ] homepage3.nifty.com/oatu/emacs/misc.html これかな?
738 名前:名無しさん@お腹いっぱい。 [2006/01/12(木) 21:14:55 ] >>734 まあマジレスすると mode-info 入れとけ。 ttp://www.namazu.org/~tsuchiya/elisp/mode-info.html
739 名前:名無しさん@お腹いっぱい。 [2006/01/13(金) 03:30:34 ] 行の中で最初の「空白/タブではない文字」にカーソルを移動したいんですが、どうすればいいですか?
740 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/13(金) 08:22:49 ] >>739 see back-to-indentation
741 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/13(金) 09:31:16 ] >>740 ありがとう。助かりました。
742 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/15(日) 03:13:49 ] >>738 734じゃないけど、mode-info は最新の CVS の Emacs だとコンパイルできない ようです。過去にこのスレでパッチが出ていたんだけど、もう古くなっていま した。。。最新のパッチがあれば投下して頂けないでしょうか?
743 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/16(月) 13:00:13 ] url.el の使い方が分からない…。 (let ((url (url-generic-parse-url "www.example.org/ "))) (url-retrieve url (lambda () (url-store-in-cache (current-buffer)))))
744 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/16(月) 13:00:47 ] 途中送信してしまった…。 これでキャッシュの保存をしてくれるかと思ったけどしてくれなかった。 どうすればいいんだ???
745 名前:名無しさん@お腹いっぱい。 [2006/02/04(土) 21:09:59 ] d.hatena.ne.jp/teny/20060204#p1 こういうのを見ると、emacs lispも技術の途切れて 壊滅的状態にあると思わざるを得ない。
746 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/04(土) 22:05:10 ] >>745 おまえの日本語も技術の途切れて壊滅状態だな。
747 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/04(土) 22:17:34 ] >>745 その題目って、何度も再発明されてるな。
748 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/04(土) 22:36:05 ] 単に再発明した人がいるというだけなのにその帰結かよ。
749 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/04(土) 22:47:05 ] っていうか、バグバグじゃん。ちゃんとテストしてないな。
750 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/04(土) 23:08:53 ] まぁblogはある意味ここよりもゴミが多かったりするし。
751 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/04(土) 23:32:41 ] しかしまあはてなでEmacsはやりだしたってので それじゃ俺も使ってみるかってな人間が増えるのはいいことだ。 うざい質問も増えるかもしれないけど そのうち育ってステキなパッケージ作ってくれるやもしれんし。
752 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/04(土) 23:43:21 ] バグを見つけたなら、指摘コメントしてやるといいよ。
753 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/06(月) 22:59:07 ] >6のtexinfoが {}のエスケープが無くてmakeinfoできないんだけど、 俺だけ?パッチ作ったんだけど、作者に送った方が良い?
754 名前:名無しさん@お腹いっぱい。 [2006/02/07(火) 08:26:36 ] >>745 これを見ていろいろ調べていて、 「[ANNOUNCE] Emacs modules for Perl programming」 www.uni-giessen.de/faq/archiv/perl-faq.emacs-lisp-modules/msg00000.html というドキュメントを見つけて(おのれ、今までこれの存在を知らなかった) 「Emacs Tiny Tools Project hoimepage」 tiny-tools.sourceforge.net/ というものの存在を知ってガクゼンとしました。 通常、いろいろな人が作っているのをかき集めて組み合わせて実現して いる機能をそっくり提供する、別系統のツールのセットですよね。 このTiny Toolsを使っている人っています?
755 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/07(火) 16:15:09 ] 使ってはいないけど、たまに参考にしたり。 コード、ドキュメント共に。
756 名前:名無しさん@お腹いっぱい。 [2006/02/09(木) 12:31:30 ] (standard-display-ascii ?@ [?#]) を評価すると,(当然ですが) モード関係なしで全ての @ が # で表示されてしまいます. ここで,上の動作をある特定のモードのみでやるにはどうすればよいのでしょうか?
757 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/09(木) 17:43:03 ] (make-local-variable 'display-table)
758 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/10(金) 00:07:01 ] >>757 (make-local-variable 'buffer-display-table) だろが
759 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/02(木) 18:50:16 ] mcomplete を使っている諸君! 例えば、例えばだ… M-x describe-function を実行し、 mcomplete の [Substring match] に向かって process-coding-system と入力するとエラーが出るよな? ELisp 勉強中の俺が、 恥を覚悟でパッチを作ってみたんだ。 あってるかな? --- mcomplete.el +++ mcomplete.el @@ -1281,8 +1281,10 @@ (tails-alist (mapcar #'(lambda (item) (string-match regexp item) (list (substring item (match-end 0)))) - completions))) - (concat str (try-completion "" tails-alist))))))) + completions)) + (comp (try-completion "" tails-alist)) + (tailstr (if (eq comp t) "" comp))) + (concat str tailstr))))))
760 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/02(木) 21:02:30 ] うー、そのパッチはとてもただしいのだが、 ここにはってしまったためにさいようできません。。。
761 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/02(木) 21:47:55 ] (ノ∀`)アチャ-
762 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/02(木) 22:49:07 ] マルチライセンスで別のところにも貼ればいいんでは。
763 名前:759 mailto:sage [2006/03/02(木) 23:14:08 ] GPL に違反してしまうのか? パッチという形式をとっているからいけないのか? 無知は罪だ。勉強してから出直します。ごめん。
764 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/03(金) 02:53:55 ] navi2ch スレでもそういう認識になってるけど、 例えば匿名で運営してる自分のウェブページに掲載したらどうなるの? 初出の出所が不明だから不許可になる? そもそも著作権侵害は親告罪だし、 メーリングリストでのパッチだって完全な出所証明は非常に難しいし、 出所が証明できたからってどっかからぱくってないことは証明できないし、 採用者の了見しだいでなんとでもなりそうな気がするよ。
765 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/03(金) 04:18:16 ] >>764 出所不明とかそういう問題じゃないよ。 2ch だと、投稿時にいくつかの項目に対して同意を求められるでしょ。 この中に、運営が指定する第三者に対して、一切の権利を許諾しないって項目がある。 これは GPL に矛盾するから、これに同意して 2ch に投稿されたものは、 GPL ソフトウェアにマージできないの。 自分のウェブページとかの場合なら、 GPL に矛盾する規定をしてなければ問題ない。 だから navi2ch スレとかだと、そういう規定がない Wiki とかを利用してる。
766 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/03(金) 04:35:24 ] 便乗質問させてください。 すれ違いかと思いつつ、前から聞いてみたかったので書きます。 gzip & base64 とかでencodeして張った場合、どうなるんでしょう。
767 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/03(金) 07:18:24 ] GPL と 2ch の規約は矛盾するだろうけど、 じゃあ、そもそもが GPL のコードを 2ch に張るとどうなるのかと考えると、 それは GPL 違反ではあるが、 張ったがために 2ch がコードの利用の権限を持つようになるわけじゃないよね。 ということは、本人が GPL として作ったコードを 2ch に張った場合、 張った行為は GPL あるいは 2ch 利用規約違反だけど、 張っただけで 2ch のものになって GPL として使えなくなるわけではないんでは?
768 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/03(金) 09:22:24 ] 2ch にあるパッチを当てた物を GPL として配布してもかまわないと思う人は 自分で配布すればいいじゃないか。 片手間で開発してるような場合、GPL 違反だと言ってる連中がいるってだけで 面倒そうだから取り込むのはやめようって気になるんじゃないかな。
769 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/03(金) 09:46:09 ] >>766 貼る形式の問題ではない。
770 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/03(金) 10:39:04 ] 思うんなら自分でやればっていわれても、話にならないな。 まあスレ違いだしやめよう。
771 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/03(金) 12:04:01 ] 誰かが別の場所でGPLで公開してるパッチを第三者が勝手に 2chに貼った場合とか
772 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/03(金) 12:08:04 ] >>771 それのどこが問題?
773 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/03(金) 12:18:33 ] そのパッチを本人がプロジェクトに寄付する気になったとき とりこめるかどうか
774 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/03(金) 12:46:56 ] 第三者が何かしたからといって、パッチ作製者の権利が失われるわけないじゃん。 そうでないなら、ML とかに流れてるパッチを 2ch に転載しまくるだけで そのプロジェクトの開発を妨害できちゃうよ。
775 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/03(金) 13:08:30 ] 匿名サイトに置いてあるパッチを2chに貼った場合、 本人によるものか別の人によるものかも分かんねーしな
776 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/03(金) 13:48:32 ] 強いて言えばパッチの作者に 「ヘンなシバリのある掲示板に勝手に貼るなよ」 って文句言われる可能性はあるな。
777 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/03(金) 14:20:49 ] 文句言われる言われないはどっちでもいい。 問題はそのパッチをマージする事が可能かどうかだ。
778 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/03(金) 14:23:41 ] マージするかどうかは 開発元とパッチ作者との間の問題。 2ch に貼るのは 2ch 管理人と投稿者とパッチ作者の間の問題。 両者に関係はない。
779 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/04(土) 00:28:59 ] 続きはこちらで ライセンスあれこれ pc8.2ch.net/test/read.cgi/unix/1032702590/
780 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/09(木) 19:58:10 ] ある変数に EUC-JP や Shift_JIS などの文字コードの文字列が入っている状態で、 その文字コードを UTF-8 に変換したい場合は、どうしたら良いのでしょうか?
781 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/09(木) 20:08:35 ] ccl
782 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/10(金) 22:12:33 ] >>781 ありがとう。 でも、全然使い方が分からないわ orz
783 名前:名無しさん@お腹いっぱい。 [2006/03/21(火) 09:49:25 ] こんなの見つけたお ttp://www.okisoft.co.jp/esc/lecture/emacslisp.pdf 知識ゼロからのとっかかりにはいいんではないかと思う
784 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/21(火) 13:12:22 ] ほかにも「やさしい Lisp の作り方」とかあるね ttp://www.okisoft.co.jp/esc/whitepaper.html あと、これは一部で有名だけど「美人プログラミングスタイル」とか
785 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/28(火) 10:55:02 ] 以下の機能をmajar-modeに実装する方法でつまづいています。 「一行につき全角文字20文字まで、それを越えたら自動的に折り返して次の行へ」 行幅を全角20文字で整形したいだけなのですが・・・ truncate**系 とか fill-** 系とかの変数をうまく使えばいいのだろうかと試行錯誤しているのですが、錯誤ばかりで自滅気味です。わたしアタマワルイ。 だれか助けてー。
786 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/28(火) 13:19:47 ] >>785 先に決め事が必要になる。 (1) 半角文字の扱い (2) 空白文字の処理 (3) 禁則処理(行頭、行末) まともにやると、かなりめんどい。
787 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/03/28(火) 13:39:20 ] >>785 単に (set-fill-column 40) (auto-fill-mode t) って話? >>786 みたいな問題もあるし 仕様を見直した方がいい気がする。
788 名前:ゼウス [2006/04/03(月) 13:19:19 ] おい、お前等
789 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/12(水) 01:27:25 ] CやC++ファイルの編集での普通(gnuのモード)のインデントで、 字下げが少ない時はスペースでインデントしてくれるんですが、 tab幅以上の字下げの時にtabでインデントしてしまい困ってます。 これをスペースでインデントするようにするにはどうしたら良いでしょうか。
790 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/12(水) 02:11:47 ] (set-variable 'indent-tabs-mode nil) (setq-default indent-tabs-mode nil) …10年以上使ってるけどこれでいいかな
791 名前:名無しさん@お腹いっぱい。 [2006/04/12(水) 08:06:40 ] eshell 上で mysql の返答 (standard output) がしっかり 表示されるようにするにはどうソースを修正したらいいか教えろ お前等ならわかるだろ
792 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/14(金) 04:06:36 ] やっぱわかんねーのか。。。 eshell のソースはかなり複雑だから仕方ねーのかもな
793 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/14(金) 08:33:53 ] わかるだろうけどおまえのためにわざわざ調べる気にはならんってだけ。
794 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/14(金) 08:48:40 ] >>793 お前自分の言ってる事矛盾してる 知ってんだったら調べる必要ないだろが
795 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/14(金) 09:05:09 ] 調べればわかるんだろ
796 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/05/11(木) 11:34:11 ] 各種*.confみたいな 項目: 要素 的設定ファイルを読み込んでalistに溜め込んで行くようなのを考えてるんですが なかなかすっきりしません。 一項目一要素でとりあえずいいんですが、 やっぱりなにかしらのバッファで開いてbuffer-substringしていくしかないんでしょうか。
797 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/05/11(木) 23:30:31 ] しかないっつーかEmacsのファイル入力はバッファで開くのが普通なんだが。
798 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/05/11(木) 23:33:22 ] バッファで開かないでファイルをlispでストリームとして扱う方法ってあるの? 数百メガの巨大ファイルをいじるとき便利っぽいけど。
799 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/05/12(金) 04:55:14 ] tmpなバッファにinsert-file-contents。 find-file-noselectするよりは処理が軽いそうな
800 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/05/12(金) 05:10:22 ] >>798 Common Lisp な xyzzy ならできるが、Emacs は不可能。
801 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/05/12(金) 08:14:54 ] xyzzy は Common Lisp じゃない。cl ですら実装されてるのに (mapcar (lambda (x) (typecase x (integer "整数") (string "文字列") (t "その他"))) '(10 3.3 "ほげ")) こんなのが動かないし。
802 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/05/13(土) 20:51:42 ] >>801 それだけ?他にもあるでしょ。おせーて。
803 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/05/14(日) 11:40:22 ] -batch で別個に動かすのはどうでしょう?
804 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/05/14(日) 14:05:01 ] >>798 insert-file-contents系で分けて読むとか、catあたりをstart-processしてfilterで読むとか。 テキストの場合マルチバイト文字の切れ目の処理が必要になるとちょっといやらしいかも
805 名前:名無しさん@お腹いっぱい。 [2006/06/24(土) 12:07:52 ] >>801 適当だけど。 (defmacro?typecase?(check?&rest?type-list) ??(let?((#1=#:case)) ???????(dolist?(item?(reverse?type-list)?#1#) ?????????(push?(if?(eq?(car?item)?t) ???????????????????`(t?,(cadr?item)) ?????????????????`((subtypep?(type-of?,check) ?????????????????????????????',(car?item)) ?????????????????????????????,(cadr?item))) ???????????????#1#)) ????(cons?'cond?#1#)))
806 名前:805 [2006/06/24(土) 12:12:09 ] あらら。。もう一回。 (defmacro typecase (check &rest type-list) (let ((#1=#:case)) (dolist (item (reverse type-list) #1#) (push (if (eq (car item) t) `(t ,(cadr item)) `((subtypep (type-of ,check) ',(car item)) ,(cadr item))) #1#)) (cons 'cond #1#)))
807 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/08/30(水) 05:12:50 ] 未編集のリードオンリーのバッファ上で、何かあるタイミングで、 recenter すると変更フラグが立つことがある。 という現象に遭遇した人いないですか、とか聞いてみようと思った。 が、recenter の前に、(sit-for 0) を入れたら解決したみたい。
808 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/15(日) 22:07:25 ] Emacs21とか22とかになると、デフォルトでいろんな機能が 組込まれてしまったので (occurとかgrepとか、検索もパワーアップしたり)、 新しい機能を作る機会が減って、最近このスレッドが寂しいのかなぁ、 などと思ったりした。 まとめサイトや紹介サイトも増えたしね。 ネタが出てくることを願って期待sage。
809 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/21(土) 21:51:36 ] ちまちまと一年以上かけて作ってきたが、とうとうやる気が無くなったので晒すテスト。 使い方はソース読んでくれ。 ttp://grinocat.googlepages.com/yawn.el
810 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/21(土) 23:01:47 ] ネ(・∀・)申!
811 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/22(日) 04:18:27 ] >>809 すげぇ。すげぇよ、あんた。
812 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/27(金) 01:00:59 ] w3みたいなもの? 動かせない(´;ω;`)
813 名前:<sage> [2006/11/06(月) 19:07:50 ] この板の趣旨とは、ちょっと内容がずれてますが、教えて下さい。 shell-command-to-string 関数を使って、perl を呼び出そうとしていますが、 日本語引数を渡すとどこの段階でか分かりませんが、文字がばけます。 (shell-command-to-string "c:/Perl/bin/perl.exe e:/work/0my/scripts/test.pl てすと表示") で、「test.pl」 では、 my $outfile = "e:/work/0my/scripts/test.txt"; my $out; open ($out, "> $outfile") || die ("couldn't open $outfile to write into."); print ($out $ARGV [0]); close($out); で、"test.txt" を shift_jis とかで開いても化けています。 DOS 上で日本語引数は、問題なく処理されるので、Elisp から、 perl に渡されるときに壊れると解釈していますが、どうすればいいのでしょう?
814 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/06(月) 21:51:47 ] >>813 > perl に渡されるときに壊れると解釈していますが、どうすればいいのでしょう? 表の後に\を付ける、とか?
815 名前:sage [2006/11/07(火) 00:20:27 ] >>814 レスサンクス。 表のあとに\マークってことは、「てすと表\示」って感じにですか? 日本語文字は何を入れてもだめなので、それでもだめだと思います。 気になるのは、エンコーディングがどうやって認識されるかです。 elisp -> shell -> perl と引数として指定された文字列が渡されると思いますが、 このプログラム間のエンコードは、どうやって指定するのかが、よく分かりません。 おそらく日本語 OS 下では、デフォルトが shift_jis になると思いますが、 これは、elisp からシェルの間も同じかな?
816 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/07(火) 00:31:14 ] process-coding-system とか coding-system-for-write とか?
817 名前:名無しさん@お腹いっぱい。 [2006/11/07(火) 00:45:40 ] >>816 さんありがとう (setq coding-system-for-write 'sjis) でうまくいきました。m(_ _)m
818 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/11/07(火) 00:48:11 ] >>817 letで束縛 ttp://www.fan.gr.jp/~ring/doc/elisp_20/elisp_33.html#SEC542
819 名前:名無しさん@お腹いっぱい。 mailto: [2006/11/07(火) 01:04:52 ] >>818 この変数に対して値をグローバルに設定すべきではないということですね。 了解、let を使います。
820 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/12/13(水) 14:58:06 ] emacs上でschemeの勉強しているんですが、 emacsのコメント行のインデントのしかたが気に入らないので 直したいと思っているのですが、 どこから始めたらいいのか、 さっぱり分かりません。 とりあえず scheme-modeが定義されている場所の調べ方を教えていただけませんか?
821 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/12/13(水) 15:38:18 ] >>820 > scheme-modeが定義されている場所の調べ方を教えていただけませんか? find-function > emacsのコメント行のインデントのしかたが気に入らないので 確かに comment-dwin は腐ってるからな
822 名前:名無しさん@お腹いっぱい。 [2006/12/14(木) 22:57:50 ] >>820 つ Gauche
823 名前:名無しさん@お腹いっぱい。 [2007/01/14(日) 02:16:27 ] 初歩的な質問で聞き難いのですが教えて下さい。 バッファ中の文章の特定の文字を置き換えるようなコードを 作りたいのですが、condを使うのかifとprognを使うのかよく分かりません。 たとえば、文章中の”Red Hat”なら”赤帽”、”Vine”なら”葡萄”、”Windows”なら ”窓”というようにバッファ中の文章を変えたいです。
824 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/14(日) 02:19:30 ] >>823 replace-stringじゃだめなん?
825 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/14(日) 02:26:41 ] 複数の文字列を一括して置換とかかな
826 名前:名無しさん@お腹いっぱい。 [2007/01/14(日) 02:33:07 ] >>824 検索関数(search-forward)などでマッチした文字列を replace-matchなどで変えようと思ったのですが、条件分岐が よくわからなくて・・・ >>825 たぶん、そんな感じです。
827 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/14(日) 02:36:59 ] まずは仕様をきっちり決めれ。 「たぶん、そんな感じ」じゃなんだかわからん。
828 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/14(日) 02:42:02 ] 基本事項なんだぜ? (info "(elisp)Conditionals") (info "(elisp)Combining Conditions")
829 名前:名無しさん@お腹いっぱい。 [2007/01/14(日) 02:49:31 ] ありがとうございます。もう少し読んでみます。
830 名前:823 mailto:sage [2007/01/14(日) 03:25:03 ] レス下さった方々、どうもありがとうございました。 非常に無駄な処理をしていますが、望む結果が得られました。 (defun change-font () (interactive) (let ((p (point))) (goto-char (point-min)) (while (not (eobp)) (if (search-forward "Led Hat" nil t) (replace-match "赤帽") (forward-line 1))) (goto-char (point-min)) (while (not (eobp)) (if (search-forward "Vine" nil t) (replace-match "葡萄") (forward-line 1))) (goto-char (point-min)) (while (not (eobp)) (if (search-forward "Windows" nil t) (replace-match "窓") (forward-line 1))) (goto-char p))) 過去ログ読んで勉強してきます。
831 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/14(日) 05:53:52 ] 一行に2回出てきたらだめじゃね?
832 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/14(日) 11:47:06 ] 検索語を \\| で分けて match-string で抜き出し cond で振り分けろ
833 名前:823 mailto:sage [2007/01/14(日) 13:38:34 ] >>831 いえ、ちゃんと置き換えてくれました。 >>832 ご教授ありがとうございます。しばらくにらめっこします。
834 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/14(日) 14:59:07 ] 教授じゃなくて教示
835 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/15(月) 00:23:16 ] > >>833 > > 一行に2回出てきたらだめじゃね? >>831 > いえ、ちゃんと置き換えてくれました。 ホントに? 試していないけど VineVine とかいう行があったらダメっぽく見える。
836 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/15(月) 01:09:45 ] `XWindows' も `X窓' になりそうだし、`divine' も `di葡萄' になりそう。 (後者は `case-fold-search' の値によるけど)
837 名前:823 mailto:sage [2007/01/15(月) 19:50:39 ] >>835 >>836 ご指摘ありがとうございます。例外処理(?)を考えていませんでした。 まだ>>832 さんの方法で出来ていないしどんだけバカなんだろ私・・・
838 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/16(火) 06:46:15 ] 自分で頑張れてるのだから、頭が悪いとは思わないけどな。 やりつけないことは何でも最初は大変だ。 >>832 , >>836 とも正規表現が必要だし。 まず>>830 の改善点としては(forward-line 1)、これは置換が終わったら次へ進む ってことで入れたのだろうけど、次の行じゃなくて置換したテキストの直後に 移動すれば十分な筈。ところがreplace-match自身が Leave point at the end of the replacement text. という動作をしてくれる。 >>836 は、正規表現を使うと「単語の先頭」という位置にだけ合うパターンが 使えるのでそれを使う。必要なら同様に「単語の末尾」というのも使える。 正規表現による検索はre-search-forward. ここまでで一応、要求は満たされるんじゃないのかな。 >>832 は正規表現を使うと「AまたはBまたはC」にマッチするパターンというのが 書ける。それで検索して、その後でそれがAだったかBだったかCだったかを調べ、 対応する文字列(A'なりB'なりC'なり)に置換するという方法。 これだとバッファの先頭から検索を始めるのが一回で済む。
839 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/16(火) 08:06:14 ] save-excursion も教えたれよ。
840 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/16(火) 10:05:53 ] replace-regexp を使う。
841 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/16(火) 11:37:35 ] >>840 This function is usually the wrong thing to use in a Lisp program.
842 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/16(火) 12:59:54 ] (defun foo (alist) (let ((regexp (regexp-opt (mapcar #'car alist) 'words)) (table (make-hash-table :test 'equal)) (normalize (if case-fold-search #'downcase #'identity))) (dolist (pair alist) (puthash (funcall normalize (car pair)) (cdr pair) table)) (save-excursion (while (re-search-forward regexp nil t) (let ((new (gethash (funcall normalize (match-string 0)) table))) (replace-match new))))))
843 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/16(火) 15:22:17 ] ほとんどの漢字も普通にword syntaxだから全然だめだな
844 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/16(火) 16:47:50 ] 俺、elispでハッシュとか使ったことねーや
845 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/17(水) 00:50:09 ] オレも make-hash-table ってのははじめてみたけど、 elispのハッシュってのはcdr要素数1のalistと解釈して、だいたいおk?
846 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/17(水) 01:15:55 ] 論理的にはOKだけど、計算量がぜんぜん違うよ? 何かアルゴリズムの入門書を読んだほうがよさげ
847 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/17(水) 02:15:15 ] 最近知ったんだけど、バイトコンパイルした結果って 直接実行もできるんだね。 (defun fn(x) (* x 2)) (byte-compile 'fn) #[(x) "\211\\\301\\\207" [x 0] 2] (#[(x) "\211\\\301\\\207" [x 0] 2] 10) 20
848 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/17(水) 05:48:58 ] ワロタ つくづくエディタなんだな
849 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/17(水) 06:23:03 ] つまらん
850 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/17(水) 14:28:00 ] お前等の中にシリコンバレーで働いてる人いる?
851 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/17(水) 23:10:28 ] emacsで文字のフォントの大きさを変えるにはどうしたらよいですか?
852 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/17(水) 23:41:26 ] もしemacs lispがstatic scopeだったら果たしてどうだったろうか
853 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/01/21(日) 00:40:22 ] >>851 fontset
854 名前:名無しさん@お腹いっぱい。 [2007/03/28(水) 18:57:13 ] (゚Д゚≡゚д゚)
855 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/03/29(木) 01:39:37 ] >>854 うちの .Xdefault には, 未だに > Emacs.Font: fontset-12 bold > Emacs.Fontset-0: -shinonome-gothic-bold-r-*-*-12-*-*-*-*-*-fontset-12 bold > Emacs.Fontset-2: -shinonome-gothic-bold-r-*-*-14-*-*-*-*-*-fontset-14 bold ... > Emacs.Fontset-11: -shinonome-gothic-medium-r-*-*-24-*-*-*-*-*-fontset-24 medium てなものが残ってて機能しているが...
856 名前:名無しさん@お腹いっぱい。 [2007/04/12(木) 10:48:03 ] emacs ilspでwebプログラミング可能?
857 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/12(木) 11:29:20 ] >>856 「webプログラミング」っていうとどの辺の話?
858 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/12(木) 11:45:50 ] ttp://www1.odn.ne.jp/ymtz/tips.html#wwwsvr こういうことだったりして
859 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/12(木) 11:57:35 ] AllegroServe とかそういう話かなぁ。 elisp じゃないけど。
860 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/12(木) 13:32:42 ] elservなんてのがあったなー。 もっとまともなのも多分あるだろうけど興味無いので知らない。
861 名前:名無しさん@お腹いっぱい。 [2007/04/12(木) 15:16:27 ] emacsがwebサーバーになるのですね。もはやなんでもありですね。 elispはphpで作成するのと同様のwebプログラミングは可能でしょうか? 掲示板とか、アンケートなど。
862 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/12(木) 15:18:15 ] >>861 アクセスのたびに Emacs 呼ぶってこと? まぁ不可能じゃないんじゃね。 やる気は起きないけど。 >>859 じゃだめなん?
863 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/13(金) 04:31:21 ] 単純にphpスクリプトを書けるか?と聞けば 遊ばれずに済んだであろう>>861
864 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/13(金) 09:45:15 ] そういう質問じゃないっしょ。
865 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/13(金) 15:06:43 ] >>861 もちろん同様のことは可能。もちろん同様にはできないけどな。
866 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/13(日) 16:17:55 ] 定期的に M-x hoge を実行するにはどうしたら良いのですか? 答えが駄目なら、誰かヒントだけでも教えてくれないでしょうか。
867 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/13(日) 17:55:49 ] timer
868 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/15(火) 01:21:02 ] 23 という数値を16進数数値として扱い、 "35"にする方法はどんなのがあるでしょうか? (let ((n 23)) (format "%d" (string-to-number (number-to-string n) 16))) これは思いつきましたが、もちょっと簡単にならんかな、と。
869 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/15(火) 06:39:30 ] じゅうぶんかんたんだとおもう
870 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/15(火) 10:48:34 ] >>868 #x23
871 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/15(火) 11:08:26 ] >>868 なんで元が数値なんだろ。 3a とかの入力は考えなくていいの?
872 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/15(火) 20:18:46 ] >>870 (read (concat "#x" n)) か。なんかびみょーに感じる。この表記がいけるのってemacs21以降あたり?
873 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/16(水) 00:01:09 ] 数値を concat できたのか…
874 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/16(水) 00:22:21 ] ごめん。emacs21からはムリなはず。
875 名前:866 mailto:sage [2007/05/20(日) 00:46:22 ] 駄目だ分からない。 run-at-time 使おうにも hoge をどう指定したら良いのか不明……lisp は難しい orz 例えば、.emacs にどう書けば、自動で M-x hoge できますか? ; emacs の引数から起動するのではなくて。 あとは、start-process と while と sleep-for 辺りを組み合わせれば可能な気はするんだけど……さっぱり orz 週末に数時間しか PC に触れられないのは、現代社会をは思えない環境 orz
876 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/20(日) 00:52:00 ] run-with-timer 使うんじゃないの? 何がわからないのかがよくわからない
877 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/20(日) 00:53:00 ] もしかして M-x から指定してるものが関数名だってことを知らないとか?
878 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/20(日) 03:58:00 ] (setq hoge-timer (run-with-timer 0 1 'hoge)) (defun hoge () (interactive) (message (current-time-string))) (defun hoge-cancel () (interactive) (cancel-timer hoge-timer)) M-x hoge =>Sun May 20 03:56:18 2007
879 名前:lispp? [2007/05/20(日) 14:40:44 ] LISPを学習して1週間目の者ですが、 (progn (setq wara 10) (setq waru 0) (/ wara waru) ) でエラーが発生します。 (if (equal waru 0)...)でなくて、catch??? throw???のような例外処理で対応したいのですが、 可能でしょうか?
880 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/20(日) 14:50:53 ] >>879 shakosv.sk.tsukuba.ac.jp/ShakoDoc/Editors/NEmacs/elisp-jman/html/eljman_104.html
881 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/20(日) 17:00:06 ] >>879 condition-case elisp.infoのControl Structuresを参照。 Lispではcatch/throwの例外処理とsignal/condition-caseのエラー処理は別物 である点に留意されたし。
882 名前:名無しさん@お腹いっぱい。 [2007/05/20(日) 17:12:06 ] xyzzy使っているのですが、 condition-caseで関数がないと表示されます。
883 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/20(日) 17:17:31 ] 板違い
884 名前:名無しさん@お腹いっぱい。 [2007/05/28(月) 20:48:43 ] EmacsでのLispのプログラムについての質問です。 リストAとして((a b c) (d e f) (g h i))というリストがあるとして、このリストの中の要素であるリストの 最後の要素を返す関数を作る場合どうしたらいいでしょうか?
885 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/28(月) 21:33:40 ] >>884 各要素の cdr を見ていって、それが nil なものを返せばいいんじゃないの。 そういう話でない?
886 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/28(月) 21:37:09 ] >>884 (car (last (car (last '((a b c) (d e f) (g h i))))))
887 名前:名無しさん@お腹いっぱい。 [2007/05/28(月) 21:47:12 ] 884の補足ですが、 リストAを引数として(c f i)を返すような関数を定義したいのです。 また、リストAの要素がもっと多い場合にも対応できるようにしたいのです。
888 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/28(月) 21:52:54 ] >>887 (mapcar (lambda (x) (car (last x))) A)
889 名前:名無しさん@お腹いっぱい。 [2007/05/28(月) 22:00:23 ] >>888 見たことないコマンドが多いのですが・・・。 初心者なのでもう少し分かりやすくしていただけるとありがたいのですが。
890 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/28(月) 22:16:26 ] 標準の関数くらい自分でしらべろよ。
891 名前:名無しさん@お腹いっぱい。 [2007/05/28(月) 22:17:51 ] そういった関数を使わないで定義したいんです。
892 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/28(月) 23:42:03 ] lambda とか mapcar 使わないで lisp のプログラム書くのは 逆に難しいと思うぞ。
893 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 00:06:38 ] それは無理な話だ
894 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 00:08:04 ] ごめん >>893 は>>891 へね
895 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 00:11:56 ] おk。mapcar も lambda も car も廃止してやったぞ。last は使わせてくれて… (require 'cl) (defun fun-887 (lst) (loop for element in lst collect (first (last element)))) last も禁止ならこうだ。 (require 'cl) (defun fun-887 (lst) (loop for element in lst collect (first (reverse element))))
896 名前:名無しさん@お腹いっぱい。 [2007/05/29(火) 00:16:23 ] >>895 ありがとうございました もう一つ聞きたいのは、数nとリストを引数として取り、 リストのn番目の要素を返す関数を定義したいのですが、 この関数を再帰を使って定義するにはどうしたらいいでしょう
897 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 00:24:12 ] (defun list-ref (lis n) (if (zerop n) (car lis) (list-ref (cdr lis) (- n 1))))
898 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 00:43:50 ] んー? ttp://questionbox.msn.co.jp/qa3033199.html
899 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 00:46:01 ] 最近なんでもかんでも聞く人多くない?
900 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 01:19:24 ] mapcar を独自に定義しようとするとどう書ける?
901 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 01:29:48 ] >>896 再帰使うまでもない。 (defun list-ref (lis n) (nth (1- n) lis))
902 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 01:52:11 ] (defun my-mapcar (func list) (let ((rest list) (results ())) (while (not (null rest)) (setq results (cons (funcall func (car rest)) results)) (setq rest (cdr rest))) (nreverse results))) とかかな。
903 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 02:01:06 ] setq とか cons を使いたくないんですとか来た場合に備えておこう。 (require 'cl) (defun my-mapcar-2 (func lst) (loop for elem in lst collect (funcall func elem)))
904 名前:名無しさん@お腹いっぱい。 [2007/05/29(火) 02:04:56 ] >>898 つうか、そゆのは大抵自分では考えないだろうし、調べないだろうし、向上心もないだろうし、礼儀も知らないだろうし、 人の忠告も聞かないだろうから。さっさと答を与えればそれ以上しつこく聞いてこない軽い荒らしだと思って対応するが吉。
905 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 02:05:17 ] cl は宗教上の理由でちょっと……。
906 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 02:09:23 ] 自分も書いてみた。リストしか考慮してない。 あんまり慣れてないからどっかまずいところあるかも・・・(自分への免罪符 (defun my-mapcar (func list) (defun my-mapcar-iter (func list rtn) (if (null list) rtn (my-mapcar-iter func (cdr list) (setq rtn (cons (funcall func (car list)) rtn))))) (my-mapcar-iter func list '()))
907 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 02:11:39 ] defunの中でdefunするのはじめて見た。
908 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 02:11:55 ] あー、 reverse すんの忘れたorz
909 名前:名無しさん@お腹いっぱい。 [2007/05/29(火) 02:18:25 ] Schemer の方ですか? Emacs Lisp じゃー再帰は実用的じゃないお。 しかも defun は internal define と違ってグローバルだし…。
910 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 02:23:05 ] >>898 の質問者はもうダメだろうね。レポートは突破できても試験は無理そうだ……。 授業二三回でればいいだろうになぁ。まったく聞いてなかったんだろうな。授業料無駄だったね。
911 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 02:58:34 ] >>909 最近、ちょっと scheme で遊んでたもので・・・。 > Emacs Lisp じゃー再帰は実用的じゃないお。 調べてみたところ、再帰回数が max-lisp-eval-depth で制限されてる、 末尾再帰が最適化されない、のようなことがあるのですね。 > しかも defun は internal define と違ってグローバルだし…。 M-x help f で関数のリスト見たら、my-mapcar-iter があって驚きました。 よくよく考えてみたら、setq はいらなかった。 なんでつけたんだろう。 まずいところ多すぎorz
912 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 07:07:10 ] >>905 改宗すればおk
913 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 10:07:37 ] cl 使えば flet で関数内関数使えるよ。
914 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 12:55:46 ] flet を使って書き直すなら、こんなかんじでしょうか。 たしかに my-mapcar-iter が隠れた。これ便利かも。 (require 'cl) (defun my-mapcar (func list) (flet ((my-mapcar-iter (func list rtn) (if (null list) (reverse rtn) (my-mapcar-iter func (cdr list) (cons (funcall func (car list)) rtn))))) (my-mapcar-iter func list '())))
915 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 22:24:57 ] …再帰するなら labels じゃねーとダメなんじゃね? cl のバグ? ズバリこうだろ。while 版より短い!! 俺のバイク小屋ハァハァ (defun my-mapcar (func lst) (let ((result nil)) (dolist (e lst) (push (funcall func e) result)) (nreverse result)))
916 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/29(火) 22:27:10 ] なんとなく nreverse なしのループで書いてみた (defun my-mapcar (fun list) (let* ((result (list nil)) (x result)) (while list (setcdr x (list (funcall fun (car list)))) (setq x (cdr x) list (cdr list))) (cdr result))) >>915 flet を macroexpand してみればわかるよ まあしょうがないんだろうけどちょっと気持ち悪いよね
917 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/02(土) 08:50:13 ] ずびまぜん。 elispで 16進数文字列を整数に変換する楽な方法ってありません? (hoge "64") => 100 ってなるような。 (defun hoge (s) (string-to-number (concat "#x" s))) とかじゃ 0が返ってきてしまいました。
918 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/02(土) 08:59:28 ] (defun hage (s) (string-to-number s 16)) ↓ (hage "64") ↓ 100 ウマー
919 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/02(土) 09:16:44 ] おお、そんなところに &optional があったとは... infoをもっとちゃんと読むべきでした。 どうも有難うございました。
920 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/02(土) 16:36:52 ] >>868-
921 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/02(土) 21:22:45 ] 知ってる人も多いだろうけど C-h f めちゃくちゃ便利だよ。 関数定義してるソースの該当部分にも飛べる。
922 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/03(日) 00:27:47 ] emacs22でも、mode-infoも動いてくれるしね。
923 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/10(日) 19:00:25 ] あるオブジェクトに対し、car-safeが非nilとなる時 cdrでなくcdr-safeを使うべき局面ってある?
924 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/10(日) 23:36:38 ] >>923 car-safe が non-nil なら対象は list ってことだから、そんな局面はない、 と思う。
925 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 22:28:03 ] 同じ名前の変数 (defvar hoge)と関数 (defun hoge ())が定義されているとき、 変数だけ定義を消すことってできますか? (unintern 'hoge) だと、両方消えてしまうので。
926 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 22:36:59 ] makunbound c.f. fmakunbound
927 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 22:45:39 ] ぬりがとう。 ところでこれ何て読むのですか? (エフ)メイク・アン・バウンドでいいんかな? 思い出されるcreat()。
928 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/27(水) 23:18:45 ] >ところでこれ何て読むのですか? なんでしょうね? >思い出されるcreat()。 なるw
929 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/29(金) 01:06:36 ] defconstしてるものには、時に大文字のシンボルを使ってみるのも一興かなと ふと思った。 たぶんウザいだろうけど。
930 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/07(火) 22:22:42 ] EmacsがXで動いているときだけ、 C-zでアイコン化しない様にしたいと思っています。 Xで動いているのかterminalで動いているのか判別するには どうしたらよいのでしょうか。
931 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/07(火) 22:29:27 ] window-system
932 名前:930 mailto:sage [2007/08/07(火) 22:33:57 ] >931 ありがとうございます。 とりあえず、 (if window-system (global-set-key "\C-z" 'shell)) としてみました。
933 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/21(火) 05:23:38 ] M-x shell を.emacsファイルの読み込み時に動作させるにはどうしたらよいのでしょうか。
934 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/21(火) 10:02:38 ] 本当に文字通りそうしたいのならば (shell) と書く。
935 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/21(火) 12:13:59 ] >>934 できました。ありがとうございました。
936 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/26(日) 17:18:02 ] (global-set-key [?\C-;] 'なにか) とか (global-set-key "\C;" 'なにか) とやってもエラーがでて動きません。 ;をjにしたら動いたので”なにか”が間違っていることはいないと思います。 C-;やC-, C-. へのバインドを指定するにはどうしたらよいのでしょうか どなたか教えていただけないでしょうか?
937 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/26(日) 19:00:19 ] [(control ?;)] 設定程度の質問なら、次回からelispスレじゃなくてemacsスレ行きな。
938 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/26(日) 21:58:08 ] >>937 ありがとうございます 今後は気をつけます どうもすいませんでした そのようにしても動きはしませんでしたが、 それはターミナルからの接続の仕様らしいと分かったので、 別のキーを割りあてることにします
939 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/26(日) 22:06:20 ] man ascii で出てくるコントロールコード以外の コントロールキーの組み合わせ以外は 端末じゃ動かないよ。
940 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/26(日) 22:09:03 ] まちがえた。以外が一つ多かった。
941 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/28(火) 01:55:47 ] (func "/usr/bin/emacs" "/") => ("usr" "bin" "emacs") こんな感じで、文字列からトークンを抽出する好い奴を 何方か識りませぬか?
942 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/28(火) 02:03:17 ] 普通に1文字ずつチェックすれば良いじゃない。
943 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/28(火) 03:14:56 ] split-string
944 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/28(火) 19:47:13 ] >>943 幸あれ。 やっぱりあるよね。token で探してたよ >>942 普通?とりあえずこんなん書いてた (lambda (string delimiter) (let* ((iter (lambda (str dlm lst) (if (and (string-match dlm str) (substring str (1+ (string-match dlm str)) nil)) (funcall iter (and (string-match dlm str) (substring str (1+ (string-match dlm str)) nil)) dlm (cons (substring str 0 (string-match dlm str)) lst)) (cons (substring str 0 (string-match dlm str)) lst))))) (funcall iter string delimiter ())))
945 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/27(土) 01:27:05 ] 下記のような独自スクリプトのメジャーモードを作っています。 function: if hoge == 0 { hogehoge; } elseif hoge ==1 { if hoge2 == 0 { hogehoge2; }else{ hogehoge3; } } end; 階層は上記のif文のみです。 自動インデントをつけたいのですがどうすればいいでしょうか?
946 名前:945 [2007/10/28(日) 08:47:43 ] 補足です。generic-x.elを使って作っています。
947 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/30(火) 10:08:00 ] buffer-local-variableなるものがあるそうですが、 .emacs.elなどでsetq-defaultで設定した値は、 新しいバッファを作る度にバッファごとの値のコピーが作られてしまうんでしょうか。 カスタマイズ性から見るとsetq-defaultの方が使い易そうなのですが、 パフォーマンスに悪影響がでないか心配なんです。
948 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/30(火) 20:29:39 ] make-variable-buffer-local されてるような変数の話だよね。 これは setq とかで書き換えた時点で、その buffer に local な変数が作られるってシステム。 書き換えるまではどの buffer でも初期値を参照してて、 setq-default はこの初期値を書き換える。 それ自体がコピーの原因になったりはしないはず。
949 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/16(金) 08:26:40 ] call-processとかの外部コマンド呼び出し関数で コマンドの出力(標準出力)を文字列もしくは文字列リストで 返すようなものってないでしょかね? いちいちバッファに出すのがとても無駄に感じる時がある
950 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/16(金) 22:17:04 ] set-process-filter
951 名前:名無しさん@お腹いっぱい。 [2007/11/29(木) 10:04:56 ] みなさん、乙です。 コードの中で読み易さを上げるためダブルクオート中の文字列を改行して書きたいのですが、 その改行自体はコード上では無効にしたいのですが、どうすればいいですか? 例 (message " listA, listB, listC") これが以下のようにmini-buffer に出力して貰いたいのですが、 listA,listB,listC そんな方法ありますか?
952 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/29(木) 11:08:37 ] >>951 (message (concat "listA," "listB," "listC"))
953 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/29(木) 12:39:04 ] >>951 (message "\ listA,\ listB,\ listC")
954 名前:名無しさん@お腹いっぱい。 [2007/11/30(金) 05:59:54 ] >>952 , 953 サンクス。C と同じことできたのね。試せよオレ。