1 :
ミスターエックスワイジー :
2007/04/04(水) 10:15:15 ID:sEG9xOlk
2 :
ミスターエックスワイジー :2007/04/04(水) 10:16:31 ID:sEG9xOlk
3 :
ミスターエックスワイジー :2007/04/04(水) 10:17:47 ID:sEG9xOlk
おつ
乙
新スレおめ
xyzzyを使ってペペロンチーノを作る方法を考えようか
料理好きな友人にメールを送るlispを書けばいいんじゃないか?
>7 plaggerにパイプで渡せばいいと思うよ。
10 :
名無し~3.EXE :2007/04/08(日) 10:49:15 ID:xCGwGEP2
指定した拡張子だけを拾ってこようと思って下のように書いてみたのですが エラーが出てしまいます。どこが悪いのでしょうか。教えてください。 (defun my-directory (dir &rest extension &key depth) (let ((l nil) (extension-regex (format t "\\.\\(~A~{\\|~A~}\\)$" (car extension) (cdr extension)))) (directory dir :absolute t :file-only t :recursive t :depth depth :callback #'(lambda (x) (when (string-matchp extension-regex x) (setq l (cons x l))))) l)) (my-directory "E:/" "bat" "exe" :depth 2) -> 不正なデータ型です: "bat": symbol
取りあえず、ワイルドカード使えばいいんじゃないだろうか。
>>12 ごもっとも。
ただ、複数の拡張子を指定したいときなんかに使いたいなあと思ってたので。
もしかしたらワイルドカードでもできるんかな。
それに今はどこが間違っているのかのほうが気になる。。。
14 :
名無し~3.EXE :2007/04/08(日) 22:26:49 ID:1Zsc12Nk
restとkeyパラメタの併用を 勘違いしているとしか思えない。
>>11 http://www.lisp.org/HyperSpec/Body/sec_3-4-1-4.html It is permitted to specify both &rest and &key. In this case the
remaining arguments are used for both purposes; that is, all remaining
arguments are made into a list for the rest parameter, and are also
processed for the &key parameters.
>>14 ありがとう。
restとkeyって併用できるんですよね?
自分でもそこかなあと思ったりしたのですが、調べきれませんでした。
もしよかったら、解説のあるところなんかを教えていただければありがたいです。
>>15 さっそくありがとうございます!
見てみます。
ところで format の第一引数は nil なのではないかと。 あとこういうときは ~^ 使うと短く書けるよ。 (format nil "\\.\\(~{~A~^\\|~}\\)$" extension)
>>18 たびたびありがとうございます。
tで書いたのは試行錯誤中の名残です。
~^を使うやり方は知りませんでした。
とっても参考になります。
ばかなんで教えてもらったページは
まだ解読中で理解できてません。。。
せっかく手ほどきいただいたのによくわかりません(泣 (defun hoge (foo &rest rest &key key1 key2) (list foo rest)) (hoge "foo" :key1 'bar :key2 'baz) -> ("foo" (:key1 bar :key2 baz)) (hoge "foo" "boo" :key1 'bar :key2 'baz) -> 不正なデータ型です: "boo": symbol 気長に試行錯誤してみます。
ちなみにワイルドカード場合 (directory "~/lisp" :wild '("*.l" "*.txt"))
(defun my-directory (dir &optional extension &key depth) (directory dir :absolute t :file-only t :recursive t :depth depth :wild extension)) (my-directory "c:" '("*.txt" "*.html")) これはリストで渡す場合だけど、&restで使うときも似たようなもんだと思う。
>>21 22
いろいろどうもです。
ワイルドカードを使って複数指定する方法、はじめて知りました。
ありがとうございます。
所期の目的はワイルドカードで達成できそうです。
それにしても&restで渡したいー
目的離れてもう興味だけです(w
もうちょい試行錯誤してみます。
俺もわかってるわけじゃないが、ちょっと試した感じだと、
restとkeyを併用すればkeyのリストをrestで表せるってだけでないの。
だから、
>>14 。
25 :
11 :2007/04/09(月) 23:16:31 ID:I7BaLIo9
>>24 一晩寝て、家に帰って、あれこれやってみて私もそういう感じで納得しました。
いろいろ教えてくれたみなさんありがとう。
(defun hoge (foo &rest rest &key key1 key2)
(list foo rest key1 key2))
(hoge "foo" :key1 1 :key2 2 :key1 3)
-> ("foo" (:key1 1 :key2 2 :key1 3) 1 2)
なんで開発止まってるの?開発終わった?
特に致命的なバグとかないし、lispで粗方の事できるから本体に手を加える必要が無いだけかと
更新していないということは むしろ頻繁にバージョンアップしているものより 安定しているということだろ。
まぁそれは建前で私生活が忙しいとか情熱が冷めたってのが本当のところだろうね バージョンが止まっただけじゃなくて表に出てこなくなっているから
因果関係が逆の可能性もあるけどね。
sakuraのスレとかでも訳分からない事を言っている奴が居たが Source公開したソフトに作者がとか言うのか理解しがたい。 根本的な部分で頭悪いんじゃね。
オープンにしてももう後はみんなで勝手にやってねって場合とか 自分で開発は進めるけどこのソース利用して派生作ってもいいよって場合とかいろいろあると思うんだけど
実際数年とかたってるので亀井氏もいじるにいじれねえと思うぞ。相当計画練らないと。 やる気がでても作り直しになるだろう。そもそもVC4.2なんてもういじってねえだろw とりあえず誰かがうまくコード整理してコンポーネント化してくれれば、 某ローグ系ゲームとかみたいに改造しやすくなるだろうが、 相当いじりにくいソースなんだろうな。 俺も新関数の追加くらいならできるんだがw、Lispインタプリタ部との分離とかGUI部との分離とかは無理だ
まずはVC8でビルドできるようにしてからだな。 案外そのままビルドできたりしそうだが。
xyzzyはソース読むとかなりセンスいいから弄りにくいなぁ 同レベルのコード書く自信がない sakuraだったらいくらでも手を入れたくなるんだがw
wikiのアンケート見ると他のエディタと併用してる人って多いんだね。 俺はものぐさだから一つに絞ってるけど、みんな使いわけてるんだなー
>>36 きっと、それは果てしなく大きいね。
改造しても恥ずかしいので自分用にしているとか。
コンパイルの方法はWiki見れば書いてあるけどな。
wikiみてもコンパイルの方法が分からんよ><
おれはxyzzyを使って次のエディタを書くっていう亀井さんのむか〜しの発言を信じて ひそかに期待している
みんなで xyzzy のソースをハックして wiki にまとめながらオープンソースの開発みたいにして 進めていくのはどう?少しずつ形にしていけば次にどうすればいいのかわかるような気がしました。
何がしたいんだwwwwwww
43 :
41 :2007/04/13(金) 20:59:36 ID:oSN7ODDN
言い出しっぺの法則だな まぁ下手な拡張したらボコボコにされるはずw ソースに手を入れるってのはそうしないとどうしようもない問題を解決するだからなぁ またその修正により出来る事の幅がかなり広がらないとマズい
マズいとは思わないけど、 その修正によって嬉しい人がいて、 悲しい人がいなければ良いんでない。 ひらメソッドは面白そうだけど、 関数を読んで得た知識をどれだけ書くかは人によるだろうから、 C++を読めるレベルに依存するんじゃ?
46 :
41 :2007/04/13(金) 22:31:46 ID:oSN7ODDN
>>44 大変そうですが何とかしてみます。勉強することばかりなので時間かかると思いますが
ひらメソッドで初めてみます。
>>45 C++をきちんと読める自信はないですが、C++の本とソースを読みながら続けてみます。
修正しつつxyzzyをずっと使いたいですね(´ω`)
なんかよくみたら使ってるバージョンが0.2.2.233のまんまで2003年版だったよ いつのまに2005年版が! いまだにlispはよく理解してないんだけど、部屋かたづけてたらAI-1000が出てきた。
>>43 頑張ってくれ。
個人的には希望は余りないけど。
文字の非表示だけ欲しい。
xyzzyでタイ語がサポートされないのは 何かわけがあるんですか? アラビア語は左右逆なので何か色々とめんどくさそうですが タイ語は素人考えでは特に特別なところも無いと思うんですが
サポートされていないの?それ以前に タイ語とか確認している人いるんだろうか。
ネットインストーラ見れば分かるけど。 xyzzyってlisp出すらアクティブに更新作業をしている人は そんなに多くないしな。
フリーでただ使う分には、導入簡単だから、 そのままとりあえず拾って、環境作って慣れてきた頃に、 Meadowに移っちゃう人が多いと思うよ。 周りのEmacs使いがそんなのばかり。
まあ、そういう人はxyzzy使っていたとしても多分何も作らないと思われ。 人のを使う気でいる人より、遊ぶ気でいる人じゃないとxyzzyよりEmacs の方が当然機能が揃ってるし。
遊ぶにしても Emacs の方が面白いしなぁ
>>51 文字の形がおもしろいから
少し見てみようと試したら駄目でした。
調べたところ対応して無いようです
xyzzyに貢献したいがプログラミングの経験がないです。 ソースが公開されているんだから頑張りたいですね。 ユーザー数はもう少し増えたらいいのになと。 亀井さんのやるき復活がもうなさそうな悪寒 バージョンアップしなさげじゃないですか。(汗
Windows上だったら絶対xyzzyのほうがいいと思うおいらが来ましたよ。 日本語ドキュメントも多いしリファレンスもしっかりしてるし これ使いこなせずMeadowに行ってもUNIX板のEmacsスレの 変なコテみたいになるだけだと思われ。 以前みたくEmacs自体が「憧れの多機能エディタ」とは見られなくなってるんだから xyzzyも新規ユーザーは減るのが必然。 Linux厨みたいに「普及のために」とかキモい討論始めたら逆効果なんで 自然にやってきゃいい。
xyzzy と Emacs (Meadow) の両刀使いも結構多い気がするけどね。 オレはこんな感じで使いわけている (基本的にはどっちでも 同じことできるようにしているけど)。 xyzzy : html, css, csv, 2ch Meadow : howm, TeX, txt, www, mail
xyzzy の方が気の利いた Lisp 書いてくれる人が多い。
俺は両刀使いかな。 Windows(会社)上ではxyzzy Linux(自宅)上ではEmacs xyzzyの方が動作とかキーバインド的には好きだ。 日本語のリファレンスが簡単に見られるのもいい。
winで使うならxyzzyのほうが癖が小さくていいなと思う
Meadowは難しすぎてわからないのでxyzzy使ってる
Meadow は昔使ったときに重かったから使わなくなったな・・・ まぁ xyzzy も lisp が分からなくて三度ほど捨てたことがあるけどw
Windowsユーザーだと、コマンドプロンプト障ったこともないだろうし、Cygwinなんてもってのほかだったりするからな。
hg modeってどっかにあります? 無ければ自分用に適当にでっちあげようかなぁ、と思ってますが。
フォォーー?
>>69 おお、これこれ。サンクス。
うーん、get-buffer-file-nameのdouble quote忘れがあるなぁ。
まあ適当に直して使うかなぁ。
>>69 >EPWING辞書をxyzzyから
ずっと欲しかった物が今ココに!
…インストールがうまくいかない
Error binding path. 10
て出ちゃうんですが、みなさんの環境だと動きますか?
xyzzy上のadictで英辞郎を使うには、どうしたらいいんでしょうか?
>>71 なおします。
>>72 もうちょっと情報ください。EPWINGはどこに置いてあるどんな辞書でしょうか。
質問スレとここを使い分けてくれ
質問スレなんてないぞ。
ここだろ つ関連スレ
励ますスレは別に質問スレじゃないだろ。 むしろ難しいことは聞くなスレ。
>79 励ましあうスレと本スレの質問に関する使い分けについては質問者/回答者が lispの読み書きが出来るか出来ないかであると以前誰かが書き込んでいましたね。
初めは「だったら良いな」的感じだったのに 次スレではあたかも決定事項のようになってたあれね どっちでも空気が合ってる所に 自身で判断して書き込んだらいいじゃない
全部本スレでやるのがまちがいない。
eval-after-load って無いんですか?
(defmacro eval-after-load(lib &rest rest) (eval `(progn (si:*load-library ,lib) ,@rest))) 酔っぱらってま〜す
>>83 ないみたい。
load と si:*load-library と mc-load-library を上書きすればできるかも。
mc-load-library じゃなくて mc-load-file か。 ちょっと考えてみたけどロードしたファイルの履歴をとるのはどうしたらいいものか。 ファイル名じゃなくてモジュール名をキーにすればいいのかな。
mc-load-fileもloadを呼んでるからload と si:*load-libraryの2つじゃない? 厳密にやる必要がないなら *post-startup-hook*あたりに引っ掛けて、 そこで*modules*を見つつそれっぽくやれば十分そうだけど、どう?
>>87 確かに load 呼んでるんだけど、一時バッファからストリーム作って渡してるから
呼び出し先からはファイル名がわからないような気がしたんで。
モジュール名だけ見るなら mc-load-file は触らなくていいね。
書いてみた。テストはしてないけど。 (defconstant *load-original-definition* #'load) (defconstant *si-load-library-original-definition* #'si:*load-library) (defvar *after-load-alist* nil) (defun process-after-load (module) (eval (cdr (assoc module *after-load-alist* :test 'equal))) t) (defun load (filename &rest keys) (let ((tmp *modules*)) (apply *load-original-definition* filename keys) (mapc 'process-after-load-alist (ldiff *modules* tmp)))) (defun si:*load-library (filename &rest keys) (let ((tmp *modules*)) (apply *si-load-library-original-definition* filename keys) (mapc 'process-after-load-alist (ldiff *modules* tmp)))) (defun eval-after-load (module form) (if (modulep module) (eval form) (let ((x (assoc module *after-load-alist* :test 'equal))) (if x (rplacd x `(progn ,form ,(cdr x))) (push (cons module form) *after-load-alist*)))))
早速間違い発見…… 二箇所ある (mapc 'process-after-load-alist (ldiff *modules* tmp)) は (mapc 'process-after-load (ldiff *modules* tmp)) で。
91 :
83 :2007/04/25(水) 01:56:59 ID:pS7IVTdJ
>>84 ありがとうございます。
ですが、思った挙動になりませんでした。
>>85 あれば楽かなと思っただけでしたので、素直にフックに引っ掛けることにします。
どうもありがとうございました。
92 :
83 :2007/04/25(水) 02:01:35 ID:pS7IVTdJ
2chビューアのキャッシュが更新されていなかったようで、
>>86 -が見えていませんでした。
ちょっと試してきます。
93 :
83 :2007/04/25(水) 02:36:04 ID:pS7IVTdJ
>>89-90 で思うような挙動になりました。
これだと初期化が簡単に書けそうです。
ありがとうございました。
96 :
名無し~3.EXE :2007/04/28(土) 12:29:36 ID:RzUuXiBG
画像をバッファには展開できないからそのまんまはちょいと厳しいと思う。
97 :
94 :2007/04/28(土) 13:06:28 ID:jEYbcNxL
無理ですか 残念です
画像表示とか折り畳み、色数制限、文字の不可視 縦の罫線とか、遅延読み込みとか。 殆どの場合必要ないんだけど、あったら良いかなぁと思うことは良くある。
>>98 「遅延読み込み」ってどういう機能ですか?
字面からはautoloadを思い浮かべましたけどautoloadはありますし。
Lispで実装できないものなんですか?
巨大なファイルを開いたときに、最初から全部読まないことだと思った
スレに対しての提案なんですが、ソフト板のスレと統合しちゃいませんか? 理由としては ・本体のver.upが年に一回あるかないかで、すでに本体は安定しているため xyzzyというよりlispについての質問が多く、スレの伸びは以前と比べ鈍化している。 ・ソフト板でもlispの話題が多く、本スレと分ける必要性が薄い。 という感じなんですが、一番の理由は2つ見るのが面倒だなと思ったんです。 おすすめ2ちゃんねるを見ても、このスレを覗いてる人はソフト板のも見ている 人が多いようです。(逆もしかり) xyzzyは去年から使いはじめたので、スレが分けられた理由は分かりませんが、 恐らく(過去ログ等を見て)、スレがたった当初はスレの伸びが早く、初心者と 上級者の話しが乱雑になりまとまりが悪かったからだと思います。 ですが、今のようにスレの伸びが鈍化している現在ではそのようなことも なくなり、逆に一つにした方が後々閲覧するときに一つのスレだけ見れば いいので便利だと思います。 そして、本スレは他エディタも多いソフト板に移動した方が、新規の人も 探しやすいと思うのですがどうでしょうか? 長文になってしまい申し訳ありません。
このままでOK
ソフトウェアいたが出来たときのゴタゴタも懐かしい。何年前だろアレ?
>>101 そういう今更な質問を避けるために分割したんだ
便利だとか自分の都合を押し付けてるだけだろう
2ch-modeをいれれば スレが分割されてるとかどうとかは どうでもよくなるのではないか?
KaMailV3 を導入したが受信したメールの一覧が表示されない・・・。 なんか summary に表示されるらしいんだけど、なんでなんだろう。
俺もこのままでいいと思う スレの空気も少し違うしね
>>104 その文章が押し付けてるようには見えないけど。文盲なら失礼。
ところで、質問。
(megbox "~A" #\A)
(megbox "~A" "A")
(megbox "~A" :A)
は同じ結果で引数は、一つ目が文字(chara)、二つ目が文字列(string)だと思うんだけど、
3番目の:〜は何て呼べばいいの?シンボルとは違うよね?
megbox → msgbox の間違い orz
何となくシンボルじゃないのか。
ちょっと試した所、 (let ((hogehoge "dog" "cat" "pig")) (msgbox "fuga~A" hogehgoe)) =>変数が定義されていません: hogehgoe (let ((hogehoge "dog" "cat" "pig")) (msgbox "fuga~A" :hogehgoe)) =>fuga(dog cat pig) リストとか?
あれ、違うな。 (let ((hogehoge "dog" "cat" "pig")) (msgbox "fuga~A" :hogehgoe)) =>fugahogehoge だった。
>>108 普通は「キーワード」と呼びます。
評価した値が必ず自分自身になる特殊なシンボルです。
シンボルの一種なのでシンボルと呼んでも間違いではありません。
>>106 *debug-mode* を t にしておくとデバッグ用の出力が見られるはずだから、
確認したら何か分かるかも。
117 :
108 :2007/05/05(土) 12:14:41 ID:K2j3LSYU
おお、返答くれた方ありがとう。 キーワードパッケージシンボルっていうのか、何となくわかった感じ。 (equal keyword:A :A) =>t keywordっていうなんか特別なパッケージがあって、このパッケージでは 自分自身がシンボルとして定義されてるっていうことかな。 :の前のkeywordが省略されていたのか。
ひょっとして引数とかで良くある:case-fold とかも キーワードっていう意味だったのか。&keyだし。
そういうこと
XYZZY xyzzy
>>116 レスありがとです。
*debug-mode* とか色々試しつつ config.l いじってたらいつの間にか一覧表示されるようになりました。
原因分からずじまいですが・・・
('A`)...cairo? ('д`) cairo? ('∀`) cairo!? ジーク(゚∀゚)ノ cairo !!! cairo !!! xyzzy のじかんは凄いねぇ。
ruby-modeについて質問です
ttp://homepage3.nifty.com/Yukimi_Sake/ のruby-mode for xyzzyを導入したのですが
文字装飾が気に入らないです。。。
・コメントの色はxyzzy共通設定のコメントの色にしたい(文字10の色を変えて暫定対応)
・文字列の色もxyzzy共通設定の文字列色にしたい(文字9の色を変えて暫定対応)
・キーワードはboldにしたくない
・キーワードの色を指定したい
・parenが効かないです。。。(これはメンドイのかな?)
以上、どなたか対応方法ご存知であればご教授ください
syntax,キーワードファイルの書き方辺りを参考に気に入るようにしてください
モード作る時にc-modeとかlispmodeあたりにあわせてくれると良いと思うことはある。 コメントとか文字列、URL、基本的なキーワード位は同じ色番号にして欲しいね。
>>125 それは俺も思うけど、意外と難しかったりするんだよね。
set-text-attribute ではキーワード色やコメント・文字列の色が使えないから
>>123 の問題も今のままでは解決できない。
regexp-keyword-list なら上記の色も設定できるけど、
正規表現での文法解析には限界があるから難しいんじゃないかな。
殆どの場合は普通のキーワードでいいのだから 基本的な所で揃えるのは作る時の気分的な問題じゃないか? キーワードファイルの設定とかregexp-keyword-list意外で 色を付けるのは結構珍しいような。
ruby-mode は def self.hoge end の "hoge" 部分に色がつかないのがちょっと悲しい
「ファイル(F)」などのメニューをクリックすると凹んだままになってしまって メニューが使用できなくなってしまうことありませんか? ALT押したら凹むとかそういうことではなくて、xyzzyを再起動しない限り メニューが使用不可になってしまうということです。 メニューに色々追加しすぎなのだろうか・・・
俺もメニューに色々追加してるけど、凹んだままになったことないよ。
凹んだままになりました。 インストしたばっかりで、まだ何もカスタマイズしてないときだったと思います。 よって、メニューに追加は関係ないんじゃないでしょうか。
132 :
129 :2007/05/16(水) 21:06:26 ID:ydIEbhbg
133 :
129 :2007/05/16(水) 21:16:41 ID:ydIEbhbg
ちなみに、OSはWinXP HomeでClock Launcherを最前面にして常駐させています。
>129 そんなのなったことないよ。 そういや、ほとんどメニュー使ってないなぁ。 (dotimes (i 100) (add-history "~/.xyzzy" '*minibuffer-file-name-history*)) を何回評価してもループ回数を大量に増やしても大丈夫だった。
135 :
129 :2007/05/16(水) 22:00:11 ID:ydIEbhbg
>>134 どうもです。
うちでは
(dotimes (i 150) (add-history "~/.xyzzy" '*minibuffer-file-name-history*))
とすると、最近使ったファイルからファイルが開けなくなるようです。
この場合は凹んだままにはなりませんが。
>>131 さんのように結構問題出てる人いそうな気がするんだけど、そうでもないのかな。
>135 開けなくなるだけなのか。 そっちも確認してみたが、10000回ループさせても 普通に最近使ったファイルから開けたのでおかしくはなってなさそう。
137 :
129 :2007/05/16(水) 22:19:12 ID:ydIEbhbg
>>136 素のxyzzyだと、10000回ループさせても開けますね。
やはりメニューに追加しすぎということなのか・・・
138 :
129 :2007/05/16(水) 22:37:36 ID:ydIEbhbg
普段使っているxyzzyでも開けるときと開けなくなるときとがあるようです。 こんなの(最初のパスは適当にファイル数が多そうなパス) (directory "C:/applications/xyzzy/" :callback #'(lambda (x) (add-history x '*minibuffer-file-name-history*))) も試してみましたが、これだと素のxyzzyでも開けなくなるときがあるようです。
xyzzy のメニューのカスタマイズ性の高さは便利だと思う。 忘れそうな奴をどんどん追加できるし、2 ストロークで開けるから操作性も悪くない。
メニューのどこかに自分用のを作っといて、 .xyzzyなどに書いたコマンドはぶちこんどくべきやね。
右クリックメニューとかに追加するほうが好みなのは俺だけかな キーボードに右クリックメニュー開くキーあるからメニューに追加するより便利なんだけど
backward-kill-line みんな使ってる? 使ってる人に聞きたいんだけどどのキーに割り当ててる?
Emacs 風に C-x Backspace xyzzy だと自動的に C-x C-h でも使えるようになるね。
あ、xyzzyでもできたのか
知らなかったので見てみたけど、これ C-0 C-k と同じじゃない?
須田さんとこに同じって書いてあった……
以下のようなものを作りました。 これを、find-fileがinteractiveに呼ばれたときだけ実行したいのですが、 どのようにしたらいいのでしょうか。 ;; find-fileした瞬間にファイルを作る。 (defun force-create-file-if-not-exist () "バッファに対応するファイルがなかったら作る" (and (string-match "[A-z]:/" (get-buffer-file-name) 0 3) (not (file-exist-p (get-buffer-file-name))) (set-buffer-modified-p t) (save-buffer))) (add-hook '*find-file-hooks* 'force-create-file-if-not-exist)
>>147 試してないけど、interactive-pじゃダメなの?
ところで、キャレットをlispで消すことってできないですかね?
(setq *blink-caret* nil)
(setq *normal-caret-shape* 1)
(setq *overwrite-caret-shape* 1)
この3つで目立たなくはなるんですが、lispで色指定できれば完全に見えなく
できるのかなと思うので。
やっぱり共通設定の他にはiniファイルをいじるくらいしかないんでしょうか?
>>148 キャレットの色なら set-buffer-colors で指定するベクタの13番目と14番目かな。
キャレットの色とIMEキャレットの色。
150 :
148 :2007/05/18(金) 21:08:41 ID:hJiuzOh1
>>149 ありがとうございます。
set-buffer-colorsって色々設定できるんですね。
背景色とテキストの色くらいしか指定できないと思ってた...
>>151 chcolor.lにサンプルがありますね。
バッファの色を取得したりするのはwinapiを使う必要があるようなので
結構手間だったんですが、
キャレットの色を変えても、文字と重なると反転してみづらくなるので、
結局
(setq *normal-caret-shape* 1)
(setq *overwrite-caret-shape* 1)
で落ち着きました。
153 :
名無し~3.EXE :2007/05/20(日) 21:39:09 ID:QvPSZt8v
(/ 1 0)を補足するLISPの書き方がわからないのですが、 (condition-if ?が使えないので他の方法はあるのでしょうか?
handler-case かな
(handler-case (/ 1 0) (division-by-zero (c) ; error 処理 )) かな。 関数リファレンスに載っている handler-case の例そのものだけど。
156 :
名無し~3.EXE :2007/05/20(日) 22:28:15 ID:QvPSZt8v
<155 ありがとう perlの連想配列で以下のようなことをxyzzyのLISPでやりたいのですが どうすればよいのでしょうか? my %Kokugo = ( "田中"=>80, "石川"=>60, "石橋"=>70, ); my $namae = "田中"; print $Kokugo{$namae}; 私はドットリストで以下のようにしましたがAは当然うまくいきますが、Bではnilになります。 Bで解決させるにはどうすればよいのでしょうか? (progn (setq pos '((田中 . 80) (石川 . 60) (石橋 . 70))) (setq x "田中") (print (cdr (assoc '田中 pos))) ;-->A (print (cdr (assoc x pos))) ;-->B ) 80 nil nil あと、(prognを使うと評価されて、上のように3つ表示されますが、 printだけ表示させたい(評価を返さない)方法はあるのでしょうか?
田中は文字列じゃなくてシンボルから。 (setq pos '(("田中" . 80)) としないと。 で nil 返すのの何が問題? // interactive にしてキーに割り当てるとか
こんな感じじゃなかろうか。 (let ((pos '(("田中" . 80) ("石川" . 60) ("石橋" . 70))) (x "田中")) (values (cdr (assoc '田中 pos)) (cdr (assoc x pos :test 'string=)))) nil 80
ちなみに見たい値は print するよりも values とか list とかでまとめて返すほうが普通だと思う。
160 :
名無し~3.EXE :2007/05/21(月) 00:17:03 ID:Kl3ta2X+
<<158 ありがとう 度々ですみませんが xyzzyのLISPにはグローバル変数の他にconstなど設定できるのでしょうか? 表引きで使いたいのですが、値の変更はさせたくないので・・・ このようにしたいことから逆引きできるLISP本はありますか?
>>160 defconstant てのがある。あんまり使わないような気もするけど。
>>160 lispの本がそんなにないような。
慣れてるなら、webで探した方が速いよ。
>>161 ローカルでconstしたいって云う意味じゃね?
text-modeの段落の始まりを設定したいのですが、うまくいきません。 (defun text-mode-paragraph () (make-local-variable 'paragraph-start) (setq paragraph-start "^\\($\\|\\|[ ・○<\t]\\|(?[0-9a-zA-Z]+)\\)")) という関数を作って、*text-mode-hook*に追加したのですが、反映されていないようです。 どうしたらいいのでしょうか。
>>164 うちではこれで問題なく反映されました
(add-hook '*text-mode-hook* 'text-mode-paragraph)
>>165 すいません。うちでも出来ました。
hookへの追加の仕方が悪かったみたいです。どうもありがとうございました。
Windowsではxyzzy使ってるけど、UnixではVimって人いる?
なんでhashつかわんの?別にいいけど。
>>167 雑誌で見たら、はてなの中の人の誰かがそんな事を書いていた。
>>168 何となくlistを使いたくなる気持ちはよく分かる。
hashの比較関数に好きなの使えないのがうぜえ
171 :
名無し~3.EXE :2007/05/25(金) 09:41:15 ID:WId5s8t0
>>170 俺のは使えるんだが
おまいのは使えんのか?
>>172 そうだったのか。
プログラミングのことよくわからんが、hashの比較関数にlambda式つっこんだりするのは
滅多にないことなのか?
>>173 そういう要望は当然あると思う。
その場合は、hash 以外を使うか、キーを工夫するしかない。
正直、この制限にどんな効果があるのかよく分からんけど。
hashはscratchで遊んでいるときに #<hashtable 52891748> としかでないからキライだ!
過去ログ等を調べてみてものっていなかったので質問させて下さい。 当方、JavaTinyConsoleを使用していまして、 コンパイル、再コンパイル、実行などをキー入力で行いたいと思い (require "java") (define-key ed::*java-mode-map* #\M-F1 'jtc-javac-buffer) (define-key ed::*java-mode-map* #\M-F2 'jtc-javac-buffer1) (define-key ed::*java-mode-map* #\M-F3 'jtc-java-buffer) とsiteinit.lに書き込みました。 しかし、javaファイルを読み込んだときに 名前が衝突するためexportできません: jtc::jtc-javac-buffer というエラーメッセージが表示され、キーに割り当てることができませんでした。 コンパイルなどをキーに割り当てる方法をご存知の方がおられたら教えてください。
>>176 やり方はいくつかあるけど、こういう風にするのが一番らくだと思うよ。
x (define-key ed::*java-mode-map* #\M-F1 'jtc-javac-buffer)
o (define-key ed::*java-mode-map* #\M-F1 'jtc::jtc-javac-buffer)
残りの2つも同じように jtc:: を付けて味噌。
ためしてないけどたぶんいけると思う。
>>177 うまく割り当てることができました。どうもありがとうございました。
伺いたいことがあります。 shell3モードでtab補間をすると新しいバッファが立ち上がると思うのですが、 立ち上がったバッファがコマンドを入力し終えた後も消えてくれません。 コマンドを入力し終えた(Enterをおした)後に立ち上がったバッファが自動的に消えるように 設定するにはどうすればいいでしょうか?
(setq *popup-completion-list-default* :always) とするのも一つの手だとは思う。
こんなのもある。どこかでいただいたもの。 ;; 補完リストをチップヘルプにする (setq *print-completion-list-hook* '(lambda (list prefix &optional string) (popup-string (format nil "Possible completions are ~Ditems:\n~{\n~A~}" (length list) list) (point))))
182 :
179 :2007/05/27(日) 00:39:37 ID:RFU75A/E
>>180 ,181さん
どうも速いレス、ありがとうございます。
lispをよくわかってないので、書いていただいた内容を理解するために調べてきます。
xyzzyをローカライズできるとのことですが、
http://xyzzy.s53.xrea.com/wiki/index.php?L10N ここで記載されている動かし方は添付ファイルlocal050313.lzh用だと思います。
最新のlocale0604027.lzhの動かし方をご教示ください。あと、アーカイブ内
のlocale/en/内のファイル名がlisp%2F...になっていますが、これは
locale/en/lisp/...ではなく、このままでOKなのでしょうか?
そうえいば、xyzzyをローカライズして使ってる外人っているのかな? わざわざこっちでローカライズしなくても、使いたいなら勝手にやりそう な気はするけど。2chでも外国語のソフトの日本語化とか勝手にやってるしね。
xyzzy自体のメニュー類やドキュメント類、公開されてるLispの殆どが日本語である現状から言うとね。 誰かが他言語のローカライズ版xyzzyやドキュメントを公開すると、一定の市民権は得られそうな気は 個人的にはしているが…。俺はやる気力も能力も時間もない。
英語圏の人間にxyzzyのメリットは結構少なそうだけど、 中国や韓国とかなら普及しそう。しかし、何故だろう。 あんまり普及させたくないのは。面倒そうなんだよね奴ら。
後xyzzy wikiが余りに脆弱な状態なので変に 教えたりすると真面目に悲惨な状態になりそう な予感。
初期状態では xyzzy の方が高機能って言うか、使いやすいとは思う。 Elisp がバリバリ書けるなら Emacs の方がいいのかも知れんが。
>>189 広めるなら、直接奨めてみるとか、何らかの方法で存在を
知らせないとページだけ作っても駄目なんじゃないかと。
くだらない
クマーのときも似たようなこと言ってる奴がいたような。
またクマーの人がやらかしたか!
クマーの人は次々と個性的な拡張lispを発表してるな
うむ、貴重な人材だ。
197 :
名無し~3.EXE :2007/05/31(木) 23:10:46 ID:bec7IHbY
LISPのコメントは;ですが、複数行のコメントの書き方はあるのでしょうか? perlなら =comment Perlの複数行コメント =cut /* C言語の複数行のコメント */
#| |#
199 :
名無し~3.EXE :2007/05/31(木) 23:28:11 ID:bec7IHbY
みなさん次のTabと前のTabに移動するのはどのキーで行っていますか? いまいちいい配置が思いつかないのですが
>>200 F11で前、F12で次にしてます。
ノートですが。
F2/F3 常用タブブラウザがこれなので合わせた
>>200 M-Left、M-Right でフレーム移動、(上にフレームタブを置いてる)
M-Up、M-Down でバッファ移動にしてます。(左にバッファタブを置いてる)
レスありがとうございます できる限りホームポジションから離れたくないと考えているので 201さんのキー配置にしてみようと思います
そもそもタブ自体表示させていません 上下スプリットしてバッファ切り替えたくなったら C-x b 上下に分けていれば言ったり来たりする頻度はかなり下がる
>>200 iswitchb.l
フレームは使ったことがない
C-,とC-.でウィンドウ移動 C-S-,とC-S-.でバッファ移動 C-]でフレーム移動
C-. ってキーワード補完のイメージあるなあ。
無難 ? に C-TAB でも iswitchb の方が便利
単に次のバッファ切り替えは、ファイルに関連してないバッファ(*scratch*)をスキップして切り替えるようにしてる。 バッファが多い時はiswitchbかな。
select-bufferを使っているのは少数派
F1には何を割り当ててる?
へるぷ
フェラーリ
>>218 ヘルプじゃないや info-modoki-mode だった
各モードごとにリファレンスっぽいのを
しょぼい速読モードみたいなものを作ったんですが、使う人いますか?
>>222 upしてみました。
ttp://homepage2.nifty.com/kimagurenixyzzy/lisp/sokudoku.LZH 速読するバッファを選択後、M-x sokudoku-menu からすべての機能が実行できます。
C-u 付きで実行すると、細かい設定をしてから実行します。
無理矢理全角に変換する仕様となっているのがほとんどなので、半角英数などで
速読したい場合には、M-x sokudoku を実行してください。
アンインストールは M-x sokudoku-uninstall を実行してからにして下さい。
()などの括弧を縦書きにしたときにうまく表示する方法があったら教えてください。
その他にもなにかアイデアがあったらもらえると嬉しいです(対応できるかどうかはわかりませんが)。
224 :
223 :2007/06/08(金) 07:07:13 ID:StRTL4hy
それと、終了は C-g で。
速読懐かしいなぁ。小学生の時はできたけど、今はもう無理だ。 > ()などの括弧を縦書きにしたときにうまく表示する方法があったら教えてください。 縦書きフォントインストールして、 専用の ini ファイルを生成して、 xyzzy -i ○○.ini で起動するとか。
>>225 どうもです。
「」や、。などはわざわざ縦書用の文字に変換して半角スペースを入れて整形していたんですが、
縦書きフォントの方が良さそうですね。
しかし、小学生で速読できたってのはすごいな。
2ch-modeで2ちゃんを閲覧していると、特定の板やスレで
文字化けしてしまいます。今はお風呂板を開くと文字化けです。。。
http://hobby9.2ch.net/bath/ SJISとUTF-8の文字コード判定に失敗してるような感じに見えますが
なんとかなんないもんでしょうか。その都度文字コードを強制的に
変更するような手動対応でもいいのですが。
パスに [任意] を含むと grep 出来ない。orz 例 c:\bak\[20070609]hoge
229 :
226 :2007/06/09(土) 15:19:45 ID:dgWrEiSC
ちょっと試してみて、@MS ゴシックなどだと()は縦書きにならずに、通常の文字が横向き
になってしまうし、文字ごとにフォントを指定することもできないので、フォントを自作するしか
なさそうです。外字が使えればいいんですが。
まあ、使う人もいなさそうなのでこの辺で。
>>228 うちでは C:/bak/[20070609]hoge というファイルにgrep出来てますよ。
find-file でそのようなファイルを作成することはできないようですが(既にあるファイルは開ける)。
230 :
228 :2007/06/09(土) 15:37:29 ID:d5WTqGCq
すみません ファイルじゃなくてディレクトリに含まれていると出来ないんです。 説明不足だったですね。
231 :
228 :2007/06/09(土) 15:54:13 ID:d5WTqGCq
minibuffer でも grep 出来ることを忘れてました。 grep-dialog が出来ないんです。
>>230 glob.l の29行目の directory が
(directory "c:/bak/"
:wild "[20070609]hoge"
:directory-only t)
のときに nil を返すのが原因のようだけど
directory は builtin関数だからソースを書き換えないと無理じゃないかな?
>>228 ツール
共通設定
さまざま
[..]はワイルドカード
本当だ。[..]はワイルドカードのチェックをはずせばいけますね。 チェックを入れたままでも以下を評価すればいけるかも(何か弊害があるかもしれませんが)。 (in-package "editor") (defun glob-expand (path) (let ((prefix "")) (setq path (namestring path)) (when (string-match "^\\(.:\\|//[^/]+/[^/]+\\)?/" path) (setq prefix (subseq path 0 (match-end 0))) (setq path (subseq path (match-end 0)))) (or (listp prefix) (setq prefix (list prefix))) (do ((p (split-string path #\/) (cdr p))) ((or (null p) (null prefix)) prefix) (let ((dir (car p)) (r nil)) (mapc #'(lambda (path) (setq r (nconc r (mapcar #'(lambda (file) (concat path file)) (directory path :wild (unless (string-match "\\[.*\\]" dir) dir) :directory-only t))))) prefix) (setq prefix r))))) (in-package "user")
235 :
234 :2007/06/09(土) 18:17:05 ID:dgWrEiSC
234は弊害ありすぎだったので、以下の方がましかもしれません。 (素直に[..]はワイルドカードのチェックをはずした方がいいです) (in-package "editor") (defun glob-expand (path) (let ((prefix "")) (setq path (namestring path)) (when (string-match "^\\(.:\\|//[^/]+/[^/]+\\)?/" path) (setq prefix (subseq path 0 (match-end 0))) (setq path (subseq path (match-end 0)))) (or (listp prefix) (setq prefix (list prefix))) (do ((p (split-string path #\/) (cdr p))) ((or (null p) (null prefix)) prefix) (let ((dir (car p)) (r nil)) (mapc #'(lambda (path) (setq r (nconc r (mapcar #'(lambda (file) (concat path file)) (if (string-match "\\[.*\\]" dir) (list (append-trail-slash dir)) (directory path :wild dir :directory-only t)))))) prefix) (setq prefix r))))) (in-package "user")
236 :
228 :2007/06/09(土) 18:36:35 ID:q6D+n+ay
237 :
228 :2007/06/09(土) 18:50:32 ID:q6D+n+ay
>>227 自分の環境だと特に文字化けせずにお風呂板も見られるみたいですが…
特定のスレなのでしょうか?
もしconfig.lで*read-cgi-hosts*を設定していたらそれをコメントアウトしてみて
うまくいったりしないでしょうか?
ttermを使って思うのですが、remoteでUnix(FreeBSD)上に入る場合、普 通に機能します(違和感なくtermとして) cygtermを使って同じ事をした場合、xyzzyにキー入力を全て奪われてし まいます。 shell-modeでも似た感じなんですが、C-pがxyzzyの行移動のままシェル で補完が効きません。emacs上でC-x C-cしてxyzzyを落とす挙動になりま す... localではshell-modeもttermもうまく機能せず、不便に感じます。正常 に設定出来ていないですよね?怪しげな動きをしますorz cygwinと合わせてlocalで使うにはどうすればいいのでしょうか?教えて 下さい><
240 :
239 :2007/06/12(火) 00:04:32 ID:C4nM+zFU
すいません。自己解決しました。スレ汚しごめんなさい。 少し変ですかMeta-codeなるpopを指定するか、きちんと定義するといい みたいです。
shell3とか
242 :
名無し~3.EXE :2007/06/15(金) 10:57:54 ID:x/OgF02g
hoge1 hoge2 を範囲選択してC-b Iで \begin{itemize} \item hoge1 \item hoge2 \end{itemize} になるような機能がほしいのですが,lispのサイトを覗いて勉強中です. できる人がいましたら教えてください,お願いします.
勉強しているから手伝ってほしいのか 人に作ってもらいたいだけなのか
こういうこと? (global-set-key '(#\C-b #\I) #'(lambda () (interactive) (selection-start-end (start end) (narrow-to-region start end) (goto-char (point-min)) (insert "\\begin{itemize}\n") (goto-char (point-min)) (replace-regexp "\n\\(.\\)" "\n \\\\item \\1") (goto-char (point-max)) (insert "\\end{itemize}") (widen))))
それよりも C-b l って。 標準バインド潰す上になんとも気味の悪いキーバインドだな。
>>238 すみません、遅くなりました。
アドバイスありがとうございます。
*read-cgi-hosts*は使っていません。
特定のスレのこともありますし、特定の板のこともあります。
ある特定のパターンに反応してこうなってる気がするのですが…
スレが化けたときは各レスの本文にnilとかって表示されてる
ので、なんか単純にバグのような気もします。
>>238 ふと思い立って、.xyzzyに書いてあった
(setq *default-fileio-encoding* *encoding-utf8n*)
をコメントアウトしたら直りました。
うーん。。SJISで使ってないとダメなのか。。
>>247 (defun コマンド-sjis ()
(interactive)
(let ((*default-fileio-encoding* *encoding-sjis*))
(コマンド)
))
で適当なコマンドを囲んで、キーバインドをこっちにへんこうするとか。
昔、使い方スレの人に教えてもらったやつ ;;; (C-c u)UTF-8Nでリロード (global-set-key '(#\C-c #\u) #'(lambda () (interactive) (revert-buffer *encoding-utf8n*))) あとは適宜どうぞ。
もうちと汎用性を持たせて、うちはこんな感じにしてる。 (global-set-key '(#\C-c #\C-v) #'(lambda () (interactive) (revert-buffer (read-char-encoding "Encoding: "))))
>>247 > うーん。。SJISで使ってないとダメなのか。。
2chのdatがShift_JISだから文字エンコーディングの判定で失敗しちゃうんだろうね。
勘だけど $XYZZY/site-lisp/2ch/ 以下で insert-file-contents を使っているところを
全部 (insert-file ファイル名 *encoding-sjis*) な感じで書き換えると大丈夫かもしれない。
>>248 は手元で対処、こっちは根元で対処という感じ。
お好みで。
>>250 C-u M-x revert-buffer
ファイルなら
>>252 より、
(setq *find-other-file-requires-file-name* t)しておいて
C-u C-x C-v
した方が楽かも
254 :
sage :2007/06/20(水) 01:42:51 ID:cs4krmYO
indent-for-commentのコメント桁位置を調整するlispを作りました。 えと、自分が欲しかっただけなんですけど…orz emacsではあったのですが、xyzzyでは見当たらなかったので。 これってマイナーな機能なのかな…。 ;;; 引数でコメント桁位置を数値で指定 (defun set-comment-column (col) (interactive "ncomment column: ") (setq comment-column col)) ;;; 現在の桁位置を設定 (defun set-comment-column-current-column () (interactive) (setq comment-column (current-column))) (global-set-key '(#\C-x #\;) 'set-comment-column-current-column)
前の行とコメント位置を合わせるlispならどこかで見た気がする まぁぶら下がりコメント禁止されてるから普通のインデントで足りてるってのもあるけど
その前に、ぶら下がりコメントってなんだ。
健康器みたいなもんだ
実家にまだそれあるぞ‥‥
ぶら下がりコメントってのは 行の後ろに付けるやつ //xxx なんだけど普通言わないのかな?
ぶら下がりコメント(dangling comment)は閉じてないコメントのことで、 C++の//は行コメント(single-line comment)だよ、たぶん。 日本語あんま知らんけど。 Cでmallocしてfreeせずに開放不能になったポインタはdangling pointerな。
ああ、違う、逆だ。 dangling pointerはポインティが死んだのにポインタだけ生きてる状態だ。
ポインティというひびきが そこはかとなくエロイな
ああ、僕のポインティ
実行すると、Deleteキーを押せばC-dを使えよといわれ、 BSキーを押すとC-hを使えといわれ、カーソルキーを押すと そんなキーねぇよ、と怒ってくれる。そんな強制ギプス のようなマイナーモードを作ってください。
xyzzyはC-hはデフォなんだっけ。
作ってみたぞ (require "wip/winapi") (c:define-dll-entry c:short GetKeyState (c:int) "user32") (defvar-local *gips-mode-map* nil) (unless *gips-mode-map* (let ((kmp (make-sparse-keymap))) (define-key kmp #\Delete (lambda () (interactive) (message-box "C-d 使えよ" nil '(:exclamation)))) (let ((f (lambda () (interactive) (message-box "そんなキー知らん" nil '(:question))))) (define-key kmp #\Up f) (define-key kmp #\Down f) (define-key kmp #\Left f) (define-key kmp #\Right f)) (define-key kmp #\C-h (lambda () (interactive) (if (minusp (GetKeyState 8)) (message-box "C-h 使えよ" nil '(:exclamation)) (call-interactively (or (lookup-keymap (local-keymap) #\C-h t t) (lookup-keymap *global-keymap* #\C-h t t)))))) (setq *gips-mode-map* kmp))) (defvar-local gips-minor-mode nil) (defun gips-minor-mode (&optional (arg nil sv)) (interactive "p") (ed::toggle-mode 'gips-minor-mode arg sv) (if gips-minor-mode (set-minor-mode-map *gips-mode-map*) (unset-minor-mode-map *gips-mode-map*)) (message "Gips mode turned ~:[off~;on~]." gips-minor-mode)) (pushnew '(gips-minor-mode . "Gips") *minor-mode-alist* :test 'equal)
>>267 message-box よりも error にして、
エラー表示をマイルドに
オプションにチェック入れた方が良くない?
需要あるかどうか分からんが
あぁ、需要はあるのか スマソ
俺が始めてPC使ったときになかなかタッチタイプが覚えられなくて、 キートップ全部はずしてランダムにはめ込見直して キーボードを見ても意味内容にしてタッチタイプをマスターしたことを思い出した。
272 :
265 :2007/06/23(土) 15:49:11 ID:b3BzCYUb
>>267 いただきました。カーソルキーなんて知らんと言われたとき
ちょっと吹いた。
>>269 カーソルキーは実際に動作するけどメッセージも出る、みたいな
感じに、ということ?
>>272 message-box だと、間違えた時に リターンを押すのが
うざいと思ったけど、強制するのだからこれでいいのかも。
ところで、 popup-string のフォントの大きさって何処で設定できる?
(message "hoge") なら windowsの画面の設定の "ヒント" を変更する事で
変えられるけど、これはどこか知っている人いない?
popup.ccより: if (!hfont_popup) { NONCLIENTMETRICS cm; cm.cbSize = sizeof cm; if (!SystemParametersInfo (SPI_GETNONCLIENTMETRICS, 0, &cm, 0)) { HDC hdc = GetDC (hwnd_popup); memset (&cm.lfStatusFont, 0, sizeof cm.lfStatusFont); cm.lfStatusFont.lfHeight = MulDiv (9, GetDeviceCaps (hdc, LOGPIXELSY), 72); cm.lfStatusFont.lfCharSet = SHIFTJIS_CHARSET; strcpy (cm.lfStatusFont.lfFaceName, "MS Pゴシック"); ReleaseDC (hwnd_popup, hdc); } hfont_popup = CreateFontIndirect (&cm.lfStatusFont); } lfStatusFontはthe font used in status bars and tooltipsだから、 そのまんまツールチップの設定変えればいいんだろうけど、 hfont_popupがスタティック変数だから、xyzzyを再起動しないと反映しない。
275 :
267 :2007/06/24(日) 10:31:21 ID:2rxkNPYv
>>273 > うざいと思ったけど、強制するのだからこれでいいのかも。
そう、だから message-box にしてみた
あとキーマップはローカルじゃなくてよかったような
>>274 thx. こっちも、"ヒント" を変えることで反映されました。
ほほー たしかランダムハウス英和辞典のCD-ROMがあったはずだからトライしてみるかな
外字が表示できればベストだけど、出力時に変換すると重くなりそうだし、辞書によって対応させる文字も 違いそうなので結構難しそう。 pdicだと外字を変換して辞書を作成することもできるけど、シェアウェアなのと検索の種類が少ないのが難点かな。 画像表示は、DDwinとかEBWinを使うしかないのかな。spiなどが使えそうな気もするけれど。 ちなみにうちは、こんな感じ (defvar *EBWin-path* "C:/Program Files/EBWin/EBWin.exe") (defun EBWin-search (&optional word) (interactive) (unless word (setq word (if (pre-selection-p) (selection-start-end (beg end) (buffer-substring beg end)) (read-string "EBWin: ")))) (if (< 0 (length word)) (call-process (format nil "~A /C=1 /S=\"~A\"" (map-slash-to-backslash *EBWin-path*) word) :exec-directory (directory-namestring *EBWin-path*)) (plain-error "検索語を入力して下さい"))) で、EBWinを使ったりしてます。
>>280 その記事って、置換の replacementのところに文字列じゃなくて関数が置けるよ
置換のときはその関数の戻り値を使うよ。ッて話であって
受け付ける正規表現が切り替わるとかいう話じゃないと思うが。
あ、そうなの?
もしかして既出かもしれないけど フォルダ名に "[*]" (* 部分は1文字以上の文字、たとえば [お]、 [abc]、 [070131] など) を含んだフォルダの中の ファイルを編集中に、c-x c-w (emacs-write-file) で別名のファイルに書き出そうとすると、 「Write File」ダイアログが起動してしまい、ファイルを保存できない というのはバグでしょうか…? xyzzyのバージョンは 0.2.2.235。 試しに $XYZZYHOME/.xyzzy と $XYZZYHOME/site-lisp/siteinit.l と xyzzy.wxp を一時的に削除して起動し直してみたけど 結果は同じだった。
>>284 おお! こんなところに罠が!!
これってunix系OSのワイルドカードのエミュレーションみたいな感じなんですかね。
unix(というかLinuxのbashしかいじったことないけど)だと、
たとえば \[abc\] などとしてやれば本来(?)の "[abc]" という文字列として解釈してくれるけど、
xyzzyのこのスイッチだとそのへんが利かないっぽいですね。
機能OFF = [ ] を(path指定時に)ワイルドカードとして使うのを諦める
機能ON = [ ] を含むパス名の使用を諦める
の二者択一なのかな…。
>>285 バックスラッシュでエスケープしたときはワイルドカードとみなさないようにすればいいの?
それともディレクトリ名の[..]はワイルドカードとみなさないようにすればいいの?
それとも両方?
>>280 の様に置き換え処理時にlispが扱えるように、lispで実装してみたけど
やっぱ重いし安定的に使えるかというと微妙だった。
こういう速度や安定性が求められる機能は内部から実装しないとだめだね。
まぁ、実際使うかっていうのも微妙なところだけど。
>>285-286 Windowsの場合、バックスラッシュはフォルダの区切りだから
エスケープ記号としては使いづらいんじゃね?
じゃあどうやってエスケープするかってことになると思いつかねーし……
>>286 どちらかというと前者ですかね。(後者だとファイル名に [..] を含む場合に困りそう)
>>288 たとえば c:\abc\d[ef]\ghi\j.txt というファイルを編集中に
c-x c-w (emacs-write-file) すると、ミニバッファには
Write file: c:/abc/d[ef]/ghi/
という具合にパス区切りとして「/」が表示される訳で、
「\」をエスケープに使えそうな気もしなくもないですが…。
でもここでたとえば
c:\abc\d.txt
とパス区切りをバックスラッシュに直して指定してもそれはそれで受け付けられるんだな。
単に「/」と「\」がどっちもパス区切りとして使えるってだけか。
ためしに
c:/abc/d\\[ef\\]/ghi/k.txt
と指定してみたら、
C:/]/ghi/k.txt
指定したパスが見つかりません。
とダイアログが出てしまった。「\\」(または「//」)があると単にパスのルート指定とみなされるのか…?
とりあえず「[..] はワイルドカード」を無効にして使うことにしました。
ふと思ったんだけどSid Meier's Xyzzyzationって語呂よくね?
292 :
286 :2007/06/27(水) 12:07:41 ID:FhtS5gU5
>>289 ファイル名でなくディレクトリ名の。
つーことで適当に書いてみた。
(defun read-file-name2 (prompt &key default title history)
(let (res)
(let ((*brackets-is-wildcard-character* nil))
(setf res (read-file-name prompt
:defalult default
:title title
:history history)))
(when *brackets-is-wildcard-character*
(cond ((or (string-match "\\\\\\[" res)
(string-match "\\\\\\]" res))
(setf res (substitute-string
(substitute-string res "\\\\\\]" "]")
"\\\\\\[" "[")))
((string-match "\\[.\\]" (file-namestring res))
(setf res (filer res nil title nil)))))
res))
(defun read-file-name2-interactive (prompt default history title)
(list (read-file-name2 prompt
:default default
:title title
:history history)))
(pushnew '(#\F . read-file-name2-interactive)
*interactive-specifier-alist* :test #'equal)
293 :
289 :2007/06/27(水) 13:32:20 ID:T60p6RQa
>>292 おお!すばらしいです。
という訳で早速 .xyzzy の最後に追加して試してみた。
…なんか、単に [..] がワイルドカードとして機能しなくなっただけの動作っぽいような。
うちの環境だけだろうか…。
でも気がついてみると、
[ツール]→[共通設定]→[さまざま]→[ [..]はワイルドカード]
のチェックをOFFにしても、何故か再起動するとまたチェックがONの状態で起動してしまって
この設定をOFFにできないという現象が発生。
(原因不明。また私がヘンなところでヘンなミスをやらかしてるのか…?)
結局
>>292 さんが書かれたコードを .xyzzy に追加した状態で
(つまり「[..] はワイルドカード」を無効にしたのと等しい状態で)
使うことにしました。これで解決。ありがとう
>>292 さん。
# なんで勝手に強制ONになるんだろう…うちのxyzzyの「[..]はワイルドカード」設定…
# 以前はどうだったか思い出せない…
>何故か再起動するとまたチェックがONの状態で起動してしまって 前からそうだったような気がする optprop.lをいじるとよさそうだけど
(setq *brackets-is-wildcard-character* nil) でいいんじゃないの?
296 :
286 :2007/06/27(水) 16:10:17 ID:FhtS5gU5
>>293 ごめん正規表現ミスった。
"\\[.\\]"
→"\\[.+\\]"
>何故か再起動するとまたチェックがONの状態で起動してしまって
ヒストリに設定されないのが原因だと思われ。
(register-history-variable '(*brackets-is-wildcard-character*))
質問です。 0.4999999を0.5に、0.5999999を0.6に変換する方法はありませんでしょうか?
>>298 そうです。適当に考えてこんな感じでやってみました。
(setq foo 0.4999999)
=> 0.4999999
(setq foo (coerce (/ (round (* foo 10)) 10) 'float))
=> 0.5
>>299 何がしたいか条件をきちんと出してほしい・・・
単に四捨五入の話なのか
0.49999991や0.4999998の場合や
0.499999とかもか
>>300 あ、すいません。
小数点第一位で四捨五入したいということです。
一応
>>299 で出来ているような気がします。
>>301 「小数点第1位で四捨五入」すると整数になっちゃうんでは?
小数点第1位を・・・ ならそうだね
>>299 roundじゃなくてfroundを使えばcoerceがいらなくなる。
あとroundは偶数丸めで四捨五入じゃないんだけどそれは大丈夫?
>>303 この場合「で」でも「を」でも意味は同じではなかろうか
そもそも「小数点第1位で」ではなく「小数第1位で」と書くべきでは…
「四捨五入して小数第1位まで求める」なら誤解なく通じそう
以上スレ違いで失礼
(* (round foo 0.01) 0.01)
だとまずいのかな…?
TreeView.dllってアイテムのD&Dには対応してないの?
>>304-305 どうもです。
ちょっと質問の仕方がわかりにくかったかもしれないですね。
確かにroundは四捨五入ではないので、四捨五入というなら
(setq foo (/ (fround (+ (* foo 10) 0.1)) 10))
こんな感じですかね。
(* (round foo 0.01) 0.01)
はうまく動いていないような気がします。
>>307 > (setq foo (/ (fround (+ (* foo 10) 0.1)) 10))
これだとやっぱり偶数に丸められてこうなる。
(/ (fround (+ (* 0.54 10) 0.1)) 10)
=>0.6
(/ (fround (+ (* 0.64 10) 0.1)) 10)
=>0.6
四捨五入はこんな感じらしいです。負の数は考えてないので適当に修正してください。
(defun nearest(number &optional (divisor 1))
(if (<= (* (+ 0.5d0 (ffloor number divisor)) divisor) number)
(fceiling number divisor)
(ffloor number divisor)))
lisp って…単に四捨五入するだけでもこんなにコード書かないといけないのか…
四捨五入ってのはコンピュータにとって元々苦手なものだし。
というか四捨五入すら自力で作れないようなら どんな言語でも結果は一所だと思うが。
>>308 例えばTreeView.dllを使っているolt2で、ドラッグでアイテムの位置を
変更できるとか。
>>313 以前タイトルバーとステータスバーは消せないって聞いたから、難しいと思う。
>>314 >
>>308 > 例えばTreeView.dllを使っているolt2で、ドラッグでアイテムの位置を
> 変更できるとか。
そりゃ、それができれば対応っていえるさ。
なんかもっとプリミティブな確認方法ないの?
俺はD&Dでファイル開くとき Treeview部分でも受け付けてくれたら嬉しいな 画面がそこしか見えてないときとか便利だから
>>315 プリミティブな確認方法ってのがよくわからんけど、ソースを読むとか?
319 :
306 :2007/07/06(金) 11:55:47 ID:J/2fQLoV
うーん、うまく伝わってないような。 何を確認したかってって言われても、「TreeView.dllがアイテムのD&Dに対応しているか」 というのを確認したいために、ここで聞いたんだけど。ソースは読めないんで Readmeを読んだけどそれに関する記述はなかった。 何がやりたいかっていうのを具体的に言うと、TreeView.dllが提供する InsertItemを使ってツリーアイテムを作成後そのアイテムをD&Dで移動させられないか? ということ。後ファイル等をツリー部にD&Dしたとき、ツリーアイテムとして 追加できないかということ。 最終目標としては、TreeView.dllを使ってプロジェクト管理みたいなことを できるようにしたいんだけど、マウスでのアイテム操作ができないとなると 不便だと感じたから。
何を以って対応かってなら、 TreeView.dllにそういうAPIとかあんの? ってことだろ、やっぱ。 ついでに言っとくと、 >InsertItemを使ってツリーアイテムを作成後そのアイテムをD&Dで移動させられないか? ってのと、 >ファイル等をツリー部にD&Dしたとき、ツリーアイテムとして は全く別物なんだよな。 後者は文字列を引数に取るイベントハンドラみたいな形で簡単に対応できるけど、 前者は、構造の変化をどうLispに伝えりゃいいのか、いや、新しい構造になったおーっていう通知だけでいいのか。 まあ、俺はやらねーんだけどなwww
Iria と xyzzy が起動してる状態で URLをIEとかでコピーすると そのURLをIriaが食うんだけど 何故かその時xyzzyが反応しなくなる。 これってどっちが悪いんだろう?
>>321 他のソフトのエディタとしてxyzzyを使用したときに、
クリップボードにコピーするとよく xyzzy が固まるので
xyzzy の方だと思う。
再現できるか試したいけど、そのためにIria入れるのもなー。
>>322 は何のソフト使って固まったの?
同じように固まることがあるなぁ。 xyzzy・OpenOffice・CLCLを同時に使っていて、クリップボードにコピーすると固まる。 xyzzy・OpenOfficeやxyzzy・CLCLの組み合わせの場合は、そんなことは起きないんだけど。 果たしてどれが悪いのか…。
>>324 あー、うちと同じだ。
で、最近CLCLやめてcharu3使い出してから症状は出なくなった。
乗り換えて日が浅いので、たまたま出てないだけかもしれないけど。
clcl+xyzzy+Excelとかで固まることがよくあるがclclが原因なのか… 試しに他のに乗り換えてみるかな…
>CLCL クリップボード変更後数ミリ秒後にフック処理発動みたいな機能あったよね? あれのせいじゃないかな。 xyzzyはまず変更の通知を次のフックウインドウに流してからフック処理してるみたいだから、 そこらへんで、なんかパラレルになっておかしくなってんじゃないかと。
md5sum が一致しない。
CLCLとxyzzyは別に固まらないよ。 自分は使っているけどそういう経験はない。 それよりも、(read-char *keyboard*)するとマウスが固まるのが気になる。
固まりはしないけどクリップボードとの同期がとぎれる
>327 もう一度確認してみたらCLCL+Excelだけで固まった。 自分のよく喰らう固まり方はxyzzyは無関係だった。 クリップボード共有プラグインだけなんとかなればcharu3とかに移行したいなぁ。
>>329 > それよりも、(read-char *keyboard*)するとマウスが固まるのが気になる。
それは xyzzy がマウスからの入力を受け付けなくなるだけのことで、
仕様と思われ。
インクリメンタルサーチ中にマウスが使えないとか。
フレーム作成時に名前をつけたり、変更したり出来ないんでしょうかorz
>>334 すみません。
検索不足でしたorz
ありがとう
ところで質問なのだけど、charu3とかCLCLみたいなクリップボード拡張を使うと、 xyzzyやvimのyankもクリップボードに記録してくれるの?
設定次第 デフォルトだとしないとおもった
>>332 仕様なのは理解しているが、仕様が良くない。
charu3 とか知らないけどyankで取り出す*kill-ring*はWindowsの クリップボードとは関係ないんじゃなかったっけ?
全く別物だけど、クリップボードとkill-ringを同期する設定とかもあるし…
341 :
322 :2007/07/14(土) 19:21:24 ID:fz7aLae4
>>323 powerpoint上でtexを使う TeXpoint っていうソフトの
エディタとして使った時に頻発した。
ところで、まったく関係ないけど欲しかったので作ってみた。
;;.. バッファーバー表示のトグル
(defun toggle-buffer-bar ()
"バッファーバー表示のトグル"
(interactive)
(let* ((bar (find "buffer-bar" ed::*command-bar-list*
:key #'(lambda (x) (ed::command-bar-symbol-name x))
:test 'equal)))
(ed::toggle-command-bar-1 bar 'ed::buffer-bar)))
>>341 toggle-command-bar-1 を使うより
toggle-command-bar を直接使ったほうがいいんじゃないだろうか。
(defun toggle-buffer-bar ()
(interactive)
(ed::toggle-command-bar 'buffer-bar))
>>342 お、thx。
こんなのがあったのね。
window.l しか見てなかったので、気づかなかったわ。
ありがたく、いただきます。
またまた別件だけど、 *window-flag-function-bar* は
export し忘れてるみたいだ。
xyzzycli.exe -fhoge で関数hogeを実行するときに引数を渡したいのですが、どう書いたらよいのですか?
xyzzycli.exe -e (hoge x) かな。
他の方が書いたものを見るところでは空白区切りでよさそうなのですが、 たとえば、 xyzzycli.exe -finsert "hoge" では、引数が少なすぎます、と言われてしまいます。
>345 どうもありがとうございます。 試してみたところ、 LINE 1:予期しないEOFを検出しました。 と出ます。環境のせいかもしれませんね。
>>347 ん? エラーメッセージの通りじゃなくて?
scratch で評価して、エラー出ないかチェックしてみてわ。
-qで起動した上で、 xyzzycli.exe -e (find-file "hoge.txt") としても同様のエラーが出ました。困りました。
>348 scratchではちゃんと出来ました。
これでどうだ xyzzycli.exe -e "(find-file \"hoge.txt\")"
>351 ばっちりでした。 どうもありがとうございました。
かなり前に
http://pc11.2ch.net/test/read.cgi/software/1163847543/ で質問したんですが、こっちの方で訊いた方がいいようなので、質問させてください。
BMP面(〜U+FFFF)までの文字は表示できるのですが、
サロゲートが必要な範囲(U+10000〜)がまったく表示されません。U+10000以上の文字が入ったフォントを使ってるのですが…
あとBMPの範囲でも、一部の文字が半角のように表示されてしまいます。(全角だけど左半分しか表示されないなど)
JISにあるような漢字は問題ないですが、中国語でしか使わない漢字や、一部の記号はそうなります。
他の人はどうですか。そもそも「U+10000以上なんて使わない」とか「日本語しか使わない」人が多いのでしょうか。
メモ帳ですら表示できるので、自分のxyzzyがおかしいとは思うんですが。
メモ帳は多言語のレンダリングに関しては 進んでいるのでメモ帳ですらというのはどうかと思います。 大概のsjis拡張のエディタよりも多言語対応は良いんじゃないですかね。 私の見た範囲ではxyzzyはサロゲート非対応で良かったと思います。 私は日本語、英語以外は読めないし書けないので、 非対応の部分にどうこうしたいという動機づけがなかなかできませんね。 プログラム的に文字コードに詳しい人が言語のノウハウ的に 文字コードの話に詳しい確率はかなり少ないんじゃないかと思います。 ここにあるこのフォントを指定するとこの文字がこう表示されるはずなのにこうなる。 ってくらいの説明をしてもらえないとプログラムな人の興味を 引けないんじゃないかと思います。 逆にサロゲートが必要なコード範囲が必要なのは どこらへんの言語をやっている人なんですか? CJKの新たに入った部分以外は学者くらいしか触れない世界だと思ってますけど… 古代文字???
Windows自体(Edit(Notepad.exe))はサロゲートペアに対応してるけど、 C++のワイド文字列(xyzzyのLispの文字列の実装)は可変長無理だからどうしょーもないよ。
xyzzyではC++のワイド文字をそのまま使ってるんだ 意外
read-string使用時のhistoryの使い方が分からなくて検索をしたら 励ましあえ その9の676に (define-history-variable *city-history* nil) (setf (get :city 'minibuffer-history-variable) '*city-history*) (defun city (str) (interactive "sCity: " :history0 :city) (msgbox str)) とありましたが、評価してみても実際には *minibuffer-default-history* が使われているようです。 やり方が間違っているのでしょうか?
>>357 minibuffer-history-variable に ed:: をつければ大丈夫なはず。
(setf (get :city 'ed::minibuffer-history-variable) '*city-history*)
たぶん超既出だろうけど kamail 0.0.2.8 で、kamail-address.l の186行目を ((string-match "^[ \t]*\\([^ \t\n]+\\)\\([ \t]+\\([^\n]+\\)\\)?$" line) に直したら、Addresses内でインデントが使えるようになって便利になりました 今までGROUPの入れ子の対応が分かりづらくて若干難儀してたもんで… なんで最初からこうしておいてくれなかったのかなァ
これって常識? (setq inverse-cursor-line t) (setq *tab-bar-never-focus* t)
>>363 行カーソル表示した時に、_ が反転して、空白と
区別が付くようになる。
タブバーにフォーカスがあってキー入力ができない、
ということがなくなる。
>>364 なるほど。ありがとう。
ちなみにアンダーバーの問題の別解
1.フォントに変える(例えばOsaka等幅だと行カーソルと重ならない)。
2.行間の大きさを変える。[ツール] [共通設定] [フォント] [行間](ダイアログの右上)
正規表現に鬼車がつかえるようになる拡張ってなかったっけ。 どこかで見た記憶が。
>>366 たぶんないね。
励ましあえ その9 の 523 で
ちょっと話題に上っているくらい
Part14の186あたりからのほうがいいかも
eb.lを使わせていただいているのですが、site-lispにeb.lを置いた状態で、 (make-tags-file "c:/util/xyzzy/" 0) などとすると、-qで起動したxyzzyであっても、 「変数が定義されていません: *ebdict-dictionary-title*」と出ます。 いったんeb.lをsite-lispからどかしてXTAGSを作るようにしているのですが、 どうしたらよいでしょう。 eb.lには何も手を加えていません。
370 :
360 :2007/07/30(月) 17:16:55 ID:YwPHoacQ
>>361 KaMailからAddressesを更新したらインデントなくなっちゃった… orz
受験勉強もせずにKaMailをインストールしてました。 使うソフトが減ってうれしいです。 次はrss-modeかな。
>>369 バッファの色分けを変更可能にするためにちょっと
イレギュラーなことをしていました。
明日くらいに修正した0.4を出せると思います。
>>372 >使うソフトが減って嬉しいです。
emacs厨と大差なくてワラタ
WinAPI(DLL)呼び出しまわりで勉強になるサイトを教えてください。
ebdict0.4、さっそくダウンロードさせていただきました。 無事にmake-tagsできました。どうもありがとうございました。
378 :
360 :2007/08/01(水) 23:04:08 ID:nVgE5mbr
>>371 kamail-address.lでファイル(Addresses)の読み書きの際にインデントの保存を考慮してないというだけの話でした
結局 kamail-write-group-address もいじって強制的にインデント付で書き出すよう俺改造しちゃったわ
ldocとかldoc2で (scan-buffer "PATTERN" と入力した後もscan-bufferのdocが見れるようにしたいのですが どうしたらいいでしょう。
pointがcarでない場合はcarの文字列を返す("(" まで戻る)ように、get-syntax-ldoc-wordを上書きするとか
もう一つ、pointが関数でない場合
ldoc2 そうなるように改造して使ってるから貼ろうかと思ったけど、 コード読み返したら直したくなったんで直してからにするよ
できた (require "ldoc2") (in-package "ed") (defun ldoc-var-message (symbol) "Print docstring of variable bound to SYMBOL." (let ((doc (documentation symbol 'variable))) (message "~S: ~A" symbol (if doc (substring doc 0 (position #\LFD doc)) "not documented")))) (defmacro save-goal-column (&rest body) (let ((v (gensym))) `(let ((,v (goal-column))) (unwind-protect (progn ,@body) (set-goal-column ,v))))) (defun ldoc-1 (&optional sym) (let ((to (progn (skip-syntax-spec-forward "w_.") (point))) (from (progn (skip-syntax-spec-backward "w_.") (point)))) (when (> to from) (let ((sym (ldoc-find-symbol (buffer-substring from to)))) (cond ((null sym) nil) ((boundp sym) (ldoc-var-message sym) t) ((fboundp sym) (ldoc-func-message sym) t))))))
385 :
つづき :2007/08/02(木) 23:28:07 ID:ZQXFQHuI
(let (opoint) (defun ldoc (&optional sym) "Print a function documentation." (if (or (eq *this-command* 'eval-last-sexp) (minibuffer-window-p (selected-window)) (eql opoint (setq opoint (point)))) (return-from ldoc nil)) (save-goal-column (if sym (ldoc-1 sym) (when (member buffer-mode *ldoc-activated-mode-list*) (save-excursion (or (ldoc-1) (unless ;; 末尾に \ があるとき (up-list -1) すると固まることがある (and (eobp) (eql (preceding-char) #\\)) (when (up-list -1 t) (forward-char 1) (skip-syntax-spec-forward " ") (ldoc-1)))))))))) (in-package "user")
386 :
380 :2007/08/03(金) 17:28:59 ID:7k1e1Izh
>>385 > 末尾に \ があるとき (up-list -1) すると固まることがある
試してみても全然再現させられないんだけど、
何か一つでも知っているのがあったら教えて。
>>387 バッファ末尾に \ があるときに backward-sexp すると固まるんだけど、
今デフォルトの状態でやってみたら再現しなかった。
うちの設定がまずいみたい。
>387 "(´・ω・`ショボーン\" 最後が"だなこれでは
390 :
387 :2007/08/05(日) 21:05:34 ID:cVEVV7Lc
>>388 どうも。環境の問題でしたか。
>>389 式が中途半端に終了しています、というエラーだったら
バッファに下のを入力して試せば、エラーも固まることもなく OK だった。
(
"(´・ω・`ショボーン\"
それとも、こういうことじゃなかった?
391 :
387 :2007/08/05(日) 21:11:10 ID:cVEVV7Lc
forward/backward-sexp には、前からずっと気になっていた点があって 複数行にわたる文字列中の括弧の位置で、エラーがでたりする。 ;; ok "( " ;; error " (" 直接 この影響を受けているのか、同じような問題により paren も、下の2つのどちらでも正しく外側の括弧の対応関係を とる事ができない。 (" (" ) (" ()" )
>>387-388 どうやら xyzzy.exe が古かったようで、最新のに変えたら固まらなくなりました。
なんでこれだけ古いままだったのかはわからない。
394 :
387 :2007/08/05(日) 23:44:27 ID:cVEVV7Lc
>>392 > Emacs だとここの最後の二段落に書いてあるように、そういう仕様になってる。
なるほど、これは知らなかった。 xyzzy もこれを踏襲しているみたい。
ソースでも、開き括弧は特別視していたけど閉じ括弧は無視していたので
不思議だったけど、納得しました。
>>393 バージョンあげる時に xyzzy が動いていたのかもね。
バッファがselected-bufferでなくなったら削除するようにしたいのですが、ど のhookを使えばいいのかわかりません。 *post-command-hook*にするしかないのでしょうか?
*activate-hook*か*deactivate-hook*かな
>>395 「違うタイミングで代わりができないか」を考えるか、
そのバッファだけバッファ移動コマンドを自前で定義するか、
*post-command-hook*を使う。
がんばれ。
>>397 どうもありがとうございます。
とりあえず*post-command-hook*にしておきます。
ここ(
ttp://gmail.1o4.jp/stunnel.html )を見て、stunnel を使い kamail で
gmail の送受信をできるように試みました。受信は問題なくできました。
しかし送信の方は、送信はちゃんとされるのですが、送信後に
"不正なデータ型です: nil: string" と言うエラーが出てしまいます。
対策を知っていられる方がおりましたら、教えてくださいませ。
KaMail で全てのメールを管理するんじゃなく gmail で管理したほーが楽だとこの前きづいた
メールソフト使うよりGmailが楽だし メモをエディタで書くよりGoogle Notebookが楽だし Webページ作るのはエディタよりGoogle Page Creatorが楽だし エディタ上でRSS Reader使うよりGoogle Readerが楽だし あとはGoogle 2ch Viewerがあればな
>Webページ作るのはエディタよりGoogle Page Creatorが楽 マジか 使ってみよう
>>401 全部Google様に、というか一つのサービス提供元にお任せしてると、
なんかこう…そのうち恐ろしいことになりそうな気がする。
互換性のあるデータ形式でエクスポートできるんだからいいじゃないか。
>>399 PLAIN,LOGIN認証とか試してみたら?
それでもダメならSMTPだけプロバイダのやつにしたら?
>>403 オレもそんな気がして…結局検索と地図くらいしか使ってないや
なんでみんなGoogle様のサービスに安心して身を委ねていられるんだろうな
神様かなんかと勘違いしてるんだろう
そのうちGoogle Folderとかが出来て、 Google Browser Desktopができたら、 もうPCなんてFirefoxが動けばあとは何もいらんな
xyzzy はいるよ。
Google Browser Desktop上にJavaScriptで書かれたxyzzyが動きます
つか
>>403 の言う恐ろしさって
個人情報含むいろいろを企業の無料アカウントに任せることだと
思ってた俺はこの流れでは負け組らしい。
ま、スレ違いだしどうでもいいけど。
412 :
406 :2007/08/09(木) 03:19:53 ID:D9blP6xB
>>411 > 個人情報含むいろいろを企業の無料アカウントに任せることだと
オレの感じてるのもそれです
なんだオレも負け組なのか。
googleはアカウント登録しなくても色んな人の個人情報とか思いっきり掴んでそう 正直マイクロソフト以上に危ないにおいがする企業だぜ
>>410 javascrpitがlispだったら考えてみるよ。
あとgoolgeってfirefox作ってるわけじゃないから
そういう意味じゃIE作ってるMSより怖くは成りえないと思われ。
>>411 スレ違いですまんかったが、411-412のような意味のつもりだった。
EPIC 2014、2015ってあんまり知名度高くないのか。
関係ないけど、xyzzyでHTMLを書いてF5→ブラウザでHTMLを開く
っていう動作をさせたいんだけど、どう書いたらいいの?
(shell-execute (get-buffer-file-name))
(setq aaa '(1)) =>(1) (delete 1 aaa) =>nil aaa =>(1) これって仕様通りなんですか? aaa =>nil になると思っていたんですけど。
>>418 その話題は定期的にでてくるから、wikiやスレの過去ログを漁ってみると良いかも。
他の言語だと、破壊的って書いてあったら自分で代入しなくても
勝手に代入するものだから勘違いしやすいけど、
lispの"破壊的"は文字通り、元の変数をぶっ壊して使えなくするって意味での"破壊的"。
ところがpushやpopはちゃんと元の変数に値を変更してくれる不思議。
push, pop は変数の値セルを破壊するからね nconc やら delete やらは変数から参照されてるリストを破壊する
いや、変数から参照されてるとは限らないか。 ともかく破壊されるものが違うってこと。
プログラミングのことはよくわからんが push や pop を破壊的というのには違和感がある。
421は何か勘違いしてるんじゃね?
>>420 push や pop は setf の仲間と考えればOK。
incf とか rotatef とかもそうで、元の変数の値などを変更することを目的としている。
nconc とか delete とかとは思想が違うと考えていいんじゃないかな。
「破壊的」の定義がほんと、一般的な意味と全然違うのね。 First, many destructive functions are not *required* to modify their input argument, merely *allowed* to. >push, pop Lispっぽく言うなら、「副作用的」って感じかな。
つまり、Lispでいう"破壊的"てのは 元の変数なんてどうなってもシラネーヨ!! ヽ(`Д´)ノ ってこと?
より正確には、返り値と同じ値に引数がなるか、それとも全く変化ないかの2択で、 例えばdeleteで予期せぬ値まで削除される副作用が起きるってことは許されてないよね?
>>429 > より正確には、返り値と同じ値に引数がなるか、それとも全く変化ないかの2択で、
> 例えばdeleteで予期せぬ値まで削除される副作用が起きるってことは許されてないよね?
いいえ。
引数のシーケンスを破壊して戻り値となるシーケンスを作っていいよとしか書かれていません。
deleteに与える引数が常にnilに変更される処理系があっても、
戻り値さえ正しければその動作は仕様を満たしているはずです。
ttp://www.lispworks.com/documentation/HyperSpec/Body/f_rm_rm.htm > Side Effects:
> For delete, delete-if, and delete-if-not, sequence may be destroyed and used to construct the result.
push, pop, setf, incf, rotatef が無関係なのはこれらがマクロだからですね。
431 :
421 :2007/08/10(金) 23:23:52 ID:h3vIaR7b
>>424 どっかおかしいとこある?
言い方がまずかったのかもしれないけど。
昔はまったなぁこれ。 「処理系さん!私(引数)のことメチャクチャにしていいよ(はーと)」 って言う意味だから紳士的だったりめんどくさいときは何もしないんだよね。
>>430 がびーん。常に返り値を使用しなければならないってことか…さんきう。
潜在バグとか作りこんでないといいなぁ…('A`)
434 :
名無し~3.EXE :2007/08/14(火) 13:44:48 ID:pOnNVn+n
howmでメモの拡張子をtxtにしたいんですがどうすればいいでしょうか? それとtxtにした場合デメリットはありますか?
>> 434 howm-init.l に (setq howm-file-name-format "%Y/%m/%Y-%m-%d-%H%M%S.txt") とか?
特にデメリットはないんじゃね? howmはhowmで書いたメモ txtは他のソフトで書いたメモと使い分けるくらいかな
画面全体の中でのカーソルの座標を取得したいのですが、どうしたらいいのでしょう。 winapi.lを使うのかなという気はするのですが。
>438 どうもありがとうございます。 見よう見まねで以下のようにやってみたのですが、xとyに同じ値しか返ってきて ないっぽいです。 (defun test () (interactive) (let (x y pt) (setq pt (winapi:make-POINT)) (c:define-dll-entry winapi:BOOL GetCaretPos ((winapi:POINT *)) "user32") (GetCaretPos pt) (setq x (winapi:POINT-x pt) y (winapi:POINT-y pt)) (msgbox "~D ~D" x y))) ヒントをいただけないでしょうか。
Caretって、文字打つときにチカチカしてるアイビームとかいうやつだよ。 マウスのがCursorね。
んで、GetCaretPosで取得できるのは、そのスレッドのものだよ。
なる。たぶん M-x してたのでミニバッファのカーソル座標を 常に取得してたということだなw
>>440 まぎらわしくてすみません。ほしいのはポイントの座標です。
>>442 そうみたいですね。
global-set-keyしてやってみたら違う値が返ってくるようになりました。
けど、xyzzy自体のウィンドウを動かしてもポイントの位置が同じだと
やっぱり同じ値が返ってきます。
GetCaretPosでは画面全体の中での位置を得ることはできないんですかね。
やりたいことはSPI on xyzzyのウィンドウをポイント位置に表示させること
なんですけど、他にいいやり方あるでしょうか。
>GetCaretPosでは画面全体の中での位置を得ることはできないんですかね。 座標にはクライアント(ローカル)とスクリーン(グローバル)の二種類あって、 APIは普通どっちかしか得られない。 だから、相互変換するAPIがある。 この件だと、ClientToScreen使えばいい。
つか、小出しに聞いてくるやつって何なの
>>443 なんで
>>438 のページみてGetCaretPosが出てくるの?
>;GetCursorPos マウスの位置をゲット
>;SetCursorPos マウスの位置をセット
>;ちなみにキャレット(Caret)と混乱しないように
って書いてあるのに。
で、GetCursorPosは画面の座標を返してくるから
>>444 にあるClientToScreenは使わなくていいから。
>>444 ありがとうございます。以下のようにしたらうまく出来ました。
(defun test ()
(interactive)
(let (x y pt)
(setq pt (winapi:make-POINT))
(c:define-dll-entry winapi:BOOL GetCaretPos ((winapi:POINT *)) "user32")
(c:define-dll-entry winapi:BOOL ClientToScreen (winapi:HWND (winapi:POINT *)) "user32")
(GetCaretPos pt)
(ClientToScreen (get-window-handle) pt)
(setq x (winapi:POINT-x pt)
y (winapi:POINT-y pt))
(msgbox "~D ~D" x y)))
2ch/search.lの187行目のあたり。 (when (string>= dat dat-limit) てのを、 (when (>= (parse-integer (pathname-name dat)) (parse-integer (pathname-name dat-limit))) に変えたら、board-new-show(スレ一覧でn)がいい感じに動くようになりました。 既出かもしれませんが一応。
xyzzyCEが欲しいなぁと思う今日この頃。
>>450 っいいだしっぺの法則
ただCEだとものによるのかもしれないけどKBが小さくてalt+xとか押しづらそうな気がするのだが・・・
>>450 他に良いエディタが無くて、やむを得ず Pocket WZ を7,000円以上も出して買ってしまったが、
あると嬉しいかも。
しかし、確か emacs は動くんじゃなかったかな。リナザウで動かすのに比べると grep などがいまいち
のようだが。
ちょっとしたことにしか使わないのでエディタはUKEditorで妥協してるがxyzzyCEがあれば使いたいかも。 そのままビルドしただけを持ってくと重たそうな予感がするので適当に軽量化しないときついかも。
2ch-mode 用に xyzzyCE が欲しいんだけども。
ついでだけど wine で xyzzy 動かしてる人いる?何度か試したけどダメ
過去スレで動かした人がいるよ
そか、サンクス。wine のバージョンによって大分違うんだろうな。再トライしてみるよ
俺もce版は欲しいな 現状だとまともに動くのがない・・・
>>456 動かしたことはあるが結局scim経由での日本語入力ができず実用に至らず。
動いた報告も確かそんな感じだったような
ldoc2 ですが、incf などのドキュメントに「incf (&ENVIRONMENT %ENV %REFERENCE &OPTIONAL (DELTA 1))」 とでてしまい、リファレンスを引いたときの「incf PLACE &optional (DELTA 1)」とは異なっています。 例えば、reference.xml からドキュメントを持ってきて表示するなどということはできませんでしょうか?
いまちょっと試してみたんですが、howm-calendar.l は面白そうですね。 今まで calmemo とメモを保存するディレクトリを同じにして併用していたんですが、これなら howm に一本化できるかも。 ちょっと気になったのは、ウィンドウ幅で折り返すになっているとカレンダーの表示がおかしくなってしまうので、これは 折り返し無しにした方がいいような気がします。 あとウィンドウは横分割と縦分割を選択できて、スクロールバーが表示されるといいなぁという気がします。
>>461 ldoc-func-get-args 書き換えればいい
reference.xml にある
incf PLACE &optional (DELTA 1)
ってのはソースにはないみたいだけど、 CLtL2 からもってきたんだろうか
>>461 どうも、こんばんは。
&environment が何者かはっきり分かっていませんが、
ldoc2 は実際の定義に、忠実に即しているので、これで
いいように思うんですが、どうでしょう。直すならば、
ドキュメントの方なきがします。
気になるのであれば
>>463 でいうように、ldoc-func-get-args
を適当に書き換えるか、define-modify-macro を下のコードのように再
定義して、incf, decf を定義しなおす、というのも1つの方法です。
ただ &environment は、正確に理解していないのでこれでいいのかは
判断できません。
あと引数をドキュメントからとってくるのは可能ですが、
現在の方法よりも、かなり遅くなると思うので難しいところです。
define-modify-macro を使っているのは ~/lisp 以下で incf, decf
だけだから、そこまでするのもなぁという気がします。
howm-calendar の方は、ぼちぼち直して生きたいと思います。
ご連絡ありがとうございました。
あと ldoc2 も、これとは関係なく近いうちに更新する予定です。
465 :
464 :2007/08/26(日) 21:26:34 ID:iP5cW3sU
(defmacro define-modify-macro (name lambda-list function &optional doc-string) (let ((update-form (do ((l lambda-list (cdr l)) (vars nil)) ((null l) ``(setf ,reference (,',function ,reference ,,@(nreverse vars)))) (cond ((eq (car l) '&optional)) ((eq (car l) '&rest) ;(return ``(setf ,reference (,',function ,reference ,,@nreverse ,(cadr l))))) (return ``(setf ,reference ,(list* (quote ,function) reference ,@(nreverse vars) ,(cadr l))))) ((symbolp (car l)) (push (car l) vars)) (t (push (caar l) vars) (if (caddar l) (push (caddar l) vars))))))) `(defmacro ,name ,(append '(reference) lambda-list '(&environment env)) ,@(if doc-string (list doc-string)) ,update-form)))
>>463-465 ありがとうございます。
PLACE というのはソースにないようなので、incf decf を再定義してみました(マクロはさっぱりわからず(^_^;)。
*post-command-hook* に reference.xml から持ってくる処理を入れるのは重そうなので良くないかもですね。
(defun incf-decf-rewrite ()
(let (incf-old decf-old)
(setf (symbol-function 'incf-old)
(symbol-function 'incf)
(symbol-function 'decf-old)
(symbol-function 'decf))
(defun incf (place &optional (delta 1))
(incf-old place delta))
(defun decf (place &optional (delta 1))
(decf-old place delta))))
(add-hook '*post-startup-hook* 'incf-decf-rewrite)
>howm-calendar の方は、ぼちぼち直して生きたいと思います。
予定は calmemo を起動して howm の書式でメモをとって両方で見られるようにしておりちょっと手間だったので、
期待してお待ちしています。
xyzzy + tterm.l + cygterm + zsh しています。 cygterm と zsh は標準の cygwin1.dll ではなくて、utf-8 対応版です。 この状態で zsh で cat "utf-8で記述された日本語テキスト.txt." して、 化けずに表示するにはどうしたらいいでしょうか。 入力のほうは tterm-input-encoding を *encoding-utf8n* すると いけてる気がしますが、tterm-output-encoding を同じにして、 xyzzy の tterm のバッファの encoding も utf8n にしても、 相変わらず化けます……。
469 :
466 :2007/08/27(月) 06:32:44 ID:+TJggrKg
>>468 なるほど、ありがとうございます。
しかし、まだまだ知らないことばかりだな...
470 :
467 :2007/08/28(火) 00:01:07 ID:CenGMbRt
>>467 tterm.l が utf-8 の表示に対応してなかったっぽいので、適当に改造して自己解決しました。
*window-flag-mode-line*ってバッファごとには設定できない?
>>471 set-local-window-flags
>>472 それで設定してみてるのだけど、
*window-flag-half-width-space* とかはバッファごとに設定可能。
なのに *window-flag-mode-line* はフレームごと切り替わっちゃう気がするんだ。
これでできない? (set-local-window-flags (selected-buffer) *window-flag-mode-line* nil)
>>473 つ WINDOW-OR-BUFFER
つ (selected-window)
>>474 ,475
サンクス。でも駄目なんだ。.xyzzy の中身を消してサラの状態で試して……と、
ここまで書いたところで気がついた。
C-x b でバッファを切り替えたら正しくバッファごとに設定した状態に切り替わるんだけど、
バッファバーでタブをクリックするとか、function の中で set-buffer するとかで切り替えると、
駄目なんだ。なんでたろう。
バッファじゃなくてウィンドウごとだからとか?
でも set-buffer のときは同じウィンドウでも変わってるか。 残念ながらよくわからない。
>>476 うーん、ESC ESC して (next-buffer) すると正しく切り替わるんだけど、
たとえば C-z に next-buffer を割り当てて C-z すると駄目っぽい。
ますます謎な感じに。
>>479 update-mode-line で、
howm-calendar.l ですが、*calendar-mode-post-hook* にするとカレンダーの画面を切り替えた時に予定などが 表示されなくなってしまうようです。 それと、例えば calendar-with-split を C-u 付きで起動するとキャッシュを更新する、カーソルキーで移動したときにも メモをポップアップするなどできたらいいなと思いました。 ついでに、メモのある日付で Enter するとその日付で検索するコードを書いてみました。 よろしければ使って下さい。 (defun howm-calendar-search () (interactive) (let (str date) (multiple-value-bind (p1 p2 tag) (find-text-attribute-point (point)) (and (consp tag) (eq (car tag) 'calendar) (setq str (cdr tag)) (stringp str) (string-match "\\[\\([0-9][0-9][0-9][0-9]\\-[0-1][0-9]\\-[0-3][0-9]\\)\\]" str) (setq date (match-string 1)) (elib::howm-search date t))))) (define-key *calendar-mode-map* #\RET 'howm-calendar-search)
それと、howm のメニューバッファは多分こんな感じ (elib::howm-menu-name (if elib::howm-menu-file elib::howm-menu-file elib::howm-menu-top)) で取得できると思います。
>>480 それでも駄目でした。
んで、なぜか、function の中で set-buffer したあと
toggle-fold-mark 2 回やるようにすると、mode-line の状態が正しく切り替わりました。
でも toggle-eof 2 回やっても駄目。もうお手上げ。
>>481-482 とりあえず要望は一応全て反映させたつもりです。
あと サンプルコードありがとうございました。
>>483 siteinit.l .xyzzy を消した状態でもそうなるんでしょうか?
そうでないなら、 next-buffer を再定義していないかとか、
二分探索で原因となるコードがどこかを、地道に調べるのが
解決は早いと思います。
>>483 function の中で set-buffer って具体的にどんな関数書いてるの。
>>484 対応ありがとうございます。
しかし、こちらの環境ではcalendar-next-scheduleでスタックオーバーフローになったり、外部シンボルは見つかりません
elisp-lib::howm-menuと出たり、変数が定義されていません*post-command-hook*と出たりしてうまく動かないようです。
それと、もう一つ要望として、メモがある日付が土日祝日である場合には、背景色のみを変更するなどして祝日などで
あることがわかるようにしていただけると嬉しいです。
>>486 autoload では、駄目なようです。
普通にロードして使ってください。
スタックオーバーフローはこちらので再現しないので、よく分かりません。
再現する手順とデータを、できれば2005年以前のスケジュールでください。
*post-command-hook* は、何ででるのか分かりません。とりあえず、
対処するコードを入れてみました。
> それと、もう一つ要望として、メモがある日付が土日祝日
> である場合には、背景色のみを変更するなどして祝日などで
> あることがわかるようにしていただけると嬉しいです。
しばらくは忙しいので、こちらについては今は対応できません。
もし自分でそのコードを書いてしまったら、参考にさせて下さい。
>>487 (require "howm-calendar")していたのですが、
外部シンボルは見つかりませんelisp-lib::howm-menuは先頭に
;;; -*- Mode: Lisp; Package: EDITOR -*-
と記述することで出なくなりました。
変数が定義されていません*post-command-hook*はldoc2をrequireすることで出なくなりました。
これらは素のxyzzyで試したのですが、この場合はスタックオーバーフローのエラーは出ないので
通常使っているxyzzyに入れている何かの拡張が影響しているのかもしれません。
自分では (defvar *mark-calendar-schedule-background* 14) (defvar *mark-calendar-deadline-background* 13) (defvar *mark-calendar-todo-or-normal-background* 11) (defvar *mark-calendar-done-background* 8) として、196-212行を (multiple-value-bind (begin end tag foreground) (find-text-attribute-point p) (set-text-attribute p (+ 2 p) (cond ((and (consp tag) (eq (car tag) 'calendar) (stringp (cdr tag))) (cons 'calendar (format nil "~A\n~A" (cdr tag) str))) (t (cons 'calendar str))) :foreground foreground :background (cond ((string-match "^\\[[0-9-]+\\]!" str) *mark-calendar-deadline-background*) ((string-match "^\\[[0-9-]+\\][-+~]" str) *mark-calendar-todo-or-normal-background*) ((string-match "^\\[[0-9-]+\\]@" str) *mark-calendar-schedule-background*) (t *mark-calendar-done-background*)) に変えたりしています。
site-lisp/elisp-lib.lというのはご自分で作られたファイルでしょうか? また、バイトコンパイルしないとエラーになるようです。
スタックオーバーフローについては (defun calendar-title-string (year month) (if (plusp year) (let ((jp (get-japanese-era (get-universal-time) year))) (format nil " ~D(~A~D)年~D月" year (second jp) (first jp) month)) (format nil " BC~D年~D月" (- 1 year) month))) としてカレンダーに年号を表示するようにしていたのが原因だったようです。(-_-;)
Winapi xyzzy 上でを使ってマウスクリックイベントを 発生させたいと考えています。 以下のコードを書いてみたのですが、まったくうまくいきません。 どなたか何かヒントをお持ちではないでしょうか。 (require "api") (defun mouse-click-event () (interactive) (let ((p (winapi::make-POINT))) (winapi::GetCursorPos p) (winapi::SendMessage (winapi::FindWindow (si::make-string-chunk "xyzzy") 0) winapi::WM_LBUTTONDOWN 0 (+ (* (winapi::POINT-y p) 65535) (winapi::POINT-x p))) (winapi::SendMessage (winapi::FindWindow (si::make-string-chunk "xyzzy") 0) winapi::WM_LBUTTONUP 0 (+ (* (winapi::POINT-y p) 65535) (winapi::POINT-x p))) ))
>>492 俺もあんま詳しくないけど、とりあえず spy++ を見ながら xyzzy のウィンドウタイトルを右クリックできるようにしてみた。
・SendMessage じゃ駄目だったんで Post〜で。
・xyzzy はクラス名がないので (winapi::FindWindow (si::make-string-chunk "xyzzy") は動いてないよ。
get-window-handle を使えばいい
・編集領域をクリックしたい場合は get-window-handle じゃなくて、編集領域のウィンドウハンドルを指定する必要がある
クラス名はないので EnumChildWindow で探せばいいのかな。
(require "api")
(defun mouse-click-event ()
(interactive)
(let* ((hwnd (get-window-handle))
(x 60)
(y -34)
(lparam (+ (* y 65536) x)))
(winapi::PostMessage hwnd winapi::WM_RBUTTONDOWN
0 lparam)
(winapi::PostMessage hwnd winapi::WM_RBUTTONUP
0 lparam)
))
クラス名はあるよ、解かりにくいだけで。 あと、フォーカスのある(キャレットが点滅してる)ウインドウの取得はGetFocusでいけるかと。
全角空白だったか>クラス名
いままで Pen4 マシンで使ってたんだけど、 PenDC E2180 で新しく組んでxyzzy起動したら まるでメモ帳の如くさっくり起動して感激
497 :
名無し~3.EXE :2007/09/09(日) 16:33:06 ID:sXh7F5wZ
*hogehoge*に("abc" "def" "ghi")というリストが代入されてる時、 (last '*hogehoge*)としても「ghi」を取り出すことができず、 (last '("abc" "def" "ghi"))とすると("ghi")までは返ってくるのですが、 カッコが付いています。 「ghi」の文字列だけ取り出したいんですが、 こういうときはどうすればいいのでしょうか。
(car (last
そういやカッコとるのにcarっていうの俺も最初気づかんかったな
500 :
名無し~3.EXE :2007/09/09(日) 17:14:22 ID:sXh7F5wZ
リストを分解すれば分りやすいかもね。 (1 2 3) → (1 . (2 . (3 . nil))) last で取得するのは、(3 . nil) xyzzyの表示上は (3) 3はコンスセルのcar部だからcarで3がとれるって感じかな。
ここで言うべきことは(last (list &optional (n 1)))かと。
せめて違いぐらい書けよ それだけで理解できる子なら質問なんてしない
>>502 lastは指定された個数の要素からなるリストを返す関数で、
その指定が無い場合は1を指定したことになる。
だから要素が1つのリストが返ってるんであって、
コンスセルがどうとか、そんな話じゃないでしょ。
>>503 質問者じゃなくて
>>501 へのレスだよ。
>>505 なるほどね。言いたいことはわかった。
> lastは指定された個数の要素からなるリストを返す関数
そういう見方はしたことがなかったな。
「後ろから n 番目のコンスセルを返す関数」と思ってた。
だから
>>501 みたいな説明が出てきても自然な流れに見えたんだ。
>>ID:c32IZ3Xq
>>497 、
>>499 で括弧を外すことを話してたんだから、コンスセルの話しは
でてきてもいいと思うけど?
別に
>>501 はlast関数について言及しているんじゃなくて、それで取得した
結果に何故carを使うかを簡略的に説明しただけじゃないか?
逆に、
>>505 は何の話だと考えているわけ?
509 :
507 :2007/09/10(月) 00:28:45 ID:avDHdXM/
>>508 自分の解釈だけど、
「長さ1のリストが返ってくるからその先頭の要素を car で取り出せばいい」
と理解すれば、リストが内部でどう実現されてるかまで踏み込む必要はないよね。
コンスセルの話じゃなくて、もう少し高級なリストの話だけで済む。
長さ1のリストって言うよりコンスセルって言う方が分かりやすい気がするけど。 それに話す必要がないとしても関係がないわけじゃないでしょ。
どっちが解り易いかはヒトによるかと。 俺はどっちでも良いと思うが コンスセルが理解出来てない初心者には 長さ1のリストって説明の方が解り易いかもな。 とはいえ最終的にはコンスセルも理解して欲しいところ。
究極的にはリスト=連結したコンスセルなわけだしね。
【IT/国際】Googe、xyzzyを154億円で買収
http://news21.2ch.net/test/read.cgi/news7/1189722312/ 米Google社は14日、日本のプログラマ亀井哲弥氏に対し154億円を支払い、
Google社に移籍しxyzzyの開発に専念してもらう事に「大筋で合意した」と発表した。
Google社が個人を買収するのは異例。亀井氏はテキストエディタ「xyzzy」の開発者であり、
Google社のスポークスマンは報道陣に対し「xyzzyをweb上に移植することで、
Emacs・viなどの伝統的なテキストエディタに対する強力なライバルにしたい。」とコメントした。
あり得なさすぎて釣れる奴おらんやろ。
少なくとも亀井発言はもすこし投げやりにしないと。
個人を買収って意味分からんし
>516 人身売買じゃね?
ちんちんバイバイ
あとは「14日(米国時間)」とか「14日(日本時間15日)」にした方がよかったね。
かめいは会社つくってなかったっけ?
おまいらネタをネタと(以下略 にしても、513はレベルが低い。もうちっとは精進せい。
save-place と multi-mode を入れていて、 バッファの先頭のパラメータで Package: hoge と指定して、 multi-mode によって、 本来バッファに関連付けられていないモードの状態で バッファを kill し、もう一度 バッファを開きなおすと *buffer-package* の値が nil になります。 どうしたらいいでしょうか?
>>524 multi-mode は使っていないのでよくわかりませんが、save-place を外した状態だと
その現象は起こらないのでしょうか?
526 :
524 :2007/09/18(火) 02:04:17 ID:AHDzozjH
527 :
524 :2007/09/18(火) 02:24:00 ID:AHDzozjH
>>525 起こりません。逆もまた然り。
save-place は、ローカル変数を一旦 kill してから
もう一度適用するようなことしてますが、そのあたりが
気になっています。どうなんだろう。
>>527 試していませんが、save-place.l で kill-all-local-variables しているのは *save-place-list*、*save-place-view*
バッファだけだと思うのですが。
これらのバッファ以外でも *buffer-package* の値が nil になるということでしょうか?
もしそうなら、再現する手順を具体的に示して下さい。
>>527 ちょっと試してみましたが、save-place.l は *find-file-hooks* に引っかけて
保存してあるポイント位置に移動する処理をしているだけなので、この件とは
無関係な気がします。
save-place.l をインストールしなくても multi-mode.l によって、本来バッファに
関連付けられていないモードにした時点で *buffer-package* の値が nil になる
ようです。
バッファを閉じたときのポイント位置が、バッファに関連付けられていないモード
となる位置にあって、そのバッファを開き直したときに save-place.l によって、
そのポイント位置に移動することにより、*buffer-package* の値が nil になる
ということではないでしょうか?
これは multi-mode.l の問題と思われるので作者の方に直してもらうのが良いと
思いますね。
>>527 試していないけど↓これでいけるかと。
(push '*buffer-package* *protected-local-variables*)
多分multi-modeが起動するmajor-modeがkill-all-local-variablesしているのが
原因だと思う。
533 :
524 :2007/09/19(水) 21:41:24 ID:HpRr58ws
>>530-531 仰るとおりでした。
> (push '*buffer-package* *protected-local-variables*)
これでうまくいきました。ありがとうございました。
>>529 書き直したというのがdecode-mime-fieldであれば、この関数はデコードするだ
けなので送信には全く関係ないと思うのですが。
# なのに解決したというのはどういうことなのか不思議・・・
デコードだけであれば自分が見れなくなるかもというだけなのでたいした影響は
無いかと思います。元のデータはいじらなかった気がしますし。
でも確かにdecode-mime-fieldはなんか変な動作をしているっぽいですね。
ちゃんと調べた方が良いかも。
どこかに適当なMIMEデコードのライブラリがあればそのテストとかが使えるのになぁ。
reftexの最新版をインストールしたんですけれど、オートロードに失敗してしまいます。 誰か解決策お願いします
おーとろーどしない
>>535 あれ、直したと思ってたんですが。バージョン 20070303 ですよね?
どういう風に設定しているか教えてもらえますか?
1. .xyzzy および siteinit.l での RefTeX 関連の設定
2. ni-autoload を使っているかどうか
3. 具体的にどのような操作をするとエラーが発生するのか
538 :
535 :2007/09/22(土) 12:57:06 ID:AJJkkx7m
>>537 サイトに書いてあるようにやりました。バージョンは20070303です
netinstallerからのインストールで
1.
;;; RefTeX for xyzzy
(add-hook 'elisp::katex-mode-hook 'turn-on-reftex) ; with KaTeX mode
(autoload 'turn-on-reftex "reftex/reftex")
2.がよく分かりません。ni-autoloadに関して何か設定がいるのですか?
3.はtexファイルを読み込む際にエラーが起こります。
よろしくお願いします。
539 :
535 :2007/09/22(土) 13:01:08 ID:AJJkkx7m
538の補足です 1.は.xyzzyに書きました 2.はnetinstallerの ;;ネットインストーラーの自動設定を利用する (ni-autoload) を.xyzzyに書くという操作ならば、行っております
うーん、おかしいな。それだったら普通に動くと思うんですが。 一応確認させてください。 1. 出るエラーは「オートロードが失敗しました」ですよね? 2. .xyzzy 中でこれらの行は user パッケージ中で評価されてますか? つまり、これより前の行に (in-pacakge "editor") みたいな行はあったりしますか? 3. autoload を (require "reftex/reftex") に変えたら動きますか? 4 .その後で *scratch* バッファなどで (turn-on-reftex) を評価したらどうなります?
541 :
535 :2007/09/22(土) 18:45:26 ID:2B8nm4ip
>>540 ありがとうございました。無事解決しました。
原因としては540の2.だったようで
.xyzzyに(in-package "outline-tree2")という行があり、それを消したら実行できるようになりました。
お手数をお掛けしました
そこは、outline-tree2の設定の最後あたりに (in-package "user") を追記するか、 reftexの設定をもっと上に書くとかした方がよさげかも。
543 :
540 :2007/09/22(土) 19:40:16 ID:kYhhegaa
>>541 いえいえ。解決したようで何よりです。
個人的には
>>542 氏と同じで、.xyzzy での設定で in-package を使うときは
最後に (in-package "user") でもとに戻すと、
ほかの設定とバッティングする可能性が低くなっていいと思ってます。
olt2用の設定は~/.outline-tree/config.lに書きなよ。
自作のモードで c-newline-and-indent や他の似たようなのを流用したくて、 モードの初期化関数の中で、 (make-local-variable 'c-indent-line) (setq c-indent-line #'my-indent-line) ってやってみたんですけど、上手くいきませんでした。 コピペで一つ一つ作るしかないんでしょうか?
>>545 cc-mode.l とか見れば分かるけど、そんなことはしてません。
(make-local-variable 'mode-specific-indent-command)
(setq mode-specific-indent-command 'c-indent-line)
あとこれは、意味不明。
> コピペで一つ一つ作るしかないんでしょうか?
>>534 レス有難うございます。
ぶっちゃけ挙動が良くわからないまま直してしまったという感じがあるんですけれども、
この関数はデコードするだけで、送信したメールは(即ち、先方に届いたメールは)なんの
問題もないということのようですね。関数名decode付いてるし。
(kamailのsentフォルダに入ったメールを閲覧するとき、添付ファイルに半角スペースが
入っているか否かで判断していて、先方に届いたメールも半角スペースが入っていた
と思っていたのです)。
# lispも良く勉強しないまま、適当に使って6年以上経過したがやっぱり勉強せんと
# あかんなとおもう。
start-timer って中の関数でエラー起きてもエラー吐き出さないんだな。 自分で handler-case で捕まえなきゃいけないんだな
>>548 それは自分に言ってるのか?
それとも拡張lispを公開している誰かに言ってるの?
同じところで躓いてる人のための情報の共有と 情報が正しいかどうかの確認を掛けての書き込みではないでしょうか
hoshu
とうとうこのスレも保守されるようになったか。
xyzzyは俺の嫁
印刷するとき ^L (0xc form feed)で改ページして欲しくないんだけど そんなふうに思っているのは俺だけだろうな。
普通そんなの入んないしね
RFCとかGNU系のソースとか読まへん?
読むけど、いちいちxyzzy経由で印刷なんてしない
shell-modeでmanを読むための設定がよくわからん。制御文字をさっくり削除して読みたいんだが。
>557 印刷しないで読むの? 俺はわりと長いもん読むときはいちいち紙に出さないと 目が痛くなってしょうがない。
xyzzy 版 woman ってないの?
>>561 init.cc の init_load_path() かな
WinMain -> init_app -> init_lisp_objects -> init_env_symbols -> init_load_path
と呼び出してる。
563 :
名無し~3.EXE :2007/10/07(日) 10:47:31 ID:oYv8qPWD
>>562 ありがとうございます。
素のxyzzyだとC:/Documents and Settings/user/lispは追加されないのですが、普段使っているxyzzyだと
追加されています。(OSはWinXP Homeです)
何かの拡張が影響しているのかと思いgrepをかけてみても(pushnew (merge-pathnames ... *load-path* :test #'string-equal)
のようにしているのはhowmの設定だけのようです。
init.ccにinit_load_pathがありますがC++はさっぱり分からず。
特に問題が出ているわけではないので気にする必要は無いのかもしれませんが。
>>560 womanを使っていないので、はずしてるかも知れんけど、
xyzzy lisp のリファレンスなら、netinstaller で
関数リファレンスと info-modoki-mode を入れれば見られるよ。
(defun test (file) (interactive "Ffile: " :title0 "a" :default0 "C:/hoge") file) の時、:title0は効いてるんですけど:default0は効かないもんですか? リファレンスを見る限りデフォルト値も使えるっぽいけど…
>>567 別のところでtypoしてた。すまん。ありがとう。 orz
>>561 (let ((it (find "C:/Documents and Settings/user/lisp" *load-path* :test 'equalp)))
(if it
(msgbox "test1: found ~A" it)))
こんなのをいろんなところに挿入して、問題を切り分ければいいんじゃない?
xyzzy.exe の場所か環境変数の違いから来てるような気がする それか xyzzy.ini の内容
>>569 ,570
どうもです。
ちょっと試してみて、xyzzyのショートカットに作業フォルダが登録されていないと、そのショートカットから
起動したときに...user/lispが*load-path*に含まれるようです。
例えば、作業フォルダにC:\tmp\などと登録するとC:/tmp/lispが*load-path*に含まれるようですね。
知らなかった..
補足すると素のxyzzyは直接exeファイルから起動していたので...user/lispが*load-path*に含まれなかったようです。
関係ないですが何となくすっきりしたのでTipsとして grepd.l中の関数scan-files-1の(message "scanning (~A)" file)の部分をコメントにすると、 うちのヘボ環境(cel2.8G,Mem768M)では、検索時間が2分の1程度に短縮されますね。 それと、diff-detail.lなどのexecute-shell-commandをcall-processで書き換えて:show :hide にすると結果が出るまでの時間がかなり短縮されます。 call-procesは:show :hideにした方が速いようです。
ども。
>>573 > それと、diff-detail.lなどのexecute-shell-commandをcall-processで書き換えて:show :hide
> にすると結果が出るまでの時間がかなり短縮されます。
> call-procesは:show :hideにした方が速いようです。
適当な diff-detail をかけられるテキストが手元になかったので、
ほんの少ししか試せていませんが、微妙にウィンドウが出ることもなく
すっきりしますね。
diff-detail.l の execute-shell-command を書き換えるのは簡単で
よいのですが、そもそも、execute-shell-command の定義にて call-process が
:show :hide でなく、:show :minimize で用いられているのは何故なのかな、と。
:hide より :minimize が良い点ってのはどこらへんなのでしょうね?
>>574 >:hide より :minimize が良い点ってのはどこらへんなのでしょうね?
プロセスの実行を確認出来る点じゃないでしょうか?
アプリケーションを起動したときに、起動しているかどうかをタスクマネージャで確認しなければわからないというのも
問題な気もします。
&keyでパラメータを指定できるようになっているといいんですけどね。
ども。
>>575 > &keyでパラメータを指定できるようになっているといいんですけどね。
やはりこれがいいですよね。
diff-detail での、トークン単位の超微小 diff を繰り返す処理には :hide が
あってるような気がしますが、そこそこ大きいファイル間の通常の diff では
プロセスが視認できた方がいいですね。
:hide 156
TABキーを押してもインデントされないのですが・・・ インデントされるように出来るのでしょうか?
>>578 モードによる。普通、TABは自動インデント。
インデントじゃなくて素のタブを入力したいならC-q TAB
>>579 ありがとうございます。
ちょっとタブと字下げとインデントあたりがごっちゃになってました。
notepadとかと随分違うので慣れるまで大変ですね・・・
ちょっとお尋ねします。 2ch-modeの自動あぼーんなんですが、(多分)IDに+が使われるとうまく機能しません。 なにか上手い手はないでしょうか
582 :
581 :2007/10/16(火) 16:58:31 ID:pToL2aIH
自己解決しました。ルールファイルを直接いじって、\\+とエスケープさせるだけでした
583 :
名無し~3.EXE :2007/10/17(水) 13:37:07 ID:brvxBnSd
GmailがIMAPに対応した流れでKamailV3もIMAPに対応しないかなー。 俺のアカウントはまだ対応してないけど…。
Gmailの言語設定を英語にしてみれ
質問す。 delete-file-in-archive でディレクトリの削除は できないんでしょうか? 例えば、list-archive すると (("aaa/" "---W-" 0 (2007 10 29 22 19 20)) ("aaa/bbb/" "---W-" 0 (2007 10 29 22 19 20))) こんな感じで、(delete-file-in-archive "c:/aaa.zip" "aaa/bbb/")と しても bbb ディレクトリが削除されません。
>>586 7-zip形式はできるみたい。
lzhやzipはできないっぽいね。
xyzzyが対応しなかったのかもしれないし、DLLに機能自体がないのかもしれない。
589 :
586 :2007/10/30(火) 22:03:21 ID:SbWk1da0
>>587 dです。
cab32 や tar32.dll はサポートしてません みたいな
メッセージが出たくらいなので、dll 側っぽいですね。
最近、他のアプリケーション使ってる時に 上書き保存の前によく切り取りをしてしまう…。
検索のたびに上書き保存したりするなw
俺はカーソルを右に移動しようとして検索ダイアログを出してしまう
でも窓使いの憂鬱を使うのは面倒なんだよな。
行頭に移動しようとしてすべて選択してしまったこともあるな…w
>>594 それやりまくり…
カーソルがファイルの先頭に移動してしまってうざいことこのうえなし(⊃д`)
そんなおまえらに MetaX 。 キーボードユーティリティなのにシステムを汚さないスグレモノ。 xyzzy の 2 ストローク時に IME オフ相当の機能もある。
おれはxkeymacs
俺もxkeymacs
アレの C-l ってどうやって実装してるんだろう 単機能ツールとして欲しい
俺はAutoHotKey で、全然関係ないけど、outline-tree2を食わず嫌いしてて、 そろそろ使ってみるかと頑張ってたら、なんという便利さ。 作者さんありがとー gmailでやってるGTDの管理をxyzzyに移行してみるぜ! と、チラ裏
俺もxkeymacs使ってるけど、たまに普通のキーバインドが反応して困る 元のキーバインド消せるなら消したいな。 特に、ブラウザのテキストエリアでCtrl-N使って移動しててたら新しいウィンドウ開きまくるとか泣きそうになる
602 :
名無し~3.EXE :2007/11/12(月) 16:03:08 ID:XlE6W999
xyzzy で python のコードを編集しているんだけど、キーワードの色づけというか シンタックスハイライティングというか、そういうのをやめるにはどうしたらいいんだろう? Emacs でいうところの、 font-lock-mode みたいな、色付けを切り替える関数はあるんでしょうか? py-shell モードで、例外キーワードの色が激しい黄色になってしまって見にくくてしょうがない
603 :
名無し~3.EXE :2007/11/12(月) 16:04:38 ID:XlE6W999
あ、 xyzzy のバージョンは、 0.2.2.235 py-mode のバージョンは 0.97 です。
ごめんなさい、自己解決しました。 py-mode.l のなかで、 (:color 3) となってるところを、 (:color 2) にしました。 激しい黄色で見にくかったのが、激しい緑になって若干見やすくなりました。
単にメニューのローカル設定で色変更すればいいんじゃないの?
> 激しい黄色で見にくかったのが、激しい緑になって若干見やすくなりました。 なんか笑ったw
>激しい緑 詩人やね
>>605 そうすると他の○○-modeのとき困ったことになる可能性があるだろ。
一番困るのが拡張lispの作者が配色の設定を変えてて、
自分の環境で一番きれいに見える色設定をデフォルトにしてリリースすること。
素のxyzzyでも使いやすいか・見やすいかをテストしてからリリースしろよな。
あるあるあるあるw インデント規則とかキーバインディングとか、 極力xyzzy標準のものにあわせておいて独自の機能はオプションにしろと…
結局自分で設定するんだったら別にいいんじゃないの ?
気に食わないなら自分で修正すればいいじゃない。 なんで作ってもらってるくせに偉そうなの?
>>608 ここは何番の色を使う、みたいな設定方法がだいたい用意されてるはずだが。
なんでxyzzy自体の設定を変えようとするんだ。理解できん。
あと、白背景にしてるなら黄色とか絶対使わんだろ。そこはxyzzy自体の設定を変えとけよ。
どの番号が何色でどこに使われる(使われている)のか、いまいち把握しにくいというのはあるかも…。 使われ方もmode作者によってまちまちだったりするし…。
だからってポリシーでがんじがらめにすると どっかのUNIX互換OSみたいな気軽に入れない世界になる。 ほどほどに大人な空気だとありがたいなー
色の使いかたにどんなポリシー作れるかね。 デフォルトを使ってると文字色3,6,7は見えないので回避している… html+-modeとxml-modeの3が見えない… ただキーバインドは自由にやられると困るなぁとは思う。
自分のxyzzyの方で色も変えてるし、モードも自分の色に一番見やすく作るが 標準から外れてる状態でも、色分けで困ったことはないな。 場合によっては1行くらい色変える設定を書くことになるけど。 自分で作るのに比べたら、何もしないも同然だし気にもしたことがないな。 むしろ他の人も好き放題に変えてくれていいよ。 便利なのを作ってくれるなら白い猫でも黒い猫でも。
色を直接指定できるようになってたら良いのにな。 そんなに動作が重たくなるんだろうか?
たしかに、色設定がパレット方式で、 しかもパレット設定が全モード共通(固定)なのが融通の利きにくいところかも…。 もちろんこの方式のメリットもあると思いますが。 今のところ見えにくい状況にぶつかる度に設定を適当に変えてなんとかなってるけど。
>>617 が書いてるのはlispでの色指定が番号じゃなくて
色で指定できたらいいという意味なんじゃないのか?
各Lispで直接色指定されてたらユーザーが配色変えるのがとても面倒になる。
やるならEmacsの色(というかフォント)指定みたいな感じかな? たしかに自由度は高いけど面倒かもね。
>>620 それは一理あるけど
HTMLとかだと沢山の色を使って表示したい場合もあるだろうし
カラッピッカーみたいなのとか最速インターフェース研究会の中の人があ
Alphaでやっていたようなのとか、色々xyzzyでもネタパクッテできるようになるかと思われ。
php-mode を使ってたんですが、何故かキーワードに色が付かなくなってしまいました…。 今まで普通に付いてたので何かオプションを弄ってしまったと思うんですが、皆目見当が…。 何か原因をご存知の方おりましたらご教示ください><。 ってここに書き込む前に xyzzy.wxp を削除して起動したら直りました。 ありがとうございました。
どういたしまして
wiki死んでない?
s53.xrea.com 自体が落ちてるね
wiki復活。
>>628 単に「*scratch*」を「*untitled*」に置き換えるだけでもいける気がするけど
untitledが複数のときはこれだとだめだよなぁ
起動直後は*scratch*はあるけど*untitled*は無いから、作ってあげる必要があると思う。
631 :
623 :2007/11/22(木) 20:04:29 ID:+ySmwBC3
他のモードでも同じ症状になったので色々弄ってみた結果 共通設定の改行を UNIX 風にしてると再現するようなのでおまかせにしたことを一応報告します。 ただその理由が全くわかりません。
WinApi 使って、ウィンドウハンドルから実行ファイル名を取得するのは どうやったら出来るでしょうか? アフォなのでコードをプリーズです。 自分で過去ログとかみて、 (require "foreign") (c:define-dll-entry :int32 CloseHandle (:int32) "kernel32.dll") (c:define-dll-entry :int32 GetWindowThreadProcessId (:int32 :int32) "user32") (c:define-dll-entry :int32 OpenProcess (:int32 :int32 :int32) "kernel32") (c:define-dll-entry :int32 EnumProcessModules (:int32 :int32 :int32 :int32) "psapi") (c:define-dll-entry :int32 GetModuleBaseName (:int32 :int32 :int32 :int32) "psapi" "GetModuleBaseNameA") (defun GetBaseNameFromHwnd (hwnd) (let ((procid (GetWindowThreadProcessId hwnd (si:make-chunk nil 4096))) (hmod (si:make-chunk nil 4)) (needed (si:make-chunk nil 4)) (name (si:make-chunk nil 256)) (result nil)) (let ((hproc (OpenProcess #x0410 0 procid))) (EnumProcessModules hproc hmod 4 needed) (unless (zerop (GetModuleBaseName hproc (si:unpack-int32 hmod 0) name 256)) (push (si:unpack-string name 0 256 t) result)) (CloseHandle hproc)) result)) とかしてみたのですが、全然駄目でした。
ウィンドウハンドルからGetWindowLongでインスタンスを取得して GetModuleFileNameを呼べば良いんじゃない?
>>633 情報ありがとうございます。以下でいけました。
(require "foreign")
(c:define-dll-entry :int32 OpenProcess (:int32 :int32 :int32) "kernel32")
(c:define-dll-entry :int32 CloseHandle (:int32) "kernel32")
(c:define-dll-entry :int32 GetWindowThreadProcessId (:int32 :int32)
"user32" "GetWindowThreadProcessId")
(c:define-dll-entry :int32 GetWindowLong (:int32 :int32)
"user32" "GetWindowLongA")
(c:define-dll-entry :int32 GetModuleBaseName (:int32 :int32 :int32 :int32) "psapi" "GetModuleBaseNameA")
(defun GetBaseNameFromHwnd (hwnd)
(let ((procid (si:make-chunk nil 4096))
(name (si:make-chunk nil 256))
result)
(GetWindowThreadProcessId hwnd procid)
(let ((hproc (OpenProcess #x0410 0 (si:unpack-int32 procid 0)))
(hmod (GetWindowLong hwnd -6)))
(unless (zerop hproc)
(unless (zerop (GetModuleBaseName hproc hmod name 256))
(setq result (si:unpack-string name 0 256 t)))
(CloseHandle hproc)))
result))
635 :
名無し~3.EXE :2007/11/29(木) 11:43:17 ID:vP0+TkaW
どなたか、ctags.lを改良して下さる方はいませんか? 現状困っている事は下記の@〜Cです。 @変数(or 関数)にジャンプしてくれない(unknown identifier m_bHoge等が出る) A変数(or 関数)ジャンプでファイルの先頭に飛んでしまうことがある Bバックタグジャンプが効かない? C大きいサイズのtagsファイルを初回にロード(マップ)する時間がかかり過ぎる。 gtags.lは上記@、Aに加えて、 関数であれば、関数用、変数であれば変数用にキーを押下しないといけないので これも実用には到っておりません。 秀丸のCTagsTagJump.macの様に、普通に関数、グローバル変数、構造体及びそのメンバ、 defineやリソースID等へダイレクトタグジャンプ/バックタグジャンプ出来るだけで良いのですが、 難しいでしょうか? 実用的なタグジャンプメソッドさえ確立出来れば、xyzzyに乗り換えようと思うのですが、 このエディタを使ってC/C++のプログラミングをされている皆さんは どういう代替手段を取っているのでしょうか?
試した事ないが、gtagsもctagasは変数にジャンプするとか書いてあるけど しないのか?少し見た感じだと変数もジャンプしそうだし ctags-back-tag-jumpなんて関数作っておいて戻れないとも考え難いような。 もう一度良く見てみては?っていうか何でジャンプできないとか どういうときにJumpできないとか書いた方が良いじゃね? >関数であれば、関数用、変数であれば変数用にキーを押下しないといけないので >これも実用には到っておりません。 この位なら自分で出来るだろ好きに変えたが良いよ。 実用に到ってないのは設定の問題だと思われ。
637です。DEPからxyzzy.exe等を除外したら解決しました。
x64なんて自前でビルドしないと駄目なんじゃないの? 誰かメンテしてんのか?w
x64だから32ビットのまま動かしているんでない?
俺は普通にgtagsを使ってるけど、快適ですよ。 変数と関数でキーが違うけど、慣れれば困らないしね。 gtagsはネットインストーラで導入できますよ。
>>635 ctags.lをちょっと試してみたけど、変数にもジャンプするし、バックタグジャンプもする。
ちょっとしか試していないからAはよく分からないけど。
> C大きいサイズのtagsファイルを初回にロード(マップ)する時間がかかり過ぎる。
具体的にどのくらいのサイズでどのくらいの時間がかかっているの?
あと、もしctags.lをバイトコンパイルしていなかったら、バイトコンパイルして試してみて。
> このエディタを使ってC/C++のプログラミングをされている皆さんは
> どういう代替手段を取っているのでしょうか?
xyzzy標準のを使ってる。
変数に飛べなくても気にならない。
(defun exchange-current-line-for-previous-line () (interactive) "この関数を使ってカーソル行を上に移動したいと私には思われたのでした。" (unless (= (current-line-number) 1) (let (col) (setq col (current-column)) ;現在桁を覚える (goto-bol) (kill-line 1) ;行頭へ移動して*kill-ring*へ1行ぶち込む (previous-line) (yank-and-pop) ;上へ移動して*kill-ring*から1行貼り付け (previous-line) (goto-column col)))) ;貼り付けた行へ移動して作業前の桁に戻る (global-set-key #\C-Up 'exchange-current-line-for-previous-line) 1|A 2|B 3|C 4|D[EOF] 上記のような4行があるとき、3→2、2→1の移動は出来ますが、4から3への場合は 期待した通りに動作しません。どう改善したら良いのでしょう?
>>643 [EOF]の行は (kill-line 1) じゃなくて (kill-line) でないと kill できない。
が、
1|A
2|B
4|D[EOF]
3|C
とは出来ない([EOF]より後ろに行があるわけない)ので、
修正はどうなるべきかによる。
645 :
名無し~3.EXE :2007/12/04(火) 20:28:12 ID:710caZz4
xyzzyのlispって、組み込み関数が要求する引数を調べるにはどうしたら良いですか? xyzzyのソースを見るしかないんでしょうか。
lisp/builtin.lとかリファレンスとか
>>643 >>643 kill-line の定義見ればわかるが (kill-line 1) で現在位置と、forward-line した間を
kill-ring に入れる。ただ、バッファ最終行では forward-line は動かないから、問題が出る。
今確かめたら、 transpose-lines も同じような問題を持っているわ。
(defun exchange-current-line-for-previous-line (&optional (arg 1))
(interactive "*")
(if (< 0 arg (current-line-number))
(let* ((col (current-column))
(from (progn (goto-bol) (point)))
(to (progn (goto-eol) (point)))
(str (buffer-substring from to)))
(delete-region from (1+ to)) ;; 改行あれば、改行まで削除
(previous-line)
(insert str "\n")
(previous-line)
(goto-column col))
(error "Cannot exchange lines!")))
649 :
648 :2007/12/04(火) 22:07:14 ID:ZXes1of4
>>647 あったのか。orz
だいたい似たような方法で、
逆向きにも対応してるなぁ。
>>642 俺もデフォルトのTAGから色々試してみたけど、
ctagsはめちゃくちゃ重くなるんであきらめた
(ソースのサイズに依存してる?)
ネットで検索しても、同じような事書いてる人いるっぽい
gtagsがいまいち思い通りに動かせなくて、結局デフォルトに戻った
651 :
名無し~3.EXE :2007/12/04(火) 23:35:32 ID:h+aMe4bp
2ch-modeで今日移転した板が開けなくなってしまったけど自分だけ?
>>642 下のを、ctags ロードした後に評価したら改善するかも。
試してないのでワカンネ。
(in-package "editor")
(defun ctags-make-tags-map (dir)
(interactive "DTagsRoot: "
:default01 (if (get-buffer-file-name)
(pathname-directory (get-buffer-file-name))
""))
(let ((buffer (create-new-buffer " *ctags temp*"))
lines is)
(insert-file-contents (merge-pathnames (or *ctags-filename* "TAGS") dir))
(goto-eol)
(setq lines (current-line-number))
(setq is (make-buffer-stream buffer (point-min)))
(setq *ctags-tags-map* (make-hash-table :test 'equal :size (round (* 1.6 lines))))
(setf *ctags-tags-stack* nil)
(do ((line (read-line is nil) (read-line is nil)))
((null line) t)
(cond
((string-match "^!_" line) t)
((string-match "^\\([^\t]+\\)\t\\([^\t]+\\)\t\\(.+\\);\"" line)
(push (cons (merge-pathnames (match-string 2) dir) (match-string 3))
(gethash (match-string 1) *ctags-tags-map*)))))
(delete-buffer buffer)))
(in-package "user")
656 :
652 :2007/12/05(水) 23:07:09 ID:wZTDPiKH
レスないなぁと思ったら、色々おかしかったので直してみた。 (in-package "editor") (defun ctags-make-tags-map (dir) (interactive "DTagsRoot: " :default01 (if (get-buffer-file-name) (pathname-directory (get-buffer-file-name)) "")) (let ((buffer (create-new-buffer " *ctags temp*")) (regexp (compile-regexp "^\\([^\t]+\\)\t\\([^\t]+\\)\t\\(.+\\);\""))) (save-excursion (set-buffer buffer) (insert-file-contents (merge-pathnames (or *ctags-filename* "TAGS") dir)) (goto-char (point-max)) (let* ((lines (current-line-number)) (hash (make-hash-table :test 'equal :size (round (* 1.6 lines))))) (goto-char (point-min)) (setq *ctags-tags-stack* nil) (setq *ctags-tags-map* hash) (loop (if (looking-at regexp) (push (cons (merge-pathnames (match-string 2) dir) (match-string 3)) (gethash (match-string 1) hash))) (if (forward-line) nil (return))))) (delete-buffer buffer))) (in-package "user")
blog-mode.lからFreeStyleWikiを使うにはどうしたらいい?
ココログを使う分には問題なく使えてるんだが、fswikiを使おうとすると上手くいかな
いんだ。
fswikiのURLは仮に「
http://localhost/wiki/ 」とする。
Blog TypeはFreeStyleWikiを選んだ。
次に聞かれるEndpoint URLがちょっとわからないんで
「
http://localhost/wiki/?action=RSS 」と適当に入れておいた。
Site Nameは適当に決め、Site URLには「
http://localhost/wiki/ 」と入れた。
一応、これでメニューへの追加が完了したので、SPC押してタイトル一覧に進もうとすると
「not methodResponse: "html"」ってダイアログが表示され、失敗する。
この時に、*XMLRPCM TEMP*ってバッファが残ってるから、中を見てみたら
「
http://localhost/wiki/ 」にアクセスしたときに得られる内容が詰まってた。
FreeStyleWikiに特殊な設定をしてやらないと動かないのか、それともblog-mode.lに設定
したやった項目が間違ってるのかわからない。fswiki.lを覗いてみたら、tmpl/fswiki.html
が必要っぽいんだが、どうやら付属してないらしい。もしかして、このファイルを自分で
書かないといけないんだろうか。
あ、blog-mode.lなんて無いや。blog-modeに読み替えて欲しい。
>>657 多分FreeStyleWiki側にXML-RPCのプラグインを入れて、それをEndPointに指定するんだと思う。
よくわからんけど、標準状態のFreeStyleWikiには対応してないって事か。
各拡張に対して、こうなってくれたらいいなぁ、といった、 ちょっとした操作感をあげつらねたまえよ。
複数起動したxyzzyのwindowを別のxyzzyのwindowに放り込んだり 1つのバッファだけ別windowに分けたりできないかと思うことがよくある。 別のモニタに移したりしとかしたくて。 そういうことやってると気づくと同じファイルを複数のxyzzyで同時に編集してるなんてことを時々やってるので 同じxyzzyのプロセスで複数のwindowを表示できないだろうかと思ったり。
そういえば、Vistaでxyzzyを使うとどうなるの? Win2k→xyzzy.w2k Vista→xyzzy.vst?
>664 手元の Windows Vista Home Basic では xyzzy.wxp だった。
>>662 xyzzycli.exeを上手く使えば殆どxyzzyを複数起動しなくても良いように思う
ac-mode-complete-or-indent で、補完はカーソルが単語の上 or 末尾にあるとき だけにしてほしい。バッファ内の単語を順に表示していくのはいらない。 って、設定しだいでできるのかな。 ファイル名を補完するときに complete+ は非常に便利なんで、そっちは気に入っている。
そういう書き込みが大事なわけだよ。気持ちよくしていくためには!
書き込むだけでは気持ちよくならないけどね。 自力更生できる部分をなるたけ増やしていきたいけどあまり頭がよくないので大変です。Lispむずい。
>>669 668の意図はスレがあんまり盛り上らないのは
lispは一通りかけるようになったけどネタがない人と
lispは勉強中(ネタの有無は不明)な人しか発言してないから
というかんじなのではないかと。
>>662 > 同じxyzzyのプロセスで複数のwindowを表示できないだろうかと思ったり。
それは emacs でいうところの frame という機能で何度か要望に挙がったけれど、
亀井さんに却下されている機能。
その代わり pseudo-frame が追加されることになったんだけど。
xyzzy のプロセスが2つだけなら xyzzycli.exe を介して、
ある程度一方から他方を操作できるはずだから、
今のところはその辺で何とかがんばるしかないんじゃない。
xyzzyでCOMポートを開いて、ハイパーターミナルの代わりにすることってできるんでしょうか?
難しいことをお聞きになる。
なかったら作るかなと思ったんだけどもね
675 :
名無し~3.EXE :2007/12/23(日) 17:02:56 ID:X6LV+DGC
KaMailGキタ━━━━━━m9( ゚∀゚)━━━━━━!! KaMailGキタ━━━━━━m9( ゚∀゚)━━━━━━!!
なんぞそれ
677 :
667 :2007/12/23(日) 23:51:20 ID:b6+Horkx
作者さん、修正ありがとう!
678 :
名無し~3.EXE :2007/12/26(水) 06:27:29 ID:MAP8g2S4
KaMailV3のバグは、直らないんですかね…
>>678 自分で直して報告すれば良いんじゃない
せめてバグが書かれた場所へのリンクぐらい張れっつーの
680 :
名無し~3.EXE :2007/12/26(水) 23:00:17 ID:AWSqnavl
>>679 メールのsubjectを検索したときにヒットしない物があるのって
既知の問題ですかね。
Hyperestraier側が原因らしいことまで分かっているんですが、
実際にバグと言い切っていいのか、分からないし、
KaMailV3側でH.Eに登録する時にsubjectを前処理すれば
解決できるような気がしたので。
…いずれにしろ、subject:検索は使わない(というか、かなりのメールが
検索結果から漏れることがあるので使えない)ことで、
しばらくは、H.E、KaMailV3のソースを眺めることにしますわ…
>>680 KaMailV3とHyper Estraierのバージョンは?
疑似インデックスをマージ(km3::summary-sync)
インデックス最適化(km3::he-optimize)
登録漏れの解消(km3::he-gather-unindexed-files)
などを実行しても解決しないということ?
683 :
名無し~3.EXE :2007/12/27(木) 08:32:54 ID:YJ0fGN5f
>>681 >>682 長いサブジェクト(MIME Bエンコード後?)の文字数が、80文字を超える場合だと、
2行に分割されるのだけど、ちょうど分割される部分に単語がきたりすると、
単語も分割されてしまうみたい。
例えば、Mozilla ThunderbirdでSubjectを
> "テストてすとtestてすとテスト"
として、送信されたメールは、Subjectが↓にエンコードされているが、
> Subject: =?ISO-2022-JP?B?GyRCJUYlOSVIJEYkOSRIGyhCdGVzdBskQiRGJDkkSCVGGyhC?=
> =?ISO-2022-JP?B?GyRCJTklSBsoQg==?=
これは、
>Subject: テストてすとtestてすとテ
> スト
となっていて、
KaMailV3で、"subject:テストてすとtestてすとテスト"で検索しても
引っ掛からない。
このfolding?というのを前処理で解消してから、H.Eに食わせれば
良いような気がしているけど、xyzzy lispは良く分かっていないし、
H.Eも該当部分が、どこだか分かっていないから直せないでいます。
今分かっているのは、こんなところです…
684 :
683 :2007/12/27(木) 08:43:38 ID:YJ0fGN5f
subjectヘッダのエンコード後文字長の話は この辺りが関係しているのかな。 tp://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3Arfc.mime%3Arfc2047 …FWS(Folding White Space)って言う物に該当するのかな。 MewのMLでも議論されていたみたいだし…
egrep、バージョンうpしてめっちゃ速くなりましたね
>>685 検索中のファイル名を出さないように改悪しただけなんですけどね。(^^;)
しかし、outlinex もそうですが message は結構重い処理なのでループ中には使わない方がいいような気もします。
with-interval-message を使えば少しはマシかもしれない。
全然見ても試してないけど一般論を言ってみる。 エラー報告をするには (toggle-trace-on-error t) を.xyzzyの先頭に(場合によってはsiteinit.lにも)書いておいてエラーが出たら *Trace Output*バッファの内容を報告に添付すると どの関数で起きているエラーかは一目瞭然になるので わかる人にはすぐにわかることが多いよ。 というわけでおすすめ。
>CALL STACK 8: (set-minor-mode-map nil) >CALL STACK 7: (system:*byte-code ...) >CALL STACK 6: (editor::surround-mode t) >CALL STACK 5: (system:*byte-code ...) >CALL STACK 4: (editor::surround-mode-on) >CALL STACK 3: (system:*byte-code ...) >CALL STACK 2: (#<lexical-closure: set-mark-surround>) >CALL STACK 1: (command-execute set-mark-surround) 不正なデータ型です: nil: keymap ちょっくらソース読んでくる。
(add-hook '*post-startup-hook* 'surround-mode-init-keybind) が動いてない感じですかね xyzzyを起動した後に手動で読み込んでるとか? その場合は.xyzzy(siteinit.l)で読み込んだら動くかも
>>691 ありがとう!
scratch で評価して試用しようとしたのがマズかったのか。
それはそうとかなりいい感じのパッケージなので C-SPC 後に M-f 連打してる人なんかにオススメ。
>>692 > scratch で評価して試用しようとしたのがマズかったのか。
>>691 が正解だとすると、作者さんがこう書いておいてくれれば、
問題なかったんだけどね。
(if *app-menu*
(surround-mode-init-keybind)
(add-hook '*post-startup-hook* 'surround-mode-init-keybind))
> それはそうとかなりいい感じのパッケージなので C-SPC 後に M-f 連打してる人なんかにオススメ。
インストールだけしてつかってなかった。
確かに M-s + M-h 連打は便利かも。
>>693 俺もniから入れてみた。たしかに便利かも?
まだ使い始めたばかりですがちょっと質問です。 日本語の辞書ってありますか? 国語辞典とか広辞苑とか。 Wikiの辞書のページ見ると英和と和英しかないっぽいんですが……。
>>696 ありがとうございます。
必要な辞書データとそのパッケージがあれば良いわけですね。
>>695 日本語だとテキストをみながら検索って訳にはいかないけどね
(単語の区切がわからないから)。でも、ミニバッファに
打ち込んで引くことはできるから、導入してみていいかもね。
>>697 うちはヤフオクで広辞苑第5版を2000円程度で買って辞書引きをしている。
(第6版はxyzzyから利用できるのかまだ不明)
初めからEPWING形式なのでEPWINGの辞書を引ける拡張やddwinなどを利用するなら簡単に導入できるはず。
pdicなどを利用する拡張の場合には辞書の変換をする必要がある。
辞書の変換についてはgoogleなどで調べれば分かると思う。
後はxyzzyからネット上の辞書を引くことかな(goo・yahoo!辞書、英辞郎など)。
この方法はお金もかからないし、情報量も多いが、検索に多少時間がかかるという難点がある。
どの方法でも良いと思うけれど、頻繁に辞書を引くならローカルに辞書を置いておくメリットは大きいのかもね。
>> 698 日本語もセレクションを区切れば引けるよ。
>>699 ネット上の辞書引きだとファミレスとかで執筆できないんで、
広辞苑のCD-ROMをちょっと探して買ってみます。
正直アウトラインエディタにまでなるなんて思ってなかったので、
二年前に「なんだこのわけのわからんエディタは」
って捨てた俺はなめてました
(emacsのキーバインドでeclipseを使ってみたらどうか、と
勧められたらわかんなくて全然ダメで、emacs系のエディタを探した
のがもう一度導入したきっかけです)。
アウトラインありで辞書引けたら最高の執筆環境ですよ。
ミニバッファでも十分早いです。ブラウザ開くよりよっぽど。
キーバインドもなれたらかなり早そうですし
まだあまり覚えられてませんが
(まだQuickTourの途中です。入門は買いましたが情報量多すぎるんで、
とりあえず後でリファレンスに使うことにしてます)。
あとそのままWordとか一太郎みたく縦書きで印刷できたら良いんですが……。
これは質問箱でも出てますけど縦フォントしかないみたいですね。
まあVertical Editorがあるのでそんなに苦労はしないんですけど。
>>700 って、セレクション使えば引けるんですね。
それならめちゃくちゃ早そうだ……。
>>701 広辞苑第5版のCD-ROMは今だとヤフオクで1000円前後で買えるようですね。
第6版はEPWING準拠ということなのでEPWINGの辞書を扱える拡張なら対応できるのかもしれませんが、中古でも
7000円以上するようですね。
アウトライン機能はMeadowなどのemacsの方が優れているようですね。
それとemacsは外字や画像も表示できるので辞書引きにはより向いているのかも。
自分としては表示の高速さやwindows上での安定性の高さなどからxyzzyを使っていますが。
いくつかの拡張はキャレット下の文字列を取得する機能があるのでセレクションが無くても辞書引きは出来ると思います。
ただし、完全に文字の区切りを認識できるわけではないです。
縦書きについては縦書きHTMLというのもあるそうなので、それに変換すれば印刷することも可能だと思いますね。
ただ、今のところそういった拡張を公開されている人はいないようなので、誰かに作ってもらうか自分で作るかする必要が
ありますが。
縦書きHTMLでも()などの文字列を表示するには縦書きに対応したフォントが必要になるようです。 wordなどに出力して印刷すれば縦書きフォントが無くても出来そうな気もしますが、これもコードを書く必要があるでしょうね。
ネットインストーラのsiteを無理やり最新にがうまく動きません…… *NetInstaller Site*でNを押すと「書き込み禁止バッファです」と表示されます。 あと、バイトコンパイルしてダンプファイル削除のLispもうまく動きません。 一瞬でdone.になるのでよく見えませんが、 カレントバッファはバイトコンパイルされてませんし、 ダンプファイルも削除されていません。
と、無理矢理最新の方は動きました。 どうやらきちんとShiftが押されていなかったようで……。 失礼しました。
なるほど。Windows XPの際の返値が変わっているのですね……。 Wikiの方はあとで修正しておかねば。
EmacsのようにC-x C-wなどでファイルを保存後、そのファイルのバッファに移動させたいのですが、 defadvice等の関数が無い為、実現方法が思いつきません。 やり方など分かる方いましたら、教えていただけますか。
広辞苑インストールしてみたんですがCATALOGSファイルが見あたりません。 C:\Program Files\SystemSoft\EDViewer\DIC\KOJIEN5 というフォルダがありますがこれでしょうか?
Emacs スレッドのマスコットはこの _/l__ / く | ´ω` | ぐにゅう emacs | C='| 「ぐにゅう君」に決定したそうなんだけど、xyzzyにはマスコットはないの?
亀
>>713 となるとこんな?
1
|i
'|》
i!》
i!.》
,..==≡≡ミ! 》、= 、、 /)
c(h// ,. ' 、、" i! 》、 `丶、 ,/'/
ゞλ〈 ,. / > < 、i! 》、 ><\ ,/、/
~`\\/_7_ ∠____」、 》、 ,,.メーっ、 ,./< /
\、,,,__ ̄____,,〉、 》v=='"`ゝ< <'/
\  ̄ ,,ゝ 》、", ''ー-</
`丶、 ゛ __,,,,..ノ ,,",' ´ \
`゙ー----―''"´\_()`:; |)
ヽ、_/
いまいちかわいくないな...
そもそも張り合う必要がないと思うんだが
>>715 いや張り合うとかじゃなくて、何となく思っただけなんだけどね。
亀のアイコンがあるからいいか。
えっ!? あの流れで決定したことになってんの?
使用中のバージョン:0.2.2.235
たとえば
http://www.jca.apc.org/~earthian/aozora/0213.html にある、コード表-csv(jisx0213code-csv.txt [2000-12-22],zip圧縮,224k)
をxyzzyで読んだのち、Unicode形式で書き込むと、
主にJIS2000で追加された文字が化けるのですが、
回避方法はありますか?
もちろんNotepad経由でやれば書き込めるけど、
今度はそれをxyzzyに読み込んだ時に文字化けします。
調べたわけじゃないが、過去ログを見た感じ無理じゃない。 xyzzy はユニコードに完全に対応しているわけじゃない。 おまいが対応版のxyzzyを開発してくれるのを待ってる。
JISX0213 の話?
ユニコードに完全に対応したソフトはないから 使う文字コード範囲に対応したソフトをつかいわけるしかないけど xyzzyなら対応してない文字コードでも文字化けするだけで壊さない
722 :
718 :2008/02/03(日) 19:07:02 ID:shgHVxNA
>>719 >xyzzy はユニコードに完全に対応しているわけじゃない。
そうなんですか。以前から何で" ?"に変わるんだろうと思いつつ使ってたけど、
ある時、メモ帳で同じことをしてなかったことに気が付いて、はじめて知ったもので。
>>720 >JISX0213 の話?
そうです。JIS X 0213で書いたファイルをUnicodeで保存しようとした時に起こるトラブルです。
最初はOS側の問題だと勝手に思い込んでいたので気にも留めていませんでした。
>>721 >ユニコードに完全に対応したソフトはないから
>使う文字コード範囲に対応したソフトをつかいわけるしかないけど
そういうことなら、メモ帳以外でUnicodeの読み書き適したエディタがないか探すしかないですね。
xyzzyをやめるわけじゃないけど、他にいいエディタがないか探してみます。レスありがトン。
>722 Unicode対応エディタか。個人的にはシェアウェアだがEmEditorを勧めてみたい。 少なくとも俺はxyzzyより遙かに気に入ったし金も迷わず払った。あの快適さは一度体験するとやめられん。
>>723 俺と真逆だなぁ
俺の場合、値上がりバージョンアップで
見切りをつけてxyzzyに乗り換えた
(setq *ispell-command* "D:/Application/Xyzzy/ispell/ispell.exe") こういうののパス指定って、 こういう指定ってできませんかね? $Xyzzy$ispell/ispell.exe みたいな
>>725 こんな感じ?チェックしてないけど
(setq *ispell-command*
(concat (si:getenv "XYZZYHOME") "/ispell/ispell.exe"))
>>725 うちは環境変数設定していないのでこうだね。
(merge-pathnames "ispell/ispell.exe" (si:system-root))
>>726 XYZZYHOME は "~/" で展開できるぞ
>729 .xyzzyなら大丈夫だけど、siteinit.lでは無理じゃなかったっけ。
> .xyzzyなら大丈夫だけど、siteinit.lでは無理じゃなかったっけ。 ~/ は、 siteinit.l に書いた辞典では文字列として変数に束縛されるだけで、 ~/ の文字列が展開される事はない。 実際に ispell を使う時に、文字列をパスとして評価して初めて XYZZYHOME 等 の値に展開される。だからこれは大丈夫。 だめなのは、 *etc-path* とかかな。
例えばfind-fileの履歴に C:/foo/bar/a.txt C:/foo/bar/b.txt C:/foo/c.txt C:/bar/d.txt があるとして、 C-x C-fとしてミニバッファに C:/foo/bar/ と表示されている時に、C-n,C-pやカーソルキーの上下で出てくる履歴は C:/foo/bar/a.txt C:/foo/bar/b.txt の2つだけです。 この場合でも C:/foo/c.txt C:/bar/d.txt も履歴に出てくるようにすることは出来ないでしょうか? つまり表示されているディレクトリ以下の履歴だけでなく、それより階層の上のディレクトリに あるファイルも履歴に表示できないのでしょうか?
ありゃ、出来たかな。 (defun minibuffer-next-line-or-search-history () (interactive) (unless (next-line 1) (unless (or (eq *last-command* 'minibuffer-next-line-or-search-history) (eq *last-command* 'minibuffer-previous-line-or-search-history)) (delete-region (point-min) (point-max))) (minibuffer-search-history-forward))) (defun minibuffer-previous-line-or-search-history () (interactive) (unless (previous-line 1) (unless (or (eq *last-command* 'minibuffer-next-line-or-search-history) (eq *last-command* 'minibuffer-previous-line-or-search-history)) (delete-region (point-min) (point-max))) (minibuffer-search-history-backward))) こんな感じでいいみたいです。
>>732-733 C-Up (minibuffer-previous-line-or-history)
C-Down (minibuffer-next-line-or-history)
>>734 あらら、あったんですね。知らなかった。
ありがとうございます。
736 :
名無し~3.EXE :2008/02/06(水) 12:37:40 ID:F+62CNm2
xyzzy wiki にアクセスできないの俺だけ?
MeiryoKe_Console綺麗なんだけど、描画が遅くなりますね。 Osakaもいいんだけど、1とTの区別がつきにくい。 何かいいフォント無いですかね。 まあ自分で探せって話なんだろうけど。
>>736 こちらでは今はアクセスできるみたい。
たまに死んでいる時があるので、時間をおいてアクセスするといいかも。
(global-set-key #\C-S-u 'foo) すると 「SHIFTは指定できません」と起こられちゃうんですが Shiftキーを押してるかどうかで動作は変えられないのでしょうか? ちなみにAltは下の書き方で変えられるんですがCtrlで同じ事をすると bar が foo に上書きされてしまいます (global-set-key #\M-u 'bar) (global-set-key #\M-U 'foo)
740 :
737 :2008/02/06(水) 18:26:20 ID:UC8HHA6m
ツールバーの固定ってできませんか?
できない
そうですか(´・ω・`) なんかLisp書いても無理ですかね……
>>743 意味がよく分からないんだけど、一つのツールバーにまとめてしまえばいいんじゃないの?
745 :
名無し~3.EXE :2008/02/07(木) 13:07:27 ID:xW54ARZ7
ツールバーをまとめても左側の動かすための部分は消えませんよね。 あれを消してツールバーを固定したいんです。 IEの「ツールバーを固定する」みたいなのがやりたいんです。 新しいツールバー作ってもそういう項目がないようなので、 xyzzyそのものに手が入らないと無理なようですね。
無理だね。Rebarコントロールを使わずに書かれてて 移動できるように決め打ちされてる。 ソース読めるならdockbar.hとdockbar.cc むりやりな方法はあるだろうけど本体を改造するのが素直だろうね。
最近ocamlで遊んでいますけど 京都大学のホームページでocaml-modeはemacs版しかなかった... みなさんはどうしてるんですか?
>>748 caml-modeはキーワードの強調しかない
自動改行やindent-regionがほしいの
っ言いだしっぺの法則 まぁ caml-mode しかないってことは caml-mode で満足してるか ocaml を使っている人が少ないかのどちらかだろうね
outline-tree2について質問です。 アウトライン作成関数の生成をして、 ;; definition (defun outline-tree-create-outline-user-regexp-foo (root-node) (outline-tree-create-outline-regexp-internal :root-node root-node :layer-regexp-list-order nil :layer-regexp-list '("^■" "^●" "^▲") :layer-regexp-list-case-fold nil :sub-type :heading-node :line-oriented nil :title-converter nil)) としたときに、テキストが ■あああ ▲ううう となっていると ▲ううう がアウトラインに表示されません。 (■あああ ●いいい ▲ううう となっていると表示されます) 途中の階層のノードが無い時でも下層のノードを表示させることはできないのでしょうか?
>>751 :layer-regexp-list-order :any-miss
>>752 おお!できました。
ありがとうございます。やっぱり聞いてみるものですね。
ついでにこちら
ttp://white.s151.xrea.com/wiki/index.php?cmd=read&page=memo%2Fxyzzy%2FOutline-tree2 を参考にこんなものを書いてみたので貼っておきます。
;; treeviewでも migemo 検索できるようにする
(in-package "treeview")
(defvar *isearch-migemo-length* 1)
(defun treeview-isearch-scanner (string no-dup &optional (hitem (treeview-get-selected-item)))
(let ((*treeview-isearch-regexp* nil)
(pattern string)
migemo)
(when *treeview-isearch-scanner-hook*
(setq pattern (funcall *treeview-isearch-scanner-hook* pattern)))
(and *isearch-migemo-length*
(<= *isearch-migemo-length*
(length pattern))
(setf pattern (ed::migemo-query pattern)
migemo t))
(setq *treeview-isearch-current-string* string)
754 :
続き :2008/02/08(金) 20:51:02 ID:Cu2zCkPF
(setq *treeview-isearch-last-match* (if (treeview-hitem-valid-p (setq hitem (treeview-scan-treeview pattern :hitem hitem :reverse (not *treeview-isearch-direction*) :no-dup no-dup :regexp (or migemo *treeview-isearch-regexp*) :case-fold *treeview-case-fold-search* :part *treeview-isearch-part*))) (progn (setq *treeview-isearch-current-match-string* (match-string 0)) t) (progn (setq *treeview-isearch-current-match-string* nil) (ding) nil))))) (in-package "outline-tree2")
>>740 ありがとうございます
うまく設定できました
ため込んでたログをガーっと流し読みしてたら >743 の (´・ω・`) がリストに見えた。
whitespaceがあるくらいなんだから、 (´・ω・`)とか使う言語もあってもいいのにね
しぃ言語ってあったなあ
>>751 のここらへんは逆に顔文字に見えてきた
>:layer-regexp-list '("^■"
>"^●"
>"^▲")
>>737 俺はASCIIがConsolasで、日本語がメイリオ
>>760 ClearTypeにすると重くなりませんか?
まあ、CPUの問題なんだろうけど。
>>760 Consolasは知らなかったけどよさげですね
>>761 PentiumM1.6GHz,768MB,Radeon9600のノートで
起動して最初のファイルを開いた瞬間、ちょいモッサリ
その後、他のファイルを開いたりしてもぬるぬる
です。
キャッシュに入ると問題ないようです
そんな機能在ったんだね知らなかった。と言うか。 それlispで出来るのか?
前後フィードバックのAPIが分かれば、多分出来る筈
imm32.dllこの辺かな
多分ね。 軽くぐぐったけど関数名を見つけられなかった。
foreign.lに在るようなのを使えば WndProcとか出来そうな気もするが・・。 Windowsとlispの境界線がどうやってやるのかよく分からん。
Visual C++ 2008 Express Edition でビルドできるのでしょうか?
lispだけじゃできなさそうだね。ウィンドウプロシージャを 受け取る方法がないもんね。
メッセージフックまではLispで出来ないんだっけ?
WndProcとかでGrepすると それらしき名前をつけて書いているlispは出てくるから 出来るのかと思ってたけど出来ないのか。
SetWindowLongしてるlispもあったし、 コールバック関数を呼んでるlispもあったので できるかなと思って暇なときにでも試そうと思ってたんだが。
ウインドウのサブクラス化なんてEnumWindowsとかと同じレベルなんだから出来るでしょ。 グローバルフックならDLL作らないと無理だからLispだけじゃ出来ないけどね。
lispの勉強がてらキーマップの変更をしようとしたんですが うまく書くことができません…。 (let ((keymap (make-sparse-keymap))) (dolist (i '((#\1 "a") (#\2 "b") keymap) (define-key keymap (first i) (lambda () (interactive) (insert (second i))))))) (first i), (second i) の所の渡し方が間違ってるらしく ここを #\1 "a" で直接書くと通ります。 でも、どう書きなおせば良いのかがわかりません、、 ここではどう値を渡せばいいのでしょうか?
(#\2 "b"))
xy-reference.lからHTMLヘルプを作るとtitleがハイライトされないようなのですが、これは仕様でしょうか?
失礼、hhtmpディレクトリにreference.cssがなかっただけでした。
>>781 …。 orz
ありがとうございます。
(first i)の部分は問題なくなりましたが
(second i) の部分で問題が出てきてしまうようです…。
もう少し何が悪いのか考えて見ることにします
ネット環境が悪く次に書き込めるのが2,3日後になりそうなので
とりあえずお礼だけ書き込ませていただきました。
>>785 dolist の i はループごとに変数が作られるんじゃなくて、
一個作った変数に要素が代入されていく感じです。
だから lambda でクロージャを作ってもクロージャ内から参照している i は
dolist が終わるころには nil になってます。だからエラー。
こうすればいいと思うよ。
(let ((c (second i)))
(define-key keymap (first i) #'(lambda () (interactive) (insert c)))))
>>786 の言うとおり。以下でもOK。
(let ((keymap (make-sparse-keymap)))
(dolist (i '((#\1 "a") (#\2 "b"))
(use-keymap keymap))
(define-key keymap (first i)
`(lambda ()
(interactive)
(insert ,(second i))
))))
以下がうまくいかないのも同様の理由。
(let ((i "a"))
(global-set-key #\1 (lambda ()
(interactive)
(insert i)
))
(setq i "b"))
>>788 ども、すんませんwindow周りがおかしいですね
どうしたらいいものやら
>>789 Trace Outputを晒せばいいよ.
>>789 まだそれほど試してないのでよく分かってなくて申し訳ないんですが、window周りというのは
具体的にどういうことでしょうか?
これも分かってないんですが
(in-package :editor)
というのは
(in-package "editor")
ではだめなんでしょうか?
動作には問題なさそうですが、ldocが効かなくなってしまうようなので..
あと、migemo検索とディレクトリの移動ができたらいいなと思って、調べようとしているところです。
>>790 with-output-to-temp-bufferで表示させているだけなので
表示位置が定まらないんです。
>>791 (in-package "editor")でいいと思います
うちの環境のldocは大丈夫みたいです
anyting.lのmigemo対応できたー --- action.l.orig 2008-02-24 10:17:08.359375000 +0900 +++ action.l 2008-02-24 10:30:19.281250000 +0900 @@ -36,14 +36,18 @@ (if (setq cache (gethash input *anything-cache-sources*)) (return-from anything-update-sources cache))) (setq *anything-update-sources* (make-hash-table :test 'equal)) + (let ((query (or (and (modulep "migemo") + (eval (intern "*migemo-on*" "editor")) + (compile-regexp (funcall (intern "migemo-query" "editor") input))) + input))) (dolist(x *anything-get-sources*) (setf(gethash (car x) *anything-update-sources*) (if (= 0 (length input)) (cdr x) (remove-if-not #'(lambda(y) - (string-matchp (regexp-quote input) y)) ; qoute - (cdr x))))) + (string-matchp query y)) + (cdr x)))))) (setf (gethash input *anything-cache-sources*) *anything-update-sources*) *anything-update-sources*)
>>793 参考になるか分かりませんが
(split-window (truncate (/ (window-height) 2)))
とすればカーソルがどこにあっても常に上側にカーソルがくるようにできると思います。
ldoc2だと何か違いがあるのかな..
>>794 おお!速い。
こちらは*anything*バッファが表示されないことがあるのを調べているところでした。
>>793 キーバインドを変えようとして、こうすると
(in-package :editor)
(define-key *anything-mode-map* #\Up 'anything-previous-line)
(define-key *anything-mode-map* #\Down 'anything-next-line)
(in-package :user)
ldoc2では*anything-mode-map*などのところで説明が表示されないようです。
しかし、(in-package "editor")としたり、ed::を付ければ表示されるので問題なさそうです。
anything-default-exhibitで閉じる位置を間違えてました。
Migemoを使わないときに(regexp-quote input)してなかったので, 次の更新の時にでも修正お願いします.
>>799 *anything*バッファがウィンドウに表示されない問題はなくなったようです。
あと、○文字目の入力からmigemoにするというオプションがあるといいなと思ったりします。
あ,なんかすごい勘違いしてた….
>>800 は気にしないでください….
ループの度にmigemo-queryを呼ぶとすごい重いので
ループの外で呼んだ方が良いですよ.
803 :
801 :2008/02/24(日) 12:43:55 ID:DCU25Qo2
すいません、ループ外で変換すれば1文字目からでもそれほど重くならないみたいです。 794の + input))) を + (regexp-quote input)))) に変えればよさそうです。
>>804 ありがとうございます。
それと
action.lの*anything-buffer-popup*を
(when *anything-buffer-popup*
(if *anything-buffer-vert*
(truncate (/ (window-width) 2))
(truncate (/ (window-height) 2))))
みたいにすればウィンドウの位置を固定できそうです。
ファイラの変わりに使えないかなとも思ってるんですが、本家にはそういう機能はないんでしょうか?
>>805 diredが開てたので、xyzzyではfilerかなと
add-anything-sourcesでそれっぽいの作ってやってみてください。
(add-anything-sources :name "CMD HELP"
:type file
:candidates (lambda()'("ASSOC" "AT" "ATTRIB" "BREAK" "CACLS" "CALL" "CD" "VOL" "XCOPY"))
:action (lambda(c)(delete-buffer " cmd")(delete-window))
:move-action (lambda(cmd)
(execute-subprocess(concat "help " cmd) nil " cmd")
))
こんな感じで追加できます。
>>806 よく分かってないんですが、こんな感じにしてみました。
(defvar *anything-specified-list* nil)
(add-anything-sources :name "DIR LIST"
:type file
:candidates (lambda()'("C:/Documents and Settings" "C:/windows" "C:/Program Files"))
:action (lambda(dir)
(setq *anything-specified-list* (directory dir))
(ed::anything-cleanup)
(anything)
))
(add-anything-sources :name "Files from specified Directory"
:type file
:candidates (lambda() (or *anything-specified-list* (directory default-directory)))
)
間違いがあったので修正。default-directoryを設定する必要があるみたいです。 (defvar *anything-specified-list* nil) (defun re-anything (dir) (setq *anything-specified-list* (directory dir)) (set-default-directory dir) (ed::anything-cleanup) (anything)) (add-anything-sources :name "DIR LIST" :type file :candidates (lambda()'("C:/Documents and Settings" "C:/windows" "C:/Program Files")) :action (lambda(dir) (re-anything dir))) (add-anything-sources :name "Files from specified Directory" :type file :candidates (lambda() (or *anything-specified-list* (directory default-directory))) :action (lambda(f) (let ((file (merge-pathnames f (default-directory)))) (if (file-directory-p file) (re-anything file) (find-file file))))) スレ汚しぎみなのでこの辺で。
最終結果をまとめたもの、up希望
しょぼしょぼなんだけど、こんなのでいいんですかね? (in-package "editor") (defvar *anything-directory-list* nil) (defvar *anything-last-directory* nil) (defun re-anything (dir) (setq *anything-last-directory* dir) (anything-cleanup) (anything)) (defun anything-upper-directory () (interactive) (re-anything (directory-namestring (remove-trail-slash *anything-last-directory*)))) (add-anything-sources :name "Files from Current Directory" :type file :candidates (lambda() (directory (or *anything-last-directory* default-directory))) :action (lambda(f) (let ((file (merge-pathnames f (or *anything-last-directory* default-directory)))) (if (file-directory-p file) (re-anything file) (find-file file))))) (add-anything-sources :name "Directory List" :type file :candidates (lambda() *anything-directory-list*) :action (lambda(dir) (re-anything dir))) (define-key *anything-mode-map* #\C-z 'anything-upper-directory) (in-package "user")
設定はこんな感じで (setq ed::*anything-directory-list* `( ,(si:system-root) ,(append-trail-slash (merge-pathnames "site-lisp" (si:system-root))) ,(append-trail-slash (merge-pathnames "lisp" (si:system-root))) ,(append-trail-slash (map-backslash-to-slash (get-special-folder-location :personal))) )) それと、:nameの表示される順番は変えられないのでしょうか? あと、カーソルがウィンドウの下側にあるとバッファを移動してもそのバッファが別ウィンドウに表示されないようです。 多分805みたいにしてウィンドウの位置を固定すればこの問題は出なそうなんですが。
>>811 多分windowの問題は直ったはずです。
それとsources.lは別にrequireするようにしました
順番については人の気持ち(文脈じゃなくて)を理解できる
lispができたらといゆうことでよろしくです
マッチしたとこをハイライトするのをでっちあげてみたんですけど もっとスマートにできませんかね? narrow-to-region のとことか行ハイライトのとことか。 個人的には行のハイライトとテキストの取得は 分けたほうがいいとか思ってみたり。
814 :
813 :2008/02/26(火) 02:12:36 ID:0JzXm671
(defvar *anything-current-query* nil) (defvar *anything-matches-color* '(:foreground 10 :bold t)) (defun anything-highlight-matches () (with-anything-window (delete-text-attributes 'matches) (when *anything-current-query* (save-excursion (save-restriction (narrow-to-region (save-excursion (next-line (window-lines)) (goto-eol) (point)) (progn (previous-line (window-lines)) (point))) (while (scan-buffer *anything-current-query* :case-fold t :regexp t :tail t) (apply 'set-text-attribute (match-beginning 0) (match-end 0) 'matches *anything-matches-color*))))) (anything-selection))) (defun anything-exhibit () (let ((input (anything-check-minibuffer-input))) (setq *anything-current-query* (when (< 0 (length input)) (or (and *anything-migemo-on* (modulep "migemo") (<= *anything-migemo-length* (length input)) (compile-regexp (ed::migemo-query input))) (regexp-quote input)))) (case *this-command* ((self-insert-command anything-backward-char kill-region) (anything-default-exhibit input)) (t (message "~A" *this-command*))) (and (not *anything-attribute-buffer*) *anything-highlight-color* (anything-highlight-matches))))
>>813 なるほど、ハイライトならkeyword-hash-table追加するだけでいけそうですね
なんかぐずぐずになってきたのでスローペースでお願いします
anything-set-mark-actionですが、(eql 'file (cdr t-a))のところで引っかかっているみたいです。
>>816 こちらで修正は終わってるのですがある程度まとまってから更新しようと思います。
fileといゆうありきたりなsymbolがだめっだったみたいですね
'user::file に変更してください
anything-quitのanything-unsetup,anything-cleanupはhookに入っているのでいらないような気がします。
(defun my-goto-matched-parenthesis (&optional arg) (interactive "P") (cond ((syntax-open-p (following-char)) (goto-matched-parenthesis) (forward-char)) ((syntax-close-p (preceding-char)) (backward-char) (goto-matched-parenthesis)) (t (call-interactively 'quote-char)))) (global-set-key #\C-q 'my-goto-matched-parenthesis) こんなの書いてみたんですが、html(+)-modeだと(following-char)がsyntax-open-pでなくても (goto-matched-parenthesis)が有効みたいですね。なんでなんだろ?
タグの開始と終了位置なんじゃないかな
>>822 なるほど、ありがとう。
タグと挙動を変えてこんな感じにしてみた。
(defun my-goto-matched-parenthesis (&optional arg)
(interactive "P")
(cond ((syntax-open-p (following-char))
(goto-matched-parenthesis)
(forward-char))
((syntax-close-p (preceding-char))
(backward-char)
(goto-matched-parenthesis))
((or (syntax-open-tag-p (following-char))
(syntax-close-tag-p (following-char)))
(goto-matched-parenthesis))
(t
(call-interactively 'quote-char))))
(global-set-key #\C-q 'my-goto-matched-parenthesis)
へんなこと聞きますが、ここの人たちってxyzzyをEXEから起動してますか? batから起動してますか? 友人からこんなbatをもらったんですが、よく意味がわかりません・・・ @echo off cd > xyzhome.dat copy xyzzy.set+xyzhome.dat xyzstart.bat call xyzstart.bat set path=%PATH%;%XYZZYHOME%;%XYZZYHOME%\bin;%XYZZYHOME%\dll; start xyzzycli.exe del xyzstart.bat del xyzhome.dat xyzzy.batとxyzzy.setをxyzzyフォルダにいれてから起動するらしいのですが、 原理というか、なぜこのように記述したbatを使用するのかわかりません。 メリットって何ですか?
exeからですよ。 何かそれMS-DOS時代の起動バッチみたいね。 .setと.datに何が書いてあんだろう
>>824 xyzstart.batってファイルととかxyzhome.datってのが別にあるんじゃないの?
考えられるのは、USBで使う為とかにPCの環境変数の設定を一時的にしてるとか。
ひえさんのっぽい。
お、Bingo
cd コマンドでカレントディレクトリのパスを表示→リダイレクトで xyzhome.dat に書き込む xyzzy.set と xyzhome.dat を結合して xyzstart.bat にcopy この段階でxyzzystart.batの中身は, set XYZZYHOME=カレントディレクトリ callでxyzzystart.batを呼び出す=環境変数XYZZYHOMEを設定 環境変数PATHにXYZZYHOMEと以下のbin,dllを追加 xyzzycli.exeを起動 xyzstart.bat,xyzhome.dat を削除
XYZZYHOME なんて設定しなくていいじゃん。 (defun load-dot-xyzzy () (unless (path-equal (si:system-root) "~") (let ((rc (merge-pathnames ".xyzzy" (si:system-root)))) (when (file-exist-p rc) (load rc))))) (add-hook '*pre-startup-hook* 'load-dot-xyzzy t)
SKKとかでやってる人には便利なのかな
確かにmigemo変換はSKK向きかも。 migemo辞書よりSKK辞書(unannotated)の方がいいかな。 (defun read-dictionary () (save-excursion (dolist (file `(,(merge-pathnames "SKK/SKK-JISYO.L" (si:system-root)) ,(merge-pathnames "SKK/SKK-JISYO.edict" (si:system-root)) )) (find-file file) (rename-buffer (concat " " (file-namestring file)) (get-file-buffer file))))) (add-hook '*post-startup-hook* 'read-dictionary) こんな感じで読み込んでおけば英単語のスペルを思い出せない時なんかに使えそう。 ATOK悪くないんだけど毎年金を出すのもバカらしいし、xyzzyで使うならSKKも悪くないかな などと思ってみたり。
tc移植してくれる人いないかなあ。
>>835 これ使いこなせる人ならlispなんて簡単な希ガス
表覚えるよりも
windows 2003 server R2(sp2)でxyzzyのoutline-mode使えている方、いますか? VC++2005proでコンパイルしたり、試行錯誤しているんですがoutlineを起動すると access violationで落ちます。 メモリ周りで変わったところがあるかと思い、DEPをシステムの重要なファイルのみに 変更したり、例外にxyzzyを加えたりしてもだめでした。 どうもttrayなどapiを呼び出すものはだめっぽい感じです。 (落ちるところは違うみたいですけど) もしなにかヒントになりそうなことをご存知の方、いらっしゃったら ぜひお願いします。
outline-treeじゃなくてoutline-mode?
839 :
837 :2008/03/06(木) 22:16:42 ID:0UXmRMHH
>>838 失礼しました。outline-treeですね。
win2003svrは、loadlibraryで動的にdllをロードすると、access violationを
返すことがあるというバグがあったそうですが、sp2適用で解決しているらしいし・・・
その後少し調べてみたら、やはりttrayとoutline-treeは落ち方が違うようです。
(例外が出ているdllが違うみたい)
デバッガをVC++付属のものから、ollydbgに変えたら落ちる前の呼び出し履歴が
もう少し細かくわかりました。
やはり最後の呼び出しはtreeview.dllで行われているようですね。そしてcomctl32.dllで
例外が出ているみたいです。
ちょっとtreeviewをコンパイルしなおしたりして、試してみようかと思います。
840 :
837 :2008/03/07(金) 18:12:49 ID:6aWy0SK5
無事、解決しました。あれからいろいろ試してみると、どうも callback関数を使うとaccess violationになるということがわかりました。 またxyzzyのガベコレが初期化時にaccess violationを頻発していたので、 もしや・・・ともう一度DEPの設定を見たら、全部保護に戻っていました。 改めて設定を直して、すぐに再起動して試したら、無事に起動できました。 なんという無駄な労力。OTL スレ汚し、申し訳ないです。
>>840 乙。
ちなみにVista x64 SP1ではDEPから除外しなくても問題なしになりました。
Home キーでバッファを切り替えるときの順番を 見た目の並び順にできませんか
共通設定>いろいろ>バッファリストを作成順に を外す、だったかな
好きなほうでどうぞ 1 ;;----------------------------------------------------------- ;;.. 移動順をタブの表示順にする (setq *next-buffer-in-tab-order* t) 2 ;;----------------------------------------------------------- ;;.. タブの表示順で移動 (defun next-buffer-in-tab-order () "*next-buffer-in-tab-order*の値に関係なく,常にタブ右のバッファに戻る" (interactive) (let ((*next-buffer-in-tab-order* t)) (next-buffer))) (defun previous-buffer-in-tab-order () "*next-buffer-in-tab-order*の値に関係なく,常にタブ左のバッファに戻る" (interactive) (let ((*next-buffer-in-tab-order* t)) (previous-buffer))) (global-set-key #\HOME 'next-buffer-in-tab-order)
ありがとうございます。設定する変数があるですね。
ttray でタスクトレイに好きなアイコンを 表示できませんか?
xyzzy以下のファイルが開くなくなった。 XP sp2 なんで
あっ再起動したら直りました。すんまそん
851 :
名無し~3.EXE :2008/03/10(月) 02:26:59 ID:wHnda09j
別に無理なこと無いでしょ
そんなに何種類もの色を同時に表示できたっけ?
共通設定→フォント で設定されてる色しか使えないし、 そもそもRGB値での指定ができなかったはず。
854 :
849 :2008/03/10(月) 06:35:43 ID:6ESq0sxK
>>850-853 すみません、ありがとうございます
いろいろ調べてみたのですが、どうもそうみたいですね。
テキストではないですが、背景色ならset-buffer-colorsでRGB値を指定できるみたいなので、今はちょっと妥協してカーソル直後の文字列が"[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6}"にマッチしているときだけ、背景色を変えるというのを作っていたのですが、どうもお手上げな感じです。
もし余力のある方おられましたら、ヒントだけでもいただけませんでしょうか。
wordなどでダブルクリックしたときに選択される文字は辞書を使って分かち書きをしている んでしょうか? forword-wordなどで日本語の文字の区切りも正しく認識できたらと思うんですが、辞書を 使うしか無いんですかね?
>>854 やってみた。
css-mode で #rgb または #rrggbb の上にカーソルがあるときだけ背景色変わる。
元に戻すうまい方法がわからなかったので、とりあえずグローバル変数に保持。
xyzzy.ini 読まないと取得できないのかな?
(defvar *default-backcolor* #xffffff)
(defvar *default-textcolor* #x000000)
(defun change-bgcolor-to-current-rgb ()
(let ((gcol (goal-column)))
(save-excursion
(let ((end (progn (skip-chars-forward "0-9A-Fa-f") (point)))
(start (progn (skip-chars-backward "0-9A-Fa-f") (point)))
s c)
(if (and (setq s (buffer-substring start end))
(looking-back "#")
(setq c (case (length s)
(6 (parse-integer s :radix 16))
(3 (parse-integer (substitute-string s "." "\\0\\0") :radix 16))
(t nil))))
(set-buffer-colors (vector *default-textcolor* c))
(set-buffer-colors (vector *default-textcolor* *default-backcolor*)))
))
(set-goal-column gcol)))
(add-hook '*css-mode-hook*
(lambda ()
(make-local-variable '*post-command-hook*)
(add-hook '*post-command-hook* 'change-bgcolor-to-current-rgb)))
857 :
849 :2008/03/10(月) 12:18:57 ID:6ESq0sxK
>>856 ありがとうございます。助かりました。
すべて元の状態に戻すには(set-buffer-colors nil)が使えるみたいなのですが
テキスト色だけデフォルトのまま維持する方法は見つからなかったので
変数に保持するしかないのではないかと思います。
それとset-buffer-colorsとCSSの色指定の順がBGRとRGBで違っているので、並びかえる必要があるみたいです。
ほとんど同じですが、色指定の並びかえと
#の上にカーソルがあるときも色が変わるように変更したものを貼っておきます。
(defvar *default-textcolor* #x000000)
(defun change-bgcolor-to-current-rgb ()
(let ((gcol (goal-column)))
(save-excursion
(let ((end (progn (skip-chars-forward "#") (skip-chars-forward "0-9A-Fa-f") (point)))
(start (progn (skip-chars-backward "0-9A-Fa-f") (point)))
s c)
(if (and (setq s (buffer-substring start end))
(looking-back "#")
(setq c (case (length s)
(6 (parse-integer (substitute-string s "\\(..\\)\\(..\\)\\(..\\)" "\\3\\2\\1") :radix 16))
(3 (parse-integer (substitute-string s "\\(.\\)\\(.\\)\\(.\\)" "\\3\\3\\2\\2\\1\\1") :radix 16))
(t nil))))
(set-buffer-colors (vector *default-textcolor* c))
(set-buffer-colors nil))
))
(set-goal-column gcol)))
(add-hook '*css-mode-hook*
(lambda ()
(make-local-variable '*post-command-hook*)
(add-hook '*post-command-hook* 'change-bgcolor-to-current-rgb)))
>>857 netinstaller にある color を使えばもっと楽にかけるよ。たぶん。
859 :
856 :2008/03/10(月) 22:51:37 ID:UZf8hFxS
>>857 どうも。
色はそういわれれば変だと思ったけどよく見てなかったw
元に戻すのは nil でよかったのね。
今思ったけど、テキスト色は (- #xffffff c) でもいいかもしれないなあ。
860 :
名無し~3.EXE :2008/03/10(月) 23:41:55 ID:sjHDta7k
ttray と言えば、 1. 比較的長い文の行末にカーソルを移動。 2. マウスを使って、xyzzy を最小化。 3. xyzzy を元の大きさに戻す。 とすると、 右にスクロールされた状態になってしまう。
質問です。 D&DでショートカットをXyzzyで開くにはどうしたらよいでしょうか。 EmEditorやSakuraではショートカット元を開いて編集できるのですが、 Xyzzyではショートカット自体を開いてしまいます。
865 :
846 :2008/03/13(木) 17:33:47 ID:htm70gns
>>866 ありがとうございます。
そのWikiの通り siteinit.l に記述したらショートカットから編集できるようになりました。
modeを書くときのインデントの計算って、定石みたいなのはあるんでしょうか? 思いつくままに力技で書いてるんですけど、なんか不細工です><
calc-lisp-indentかな
870 :
868 :2008/03/18(火) 08:48:04 ID:f6PksSpl
公開されているモードのcalc-〜-indentも読んではいたんですが、 理解できるのは私と同じような力技っぽいものが限界でした。 綺麗かなと思うものだと、プログラムの動きは追えても、 なぜそう書いたかという意図が理解できなかったりしました。 もちろんcalc-lisp-indentは後者ですが…… そこで質問に戻るのですが、 calc-lisp-indentなどのインデント量計算関数も 実は綺麗に書かれた力技であって、 私には理解できなかっただけなのか、 それとも、ソースからは意図が見えにくくても、 構文解析などのように、定番のアルゴリズムから 対象の言語に合わせて導かれた、 必然的な記述だったりするのか、 どちらなんでしょうか? 情報が小出しですみません><
calc-lisp-indent は別格なイメージがあるなあ 必然かどうかはわからないけど、lisp の構文の特性によるところは大きいと思うよ
力技の定義にもよるかもしれないけど、calc-lisp-indent でも やってることは大して変わらないと思うよ。 インデントしたい行より前に何が書いてあるか調べて それに応じてインデント量を決めている。
873 :
868 :2008/03/19(水) 08:33:29 ID:MrJ1sw7H
やっぱり近道は無いみたいですね…… Emacsができて何十年も経つので、偉い人達が簡単なやり方を 思いついてたりするかなとちょっとだけ期待してたんですが、 自分でも綺麗に書けるように地道に頑張ります。 どうもありがとうございました。
howmで30MB程度のテキストファイルの検索をしているのですが、一覧表示に20秒程度かかって しまいます。 キーワード検索にはhyperestraierを使っているんですが、正規表現で日付も検索できるのだろうか? それとunix-utilsのgrepを使ってもmeadowでcygwinのgrepを使った場合より速度が遅いです。 (grepの問題ではなくhowmのバージョンの違いによる問題か?) インデックス作成の有無を問わずhowmの日付も検索できる(正規表現を使える)高速な検索方法 ってないでしょうか?
>>874 身内でアプリへの組み込み用に作って使っているスクリプトのモードです。
Cから;を抜いていろいろつぎはぎにしたような言語なので、
始めはahk-modeをキーワードの変更などしながら使っていました。
ですが、手で修正しないといけないところがあったりして、
専用modeを書いた方が結局早いかなと思い、
いろんなところからコピペしながら作っていました。
一応動くところまでは来てるんですが、
「次からはLuaに移行するから、勉強しておいて」
とのことです。
λ......
rtm-modeとtwiter-modeを作ろうかと思っているんですが 入門xyzzy以外では何を参考にすべきですか? ちなみにJavaを少しかじっている程度で 何から始めるべきかもさっぱりです。
実際にソース見るのが一番早いでしょ。 それと info-modoki-mode。
879 :
名無し~3.EXE :2008/03/23(日) 01:26:08 ID:3HEwJh7G
>>878 参考にすべきソースはネットインストーラーあたりでしょうか?
>>879 色付けとか以上のことをするなら
2ch-modeとか、後はhttpとかの通信用ライブラリを見るとか
>>880 いや、それは知っているんですが正規表現の細かい仕様が書いていないので。
そのうちMLなどで作者さんに聞いてみようかな。
sqlite.dllやBoost Regex++などは全文検索には使えないんですかね?
>>877 ちょうど twitter-mode 作ってみたいと思ってたとこなんで、
よければ協力しましょうか
と思ったけどできない…。 hyperestraier の正規表現検索って単語単位なのね。 勘違いしてた。すまん。
>>884 なるほど。それは知らなかった。ありがとうございます。
もう少し正規表現に自由度が高ければ最高なんですけどね。
当面はキーワード検索で一覧表示させることで良しとしようと思います。
それとは別にhowmの最新版の方が速いのでhowm自体のコードを見直せばいくらかは改善
されるのかもしれません。
grepもcygwinの方が新しいけど、これも新しい方が速かったりするんですかね。
cygwinのを使うと文字コードの問題でいろいろありそうですけど。
>>883 やっぱりこの先忙しくなりそうなので、断念します……。
すみません……。
888 :
883 :2008/03/23(日) 19:10:48 ID:NYib4T5/
あ、いえいえ ひとりでまったりとやることにします 完成するのと飽きるのとどっちが早いかなって感じですが
>876 Cから;を抜いたようなのならjavascript-modeをベースにすればいいんじゃない?
>>876 lua-modeクルーーーーーーーー!
>>877 rtm-modeもtwitter-modeも両方 window とか buffer をごりごり
操るような感じになりそうだね。
window の操作とか面倒なんだよねー。
#入門にはxxx言語のメジャーモードとかが向いてると思う。
まずは rtm api だけを実装したライブラリを作ってみるといいかも。
で、rtm-mode はそのライブラリを使って UI を提供すると。
>>891 これから忙しくなりそうなのにさっそくAmazonで買っちゃいました。
最初のページについてはさっき知ったので
今読んでます。
どうせなので俺はrtm-modeに集中してみることにします。
なんか俺の環境だと夜はtwitterが半端じゃなく重くて
twitとかのIMで取得できず、
サイト見に行くとスタイルシートが取得できてないのかページが崩壊したり、
tweetbar入れたらrefleshしても何も取れないとか、
アホみたいなことになってるので……。
mixiのスタイルシートも取得できたりできなかったりするから
回線自体が重いんでしょうね。
つーかこのスレすらbbs2chreaderでまともに表示できてない……。
近くで夜にnyでもやってる人がいるのかな。
skk-wrapですがskk openlabには2007年7月最初のバージョンというのは無いようでDDSKK 13.0.90 では動作しないようです。 正常に動作するオリジナルも同梱していただけるとありがたいのですが。
>>895 ありがとうございます。動作確認しました。
自分としてはhowmの最新版に追従できたらと考えているんですが、当分先になりそうです。
897 :
名無し~3.EXE :2008/03/26(水) 00:01:12 ID:lV+0q+lM
twitter-mode キタ━━━━━━m9( ゚∀゚)━━━━━━!!
899 :
883 :2008/03/26(水) 00:45:52 ID:85X6hqM7
先越されたーーーーー ってか、服部さんも作ってるっぽいなーと思ってた
900 :
名無し~3.EXE :2008/03/26(水) 01:48:04 ID:iPpGZQaW
この分だとrtm-modeも誰かに先越されそう。 そもそもlispが書けるようになったとしてライブラリが作れそうにないし… Javaも勉強中だけどJavaで作れるのかなあ
summary.l:531: (send-direct_message *username *password* user msg) typo?
>>901 いやそれであってると思う
api.l:500:(defun send-direct_message (username password target message)
ごめん勘違い username の方か
904 :
名無し~3.EXE :2008/03/27(木) 00:31:03 ID:Gksr4uvb
こうなったら写経モード作るぞ
RTMのAPI普通に公開されてますね。 twitter-modeのapi.lみたいに lispだけでいけるかな、意外と。
WinMergeというのもあるようです。 compare-fileで一つずつ比較するよりは速いのかもしれません。 まあチラシの裏ということで。
xlisp-mode の netinstaller 対応希望
>907 WinMergeは普通にかなりおすすめだと思うよ。 まとめて比較して部分的に差分を適用とかさくさくできて便利だよ。
>>909 便利そうなんですがやはりxyzzy上で実行したかったので、diff.exeを使ってwikiにあるlispを書き直して
みました。自分の使う機能に限定しているので機能ダウンしているところもありますが、速度はいくらか
速くなったと思います。
おつかれさん。
本家emacsではバッファ切り替えはC-x bのみのようですが、 xyzzyで割り当てるとしたらどこがいいでしょう? どこかの記事で C-, C-. というのを見ましたが、 C-. はlisp-modeの補完に使われてますよね……。
HomeとShift-Home
それデフォルトじゃないですか……
バレたかw 俺はC-PageUp と C-PageDownにしてます。
うーん、やっぱり人それぞれだし、 emacskey.lには実装しなくていいかな……。
>>917 お、win ぽいキーバインド?(Excel?)
そういうのどっかにまとめてさらしてる人いないかね、いちいち悩んじゃうので。
たとえばPageDown とか何にしよう、とか。C-v は貼り付けだし、C-f (vi風)は検索だしで。
C-n を dabbrev-expand とか、地味に vim 風にしてたり。
今のとこ xyzzy と心中するくらいのつもりではいるのだが…、決断力弱め。
Windowsからxyzzyに入った人はWindows風ですかね?私もですが。
多分emacsから入った人はemacs風にするんでしょうね。 winkey.lの欠点はセレクションがあるときにC-cやC-xがコピーや切取りになってしまい、C-x ○○ とかのコマンドが実行できないことですかね。 *last-command*をみたり、セレクションを設定した直後にだけコピーするようにすればいいのかな。 意図した時だけコピー・切取りできればベストなんだけど。
emacsから入ってもWinkey.lは使えると思うよ 基本的にリージョン使えばセレクション使わないし
私はwinkey2.lというのを作ってます(どっかのHPにあった)
winkey2.lは
>>920 のURLにありますよ。
適当にこんなものを書いてみました(作りかけ)が、もっといい方法はないですかね?
my-selection-forward-charでセレクションを設定した場合にだけC-cをコピーにして
それ以外はspecific-command-prefixにしています。
(defvar *win-like-selection-keymap*
(let ((keymap (make-sparse-keymap)))
(define-key keymap #\C-c 'copy-selection-to-clipboard)
(define-key keymap #\C-x 'kill-selection-to-clipboard)
keymap))
(defvar *default-selection-keymap-1*
(let ((keymap (make-sparse-keymap)))
(define-key keymap #\C-c 'specific-command-prefix)
(define-key keymap #\C-x 'ctl-x-prefix)
keymap))
(defun recover-selection-keymap ()
(unless (or (eq *last-command-char* #\C-c)
(eq *last-command-char* #\C-1))
(setq-default selection-keymap *default-selection-keymap-1*)
(delete-hook '*post-command-hook* 'recover-selection-keymap)
))
(defun my-selection-forward-char (&optional (arg 1))
(interactive "p")
(setq-default selection-keymap *win-like-selection-keymap*)
(add-hook '*post-command-hook* 'recover-selection-keymap)
(selection-forward-char arg))
(global-set-key #\C-1 'my-selection-forward-char)
そういえば俺は全然リージョン使ってないな。。
俺はセレクションをまったく使ってないな。
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | ここでぼけて!! | |_________| ∧∧ || ( ゚д゚)|| / づΦ
ごめん。お笑いのセンス無くて。 タイマーにしてみた。 (defvar *default-selection-keymap* (let ((keymap (make-sparse-keymap))) (define-key keymap #\C-c 'specific-command-prefix) (define-key keymap #\C-x 'ctl-x-prefix) keymap)) (defvar *win-like-selection-keymap* (let ((keymap (make-sparse-keymap))) (define-key keymap #\C-c 'copy-selection-to-clipboard) (define-key keymap #\C-x 'kill-selection-to-clipboard) keymap)) (defvar *recover-selection-keymap-time* 2) (defun recover-selection-keymap () (setq-default selection-keymap *default-selection-keymap*) (message "selection-keymap initialize")) (defun set-selection-keymap () (when (pre-selection-p) (setq-default selection-keymap *win-like-selection-keymap*) (stop-timer 'recover-selection-keymap) (start-timer *recover-selection-keymap-time* 'recover-selection-keymap t))) (add-hook '*post-command-hook* 'set-selection-keymap)
セレクションの有無でC-x , C-c の動作を変えるのは、コレをカスタマイズして使ってる。
http://www.klavis.info/pavail.l C-aは、自分で作った全選択と行頭移動を兼ねるやつにしてる
;; Ctrl+A 行頭でなければ行頭に移動。行頭なら全選択。すでに全選択なら選択解除(元の行に戻る)
(defvar *last-line-number-of-my-swb* (point-min))
(defun my-selection-whole-buffer ()
(interactive)
(progn
(setq *last-line-number-of-my-swb* (current-line-number))
(selection-whole-buffer)))
(defun my-beginning-of-line ()
(interactive)
(if (equal (current-column) 0 )
(if (and (pre-selection-p)
(and (equal (selection-point) (point-min))
(equal (selection-mark) (point-max))))
(goto-line *last-line-number-of-my-swb*)
(my-selection-whole-buffer))
(beginning-of-line)))
(global-set-key #\C-A 'my-beginning-of-line)
; C-x hも代替する
(define-key ctl-x-map #\h 'my-selection-whole-buffer)
932 :
919 :2008/04/06(日) 20:23:43 ID:W25svIPg
>>920 サンクス。プログラマの人が使ってるような付加部分が気になってるとこなんだけどね。
例えば grep 何に割り当ててる、とか。サクラ風に C-g?論外だけど。
全選択はあんま使わないから C-x C-a とかにしてるね。てきとー。たまにつかう。
根っからWindows だと複数ストロークがやや億劫。
結局 winkey と Gates 以外に足せたのは
C-w close-selected-buffer(ややWindows風、C-F4は遠い)
C-n dabbrev-expan(Vim風)
C-Enter で compare-windows(サクラ風)
タブ移動は C-Tab。これ自分で足したんだっけ?忘れた。
他のエディタに合わせて俺キーバインドにならないようにしてるつもりだが、
結局俺キーバインドだな。
M-x でコマンド実行。これ最強。
934 :
929 :2008/04/06(日) 20:38:12 ID:7T12FMH/
>>931 (setq *popup-completion-list-default* :always)としてポップアップ表示させるのではダメなの?
後はac-mode.lとかを使えばいいんじゃないかな?
一応説明しておくと929はwinkey.lなどでセレクションがあるとC-c,C-xがコピー・切取りになってC-c ,,
とかをしたいのにコピーになってしまったよということがあるから、一定時間経過後はspecific-command-prefix,
ctl-x-prefixに戻すというlispね。
>>934 うーん、やっぱりバッファでまとめて見れるのは捨てがたいんですよ。
ミニバッファでの補完時はできているから、
こっちでもできるかな、やり方わかれば応用効くかな、と思いまして。
xyzzy自体のコード探せば見つかりますかね。
>>935 lispディレクトリにgrepかけて調べてみればそれほど難しくないと思うよ。
自分のところではキーワードファイル・tagsファイル・関数からも補完するようにしてるけど
(ただし、ポップアップ表示させないと動かないと思う)需要ありますかね?
>>936 めちゃくちゃあります。欲しいです。お願いします。
以前晒したemacskey.lについてですが、 2時間苦しんだあげくC-S-hにhelp-prefixあてられなかったので (キー表現使用可能文字なんて知らなかった) C-c C-hをhelp-prefixにしようと思うんですけど、 どっかで標準的に使われてます? 本当は3ストロークになるからこれだけは嫌だったんですけどね……。
ac-mode じゃいかんの?
って、こっちではemacskey.l晒してないのか。
すみません。
>>938 はスルーしてください。
久しぶりに新しい人が増えてるのかな
いやもう4年くらい使ってるので全然新しくないですよ。
winkey.l(winkey2などでも同じ)を使っていてC-x,C-sをしたいのに切取りになってしまったよと悲しい思い
をしたことが結構あったので
>>929 をさらに修正してみました。
*recover-selection-keymap-time*の秒数経過後はC-c,C-cをコピー、C-x,C-xを切取りにしています。
;; セレクション設定後にC-c,C-xをコピー・切取りにして、一定時間経過後に元に戻す
(defvar *recover-selection-keymap-time* 2)
(defun recover-selection-keymap ()
(let ((keymap (copy-keymap (local-keymap))))
(define-key keymap '(#\C-c #\C-c) 'copy-selection-to-clipboard)
(define-key keymap '(#\C-x #\C-x) 'kill-selection-to-clipboard)
(setq-default selection-keymap keymap)
(message "selection-keymap initialize")))
(defun set-selection-keymap-1 ()
(when (pre-selection-p)
(let ((keymap (copy-keymap (local-keymap))))
(define-key keymap #\C-c 'copy-selection-to-clipboard)
(define-key keymap #\C-x 'kill-selection-to-clipboard)
(setq-default selection-keymap keymap)
(message "selection-keymap set")
(stop-timer 'recover-selection-keymap)
(start-timer *recover-selection-keymap-time* 'recover-selection-keymap t))))
(defun set-selection-keymap ()
(if (pre-selection-p)
(progn
(stop-timer 'set-selection-keymap-1)
(start-timer .01 'set-selection-keymap-1 t))
(stop-timer 'recover-selection-keymap)))
(add-hook '*post-command-hook* 'set-selection-keymap)
945 :
名無し~3.EXE :2008/04/08(火) 17:25:20 ID:vnrvtpkq
NetInstaller を使って php-mode (0.0.1.6)を入れたのですが
phpのファイルを開いてもキーワードに色が付きません。
>>623 を参考に xyzzy.wxp を削除したのですが状況変わらず…。
原因をご存知の方おられましたら教えてください。
>>946 ありがとうございます
初期化ファイルに設定を入れたところ色が付くようになりました
NetInstaller で入れた場合は設定不要だと思っていました・・
darkroomみたいなマイナーモード(メジャーモードでもいい)ありませんか?
こんなかんじ? (set-buffer-colors #(#x00ff00 0))
silogさんのところを参考にmsgboxをスキップできるようにしてみました。 (in-package "editor") (defvar *my-msgbox-skip-symlist* nil) (defun reset-my-msgbox-skip () (dolist (skip *my-msgbox-skip-symlist*) (setf (symbol-value (intern skip)) nil)) (delete-hook '*post-command-hook* 'reset-my-msgbox-skip)) (defun my-msgbox (&rest args) (protect-match-data (flet ((get-value (arg default) (let ((mem (member arg args))) (if mem (prog1 (second mem) (setq args (append (ldiff args mem) (nthcdr 2 mem)))) default)))) (let ((x (get-value :x 0)) (y (get-value :y 0)) (w (get-value :width 200)) (h (get-value :height 100)) (fmt (get-value :fmt "~{~A~%~}")) (sk (get-value :skip "skip1"))) (make-local-variable (intern sk)) (unless (symbol-value (intern sk)) (pushnew sk *my-msgbox-skip-symlist* :test 'string=) (add-hook '*post-command-hook* 'reset-my-msgbox-skip)
951 :
続き :2008/04/13(日) 17:22:01 ID:inSJf2iy
(multiple-value-bind (result data) (dialog-box `(dialog ,x ,y ,w ,h (:caption ,(concat "msgbox : " sk)) (:font 10 "MS Gothic") (:control (:button IDOK "OK" #x50010001 ,10 ,(- h 14 1) 25 14) (:button skip "Skip(&S)" #x50030000 ,(- w 45) ,(- h 14 1) 35 14) (:edit view nil #x50b110c4 1 1 ,(- w 2) ,(- h 16 2)) )) (list (cons 'view (substitute-string (apply #'format nil fmt (list args)) "\n" "\r\n"))) nil) (when (eq result 'skip) (setf (symbol-value (intern sk)) t)) :ok)))))) (export 'my-msgbox) (in-package "user")
使い方はこんなで (let ((foo "foo") (bar "bar") (hoge "hoge") (huga "huga")) (dotimes (x 5) (my-msgbox foo bar)) (dotimes (x 5) (my-msgbox hoge huga :width 300 :height 200 :x 200 :y 200 :fmt "~{~A~%~}" :skip "skip2"))) :skipは重複しない文字列を入れて下さい。
>>129 のメニューが使えなくなる現象が結構頻繁に出るんですが、皆さんはそういうことは無いでしょうか?
メニューだけでなくマウスも効かなくなってしまうのですが(xyzzyを再起動すると直る)。
>>953 俺は一度もないな
メニュー自体ほとんど使わないから参考になるかわからんけど
>>953 俺もメニュー色々追加してたらそんな感じになったよ。
俺の場合はメニューそのものがでなくなったりもしたけど。
原因は他のメニューと競合してたのが多かった気がする。
とりあえず*init-app-menus-hook*をnilにして起動して、
少しずつhookしてあった奴を戻して原因を探ってみては?
>>954-955 どうもです。
特定の操作を行った場合に発生するのなら振り分けは簡単だけど、どのタイミングでなるかがわからないから
やっかいなんですよね。
適当にlispを書いて再ダンプした直後になったり、色々と弄っているときになることが多いような気がする。
メニューが出ないのはhistory関係などでこの問題とはちがっている気がします。
他のメニューと競合ということで原因がはっきりしたんですか?
(length *init-app-menus-hook*)
としたら35と出たので追加しすぎなのかな...
>>956 俺の場合ははっきりした。
マウスが利かなかったときはどこかのループ処理がおかしかったり。
君と同じ原因とは限らないけどね。
>>957 キーバインドは普通に使えたのでループ処理では無いと思います。
メニューが使えないだけでなく、マウスホイールによるスクロールができず、右クリックでメニューが表示されず、
バッファバーからバッファの選択もできない状態になったということです。
キーボードからnext-bufferなどは普通に使えるし、キーボードだけで動かすことはできるのですが、やはり不便
なのでC-x,C-cで終了して再起動するとマウスも使えるようになりました。
どの拡張が問題と特定できているなら公表してもらえませんか?
今再現しました。 今回はマウスによる文字列の選択、マウスホイールによるスクロール、バッファバークリックによるバッファの選択、 ツールバークリックによる関数の実行はできています(これらができないときもありました)。 画面上部のメニューをクリックしてもメニューが展開されず、右クリックメニューが表示されず、M-x apps-popupも 無効という状態です。 それと、Alt+Tabでアプリケーションの切替えは出来るのですが、タスクバークリックによる切替えをしようとすると タスクバーが点滅してしまい数回クリックしないと切替えができなくなっています。 セキュリティーセンターのアイコンをクリックしてメニューを表示させてもタスクバーをクリックするとメニューが閉じる はずですが、セキュリティーセンターを開くなどを実行しないとメニューが閉じない状態です。 常駐させているアプリケーションをすべて終了させても状況は変わらず、プロセスも無効にできるものは無効にして みようと思っているところです。 タスクの切り替えなどにも影響が出ているので、マウスが押しっぱなしになっているような状態なのかもしれません。
メニューが変になった事はないな。 ミニバッファでの入力を途中で辞めてマウスに移すとおかしくなるとか read-charでキーボード使うと、キー押すまでマウスが聞かなくなるとか そういう”仕様”っぽい動作なら在るけど
>>959 siteinit.l(c) にメニューをいじるコードを書いているのなら、それらのコードを
.xyzzy に移して再ダンプして実行してみたら問題が起こりにくくなるかも。
>>961 ありがとうございます。
SetForegroundWindowがループ実行されているような状態だったと思うのですが(キーバインドは生きているので
lispでのループではない)、ダンプファイルに含まれると問題が起きやすくなるということでしょうか?
結構頻繁に問題が発生したので*app-menu*に項目を追加しているコード(サブメニューも含めると200項目程度)を
ごっそり別メニューに置き換えてツールバーから表示するようにしてみました。
これでしばらく様子を見ようと思います。
メニューが効かなくなるのはわりと有名ではないでしょうか。 サクッと修正して報告したいのに、スキル不足でできないのが哀しいところ。
>>963 とりあえず
>>962 のようにしたら今のところ問題は発生していません。
多分Cのレベルで*app-menu*の項目が多いとメニューを展開するところでループになっているような感じなのかな
と想像したりしています。
メニューを使うなら*app-menu*にはあまり追加せずに、別メニューにしてキーバインドやツールバーなどから呼び
出すのがいいのかもしれません。
これは良いニュースですね netinstallerへも復帰お願いします
968 :
名無し~3.EXE :2008/04/20(日) 14:39:34 ID:uvRYQORy
ウインドウ右下に時計と日付が表示されていますが、titile-bar-formatの ようにカスタマイズ可能なのでしょうか? 時計と日付だけじゃもったいないので、曜日も入れたいとおもってるんですが。
969 :
名無し~3.EXE :2008/04/20(日) 17:37:33 ID:Bmlqa6ew
twitter-modeでupdateすると 不正なデータ型です:nil:string と表示されるの俺だけ?
>>968 ; ステータスバーの日付に、曜日を表示。
(setq *status-bar-format* "%T")
971 :
969 :2008/04/20(日) 19:55:19 ID:nt2CJygb
ちなみにスタック。一部マスク。
junk-libraryとxml-parser-modokiはnetinstallerで導入済み。
>CALL STACK 14: (system:make-string-chunk nil)
>CALL STACK 13: (system:*byte-code ...)
>CALL STACK 12: (junk::string-length nil)
>CALL STACK 11: (system:*byte-code ...)
>CALL STACK 10: (junk::junk-http-request-send "twitter.com" "/statuses/update.xml?status=teest&source=twitter-mode"
"POST" :port nil :headers (("Accept" . "*/*") ("Authorization" . "Basic xxxxxxxxxxxxxxxxxxxxxxxxxxx")
("X-Twitter-Client-Url" . "
http://www7a.biglobe.ne.jp/~hat/xyzzy/twitter/twitter-mode.xml ") ...) :post "status=teest&source=twitter-mode")
>CALL STACK 9: (system:*byte-code ...)
>CALL STACK 8: (junk::junk-http-get-url "
http://twitter.com/statuses/update.xml?status=teest&source=twitter-mode "
:headers (("Accept" . "*/*") ("Authorization" . "Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
("X-Twitter-Client-Url" . "
http://www7a.biglobe.ne.jp/~hat/xyzzy/twitter/twitter-mode.xml ") ...) :post "status=teest&source=twitter-mode")
>CALL STACK 7: (system:*byte-code ...)
>CALL STACK 6: (twitter::http-download-file "
http://twitter.com/statuses/update.xml?status=teest&source=twitter-mode "
"D:/Application/Xyzzy/.twitter/usarname/statuses/update.xml" nil :headers (("Authorization" . "Basic xxxxxxxxxxxxxxxxxxxxxxx")
("X-Twitter-Client-Url" . "
http://www7a.biglobe.ne.jp/~hat/xyzzy/twitter/twitter-mode.xml ") ("X-Twitter-Client-Version" . "0.0.0.2-alpha") ...) :post "status=teest&source=twitter-mode")
>CALL STACK 5: (system:*byte-code ...)
>CALL STACK 4: (twitter::statuses-update "username" "password" "teest")
>CALL STACK 3: (system:*byte-code ...)
>CALL STACK 2: (#<lexical-closure: twitter::summary-update>)
>CALL STACK 1: (command-execute twitter::summary-update)
不正なデータ型です: nil: string
junk-http-get-url から junk-http-request-send に渡される引数は :post じゃなくて :data が正しいような
973 :
969 :2008/04/20(日) 22:47:55 ID:nt2CJygb
完全にまっさらな状態からインストールしなおしたらうまくいきました。 パッケージ一覧の更新が更新されたように見せかけて 更新できていなかったようで(twitter-modeがnetinstallerに追加されていなかった) その辺も含めて治りました。 拡張の入れすぎとかsiteinit.lの肥大化が原因でしょうか? 失礼しました。
ni::view壊れてるな
975 :
968 :2008/04/22(火) 19:07:41 ID:yZarF+1b
>>970 ありがとうございます。
ステータスバーのカスタマイズはかなり限られてるんですね・・・。
この場所はかなり活用しがいがあると思ったのですが、
やれることが少なくて残念です。
>>975 つうかリファレンスにかいてあるじゃん。
t 時計
p カーソル位置
c カーソル位置の文字コード(内部コード)
u カーソル位置の文字コード(ユニコード)
T 時計(曜日入り)
使用例:
(setq *status-bar-format* "cupT")
自分としてはタイトルバーに天気予報を表示したり、Winampの曲名を表示したりしてるけどね。
twitter-modeでミニバッファでupdate後にバッファに戻ったときにIMEがONのままなのが めんどうなんですが、ミニバッファとバッファで別々にIMEの状態を保持できませんか?