1 :
名無し~3.EXE :
04/12/19 05:13:38 ID:drvadu7y 亀井さん作成のエディタxyzzyのスレです。
過去ログや関連サイトなどは
>>2-10 あたり。
2 :
1 :04/12/19 05:14:52 ID:drvadu7y
3 :
1 :04/12/19 05:15:40 ID:drvadu7y
7 :
名無し~3.EXE :04/12/19 13:59:22 ID:xBbsumVS
おつでし
前スレでは *pre/*post-command-hook*について議論が出てたけど, 速度に関係することで前々から気になっていたことがあったのでついでにあげておきます. (provide "xxx")っていうのは, *modules* に "xxx" がなければ,"xxx"を追加する関数で, (require "xxx")っていう関数は, *modules* に "xxx" がなければ,xxx.l をロードし, あればロードしない関数です. # 識者の方,間違ってたらご指摘お願いします. *.l を保存したら,すぐロードするというコードを使っているんですが, siteinit.l を書き直すと, provide が書いてないか *load-path* からの相対ファイル名 (.lを除いたもの) になっていないので,何回も読み込まれてしまいます. そういうものは .xyzzy に書けよという突っ込みもあるとは思いますが, 配布しているライブラリの中にはprovideが適切に設定されていないものが結構あるので, siteini.lの再読み込みに数10秒程度かかかってました. ライブラリのコードをちょっと直して適切にprovideを設定すると,再読み込みに1秒もかから ないので,ライブラリの配布をしている皆さん 一度 provideのチェックをお願いします. それと,ほとんどの場合 load-library よりも require でロードするようにした方が いいと思います. もう自分の手元にあるのは全て修正済みなので正確には分かりませんが, oltを設定するだけでもかなりの変化があったように思います.
>>9 > oltを設定するだけでもかなりの変化があったように思います.
公開しているの (load-library "olt/olt") になってますね。
とりあえず (require "olt/olt") にしといていただければ。
ほんのちょっとだけ日本語の入ったutf-8nのファイルを かなりの確率でshift-jisと誤認します。日本語が大量にあれば 誤認はなくなるんですがたまにイライラします。 sift-jisで書くこともあるの全部utf-8nにするわけにもいず 自動認識にしているのですがこの認識率ってlispで上げられない もんですかね?
-*- encoding: UTF-8 -*-
>>11 (change-default-fileio-encoding *encoding-utf8n*)
かな。
ちなみにファイルの先頭から(確か)4096 バイトの内容で文字コードの自動判別が
出来ない場合にはデフォルトが使われるようになっていたと思います。
ので、英文がバーっと最初にあってその後に日本語が続くような文章だと
ほぼ確実に自動判別に失敗して、デフォルトが使われることになります。
開くファイルのエンコーディングがわかっている場合には C-u C-x C-f で開くと、
ファイル名の後にエンコーディングを聞いてくるので最悪それで指定するのもあり。
面倒ですけど。
ファイルの内容を弄っていいなら
>>12 もありですね。
僕もこの前それをなんとかしようと思って、xhtmlファイルのヘッダのところにコメントで 「沐豊」と書いたら、それ以外全部英文でもutf8nと認識してくれるようになりました なんでこの2文字になったかはわかりません
LaTeXに対するoltを .oltで次のように設定しましたが, subsectionの下にあるparagraphは表示されるのに,sectionの下にあるparagraphが表示されません. 他のoltでも :any-miss を指定すると同様の現象が起こります. :any-miss を指定した場合の動作がおかしいようですが,バグの特定まではできませんでした. とりあえず,LaTeXでの設定を書いておきます. (defun olt-make-regexp-LaTeX-mode (root-hitem) (olt-make-regexp-internal :root-hitem root-hitem :layer-regexp-list '("\\\\chapter\\*?{\\(\\(?:[^}]\\|{[^}]*}\\)*\\)}?" "\\\\section\\*?{\\(\\(?:[^}]\\|{[^}]*}\\)*\\)}?" "\\\\subsection\\*?{\\(\\(?:[^}]\\|{[^}]*}\\)*\\)}?" "\\\\subsubsection\\*?{\\(\\(?:[^}]\\|{[^}]*}\\)*\\)}?" "\\\\paragraph\\*?{\\(\\(?:[^}]\\|{[^}]*}\\)*\\)}?" "\\\\subparagraph\\*?{\\(\\(?:[^}]\\|{[^}]*}\\)*\\)}?" ) :layer-regexp-list-case-fold nil :layer-regexp-list-order :any-miss :dependent-layer-regexp-list '(;"\\\\caption{\\(\\(?:[^}]\\|{[^}]*}\\)*\\)}?" "^\\\\label{\\(\\(?:[^}]\\|{[^}]*}\\)*\\)}?") :dependent-layer-regexp-list-case-fold nil))
>14 豊の字はともかく、どうやったら沐の字が出てくるんだろう……。 沐浴ぐらいしか熟語知らないよ?
17 :
11 :04/12/24 21:00:29 ID:+Z0KXnlC
>>14 これおもしろいっすね。ファイルの先頭に日本語を持ってくるように
します。
私はxml/htmlなら <!-- UTF-8で書かれたデータです --> ってコメントをxml宣言直後辺りに入れてる。
>>15 ちょっと試してみた範囲では、私の意図する動作をしているようでした。
現象を再現できるだけの、テストデータを含む情報と、期待されている動作を
書いてメールで送ってみてください。
こんな漏れがガンガって2ch-mode弄ってみた。 スレ内のID検索ができるようになった。 誰か漏れをほめてやってくれないか?
おおスゲェ、俺も欲しい。教えてくれ。
>>22 こんな漏れってどんな漏れ?
漏れもそれ欲しい。
ftpupdateはもう手に入らない? HDDが逝ったので、環境再構築中なんだけど、これは痛すぎるorz
>>26 作者に直接メールしてみたら?
再配布の許可さえもらえば,簡単に手に入ると思うよ
>>29 >>29 お疲れです。
でもなんかエラー花盛りです……。
・未取得のスレを開くと「ファイルが見つかりません」
・追っかけスレのスレッドを一旦過去スレにして、戻してからスレを開くと「ファイルが見つかりません」(/kako/...から/datにファイルコピーして強引に解決。上のエラーのせい?)
・追っかけスレを巡回更新しても更新を関知しない。再読込しても更新されない
>>30 Σ(゚д゚lll)ガーン
ほんとだ…ダメダメすぎだ…
すいません、ちょっと時間ください… ∧||∧
32 :
29 :04/12/29 12:48:18 ID:0a3rcB6l
直したつもりです。取得し直してみてください。お騒がせしてすみません…。 >・追っかけスレのスレッドを一旦過去スレにして、戻してからスレを開くと「ファイルが見つかりません」 >(/kako/...から/datにファイルコピーして強引に解決。上のエラーのせい?) 過去スレフラグが立っているものを通常状態に戻す機能って 2ch-mode にありましたっけ? どちらにしても、現状ではその機能は otherbbs には実装されていません。すみませんです…。m(__)m
>>32 完璧です。ありがとうございました。
> 過去スレフラグが立っているものを通常状態に戻す機能って 2ch-mode にありましたっけ?
2ch::tracking-change-dat がそれらしいです。私はkにこれを割り当ててます。
> どちらにしても、現状ではその機能は otherbbs には実装されていません。すみませんです…。m(__)m
いえ、問題なく動作するようになりました。
やはり未取得のスレと同じような扱いだったからのようですね。
いつのまにかやる気がでてる・・・
皆さん、検索ってどうされているんでしょうか? wikiにtips/検索結果をダイアログボックスで表示する などというものをあげさせてもらってるんですが あまり需要がないようなので、もっといい方法があるのかと思いまして。
37 :
036 :05/01/01 11:29:58 ID:FmWPcyly
>>36 ちょとしたものの場合はインク利サーチでぐるぐる回りながら探す。
強調かけときたいときはtagで、
定型的な作業の場合はそれにあわせてlispかく。
って感じかなあ。
dsearch突っ込んでないし、lispもよく眺めてないから的外れなこと言ってるかもしんないけど。
39 :
38 :05/01/01 12:42:31 ID:KgPrXqdW
入れてみました。確かに便利。 自分の好みとしてはダイアログ表示でなくて、 pop-to-bufferなんかで処理するほうが好きかも。 ひょいっと検索かけてあたりつけてpopしたwindowで その位置に移動なんていう具合が。 結局、元いた位置にもどることも多いんで。 そういう意味では、検索語の強調を残さないほうがいいんかなあ。 あんまり気にせんでくさい。ちょいと使った感想でした。
40 :
036 :05/01/01 13:17:37 ID:gCLCz9PS
>>38 >>39 コメントどもです。
> ちょとしたものの場合はインク利サーチでぐるぐる回りながら探す。
やっぱりインクリメントサーチのメリットは大きいんですかね。
日本語テキストを編集することが多いのでmigemo.lの導入を考えたんですが、
辞書に単語を登録するのが面倒で今の所つかってません。
> pop-to-bufferなんかで処理するほうが好きかも。
はずしてたらすみませんが、C-u M-x grep じゃだめでしょうか。
> 元いた位置にもどることも多いんで。
これはM-x dsearch-goto-return-pointでできると思います(多分(^^ゞ)。
> そういう意味では、検索語の強調を残さないほうがいいんかなあ。
うーん。自分としては検索語の強調はかなり必須なんですよね。(^_^;)
強調を消すのはpickup-pattern-unset-allでしています。
41 :
036 :05/01/02 15:22:05 ID:yx1u57/Q
検索はかなり良く使うので、自分で何か勘違いをしているなら早めに正しておきたいと 思って質問させていただいたのですが、皆さんisearchやC-u M-x grep、migemo.lなどの 拡張lispの導入、個別にlispコードを記述といった感じで検索されているのではないかと思いました。 下手なコードですがdsearchは一応自分の想定した動きをしていると思われるので、 当面は従来どおりdsearchとC-u M-x grepの併用で行こうと思います。
>>41 オレも少し使ってみたけど、search-dialog を使う人にとっては、
dsearch は便利だと思います。
問題があるとするならばWikiのところに説明文が少なすぎな所だと。
オレも使ってみるまで「検索結果をダイアログボックスで表示する」だけの
Lispだと思い込んでましたので。
画像入りで解説があって欲しいなぁと思います。
43 :
036 :05/01/02 16:56:54 ID:cOwTG4bT
>>42 大して需要があるとも思えませんが、一応画像を追加してみました。
44 :
036 :05/01/02 18:03:41 ID:T9CPDYdt
上は、このlispの需要があるとは思えないという意味です。
画像、乙。各人は亀井さんの文体に影響を受けてか そっけない謎めいた感じの紹介が多いので 分けが分からないことが多いので画像ありは助かります。
46 :
036 :05/01/03 01:18:56 ID:W/tIXR0C
>>45 それわかりますね。(笑)
自分でもそう思いました。
しかし、Lisp(らしきもの)を書いてみるとなんとなく作る側の気持ちもわかってきたような気がします。
とはいえ、今回は不親切すぎたようで失礼しました。
2ch-modeで板の更新ができなくなってしまったのですが... (´・ω・`)ショボーン
>>47 > 2ch-modeで板の更新ができなくなってしまったのですが...
> (´・ω・`)ショボーン
板一覧の取得URLを変えるとか(*2ch-base-url*)、
取得方法を変えるとか試してから出直してきてください。
あと、状況説明はもっと詳細にヨロシク。
>>48 お返事ありがとう御座います。
main.lは、(defvar *2ch-base-url* "
http://www6.ocn.ne.jp/~mirv/ ")になっています。
C-tで更新しようとしても、「304 更新なし」と出てきてしまうのです。
*2ch-base-url*をいろいろ変えてチャレンジしています。
51 :
50 :05/01/03 15:25:19 ID:FtZIdVnf
53 :
50 :05/01/03 19:46:20 ID:FtZIdVnf
ありがとうございます。 解決いたしました。 おかけで、xyzzyの仕組みも、ほんの少しだけわかりました。
clickable-urlを拡張して file:<相対パス> とか file://<絶対パス> とか urn:isbn:<ISBN> を紀伊国屋で開くとかHTML中の href="なんとか" とか src="かんとか" とか、ファイル名のフィルタで関連付けに任せるかxyzzyで 直接開くかとか作ったんだけど需要ある? あとWindowsネットワーク(\\host\dirみたいの)も。使わんけど
wikiにでも是非頼みます。
>>55 さん、俺も使いたいです。よろしければwikiの方にお願います
58 :
55 :05/01/07 11:50:18 ID:SBo1kzI8
>>58 ライセンスは大丈夫?
改変したものを、原作者の名前で配布しているよ。
55 = OHKUBO さんなら無問題だけど。
>>59 > ライセンスは大丈夫?
> 改変したものを、原作者の名前で配布しているよ。
連名になってますよ。
OHKUBOさんと55n88さんと。
OHKUBOさんのライセンスに対するスタンスはどんなだったっけ?
たぶん大丈夫じゃないかなぁ〜
たぶんじゃマズい
さすがに無確認ってことはないんでしょう?
63 :
57 :05/01/07 22:11:35 ID:Wt94OiZa
>>58 おお、使わせていただきます。どうも有難う。
ライセンスちゃんと確認しろよ?
服部氏死亡 ↓ 2ch-modeでBe.2chログイン不能 ↓ 2ch-mode死亡
>>65 くだらん文句たれる前にあんたがパッチでも
あてればいいんじゃないの?
とりあえず今のところはProximitron導入してしのぐかなぁ・・・
正直すまんかった。勘違いしてた。これじゃむりぽ。
ちょっと気になったんですけど・・・ (defun foo () (interactive) (message "~S" *last-command*)) (defun bar (&rest x) (message "~S" *this-command*)) (define-key minibuffer-local-completion-map #\M-: 'foo) (add-hook '*enter-minibuffer-hook* 'bar) こんなことをやって挙動を見てみると、ミニバッファに入った直後に *last-command*がnilになってるように見えます。 これはなぜなんでしょう?
72 :
名無し~3.EXE :05/01/11 01:42:51 ID:hMsuACvy
CtrlとCapsLockのキーコードを拾ってxyzzy上でエミュレートできるようにならんかなぁ。
CtrlとCapsLockを入れ替えたいってことなら、 それを求める人はエディタ上以外でも入れ替えを求める>窓使いの憂鬱とかを使う、という流れになると思う。
>>73 うちの研究室では、1つのアカウントを複数人で使い回したり、手荒なことをするものでw
>>74 xyzzy 上でエミュレートできればOK=xyzzyは自分しか使わない
なら,窓使いの憂鬱あたりで,xyzzy上でだけキーを入れ替えるように設定しては?
見当違いならスマソ
window xyzzy /xyzzy\.exe/ : Global mod Control += 英数 key *英数 = *LeftControl key *LeftControl = *英数
77 :
72 :05/01/11 09:17:27 ID:hMsuACvy
>>76 見ながらハタと気づいたけど、窓使いの憂鬱はレジストリの書き換えじゃないんだね。
じゃあいくらかましかなぁ。
よし、研究室の人々と相談してみよう。
貴様ら、レスありがとう。
>>77 俺は共通PCに窓をインスコしておいて自分が使う時だけ立ち上げてるよ。
CapsLockを使わないなら、 入れ替えじゃなくてCapsLockもCtrlも両方とも Ctrlにしてしまえばいい。 っていうか、私はそうしている。 共用PCでも案外気づかれないものよ(笑)。
(load-library "iso8859-1") してC-x 8 " aとかやるとウムラウトの文字が入力できたんですな。こんなん知らなかった。凄い便利じゃ
82 :
名無し~3.EXE :05/01/12 03:57:07 ID:YJZdbDqf
はっ!!xyzzyではskkが使えない!? だめじゃん!
どんなアプリでも SKK が使えるから SKKIME の存在は自分にとって Windows > X。
86 :
085 :05/01/14 12:32:41 ID:3yzPKa+N
質問しておいて申し訳ないですが、eijiro.l をダウンロードして 上のURLの意味がわかりました。 ネット上で検索してもさほど重くないことがわかったので、このまま使おうと思います。
89 :
87 :05/01/14 20:30:56 ID:RoFjvsnZ
>>88 たまにしか起こらないので、再現できる手順を示せません。
推測では、前回のエラーのリストを参照して飛ぼうとすることがあるようです。
あいまいですみません。
>>89 > 推測では、前回のエラーのリストを参照して飛ぼうとすることがあるようです。
コードを眺めた感じ、たぶん仕様です。
適当なタイミングで ed::*error-list* を nil にしてください。
もしくはデフォルトの F10 (first-error) & F11 (next-error) を使ってください。
91 :
87 :05/01/15 05:24:13 ID:vXLTCdKT
>>90 コンパイルをする関数の execute-subprocess の直前に、
(setq ed::*error-list* nil)
を足してみました。
たまにしか起こっていなかったので、確実に解決したかどうかを
今すぐには報告できませんが、ある程度使ってみてからまた来ます。
どうもありがとうございました。
(buffer-size)な使い方で全角を2バイト(文字コードのサイズで)でカウントする方法ってないですか? ファイルに書いて (get-file-info) が手っ取り早い??。。。 テンポラリなんでファイル作りたくないっス
94 :
92 :05/01/17 17:45:03 ID:5P7NVxqK
>>93 サンクス
いくつか載ってたんで参考にしま
clickable-uriの (setq *clickable-uri-keyword-color* '(:color 6 0 :underline)) で色変更ができないような気がするんですが、 勘違いでしたらすみません。
>>95 ども。
変更後は、設定反映のために (clickable-uri-set-regexp) が必要です。
以下ではどうでしょうか。
(setq *clickable-uri-keyword-color* '(:color 6 0 :underline))
(clickable-uri-set-regexp)
97 :
095 :05/01/19 18:59:36 ID:Vcne/VeD
>>96 すばやいご回答ありがとうございます。
教えて頂いたようにしたところ色変更ができました。
というか、ちゃんと設定例に書いてありますね(^_^;
お手数お掛けしました。m(_ _)m
98 :
87 :05/01/21 10:30:02 ID:KgvI+56C
どうかと思うならば適切なところで 書くなり伝えるなりしてください。
起動時に明示的にutf8で開く方法ってありますか?
>>100 「明示的にutf8で開く」ってのは、具体的には、どういった操作をしたら
どういう風になって欲しいと考えていますか?
>>101 不明瞭な書き込みですみません。
外部アプリからxyzzycli.exeを呼んで起動済みのxyzzyでファイルを開きます。
コマンドラインからファイル名を渡します。
この際、バッファ(ファイル?)の文字コードを必ずutf8nとして開きたいのです。
直前に実行したコマンドは変数 *last-command* でわりますが、 直前に入力された文字はどうやって調べられますか。 文字入力はたいがい、コマンドself-insert-commandになってしまうので どの文字が入力されたかを知ることができません。
>>103 > 直前に実行したコマンドは変数 *last-command* でわりますが、
> 直前に入力された文字はどうやって調べられますか。
*last-command-char*
105 :
103 :05/01/22 18:38:05 ID:Y0D45pjI
>>104 ありがとうございます。それでいけそうです。
>>102 > 外部アプリからxyzzycli.exeを呼んで起動済みのxyzzyでファイルを開きます。
> コマンドラインからファイル名を渡します。
> この際、バッファ(ファイル?)の文字コードを必ずutf8nとして開きたいのです。
この説明だとよく分かります。
xyzzycli.exe FILENAME -e "(revert-buffer *encoding-utf8n*)"
でどうでしょう。もしくは
xyzzycli.exe -e "(setq *expected-fileio-encoding* *encoding-utf8n*)" FILENAME -e "(setq *expected-fileio-encoding* *encoding-auto*)"
とか。
107 :
103 :05/01/22 18:47:04 ID:Y0D45pjI
>>104 直前のキーは *last-command-char* でとってこれるのですが、2つ前のキーってとってこれますか?
やりたいことは、あるキーを押して関数を呼び出したときに、その直前のキーによって動作を変えたいんです。
でも *last-command-char* だと、関数を呼び出したときのキーをとってきてしまい、その直前のキーがとってこれないんです。
(global-set-key #\C-z 'my-func) ;; C-z を押すと呼び出される
(defun my-func ()
(interactive "p")
(if (eq *last-command-char* #\{ ) ;; *last-command-char* は必ず#\C-z になるので、
(insert "foo") ;; "foo" が挿入されることはない
(insert "bar")))
>>107 > 直前のキーは *last-command-char* でとってこれるのですが、2つ前のキーってとってこれますか?
(char (get-recent-keys) (- (length (get-recent-keys)) 2))
とか?
109 :
103 :05/01/22 19:06:38 ID:Y0D45pjI
>>108 それでした。ありがとう。
で、やりたかったことはこんなこと。
;;
;; 改行する直前にタイプしたキーが '{' なら、自動的に '}' を補う
;;
(defun my-c-newline-and-indent (&optional (arg 1))
(interactive "p")
(let* ((keys (get-recent-keys)) ; is vector (0..127)
(len (length keys)) ; = 128
(key (svref keys (- len 2)))) ; = keys[len-2] (keys[len-1] == #\C-j)
(if (eq key #\{ )
(progn
(newline 2)
(insert "}")
(c-indent-line)
(previous-line)
(c-indent-line)
)
(c-newline-and-indent arg)
)))
(global-set-key #\C-j 'my-c-newline-and-indent)
>>106 C:\Dev\xyzzy\xyzzycli.exe %t -e "(revert-buffer *encoding-utf8n*)"
として見たところ(%tは呼び出し側のマクロで、ファイル名になる)
>CALL STACK 8: (system:|"-reader| #<string-input stream 50860284> #\")
>CALL STACK 7: (read #<string-input stream 50860284> t nil)
>CALL STACK 6: (system:*byte-code ...)
>CALL STACK 5: (read-from-string "\"(revert-buffer")
>CALL STACK 4: (system:*byte-code ...)
>CALL STACK 3: (editor::process-command-line-1 "C:\\dev\\firefox-1.0" nil)
>CALL STACK 2: (system:*byte-code ...)
>CALL STACK 1: (editor::*xyzzycli-helper "C:\\dev\\firefox-1.0" ("C:\\data\\tmp\\mozex\\mozex.textarea.02385fdb6b2ee69037c26bc8124d3b18.txt" "-e" "\"(revert-buffer" ...))
Line 1: 文字列が終了していません
となって上手くいきません。
二番目も同様のエラーになってしまいます。
>>110 xyzzy のバージョンは?
Version 0.2.2.232 でコマンドラインの処理が変わっているみたいなので
一応聞いておきます。
>>111 最新版の0.2.2.233です。
Firefoxの拡張機能mozexというのからxyzzycli.exeを呼ぶのですが、
C:\Dev\xyzzy\xyzzycli.exe -m html+-mode %t
これまではこんな感じで、一応html+-modeでは開けてます。
>>112 むぅ〜、不思議ですね。
それじゃあ、
(defun revert-buffer-utf8n ()
(revert-buffer *encoding-utf8n*))
こんな関数を定義しておいて、
xyzzycli.exe %t -f revert-buffer-utf8n
ではどうでしょう。
>>113 それを.xyzzyで定義しておいて
C:\Dev\xyzzy\xyzzycli.exe -m html+-mode %t -f revert-buffer-utf8n
で成功しました!
どうもありがとうです。
editor::migemo-closeってやたら時間かかるけど、 みんな普通に実行してるの? *kill-xyzzy-hook*からはずしても別に大丈夫みたいだが
>>115 え?あれってしなくてもよかったの?終了するときに
めっさ時間かかるのがウザかったんだよね。
で、本当にはずしていいの?どうやってはずすの?
migemo使ってないけど、普通にhookから外すならdelete-hook
>>117 本当にはずしていいかはわからんけど、今まで特に問題はない
ようわからんけど、単語辞書を更新したときは実行しないといかん気がする
.xyzzy
;migemo
(require "migemo")
(migemo-toggle t)
(editor::migemo-open) ;これを実行したときにhookに入るのでここで呼んでみる
(delete-hook '*kill-xyzzy-hook* 'editor::migemo-close)
(defun show-function-name () (save-excursion (if (scan-buffer "function[ \t]+\\([^ \t\n(]+\\)" :regexp t :reverse t) (message "~A" (match-string 1))))) (add-hook '*post-command-hook* 'show-function-name) を .xyzzy に追加すると、Ctrl 押しながらドラッグの矩形がおかしくなります。 例えば、上の lisp の 1 行の (de にマウスカーソルを合わせ、Ctrl を押しながら 右に移動すると 3 行目の )" までしか選べないのです。 原因、分かる方いませんか?
>>120 マウスカーソルで選択範囲を決定した後で
キャレットが移動しているからキャレットでの範囲指定が優先されている
ということなのかなぁ〜
正直俺には分かりません。解説は識者にお任せします。
ただ、問題の解決には以下で OK じゃないでしょうか。
(defun show-function-name ()
(unless (pre-selection-p)
(save-excursion
(if (scan-buffer "function[ \t]+\\([^ \t\n(]+\\)" :regexp t :reverse t)
(message "~A" (match-string 1))))))
(add-hook '*post-command-hook* 'show-function-name)
リストから重複した要素を取り除くうまい方法ってないでしょうか? (hoge boo hoge foo) -> (hoge boo foo) って具合に。 今は (setq hogehoge '(hoge boo hoge foo)) (let ((lst (list (pop hogehoge)))) (while hogehoge (if (member (car hogehoge) lst :test #'equal) (setq hogehoge (cdr hogehoge)) (setq lst (cons (pop hogehoge) lst)))) (reverse lst)) こんな感じで対処してるんですが、リストが長くなると遅すぎて困っとります。 関数あるかとぐぐったが、ぐぐりきれず。 ヒントだけでも教えてプリーズ。
>>123 remove-duplicates とか。
125 :
123 :05/01/29 13:34:59 ID:I7fmCqv+
どーもありがとうございます。 今から試してみます。
126 :
123 :05/01/29 14:23:11 ID:I7fmCqv+
途中報告。 要素が10000のリストを使って 123で書いたものと124で教えてもらったものとで時間計ってみました。 123 -> 約8.7秒 124 -> 約1.0秒 (数年前のおんぼろマシンで比較) ぜんぜんちゃいます。ほんとありがとう。 ただ、ならびが保証されていないっつーか、 元のリストの並び順を維持したまま、2度目以降に現れる要素を削除したかったので、 もうちょい、いじってみます。
関数化してcompileしてやれば>123のでも十分な速度が出るんじゃないかな。
>>126 そういうことなら
>>124 を見る前に考えていたコードが
役に立つ余地があるかもなので貼っときます。
(setq hogehoge '(hoge boo hoge foo))
(let ((new-list nil))
(dolist (x hogehoge)
(pushnew x new-list :test #'equal))
(reverse new-list))
>>126 こういうこと?
(remove-duplicates '(hoge boo hoge foo))
=> (boo hoge foo)
(remove-duplicates '(hoge boo hoge foo) :from-end t)
=> (hoge boo foo)
なんか凄いことになってますね! 久しぶりにxyzzyをインストールしてみます!!
131 :
123 :05/01/29 15:19:18 ID:I7fmCqv+
おお、おいらがいじってる間にたくさんのヒントっつーかそのものずばりを
いただいちゃってありがとーございます。
試してみたところ
>>127 関数化してcompileしてやれば>123のでも十分な速度が出るんじゃないかな。
これ最強。信じられんほど速くなった。
>>128 で教えてもらったコードと組み合わせてかなりご機嫌っす。
>>129 まさにこれでした。説明下手ですまんです。
これはお手軽でそこそこ速いし、応用利きそう。
さくっと書き流すときに重宝させていただきます。
めちゃめちゃへつらいながらありがとうございますです。
>>131 128さんとやっていることは同じですが
dolist より mapc mapcar の方が速いような気がします。
(setq hogehoge '(hoge boo hoge foo))
(let ((new-list nil))
(mapc #'(lambda (x)
(pushnew x new-list :test #'equal))
hogehoge)
(reverse new-list))
>>131 reverse と nreverse
remove-duplicates と delete-duplicates
の違いを調べてみてはどうでしょう.
>>132 lisp は map 系の関数のほうがループ系の関数より効率がいいらしいですね。
c に慣れてる人にはやってることがわかりづらいですが。
135 :
123 :05/01/30 00:13:37 ID:AMpBt6oq
面白話ありがとー。とても参考になります。
>>133 delete系とremove系の違いよくわからんです。
『delete系はリストを「破壊的に操作する」ので「効率がいい」』のようなことを見ましたが、
前半部分は使い道がよくわからん。後半部分は何の「効率がいい」のかよくわからん。わからんばっかり。
後半部分はなんとなく、処理が速いのかなーと思ったんすが、
あらためて処理時間計ってみると変わらない、か、若干遅いくらい。
(setq hoge nil)
(dotimes (x 10000)
(setq hoge (cons (random 1000) hoge)))
(delete-duplicates hoge)=>37.053秒
(remove-duplicates hoge)=>36.993秒
タイマーは適当につくったもんなんであまり当てにならんとこもあるけど、体感的に違いなしでした。
使い道はおいらが未熟で気づかないだけなんだろーけど、なんの効率がいいのかは気になるる。
136 :
133 :05/01/30 00:21:11 ID:h18GbuqK
>>135 (remove-duplicates sequence) = (delete-duplicates (copy-seq sequence))
remove〜 : 一度入力となるシーケンスを全てコピーしてから delete〜 を呼ぶ.
137 :
123 :05/01/30 00:46:26 ID:AMpBt6oq
解説どーも。誤差の範囲か、遅かったのは。 慌ててgrepで確認しました。へんなことする前に確認しろって話です。 すんませんです。いやあ、でも楽しかったです。ありがとう と思っていたら132の書き込みを見落としていたことを発見。 寝よーと思っていたけど、もうちょっと、遊んでからにしやす。 眠いけど、ありがとう。
138 :
133 :05/01/30 00:54:12 ID:h18GbuqK
>>137 grepで確認するのもいいけど,タグファイルを生成しとくのも言いと思いますよ.
xyzzyの問題ではないのかもしれませんが、 ほかのマシン(Linux等)のドライブをマウントして編集&保存すると、 パーミッションに実行権限がついてしまうのですが、 これを回避(パーミッションを変更しない)ことはできますでしょうか?
>>139 さんざん既出だけど
(setq backup-by-copying :remote)
または
(setq backup-by-copying t)
>>121 おー、OKです。ありがとうございました。
142 :
名無し~3.EXE :05/02/02 19:02:30 ID:9jDzJ5E8
xyzzyでLispモードを使用する時、Lispの予約語の インテリセンスってどうやればよいのでしょうか?
インテリセンスというのをあんまりよくわかってないんだけど、 M-TAB でそれらしいことはできるような気が。 というかLispで予約語って何を指すんでしょう。
>>143 すいません、予約語じゃないですね。
defunとかdefstructとかのキーワードに対して入力補完がしたいんです
ややこしい書き方でごめんなさい
>>144 M-TABは期待するものとは違うんですか?
リファレンスの *do-completion の項に WORD : nilでなければ単語ごとの補完 とありますが、単語ごとの補完とはなんでしょうか? いろいろ試してみたのですが違いがわかりません。
>>146 > 単語ごとの補完とはなんでしょうか?
M-x find-file 時の SPC での補完とか。
"_" 混じりの長い名前のファイルを作っておいて、
M-x find-file でそのファイル名を TAB で補完したり、
SPC で補完してみたりすると違いが分かると思います。
>>147 そういうことでしたか。わかりました。
返り値も確かにそうなってますね。
ありがとうございました。
>>145 M-x で出来る入力保補完ってユーザ定義されたキーワード
のみが対称なことないですか?
(def
とかでM-xしてもキーワードの候補が出てこないです。
なんで、なんか方法ないかなと思った次第です。
>>149 もしくは C-M-i (Ctrl + Alt + i) とか。
# オレはこのキーの組み合わせを使ってます。
M-x なんて全く話題に上がっていないと思うんだけど、
敢えて使うのなら
M-x lisp-complete-symbol
ですね。
>>151 ありがとうございます
意図したものと少し異なりますが、これで十分事足ります
xyzzyって2年くらい前から使ってるんだけど 巨大ファイル閲覧と罫線モードしか使ってなかった。 このスレに来るまでemacsのパチモンだと思っていた。 大きな間違いでした。 本格的なcommon lisp処理系というのが実体ですね!
>>153 うん, common lisp としてかなり使える.
でも, CLOS がないのが残念.
155 :
132 :05/02/04 01:40:34 ID:9c8ukEY7
eval-buffer をしてテストしていたので勘違いをしていたのですが、 こちらのボロパソコンでは、以下のようにバイトコンパイルをすると mapc より dolist の方が速いようです。嘘言ってすみませんでした。 (defun test1 () (interactive) (let (tick tmplist) (dotimes (x 100000) (push x tmplist)) (setq tick (get-internal-real-time)) (mapc #'(lambda (y)) tmplist) (message (format nil "~A" (- (get-internal-real-time) tick))))) (defun test2 () (interactive) (let (tick tmplist) (dotimes (x 100000) (push x tmplist)) (setq tick (get-internal-real-time)) (dolist (y tmplist)) (message (format nil "~A" (- (get-internal-real-time) tick))))) コンパイル済み test1 >167〜273 test2 >67〜71 コンパイル無し test1 >251〜399 test2 >1344〜1497
>>155 なんだと!
がんばって mapc になおしちゃったじゃないか.
30個もあるよ, mapc
あの努力はなんだったんだ…
>>155 関数呼び出しのオーバーヘッドの分かなあ。
まあ、ぶっちゃけ気にするほどの違いはない感じがする。
158 :
132 :05/02/04 07:15:54 ID:5XytFJC9
>>156 すいません。
コンパイルせずに計測してみて mapc の方が速いと確信してましたので..
こちらも www-mode を mapc で書き換えたことなどが全て無駄になりました。(^_^;
しかし、www-mode を書き換えてコンパイルして気づいたのでそれは良かったです。
ホントすいませんでした。m(_ _)m
ちょっと実験してみた。 mapcとかdolistの行をそれぞれ (mapc #'code-char tmplist) (dolist (y tmplist) (code-char y)) にしてやるとtest1の方が速い。 どっちが速いかは場合によるってことかな?
皆さんコピーとか貼り付けのショートカットデフォルトで使ってますか? Windows風にカスタマイズして使っていますか? デフォルトで覚えたいけど、入がWindowsなのでなかなか体が覚えないんですよ。 無理してxyzzy使うな?そんなこと言わないでorz
Kill/YankはC-wとC-yで、コピー&ペーストはC-InsertとM-Insertで問題なし。
訂正 ×M-Insert ○S-Insert
もともとEmacs使ってたからキーバインドは殆どいじってないよ。
もちろんデフォルトで使ってる。 でもEmacsもそうだけど、標準的な日本語キーボードで使う場合、 CapsキーをCtrlキーにしないとあのキーバインドのありがたさはわからんと思う。
>>155 >>157 も指摘しているとおり、test1 では lambda 関数を呼び出してるのに対して
test2 では何もしていないからじゃないかな。
たぶん
>>159 みたいに純粋に同じことをすると mapc の方が速いんだと思う。
dvorak配列使ってるからキーバインドなんてめちゃくちゃですよ
168 :
132 :05/02/05 09:28:23 ID:sA8IWegx
>>159 >>166 コメントどもです。
技量不足でうまく説明できなくて申し訳ないんですが、
バイトコンパイルをした場合には、132のコードのように mapc、lambda
を使ってリストの各要素に対して処理をするよりも、128さんの
コードのように dolist を使った方が速い(mapc は lambda の分遅れる)。
159さんの例のようにリストの全要素に対して一括して処理をする場合
には、mapc を使った方が速いということなんじゃないかと思います。
emacs風でないとまともに使えません 使い始めて一年近いが、未だにセレクションの使い方がさっぱりわからない rectangleが使いこなせたら便利だろうなと思うこともある
>>169 (defun rectangle-help ()
(interactive)
(popup-string
"------------------------------------
rectangle
C-x r d delete-rectangle
C-x r k kill-rectangle
C-x r o open-rectangle
C-x r t string-rectangle
C-x r y yank-rectangle
C-x r w copy-rectangle"
(point)))
(global-set-key '(#\C-x #\r #\h) 'rectangle-help)
>>170 おお、ありがとう
popup-stringでヘルプを表示するのっていいね
他にもいろいろやってみることにするよ
hello guys 最近、Java script 書いてるんだけど、C++モードだと正規表現書いたあとの インデントが正常に動作しなくなるのよね。 Java scriptモードがあるのは、あんまり期待してないんだけど、 Cモードに依存する部分って、完全にcommon lisp で書かれてるんだっけ? lispで書かれてるなら、修正できるかなと思うんだけど。
前に、browserex使った2ch-mode用のリンク先の画像ビューワ作ってみたヤシなんだが、ごにょごにょと拡張して、縮小して表示するようにしてみた。
あと、o使ってブラウザで開こうとしてもプレビューされてしまうのも修正してみた。
ttp://data.uploda.net/anonymous/etc1/dat5/upload11305.txt かなりオリジナルを流用してますです。。。ごめんなさいorz
#ほんの少し関数いじるだけなんだけどな。もっとスマートにできないかな。
#ビューワ用のキーバインド作ったほうが楽だったかもと思った。
#例によって正規表現は滅茶苦茶
現在のバッファの漢字コードを変更して読み直しみたいな関数を作ってて、 漢字コードをポップアップメニューから選びたかったのでこんな感じに書いたんですが、 (defun revert-buffer-encoding-popup () (interactive) (let ((menu (create-popup-menu))) (add-menu-item menu nil "auto" #'(lambda() (interactive) (revert-buffer *encoding-auto*))) (add-menu-item menu nil "sjis" #'(lambda() (interactive) (revert-buffer *encoding-sjis*))) (add-menu-item menu nil "euc-jp" #'(lambda() (interactive) (revert-buffer *encoding-euc-jp*))) (track-popup-menu menu))) なんか無駄が多いような気がします。リストを使えばもっとスマートに 書けると思うんですが、どうなんでしょうか。
こんな感じかなあ。 (defun revert-buffer-encoding-popup2 () (interactive) (let ((menu (create-popup-menu))) (mapc #'(lambda (x) (add-menu-item menu nil (car x) #'(lambda () (interactive) (revert-buffer (cdr x))))) '(("auto" . *encoding-auto*) ("sjis" . *encoding-sjis*) ("euc-jp" . *encoding-euc-jp*))) (track-popup-menu menu)))
うわっ!? 負けた。コードもほぼ同じ。 こんなかな (defun revert-buffer-encoding-popup () (interactive) (let ((menu (create-popup-menu)) (encoding-list (list *encoding-auto* *encoding-sjis* *encoding-euc-jp*))) (mapcar #'(lambda (x) (add-menu-item menu nil (char-encoding-name x) #'(lambda () (interactive) (revert-buffer x)))) encoding-list) (track-popup-menu menu))) ; 補完をpopupと勘違いして作った (defun my-revert-buffer-encoding () (interactive) (let ((*popup-completion-list-default* :always)) (call-interactively 'my-revert-buffer-encoding-1))) (defun my-revert-buffer-encoding-1 (encoding) (interactive "zEncoding: ") (revert-buffer encoding))
>>177-178 ありがとうございます。なるほど、(mapc)とかが使えるんですね。
(char-encoding-name)も、むだのない感じでいいです。さっそく組み込んでみます。
>>175 全然VerUPしないけ不満の出にくい、common lispに準対応したエディタだよねぇ
177動かないんだけど、なんで?
183 :
177 :05/02/07 18:02:18 ID:2e+AqRvO
>>182 すいません。きちんと確認してませんでした。
以下修正したもの。
(defun revert-buffer-encoding-popup2 ()
(interactive)
(let ((menu (create-popup-menu)))
(mapc #'(lambda (x)
(add-menu-item menu nil (car x)
#'(lambda ()
(interactive)
(revert-buffer (eval (cdr x)))))) ; <- eval 追加
'(("auto" . *encoding-auto*)
("sjis" . *encoding-sjis*)
("euc-jp" . *encoding-euc-jp*)))
(track-popup-menu menu)))
この辺の値の評価のされ方はあまりよく理解してません。
ていうか
>>178 氏のコードのほうがスマートですね。
char-encoding-name は知りませんでした。
184 :
182 :05/02/07 18:41:03 ID:OGuSBw0n
>>177 動きました。ありがとう!
自分でコード書けないへたれなんで、お手数かけて済みません。
メニューの文字列を自分で定義できるのがいいので、
こちらを使わせていただきます。
176さんも178さんもありがとう。
おかげでファイルの開きなおしがすごく楽になりました。
>>183 下のでも可
(defun revert-buffer-encoding-popup2 ()
(interactive)
(let ((menu (create-popup-menu)))
(mapc #'(lambda (x)
(add-menu-item menu nil (car x)
#'(lambda ()
(interactive)
(revert-buffer (cdr x)))))
`(("auto" . ,*encoding-auto*)
("sjis" . ,*encoding-sjis*)
("euc-jp" . ,*encoding-euc-jp*)))
(track-popup-menu menu)))
track-popup-menu って C-n/C-p で移動できなくてやだね...
popup-list ならできるのに
186 :
名無し~3.EXE :05/02/08 11:40:20 ID:igW4KQcB
どなたかお助けください。 php-mode を Windows 風キーバインドで利用するには どうすれば良いでしょうか? よろしくお願いします。 現在の .xyzzy の内容は以下の通りで、Ctrl+Insert が コピーになっております。 (load-library "Gates") (require "php-mode") (require "php-misc") (pushnew '("\\.php$" . php-mode) *auto-mode-alist* :test 'equal) (pushnew '("\\.inc$" . php-mode) *auto-mode-alist* :test 'equal)
>>186 nazokingさんのmyphp-modeを使ってらっしゃいます?
最後に以下を追加。
(define-key ed::*php-mode-map* '#\C-c 'copy-selection-to-clipboard)
いくつかのキーバインドが死ぬかもしれません。
それらは別のキーにバインドしなおしてください。
>>187 追記
php-misc.l に
(define-key *php-mode-map* '(#\C-c #\s) 'php-unit-create-skelton)
があるため、のようですね。
最初の疑問は気にしないでください。
189 :
186 :05/02/08 15:02:46 ID:igW4KQcB
>>190 パズルですね.計算量的に膨大になってしまうのは仕方ないと思います.
よく分かってないですが,これ,ペグXを動かすしてからペグYを動かすのとYを動かしてXを動かしても
同じ状態になると思いますけど,その時って同じ計算を繰り返しているんでしょうか?
もしそうなら,それをさけると計算量はかなり減るはずです.
MLに変なのが紛れ込んでない?
193 :
名無し~3.EXE :05/02/13 23:55:18 ID:62HaP2fm
xyzzyにMLなんてあったっけ
>190 少しは手紙の裏の計算したほうがいいよ。
どんな計算?
チラシの裏といえば日記を書くものらしいが、 「封筒裏の計算」というのはちょこっと 計算することを いうんだそうだ。 "back of envelope"でぐぐれ。
ちょっと計算すれば膨大な探索になるだろうっちゅうことですか
膨大だとあいまいすぎるけど、エイヤ!って適当な計算でも 数分なのか数時間なのか数万時間かくらいの予測はできるだろう、と。
200 :
085 :05/02/14 22:01:45 ID:WqKm6dIz
ホスィ!って言ってもらいたいんじゃないの、きっと
ホスィ
ホッシュー
205 :
085 :05/02/15 07:17:17 ID:8bfB5Q2M
206 :
名無し~3.EXE :05/02/15 07:53:47 ID:ZDpgZqHU
なんか起動したら設定全てdだ(涙
xyzzyの入門書の話ってどうなったの?
あったねーそういう話
そんな話もあ〜ったねと〜
にっきを拝見するに、すすんでるふうじゃない?
花鳥を初めて使ってみました。 これはいいですね! ツールバーも付けてみました。 platexでコンパイルすると2分割されて結果が下の バッファにでますが、これを閉じるのはどうやるんですか?
かたじけない >212
テキストエディタxyzzyの読み方だけど亀仙人でいいよね よし決定
215 :
名無し~3.EXE :05/02/21 23:25:36 ID:lgxTrwIi
カレントバッファの各行末の空白文字を削除する関数とかってありますか?
217 :
名無し~3.EXE :05/02/22 00:58:12 ID:z7bi3atq
Linuxに移ってすっかりEmacsに浮気しとったんですが、舞い戻って来た。 xyzzyってwine上でも一応動きますね。 今気付いたんで、いろいろ試してるとこなんですが。 ちなみにfilerから抜けたり、byte-compileすると落っこちます。 scratchでコソコソ遊んどる分には問題ないみたい。 例によって二回目以降の起動はほぼ一瞬で、Emacsより格段早かったり。 板違い気味なんでageて良いものかどうか... とか言いながらLinux(SUSE9.2)+wine+xyzzy+2ch-modeで記念age
>>217 すげー。そんなこともできんのかよ。もっと詳細キボン。
むむー、portsからwine入れそうになっちまったぞw
220 :
217 :05/02/22 07:49:31 ID:z7bi3atq
経過報告です <動作が確認された機能> ・2ch-mode おそらく完動。不具合全く確認されず。 ・www-mode おそらく完動。これも不具合確認されず。 ・kamail おそらく完動。送信、受信、問題なく成功。 mailfileのarchive等も、 ArchiverDllをしかるべき場所に置くことで問題なく動作。 hotmailもhotwaydが作動しているなら取得可能。 IMAPは試してません。 ・outline-tree おそらく完動。TreeView.dllも問題なく動作。 ・migemo おそらく完動。migemo.dllも問題なく動作。 ・netinstaller おそらく完動。要ArchiverDll ・その他いろいろ...
221 :
217 :05/02/22 07:53:45 ID:z7bi3atq
<未動作、不具合が確認された機能> ・browser.dll関連 (browser.l browserex.l rss.l 等々) wineでexplorerが動く環境であれば、あるいは...。 ・filer関連 (mini-bufferからdirectoryを開く等) 主な不具合はfilerから抜けるときに落ちるというだけだが、 これが自分には一番痛い。 mini-bufferからもmount越しのfileは開いてくれない。 (pathの補完はしてくれる) 落ちる際、MS Visual C++のruntimeがどうのとか言っているので、 それが稼動すれば、あるいは...。 filerそのものは、おそらく完動。 コピー、移動、圧縮、展開、textfileのpreview、等々問題無し。 compileで落ちると思っていたのは私の勘違いでした。単にcompileするfileを 尋ねられた時にdirectoryを開いていたためでした。mini-bufferで入力を済ま せれば、これも問題なくcompileできます。 ざっと試してみただけなので、細かいところまで定かではありませんが、どう やらほとんど完璧に動作しているようです。Linux上でxyzzyを動かす利点が果 してどれほどあるのか疑問ですが、なんとなく感動したので。 長文、駄文、平にご容赦。とりあえずご報告まで。 screenshotなんか別にいらんよね。
222 :
217 :05/02/22 08:11:02 ID:z7bi3atq
versionがすっかり抜けとった。 SUSE LINUX 9.2 (kernel 2.6.8) wine 20050111 xyzzy 0.2.2.233 2ch-mode 0.0.1.2 kamail 0.0.2.7 ...以下略... でした。
>217 gecko版browser.dllは使えないのかな。 というよりも移植自体がそんなにハードル高くなさそうだね
>>217 Wine 20050111はIEが動かないバージョンだから他のバージョンにして
IE入れればbrowser.dllも動くようになるよ。Wine 20050211で動作確認済み。
ファイラで最後に開いたディレクトリを保持する事はできませんか?
>>225 起動しなおさない間はそうなってるよね?
起動しなおした時の話? 詳細きぼん
wine上でのxyzzyで、call-process等でunixのコマンドを実行できますか? C-x & ls とか
>>226 さん
激しく適当な質問をしてすいません。
改めて見ると我ながら間抜けすぎて泣けてきます。
find-file した時に最初に表示されるディレクトリを
ファイラで最後に開いたディレクトリにしたいのです。
(存在する全てのバッファで)
現在の状態
C-xC-f
Find File: $HOME or バッファに読み込んだファイルがあるディレクトリ
やりたい事は
C-xC-f
Find File: ファイラで最後に開いたディレクトリ
>>227 さん
ありがとうございます。レジスタとフック使ってやればいいのですね。
チャレンジしてみます。
>>230 227 のリンク先のコードに
(defun find-file (filename &optional encoding nomsg)
(interactive "lFind file: \n0zEncoding: " :title0 "Find file"
:default0 *filer-primary-directory*)
(long-operation
(if (listp filename)
(dolist (file filename t)
(find-file file encoding nomsg))
(set-buffer (ed::find-file-internal filename nil encoding nil nomsg)))))
を加えればいけるかも。
>>230 > やりたい事は
> C-xC-f
> Find File: ファイラで最後に開いたディレクトリ
やりたいことがそういうことなら変数名くらいしか参考にならないよ
あのー、ファイラのフォントを大きくする方法はありませんか。
235 :
217 :05/02/23 01:47:21 ID:VFdUwiQM
>>228 それを試してなかったことに後々気が付いてやってみたんですが...
うーん、そうそうすんなりとは行かんもんやね。
なんかxyzzyenv.exeが一枚噛んでる?
無理っぽいけど、そのうちprocess.lをじっくり眺めていじってみます。
shell-ext.lの作者さんとかならなんとかしてくれるんやないやろか。
ちなみにwine付属のwcmd.exe.soというcmd.exeモドキなら動きました。
>>223 単純にdll置いただけでは少なくとも動かなかったです。
>>224 なんかIE入れるのも、それだけのためにwineのversion上げるのも大義でし
て...。動くのが判っただけで十分です、どうもでした。
>>231 地味ぃ〜なやつでよかったら、そのうちね。
xyzzyを興味本位で試してみた。 Windows坊な私はかなりつかいずらいけどいろいろおもしろい。 使いこなせるようになりたいけどキーバインドを覚えるのが大変です。 日常的に使ってればそのうち覚えてくるかなー。 でも四六時中プログラム書いているわけでもないので使う機会があまりない。 何か日常的な作業でxyzzyのお勧め使い道はないですか?(例:ブラウザ、メーラ) でもメーラはBecky使ってるからちょっと簡便かな^^; ブラウザはwww-mode入れればいいのだろうか・・・ browser.dllとか入れないといけないものなのかよくわかりません。
ここで聞くならまぁ普通に2ch-mode。
>>236 > 何か日常的な作業でxyzzyのお勧め使い道はないですか?
自分は xyzzy の設定・カスタマイズが最もよくやる
作業ですw
>>236 ndmacro や migemo に驚いてみるとか
>つかいずらい こういう誤字を指摘するlispを書いてみるとか
>>236 無理に慣れなくても。
emacsを覚えざるを得なかった人向けの品でしょう。
五目並べとか。
日記つけるとか
昔のカレンダーを眺めるとか (1582年10月あたりがお勧め)
>244 ワロタ
246 :
228 :05/02/23 12:16:19 ID:u7ZFJear
>>235 > 無理っぽいけど、そのうちprocess.lをじっくり眺めていじってみます。
> なんかxyzzyenv.exeが一枚噛んでる?
process.l は関係ないと思います.
wineのバージョンアップで解決って言うのが一番良いですが,
xyzzyenv.cc か process.cc の修正が必要なのかもしれませんね.
> ちなみにwine付属のwcmd.exe.soというcmd.exeモドキなら動きました。
それから unix のコマンド実行可能ですか?
# しかし妙な一致をして焦りました. 228=shell-extの作者
247 :
名無し~3.EXE :05/02/23 17:05:49 ID:GPLjZvPO
今でもWine内からLinuxネイティブなブラウザを呼ぶwinebrowserっていう プログラムがあるんでラッパをかぶせれば色々できそうな予感。
248 :
名無し~3.EXE :05/02/23 21:24:19 ID:hBnaBSzK
アー、グレゴリオ暦って1582年からなのか てっきりみんな信長大好きなのかと思ってしまった
M-x calendar
こういう馬鹿はちゃんと鎖に繋いでおいて欲しい・・・ 877 名前:名無しさん@お腹いっぱい。[sage] 投稿日:05/02/22(火) 00:54:48 ID:kPn/1etL xyzzy使ってるとemacsがヘボく思えてくるな
254 :
217 :05/02/24 06:43:42 ID:WmV9jITg
>>228 なんと本人様でしたか。
御見逸れした上、見当外れなディアクノーゼで恐縮の至りです。
> > ちなみにwine付属のwcmd.exe.soというcmd.exeモドキなら動きました。
> それから unix のコマンド実行可能ですか?
駄目みたいです。
cmd.exeから「毛の抜けた」ような組み込みのcommandしか受けつけてくれません。
これだけ動作するのだって大変なことだとは思いますが、あんまり意味ないかな。
あくまで「おまけ」程度のものということで。
"not emulator"とは言うものの、
Windows環境を結局は隔離して作り上げようというプロジェクトみたいだから、
Unix toolsとのシームレスな連携というのはなかなか難しいんですかね。
まあ、*nix上で動作の望まれる殆どのwinアプリが
連携など望んでもいなければ必要としてもいないようだから、
そんなことしても無意味といえば無意味なんですが。
今後にゆるやかに期待しつつ、
20050211版にしてもunixのコマンドは動かなかったんでsageときます。
255 :
名無し~3.EXE :05/02/24 07:15:29 ID:VERYN9E1
256 :
228 :05/02/24 08:02:07 ID:CspRcizz
>>254 > > それから unix のコマンド実行可能ですか?
> 駄目みたいです。
駄目ですか.すごく残念です.
実は本分のほうで,*nix のとあるCUIなツールをcygwin でコンパイルし,
xyzzy をそのツールのフロントエンド+αとして,ここ一年ほど実装してまいりました.
ようやく形になるものが出来てきたところで,プラットフォームの問題がでてきて困っていたのです.
これで一気に解決かと思いましたが,そうは甘くないみたいですね.
> 20050211版にしてもunixのコマンドは動かなかったんでsageときます。
わざわざ試していただき恐縮です.ありがとうございました.
257 :
217 :05/02/24 10:48:54 ID:WmV9jITg
258 :
228 :05/02/24 11:03:22 ID:CspRcizz
>>257 shell-extの作者様
すみません. shell-ext は自分のコードじゃなかったです.orz
自分で勝手に改造して使っていたので,自作のものと勘違いしました.
あぁ,はずかしぃ...
>>250 俺漏れもヽ(´ー`)ノ
>>251 ESC ESC と入力して、ミニバッファにカーソルがいったら
(calendar 1582)
メニューを英語化してるんですが、「ビュー」>「ツールバー」の -標準 -バッファ -フレーム とかいうサブメニューはどこからでてきてるんでしょうか?ここだけ変えられません。
>>260 $XYZZY/lisp ディレクトリを「標準(&S)」「バッファ(&B)」「フレーム(&F)」で探してみて。
>>260 できれば wiki にアップよろしく.
共通設定の英語化完了しているんだけど,wiki のとは
作り方の方針が違い,アップしてません.
それでも需要ありますかね?
特定のキーバインドを変更するのではなく無効にする、 あるいは global-set-key のように元のキーバインドを 残さずに、完全に他のものと入れ替えてしまうには どうしたらいいでしょうか? 具体的には、delete-blank-lines (C-x C-o) はまったく 使わない上に、フレーム間を C-x o で移動する際に よく間違えて押してしまうことがあって困っています。 よろしくお願いします。
266 :
260 :05/02/24 22:27:34 ID:5ZoBHZ5D
>>261 いや、grepしても見つからないのです。どこなの?!
あと、できたらキーボードショートカットのモディファイやキーの表示も
Ctrl -> C
にしたいです。
Beginning of defun ESC Ctrl+a
とか長すぎるでしょ
>>262 wikiって行ったことないけど完成したら僕もアップします
>>266 え,wikiにあるlocale.l 使ってないの?
それじゃぁ,ドイツ語化しようとしたときは
またコードを直接編集しなければいけないから,よくないでしょ.
他国語化も視野に入れた,英語化で行こうよ.
>>266 > いや、grepしても見つからないのです。どこなの?!
そんなはずは無いと思うんだけどなぁ???
cmdbar.lとpframe.l
269 :
260 :05/02/25 01:38:45 ID:sH2SGm9t
>>269 なるほど、該当箇所を変更しても変わらないって話ですか。
確かにおっしゃるとおり。
バイトコンパイルはやってあるでしょうから
一回.xyzzy.historyを消してみてください。
ちゃんと変わりました。
カレントバッファ以外をすべて閉じるといった操作を キーボードから行いたいのですが どうすればいいのでしょうか? バッファタブの右クリックメニューを拡張し、マウスではできるのですが ↓のようにしてみてもうまく動作してくれません…。 ;; これ以外を閉じる (defun mybb-close-other-buffers () (interactive) (let ((buf0 *buffer-bar-context-menu-buffer*)) (dolist (buffer (buffer-list)) (unless (or (eq buffer buf0) (string= (buffer-name buffer) "*scratch*")) (kill-buffer buffer))))) (global-set-key #\C-1 'mybb-close-other-buffers)
>>271 *buffer-bar-context-menu-buffer* → (selected-buffer)
273 :
271 :05/02/25 07:21:44 ID:O5VgwqOB
>>272 おおっありがとうございます!
無事にキーボードから操作できるようになりました!
これでマウスジェスチャーにも登録できます(・∀・)
むしろ作者に許可もらって英語版を欧州人向けに公開したらどうなんですかね?
>>274 それなら locale.l を xyzzy の一部として組み込んだものを作った方がいいと思う.
ただ,xyzzy 本体に埋め込んである日本語や日本語フォントを locale.l で指定する
ためには,最低限の変数,関数は xyzzy内部で定義することになるだろうね.
なかなかそこまで行動を起こせる人がいないのが問題だけど.
276 :
260 :05/02/25 19:17:04 ID:Asckj+Ml
>>270 (;゚∀゚)=3 デキタ! シランカッタ!
Wikiのはどこまで本気なのかよく分からんからすごく手伝いにくい。 MLで亀井さんとかに相談したらもっといい方法がありそうだし。 # あのまま連想配列でやるのかなぁ〜 # hashにした方がよさそうにみえるんだが。 とりあえず、英訳だけしてくれってほうがまだ手伝える。
亀井氏はもう出てくる気ないんじゃないの?
亀井静か
バッファタブのフォントって変更できますか? ~/lisp以下のファイルのfontを検索して MS ゴシックを適当なフォントに書き換えてみたけど どうもうまくいきません…。 バイトコンパイルもしなおして.xyzzy.historyも消したみたけど ダメでした。そもそもフォントの変更は無理なのでしょうか?
>>280 そこは Windowsで指定されたフォントを使用しているので,
lispを漁っても無駄. ただ,どうやって変えるかは忘れた.
283 :
280 :05/02/26 13:13:11 ID:evl6TrVx
>>281 リソースハッカーとかを使えばいいんでしょうか…??
ちょっと試してみます。
285 :
260 :05/02/26 17:29:55 ID:07Tdrn+2
>>284 今見てきたけど何の話してるかわかんなかった・・・
とりあえず俺の手書き英語化は完了したしたからいいや。 he he...
calendar は国によって国民の休日が違うから訳しても意味ないからあきらめる 英語といってもイギリスとアメリカでは祝日が違うでしょ
2ch-modeでレス読んでる時、IDをクリックするか、なんかのキーを押すと、 同じIDの発言を違うBUFFERに書き出してくれる、もしくはポップアップしてくれる 拡張みたいなものありませんかね?
>>289 丁度こないだ書いたところだった。
本文長すぎだそうなのでインデントがないのはご容赦を。
(defvar *2ch-extract-regexp* (compile-regexp "ID:\\(.*?\\)\\(]\\|$\\)"))
(defun extract-id-articles (id)
"指定したIDの発言を抽出する"
(interactive "sID: ")
(save-excursion
(goto-char (point-min))
(let ((id-articles "") article pos (article-count 0))
(while t
(setf pos (find-text-attribute 'number :start (1+ (point))))
(let ((line (save-excursion
(buffer-substring (progn (goto-bol) (point))
(progn (goto-eol) (point))))))
(string-match *2ch-extract-regexp* line))
(when (equal id (match-string 1))
(setf article (2ch::thread-current-article))
(incf article-count)
(setf id-articles
(concat id-articles (format nil "~03D [~A] ~A <~A>\n~A\n"
(2ch::thread-line-number article)
(2ch::thread-line-date article)
(2ch::thread-line-name article)
(2ch::thread-line-addr article)
(2ch::thread-line-body article)))))
(if pos (goto-char pos) (return)))
(message-box (format nil "~A" (if id-articles id-articles "no articles."))
(format nil "ID:~A の発言:~D個" id article-count)))))
(compile 'extract-id-articles)
291 :
続き :05/02/28 13:13:59 ID:f4j+mFJj
(defun extract-current-id-articles () "現在のレスのIDの発言を抽出する" (interactive) (let ((article (2ch::thread-current-article))) (string-match *2ch-extract-regexp* (2ch::thread-line-date article)) (if (match-string 1) (extract-id-articles (match-string 1)) (message "IDが見つかりません")))) ;config.lに追加して下さいな。 ;extract-id-articlesはIDを指定して検索。 ;extract-current-id-articlesは現在のレスのIDの発言を検索。 ;キーマップへの登録例 (define-key *thread-map* #\J 'extract-id-articles) (define-key *thread-map* #\j 'extract-current-id-articles)
俺も。動作確認はまだですが欲しいと思っていた機能なので大変ありがたいです。THX!
>>290 自分も頂きました。
悪魔的に便利な機能ですね。
>>290 横からいただきますた。
むちゃくちゃいい感じです。
問題なくて良かった。 手元のは一行読み取る部分を別関数にしてるので。 でですね、バッファの指定行/現在行の文字列を取得する関数って始めからあったりします?
むぅ、うまく動作してないと思ったらしたらばじゃ駄目ぽかった。 2ch(ここ)なら動作しました。したらばでも動くようにいじったけど俺lisp駄目すぎorz
299 :
298 :05/02/28 22:29:41 ID:biaOhKrh
よく見たら2ch_mode_otherbbs.lのしたらばのスレ出力の 仕方が通常の2chと違ってたので、同じになるように直したら幸せになれました。 2ch_mode_otherbbs.lの 720行目が (setq date (concat date " |" id "|"))) こうなっているので、 (setq date (concat date " ID:" id))) こういう風に直す。 つらつらっと別の箇所もみましたが、なんか通常の2chの出力の仕方と違うところがいくつかあるっぽい。 まぁこれでしたらばでもID抽出が動いたのでとりあえず報告。
>>299 うう、other_bbsも使わせてもらってましたが、ID表示のある板に行った事がなかったので検証してませんでした。
>>299 の解決法がスマートだと思いますが(正規表現がシンプルになる分多少早いと思います)
>>290-291 の中で解決するなら
(defvar *2ch-extract-regexp* (compile-regexp "ID:\\(.*?\\)\\(]\\|$\\)"))
を
(defvar *2ch-extract-regexp* (compile-regexp "\\(ID:\\||\\)\\(.*?\\)\\(]\\||\\|$\\)"))
に変えて、3箇所ある(match-string 1)を(match-string 2)に差し替えて下さい。
>>290 バグフィックス
> (message-box (format nil "~A" (if id-articles id-articles "no articles."))
(message-box (format nil "~A" (if (zerop article-count) "no articles." id-articles))
>>297 > バッファの指定行/現在行の文字列を取得する関数って始めからあったりします?
buffer-substring は builtin だし、あなたの方法が最善じゃないかなぁと思います。
>>301 > バグフィックス
確かに改めてみてみると決してnilにはなりませんね(w
私なら思わず(equal id-articles "")としてしまうところですが、
なるほどzeropと言う手があったとは。勉強になります。
> buffer-substring は builtin だし、あなたの方法が最善じゃないかなぁと思います。
了解です。
それなりに使いでがあると思うんですけどねー。
入門xyzzy age
304 :
298 :05/03/01 11:52:23 ID:kiaNUqP0
初心者はげましあえスレもあるのにむやみに上げる、その心は?
308 :
303 :05/03/01 13:00:13 ID:7pIy5BYw
emacs.lについて一言二言あるんだけどどこで誰に言えばいいんでしょ
>>309 > emacs.lについて一言二言あるんだけどどこで誰に言えばいいんでしょ
emacs.l を持っているなら emacs.txt も持っているんじゃないの?
作者の前田さんへ直接メールか、xyzzy ML を使ってください。
今さらながら lisp 勉強中 読めるようになる気がしない
>>311 関数リファレンス,適切なインデント,paren.l で
すぐ読めるようになる.タグジャンプもあると◎
>>311 人のをちょっといじるだけでもいいから、とにかく書いてみるといいと思う。
その際、多分リファレンスは必須(reference.chm が手軽でおすすめ)。
できれば、paren.l、ldoc.l、ref2doc.l もあった方がいい。
>>312 ,314
丁寧なアドバイスありがとうございます
括弧地獄にもそのうち慣れるもんですかね
括弧は慣れればどうってことないと思う。 逆に括弧のないCとかのコードがとっさにparseできないことはある。 (普段lisp以外ほとんど使わないからだろうけど) ところで、ldoc.l, ref2doc.l は使ってなかったけど、便利そうですね。 F9にtoggle-ldocを割り当ててみた。
>>313 関数continue-continuous-dabbrev-popupがtを返すようにしてみたらどうなりま
す?
関数ボディの最後と途中にあるreturn-fromを書きかえてみてください。
>>315 info.l や info-modoki-mode なんかも便利。
>>319 俺にとっては,
> * SICPを本棚に飾っている。
飾ってない. Common LISP The Language Second Edition なら飾っている.
> * 括弧は気にならないというが、括弧の対応はエディタで強調表示している。
括弧の対応はエディタで強調表示しているので, 括弧は気にならないという
> * しばらくすると処理系を自分で書き、微妙に方言をつくる。
正しい
>>314 ldco.l ref2doc.lは具体的に何をするものなんですか?
323 :
名無し~3.EXE :05/03/02 02:41:23 ID:K0a7CvW7
>>319 > * SICPを本棚に飾っている。
> * 括弧は気にならないというが、括弧の対応はエディタで強調表示している。
> * しばらくすると処理系を自分で書き、微妙に方言をつくる。
>>319 上は投稿ミス。失礼。
私は、
> * SICPを本棚に飾っている。
飾ってる。
> * 括弧は気にならないというが、括弧の対応はエディタで強調表示している。
括弧がなきゃ綺麗にインデント揃えられないじゃないかー。とか言う。
> * しばらくすると処理系を自分で書き、微妙に方言をつくる。
書かなきゃ lisp ユーザと言えないのかなあ、と戦々兢々としてみる。
改めて投稿しなおすものでもなかった。
しかも age ちゃってるよ。死のう。
>>322 まず、ref2doc.l は docstring という、
処理系自体が保持する関数や変数への説明文を
reference.xml から自動生成してくれるものです。
基本的には、docstring は apropos や describe-function といった
調べ物系コマンドで見ることができます。
ldoc.l は lisp-mode 時、
現在カーソル下にあるシンボルについての説明を、ステータスバーに表示するものです。
関数やマクロだったら取る引数を、変数だったら docstring を表示してくれます。
ref2doc.l の配布元にある修正を加えると、
関数についても docstring を表示するようにできます。
>>325 丁寧にありがとうございます。
ちなみにこれらの機能はlisp書きならほとんどの方が使ってるのですか?
それともある程度上達したらだんだん使わなくなるもんでしょうか?
>>326 xyzzyでlispを覚えて3年になる.
関数リファレンスは今は引く回数が減ったけど,
初めてのころより現在のほうが ldocやタグジャンプはよく使うyo
あまり使わない関数の引数の順番まで覚えていられないし,
リファレンスにないような関数は自分でコードを読むからね
WindowsXPだと環境変数はレジストリに書かれるのですか? その場合どの部分?
329 :
313 :05/03/02 12:13:33 ID:CqnjSyhi
>>317 関数continue-continuous-dabbrev-popupのreturn-fromのところを
(return-from continue-continuous-dabbrev-popup t)))))
↑のように変えてみたのですが、やはりうまくいかないみたいです…。
>>329 その関数の最後のところもこんな感じで t を返すように。
(defun continue-continuous-dabbrev-popup ()
.....
(dabbrev-popup)))
t)
それと「うまくいかない」をもう少しお願いします。
331 :
313 :05/03/02 13:13:40 ID:CqnjSyhi
>>330 説明不足ですみません…。
「うまくいかない」とは" \n,(){}[]<>"らのキー入力を含んでいると
ndmacroにはキーとして認識されない場合があるということです。
指摘のとおり最後の部分にもtを返すようにしたら
無事にうまく動作するようになりました!
ホントにありがとうございます!!
なぜtを返すとよかったのか理由がわからないんですが
lisp勉強して理解できるようになりたい…。
ndmacroで使っているcommand-executeが途中でnilを返すコマンドにあたるとそ こで止まっちゃうみたいです。 だからnilを返さないようにしてみたらどうだろうということです。 このあたり詳しくないので何か問題あるかもしれませんが、 そのときはまたそのときに。
333 :
313 :05/03/02 14:37:41 ID:CqnjSyhi
>>332 詳しい説明ありがとうございます。
理由がわかって納得しました。
ちなみに
JavaTinyConsoleでも同様の症状がみられたので
jtc-complete.lで
jtc-insert-open-paren
jtc-insert-close-paren
の二つがtを返すようにしたらうまく動作しました。
ホントにありがとうございました。
質問です. xyzzy で Windows 版の Chez Scheme を書いている方はいらっしゃいませんか? 私は最近 xyzzy を使い始めたのですが,lisp-mode で書いて,Petite Chez Scheme のコンソールにコピペしています.もっと良いやり方は無いものでしょうか? *scratch* バッファがうらやましいです. なお,M-x shell モードだと, ・なぜかユーザの入力値が消えてしまう. ・非力なマシンだと,shell モードは大変重い. という理由で,現在は使っておりません. どなたか,アドバイスをお願いします.
336 :
334 :05/03/03 12:28:21 ID:OPD9xhLW
では,質問を言い換えてみます. コンソールアプリである Petite Chez Scheme の開発環境として,xyzzy を 使う場合,何か良いやり方はありませんか?. 理想としては,*scratch* バッファのような,xyzzy 内でそのまま S式が評価されるようなものがあれば最高なのですが. shell モードがそれに近いかと思いましたが,上記の理由でうまく行かず, 結局,単なるエディタとして使っているのが私の現状です.xyzzy を使う メリットはキーバインドとオートインデントのみになっています. まあ,このレスも xyzzy ではなく emacs で書いているぐらいの初心者なのですが.
そもそもChez Schemeってなに?^^;
338 :
334 :05/03/03 12:54:14 ID:OPD9xhLW
>>334 xyzzy の代わりに ChezEdit じゃだめ?
340 :
334 :05/03/03 13:12:17 ID:OPD9xhLW
>>339 以前は使っていましたが,現在のマシンは,Windows98 なのです.
ChezEdit は使えません.良いソフトなのですが.
また,マシンが非力なので,Petite Chez Scheme にバンドルされた開発環境は
重すぎて使用は困難です.
>>340 shell3.l か shell-ext.l も試してみた?
あと, ひょっとしたら, bash用とコマンドプロンプト用とで
さらに表示に変化があるかも.
それでだめだと,専用のモードを自作するしかないんじゃないの
>>340 Chez Scheme のプロセスを利用するのが普通だけど重いって言ってるしなあ。
elisp に対する emacs.l みたいなのを書けばよいんだろうけど、scheme に詳しい人じゃ
ないと難しいんじゃないかなあ。
俺も scheme 勉強したいので欲しいけど。
343 :
334 :05/03/03 18:23:57 ID:OPD9xhLW
shell3 は試しましたが,結果は同じで,ユーザ入力の内容が消えてしまうので, *scratch* バッファの代用にはなりませんでした. shell-ext は,今試してみましたが,うまくインストールできませんでした. emacs.l, elisp.l とは,何をするものなのでしょうか?ダウンロードしてみ ましたが,よく分かりませんでした.Scheme とは無関係そうですが. それにしても,xyzzy ユーザには Scheme プログラマも多いだろうと 思っていたのですが,定番となる環境は無いのでしょうか.残念です. しばらくは単なるエディタとして,xyzzy を使うことにします. ありがとうございました. Scheme は素晴らしい言語です.Scheme をマクロに採用した xyzzy が出れば 良いのに,とよく思います.
電波警報
いまさらですが
>>290 頂きますた。ものすごく便利です。Thx
ID厨な自分はもう消えてますが
>>25 のと併用して(・∀・)ニヤニヤしてます。
347 :
334 :05/03/03 23:53:35 ID:OPD9xhLW
>>345 ご返事,ありがとうございます.
Scheme モードですが,実は入手して,使い方のよく分からぬままでおります.
tterm.l を活用,とのことですが,そのまま使えるというわけではなくて,それを
参考に Scheme インタプリタと通信するマクロを書け,ということでしょうか?
ちょっと時間がありませんので,とりあえずこれだけ.
英辞郎CD-ROMデータ(古いやつ)で辞書引きモードに成功しました。
今まで知らなかったなんて損していた気分です。昔アストロビスタ氏が
紹介していたロボワードと同じ操作ですね。クリックすらいらない、マウス
ポインタを合わせるだけで訳語がポップアップされる。
http://diary.noasobi.net/2002/08/diary_020829a.html ここの人はまじめに英辞郎-A.txt,英辞郎-B.txt〜英辞郎-Z.txt
とファイルを作っていますが
eijiro52.tx → 英辞郎-A.txt とリネームするだけでOKでした。
略辞郎を英辞郎-B.txt という名前にしておいてからgendicすると
いい感じです。
349 :
名無し~3.EXE :05/03/04 00:34:52 ID:JEY5DHpZ
正直英辞郎ならWeb版ひいたほうがよい
eijiro.l を使うってことですか?
>>347 > Scheme モードですが,実は入手して,使い方のよく分からぬままでおります.
そうですか。まぁ、頑張ってください。
> tterm.l を活用,とのことですが,そのまま使えるというわけではなくて,それを
> 参考に Scheme インタプリタと通信するマクロを書け,ということでしょうか?
例えば Cygwin だと cygterm というソフトがあってそれを利用できます。
また、TELNETでlocalhostにアクセスして使うとか。(使えるかどうかは知りませんが)
もちろん、Scheme インタプリタと通信するマクロを書くという方法もありです。
352 :
334 :05/03/04 09:22:20 ID:i6Q32Xc+
>>351 ありがとうございます.Cygwin はちょっと重くてきびしいです.また,Windows98
が telnet サーバとして機能するという話は聞いたことがありません.
結局,自分でマクロを書くしかないようですね.
私は emacs のカスタマイズもほとんどしたことがなく,emacs-lisp や
Common Lisp はどうも苦手なのですが,この機会に勉強するのもいいかも
知れません.お世話になりました.
>>290 ID 検索を超便利に使わせてもらっていますが、メッセージ・ボックスは
内容がウインドウに収まらない時 (=スクロール・バー右に出る時)
しか、クリップボードにコピーできないのでしょうか?
>>353 そうみたいですね。
どうしてもコピーしたければ、Copit などを使うか、
ダイアログボックスのエディットコントロールに内容を
表示するように書き換えるかだと思います。
亀さんのぺぇじ、久しぶりに覗いてみたらリンク切れ多数…。もおやる気ないのかな。
前スレの
>>632 さんが、KaTeX における latexmk の使用方法に
ついて質問していましたが、現在 html 化の最中でみれません。
その後の展開あるいは解決策を御存じの方、御教えていただけたら
幸いです。
>>356 過去ログはにくちゃんねるでみられますよ。
>>334 当方、WinXPですがちょっと入れて試してみました。
で、やっと状況が分かりました。
> ・なぜかユーザの入力値が消えてしまう.
けど、値はちゃんと返ってくるじゃないですか。
だったら、
(setq *shell-echo* nil)
で残るようになります。つーかなりました。
>>334 あと、サブプロセスを起動しておきたくないんだったっけ。
filter-region を使うアプローチで大丈夫でした。
素の filter-region だと region を置き換えるので
それを残すように変更すればとりあえず使えるんじゃないですか?
すいません。ちょっと質問です。 ダイアログボックスの位置をずらさずにコマンドを実行できないかと思っているのですが、 ダイアログを閉じずにコマンドを実行する、または、ダイアログの現在の表示位置を取得する、 ということはできるのでしょうか?
>>361 スレ違いでなければ、
・「何のダイアログボックス」の位置をずらさずに
・「何のコマンド」を実行しようとしている
のですか?
行おうとしていることを具体例で書いてみてください。
>>363 そもそも、(dialog x y w h ....) の x y で指定できる値は、
正確にはどこを基準としているのでしょうね。
365 :
361 :05/03/09 01:42:03 ID:xdqX5Odh
>>364 試してみたところ、x y が両方とも 0 ならばダイアログの大きさに応じて位置を自動調整、
どちらかが 0 でないなら x は xyzzy のウィンドウの左端からわずかに右にずれた所、
y は ツールバーをメニューの下に表示した場合のメニューとツールバーの境目の所、
を基準としているようです。
>>363 かなり難しいね. winapi の知識がないと無理かも.
その使い方だと,ダイアログは 移動しているのではなくて,
いったん消した後,再度作り出していることになる.
そのときに位置を指定してやれば(dialog の 第1,第2 引き数),
希望の場所に表示できるけど,ダイアログの場所がどこにあるか
dialog-box は返り値として返してくれないので自分で取得しないといけない.
そのためには,dialog-box を再実装する(c++で)しかおれには思いつかない.
xyzzyでMDIを使った例をずいぶん前に誰かが公開していたけど,それも
単純にテキストを表示しているだけで,xyzzyのダイアログほど高機能ではなかった.
とりあえずは c++ のソースを自分で読んでみることだね.
winapiで何とかなるかもしれないけど,そのためにもソース読んだほうがいいでしょ.
367 :
361 :05/03/09 02:09:42 ID:xdqX5Odh
>>366 コメントどもです。
やはり難しいですか。私、C++ は全くわからず開発環境もありませんが、
そのうち時間をみつけて調べてみようかと思います。
成果を公開できるとしてもかなり先になると思いますが。
WinAPIアリなら、検索ダイアログのキャプションを使って FindWindow でハンドル取得して、 MoveWindow を呼び出せば良いと思われ。
369 :
361 :05/03/09 23:07:07 ID:0Trj9pn3
>>368 コメントありがとうございます。
試してみたんですが、ダイアログボックスはボタンを押すとウィンドウが
閉じてしまうので、FindWindow でハンドルを取得することはできないようです。
やるとすれば、やはり C++ でダイアログを再実装するしかないような気がします。
とりあえず現状では無理らしいということが分かったので、当面は今のままで
使おうと思います。
皆さんご指導ありがとうございました。
テキストのエンコーディングを utf8n にするため テキストの一行目に // -*- encoding: UTF-8N -*- と書いてみたのですが 認識されませんでした。 UTF8N, UTF-8N, UTF-8-N, UTF8-N いずれも駄目で。 書き方間違ってますでしょうか…? # UTF-8 なら認識されるのですが...
>>370 Lispをあまりよく知らない俺だが、適当に調べた結果
siteinit.l に次のように書くと取りあえずうまく行くことがわかった
(in-package "editor")
(setf (gethash "UTF-8N" *mime-charset-name-hash-table*) *encoding-utf8n*)
が、この方法で本当に大丈夫なのかはわからんので
あとはエロい人よろしく。。。
372 :
370 :05/03/11 09:46:24 ID:o2pnOVcD
>>371 迅速で的確なご教示をいただき、ありがとうございます!
371さんの仰る通りの方法で -*- encoding: UTF-8N -*- がうまく
認識されるようになりました。
延々とエンコーディング名を変え続けて、はまっておりました。(^^;
おかげさまで、大変助かりました。ありがとうございます。
だれかftpupdateとftpdownをうpしてください
374 :
名無し~3.EXE :05/03/12 15:25:32 ID:JgChrOZl
自分がまだmlに参加してたこと忘れてたよ。 ちょっとびっくりした。
>>374 これは挨拶した側の自国語を使う権利も侵害してないか。
巨大なifのある分岐にきたらそれ以降は処理中断とかしたいときに quit使ってるんだけどこれだと終わりすぎなので、 返り値返してその関数だけ抜ける方法ってないんですか? 他に書き方あるのかな。。。
例外処理を調べたら何とかなりそう 要はsimple-errorを捕捉すればいいんでしょ
380 :
377 :05/03/13 12:46:49 ID:vzkcMxW8
コンディションでもいいんだけどなんかむずいし どっちみちブロックで囲む必要があるっぽいので block nilで関数の最後まで囲んでreturnで抜けることにしました Hiroiさんのとこ読めばわかることでしたね 失礼しました ;雪降ってる・・工エエェェ( ´д`)ェェエエ工工
Meadow/Emacs Memo をヒントに書いてみました。migemo は考慮していません。 ;; isearch の時一文字ずつ追加 (defun isearch-yank-char () (interactive) (let* ((start (+ (point) (or (length *isearch-current-string*) 0))) (end (save-excursion (goto-char start) (1+ (point)))) (next-word (buffer-substring start end))) (if (and *isearch-smart-case* (eq *case-fold-search* :smart) (not (string-match "[A-Z]" *isearch-current-string*))) (setq next-word (string-downcase next-word))) (isearch-push-status) (isearch-scanner (concat *isearch-current-string* next-word) nil))) (define-key *isearch-map* #\C-d 'isearch-yank-char) ;; 一文字ずつ削除 (defun isearch-real-delete-char () (interactive) (unless (< (length *isearch-current-string*) 1) (setq *isearch-current-string* (subseq *isearch-current-string* 0 (1- (length *isearch-current-string*))))) (setq *isearch-this-command* 'isearch-search-history-forward)) (define-key *isearch-map* #\C-o 'isearch-real-delete-char)
>>380 blockでもいいけど, cond, case の方が適している気がしなくもない
>>380 return-from 関数名 ではだめなの?
384 :
380 :05/03/13 14:44:54 ID:vzkcMxW8
>>383 (defun 関数名()
(return-from 関数名 &返り値))
で返り値を返して終了みたいなので余裕でOKっぽいです
関数もブロックだからreturn-fromに名前が書けるってことか・・・
って
>>379 のHiroiさんのとこに書いてあるな(汗)
失礼いたしました
バージョンアップ来た。びびった。
>>385 つまんねえ釣りだな
ほんとにキタ━━━━━━(゚∀゚)━━━━━━!!!!
Thu Mar 17 2005 Version 0.2.2.234 なんかいろいろ
サポート終了したとか言われた頃使い始めたから 何やら奇跡を目の当たりにしてますよ? ありがとう━━━━━━(゚∀゚)━━━━━━ !!
何が変わったのかは分からないけど キタ━━━━(゚∀゚)━━━━!!!!!!
キタ━━━━━━(。∀゚)━━━━━━ !!
ソースもきたー
マジでキタ━━━━━━(゚∀゚)━━━━━━ !!!!!
ソースのREADMEから「公開やめようかなぁ」がキエトル━━━━━━(゚∀゚)━━━━━━ !!!!! 深い意味はないかもしれない、ないかもしれないけど亀井さんありがとう
ole-for-each キタ━━━━━━(゚∀゚)━━━━━━ !!!!! これまじでほしかった。 detect-c-or-c++-modeも便利。*.hを読むときにCかC++か判別してくれるっぽい。
(si::defun-builtin www-url-encode (input-string-or-stream &optional output-stream literal-chars)) (si::defun-builtin www-url-decode (input-string-or-stream &optional output-stream)) (si::defun-builtin filer-calc-directory-size (&optional keep-marks)) (si::defun-builtin filer-calc-directory-byte-size (&optional keep-marks)) (si::defun-builtin ole-enumerator-next (oleobj)) (si::defun-builtin ole-enumerator-reset (oleobj)) (si::defun-builtin ole-enumerator-skip (oleobj &optional count)) (defun find-buffer-colors (buffer) (defun calc-fact (n) (defun calc-rshift (x y) (ash x (- y))) (defun calc-primary-expr () (defun calc-postfix-expr () (defun calc-unary-expr () (defun calc-multiplicative-expr () (defun calc-assign-expr () (defun calc-expr () (defun detect-c-or-c++-mode () (defun show-dexplorer () (defun filer-delete-mask-string (mask &optional (prefix "")) (defun filer-delete-mask () (defun isearch-paste-or-exit () (defun switch-pseudo-frame (name) (defun pseudo-frame-selector () (defmacro calc-assoc-left (name next operators) (defmacro calc-assoc-right (name next operators) (defmacro lambda (&whole form &rest bvl-decls-and-body) (defmacro protect-match-data (&body body) (defmacro ole-for-each ((var obj &optional (resultform nil)) &body body)
(defvar *dexplorer-object* nil) (defvar *dexplorer-help* nil) (defvar *dexplorer-collection* "ms-help://ms.vscc") (defvar *dexplorer-filter* "Visual Studio .NET Combined Help Collection") (defvar *loading-user-initial-file* nil) (defvar *filer-delete-mask-list* (defvar *filer-delete-mask* nil) (defvar *auto-mode-last-buffer* nil) (defvar *find-file-auto-mode-function* nil) (defvar *match-data-pool* (let ((r nil)) (defvar .keyword-package. (find-package "keyword"))
ソースコードって(^m^)だっけ?
vctk2003で無事にビルドでキタ━━━━━━(゚∀゚)━━━━━━ !!!!! 前バージョンでソースの変更してた箇所は修正されてますた
>>399 そうそう、これ。今必死にMLのアーカイブ漁ってたよ。ありがとう
オレが使い始めて初めての更新 キタ━━━━ヾ(゚∀゚ )人(゚∀゚)人( ゚∀゚)ノ〃━━━━!!!!! で、何が変わったの??
>>401 何が変わったのかはよーわからんが
0.2.2.233 => 0.2.2.234 で
lisp フォルダは、
"about.l" "app-menu.l" "basic-mode.l" "buffer.l" "builtin.l" "calc.l" "calendar.l"
"cc-mode.l" "cfns.l" "cmdbar.l" "cmds.l" "dabbrev.l" "defs.l" "den8view.l" "dialogs.l"
"errors.l" "estartup.l" "evalmacs.l" "filer.l" "files.l" "glob.l" "gmark.l" "grepd.l"
"gresregd.l" "isearch.l" "kbdmacro.l" "lispmode.l" "list.l" "listfn.l" "loptprop.l"
"maketags.l" "menu.l" "misc.l" "monkey.l" "niftylog.l" "ole.l" "optprop.l" "paragrph.l"
"pframe.l" "search.l" "session.l" "setf.l" "sexp.l" "tags.l" "timestmp.l"
が変更されている模様。バグとか、かなり潰されていると思う。
>>402 トンクス
オレが見た感じだとメニューのカタカナが全角になったくらいしか
わからんかった…。
いまさらだがキタ━━━━━━(゚∀゚)━━━━━━!!!!! DLしてくる。
>>402 > バグとか、かなり潰されていると思う。
0.2.2.233 でこれって言うバグあましたっけ?
安定してると更新されてもあまり実感がないのが悔しいですね。
これからじわじわと改良されてるところが明るみに出るのでしょうか。
なにより作者さんが達者でおられることがわかっただけで嬉しいです。
半角 => 全角カナやMS Pゴシック => MS UI Gothic で
変わってるだけのファイルも多いけど。
日付を見るとこまめに更新されてたみたいですね。
>>405 バグというバグは無いと思うけど、
1582年10月の表示が直ってます。( ̄ー ̄)y-~~~~
IMEがONで(ローマ字でなく)カナ入力だとM-x等ができない.
とりあえずスクロール関係がおかしかった一番重要なバグがつぶされているのが嬉しい。 今までは折り返さないと文字が全部読めなかったから。
ああ…なおってなかった。
GrepとGresregの結果表示で同じ症状が出る。
411 :
402 :05/03/17 22:45:11 ID:d4QRvhmm
とりあえず、buffer.l をみて *buffer-bar-hook* というのが追加されているのを発見した。 buffer-bar をマウスで切り替えると作動する hook でかなり嬉しい こんな感じ (add-hook '*buffer-bar-hook* #'(lambda (buffer) (message "~A" buffer))) ML で昔報告された *post-command-hook* のバグも多分なくなっていると思う。 こういう追加された機能やつぶされたバグがあったら教えてくらはい。
新しいバージョンでは explorer.l でxyzzyのツールバーからexplorerを起動すると、C-x が効かなく なるみたいなんだけど何でだろう?
いや、マジで
>>412 こういうのがあったとは.
どうもありがとうございます.
今まではmayuで対応してた.
ソースはどこにあるんですか?
/(T^T)/
multi-mode対応の一発インデントってないの?
自分で書くのがはやいと思うよ。
カナが全角になっただけで5年分くらい新しくなった希ガス
xyzzy バージョンアップして、2ch-mode バイトコンパイルし直したら、 スレ読み込む時に「不正な関数です: 2ch-mode::tbk-point」ってでるようになった。 皆は平気?
424 :
名無し~3.EXE :05/03/20 17:23:27 ID:ODBcG1YO
>>423 コンパイルし直さずに、中間コードファイルコピーし
て使ってるけど、いまのところ特に問題なし
425 :
423 :05/03/20 19:27:53 ID:H6UmTF8J
>424 レスサンクス。 かなり悩んで、あちこち弄りまっくったけど、 どういう訳か aborn.l 入れ直したら直りました。
426 :
:05/03/20 22:57:57 ID:dETf5U0J
427 :
名無し~3.EXE :2005/03/21(月) 13:19:34 ID:XQtDR/As
2ch-modeで文字コードの判定がおかしいのか、一部の板やスレが 文字化けして表示されます。同じ症状の人いませんか? たとえば、今現在、家電製品板のスレ一覧を見るとバケバケです。 subject.txtを多言語ビューワで見るとちゃんとEUC-JPファイルとして 読めるので、ダウンロードは正常にできているようなのですが。
自分も化ける。Emacs Part13 とか。
2ch-modeについては無知なのでうまく答えてあげられないけど, とりあえず Emacs Part13 は化けなかった
432 :
:2005/03/21(月) 18:21:37 ID:orYvZBGE
>>427 2ch の subject.txt は Shift_JIS のはずなので、それは文字コ
ードがおかしくなっていると思います。なぜおかしくなっているの
かはわかりませんが…
最近突然 lispmode でインデントや改行をするたびにエラーが出るようになりました。 トレースはこんなのが出ます。 >CALL STACK 4: (match-data #(nil nil nil ...)) >CALL STACK 3: (system:*byte-code ...) >CALL STACK 2: (#<lexical-closure: lisp-indent-line>) >CALL STACK 1: (command-execute lisp-indent-line) 不正なデータ型です: #(nil nil nil nil nil nil ...): match-data 調べてみたところ、どうも lisp-indent-line の中で protect-match-data を展開した後 store-match-data に #(nil nil nil ...) が渡されてエラーになっているようです。 siteinit.l をリネームしてダンプし直し、 -q オプションをつけて起動してみましたが やはりこの症状が出ます。 設定ファイルの問題ではないということでしょうか・・・
435 :
434 :2005/03/22(火) 20:59:35 ID:5ed4Z3eg
.xyzzyに (setq ed::*match-data-pool* nil) って書いたらとりあえずエラーは出なくなりました。 が、これでいいのかどうか不安です・・・
>>408 相変わらずカレント行の端までしかスクロールしないけど、、、
これのことじゃないのかな?
439 :
:2005/03/24(木) 00:31:07 ID:cmDGNQg+
>>439 > ということは、2chmenu.html やら subject.txt やら *.dat や
> らが EUC-JP になってしまっているということでしょうか?
いえいえ、dat や subject.txt 自体はちゃんと SJIS で保存されて
いるんですが、一部のスレッドに SJIS としては不正なシーケンスが
含まれているんです。たとえば 0xa0 0xa0 みたいな。
そうすると、おそらくは xyzzy が文字コードの自動判定に失敗して、
デフォルトのエンコーディングにフォールバックするんですが、
このときデフォルトを EUC に設定していると化ける、SJIS に設定
していると「偶然」化けないってところだと思います。
どこか直すべきところがあるとすれば、2ch の CGI でしょうね…
SJIS のシーケンスとして不正なものをそのまま保存しないでくれと。
まあ、CGI としては byte 列を取り扱う仕様なんでしょうが。
hook が上手く機能しない理由は良くわかりません…
うほぅ,亀井さん2秒ほどやる気出てる
うほっ、やる気の量はランダムに決まるのかw
何を今さら
ランダムに決まるのはやる気のなさの程度であって、やる気があるというのは 怪奇現象だと思われ
445 :
439 :2005/03/25(金) 00:06:27 ID:2Pf7SInY
>>440 うーん… *2ch-start-hook* が走る前に実行されている
menu-load で "2ch: Temp" バッファが作られて、それが使いまわさ
れているのが臭いなぁ…。
かなり泥臭くて汚いですが、config.l には
(add-hook '*2ch-exit-hook*
#'(lambda ()
(setq *default-fileio-encoding* *encoding-euc-jp*)))
だけ書いて、.xyzzy には
(defun exec2ch ()
(interactive)
(setq *default-fileio-encoding* *encoding-sjis*)
(2ch))
と書いて exec2ch で起動する…ではどうでしょうか?
>>445 それでうまくいきました
ありがとうございます
うーん 二日三日前の鯖メンテの頃からPC等カテゴリが"スレ一覧の形式が分からんよ" になる・・・
板一覧の更新してるか?
質問させてください。 例えば F8にC-x & を振ってなおかつ、自動で"g++ (現在編集中のファイル名)"を入力させる。 ということができますか? いちいちC-x &を押してコマンド打つのに疲れましたorz
>>447 自分もなった。で Menu バッファで R を押しても「板更新なし」
になる。実際に 2chmenu.html をブラウザで見ると更新されている
のだが。サーバ上の 2chmenu.html のタイムスタンプがおかしくて
If-Modified-Sinceで更新なしと判断してしまっているのだろうか…。
…というわけで(?)強引に 2chmenu.html を再読み込みさせる
回避策。ただしちょっと危険なので、2chmenu.html と、
bbsmenu.txt のバックアップは必ずとってから始めてください。
1. 2ch-mode を起動する。
2. 2chmenu.html を削除する。
3. メニューバッファで R を押す。
これで再読み込みされて、板の移動の動作も起こるはず…。くれ
ぐれも 2chmenu.html を削除するのは 2ch-mode を起動した後にし
てください。2chmenu.html を削除してから 2ch-mode を起動する
と、2chmenu.html が新しくなるだけで、dat ファイル群の移動が
行われなくなってしまうので…。
今更だが 0.2.2.234 にバージョンアップ。 気のせいか前より動作が軽快になった気がする。
>>447 448でも書かれてるけど、win板などの鯖がpc5.2ch.netからpc8に変わってます
453 :
450 :2005/03/25(金) 12:37:44 ID:wndhNX4C
s/実際に 2chmenu.html をブラウザで見ると/実際にサーバ上の 2chmenu.html をブラウザで見ると/
わかりにくいので修正。当然ながら Menu バッファで R で問題なく更新できるなら
>>450 は必要ありません。
455 :
447 :2005/03/25(金) 15:59:41 ID:5r3AFtdd
>>398 -DDEBUG_GC外したらエラー出た。たいしたことじゃ無いけど。
そんなことより、探し回ってやっとmigemoを拾った。各方面の方々に感謝.
>>450 そうか・・・2ch-mode起動させてからR押せばいいのか・・・
めんどくさいの覚悟で2chmenu.html消してからいちいちdatファイル移動してたからなぁ・・・orz
でも勉強になった。
全角スペースを普段表示しているのですが 2ch-modeの時だけは表示させたくないです。 なんかうまい方法はないですか?
つtoggle-full-width-space
>>459 さんきゅー
でも.xyzzyに
(add-hook '2ch::*view-mode-hook* 'toggle-full-width-space)
ってやってみたらなんも反応せず
(defun view-mode ()
の中に
(toggle-full-width-space nil)
を追加してみたけどやはり動かず…
だれか教えてください
>>460 例のごとく、
(add-hook '*2ch-start-hook*
#'(lambda ()
(toggle-full-width-space nil)))
(add-hook '*2ch-exit-hook*
#'(lambda ()
(toggle-full-width-space t)))
>>413 ども
> 新しいバージョンでは
> explorer.l でxyzzyのツールバーからexplorerを起動すると、C-x が効かなく
> なるみたいなんだけど何でだろう?
試した範囲では再現しないのですが、必ず再現しますか?
もう少し詳しい再現手順を出していただくことは可能ですか?
>>462 そのexplorer.lなんですが、C-x f hoge などで新しくバッファをつくって
まだ保存していないときに explorerで開くとエラーになってしまいます。
file-exist-p も見てもらえないでしょうか。
amazonで本の発注が可能になったのでage
とりあえず買い物かごに入れてみた
>>463 ども。
> そのexplorer.lなんですが、C-x f hoge などで新しくバッファをつくって
> まだ保存していないときに explorerで開くとエラーになってしまいます。
> file-exist-p も見てもらえないでしょうか。
おや?
そうしてなかったっけかな、と思って確認してみたら、手元のもののみ
更新していました(2004/09/24)。
更新しときますね。
> (setf (symbol-function 'menu-parse) #'menu-parse-bbstable2) 取りあえずこれはいらない。
>>468 いらなかったのかありがとう。
昔からつけっぱなしだったから何の疑いもなくそのままでした。
お聞きしたいんですが、セレクションの空白だけ削除する方法ってないですかね? " "を""に置き換えれば出来そうとか考えたんですが、 replace-stringとかだと、バッファ内を置き換えてしまうので、何かいい方法があれば教えていただきたいです。
>>470 こんなのどうでそ。
(defun delete-space-in-selection ()
(interactive)
(save-excursion
(save-restriction
(narrow-to-region (selection-mark) (selection-point))
(goto-char (point-min))
(replace-buffer " " ""))))
472 :
名無し~3.EXE :2005/03/30(水) 16:52:58 ID:HE9gVLvf
入手可能で最新の2ch-modeのバージョンっていくつなんでしょうか? 現在自分が使用しているのは0.0.1.1です。
473 :
470 :2005/03/30(水) 17:15:20 ID:rNxBWB2b
>>471 すいません、僕の書き方が悪かったですorz
実は、関数の内側で使いたい(空白を抜かした文字列を返したい)んです。
何かヒントをいただけないでしょうか。
#参考になりました。narrow-to-regionで置き換える範囲を制限するんですね。こんな関数があったのか。
>>473 ようはある文字列を正規表現置換したいって事かな。
ならsubstitute-stringとか。
476 :
470 :2005/03/30(水) 17:31:58 ID:rNxBWB2b
>>475 (substitute-string (buffer-substring (selection-mark) (selection-point)) " " ""))))
こんな感じで、うまくいきました。
すごく感謝してます。
version-up-xyzzyという関数があるのに気付いた これは何をしてくれるんだろうw
479 :
名無し~3.EXE :Windows暦21/04/01(金) 19:29:48 ID:W8IKnPtO
scratchでLISPを実行するのにC-jを使いますが、 これを別のキーに割り当てる方法を教えてもらえませんか。
kimoiね。
>>480 もしcookieにくっつけるだけでOKならこれでできるような気がしないでもないけど…
(defvar *be-code* nil)
(defvar *be-id* nil)
(setq *be-code* "認証コードを記入")
(setq *be-id* "IDを記入")
(defun form-format-cookie-vars (name email)
(let ((name-and-mail-cookie (format nil
"NAME=~A; MAIL=~A"
(url-encode (or name ""))
(url-encode (or email "")))))
(if (and *be-code*
*be-id*)
(format nil "~A; MDMD=~A; DMDM=~A"
name-and-mail-cookie
(url-encode *be-code*)
(url-encode *be-id*))
name-and-mail-cookie)))
試してはいないので上手くいかなかったらスマヌ。
483 :
480 :2005/04/03(日) 11:00:40 ID:6BVQ0q7n BE:14154236-
>>482 キタ━━━━(゚∀゚)━━━━!!
すげぇ。感動しました。
そのまんまじゃログインエラーが出たので、2つめのformatを
(format nil "~A; MDMD=~A; DMDM=~A; "
name-and-mail-cookie
*be-code*
*be-id*)
というふうにするとログインして書き込めました。
本当にありがとうございます。
入門書っていつの間にか発売されたんだな。
でも全然置いてない。 渋谷のとある本屋ではBASICコーナーに置いてあったぞw 書店の書籍検索をしてから探すと吉。
藤沢では何故か 7 冊平積みされてたよ。
amazonでは4-6週間とか言ってるんだが・・・
新宿高島屋の紀伊国屋ではアプリケーションコーナーに数冊置かれてた。 ちょっと読んだ感じでは後ろの百数十ページぐらいだけ欲しいかも
ファイルの先頭でマイナーモードを指定するのってどうやるんでしょうか?
>>490 > ファイルの先頭でマイナーモードを指定するのってどうやるんでしょうか?
手抜きだけどこんなのを書けば
(defun ed::find-file-auto-minormode (string)
(ed::find-file-auto-mode string))
(pushnew '("minor" . ed::find-file-auto-minormode) *auto-mode-parameter-alist*)
-*- MODE: Lisp; MINOR: Edict -*-
こんな感じて指定できます。
メジャーモードの指定を同時にしなければならないことと
メジャーモードの指定をマイナーモードの指定より先に書かなければならないことが
手抜きたる所以です。
>>491 サンクス. できました.
でも,コード見ていろいろ考えたけど,
なぜ上のような条件が出てくるのかさっぱりでした.
無関係に見えるんだけどなぁ....
たいしたことではないですが,下みたいにしたほうがよさそうでした.
(pushnew '("minor" . ed::find-file-auto-minormode) *auto-mode-parameter-alist* :test #'equal)
>>492 メジャーモードを実行するとマイナーモードがリセットされるためです。
# (kill-all-local-variables) が実行されますので
なので先にメジャーモードを変えておく必要があります。
> (pushnew '("minor" . ed::find-file-auto-minormode) *auto-mode-parameter-alist* :test #'equal)
確かにこっちがいいですね。
>>487 今見たら「通常3〜4日以内に発送」になってた
howmで最新のメモだけをサマリとかを表示せずに直接開きたいんだけど どうすればいい?howm-last-fileみたいな関数はhowm-wrap.lを いじらずに作れるんでしょか。
>>495 メモを日時でソートして最新のものを開くようにすれば、とりあえずできるんじゃないかと。
ソース見てないのでよく分からないけど、@メモを保存するときに、save-buffer + howm-last-file という変数にファイル名を保存みたいな関数を作る、Ahowm-last-file を開く関数を作る みたいな感じでいいんじゃないでしょうか。
質問です xyzzyでNFS上のファイルを開くのに,公開されたマウントポイントが '\vol\vol1' のようになっていると, //{server-name}/vol/vol1/filename.txt でファイルを開くことができません. でもディレクトリやファイル名の補完はできるし,ディレクトリ名入力してリターンで 1画面ファイラーもちゃんとNFSのディレクトリを表示してくれます. ただファイルを開くことができません. マウントポイントが '\vol' のようなものはファイルを開くことができるし, //{server-name}/vol/vol1/ をたとえば E:/ にwindowsでマウントしておくと 問題なく使うことができます. 適当なドライブにマウントしないで使う方法はないでしょうか. サーバは自分の管理下にないのでマウントポイントを変更することができません.
>>496 , 497
サンキューです。やってみます。
>>498 > 質問です
ML で質問したほうがよいと思いますよ。
502 :
名無し~3.EXE :2005/04/11(月) 14:14:14 ID:eXQploUF
html+-modeをいじってたらC-.でタグを閉じた後 ハイライトが戻らなくなったんですけど、 今までってハイライトを戻すときに何を検出して、どうやって戻してるんですか?
>>502 何をしたのかよくわからんけど html+-mode を直接書き換えたの?
.xyzzy とかに書いて関数を上書きしたならすぐ元に戻せると思うんだけど、
そうじゃないなら html+-mode をダウソしなおして比べてみるといいと思う。
rd-mode用のファイルを探しているのですが、以前の作者さんのサイトが開けない上に ググった結果をいろいろ徘徊しても見つけられません。。。どなた、現在まだ入手可能な 場所をご存じでしたら教えていただけませんか?
>>502 ここら辺で消してます。
; ハイライト削除
(defun html+-delete-highlight-tag ()
(and (eq buffer-mode 'html+-mode)
*html+-tag-highlight*
(delete-text-attributes *html+-tag*)))
(add-hook '*pre-command-hook* 'html+-delete-highlight-tag)
>>505 さんくすです。
hookをぶっ壊してたみたいです。戻りました。
別件ですが、parenってハイライトしたあと、戻したときに以前のハイライトを壊すことがありますよね
たとえばc-modeなどでつけたキーワードの色は壊さないのですが、
set-text-colorやset-text-attributeでつけた色はそのまま消してしまいますよね?
これってみなさんいっしょですか?
あと、c-mode.lを見てもtext-attributeを使わずに色をつけているようですが、
どうやってつけているかご存知の方はいますか?
>>507 なにをぐぐればいいのかわかりにくいのでもうちょっと詳しく
load-keyword-fileでもう色をつけてるのかとkwd.lを探ってみたけど見つからず。
組み込みじゃないですよね?
色付けの関数って
set-text-color
set-text-attribute
以外に何かありましたっけ?
>>508 > load-keyword-fileでもう色をつけてるのかとkwd.lを探ってみたけど見つからず。
load-keyword-file からの一連の流れで色づけしています。
> 組み込みじゃないですよね?
keyword-hash-table で制御できますが、組み込みです。
> 色付けの関数って
> set-text-color
> set-text-attribute
> 以外に何かありましたっけ?
関数としてはそれだけかもしれません。
しいて言えば、reverse-region もあります。
set-text-color は互換性のために残されており、内部で set-text-attribute を
使用していています。
また、c-mode.l に限っていえば、正規表現キーワードは使用されていません。
>>510 なるほど、なっとくしました。ありがとうございます。
load-keyword-fileから色をつけたものはparenで壊れないということでしょうか。
506のparenが色を書き換えてしまう件ですが、
カーソルが外れた際にちゃんと元に戻してくれるようにしたいのです。
attributeをうまく保存している例はどこかにないですか?
>>511 > load-keyword-fileから色をつけたものはparenで壊れないということでしょうか。
keyword-hash-table での色づけは、set-text-attribute とは
恐らく無関係です。
詳細を確認したい場合はソースコードを調べてください。
> attributeをうまく保存している例はどこかにないですか?
例ではありませんが、だいたいの保存/復元であれば
paren で色づけする際に該当部分の attribute を保存しておいて、
paren の色づけを外す際に復元するようにすれば可能です。
ただし、保存から復元の間にバッファが編集されると、復元位置ががずれます。
「保存、表示、sit-for での復元の予約」を一コマンド内で行いきる方法も
ありますが、問題もあります。
様々なコードを書き、試し、自分にあったコードにしていくのがよいでしょう。
他のウィンドウに移動してもセレクションが見えるようにしたかったので、
510さんの発言を元に書いてみました。
;; セレクションを反転
(defun reverse-selection ()
(interactive)
(if (pre-selection-p)
(let ((beg (selection-mark))
(end (selection-point)))
(reverse-region beg end))
(clear-reverse-region)))
(add-hook '*post-command-hook* 'reverse-selection)
使いものになるかどうかはわからないです。
>>508 > 色付けの関数って
> set-text-color
> set-text-attribute
> 以外に何かありましたっけ?
関数じゃありませんが、regexp-keyword-list なんてのもあります。
>>512 ふむふむ、大変親切なお答えありがとうございました。
編集されるとずれるか、たしかに。
Lispにまだ慣れていないのでparenの解析もまだ済んでいませんが
そろそろと進んでいこうと思います。
まだ試していませんが、
(add-hook '*pre-command-hook* 'paren-highlight)
とすると多少安心感が増すんですかね
>>514 > まだ試していませんが、
> (add-hook '*pre-command-hook* 'paren-highlight)
> とすると多少安心感が増すんですかね
まず試してから、疑問点について書き込むのがいいでしょう。
また、何故上記のように考えたか理由を書くと、他の方からの指摘を
もらいやすいですよ。
何故上記のように考えましたか?
xyzzy上でCapsにCtrlを割り当てる方法ってありますか? 大学のPCは制限ユーザーなので、レジストリは書き換えできないし、ソフトのインストールもできません。 窓使いの憂鬱などは試してみたけど上手くいきませんでした。 CapsをCtrlに割り当てるのに慣れてしまっているので、作業効率が大幅ダウンで困ってます。 Lispなどで割り当てるのが可能だったりします?
>>516 このスレの最初の方に同じ話題がでてますので、参考にされたら
どうですか。
>>516 > xyzzy上でCapsにCtrlを割り当てる方法ってありますか?
ありません。
>>516 xyzzyとmayuが入ってるんだな?
PC管理者はCapsとCtrlを入れ替えているに違いない!
>>516 矛盾だらけの文章をなんとかするのが先決だと思うな。
>>516 NT系ならWH_KEYBOARD_LL使ったソフトでレジストリ使わずにいけるよ、たぶん。
自分でDLL作ってLispでSetWindowsHookExを実行すれば
>xyzzy上で
っていうのもいちおう可能。
>>522 頂ました.
暇を見つけて遊んでみたいと思います.
>>516 wikiの tips/キーバインドの設定をもう少し柔軟に
で何とかなるかも
mayuが使えるのならそのほうが楽だと思うけど。
KaMailでGmailアカウントの送受信できてる人いますか?
("pop.gmail.com" "
[email protected] " "password" t "login" 995)
こんなかんじで設定してみるも 「nil:string 不正なデータ型です」
ってダイアログが出て怒られてしまいます。
そもそもSSLに対応してないってことはないでしょ?
間違った
("pop.gmail.com" "
[email protected] " "password" nil "login" 995)
でした。
でも、どっちでも結果は同じだった...
KaMail自体はSSL対応してないよ。stone とか使え。
あと KaMail には @ 入りのユーザー名は使えないという制限があったような。
なるほど、そういうことでしたか。 おとなしくThunderbird使っときます...。 stoneでチャレンジしようかとも思いましたが、 そもそもそこまでやる必要があるのか疑問が沸いてきてしまったので 断念することにしました。 ありがとうございました。
ソフ板で聞いたらこちらでとのことなので質問なのですが、 Pythonの def hoge(bar) とか class foo(mono) のhogeとfooの部分を今まで使ってたPythonWinみたいに強調表示したいと思い、 (defvar *py-func-formats* (compile-regexp-keyword-list '(("\\bdef[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)" t (:keyword 1 :bold)) ("\\bclass[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)" t (:keyword 1 :bold)) ))) (setq regexp-keyword-list *py-func-formats*) (add-hook 'ed::py-mode-hook 'py-color-setting) (defun py-color-setting () (make-local-variable 'regexp-keyword-list) (setq regexp-keyword-list *py-func-formats*)) こんな感じのやつを書いてみて.xyzzyに書いてみたのですが、期待通りに動いてくれませぬ。 どこの辺りがおかしいのでしょうか?
>>530 (defvar *py-func-formats*
(compile-regexp-keyword-list
'(("\\bdef[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)" t (:keyword 1 :bold) nil 1 1)
("\\bclass[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)" t (:keyword 1 :bold) nil 1 1)
)))
(add-hook 'ed::*py-mode-hook* 'py-color-setting)
(defun py-color-setting ()
(make-local-variable 'regexp-keyword-list)
(setq regexp-keyword-list *py-func-formats*))
コードとしてはこんな感じになりますが、
どうやらキーワードが regexp に入っていると色がつかないようです。
以下を見た感じ仕様のような気がしますが、一応 ML 辺りで確認してください。
ttp://hie.s64.xrea.com/xyzzy/ml/msg07959.html 全部正規表現キーワードで色付けする必要があるかもしれません。
533 :
530 :2005/04/19(火) 18:42:28 ID:ekgMCABU
534 :
名無し~3.EXE :2005/04/20(水) 19:05:27 ID:sgBZ0Z3E
本買いました。 c-modeなどの説明はどこかにあるでしょうか。 googleったところインデントの変え方だけ見つかりました。 やりたいことは、選択範囲のインデント一括変換です。
>>534 インデントを「変える」ってのがよくわからないけどこういうこと?
(defun indent-selection ()
(indent-region (selection-mark) (selection-point)))
537 :
534 :2005/04/20(水) 19:54:55 ID:sgBZ0Z3E
>>537 余計なお世話かもしれないけどこんなのの方がよくない?
これだとポイント動かないしマークもセットされないし他のモードでも使える。
;; バッファ全体のインデント
(defun indent-buffer ()
(interactive)
(when mode-specific-indent-command
(save-excursion
(goto-char (point-min))
(funcall mode-specific-indent-command)
(indent-region (point-min) (point-max)))))
ちなみに
(indent-region (point-min) (point-max))
だと一行目がインデントされないみたい。
(c:*define-dll-entry c:int putenv ((char *)) "crtdll" "_putenv")や (c:*define-dll-entry winapi:BOOL SetEnvironmentVariable ((char *) (char *)) "kernel32" "SetEnvironmentVariableA") でセットした環境変数は (c:*define-dll-entry winapi:DWORD GetEnvironmentVariable ((char *) (char *) c:int) "kernel32" "GetEnvironmentVariableA") で取得できるのに、 builtin.lのsi:getenv では取得できないのは何故なんでしょう? (let ((buf (si:make-chunk nil 300)) (k (si:make-string-chunk "KEY")) (v (si:make-string-chunk "value"))) (format t "si:getenv key ... ~A~%" (si:getenv "KEY")) (GetEnvironmentVariable k buf 300) (format t "GetEnvironmentVariable ~A~%" (si:unpack-string buf 0)) (SetEnvironmentVariable k v) (format t "si:getenv key ... ~A~%" (si:getenv "KEY")) (GetEnvironmentVariable k buf 300) (format t "GetEnvironmentVariable ~A~%" (si:unpack-string buf 0))) 以下出力 si:getenv key ... nil GetEnvironmentVariable si:getenv key ... nil GetEnvironmentVariable value
540 :
537 :2005/04/21(木) 08:52:09 ID:BryN6elK
>>539 起動時に環境変数をキャッシュしているんじゃないですか?
もしソースを追っかけて裏をとったら報告願います。
>>539 char *e = getenv (v);
return e ? make_string (e) : Qnil;
なんで、キャッシュとかはしていないみたい。
getenvなんでSetEnvironmentVariableした値が取れないのは分かるけど、
なんで_putenvしてもだめなんだろう。
543 :
539 :2005/04/21(木) 21:57:22 ID:vKUTyHq+
>>541 ,542
私も542さんと同じくソースをみて指摘の箇所を見つけたので、
いけるかなー?と思ったんですがダメでした・・・。
何でこんなことをしたいかというと(できるかどうかは分かりませんが)
コンパイルするときとかに、環境変数を指定して呼び出したいけど、
interactiveに呼び出すときは(ラッパーを書かない限り)環境変数を
指定出来ませんよね?
それで*scratch*とかでその都度、環境変数を定義しつつ、
C-x &(execute-subprocess)が呼べたら便利かな〜と思ったのですが・・。
ラッパー書いてもC-x & するたびに環境変数を指定するのは
面倒くさそうですし。
>543 *scratch*で、環境変数として定義したいキーと値の組をリストにしてdefvar、 外部プロセスを実行する際にはmake-temp-file-nameで作った .bat形式のtempファイルに環境変数をセットするシェルコマンドと 外部プロセスを実行するシェルコマンドを記述して、 .batファイルを実行する関数を書く、とか。 激しく面倒臭そうだが。
environで渡せ
>>543 > それで*scratch*とかでその都度、環境変数を定義しつつ、
> C-x &(execute-subprocess)が呼べたら便利かな〜と思ったのですが・・。
execute-subprocess の第4引数は環境変数の指定なので
こんな感じでできなくはないです。
環境変数を定義するコマンドはご自由に。
(defvar *my-environment-variables* '(("HOME" . "C:\\")))
(defun my-execute-subprocess (cmd &optional (arg nil f) bufname directory)
(interactive "e& \np" :history0 'execute)
(execute-subprocess cmd nil bufname *my-environment-variables* directory))
# 545氏に先を越されてしまった。(^^;
547 :
539 :2005/04/21(木) 23:59:00 ID:vKUTyHq+
>544 私が代替案として考えたのは、(擬似)環境変数を自前で管理して execute-subprocess(というかmake-processに)渡す方法です。 ↓のような (defvar *global-environ* nil) (defun putenv (key val &optional (environ *global-environ*)) (check-type key string) (setq key (string-upcase key)) (let ((env (assoc key *global-environ* :test #'string=))) (if env (rplacd env val) (push (cons key val) *global-environ*)))) (defun se-execute-subprocess (cmd &optional (arg nil f) bufname environ directory) (interactive "e& \np" :history0 'execute) (execute-subprocess cmd arg bufname *global-environ* directory)) (define-key ctl-x-map #\& 'se-execute-subprocess) ; ex) 「=>」は*Command Output*への出力内容 ; C-x & echo %HOGE% ; => %HOGE% ; (putenv "HOGE" "12345678") ; C-x & echo %HOGE% ; => 12345678
548 :
539 :2005/04/22(金) 00:00:32 ID:47Ag4LHY
>546,547 っと、同じ事を・・・orz
印刷プレヴューで文字化けっていう話って今まで出てきました? IPAいれたら文字化けして困ってるんですが
xyzzy を win xp x64 で動かした人っていますか?
2ch-modeでまちBBS見れるようにならんかなあ いろんな2chブラウザのスレ見たら、生dat置いてないみたいだから無理か…
よく探しな。
書き込めるしなー
死ぬほど嬉しい
おお!復活か。嬉しい嬉しい。
服部さんのperldb.lって使えている人います? ActivePerl 5.8.6だとデバッガの出力をxyzzyで取れていなくてまったく 使えず、cygwinのperlだと以下のようなエラーになります。 Loading DB routines from perl5db.pl version 1.28 Editor support available. Enter h or `h h' for help, or `man perldebug' for more help. main::(D:/tmp/a.pl:1):$A=1; Unable to get Terminal Size. The TIOCGWINSZ ioctl didn't work. The COLUMNS and LINES environment variables didn't work. The resize program didn't work. at /usr/lib/perl5/vendor_perl/5.8/cygwin/Term/ReadKey.pm line 343. Compilation failed in require at /usr/lib/perl5/vendor_perl/5.8/Term/ReadLine/Perl.pm line 58. at /usr/lib/perl5/vendor_perl/5.8/Term/ReadLine/Perl.pm line 58 Term::ReadLine::Perl::new('Term::ReadLine', 'perldb', 'GLOB(0x10226dc4)', 'GLOB(0x101edc38)') called at /usr/lib/perl5/5.8/perl5db.pl line 6029 DB::setterm called at /usr/lib/perl5/5.8/perl5db.pl line 2203 DB::DB called at D:/tmp/a.pl line 1 Debugged program terminated. Use [1mq[0;10m to quit or [1mR[0;10m to restart, use [1mO[0;10m [4minhibit_exit[24m to avoid stopping after program termination, [1mh q[0;10m, [1mh R[0;10m or [1mh O[0;10m to get additional info. [4mDB<1>[24m [4mDB<1>[24m
howm for xyzzyなんですが、howm-keysを表示しない方法ってあるんでしょうか。 保存のたびに表示されうざったいです。
560 :
名無し~3.EXE :2005/04/26(火) 19:46:45 ID:CqcZxK5/
何のエディタか知りませんが、 >(chmだとエディタの外部ヘルプ機能で逆引きしやすいので) というのを見かけました。 xyzzyにもこの機能があるかしらんと探してみたら、 共通設定にHTMLヘルプというのがありました。 ですが、使い方が分かりません。どう使うのでしょうか。
test
>>562 どうもです。
これは一つのHTMLヘルプしか指定できないようですね。
Visual Studio とか用なのかな。
>563 たぶん (html-help "chmのパス" "キーワード")
otherbbsで、1レス目が自動的にあぼーんされてしまう現象が発生中。 とりあえずjbbsに関しては (defvar *regexp-for-jbbs-shitaraba-parse* (defvar *regexp-for-jbbs-shitaraba-parse-for-get-num* の二カ所の、 (compile-regexp "^<dt> の部分を (compile-regexp "<dt> に書き換えて、スレを再読込させてやれば復帰できる模様。 まちBBSはどうにもうまくいかない。
>>558 "perl -d hoge.pl -emacs" で動く
2ch-mode upされてますね。 なんとなくスピードが上がったような気がします。
2ch-mode ChangeLog 2ch-0.0.1.3 [2005/04/21] dolib.dllのアクセス先を変更。ついでにLISP側から設定できるように。
>>569 うあ、wikiの方はチェックしてませんでした。04/12/29版を使ってました……。
したらばはこれで問題ない……と思いきや、私の住んでる板ではトリップ付きの人が問答無用であぼーん。
トリップの色がカスタマイズされてるから引っかからなくなってました。
*shitaraba-rawmode-line-regexp*の #FF0000 2つを #[0-9a-fA-F]+ にすることで解決できました。
まちBBSは、改めて一通りチェックしてみたところ北海道と近畿だけ1があぼーんになりますね。
なんでだろう、とHTMLを見たら、これらの板だけ1の発言のリモートホストの最後に改行が入って2行に分けられているからのようです。
ん〜、妥当な正規表現を思いつきません……。
>>571 調査ありがとうございます。修正しました。しかししたらばって
いろいろカスタマイズできるんですか。だとすると標準的なやつ以
外はかなりぼろぼろの状態になってそうだ…
まちBBSの方は、2行に分かれているのが問題なのではなくて
(その対処のコードは入っています。ぐちゃぐちゃですが…)、1
の名前の色が変わっているのが原因でした。ちらっとテストした限
りでは大丈夫でしたが、1がトリップ付きのスレについて確認して
いないので、もしかしたらそのスレはあぼーんのままかもしれませ
ん。もしまだ直っていなかったりしたら御報告いただけると助かり
ます。
>>570 SourceForge の方だったんですね。ずっと Junk Scripts の方を見てた…orz
というかNetInstaller
575 :
558 :2005/04/29(金) 16:53:24 ID:NvFNH+DT
>>567 さんきゅ。
あと、perldb-filename-regexp を書き換えたらとりあえず動きました。
(setf *perldb-filename-regexp* "^\\(\x1a\x1a\\)\\(.+\\):\\([0-9]+\\):[0-9]+")
>>572 お疲れ様です。
なんか私ばっかりあれこれ言っているようで非常に申し訳ないです。
まちBBSの方は問題なくなりました。
元々あんまり行かないので持続的な検証は難しいですが。
したらばの方ですが、それなりにカスタマイズできるようで。
この機会に検証してみたところ、管理者限定の名前色が設定されている場合に、管理者発言があぼーんされました。
datの名前部分が、何故かこの場合だけ</b>と<b>が挿入されません。
改善案を書いておきますのでよろしくお願いします。
//我ながら一度に言えよと言った感じで。細切れですいません。
(defvar *shitaraba-rawmode-line-regexp*
の、名前拾う後段:
\\|\\(?:</b><font color=#[0-9a-fA-F]+>\\((.*?)\\)</font><b>\\)?\\)<>\\([^<]*
を
\\|\\(?:\\(?:</b>\\)?<font color=#[0-9a-fA-F]+>\\((?.*?)?\\)</font>\\(?:<b>\\)?\\)?\\)<>\\([^<]*
に。
//あー、自分で修正したのをwikiに揚げた方が良いのかな?
>>576 >なんか私ばっかりあれこれ言っているようで非常に申し訳ないです。
いえいえ、色々調べてくださってとても助かります。
>名前拾う後段:
\\| の前は、名前だけもしくは名前+トリップの場合、\\| の後
はトリップのみの場合の正規表現のつもりです。ですので、後段の
"(" と ")" に ? をつけるのでしたら、それは行わずに、名前を
拾う前段を直す方が自然だと思います。なので…
<>\\(?:\\([^<]+\\)\\(?: </b><font color=#[0-9a-fA-F]+>\\((.*?)\\)</font><b>\\)?\\|
を
<>\\(?:(?:<font color=#[0-9a-fA-F]+>\\)?\\([^<]+\\)\\(?:</font>\\)?
\\(?: </b><font color=#[0-9a-fA-F]+>\\((.*?)\\)</font><b>\\)?\\|
にした方が恐らく無難でしょう。ただ、その管理者限定のレスを見
ていないのでもしかしたら動かないかもしれませんが…。管理者限定レスの例
とかありますか?
また、上記の修正だと、その管理者がトリップ付きの名前を使った場合、データが
<font color=#ff0000>管理者</font> </b><font color=#ff0000>(trip)</font><b>
のような文字列になっている必要があります。管理者がトリップ付きの名前を使う
ってことがあるんでしょうか…。
…それ以前に別に名前なしのトリップもそれ以外もいっしょくた
に扱えるような気もしますが('A`)
>>577 ども。
> \\| の前は、名前だけもしくは名前+トリップの場合、\\| の後はトリップのみの場合の正規表現のつもりです。ですので、後段の
> "(" と ")" に ? をつけるのでしたら、それは行わずに、名前を拾う前段を直す方が自然だと思います。
ああっ、あっさり手抜きがばれた!(w; どうせ見た目変わらないからいいかなーとか(w;;
> 管理者限定レスの例とかありますか?
もう管理されてないだろうな、と言うところで、ここらなんかひっじょーに閑散としてますが。
("Hoge" "jbbs.livedoor.jp" "/otaku/" nil "803") ;
ttp://jbbs.livedoor.jp/bbs/rawmode.cgi/otaku/803/1058258353.dat ("Foo" "jbbs.livedoor.jp" "/otaku/" nil "821");
ttp://jbbs.livedoor.jp/bbs/rawmode.cgi/otaku/828/1058703872.dat 管理者が特殊カラーで1を立てただけだとファイルが見つかりませんになってしまったり。
> また、上記の修正だと、その管理者がトリップ付きの名前を使った場合、データが
> <font color=#ff0000>管理者</font> </b><font color=#ff0000>(trip)</font><b>
> のような文字列になっている必要があります。管理者がトリップ付きの名前を使うってことがあるんでしょうか…。
これはどうなんでしょう。私も管理者がトリップつけたのは見た事ありませんね……。
自分で運営してるわけでもないですからできるのかどうかも知りませんし……。
> …それ以前に別に名前なしのトリップもそれ以外もいっしょくたに扱えるような気もしますが('A`)
色々いじくった結果、これでいけそうです……
"^\\([0-9]+\\)<>\\(?:<font color=#[0-9a-fA-F]+>\\)?\\([^<]*\\)\\(?:</font>\\| ?</b>\\)?\\(?:
<font color=#[0-9a-fA-F]+>\\((.*?)\\)</font><b>\\)?<>\\([^<]*\\)<>\\([^<]*\\)<>\\(.*\\)<>\\(.*?\\)<>\\(.*?\\)$"
トリップが(match-string 3)だけになるため、日付以降一つずつずれますが。
できる限りこっちで動作確認したコードをこのスレとかに書き込むのがいいですかね。
>>579 情報ありがとうございます。
>色々いじくった結果、これでいけそうです……
>"^\\([0-9]+\\)<>\\(?:<font color=#[0-9a-fA-F]+>\\)?\\([^<]*\\)\\(?:</font>\\| ?</b>\\)?\\(?:
><font color=#[0-9a-fA-F]+>\\((.*?)\\)</font><b>\\)?<>\\([^<]*\\)<>\\([^<]*\\)<>\\(.*\\)<>\\(.*?\\)<>\\(.*?\\)$"
>トリップが(match-string 3)だけになるため、日付以降一つずつずれますが。
うーん、すみません、異議をあげまくりで申し訳ないのですが…、トリップの部分は
</b><font color=#FF0000>(trip)</font><b>
だと思うので、それを1まとまりとして捉えて、
^\\([0-9]+\\)<>\\(?:<font color=#[0-9a-fA-F]+>\\)?\\([^<]*\\)\\(?:</font>\\)?
\\(?: ?</b><font color=#[0-9a-fA-F]+>\\((.*?)\\)</font><b>\\)?
<>\\([^<]*\\)<>\\([^<]*\\)<>\\(.*\\)<>\\(.*?\\)<>\\(.*?\\)$")
とした方がよいように思うのですが…いかがでしょうか…(トリ
ップしかない場合、トリップの先頭のスペースがなくなるのでそれ
には ? をつけてあります)?
とりあえずこれを使って修正したものを置いておきます。
http://home.t04.itscom.net/poi/2ch_mode_enhance/2ch_mode_otherbbs.lzh
581 :
580続き :2005/04/30(土) 01:31:33 ID:NyCiMwzC
>>579 さん的に問題がなければおっしゃってください。wikiの方にも上げようと思います。
>できる限りこっちで動作確認したコードをこのスレとかに書き込むのがいいですかね。
そこら辺は御自由になさってくださって構いませんです。ただ今
回のように、「こうした方がいいんじゃ?」「いやこうした方がい
い」という話になると、いきなり各自がファイルを修正してupし直
す方法は不向きなのかもしれないですね…。ううむ…。
>>573 >>574 NetInstaller、Junk Scripts を古いアドレスのままにしてました…orz
新しい Junk Scripts のサイトの方を NetInstaller で登録する
とインストールできました。ありがとうございました。
583 :
579 :2005/04/30(土) 17:03:39 ID:PlTfToFy
>>580 ちょっとお返事遅れました。
そうですね、そちらの方が自然で良いと思います。
私はどうも動けばいいやという思考が先に立ってしまってどうにも。
改めにゃとは思ってるんですが。
動作もばっちりです。
ご丁寧な対応ありがとうございました。
>>583 確認ありがとうございました。問題ないようで一安心です。
それでは、wikiの方にも上げようと思います。
multi-modeでコメントに入ったときに、 second-mode内の色がかわりますが、 second-mode外の色を変えるように改造したいのです。 全体を一回mmm-modeでぬってその後内側をdelete-text-attributesしようとしたのですが 範囲内だけというのがうまくいきません。標準色で塗ろうかと思ったのですがこれもわからず。 外だけ塗る方法ってありますか? あるいは、もうすでに同じようなことをやっている方はいませんか?
>>585 multi-mode で指定した領域に入ったときに,xxx-mode で色付けをするようにしていて,
そのときバッファ全体を xxx-mode で塗ってほしいってこと?
multi-mode はそういうものだったと思っていたが違ったのか
>>585 あ、それいいな。multi-mode は便利なんだけど、あの背景色が
ちょっと見づらいので背景色の色を薄くしてる。確かに外側の色が
変わった方が嬉しい。
588 :
586 :2005/05/03(火) 01:14:47 ID:0WPKT7ae
>>585 ,587
そういうことか.確かにそのほうがいいと思う.
- (apply 'set-text-attribute fp (1+ ep) 'mmm-mode *multi-mode-text-attribute*)
+ (apply 'set-text-attribute (point-min) fp 'mmm-mode *multi-mode-text-attribute*)
+ (apply 'set-text-attribute (1+ ep) (point-max) 'mmm-mode *multi-mode-text-attribute*)
外の背景色を変えるか,内側を変えるかは 設定可能にしてもらえるとうれしいな.
あと,自分はカーソル移動のみでmulti-mode が作動するようにしているけど,現在の
仕様とこの挙動も設定で切り替え可能にしてもらえるとうれしいな.
hatena-diary-modeの調子がおかしい。 一度更新したものをブラウザで更新しようとすると、変な表示になって 改行されないせいか、編集出来ない 改行コードの問題かな
call-process で実行したウィンドウプログラムの hwnd を取得したいのだけど, いい方法ってある? プログラム名とプロセス名が一致していて,かつ,その名前のプロセスが複数ない ならば希望のプロセスの hwnd を取得できる.前者は暗黙の仮定にするにしても, 後者の複数の同一名プロセスがある場合,今実行したプロセスをどう取得したら いいのかわからない. 実際にやりたいことは,katexで dviout を実行したときに位置を指定してから 最大化したいだけ.ただ,いろいろなdviファイルを同時に開くこともあるので 上の問題で悩む.わざわざマウスで位置を設定したウィンドウまで動かされると むかつくので.
>>589 俺は問題なかったけどちゃんと最新版使ってる?
2ch-modeのboard-modeでスレ立てのキーバインドが消滅してるな
2ch-mode の 1.2 と 1.3 で diff 取ってみたら、 board.lc http.lc menu.lc search.lc thread.lc tracking.lc が対応する *.l の変更なしに変わっているみたい。一体何が変わっているんだろう…
>>593 > が対応する *.l の変更なしに変わっているみたい。
どういう状況かわからないので、もう少しわかりやすく状況伝達をお願いします。
>>593 > が対応する *.l の変更なしに変わっているみたい。一体何が変わっているんだろう…
結論から言うと、多分何も変わってません。
バイトコンパイルしなおすだけで異なるファイルが生成されます。
(gensym) で自動生成されるシンボルがあることが原因みたいです。
コンパイルまわりは難易度が高いので自信はありませんけど。
>>594 board.lc http.lc menu.lc search.lc thread.lc tracking.lc は 1.2 と 1.3 で違っていたのですが、
board.l http.l menu.l search.l thread.l tracking.l は 1.2 と 1.3 で同じだったんです。
>>595 >バイトコンパイルしなおすだけで異なるファイルが生成されます。
あ、そうなんですか。なるほど…。ありがとうございました。
2ch-modeのスレ立てってxyzzy内でできないんだね。
久しぶりに 2ch-mode@xyzzy に戻ってみた。 スレ読んで、すぐ消したいときとかってやっぱこっちのが便利。
英辞朗第2版を買ってきたので,いまさらながらpdic.l を使ってみた. めちゃくちゃ便利だなぁこれ.
>>598 変更前は出来ていたのかorz
>592のはキーバインドだけ削られたんだと思ってしまって、
xyzzy内で出来たとは思いもせんかった
>>601 少なくとも1・2年前のバージョンでは "xyzzy内" ではできていなかった.
単純に,スレ立て用のページをブラウザで開くだけだった.
その後,機能upしたのかもしれないが,2ch-modeってそんなに更新してないよね
だから
>>598 が勘違いしているだけだと思う
スレ立てるのって2ch::board-formってやつでしょ? 何年か前に何度か立てたことあるけど。
>>603 調べてみた.
> [2001/04/26]
> デフォルトではスレ立てをブラウザで開くようにした
とあるので,確かにその機能はあったみたいだけど,問題もあったみたい
xyzzyの使い方じゃなくて申し訳ないんだけど 現在Lispを勉強中です。 region内にシーザー暗号があってでコードしたものを出力したいのです fcjjm umpjb => hello world narrowして走査していくのは他のを見て分かったのですが pointにある文字をいじくるのがよくわかりません どなたかお手助けを
scan-bufferとmatch-stringとreplace-matchを使うとか?
>>606 buffer-substring で文字列を読み取って、それに対して文字を操作するとか。
↓たとえばこんな感じ?ほかにもやり方はありそう。
(map 'string #'(lambda (x)
(code-char (+ 2 (char-code x))))
"fcjjm"))
>>606 暇つぶしに。循環リストを使ってみたかっただけですけど。
効率は悪そう。
(let ((c nil))
(dotimes (i 26)
(pushnew (string (code-char (+ i (char-code #\A)))) c))
(dotimes (i 26)
(pushnew (string (code-char (+ i (char-code #\a)))) c))
(setf (cdr (nthcdr 51 c)) c)
(defun decode-Caesar (from to)
(interactive "r")
(let ((ans "") (sub "")
(text (buffer-substring from to)))
(dotimes (n (length text))
(setq sub (char text n))
(if (alpha-char-p sub)
(setq ans (concat ans (nth 50 (member (string sub) c :test #'string=))))
(setq ans (concat ans (string sub))))
)
(msgbox "~A" ans)
)))
てかLispスレってム板だかマ板にないっけ? 落ちた?
2ch-modeでyy.kakiko.comが使えるようにならないかなー とつぶやいてみるテスト
>>611 > 2ch-modeでyy.kakiko.comが使えるようにならないかなー
> とつぶやいてみるテスト
実は現バージョンでも使えます。
板をお気に入りに(手動で)追加してやると、そのままいけます。
なにげにそういうところは多い
>>607 ああ、それが一番楽なのかも
でもXyzzyの勉強でなくなりそうなので
>>608 なるほど、一文字一文字読み取りながらデコードを考えていました
一気に全部読めばいいのか
>>609 先にletする方法ははじめてみました、たしかにそれがないと不便ですね
参考にさせていただいて自分でも作ってみます
>>600 >>605 に同じく
pdic.lってどこで手に入れました?
昔インストールしたのが残ってたとか?
616 :
600 :2005/05/11(水) 06:06:22 ID:M9xqbOxJ
>>605 ,615
ページ消えてますね.自分は昔とっておいたのが残っていました.
作者さんがここ見てて,復活するに淡い期待
617 :
名無し~3.EXE :2005/05/15(日) 15:52:10 ID:+vqMuUjB
xyzzy でファイルを複数開いていた場合、タブが横一列に配列される のですが、数が多い場合、スクロールをずーーーっとしないといけない ので、これを一画面に配列表示したいのですが、そういう事は出来ますでしょうか?
619 :
名無し~3.EXE :2005/05/18(水) 01:51:49 ID:/1Vf5jVM
あげ
JBBS、最近トリップが10桁になったけど、レスがあぼ〜んになるね
>>620 最近jbbsでトリップを見かけないから気付かなかった……。
色つけ&()の代わりに、半角空白+◆を先頭にした色無しに変わってますね。2ch準拠?
(defvar *shitaraba-rawmode-line-regexp*
の文字列を
^\\([0-9]+\\)<>\\(?:<font color=#[0-9a-fA-F]+>\\)?\\([^<]*\\)
\\(?:</font>\\)?\\(?: ?</b>\\(?:<font color=#[0-9a-fA-F]+>\\((.*?)\\)</font><b>
\\|\\( ◆.\\{10\\}\\)<b>\\)\\)?<>\\([^<]*\\)<>\\([^<]*\\)<>\\(.*\\)<>\\(.*?\\)<>\\(.*?\\)$
にして、
(defun convert-shitaraba-format-to-2ch-format
の中の
(trip (match-string 3))
(mailaddress (match-string 4))
(date (match-string 5))
(body (match-string 6))
(title (match-string 7))
(id (match-string 8)))
を
(trip (or (match-string 3)
(match-string 4)))
(mailaddress (match-string 5))
(date (match-string 6))
(body (match-string 7))
(title (match-string 8))
(id (match-string 9)))
に変えるというのはどうでしょ。>作者様
match-stringがずれるのはアレですが。
622 :
名無し~3.EXE :2005/05/20(金) 20:43:01 ID:MvXfrr3y
>>622 (defvar *infoman-list-height* (- (floor (window-height) 2) 2)
"リストウィンドウ高さ")
(defvar *infoman-list-width* (- (floor (window-width) 2) 2)
"リストウィンドウ幅")
こんな感じで割合にしておいてくれると嬉しい。
# (window-width) が120以上って大きなモニタ使ってるんですね〜
>>623 自分の環境のことしか考えてなかた(´・ω・`)
ありがとー、修正しておきました。
>> 626 またまた自分の環境のことしか。。・゚・(ノД`)・゚・。 ありがとー、なおしたー
追い、底のお前
追われ、天井の俺
>>628 それつかってたー
それとソフト連図ってのを使ってて、全部一緒にキーボード操作で管理できたらなぁ(*゚ρ゚)
とおもて、作りました。
632 :
621 :2005/05/21(土) 22:22:07 ID:ufhqprHW
>>624 OKでしたー。
いつもお疲れ様ですー。
>>632 確認ありがとうございました(・∀・)
wikiにも上げました。
>>622 使わせてもらってますが、
フォルダAを表示した後、別のアイテムヘッダを持つフォルダBを表示させると、
アイテムはちゃんと表示できても、アイテムヘッダが切り替わりません。
View内でC-M-nやC-M-pをするとBのアイテムヘッダが表示されます。
xyzzyは0.2.2.234です。自分の環境の問題かもしれませんが、いちおう報告させて頂きます。
>>634 マウスを使って操作するとおかしくなってしまうようでした(´・ω・`)マタヤッテモータ
ありがとー、修正しておきました。
Excelで範囲選択すると元の色が見えるように選択範囲の色が青っぽくなりますが、xyzzyの範囲選択でもそんなことできないですか? grepの結果に色を付けると飛んだときの青いラインは元の色が残ってるのでそんな感じの範囲選択ができるといいなと。
>>638 セレクションの反転表示の時のことです。
キーワードとかpickup-patternで色を付けた部分とかが範囲選択すると分からなくなるので
それが分かるように色が透過した反転表示にできたらいいなと思ったのです。
C+++のマニュアルみたいなのある?Readme,config.lのコメントとか酷すぎ
+一個多いぞ
そういう拡張があんねん。html+-modeみたいなc+++-mode。
有能なプログラマの書いたソフトウェアにはコメントなど不要
>>643 それはその通りなのだが、それにはかなり高いレベルの有能さが必要。
c+++-modeは使っているがそれほど難解な設定は無かった
config には説明があるし、設定例も書いてあるのだが…
>>640 はどこがわからないんだ?
なんていうかな。。。 >>説明があるし その書き方が問題、何処からがコメントで何処からがコードかわかりにくい。 コード部に日本語使うとかありえない。 あと、VC以外のコンパイラーの設定部があったけど、これに関しての説明何処 にもないし。
初歩的な質問でもうしわけないのですが、 C言語等で書き込んだバイナリーファイルの数値データを使って 計算したいと思っています。 で、いろいろ検索してみたんですが、実数データをバイナリーファイル から読む方法が見つからない状況です。 ご存知の人がいたら教えてください。
>>647 っ (open "file.bin" :direction :input :encoding :binary)
649 :
647 :2005/05/27(金) 01:14:21 ID:GlGTodDi
さっそくありがとうございました。
さらに質問なのですが、教えていただいた方法でファイルを開いた後に、
どうやって実数データに変換すればいいかわかりません。
ここのサイトのコードをパクッて(作者様感謝)テストしてるのですが・・・・
ttp://www.netlaputa.ne.jp/~henmi/lisp/xyzzy/common/971113.html (defun test ()
(let ((fp (open "test.bin" :direction :input :encoding :binary))
(i 0) (ch 0))
(while (setq ch (read-char fp nil)) ←ここの処理
(insert (format nil "0x~2,'0x" (char-code ch)))
)
(close fp))
1文字ずつ読み込んで自分で実数に直さないといけないんでしょうか?
>>649 winapi と chunk と構造体を使えばさくっといきそうですね。
>>その書き方が問題、何処からがコメントで何処からがコードかわかりにくい。 個人的には (defvar 変数名 ; ○○の場合 ; ○○の場合の設定例 "変数の説明") となっていてxyzzyで読み込むとすぐに説明が目に付き 非常にわかりやすかったんだがこの辺は人によるよな… >>コード部に日本語使うとかありえない。 コメントや文字列に使うのはありえるだろ。 >>あと、VC以外のコンパイラーの設定部があったけど、これに関しての説明何処にもないし。 変数や関数についてはReadMeにある。 ただ、c+++-modeからメイクやインクルードファイルを開いたりggrepしないなら 特に設定しなくても使えるのでそのまま使うのもありだと思う。 c+++-modeからのメイクは C-c c メイクファイルのパスを入力 なので 複数のメイクファイルを使い分けないときはかなり面倒くさい。 ソリューションのコンパイルは.net持ってないからシラネ。
653 :
649 :2005/05/28(土) 01:11:45 ID:nC/PptR2
>>650 ,651
コメントありがとうございました。
やはり自分で変換しないといけないんですね。
覚悟が決まりました・・・。
>>650 今の私の力量では無理そうなので、最初は無難に変換関数のような
ものを作りたいと思います。
出来たらうpしてみたいと思います。
質問です。 行カーソルのアンダーラインを表示すると '_'や'_'が見えなくなってしまいます。 これを回避するために '_'や'_'の部分だけ文字やアンダーバーの色を変更したり カーソルのある行の背景色を変更する といったことは可能でしょうか?
>>654 (setq inverse-cursor-line t)
Version 0.2.2.230 の ChangeLog 参照
657 :
654 :2005/05/29(日) 00:50:12 ID:ijeFO85x
>>655 ありがとうございます。
この機能、結構困っている人多いような気はしていたんですが、
ぐぐっても見つからなかったんで、不思議に思っていました。
(背景色を変える方でしか調べてませんでしたが…)
まさかChangeLogにあったとは。
長年困ってたんで、ホント助かりました。
行間あければ済む話 あけなきゃ日本語読みづらいし
そう言う問題でもない。
重ならないようなフォントを使うのも手。
すみませんが質問です.「励ましあえ」スレから来たのですが,よく既存のコー ドには lambda 関数に #' が付けてあります.その理由がわかりません.たい ていの場合,付けなくても動くからです. (funcall (lambda (x) (* x x)) 3) => 9 (funcall '(lambda (x) (* x x)) 3) => 9 (funcall #'(lambda (x) (* x x)) 3) => 9 この3つは,全く同じ挙動をするように見えます.何のために,#' を付けるの でしょうか? そもそも,#' や ' が付いても動くのはなぜでしょうか?quote や function が付いているのですから,動かないのが本来のように感じるのです.事実, Scheme の場合だと, ((lambda (x) (* x x)) 3) => 9 ('(lambda (x) (* x x)) 3) => エラー! という挙動になります.ちなみに, (funcall ''(lambda (x) (* x x)) 3) => エラー! (funcall #'#'(lambda (x) (* x x)) 3) => エラー! のように,クウォートが二重以上になるとエラーになるようです. どうしてこのような挙動になるのか,どうにも理解ができません.何を読んだ ら良いのか,教えていただけないでしょうか?
>>661 あまり詳しいことはわからないんですが、とりあえず#'を付けとくと
コンパイル時に関数としてコンパイルされます
あと
> ((lambda (x) (* x x)) 3) => 9
> ('(lambda (x) (* x x)) 3) => エラー!
この挙動は xyzzy でも同じなので、この例を出した意図が今一つわかりません。
CLtL (7.3 Function Invocation) にはこんなこと書いてありますけど。
The difference between funcall and an ordinary function call is that
the function is obtained by ordinary Lisp evaluation rather than by
the special interpretation of the function position that normally occurs.
>>661 > この3つは,全く同じ挙動をするように見えます.何のために,#' を付けるの
> でしょうか?
オレの場合、 lambda 以外の関数と書式が揃うからつける。
664 :
661 :2005/05/29(日) 21:22:42 ID:70A9ILqk
> あまり詳しいことはわからないんですが、とりあえず#'を付けとくと > コンパイル時に関数としてコンパイルされます すみませんがよく分かりません.逆に言えば,lambda 式は関数だと決まって いるのに,#' が付かないと関数としてコンパイルされないということでしょ うか?その場合,どのようにコンパイルされるのでしょうか? また,lambda 式以外で #' を「付けなくても付けなくても良いが,効率化の ためにはつけたほうがよい」という例があったらお教えいただけませんか?私 は「必ずつけなければならない」例しか知りません. > この挙動は xyzzy でも同じなので、この例を出した意図が今一つわかり > ません。 xyzzy-Lisp や Emacs Lisp ではfuncall を介してしか素のlambda 関数を実行 できないと勘違いしておりました.すみません.
ところで私のxyzzyでは >(funcall (lambda (x) (* x x)) 3) は 関数が定義されていません: lambda エラーになるのだが。
666 :
661 :2005/05/29(日) 21:40:19 ID:70A9ILqk
すみませんが,さらに質問です.lambda 式がそのまま実行できることはわかっ
たのですが,
((lambda (x) (* x x)) 3) => 9
は動いても,
(defun make-square () (lambda (x) (* x x))) => make-square
((make-square) 3) => エラー!
は動かないのは,なぜでしょうか?
(funcall (make-square) 3) => 9
こちらは動きます.これって当たり前なのでしょうか?私は大変混乱しています.
>>665 バージョンはおいくつですか?私は 0.2.2.234 on Windows2000 です.
667 :
662 :2005/05/29(日) 21:50:31 ID:slnVczI4
>>664 たとえば
(funcall (lambda (x) (* x x)) 3)
をコンパイルしてみたらそれ自身になりました。
lambda 以外で#'を付けるのはシンボルぐらいしか使ったことないです。
>>666 2.2.230だった。
念のため234にあげたら普通に関数を返すようになった。
とくにChangeLogにlambdaの仕様変更は書いてないんだけど……。
describe-functionでも230ではlambdaを調べられないし。
この辺の影響もあるのかな? > #'
> ((make-square) 3) => エラー!
これはリストの先頭=関数シンボルがリストになっちゃってるからじゃないかな。
リストの先頭は評価せずにそのままシンボルとして関数と判断されるから、make-squareは関数として扱われない。
> (funcall (make-square) 3) => 9
こっちはfuncallの引数としてmake-squareが与えられるから、make-squareは評価されて関数定義が得られる。
669 :
661 :2005/05/29(日) 22:29:47 ID:70A9ILqk
>>667 バイトコンパイルの中身は,完全なバイナリファイルになると思っていたのす
がで,ソースと同じテキストの場合もあるのですね.少々驚きました.
> lambda 以外で#'を付けるのはシンボルぐらいしか使ったことないです。
つまり,「必ずつけなければならない」場合しかほかはご存知ない,というこ
とですね.
現在の私の推測をまとめますと,
・通常の関数の戻り値は,名前空間は変数側らしい.
・lambda 式の戻り値は,名前空間は変数側も関数側も同じで,
#<lexical-closure: (anonymous)> らしい.
・だから,(lambda ... と #'(lambda ... は同じ値が返される.
こう考えると今までの現象の大半を説明できる気がするのですが,' をつけて
も動く理由は,やはりわかりません.弱りました.
670 :
668 :2005/05/29(日) 22:34:26 ID:70A9ILqk
> リストの先頭は評価せずにそのままシンボルとして関数と判断されるから、 ならばなぜ,((lambda (x) (* x x)) 3) のリストの先頭の lambda 式は評価 されて,その戻り値の関数が実行されるのでしょうか? lambda は special-form だから make-square のような関数と同じふるまいを しないと考えるべきなのかもしれませんが,釈然としません.
671 :
661 :2005/05/29(日) 22:35:38 ID:70A9ILqk
672 :
661 :2005/05/29(日) 22:36:42 ID:70A9ILqk
ああ,名前も間違っていた.
>>670 の名前は × 668 => ○ 661 です.
#' は環境を閉じ込める働きをする。 それに対して、quoteは字面だけのことで、それが書かれた環境について 持ち運ぶことはない。 (progn (setf (symbol-value 'x) 'global) (let ((x 'local)) (list (funcall '(lambda () x)) (funcall #'(lambda () x))))) => (global local) (lambda ...) と #'(lambda ...) は同じと思ってていいんじゃないかな。 (lambda ...)はxyzzyの最新版からマクロとして定義されてるようですよ。
674 :
662 :2005/05/29(日) 23:25:45 ID:slnVczI4
675 :
661 :2005/05/29(日) 23:28:16 ID:70A9ILqk
>>673 ありがとうございます.自分も試してみました.
(progn
(setf (symbol-value 'x) 'global)
(let ((x 'local))
(list (funcall '(lambda () x))
(funcall #'(lambda () x))
(funcall (lambda () x))
((lambda () x)))))
=> (global local local local)
これって,'(lambda () x) はクロージャになってないということですか.少々
驚きました.どうしてそんな仕様なのでしょうか.また,
>>670 の疑問はまだ
わかりません.ああ,名前空間は難しいです.
676 :
661 :2005/05/30(月) 00:00:39 ID:70A9ILqk
なるほど,evalmacs.l にこんな記述がありました. (defmacro lambda (&whole form &rest bvl-decls-and-body) `#',form) しかし私の疑問は解けません. ・((lambda (x) (* x x)) 3) => 9 は動くけれど, (#'(lambda (x) (* x x)) 3) => エラー! となるのはなぜでしょう? あと, ・なぜ,(funcall '(lambda () x)) は,let の内側で評価されているにもか かわらず,global の x を参照しているのでしょう? 本当に難しいです.Scheme を知っただけでは,Lisp は全然わからないです. Scheme には funcall はありませんし.
677 :
661 :2005/05/30(月) 00:26:41 ID:MfnDUs6k
ちなみに,
>>675 を Emacs で実行したところ,結果は
(local local local local)
でした.それはそうですよね.Emacs は動的スコープですが,どの式も let
式の内側で評価されているのですから.こちらの結果は,とても納得がいきま
す.Emacs と違う結果になる xyzzy は,どうしてもわかりません.
どうかこれだけお教えください.私はトリッキーなところで引っかかっている
のでしょうか?それとも,当たり前のことが分からないでいるのでしょうか?
当たり前すぎて教えられないくらいの.
いずれにせよ,そろそろ私の理解力の限界です.落ち着いてから考え直して,
考えが整理されるまで,失礼することにします.大変お騒がせしました.
>>676 > ・((lambda (x) (* x x)) 3) => 9 は動くけれど,
> (#'(lambda (x) (* x x)) 3) => エラー! となるのはなぜでしょう?
これはこういう仕様だからということじゃないですかね。
これを評価するときにはlambdaというシンボルは特別扱いされていると...
#'を付けたやつは、そういう書き方が想定外ということなんじゃないかと。
> ・なぜ,(funcall '(lambda () x)) は,let の内側で評価されているにもか
> かわらず,global の x を参照しているのでしょう?
letの内側かどうかなどfuncall関数にはわからない(知らされない)からです。
funcallはシステムから渡されたリストをグローバル環境で評価しようとするだけです。
落ち着いたのに蒸し返すようですみません.
>>677 この話はCommon Lispの話なのでxyzzyよりもそっちで聞いたほうがいいと思いつつ,
自分がわかる範囲内で考えると,最初のは funcall が起こった時点では, x というシンボル
であるのに対し,後の三つは funcall を引数を評価した時点では 各x は let で
束縛したxの値にバインドされている.
通常の変数はダイナミックなスコープではなくレキシカルなスコープだから 最初のは
globalな値を見に行っているんだろうね.完璧には動作をフォローし切れていないけど.
((lambda (x) (* x x)) 3) が実行できるのはよくわかんね.
なんにしても,ここまでの知識はそうそうは必要なくて,
ダイナミックとレキシカル知っていれば十分だと思う.
>>677 だいぶトリッキーなところで引っかかってると思いますよ。
少なくとも、いくつかの問題が絡み合っているので、シンプルには答えにくいです。
確かに Common Lisp とScheme の間での違いについては
ム板の Lisp スレでネタ振った方が幸せになれるかも。
Schemer から見たら Common Lisp はいろいろごちゃごちゃしてるだろうしなあ。
xyzzy 固有の問題としては。
funcall が受け付けるのはシンボルか関数それ自体に限られる、
シンボルが渡された場合にはグローバルな関数を見に行く、ということになっているので、
(funcall '(lambda (...) ...) ...)、てのは Common Lisp 的にはエラーになるのが正しかったり。
別に無理に準拠する必要があるほどのことでもないと思うけど。
ちなみに Emacs では ' と #' は基本的に同じものだったりする。
681 :
661 :2005/05/30(月) 22:34:47 ID:MfnDUs6k
皆さん,ありがとうございます.実はこんなページを見つけました.読んでも
良くわからなかったのですが,いろいろ教えていただいたので,少しずつわか
り始めました.
Scheme、Common Lisp、Emacs Lispの比較
http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/comparison.html Common Lisp と Scheme のセマンティクスの違いは,基本的には,名前空間が
二種類あることだけだと思っていました.それはある程度正しいのだ思います
が,それに伴って,これほど多くのシンタックスの拡張が必要だったとは.こ
れらを全ておぼえて使いこなすには,だいぶ時間がかかりそうです.
私は Schemer と言えるほどではありませんが,lambda 式や高階関数を多用す
るプログラミング・スタイルになじんでいます.xyzzy Lisp でも,やはりそ
のような書き方をしたいのですが,その障壁は思ったより高かったのですね.
Scheme から入った人間にはなかなか分かりづらい,特殊な構文ルール(シン
タックス)がたくさん存在しているようです.
いろいろお教えいただきましたが,
>>666 ,
>>676 の答えは
>>678 さんの,
>>675 ,
>>677 の答えは
>>680 さんの説明が,私にはわかりやすかったです.
ただ,まだわかった自信がありません.もっとじっくり考えてみます.
ということで,本当にいろいろありがとうございました.
なぜにそのスレなのかと小(ry
【叩かれて】Emacs Lisp道場【強くなれ】
460 [2005/05/29(日) 18:46:12] 名無しさん@お腹いっぱい。 <sage>
すみません,きわめて初歩的な質問です.
setq で,関数側の名前空間に lambda 関数をセットするにはどうしたら良い
のでしょうか?つまり,(defun square (x) (* x x)) と同じことを setq で
やるにはどうしたら良いでしょうか?
Common Lisp (というか,xyzzy Lisp)では
(setq square #'(lambda (x) (* x x))) でできるのですが.
xyzzyの使い方が分からぬやし 励ましあえ その7
http://pc8.2ch.net/test/read.cgi/software/1116710824/ 039 [2005/05/29(日) 19:25:40 ID:4evFXdBZ] 名無しさん@お腹いっぱい。 <sage>
すみませんが初歩的な質問です.xyzzy-Lisp で,ある変数の関数側の名前空
間に,lambda関数をセットするにはどうしたら良いでしょうか?つまり,
(defun square (x) (* x x)) を setq でやるにはどうしたら良いか,という
ことです.
Emacs Lisp だと fset という関数があって,
(fset 'square (lambda (x) (* x x))) と書けばうまく行くのですが.どなた
かよろしくお願いします.
685 :
661 :2005/06/01(水) 22:40:44 ID:0TJsJF81
ああ,私は Emacs Lisp スレから,ここにトラブルを持ち込んでしまったようです. このスレの皆さま,大変申し訳ありません.
べつにトラブルじゃなかろ。
多少スレ違いだろうと、そいつが自分より熱心で、
自分レベルあるいは自分より知識がありそうなら(あ、これは俺が抱いた勝手な想像ね)
このスレの連中は黙って成り行きを見る。今回みたいにね。
>>682 ,683が言っているのは、一通り議論が終わったようだから
「なんであんなスレで聞いているのだ(藁」「しかもAAに過剰反応してるよ(藁」
ってところを突っ込んでスレに笑いを添えているだけ。悪気はない。
とゆーわけなので、べつに
>>661 は申し訳なく思う必要もない
なに終わった話蒸し返してるんだよww
ちなみにsi::*fsetっていうのあるから使ってもいいよ
689 :
661 :2005/06/03(金) 01:05:15 ID:IVSWh89g
>>686 そう言っていただけると本当に助かります.切に感謝いたします.
>>688 これはとても便利ですね.ありがとうございます.
690 :
名無し~3.EXE :2005/06/03(金) 09:55:48 ID:Hj2D+fQK
なぁ、www-modeでbasic認証使ってる香具師っている? www-modeで自鯖に設置したp2を使いたいんだが、 UserとPassの入力をしても何故かPassが違うって言われちまう。 URLに埋め込んでもダメっぽい。 一体何が悪いんだorz
>>690 POSTはできてませんが、
GETはできてます。
助けてクッキーモンスター
あれ、2ch-modeで投稿できなくなったね。。。
694 :
名無し~3.EXE :2005/06/04(土) 02:56:34 ID:zZZkSzpQ
>>690 www-modeの中身も見てみたけど
おいらの力量じゃさっぱり分かりませんですた。
p2の(phpの?)basic認証はなぜか駄目みたいだけど、
apache2のbasic認証は使えるみたいなので
そっちを使用することにしました。
スレ汚しスマソ
695 :
名無し~3.EXE :2005/06/04(土) 02:58:21 ID:zZZkSzpQ
694 は 691 に対するレスですた
書けるかな? http.lのhttp-postのクッキー食ってるとこ。 (cond ((string-match *post-result-cookie* body) (unless (> loop *http-post-loop-max*) (incf loop) (let ((cookies (mapcar #'(lambda (x) (if (string-match "\\([^=]+\\)=?$" x) (list (match-string 1) "") (split-string x #\= nil " "))) (split-string cookie #\; nil " "))) (set-cookies (let (cookies) (dolist (x header) (when (and (equal (car x) "set-cookie") (cadr x) (string-match " *\\([^=]+\\)=\\([^;]+\\)" (cadr x))) (push (list (match-string 1) (match-string 2)) cookies))) cookies))) (when (set-difference set-cookies cookies :test #'equal :key #'car) (http-server-cookie-set url (format nil "~:{~A=~A;~}" set-cookies)) (mapc #'(lambda (x) (setq set-cookies (adjoin x set-cookies :test #'equal :key #'car))) cookies) (setq cookie (format nil "~:{~A=~A;~}" set-cookies)) (set-buffer buf) (return-from http-post (http-post url :post post :referer referer :cookie cookie :loop loop))))) nil)
>>696 対応サンクスです。
書けるようになった・・・のかな?
この規制って対象は全鯖?
699 :
名無しさん :2005/06/04(土) 11:36:39 ID:Qgt+2ga+
書き込めますようね
おお書きこめた! ありがとう!
>>696 ∧_∧
オツカレチャ━━━━━━(´∀` )━━━━━━ソ!!!!!
/ ヽ
/ 人 \\ 彡
⊂´_/ ) ヽ__`⊃
/ 人 (
(_ノ (_)
>>696 サンクス、いけた
けど、今回の仕様変更について書いてあるスレとかあったら教えてくださいな
運営のどっかにあるのかな
705 :
703 :2005/06/04(土) 18:16:56 ID:sqNcsEIv
>>696 書き込めました!
有難うございます!!
書き込めないのってどこの板? 特に問題なく書き込めてるけどなあ…。
http.lの何行目から書き換えるのか教えて抱けると大変ありがたいです。 おつかれさまです。
ワロスwwwwwwwwwwwwwwwww
>>088 [2005/06/04(土) 20:55:42 ID:zqT6LFIL] 名無しさん@お腹いっぱい。 <sage>
>>
>>87 >> http.lの771行目辺りから似たようなところがあるのでそこを書き換えて
>> バイトコンパイルしてダンプ
711 :
名無しさん :2005/06/05(日) 20:56:43 ID:vbI2vU/v
>>708 つーか1行目で検索かけりゃわかるだろ。
713 :
50 :2005/06/06(月) 21:45:15 ID:gmVtoAo1
ありがとうございました。コレで書きまくれマス。
亀本飼いました。
自分なりのC++モードを構築したいです インストールしたディレクトリ下の cc-mode.l を 適当に書き換えたつもりですが、うまくいきません (そもそも、このファイルを書きかえるものでしょうか? 別ファイルを用意してそちらを xyzzy に読み込ませるように 設定するのでしょうか?) cc-mode.lc があったのでよそのディレクトリに 外したりしてみましたが、かわりませんでした (cc-mode.l はどんなタイミングで評価されているのでしょうか?) 具体的にどうしたいのか、というと、インデント幅を4にして C-j を改行とインデント、C-m を改行するだけ、 などです。 おしえてください。よろしくおねがします。
>>715 ~/lisp 以下のを書き換えるなら、再ダンプしないと反映されない。
キーバインディングやインデント幅の変更ならそこまでする必要ないから
.xyzzy に書いたほうがいいと思う。
よくわからないまま試行錯誤したら、 なんとなくうまく行った気がします 以下の設定を .xyzzy に書きました (setq c++-indent-level 4) (setq c++-continued-statement-offset 4) (setq c++-comment-indent 4) (define-key ed:::c++-mode-map* #\RET 'newline) (define-key ed:::c++-mode-map* #\C-j 'c-newline-and-indent) 問題ありそうなところがあればご指導おねがいします よくわからないので、unless とか boundp とかありません
>>717 > (define-key ed:::c++-mode-map* #\RET 'newline)
> (define-key ed:::c++-mode-map* #\C-j 'c-newline-and-indent)
シンボルが間違っているんだけど、写し間違い?
(define-key ed::*c++-mode-map* #\RET 'newline)
(define-key ed::*c++-mode-map* #\C-j 'c-newline-and-indent)
それ以外は問題ないです。
> シンボルが間違っているんだけど、写し間違い? そうです。心配かけました
>>696 乙です〜。でも、「ブラウザを立ち上げ直しててください」エラ
ーが出る板があります。
関係あるかどうかわからないのですが、
(if (string-match "\\([^=]+\\)=?$" x)
(list (match-string 1) "")
(split-string x #\= nil " ")))
は、x が "test=hoge" だと
("hoge" "") になってしまいます。
(if (string-match "^\\([^=]*?\\)=\\(.*\\)$" x)
(list (match-string 1) (match-string 2))
(list x ""))
とした方がいいような気がします。これが「ブラウザを立ち上げ
直してください」の原因かどうかはいまいちわかりませんが…
2ch-mode用にIDの抽出機能をここで拾ったが,最近は ID の後ろに BE と付くことがあるんだね. その場合,うまく抽出できてなかったので正規表現を修正してなんとなく動くようにしてみた. --(defvar *2ch-extract-regexp* (compile-regexp "ID:\\([^] ]*\\)\\( \\|]\\|$\\)")) ++(defvar *2ch-extract-regexp* (compile-regexp "ID:\\([^] ]*\\)\\( \\|]\\|$\\)"))
間違えた orz とにかく,*2ch-extract-regexp* を ++ のように修正するってことです
723 :
696 :2005/06/09(木) 23:11:14 ID:N4Jxp3rm
該当個所を全部消して(コメントアウトして)置きなおした後、 バイトコンパイルしてダンプ再生成したら書き込めたよ。
726 :
724 :2005/06/10(金) 00:27:22 ID:X50fQBkN
>>725 該当箇所って771-790行めまでですよね?
バイトコンパイルは http.l だけでOK?
727 :
725 :2005/06/10(金) 00:37:39 ID:rZmAzzwZ
自分の場合はそれでいけたよ。
728 :
724 :2005/06/10(金) 00:43:52 ID:X50fQBkN
うーん、そっすか・・・何がいけないんだろう。
729 :
720 :2005/06/10(金) 00:59:23 ID:1bCgglxZ
>>723 自分の場合はシューティング板で出ました…って今試してみたら
出ませんでした。(゚∀゚)アレ?
自分の勘違いだったのだろうか…。お騒がせしてすみませんでし
た。ただ、POSTするCookieが、
1回目
Cookie: NAME=; MAIL=sage
Cookie要求された後の2回目
Cookie: sage=;NAME=;PON=XXXXXXXX.XXX.ne.jp;HAP=999999;
みたいになるので、
>>720 の修正はした方がいいような気はします
が…。
730 :
名無し~3.EXE :2005/06/10(金) 18:50:19 ID:5RxgAZ5Y
tterm.l について質問です. とりあえず tterm で, SunOS と bash + cygterm にそれぞれログインできました. SunOSのほうは,日本語以外とくに問題はありませんでした. ただこれは,もともと日本語がうまく表示できていなかったので, tterm が原因ではないです. bash + cygterm のほうは,いろいろ設定を変えてみましたが,いまいち 安定しません. まずこちらも日本語が表示・入力ができません. また,ラインモードはいいんですが,キャラクタモードで ヒストリを使うと, C-p だけの場合はいいですが, C-n を使った時点でバグります. その後はターミナルがバグって使い物になりません.他のターミナルでも 時々起こる,あのプロンプトも含めすべてが漢字になってしまうやつです. *tterm-input-encoding*, *tterm-output-encoding* は cygwinの場合, 何に設定するのがいいでしょうか?
732 :
731 :2005/06/11(土) 01:44:11 ID:eBKXM0Nt
それとついでに .tterm の読み込み時のカレントバッファは *tterm* の方がよくないでしょうか. 自分は,下のように変えて期待通りの動作をしています. 何か問題があれば突っ込みお願いします. (defun tterm (&optional host port &key user) (interactive) - (trap-errors - (load "~/.tterm" :if-does-not-exist nil :verbose nil :print nil)) (unless host (setq host (completing-read "Host: " *tterm-favorite-hosts*))) (multiple-value-bind (term cmd) (tterm-init-buffer) (trap-errors + (save-excursion + (set-buffer term-buffer) + (load "~/.tterm" :if-does-not-exist nil :verbose nil :print nil)))
>>731 私はckとputtyでぬくぬくと生活していてcygtermは使ったことが
ないので、tterm使いの方のフォローがあるといいですね。
> *tterm-input-encoding*, *tterm-output-encoding*
これは接続先の環境に合わせるのか基本です。
全体的にいうとLANGとかLC_CTYPEとかLC_MESSAGEとかの
関係は勿論、.inputrcにも注意したりtermcap/terminfoとの関係も
あっていろいろ面倒ですよね。
> .tterm の読み込み時のカレントバッファは *tterm* の方がよくないでしょうか.
何が問題だったのか分かりませんが、好きにいじれば
よいのではないでしょうか。
長い夜の中で、心を殺されぬよう・・・ひたすら爪を研ぐ!
*scratch*でメニューから「ローカル設定」「もろもろ」で 「インデントにタブを使う」をチェックしているのですが、 *.cppファイルを新規に開くと、そのチェックが 知らない間に外れています (空白だけを使ってインデントする) 常にタブを使ってインデントするように設定するには どうすればいいのでしょうか
>>735 > 常にタブを使ってインデントするように設定するには
> どうすればいいのでしょうか
(setq-default indent-tabs-mode t)
ローカル設定はそのバッファだけの設定。
他のバッファには影響しません。
# だって「ローカル」だもん。
737 :
735 :2005/06/14(火) 01:13:25 ID:17DX1Tz6
>>736 もしかして .xyzzy に
(setq *c++-indent-tabs-mode* t)
とかいておけば、C++では常に
タブにインデントを使う、になりますか?
あと、ローカル設定の意味がわかりました(^^)
>>737 > もしかして .xyzzy に
> (setq *c++-indent-tabs-mode* t)
> とかいておけば、C++では常に
> タブにインデントを使う、になりますか?
なります。
$XYZZY/lisp/cc-mode.l の91行目の
(setq indent-tabs-mode *c++-indent-tabs-mode*)
な所で値をセットしています。
見たのですが、よくわからない… 737の設定でまずいことってありますか? 737をC++で記述すると cpp_indent_tabs_mode = true; // グローバル変数をユーザーがセットした indent_tabs_mode = &cpp_indent_tabs_mode; // xyzzyが内部ポインタをセットした こんなかんじかなと想像するのですが…
>>739 > 見たのですが、よくわからない…
> 737の設定でまずいことってありますか?
特に無いと思います。
> 737をC++で記述すると
> cpp_indent_tabs_mode = true; // グローバル変数をユーザーがセットした
> indent_tabs_mode = &cpp_indent_tabs_mode; // xyzzyが内部ポインタをセットした
> こんなかんじかなと想像するのですが…
個人的なイメージですが
バッファクラスのメンバ変数 indent_tabs_mode があって
コンストラクタで
indent_tabs_mode = cpp_indent_tabs_mode;
な感じで初期化される。
というのが近い感じです。
>>740 なるほど。
コンストラクタというのは、なにかしらC++ファイルを開く時に
xyzzyのフックかなにかで生成されるときですよね、たぶん。
長々とつきあっていただきまして、ありがとうございました。
742 :
名無し~3.EXE :2005/06/17(金) 15:43:39 ID:iByhi5Gh
あの、すいません xyzzyいつも使っているんですが、なんかあるキー操作ミス(なにでミスったのか 覚えていないのですが)をしたら、一定範囲しか操作できなくなって、 おっと、とおもってundo連打したらエラーメッセージが大阪弁でした。 これは一体なんでしょうか。。。
743 :
名無しさん :2005/06/17(金) 15:55:00 ID:Wh7EQFXC
>>742 C-x w で直るかも
ナローイングって最初間違ってなると焦るよな・・・
>>742 narrow-to-regionだね。デフォルトでは C-x n だったっけ。
操作対象を現在のリージョンだけに限定する。置換とかで特に役に立つ。
解除するのはwiden、デフォルトでは C-x w 。
エラーメッセージは亀井氏の遊び心満載。
>>743-744 ありがとうございます。再び大阪弁を拝めました。
しかしなぜここだけ大阪弁なんでしょうか。
超謎。
なぜ、そこだけと決めつけるのか。
なぜ、自分に突っ込むのか
2バイト文字に junk とか punctuation といった シンタックスを与えることってできませんか? (set-syntax-junk *xxx-table* #\.) (syntax-junk-p #\.) とかしても t が返ってきません
>>749 > 2バイト文字に junk とか punctuation といった
> シンタックスを与えることってできませんか?
できないっぽいです。
C++ソース内でASCIIの範囲外だったらnilを返すようになっているように見えます。
>>750 ASCIIしかだめでしたか.
調べていただきありがとうございました.
デフォルトだとスレ一覧のsubject.txtが更新時に上書きされちゃうけど、 これを残しておく方法とかないかな。
>>752 2ch-modeの話?
つうか、何で古いファイルを残しておこうとするのか?
Firefoxだと罫線モードで書いた表くずれませんか?
>>754 等幅フォントでのテキスト表示以外で崩れるのは当たり前じゃないですか?
それとも Firefox 特有の何かがあるのですか?
>>753 すんません。2ch-modeでの話です。
残しとく理由ですか?
私過去を振り返って懐かしむタイプの人間なんですよ。
>>757 コード書くのが面倒だろうから,普通のバックアップソフトで定期的に
保存すれば? おれは siteinit.l とかはそうして保存してるけど.
更新するたびにっていうんでなければ *kill-xyzzy-hook* あたりに、 ~/.2ch 以下を検索してコピーする関数をいれとけばいいのでは。 面倒ってほどでもないかも。
>>758 ,759
そういうやりかたもありですね。
ありがとうございます。
>>754 等幅フォントで表示される部分で表が崩れるならば異常ですが、
プロポーショナルフォントで表示されていて表が崩れるならば正常です。
762 :
名無し~3.EXE :2005/07/03(日) 22:48:29 ID:brUHaOyD
xyzzy本体で追加して欲しい機能、修正してほしい不具合ってなに?
>>762 フォントサイズをlispから変えられるようにして
>>762 IMEが(ローマ字でなく)かな入力になってるとM-xで半角カタカナが入るのを直して欲しい。
アーカイバ機能を強化して欲しい。 書庫ファイルを解凍せずに編集したい。できるけど
全角モード時に、何故かCtrl+Spaceでリージョン開始ができないのをどうにかして欲しい。
message-boxを任意にエディットボックスモードにできるようにしてほしい。
>>767 唐突に何故。
MLがあまりに淋しすぎてネタを求めて亀井さん降臨ですか?
私は特に不満はないですが、どこかのスレでlispコードが
Emacsの4倍遅いとか酷評されてたのが気になる程度。
WindowsがXの4倍早いから心配ない
>771 IMEのon/offということではなく、たぶんカナロックとかの問題。 M-xとか2ストロークの2打目とかでカナロックがかかったままになっていて 半角カタカナが入ってしまうのではないかと憶測。
>>762 行番号の幅を変えられるようにしてほしい。
den8view.l で dde-initiate の所でフリーズするのを直してほしい。
>>762 BMP内のunicode文字で表示できずにゲタになってしまうものを
表示できるようにしてほしい。
TAGS ファイルの作成で ソースディレクトリや階層を記憶してほしい ( XTAGS にその情報があって読み込めばよい? )
ミニバッファに入力した文字列の履歴を覚えているのをモード別にしてほしい
ホームディレクトリを認識して、~/ で find-file 等が できるようにして欲しい (ってできましたっけ?)。
>>778 ホントですか? XYZZYHOME ではないですよ。
781 :
774 :2005/07/07(木) 13:00:00 ID:O0T5KNEo
>>775 /
/privctrl/
/src/
/src/zlib/
みたいな階層でプログラムをしているとき、
/src/zlib で XTAGS 作るときのソースディレクトリは
ダイアログでは /src/zlib になるけど、本当は
/ じゃないとダメだよね。
毎回 /src/zlib を / にするのが面倒、ということ。
/src/zlib/XTAGS には
#USE ../../
と書かれているのだから
/
で解釈してよ、ということ。
ついでに階層数も 2 とか覚えろと、ということ。
>>781 こんな?
E:\tmp\lisp>diff -wu maketags.l~ maketags.l
--- maketags.l~Fri Mar 26 01:07:44 2004
+++ maketags.lThu Jul 7 19:56:24 2005
@@ -106,7 +106,12 @@
(interactive)
(multiple-value-bind (result data)
(dialog-box *make-tags-file-dialog-template*
- (list (cons 'src (default-directory))
+ (list (cons 'src (if (file-exist-p (merge-pathnames *tags-file-name* (default-directory)))
+ (with-open-file (s (merge-pathnames *tags-file-name* (default-directory)))
+ (let ((line (read-line s)))
+ (when (string-matchp "^#USE \\(.*\\)$" line)
+ (append-trail-slash (merge-pathnames (match-string 1) (default-directory))))))
+ (default-directory)))
(cons 'subdir *make-tags-file-subdir*)
(cons 'depthspin
(if *make-tags-file-subdir*
calcモードで10進時、先頭に0があると計算ちょんぼするの直して欲しい。 $ 300-020 284 ( ̄□ ̄;)!!
ちょんぼじゃなくて単に八進リテラル扱いされてるだけじゃないかそれ
>783 先頭に0をつけると8進数として認識されるから。
うおーリロードしてなかったスマソ。
>>782 その通りだよ。
あんたすごいよ。
ありがとうだよ。
xyzzy の拡張でさ、エクセルみたいな事ができるのって無いかな? row, column でデータが区切られててさ、 列毎の合計とか行毎の平均とかが計算できてさ、 保存する時は、タブかカンマで区切って保存してさ、 で、タブかカンマ区切りのファイルを読み込めて。 そんな感じのあったら教えて下さい。
つExcel
ウオォ〜アンマァエアウエァ〜♪
>>782 XTAGS のある一番上の階層では
ソースディレクトリが空になります…
>>789 計算の部分以外はcsv-modeで出来るとおもう。
795 :
789 :2005/07/08(金) 23:38:00 ID:lJcWRso1
>793 計算の部分以外はcsv-modeで出来るとおもう。 トンクス。デフォでは入ってないようなんで、ちと探して入れてみる。 で、計算の部分はいったい誰が書いてくれるんだい?
まいくろちっぷすxyzzy部門ッテオヒッコシシマシタ?
>>795 マジレスすると探して見つからないなら自分で書くのが吉。
こういうのは欲しいと思った人が作るのが基本なので、
欲しいと思う人がいなかったら作ってもらえる確率は低い。
lisp 知らないなら勉強汁。
>797 ヤパーリ書かれてしまつたよ。 今日(モウキノウダヨ)、紀伊国屋に逝ってlispの本を調べたんだけど、駄本ばっか。 シンボルのスコープの話しや、パッケージの使い方・作り方・仕組みが全然書いてない。 kcl のあの名著は絶版でつか? オンラインの良い資料キボンヌ >793 csv-mode 入れてみたぞ。↓が作者なのかな。 ohkubo.s53.xrea.com/xyzzy/index.html#csv-mode 使ってみた感じ、キーバインドがしっくり来ないけど機能は良かつた。 計算を awk か perl か python にまかせる前提なら、このcvs-mode で間に合うかも。
ハチョパキッ。
>799 Paul Grahamの著書「On Lisp」の日本語版 dd。pdf 保存してがりがり読んでまつ。 >801 kcl っていうと湯浅先生のこれ? それそれ。一冊欲しい。ぜひ手元に欲しい。っていうか誰かくれ。 一応見れる場所にはあるけど見に行く手間がねぇ・・・ > ところでシンボルのスコープって、名前空間の話だよね? そうそう。レキシカルだとかダイナなんとか。他にパッケージ越しの参照とかがわからん。 ソースを見たらふいんきは掴めた。んだが、正確には不明だし。 ;;以下参考。オレが(今の時点で)書ける、一番複雑なコード ; R[Ω] to G[ひ] = (R[Ω] to G[S]) コンダクタンス アドミタンス (defun G(R) (/ 1.0 R)) ; 抵抗の並列接続 (defun res(r1 &rest rrr) (if rrr (G(+(G r1)(G(apply 'res rrr)))) r1))
On Lispいいな。会社に持ち込んでこそっと読もう。 なんだ、湯浅先生のやつネット書店でもまだ取り扱ってるじゃん。あげませんw
On Lisp は最初のほうは目から鱗だったけど途中から難しくなって挫折した。 難しくなるというよりテクニック集みたいな感じになって 読むのがめんどくさくなったというほうが正しいかな。 まあでも最初のほうの関数的プログラミングの考え方だけでも読む価値はあると思う。
(declare (special がいまいち理解できません。 どなたか教えてください。
>>807 symbol を special変数 にします。
「special変数」はわかっていますか?
説明を書いてみてください。
>>807 まず reference の declare の項は読んだか?
読んでないのならそれから嫁.話はそれからだ.
読んでいるなら,何が分からないのかもっと具体的に
>>806 前半は関数型プログラミング入門、中盤はマクロのチュートリアル、
後半はマクロのケーススタディ、って感じだね。
中盤以降は必要を感じたら適宜、って感じでもいいと思う。
それなりの規模のアプリケーションを書くための基礎ライブラリをどう書くか?
みたいな感じのことをやってるので、ちょっとスクリプトを書きたい、
という場合には話が大きすぎて実際の応用が見えにくい感はあるし、
関数であらかた片がつくところでマクロを持ち出すのは迂遠でもある。
特に xyzzy の場合エディタ用の充分なライブラリは既にあるわけだしね。当然だけど。
まあマクロ自体が埋め込み言語を作る用途に一番力を発揮するものだし、
そうなるのも仕方がないけど。
multiple-replace.lを使わせていただいてます。 自分で設定した置換内容のリストは、「保存」をするとどこかのファイルに 保存されるのでしょうか。そうであれば、そのファイル自体を編集して 置換リストを作りたいのですが……
>>811 ども。
現状では multiple-replace.l の置換内容のリストは普通の置換
(replace-dialog) などと同じくヒストリに保存しているため、
.xyzzy.history に記録されています。
しかし、上記ファイルを直接編集するのはあまり宜しくありません。
~/.multiple-replace といったファイルに対して保存&更新する
ということも過去に考えはしたのですが、実装するには至ってい
ません。
どういう風な実装が、皆さん管理の手間なく使いやすいでしょうか?
>>812 .ini でよく用いられる形式に一票
シンプルで使いやすそうな気がします.
[適当な名前1]
search1=A[BC]
replace1=D\\1
regexp=t
[適当な名前2]
search1=ABC
replace1=DEF
regexp=f
のように.
ひとつのファイルにいくつも書けるか1つだけかは
どちらでもいい気もします.
814 :
811 :2005/07/13(水) 09:56:45 ID:pPU2+3Bw
さっそくありがとうございます。
>>812 別ファイルに保存できると、他のxyzzyユーザーとの共有という
意味でも格段に便利だと思っています。
ぜひご検討を……
ファイルの形式については、わたしも
>>813 に一票投じます。
Kamail の振り分け設定ファイルみたいに (設定名1 search1 replace1 regexp1) (設定名2 search2 replace2 regexp2) ・・・・・・・・・・・・・ とか楽では。
>>815 search1 は リストの2番目とかだと,フォーマットを忘れそう.
(設定名1 :search1 "ABC" :replace1 "DEF" :regexp t)
とかなら,書くとき冗長と思うかもしれないけど,時間たってから読み直すときに楽だと思う.
どうせ2回目以降はcut&pasteでしょ.
でそうして,replace1 に与えるものは文字列だけじゃなくて関数も渡すことができるどうでしょう.
引数は match-data で得られる値,それを使って置換する文字列を組み立てる関数を指定できる.
つまり,同時置換が可能な scan-buffer として multiple-replace を使用できるってことです.
でもこうなると, multiple-replace 本体にも手を入れる必要が出てきます.
なので,何が可能なように実装するか,その辺の判断は作者さんに任せるとして,
とりあえず要望としてあげておきます.
もともとの要望は
>>811 > 置換リストを作りたい
ということなので、置換リストのファイルを読み込んで、
ダイアログにセットするような関数があればいいんじゃないですか。
置換のリストはタブ区切りでもカンマ区切りでも何でも。
すぐ上でやられてるし。。。鬱死
せっかくなので報告。 環境: fedora core4 手順: ・fc3用のrpmを本家から持ってきてインストール ・~/.wine/c_drive/windows/systemにC:\WINNT\system32 にあるファイルをすべてコピー。 # もっとハードルが高いものと思って敬遠していたのですが、 いまは楽ちんみたいです。 filerで落ちたりすることはありませんでした。
WINNTってことは2000かな
FreeMind-mode ない?
>>822 xyzzy を使ってやることではないような気が・・・と個人的には思った。
テキストベースじゃきつくない?
了解
ちょっと質問お願いします。 grep-dialog からの grep 結果をファイル名順にソートして表示したいと思っているのですが、 非同期でgrep のときは glob.l の107行と108行の間に (setq files (sort files #'string-lessp)) を追加すればいいようなのですが、非同期でないときはうまくいきません。 glob.l の64〜72行あたりを変えればいいような気がするのですが、難しいです。 方法をお分かりの方、ご教示お願いします。
826 :
825 :2005/07/17(日) 14:14:36 ID:07SblOkM
自己レスですみませんが、 grepd.l の77〜92行を (dolist (d dirlist) (let ((files (sort (directory d :recursive *grep-subdir* :file-only t :wild file) #'string-lessp))) (dolist (f files) (when (scan-files-1 f pattern temp scanner) (setq found t)) (when found (setq tick (get-internal-real-time)) (when (> (- tick last-tick) 500) (setq last-tick tick) (set-buffer buffer) (goto-char (buffer-stream-point *standard-output*)) (refresh-screen) (setq found nil))) (do-events))))))) に差し替えれば一応OKみたいです(他の拡張などに影響が出るかもしれませんが)。 お騒がせしました。(^^ゞ
827 :
名無し~3.EXE :2005/07/17(日) 15:24:22 ID:bwCkWVLA
box-drawing-modeをマウスで使うことはできないんですっけ?
>>827 ;テキストモード時の色設定 以下と、
;;テキストの色を変更する 以下を別々にコメントアウトするとどうなるでしょうか。
どちらかだけをコメントアウトした場合でも同様の症状が出ます?
あと、ダイアログの「非同期でgrep」に
チェックを入れた場合と入れなかった場合で違いは出ますか?
複数の開いたファイルのタブをマウスではなく、キーで、 選択切り替えたしたいのですが、良い方法ありますか?
>>830 > 複数の開いたファイルのタブをマウスではなく、キーで、
> 選択切り替えたしたいのですが、良い方法ありますか?
・F2 (select-buffer)
・C-x b (switch-to-buffer)
・C-x C-b (list-buffers)
あとは
next-buffer と previous-buffer とか
ディスプレイ複数つかってて、 プライマリで無いほうにxyzzyを持っていって終了しても ウィンドウの位置を覚えていてくれない・・・ これって設定でどうにかできますか?
>>832 コマンドラインオプションを使うとか。
(xyzzy/html/00README.html に説明がある)
835 :
827 :2005/07/18(月) 23:20:51 ID:XDGsi2Rv
なんかアクセス禁止?になってたみたいでレス遅れましたすみません。
>>829 >どちらかだけをコメントアウトした場合でも同様の症状が出ます?
同様の症状が出ます。
両方をコメントアウトすると、grep開始→ちょっと固まったっぽい挙動1〜2秒→grep完了となります。
>あと、ダイアログの「非同期でgrep」に
違いは出ないです。相変わらず固まってしまいます。
OCNか?今回は災難だったな。 次規制食らったら運営カテゴリの板見に行くといいよ。
839 :
837 :2005/07/19(火) 21:41:21 ID:AAEMAsTX
>>838 ウッヒョォオオオオ!有難うございます!
fortranのプログラム作成だけならLinux起動するよりxyzzyで編集してcygwinの方が
楽だと最近思って移行しようとしています。
検索がぜんぜん足りていなくて済みませんでした
>>834 普通キーボード見ないから結局関係ないんじゃない?
>>834 これを使えばキーボードでもぐらたたきができる!
843 :
名無し~3.EXE :2005/07/22(金) 21:41:19 ID:mUubCEAv
今更で恐縮ですが>290-291はどうやって2ch-modeに 組み込めばいいんですか?
>>843 全部まとめてconfig.lにコピーして下さいな。
>844 config.lにコピペしましたが動かないです。とりあえず ダンプもしなおしたのですが。 load-liblyでは動くのですが環境の問題なのですかね
config.lc があるのにコンパイルして無いとかいう越智なのでは
>>846 config.lcは無いのですが・・・
他の方はconfig.lに記述で問題ないとなると・・・
config.lには2ch_mode_otherbbsや他にもいろいろ書いているので
それらの何かが問題ありなのかも知れません。
ひとつずつ外しながらやってみます。
どうもありがとうございました。
>>848 アドバイスありがとうございます
しかしsiteinit.lも.xyzzyも何のために書いたのか
分からない記述が結構あって泣けてくる
お前たちのsiteinit.lは何行ぐらいあるのか教えてくらさい
1669行会ったよ。 LISP書けないから全部コピペだけど。
xyzzy で使ってる lisp ( *.l )って、emacs でもそのまま使えるよね?
駄目だろうな。
>>852 emacs は emacs lisp
xyzzy は Common lisp
仕様が違うので無理だと思った方がいい。
5800行でした
すごいな 俺1000行くらい
siteinit.l は355行しかない .xyzzy は1400行ぐらい
siteinit.l: 130行 .xyzzy: 44行 なんか悔しい。
siteinit.lがちょうど1000行ぐらい .xyzzyはよくワカンネから使ってない
siteinit.lは1000ちょい。 .xyzzyは400行のうち半分コメントアウト。 でもsite-lispにほかの.lも書いてるのであんまりsiteinitの行数に意味はなかったり。
>>844 まじで!?
該当箇所をsearch.lに挿入後コンパイルし直して使ってるよ。
問題なく使えてるけど、もしかしてやっちゃったかな?
>>862 > 該当箇所をsearch.lに挿入後コンパイルし直して使ってるよ。
> 問題なく使えてるけど、もしかしてやっちゃったかな?
問題ない。
ただし、2ch-modeをバージョンアップする時に上書きされる危険性があるのでそ
れを忘れないようにしないといけない。
お勧めはやっぱり、 ~/.2ch/config.l だけどね。
864 :
855 :2005/07/24(日) 03:37:42 ID:k6j8Trok
<チラシの裏> ダンプファイルが大きかったので,autoload に少し直してみた. ダンプが 100kb 減ったけど,体感できる差はやっぱりなかった. でも設定をいじってるときは楽しいな </チラシの裏>
>>858 たぶん2秒ぐらいかかってる。
あんまり気にしてなかったんだけどそう言われれば遅いかも。。
昔のemacsに慣れてる人はあんま気にしないのかも。 10秒くらいかかるのは当たり前だったし。
お前らそんなにsiteinit.lが長いんなら, 100行くらいの俺に 半角英数と数字に対してdarrevが随時適用されるコード教えてください. wikiに乗ってる奴の正解版ね.
>>867 darrev を含むページは見つかりませんでした。
c-modeにちょっとバグがあるっぽいのだが /* コメント /**/ こういう風なコメントの書き方すると次の行のインデントがおかしくなる。 こんな書き方する人いないのかな?
>>869 C の /* */ がネストできない件について
/* /* */ ネストしてないぞ。
xyzzy自体のバージョンうpってないですよねぇ・・・ まぁどこも文句つけられないぐらいなじんでる自分がいるんですが・・・
ごく最近あがったばかりだが。
何か本体に不満があるなら言えば? ちなみにおれはファイラーを先に起動させたい時があるので、 独立に扱えたら嬉しい
876 :
名無しさん :2005/08/02(火) 10:19:31 ID:PIwkPa4P
単に xyzzy -e "(open-filer)" ってショートカット作って ファイラー先に起動したいときはこっち使うとかじゃだめかい?
878 :
874 :2005/08/05(金) 22:56:14 ID:MbdYZwjB
ほんとにそうしたいのであれば ソースコードあるんだから自分で切り離して使いな xyzzyと連携しているから使えるファイラであって単品では魅力ないけどね
おまいが言い出したんぢゃないか???
あのファイラーってLispで作られてるんじゃないの?
そう。だからLISPインタープリンター(xyzzy本体)がないと動かない。
882 :
874 :2005/08/07(日) 19:00:08 ID:lkfEqPPv
偽物が、、 つーか>878ってあからさまに偽物による釣りじゃないか >881 ってことはLISPインタープリターを独自に内蔵したファイラーでないといかんのか もし完璧に分離しようと思ったら。
何を議論しているのかよく分からんが、 xyzzyのファイラはlispで書かれてはいないよ。
>>883 lispで書かれた部分は存在するし、それを取り去ったら
xyzzyのファイラではなくなるだろう。また、ユーザがLispで
拡張できるという利点は重要なので実はどっちでも一緒だ。
おまいが言い出したんぢゃないか???
KaTexではまりました。 終了時に保存されるバッファの状態がおかしいです。 再起動したとき、.tex以外の拡張子をもつファイルのバッファは再現されるのですが、 .texのバッファは1つだけしか再現されず、これより右に来ていたバッファは全てなくなってしまっています。 ↓ 終了前 [バッファ] test.c test.txt tmp.dat hoge.tex hoge1.tex hoge2.tex test2.c 再起動後 [バッファ] test.c test.txt tmp.dat hoge.tex hoge1.tex KaTexの設定は.xyzzyに書いてあります (pushnew (merge-pathnames "site-lisp/katex" (si:system-root)) *load-path* :test #'equal) (require "elisp") (pushnew '("\\.tex$" . elisp::katex-mode) *auto-mode-alist* :test #'equal) (autoload 'elisp::katex-mode "katex" t) wikiでも調べたのですが、該当するものはないみたいです。 助言お願いします
>>886 それって再現率100%なの?
まったくそんなこと起こらないんだけど.
終了時のバッファ状態の保存は何でやってるの?
デフォルトセッション?
100%です。 xyzzyそのものをインストールし直しても同じです。 >>終了時のバッファ状態の保存は何でやってるの? >>デフォルトセッション? 今試してみたんですが、 セッションを名前を付けて保存した場合は、この現象は出ないです。
889 :
886 :2005/08/08(月) 21:46:12 ID:NCZb0E+N
>>886 訂正です
X 再起動後
X[バッファ] test.c test.txt tmp.dat hoge.tex hoge1.tex
○再起動後
○[バッファ] test.c test.txt tmp.dat hoge.tex
890 :
887 :2005/08/08(月) 21:46:42 ID:PHwkZ3nL
>>888 そういえば,終了時の状態を保存する って言うのがあるなぁと,
思い出しので試してみたら・・・・ なるね.
メニュー等の初期化で例外が発生して,ファイルの読み込み処理が終了してる.
*KaTeX-use-toolbar* が non-nil の場合は ツールバーの表示のときに
KaTeX-tool-bar が定義されて無いとエラーが出る.
そうじゃないときは,かてふのメニューを追加しようとして menu が nil
で例外が発生する.自分は autoload してるけど, (requrie "katex") しておいても
menuは nil でエラーが出た.
起動時処理で
4. ヒストリを初期化
(history.lのload-history-fileで、*load-history-hook*を実行)
5. メニューを初期化
(app-menu.lのinit-app-menusで、*init-app-menus-hook*を実行)
という順番で実行するので,ヒストリーでkatexを実行しようとすると,
KaTeX-add-menu の実装がまずいことなってしまう.
891 :
887 :2005/08/08(月) 21:54:03 ID:PHwkZ3nL
ぐぐっても見つからなかったので張っとくけど nonentityさん作の default session. ;; 終了時のバッファの状態を勝手にセッション保存 (defvar *default-session-file* (merge-pathnames "default.ssn" *default-session-directory*)) (add-hook '*save-history-hook* '(lambda () (and (not editor::*current-session-file-name*) (> (length (delete-if-not 'get-buffer-file-name (buffer-list))) 0) (save-session *default-session-file* t)) t)) こっちのほうが便利じゃないだろうか.
>>890 > 起動時処理で
> 4. ヒストリを初期化
> (history.lのload-history-fileで、*load-history-hook*を実行)
> 5. メニューを初期化
> (app-menu.lのinit-app-menusで、*init-app-menus-hook*を実行)
> という順番で実行するので,ヒストリーでkatexを実行しようとすると,
> KaTeX-add-menu の実装がまずいことなってしまう.
そういう原因なら load-history-file の
(when *save-resume-info*
以下をごっそりと *post-startup-hook* あたりに引っ掛けちゃえばokじゃない?
>>891 ありがとうございます。
とりあえずそれを使わせてもらいます。
895 :
名無し~3.EXE :2005/08/11(木) 10:46:14 ID:MnuNcNyo
局所にうすの中の人おつかれさまです。 # 貴重なニュースリソースだったので、できればファイルデリートせずに # そのまま残しておいてほしかったけど、そういうのが好きじゃないんだろうな。 # del.icio.us に保存したブックマーク意味なくなっちゃった…
なんで急に止めたの?
最近2ch-modeのform-postファイルがよく壊れるんだけど、俺だけ? 妙なコードが紛れ込んでしまうようだ(「 P」とか)
>>899 ありがとー。またいつでも復活してください。
popup-string でポップアップした文字列を消すのはlispではできませんか?
tterm + shell モードで、find-file 時の default directory を cd した現在のディレクトリにしたいのですがうまい方法ないですかね。 その都度set-default-directoryできればいいんでしょうが、 tterm+shell で実行したcdの結果はxyzzyとは関係無いんでしょうから…
ミニバッファのサイズが勝手に変化して 邪魔なんですけど固定するにはどうしたら 良いんでしょうか?
>>904 .bashrcあたりでPS1を設定してtitleにディレクトリを渡しておいて、tterm-osc-semi-belでゴニョゴニョしてバッファのカレントを変更すれば
いけるかもしれない。私はやる気なしですが。(-_-;)
<チラシの裏>
最近、久しぶりにttermを起動してFedora相手に接続したら
まるで使い物にならなかった。orz
だれか tterm.l を引き取ってくれないかなぁ。
</チラシの裏>
何も書いていないファイルに、 aaaと書いてsave bbbと書いてsave した後、 undoを繰り返し行ったところ aaaまで戻った時に (buffer-modified-p) が nil にならないのですが これはバグでしょうか? 上と同じようなこと(save の代わりに (set-buffer-modified-p nil) を行う) を*scratch* バッファですると(buffer-modified-p)がnilになるので。 xyzzy のバージョンは 0.2.2.234 です。
書けるかな?
xyzzyって開発終了? ずいぶん長いこと更新されてないですよね?
うんにゃ。こないだ(ってもちょっと前だが)思い出したように更新された。
ヒストリー見ても何が変わったのかが分からない・・・ 1年ぶりの更新なのに
MLの過去ログに Date が無いので不便だなあ、と思っていたら、MLの入会メールに │またこれから新規に発言されたものも収録されていきますが、Date Header │だけは削除されますのでご安心下さい。 って書いてある。Date Header が無いのが何で「安心」なんだ? 誰か教えて。
919 :
>>917 :2005/08/27(土) 05:12:34 ID:3TbuAmMH
あれ、いくつかのlispサイトが閉鎖されてる?
パターン: buffer, ファイル名: *.l, ディレクトリ: ~/lisp で grep をかけると、 "buffer-substring" とか "set-buffer-modified-p" とかがヒットしますが これを "buffer" という単語だけをヒットさせたくて、 (set-syntax-word ed::*lisp-mode-syntax-table* #\-) とし単語単位で grep をかけてみたところ やはり"buffer-substring" とか "set-buffer-modified-p" とかがヒットしました。 grep.l, grepd.l をみると grep 時にモードごとの syntax-table を参照していない のでそうなるのだと思いましたが、自分でやるには大変すぎでした。 どなたかお願いたします。
>>921 正規表現で
\bbuffer\b
とか
tcl-modeってどこかに無いでしょうか?
>>921 アドホックだけど「大文字小文字を区別する」にして [^-]buffer[^-] でできました
>>922 やるなら \_bbuffer\_b かと思いますがなんかうまくいかないみたいですよ
>>925 > アドホックだけど「大文字小文字を区別する」にして [^-]buffer[^-] でできました
「bufferp」とかが混ざりますけど。
\bbuffer\b の結果の方がましだと思うんですが。
> やるなら \_bbuffer\_b かと思いますがなんかうまくいかないみたいですよ
これをやりたければ
(setq *default-buffer-mode* 'lisp-mode)
しておいてから、grepしてみるとうまくいくかと思います。
ただ、この結果にはコメント中の単語とかがスキップされるみたいです。
あとは用途次第でしょうね。
>>922 , 925, 926
921 です。
レスどうもです。説明不足でした。
buffer をどうやって検索するかという質問ではなくて、
本当に質問したかったのは、
"単語単位で検索する"に check して grep-dialog や gresreg-dialog した時に、
モードごとの syntax-table を参照させるようにしたいということでした。
実際、(set-syntax-word ed::*lisp-mode-syntax-table* #\-)
をしておくと、検索や置換ダイアログでは
"単語単位で検索する"に check することで "buffer" だけを検索や置換できて便利なので
grep や gresreg でもおなじようなことをやりたいということです。
質問というよりコード please なだけなので出来た人がいたら wiki にでも張っていただ
けるとありがたいかなあと。
>>927 (setq *default-buffer-mode* 'lisp-mode)
とやっておけばlisp-modeのsyntax-tableを参照するようになります。
#
>>926 の後半で言っているのはこういうことです。
モードが混在していなければこれで十分だったりしませんか?
それを(拡張子に合わせて)自動的にやって欲しいって事じゃないの?
ふむ、なるほどね。じゃ、こんな感じで。 gresreg-dialog は find-file-internal でファイルを開いているみたいだから、 そのファイルのモードの syntax-table を参照するんじゃないかな。 (in-package "editor") (defun scan-files-1 (file pattern buffer scanner) (let ((file-buffer (get-file-buffer file))) (if file-buffer (set-buffer file-buffer) (progn (set-buffer buffer) (erase-buffer buffer) (ignore-errors (insert-file-contents file) (find-file-process-params (find-file-scan-params) buffer) ))) (save-excursion (goto-char (point-min)) (message "scanning (~A)" file) (cond (*grep-name-only* (when (funcall scanner) (princ file) (terpri) t)) (t (grep-scan-file file scanner))))))
まずった、
>>930 じゃファイル名を見てないじゃん。こっちで。
(in-package "editor")
(defun scan-files-1 (file pattern buffer scanner)
(let ((file-buffer (get-file-buffer file)))
(if file-buffer
(set-buffer file-buffer)
(progn
(set-buffer buffer)
(erase-buffer buffer)
(ignore-errors (insert-file-contents file)
(find-file-process-params (find-file-scan-params) buffer)
(dolist (x *auto-mode-alist*)
(when (string-matchp (car x) file)
(funcall (cdr x))
(return)))
)))
(save-excursion
(goto-char (point-min))
(message "scanning (~A)" file)
(cond (*grep-name-only*
(when (funcall scanner)
(princ file)
(terpri)
t))
(t
(grep-scan-file file scanner))))))
orz
ごめん。
>>931 もダメだ。
find-file-process-params をファイル名を引数を取るような関数に書き換えないと
いけなかった。落ち着いてかんがえてできたらWikiにでも置いておくよ。
>>932 ファイル先頭の -*- Mode:lisp; -*- とかの考慮ってされる?
自分もまさに同じものを昔作ろうとして,うまくできなかった経緯があるから
できるの期待してます
tes
936 :
921 :2005/09/04(日) 00:48:41 ID:5P7kiyWt
>>934 出来ました。欲しかった機能だったんですごく助かります。
本当にありがとうございます。
929 さんも補足ありがとうございます。
937 :
933 :2005/09/04(日) 16:57:55 ID:hTBpF2ER
>>934 頂きました. thx
コードも,こんなにシンプルに書けててすごいですね.
自分好みにカスタマイズして使わせてもらいます.
質問です。 www-mode でローカルのファイルを開くことはできますが、 あるプログラムが標準出力に吐いたHTMLを、ファイルに保存しないで www-mode で開くことって可能なんでしょうか。 可能であれば、方法を教えていただけると助かります。
939 :
874 :2005/09/07(水) 00:33:27 ID:Xj3Vg6cc
tmpフォルダに一時ファイルがあるんじゃないの?
教えてください。 hoge ├─AAA │ a01.pdf │ └─BBB b01.pdf 上のようなツリー構造のディレクトリに xdoc2txt.l + grepで検索をかけると "C:/AAA/BBB 指定されたパスはディレクトリではありません" というエラーがでてしまいます。 xdoc2txtでフィルタするファイルを含む ディレクトリが同じ階層にあると駄目みたいです。 ちなみにxdoc2txt + ggrepだと大丈夫です。 xdoc2txt.lのscan-files-1が関係しているのかなと 見てましたが、ぜんぜん分かりませんでした^^; xyzzy のバージョンは 0.2.2.234 です
シェルスクリプトを編集するモードってありますか? emacsだとshell-script-modeがありますよね。 fundmentalだとインデント等がやりずらいです。
>>943 対応ありがとうございます!
これで、ばりばりgrepできまつ
(make-buffer-stream (create-new-buffer "*Help*")) を *Help* バッファが無い状態で実行すると,カレント バッファがlispモードに変わってしまうんですが,自分だけでしょうか.
947 :
945 :2005/09/17(土) 11:29:38 ID:tTw7dz9F
>>946 どうもです
もう少し原因をさがしてみます
948 :
945 :2005/09/17(土) 12:10:30 ID:tTw7dz9F
すみません.自分だけの問題でした. *create-buffer-hook* に変なものが引っかかっていました.
949 :
名無し~3.EXE :2005/09/18(日) 10:55:27 ID:Q8totMeE
これはこういうもんですか? fugaが返ってほしい気がしないでもないない。 (defvar *x* 'hoge) (let* ((*x* 'fuga) (y *x*)) y) ;;-> hoge
>>949 そうですね。fuga が返って欲しい気がします。
言語の仕様として正しいのはどちらなんでしょうね。
>>949 CLISPで試した結果。
fugaが返った方が良さそう。
[6]>(defvar *x* 'hoge)
*X*
[7]>*x*
HOGE
[8]>(let* ((*x* 'fuga) (y *x*)) y)
FUGA
952 :
949 :2005/09/18(日) 14:36:50 ID:Q8totMeE
レスどうもです。
>>950 >>951 言語の仕様はちょっと私にはわからなかったですが、
やはり不自然な感じはします。
とはいえ現実はどーしようもないので、let分けて書くかぁ…
xyzzyのバグもwikiでまとめておきたいっすね。 バグトラックプラグインの使い方が分からなかったので誰か頼む・・・
これくらいはざばっとマクロで解決できますぜ。 (shadow 'let*) (defmacro let* (letlist progn) `(let ,(mapcar #'(lambda (x) (if (consp x) (car x) x)) letlist) ,@(mapcar #'(lambda (x) (cons 'setf x)) (delete-if #'(lambda (x) (not (consp x))) letlist)) ,progn)) BTS要りますん?というかだれか参照します?
いろいろ間違えたごめん。 (defmacro let* (letlist &rest progn) `(let ,(mapcar #'(lambda (x) (if (consp x) (car x) x)) letlist) ,@(mapcar #'(lambda (x) (cons 'setf x)) (delete-if #'(lambda (x) (not (consp x))) letlist)) ,@progn))
>>956 細かいところを突っ込むと、それだと(scheme でいうところの)letrec* になっちゃいます。
端的には↓が動いちゃうことになります。
(let* ((foo #'(lambda (x) (if (< x 2) 1 (* x (funcall foo (- x 1)))))))
(funcall foo 10))
じゃぁと思って代案考えようとしたんですが (defvar *x* 'hoge) (funcall #'(lambda (&optional (*x* 'fuga) (y *x*)) y)) これも規格と動作が違うっぽい。 yのバインドの際にローカルの*x*よりも先に グローバルを参照してるみたい… 等価にならないって言う意味ではletrec相当のやつは失格だし… なんか綺麗な抜け穴無いかなぁ…。 素直にletのネスト版… (defmacro let* (letlist &rest progn) (labels ((rec (x progn) (if (null x) (cons 'progn progn) `(let (,(car x)) ,(rec (cdr x) progn))))) (rec letlist progn))) うーん泥臭い
959 :
949 :2005/09/19(月) 15:03:15 ID:HHptWZle
(゚听)
マクロにするほどのことも無いような気が…
_, ,_ パーン
( ‘д‘)
⊂彡☆))Д´)
>>949 (++)
バグと決まったわけでもないし…
_, ,_ パーン
( ‘д‘)
⊂彡☆))Д´)
>>949
>>958 > (defvar *x* 'hoge)
> (funcall #'(lambda (&optional (*x* 'fuga) (y *x*)) y))
>
> これも規格と動作が違うっぽい。
> yのバインドの際にローカルの*x*よりも先に
> グローバルを参照してるみたい…
これはこっちのxyzzyの動作のほう(hogeが返る)が自然な気がします。
規格のどの辺りを読めば書いてあります?
>>960 > これはこっちのxyzzyの動作のほう(hogeが返る)が自然な気がします。
xyzzy の動作が自然な気がしますね。
>>960-961 fuga が返る方が自然だと思うな.
関数の引数の評価は左から右と決まっているし,
#'(lambda (&optional x (y x)))
がエラーになるのはおかしいと思う.
それとも,これって *x* が special 変数だからって言う議論になってる?
>>962 > 関数の引数の評価は左から右と決まっているし,
> #'(lambda (&optional x (y x)))
> がエラーになるのはおかしいと思う.
感覚的にはエラーになってもいいと感じますけど、
実際にはエラーにならないので、俺の感覚のほうが怪しそうです。
なので、規格を参照したいなと思っているんです。
>>964 一応該当するのは CLtL2 の 5.2.2 だと思うけど,
967 :
958 :2005/09/19(月) 22:17:51 ID:QhrXM7+Z
>>967 > 以上からlambdaのパラメータはlet的ではなく
> let*的にバインドされていくと理解しました。
いや、let は概念上は lambda の糖衣構文なので、
(let ((x 'foo)(y 'bar)) ...) = ((lambda (x y) ...) 'foo 'bar)
とならないとちと困ります。
スコープ・環境フレームの生成と評価の順序は違うわけで、
let に関しても評価自体は左から順番にというのは保障されます。
(let ((x '(foo bar baz))) (let ((a (pop x))(b (pop x))(c (pop x))) (values a b c)))
とかやってみると判ると思います。
http://www.lispworks.com/documentation/HyperSpec/Body/03_ac.htm は、
「ラムダ式において式本体が評価されるレキシカル環境は、現在のレキシカル環境に対し、
ラムダリスト中のそれぞれのパラメータと引数中の対応した値との束縛を加える事で形成される」
といったところでしょうか。何にせよ環境フレームは一つしか掘らないです。
措いて、オプショナルパラメータに関してはとりあえず以下より適当訳。
http://www.lispworks.com/documentation/HyperSpec/Body/03_dab.htm 「(しかし)もし引数が残っていないなら、そのとき初期化フォームが評価され、
そしてパラメータ変数にはその結果の値が束縛される
(もしくは、パラメータ指定子に初期化フォームがないなら nil が束縛される)」
この初期化フォームが評価される環境とタイミングが問題になってくるのでしょうけれど。
うーん、新しい環境の内側ってことでいいのかなあ。そうする以外手はない気がする。
つまり、まず環境を作って、環境の各スロットに左から順番に値を束縛していくと。
そして、オプショナルパラメータに値が渡されていない場合には初期化フォームが評価されると。
で、初期化フォームが評価される環境は値を束縛中の新しい環境であると。
そんでもって、自分より左のパラメータに関しては既に値があるからその値を参照できると。
そんな感じなのかなあと思いました。
でもこれってキーワードパラメータだともっと妖しいことになりそうな気がします。
書く順序によって結果が変わってきそう。
>>969 キーワードパラメータだとこんなことになっちゃいますね
(flet ((f (&key a b c) (list a b c)))
(list (let ((x '(foo bar baz)))
(f :a (pop x) :b (pop x) :c (pop x)))
(let ((x '(foo bar baz)))
(f :c (pop x) :b (pop x) :a (pop x)))))
=> ((foo bar baz) (baz bar foo))
ところで言葉の問題ですが、
「値が変数に束縛される」ではなくて
「変数が値に束縛される」ですよ
grepで50MB以上は検索しないや exe などあきらかに検索してほしくないのを設定することはできますか? 検索してほしいファイルを列挙するのは無理があるので
972 :
968 :2005/09/21(水) 00:04:56 ID:yQCLpsRi
>>969 解説ありがとうございます。
で、ラムダリストの中で前に出現する仮引数が現れてもいいのか
という部分が引っかかっていたのですが、それについても以下の部分で見つかりました。
http://www.lispworks.com/documentation/HyperSpec/Body/03_da.htm の「Whenever any init-form is evaluated ...」
(超てきとー意訳)
init-formが評価される時はいつでもそのinit-formの左側にある引数を参照してもいいよ。
これで、
> うーん、新しい環境の内側ってことでいいのかなあ。そうする以外手はない気がする。
この部分にも納得です。
みなさま、おつきあいありがとうございました。
973 :
969 :2005/09/21(水) 02:57:48 ID:T6tRfX1U
>>970 >「値が変数に束縛される」ではなくて
>「変数が値に束縛される」ですよ
ありゃ、これはお恥ずかしい。なんか混乱してたみたいです。
>>972 まさにそれじゃないですか。
どうも私は微妙にずれたところ調べてたっぽいですね。失礼。
>>971 素のままだと無理な気がします。
いじるとしたら grepd.l の scan-files-1 の本体冒頭(32 行目)に以下を挿入して、
(when (funcall *grepd-ignore-file-p* file)
(return-from scan-files-1 nil))
こんな感じのを .xyzzy に書いとくのではどうでしょう。
(defvar ed::*grepd-ignore-file-p*
#'(lambda (file)
(and (not (string= "exe" (pathname-type file)))
(< (file-length file) 5242880))))
dialog-boxのことで質問なんですが (setq *test-dialog-templete* `(dialog 0 0 182 67 (:control (:edit line nil #x50810086 21 22 139 16) (:button IDOK "おけ" #x50010001 120 45 40 16) (:button IDCANCEL "やめとく" #x50010001 75 45 40 16)))) (defun results () (interactive) (multiple-value-bind (result data) (dialog-box *test-dialog-templete* nil nil) (list data))) こんな感じにやるとマウスでOKボタンを押した時か tab4回打ってアクティブなウィジェットを一回りさせてからRETしないと dataに値が入らないようです(nilになる) editで文字列打ち、RETそのままで値を得るにはどうすればよかったのでしょう。 lisp/dialog.lをうろうろ眺めてたのですがどうにも…。
>>975 そういう時は,そういう挙動をするダイアログを探せばいいんジャマイカ.
grep-dialogとか
>>975 dialog.l を参考に IDCANCEL の後ろの #x50010001 を #x50010000 に変えてみたらうまくいったよ。
でも理由はよくわからない。
あはは、助かりました。
>>976 さんの言うとおりgrepd.lを眺めてたんですが
そもそも多値とか慣れてなかったんでさっぱりorz
Emacsから移ってきていろいろ試してた状態なんですが
少し気合入れてみますわ。どうもっす。
>>977 gentempl.l を見た感じだと最後が 1 のものはデフォルト値になるみたい
元のコードだと IDCANCEL がデフォルトになってたから nil になったのかなと
calmemo の予定表に現在日から予定日までの日数を表示させたいと考えているのですが、 日数の計算方法が分かる方おられます?
981 :
980 :
2005/09/25(日) 21:59:18 ID:oauueMpp 自己レスですが多分こんな感じみたいです。 (encode-universal-time 0 0 0 25 9 2005) 3336562800 (encode-universal-time 0 0 0 22 9 2005) 3336303600 (- 3336562800 3336303600) 259200 (/ 259200 (* 60 60 24)) 3