1 :
名無し~3.EXE :
03/10/29 11:24 ID:hPHI6m58 亀井さん作成のエディタxyzzyのスレです。
過去ログや関連サイトなどは
>>2-10 あたり。
4 :
名無し~3.EXE :03/10/29 11:54 ID:hPHI6m58
忘れてた。 以上です。
乙かレーション
7 :
名無し~3.EXE :03/10/31 01:44 ID:sW4daGFr
モロトミ ヤスミツ 【ヨコチン大使】 〜伝説から神話へ〜 体育館で自らヨコチンを曝け出し、「汚い」「触るな」と虐められ泣かされていた。 その日を境にあだ名は【ヨコチン大使】になる。 「先生。○○君がヨコチン大使って言うねん」と朝の会で皆の前で泣き叫んでいた。 彼はまるで銀幕スターだった。銀シャリ食べたい。
局所ニュースさん復活してたのねしらんかった。 でも<noscipt>が閉じられてないのでIEでしか見えん…。
~/.www にイカを書いても *WWW SRC などのバッファタブが 表示されてしまうのは なぜなんでしょうか. (setq www::*www-buffer-name-prefix* " *WWW ")
>>9 (setq *www-buffer-src-prefix*
(concat *www-buffer-name-prefix* "SRC: "))
を書けば消える。
表示されているバッファの prefix が*www-buffer-name-prefix* でないだけの話。
>>10 ああ,そうか. thxです.
今 dolist を元に (donlist (varlist listform &body body)...) なるものが見当たらないので,
がんばっているのですがうまくいきません.期待する動作としては,,,
(donlist ((a b c) '(x y z z y x))
(format t "~A ~A ~A~%" a b c))
x y z
z y x
nil
という結果が欲しいのですが.ぜんぜんうまくいきません.
>>11 めっさ適当。
(defmacro donlist ((varlist list) &body body)
(let ((lst (gensym)))
`(let ((,lst ,list)
,@varlist)
(loop
(when (null ,lst) (return))
,@(mapcar #'(lambda (x)
`(setf ,x (pop ,lst)))
varlist)
,@body))))
13 :
11 :03/11/01 18:24 ID:JWXhq8H3
>>12 ありがとうございます. ,@ は便利ですね.gensym は,こういうの
必要じゃないのかと思いながらマクロ書いてました.勉強になりました.
dolistみたくreturnformだけ追加して使います.ありがとうございました.
Wikiに神が現れたもより
15 :
名無しさん :03/11/03 15:26 ID:DkPqRtXQ
前スレが1000になってしまったのでもう一度…。 katexの最新版をいれるとTeXのコメントに色がつかなくなるのは 私だけでしょうか?
16 :
名無しさん :03/11/03 18:33 ID:+P0KRV7J
17 :
名無しさん :03/11/03 22:33 ID:PKokjLf5
>>16 そうですか・・・。
インストールしなおしてみようと思ったら、バイトコンパイルのところで
`return-from'のキャッチャを参照できません: nil
とエラーメッセージが出てしまいます。
elisp.lはコンパイルできていますがemacs.lの途中でエラーが出ているようです。
c-modeで #define XXX \ xxx1, \ xxx2, \ xxx3, \ xxx4, \ みたいにした時ってインデント変になりませんか? # define XXX \ xxx1, \ xxx2, \ xxx3, \ xxx4, \ だと一見普通に見えるけど 最後のxxx4, の末尾の','の有無で変わるような。 どこを直したらいいのか全然わかりません。
19 :
名無しさん :03/11/03 23:47 ID:+P0KRV7J
>>17 ML で話題に上っていましたが一度 katex (emacs.l ?)を読み込まないようにしてから
バイトコンパイルしてみてください.
>>18 ほんとだ。変だね。
でも、calc-c-indent って組み込みらしいから簡単にはいじれないね。
21 :
名無しさん :03/11/04 01:15 ID:ohTCnWGj
>>19 ありがとうございます。
install.txtに書かれている「最終的に、」のあとの部分を
siteinit.lから削除してやってみました。
するとload-library katex/katexinsのところで
elispが見つからないといわれました。
それで、次に(require "elisp")だけを.xyzzyに追加してもう一度やってみると
今度はmakefileが見つからないといわれてしまいました。
load-pathにsite-lisp/katexを追加するコードを.xyzzyに追加してやると
load-library katex/katexinsをやると、今度は通って、
バイトコンパイルをすると
>>17 と同じエラーが出ます。
なぜでしょう。
一応Meadow+YaTeXも使えるようにはしてあるのですが、
これが気になってなかなか原稿が書けません。
と、責任転嫁して心の平穏を保ってみる。
22 :
名無しさん :03/11/04 02:16 ID:SRB1bBVk
>>21 私は siteinit.l から件の部分を削除して xyzzy.w?? を作り直す.
.xyzzy に (pushnew "~/site-lisp/katex" *load-path*) だけ入れて xyzzy を起動して.
load-library katex/elisp
load-library katex/katexins
elisp::katex-byte-compile
としたらば大丈夫でした.
励ましあうほうで続けるのが適切かしら?
23 :
名無しさん :03/11/04 03:02 ID:LseIyFd2
>>22 > 励ましあうほうで続けるのが適切かしら?
すみません。励ましあうほうで励ましてください。
前スレで(励ましあう方だったかな?)要望を書き込んだ者ですが、 Netinstallerの配布サイト自動更新、すばらしいです! 作ってくれた方、ありがとう!
ファイラーでダブルクリックするとファイルが開かれるのをやめて なにもしないようにしたいのですが、どうすればできるでしょうか?
ファイラーでダブルクリックしない。
28 :
名無し~3.EXE :03/11/04 21:50 ID:c7FcRMhQ
26と27の寿命がそれぞれ一年ずつ縮みました。
29 :
名無し~3.EXE :03/11/04 21:56 ID:Ij4+1zBX
まじで、filer をマウスで操作するくらいなら OS 附属の explorer 使った方がよいと思う
30 :
名無し~3.EXE :03/11/05 00:44 ID:KYqFwcQf
katexを使うときに、数式環境内で記号補完をしようとすると固まってしまいます。 なぜでしょうか。。。。 バイトコンパイルとかは普通に通ったのですが。。
31 :
名無し~3.EXE :03/11/05 17:17 ID:iKrujrt1
libTest.dllに以下のような関数があって int __stdcall callbackTest(int val, int (*fn)(int)) { return fn(val); } lispから以下のようにすると (c:define-dll-entry c:int callbackTest (c:int (c:void *)) "libTest") (c:defun-c-callable c:int callback ((c:int val)) (* 2 val)) 次の命令で落ちてしまいます。 (callbackTest 8 #'callback) 原因わかる方いますか? 別にdllを利用しようとして困ってるわけではないんですが、 wip/hellowin.lなんかでウィンドウプロシージャをlispで書いている例があったので、 自作のライブラリのコールバック関数にlisp関数を使えるかなーと思ったので。
英辞郎(www.alc.co.jp)の仕様がまた変わりましたね. これ自体はeiliro.lをちょいちょいっと書き換えればいいことなんですが, 今回からフォーカスがブラウザ側(browserex.l使ってます)に移ってしまうようです. 正確にはブラウザにある単語を入力するフィールドにフォーカスが移っています. 以前のようにフォーカスをバッファに留めておく, もしくはブラウザ側からバッファに戻す方法はないでしょうか?
>>32 あります。
※ sleep-forする時間は調節してください。
(c:define-dll-entry (c:void *) set-focus ((c:void *)) "user32.dll" "SetFocus")
(defun ie-eijiro (from to)
(interactive "r")
(if (= from to)
(progn (message "単語を選択してください") (return-from ie-eijiro nil)))
(long-operation ; 砂時計
(let ((str (si:www-url-encode (buffer-substring from to))) type url)
(setq url (concat "
http://www2.alc.co.jp/ejr/index.php?word_in= " str
"&word_in2=%82%A0%82%A2%82%A4%82%A6%82%A8"
"&word_in3=b645FDPrFJqCbRfXW8"))
(popup-navigate-for-eijiro url)
(sleep-for 1)
(set-focus (get-window-handle)))))
(popup-navigate-for-eijiro url)
(sleep-for 1)
(set-focus (get-window-handle)))))
更新すべきかせざるべきか…
>>34 すみません。コードの下から3行分はごみです。
eijilo.l で英辞郎を使おうとすると「トップページからやれ」と 言われるのですが、みんな使えてるのですか。
>>31 int __stdcall callbackTest(int val, int (__stdcall *fn)(int))
>>36 eijilo.lの該当部分を
>>34 のように書き換えれば"とりあえず"使えます。
>>38 おー。なんか自分で調べずすまん。
いや、なんかフォーカスだけが変わったのかなーって。ごにょごにょ。
40 :
hoge :03/11/07 01:58 ID:r5iGn1Px
既出ならスマソです。 検索する時の単語単位の区切りに _ が含まれないようにする方法が知りタイのレス
>>40 これを _ で区切られたくないモードのフックに引っかける
(set-syntax-word (syntax-table) #\_)
calmemo howm wikilog rd-memo changelogmemo オマエらどれ使ってる。 漏れはrd-memo, changelogmemo, howmだべさ。
>>42 そろそろどれかが本命としてメジャーになってくれないかな。このジャンルは
決定版がないからとっつきにくいわ。
44 :
hoge :03/11/08 09:59 ID:c6ptg+Nu
howmをとりあえず入れてるけど、使い方になれるまでがめんどいね。 簡単なメモ程度ならhowmが一番使いやすそうで、 ある程度の分量になったら、普通に.txtにしてまとめてる。 rd-memoならhtml変換できるんだっけ?
>>45 RDで書くんだから RDToolsで変換できるよ。
あんま関係ないけど RDを楽にワード形式に変換する方法ってないのかな? 出来たらいろいろ便利なんだが……
OLE駆使すればできるでしょ。
メタファイル書いてもいいかもな
>>42 rd-memoからhowmに移行中。
>>43 「どのエディタがいい?」って聞かれている気分。
使い方や好みによっては、自由度が低い方が
メモとして優れていることもあるだろうに。
まあ、最大公約数的にはhowmかなとは思う。
迷ってるならhowm使ってみ。
もしくはツールに頼らず、慣れたエディタとOSで
そのままメモ取りしてみるとか。
そうすれば、どんな機能が欲しいのかはっきりするんでない?
>>52 rtfのこと?
この際誰かrd2doc-mode書いてください。 オレはOLEわかんね。
>>54 書くなら普通にrubyで書くんだろうけど。
ふむふむ、54が書いてくれると。
>>54 この際あなたがOLE覚えて作ってください
しかしなぜモード?
マウスで文字をクリックした時に 左半分ならその文字に 右半分なら次の文字に カーソルが移動するような そんなエディタになってほしい
そんなエディタに 私はしたい じゃないのかよ。ポエムっぽくて笑ったけど。
howm-wrapperはhowm-1.1に対応するのかしら。
亀井さんて元気なの?
>>57 うわほんとだ。メモ帳なんかはそういう動作すんだな。
ぜんぜん知らんかった。んでこれってどう便利なの?いまいちわからん。
>>61 四捨五入的って感じ?
マウスでキャレット移動しないから興味ないけどなー。
>>60 /ヽ | i i ヽ \ \ o *
__/ ヽ_ / | | | \ ヽ ヽ . .
\ / / / / ヽ | |+
. | ∧ | / / / | | |. . .
レ \| / / / | | | 。. ★ ☆
| | | | 。. .
| | | /\ /\ | . ☆ +
. | | | ..::::::::::::... ..:::::::... | +
| | | * ー―――― / . . ☆ 絵里は元気だよ。
/ / γ´~⌒ヽ. /☆ . * +. .
/ / / ヽ /⌒ヽ
>>61 ポインタが「I」の形だから、直感的に分かりやすいかな?
まあメモ帳の場合はキャレットも「I」みたいな形だからそうしてるんだろう。
ちなみに俺もそういう挙動のほうが嬉しい。
,,,,,,---ー---、、、
,.-'";:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:ヽ、
,,.;;;::;:;:;:;::;;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;!i`ヽ
/;:;:;:;:;:;:;:;:;:;:;:;:!!!!!!!!!''""":::;!!!!ノヾ;:;:\
/;:;:;:;:;:;:;:;:;::!!''" !;:;:;:;:;ヽ
|;:;:;:;:;:;:;:!'" ヽ;:;:;:;ヽ
|;:;:;:;i''" i!;:;:;:;|
|;:;:;:;| ヾ;:;:;:|
|;:;:;:;| ,,,;;:iii;;;;; ,.-==--、. `!;:;|ヽ
〉;:;:| ,.-''" ̄ ̄ ̄`ヽ⌒| --。、-、 ヽ-`' |
>>60 i `u i -‐'"ヾ'" :: ::! : | ノ 私は元気です。
i | ノ ヾ、___ノ ::|
| | ヽ、__,.-i i 、 : :|
| | : : '" `〜ー〜'" ヽ : : ::|
`i ヾ ' ____ ;: ;: :|
\ -‐'''"~ ̄ ̄ ̄ ̄ ; ;: :/-、_
ヾ: : . ` " " " ,./ `ー-、
,,,--'\: : ,. ,.イ
_,.-‐'" |`ヾ;:;:ヽ....、 : : : / !
_,.--‐'" | `ー、;:;:;:;:;:;:;:;:;:;:,.-''" |
| `>ー‐< /
! / ,.'"\ !
| /~i / `/
>>54 むりにdocを吐かずに、Wordのコンバータがそれっぽく処理を
してくれるようなHTMLを吐くのではダメなの?
どんなHTMLを吐けばいいのかわからんけど。
>>59 VerUp に気づいてませんでした。
今取りかかってますが、emacs 独特の(エディタとしての)
機能が使われているようで、どこまで再現できるか怪しい感じです。
現在の(point)が直前のタブストップから何文字目かを調べるのは どうやるんでしょう. あとタブストップは *tab-columns* で指定する以外にも,*tab-stop-list* が textmode.l で定義されているのですが,両者の関係はどうなっているんでしょうか. どういう条件で *tab-columns* がの値が使用され,どの条件で *tab-stop-list* の 値が使用されるのかがよくわかりません.
howmの質問なんですけど、メニュー画面内のToDoリストのDoneしたやつってずっと消えないんですか?
>>72 > 現在の(point)が直前のタブストップから何文字目かを調べるのは
> どうやるんでしょう.
(mod (current-column) (tab-columns)) かなぁ〜
# ローカルなタブの幅を得るにはどうしたらいいんだろ?
> あとタブストップは *tab-columns* で指定する以外にも,*tab-stop-list* が
> textmode.l で定義されているのですが,両者の関係はどうなっているんでしょうか.
> どういう条件で *tab-columns* がの値が使用され,どの条件で *tab-stop-list* の
> 値が使用されるのかがよくわかりません.
両者の関係は皆無(たぶん)
*tab-columns* タブコードの表示桁のグローバルな設定値
*tab-stop-list* 関数tab-to-tab-stopで使われる。
(タブコードが一つ挿入されるとは限らない)
>>74 ありがとうございます.大体分かった気がします.
tab-to-tab-stopとこれが使われているところ,それに
untabifyを読んで自分なりに確認してみました.
> ローカルなタブの幅を得るにはどうしたらいいんだろ?
(tab-columns (selected-buffer)) のようです.
MS-IMEがローマ字入力ではなく仮名入力でオンになっているときに M-fのようなM-で始まるコマンドを打つと, たとえばこの場合なら, 単語一個分前に進むのではなく「ハ」と表示されてしまうのですが, これって既出ですか?
ほんとだね.既出ではないと思うけど,特に対応してもらわなくても(ry
On Lisp のサンプルコード. xyzzy上で以下のコードだけエラーが出て 定義できなかったんだけど,なぜでしょう (define-modify-macro concnew (obj &rest args) (lambda (place obj &rest args) (unless (apply #'member obj place args) (nconc place (list obj)))))
わざわざ両方(xyzzyがわからないヤシ)に貼り付けて何が言いたいんだおまいは。
>>78 ほんとだ。
define-modify-macro の展開時に引っかかってるみたいだけれど……
setf.l 302 行目、
(return ``(setf ,reference (,',function ,reference ,,@nreverse ,(cadr l)))))
ここが展開時に引っかかってる?
他の define-modify-macro 使ったサンプルコードは動きました?
incf やら decf が動いてるんだから、うまく展開できるときとできないときがある、
てことなんだろうけれど。何だろう?
perl モードを無効にする方法を教えてください。 perl.l ファイルを移動しただけではエラーが起こってしまうのです。
>>83 (pushnew '("\\.pl$" . text-mode) *auto-mode-alist* :test 'equal)
とりあえずこれを .xyzzy にでも書いたらどうよ
>>83 こっちのほうがいいかも
(delete-if (lambda (x) (eq 'perl-mode (cdr x))) *auto-mode-alist*)
86 :
83 :03/11/16 10:45 ID:rVkGLj9J
なぜか.xyzzyファイルは働かないので
siteinit.lの方に
>>84 を書いたらうまくいきました
(
>>85 の方はエラーがおきた)
どうもありがとうございました
85ではないが、 (delete-if #'(lambda (x) (eq 'perl-mode (cdr x))) *auto-mode-alist*) ならいけるかと。
Mozilla Firebird0.7(Win)でRSS Reader Panelというプラグインを使ってWikiの RSSを読み込もうとすると、XMLパースエラーってのが出るんですけど、これ直り ませんかね?どちら側の不具合なんでしょう?
そのプラグイン入れて試してみたけど、俺も同じ症状だ。 他のところのRSSだと大丈夫。
siteinit.lに (setq *default-buffer-mode* 'lisp-interaction-mode) とかくと,スタックオーバーフローするのはなぜでしょう
ちなみにこれでもなる (setq *default-buffer-mode* 'lisp-mode)
emacs vs vi スレでめどぅ厨とバトり始めたのはここのヤシラか?
違うよ。ここはviはおろかemacs、Meadowすらほとんど話題に上らない。 究極の「我が道を行く」ソフト及びスレ。
現在のモードを,新規に作成したバッファにも適用できますか? grep結果を検索元のバッファとモードと同じモードで表示させたいのですが
ここはemacs系でも一番伝統とか実績に興味ない人の集うスレだろうからなあ。 自分が一番使いたい機能がある、実現できるエディタを使えば良しって感じ。
linux zaurusでxyzzyを使いたいのですが、移植できないでしょうか?
頑張ってしてください。
>>97 LinuxならXEmacsとか移植した方がよくない?
既にありそうだけど。
冗談抜きで Linux 上に xyzzy がほしい。
103 :
名無し~3.EXE :03/11/20 15:39 ID:n2Sqhp7M
エディタより エディタで何を作るかの方が大事ではないのか? そこのところをここの人間は間違えているのではないか? とおもったぞ。
いや、手段と目的が入れ替わってこそエンジニアだと思うが。
>>102 改行規制に引っかかって鬱.
直したい部分もあるので,修正後に公開します.
まだ先になりますが.
>>70 「emacs 独特の機能」ってどのあたりですか?
NetBIOS名.lというファイルを作成しておいて、.xyzzyの最後で ディレクトリ等、マシン固有の設定を記述するようにしたら便利かと思っているのですが、 現在使用しているPCのNetBIOS名を取得することは可能でしょうか?
108 :
107 :03/11/20 21:37 ID:BliIhEel
「.xyzzyの最後で」は「.xyzzyの最後で読み込み、」の間違いでした
109 :
名無し~3.EXE :03/11/20 22:06 ID:DldsUfTq
2ch-mode で、sports2鯖にある板に書きこめないんですが(クッキーがどうたらと言われる)、 どうしてでしょうか。
>>107 (require "foreign")
(require "wip/winapi")
(c:define-dll-entry winapi:DWORD GetComputerName (winapi:LPCSTR winapi:DWORD) "kernel32" "GetComputerNameA")
(let* ((sz 500)
(name (si:make-chunk nil sz)))
(GetComputerName name sz)
(insert (si:unpack-string name 0)))
でもごめん、これはAccess violationで動かない。
112 :
111 :03/11/20 22:45 ID:10c8vrOI
>>107 こうかな?
(defun get-computer-name ()
(unless (fboundp 'GetComputerName)
(require "wip/winapi")
(c:define-dll-entry c:long GetComputerName
(winapi:LPSTR (winapi:DWORD *)) "kernel32.dll" "GetComputerNameA"))
(let ((buf (si:make-chunk nil 15))
(size (si:make-chunk nil 4)))
(si:pack-int32 size 0 15)
(if (GetComputerName buf size)
(si:unpack-string buf 0))))
115 :
114 :03/11/20 23:13 ID:pGlK06l/
WikiのRSSがFirebirdで読めるようになりました。 結局原因が判らずじまいだったんですが、直してくださったんでしょうか? ありがとうございました。
117 :
107 :03/11/20 23:31 ID:BliIhEel
>>110 ありがとうございます。
自宅のXP HOMEで動作確認したので、明日は職場の98SEで試します。
ところで111さんが書いてくれてる方法なのですが、
こちらはAccess violationでxyzzyごと持って行かれちゃうんですね。
初めて見た事象で、自宅で一人笑ってしまいました。
114さんのはウチでは正常動作しています。
>>117 そのへんは, (user-name) (machine-name) (get-env "USER") などの結果を
condで分けて書くのがいいかと.(os-platform) もありますね.
119 :
118 :03/11/21 00:55 ID:vmPerKMF
(si:getenv "USERNAME") でした.やっぱり確認しないとダメだ
たまに話題に出るけど,分かりやすいdiffを作るのは難しい.あきらめろ
あらら、そうなんですか…。 では要求のレベルを下げて単純に行内の違う文字が太字だけでもいいです。どうでしょうか。
123 :
109 :03/11/21 21:44 ID:I08V1VQ0
スルーされちゃったけど、もうちょっとだけ。 IE からなら書きこめます。 この鯖は他の鯖といろいろ仕様が違うので、クッキーの仕様も違うのかなとか 思ってるんですが。 sports2鯖上の板の例: ・ラウンジクラシック ・イラク情勢 ・年末年始番組 ・ワールドカップ 上記はいずれも×です。読むのは問題ありません。 他の鯖の板なら、(ここもそうですが)普通に書きこめます。 全鯖で確認したわけではありませんが。 他の人は問題ないのかなあ(泣
>>122 両方とも set-text-attribute で同じように指定できるので,要求が全く下がっていません.
diff のコアはlispで実装されてなく コマンドの diff を呼び出してその結果を解析しているだけ
なので,コマンドが吐き出す情報に従い任意の色付けすることは可能ですが,その出力結果を自分で
調べる必要があります. そのように色付けして欲しいなら,そのような出力をする diff を自分で
探して,その正確なフォーマットと,現在対応しているdiffのフォーマットの違いを正確に説明すれば
だれか優しい人がそのような diff を作ってくれるのではないでしょうか.
質問ですが,aproposでできるバッファで jump-tag をしたいと思っています.
とりあえず *Help* バッファを lisp-mode にしようと思うのですが以下のコードではうまくいきません.
どうすればいいか,だれか知恵を授けてください
(user::encapsulate 'ed::apropos
'apropos-lispmode
'((interactive)
(apply user::basic-definition user::argument-list)
(lisp-mode)))
125 :
122 :03/11/21 22:39 ID:ahLzeDVL
diff コマンドの結果を解析するだけで出来ると思うのですが…。 lisp は知りませんが、diff.l を見た感じ、まず冒頭の +, -, ! を見ていますよね。 それに続く文字列を比較すればいいだけですよね? perl/PHP なら新しい行を $new_line、古い行を $old_line として、 その 2 つを substr() で一文字ずつチェックして違うところから (HTMLなら) <b> を入れて…という感じですよね?
>>125 > その 2 つを substr() で一文字ずつチェックして違うところから (HTMLなら) <b> を入れて…
そこまでは分かる。問題はその後じゃない?
行末まで違うとみなしていいなら、今のと大して変わらないし、
そうでないのなら、どうするの?
というか欲しい人が作ってください。期待して待ってます。
>>124 てきとーですが、こんなとか。
(defun apropos-lispmode (string &optional print-key pred)
(interactive "sApropos(Regexp): \np")
(apropos string print-key pred)
(set-default-directory "~/lisp/" (selected-buffer))
(lisp-mode))
そのままだと書けませんね。>sports2系 sports2だけはひろゆき用の実験鯖だとかで他の鯖とは大きく仕様が違いますが、 発行しているクッキーも違うはずです。
128 :
124 :03/11/21 23:49 ID:aCiqCA8O
>>126 thxです. 参考になりました. aproposの定義コピーしてきて何とかできたんですが,
こっちのほうがいいですね.
encapsulate は interactive で入力待ちになる関数にはあまり向いてないんですかね.
便利なので時々 使うのですが,こういうのはダメなのかな.
しかし tag jumpに (set-default-directory "~/lisp/" (selected-buffer)) を指定するというのは
よく知られたことなんですか? 必死に探して create-tags-buffer を再定義し, ファイル名無しの
バッファに対してデフォルトのディレクトリを指定するようになおしました.でも これでいいのか,
自信ないです. find-tags-buffer も怪しい.
一応,こっちのほうが汎用的なので tag jumpはこのままいきます.
lisp-mode は色づけと tags-find-target の指定と,info が使えるようになったので便利になりました.
ありがとうございました.
メモリの消費量を出来るだけ少なくして軽量化しようと思っています。 今は起動時に9.2MB消費してます。 何かいい方法があれば教えてください。
>>128 ついこの間こんなの作った。
(defun jump-tag-other-directory (jump-command)
(let (nbuffer
(buffer (selected-buffer))
(dir (default-directory)))
(unless (and
(file-exist-p (merge-pathnames *tags-file-name* "."))
(funcall jump-command))
(unwind-protect
(dolist (l *tags-file-alist*)
(and (eq buffer-mode (car l))
(dolist (f (remove dir (cdr l)) test)
(cd f) (message f)
(setq test (funcall jump-command)))))
(set-default-directory dir buffer)))))
(setq *tags-file-alist*
(list
(cons 'lisp-mode
(list
(merge-pathnames "lisp" (si::system-root))))
(cons 'lisp-interaction-mode
(list
(merge-pathnames "lisp" (si::system-root))))
))
>>125 >>126 行頭から走査して始点を確定して、行末から走査して終点を確定するとか。
行中に二カ所以上の変更点があった場合にはちょっとおかしくなるけれども、
必要十分な結果は得られると思われ。
howm1.1出ましたね。入れた人います?
>>131 違いが出てきたらどこまで違うか照合するのはどうでしょう。例えば
aaabbbxxxと
aaacccxxxという行で考えればaは無視し、bの所を記憶しxが出たら中止。
>>133 そしてxが出てもまた違いがないか再帰で調べる、と。
>>132 現状のwrapperでは動かないはず(Test版は動かなかった)。
今、
>>70 の神が対応中のはず。
137 :
124 :03/11/22 20:52 ID:AO8btrNB
>>136 モード毎にディレクトリを指定できるわけですね.jump-command は jump-tag とかを
与えるので いいんですか? いいですねこれ.
>>136 大した知識もないのにこれから普通にインストールしようとしてました。
対応を待とうと思います。Wrapper作者様、どうぞよろしくお願いします。
139 :
109 :03/11/23 00:19 ID:uVxRFfOu
sports2鯖問題、とりあえずなんとかなりました。 過去ログのどこかに 「クッキー確認のページに<!-- 2ch_X:cookie -->が無いのが原因」 とあったので、http.lに (defconstant *post-result-cookie2* (regexp-quote "<title>\x83\x4E\x83\x62\x83\x4C\x81\x5B\x8A\x6D\x94\x46\x81\x49</title>")) を追加、http-post 関数の↓を (cond ((string-match *post-result-cookie* body) ↓に変える。 (cond ((or (string-match *post-result-cookie* body) (string-match *post-result-cookie2* body)) ようするに、ページタイトル「クッキー確認!」でチェックしてるんですが、そのまま書いても string-matchの判定がうまくいかなかったので、わざわざこんなふうにしています。 で、問題なく書きこめるようになりました(たぶん)。 ほんとは鯖名も見たほうがいいだろうし、不安がなくはないけども。
140 :
名無し~3.EXE :03/11/23 06:30 ID:ayue4M8J
diff-detail あげ
141 :
124 :03/11/23 07:26 ID:lIIz9AkE
>>130 (defun jump-tag-other-directory (&optional (jump-command #'jump-tag))
(interactive)
(let (nbuffer ・・・として使ったんですけど
lisp-tags-find-target が何回も呼ばれてしまうんですけど、
この関数定義を変えて、カーソル直下に単語がなければミニバッファから
入力するようにしているんです。 書いてて自分だけの問題だと気づきましたが
入力を1回で済ます何かよい方法があれば、よろしくお願いします
こなんつくったけど、無意味? (defun indent-for-2ch (beg end) (interactive "*r") (save-excursion (save-restriction (narrow-to-region beg end) (goto-char (point-min)) (let (col) (loop (goto-bol) (when (re-search-forward "^[ \t]+" t) (setf col (progn (goto-char (match-end 0)) (current-column))) (delete-region (progn (goto-bol) (point)) (match-end 0)) (insert (concat (make-vector (truncate col 2) :element-type 'character :initial-element #\ )))) (unless (forward-line 1) (return-from indent-for-2ch))))))) (defun unindent-for-2ch (beg end) (interactive "*r") (save-excursion (save-restriction (narrow-to-region beg end) (goto-char (point-min)) (replace-buffer "^ +" "" :regexp t) (indent-region beg end))))
Web制作板の方のスレに面白いものがあるぞ。
144 :
130 :03/11/23 21:53 ID:aG+V/CNk
>>141 どんな関数定義をしてるのかわからないので、はっきりといえないが
素の lisp-tags-find-target の (goto-char opoint) の所の下に、
(if (string= "" name) (direct-tag-jump) を書くと、うまくいった。
便利なのでそのアイデアもろた。
145 :
130 :03/11/23 22:11 ID:aG+V/CNk
すまん
>>144 の追加のコードの最後に、) 一個追加
146 :
124 :03/11/24 03:34 ID:lOHi3lD3
>>144 こんなの定義しておいて,lisp-tags-find-target の中で呼び出しています.
direct-tag-jumpが分からなくて挫折中....
;; カーソル位置から文字列を取得する
;; prompt キー入力をと求める時のプロンプト表示文字
;; search カーソル直下に単語が無い時の動作
;; "strict" プロンプトから入力
;; "previous" 直前の単語で検索
;; "next" 直後の単語で検索
;; "ask" 直前の単語をデフォルトにしてミニバッファ入力
;; (確認付の previous)
(defun lookup-current-word (prompt &optional (search "strict"))
"カーソル直下の単語を検索"
(save-excursion
(or (and (pre-selection-p)
(buffer-substring (selection-point) (selection-mark)))
(cond ((syntax-word-p (following-char)) nil)
((or (equal search "previous")
(equal search "ask"))
(skip-syntax-spec-backward " ")
(skip-syntax-spec-backward "w") nil)
((equal search "next")
(skip-syntax-spec-forward " ") nil))
(and (syntax-word-p (following-char))
(let ((str (buffer-substring
(progn (skip-syntax-spec-forward "w_") (point))
(progn (skip-syntax-spec-backward "w_") (point)))))
(if (equal search "ask")
(read-string prompt :default str)
str)))
(read-string prompt :history 'search))))
147 :
130 :03/11/24 13:08 ID:drST81nX
>>146 ごめん、144のやつは状況によって、挙動不審になるね。
>>direct-tag-jumpがわからなくて
俺も tags.l の内容は挫折した。。。
俺の所ではこんなので動いたけど
やっぱどっかまずいかもしんない。
(defun ed::lisp-tags-find-target ()
(let* ((opoint (point))
(name (lookup-current-word ""))
(functionp (or (and (not (looking-back "#("))
(looking-back "("))
(looking-back "#'"))))
(goto-char opoint)
(values nil name functionp)))
148 :
124 :03/11/24 16:42 ID:MJkSJdn4
>>146 そのlisp-tags-find-target と以下の組み合わせで使ってます.
いいのか悪いのか分かりません..
(defun jump-tag-other-directory (&optional (jump-command #'jump-tag-with-result) other-window)
(interactive)
(let ((buffer (selected-buffer)) (dir (default-directory))
file rsl class name functionp opoint)
(unless (and
(file-exist-p (merge-pathnames *tags-file-name* "."))
(progn
(multiple-value-bind (rsl class name functionp opoint)
(funcall jump-command)
rsl)))
(unwind-protect
(dolist (l *tags-file-alist*)
(and (eq buffer-mode (car l))
(dolist (f (remove dir (cdr l)) test)
(cd f) (message f)
(setq file (merge-pathnames ed::*tags-file-name* ".")
test (if (and name (file-exist-p file))
(ed::jump-tag-1 file class name opoint functionp)
(funcall jump-command))))))
(set-default-directory dir buffer)))))
(global-set-key #\F4 'jump-tag-other-directory)
149 :
124 :03/11/24 16:44 ID:MJkSJdn4
>>147 にでした. つづき
(defun jump-tag-with-result (&optional other-window)
(interactive)
(long-operation
(when (and tags-find-target tags-find-point)
(let ((opoint (point)))
(multiple-value-bind (class name functionp)
(funcall ed::tags-find-target)
(multiple-value-bind (file point functionp)
(ed::tags-find-entry class name functionp)
(if file
(progn
(goto-char opoint)
(ed::jump-tag-1 file class name point functionp other-window)
(values t class name functionp opoint))
(progn
(message "Not Found")
(values nil class name functionp opoint)))))))))
150 :
130 :03/11/24 23:46 ID:fyaMpiOI
>>148-149 重ね重ねすまん
>>130 のコードが滅茶苦茶だった。下の方がましだと思う。
俺は、encap.l で、定義を置き換えてただけだから、まったく気づかなかったよ。
ただ、 *tags-filer-alist* に、複数のディレクトリを指定したときは、
ディレクトリ毎に呼ばれるのが、使い勝手が良くないかも。
(defun jump-tag-other-directory (jump-command)
(let* (nbuffer
(buffer (selected-buffer))
(dir (remove-trail-slash (default-directory)))
(list (remove dir (dolist (l *tags-file-alist*)
(and (eq buffer-mode (car l))
(return (cdr l))))
:test #'string-equal)))
(if (file-exist-p (merge-pathnames *tags-file-name* dir))
(pushnew dir list :test #'string-equal))
(unwind-protect
(dolist (f list)
(cd f) (message f)
(if (funcall jump-command) (return t)))
(set-default-directory dir buffer))))
151 :
124 :03/11/25 00:43 ID:SISxL/do
> ディレクトリ毎に呼ばれるのが、使い勝手が良くないかも。 そこなんですよね.. いっそのこと,カレントの XTAGS に見つからない時は もーど毎にXTAGSファイルをマージしてものを容易 or 生成してしまうとか. let* のとこの list はこっちのほうがいいかも. (list (cdr (assoc-if #'(lambda (x) (eq buffer-mode x) *tags-file-alist*))) 間違えてたらスマソ
152 :
130 :03/11/25 13:16 ID:152g4en3
> もーど毎にXTAGSファイルをマージ それが一番いい方法だと思うけど、タグファイルに書いてるパスが、 相対パスになってるのがネックになるかも。 > let* のとこの list はこっちのほうがいいかも. ありがとう。基礎がなってないのがばればれだね。
押すとポップアップメニューが表示されるようなツールバーボタンを作りたいのですが、 マウスカーソル位置にメニューを表示するような関数はないのでしょうか? track-popup-menu だとキャレット位置になってしまいます。
>>153 (track-popup-menu *my-popup-menu* :button2)
:button2 をつけるとうまくいくみたいです。
155 :
153 :03/11/26 18:09 ID:Pz0HZOTR
>>154 バッチリうまくいきました。
ありがとうございます。
xyzzy、ソースが公開されていると聞いたのですが 公式ページからリンクがないようです。 ソース非公開なんでしょうか?
(T_T)こんなんだっけかな
>>156 おおっぴらに公開しているというわけではないです。
でも反応がないからソース公開やめようかなぁ、って言ってますよね。
>>161 それはいやだなー.確かに見てもよく分からないけど,それでもたまに見るし.
一人で作ってるソフトってバグレポしにくいんだよね。 重大なものならともかく、細かい奴だとなんかケチつけてるみたいで やる気そいでしまったりしないかなぁ、と(´・ω・`) いやもちろん小心者である漏れが悪いわけだが。
>>163 むしろ逆。
一人だけだと、思考が固まって気付きにくくなる事があるから
他のレポートって結構助かるもの。
166 :
159 :03/11/28 21:06 ID:dMqZdjMI
ウワァァン
167 :
163 :03/11/28 21:44 ID:3gaG2ENg
>>159 バグレポする前に一応読んどくか…と思ったが…
_| ̄|○
デケデケ | | ドコドコ < howm-wrapperまだ〜〜? > ☆ ドムドム |_ _ _ _ _ _ _ _ _ _| ☆ ズボハメ ∨ ∨ ∨ ∨ ∨ ∨ ∨ ∨ ∨ ドシャーン! ヽ アンアンッ!! ♪ =≡= ∧_∧ ☆ ♪ / 〃(・∀・ #) / アヘアヘ ♪ 〆 ┌\と\と.ヾ∈≡∋ゞ || γ ⌒ヽヽコ ノ || || ΣΣ .|:::|∪〓 || ♪ ./|\人 _.ノノ _||_. /|\
=≡= ∧_∧ howm-wrapperマダ・・・? / |(・∀・| ) 〆 〃⊂ ⊂) .∈≡∋ || γ ⌒ヽヽコノ .|| || | .|:::|∪〓 .|| ./|\人 _.ノノ _||_ ./|\
ズレタ...
howm-initでhilit-face以外の色の設定しても日付に色が付かないっす。
174 :
70 :03/12/01 20:00 ID:hM1OJOXA
1.1用Wrapper試してみました。 howm-install.lを使用してのインストール中、 「初期化ファイルをコピーしますか?」の後、 ステータスバーに「ファイルが見つかりません: "edefs"」と出て、 インストールが中断してしまいます。 edefって何ですか?検索してもさっぱりでした…。
>>176 漏れも出る。初心者ゆえ分からん。
elisp-lib.lのなかのなにかぽいが……
たすけて! 神様
178 :
70 :03/12/01 21:36 ID:hM1OJOXA
なんかいろいろ勘違いしてました。
>>174 で落とし直してみてください。
とりあえず逝ってきます ;y=ー( ゚д゚)・∵. ターン
179 :
177 :03/12/01 21:41 ID:tPT+zC7y
>>178 うまくインストールでけたよ(゚∀゚)
乙。
なんかカラフルになったね。
お、howm新版出たのね。 前のデータからの移行は楽なんでしょうか?>経験者
修正ありがとうございました。 データ移行…初期画面にスケジュールとかが出てきません。 書式が違うんでしたっけ?
皆さんは howm の配色どうしてますか? 参考にさせてください.
>>173 待ってました!!
早速入れてみました。一番最初のメニュー立ち上げがかなり遅くなって
しまっているのが残念です。リフレッシュしないなどの設定を入れても
ちょっと気になる遅さです。
>>180 howmのHPにある「旧バージョンの設定を受け継ぐ」部分を
initに追加すれば移行自体はそんなに苦ではないと思います。
>>173 早速いれかえてみました、が…
ウチだとインクリメンタルサーチとか使えなくなったりしたんだけど、
みんなは大丈夫なのかなぁ?
>>183 メニューファイルを直接指定
(setq howm-menu-top nil)
(setq howm-menu-file "0000-00-00-000000.howm")
186 :
名無し~3.EXE :03/12/02 08:48 ID:y9RIxg0J
>>174 神キタ━━━━(。A。)━(゚∀゚)━(。A。)━(゚∀゚)━(。A。)━━━━!!!!
>>184 漏れは使わんからよーしらんが
howm-init.l 見るとデフォルトがインクリメントサーチしないに変わった気がしる
190 :
184 :03/12/02 12:13 ID:f2fX2969
補足。
howm以外でもインクリメンタルサーチが使えなくなるんです。
分かりにくかったかも。
>>189 あ、なるほど、デフォルトが変わってたのか。
設定みなおしたらとりあえずインクリメンタルは使えるようになりました。
でも、こんどはndiary-modeが不調になってた…
htmlに変換しようとすると
「不正なデータ型です::exec-directory: string」というエラー。
elisp-libあたりで定義されてるマクロが全体に影響してしまってるのが原因とみたけど…
どうすりゃいいのやら。
>>191 早速入れさせていただいたですが
なんかやたら検索に時間がかかるようになっちゃった気がするのは漏れだけでしょうか
メニュー表示するときもToDoとスケジュールのスキャンの時間がめちゃくちゃ伸びたような…
193 :
192 :03/12/02 18:53 ID:/G0ogByd
ためしに 031201 に戻してみましたがやっぱり明らかに遅くなってるみたいです。
195 :
192 :03/12/02 19:10 ID:/G0ogByd
>>194 これは私へのレスだと思うのですが、私が比較してるのは
howm1.1にしてからの 031201.zip と 031202.zip ですのでこれは関係ないと言うか
どっちもそれを指定した状態での比較です。
>>192 031202 遅い
031201 普通
て事でしょうか?
影響出そうな変更はしてないんですが。
手動インストールで
>4. `howm-wrap.lc' をロードする。
の後、
>6. xyzzy を再起動する。
してない。
位しか思いつきませんです。
他に遅くなったって人いますか?
197 :
192 :03/12/02 20:25 ID:/G0ogByd
>>196 どうもすみませんです。私だけなのかなあ。
howm-install.lを使ってインストールしています。
031201 普通 → 031202 にしてみる。遅い → アンインストールして01に戻す。普通。
で、今また01をアンインストールして02にしてみたんですがやっぱり遅くなります。
アンインストール、インストールの手順はそれぞれ全く同じです。
01では瞬時にメニューが開きますが02ではステータスバーに scanning schedule... scanning todo...
とはっきり読み取れるくらいの時間がかかります。
表示そのものはこれといっておかしいところはとりあえず見当たりません。
199 :
183 :03/12/03 00:29 ID:tF+FB/id
>>185 「リフレッシュなど」にはメニューファイルを指定も含まれています。
それでもC-c,,を押してメニューバッファが表示され、font-lockが
終わるまでしばらくかかります。言葉が足らなくて申し訳ない。
ステータスバーには常に..doneとでています。
201 :
名無し~3.EXE :03/12/03 02:57 ID:kvVYU+O9
NetInstallerを使い始めたのですが。 これってパッケージをインストールするだけで .xyzzyとかには何も手を加えないのですか? 要するに、そこは自分でやらないとダメって事ですか?
>>201 (require "ni/setup")
(ni-autoload)
としておくと、対応しているものは自動設定されます。
なるほど。
auto-aborn で、aborn.ruleを書き換えても既に 表示されているメッセージには新しく書いたルールが 適用されません。 それ以降にはちゃんと適用されます。 これって俺だけですか?
>>204 そういう仕様(そうじゃないと使いものにならないかと)。
readme.txtにルールを読み直して自動あぼーんをやり直す
キーバインドの設定例があるから設定して適用しなおせばok
私の検索能力では探し出せなかったのでご存知の方教えてくださいませ。
KaMail関係のバッファがバッファタブに載るのは邪魔なので
ttp://hie.3.pro.tok2.com/xyzzy/note/kamail.html#hide-buffer ここのやり方に従ってKaMail関係のバッファを消しているのですが、これだと
KaMailのDraft書きながらちょっとViewerに戻って他のメールを見るということ
ができず困っています。
たとえば、KaMailフレームにはKaMail関係のバッファだけ、それ以外は
すべてFrame 1といった感じで、フレームごとにタブに載せるバッファを選択
することはできないでしょうか。
>>206 参考になるかは分からないけど、オレはDraftだけ消さないように
(setq *kamail-buffer-draft* (concat "*Kamail:" "Draft*"))
とした上で、kamail-exitを一部書き替えて使っています。
具体的には
(let (regexp
(buflist (list *kamail-buffer-prefix*))
(frame (find-pseudo-frame *kamail-pframe-name*)))
の後ろに
(push *kamail-buffer-draft* buflist)
と付加しただけです。
208 :
204 :03/12/03 22:53 ID:MJOR90Di
>>183 >>192 遅くなる理由をいろいろ考えてみましたが、
コンパイル済みファイルがロードされていない
という物しか思いつきませんでした。
.xyzzy に書いた
(require "howm-wrap")
を消して、↓の様にしてみたらどうでしょうか?
(load (merge-pathnames "site-lisp/howm-wrap.lc" (si:system-root)))
(load (merge-pathnames "site-lisp/elisp-lib.lc" (si:system-root)))
これで駄目だとちょっとお手上げかも(;´Д`)
>>200 検証どうもです。
canna は使ってないので分からないんですが、
xyzzy では無視しちゃってイイのかな?
210 :
183 :03/12/04 09:01 ID:8SEjtMn3
>>209 お手数かけてすいません。本当に感謝しています。
上記の通り.xyzzyに書いてみるとメニューの表示が格段に早くなりました。
また、そのあと元に戻すと、また遅くなることも確認できました。これが
何を意味するのか分かりませんが209の方法で行きたいと思います。
あと、一つ気が付いたのですが新規にエントリーを書くとき、アンドゥを
一回すればテンプレートが消えたように思います。今は二回ですよね?
1.1からの仕様でしょうか?
211 :
183 :03/12/04 10:22 ID:8SEjtMn3
>>209 もう一つ。call-processをshadowしたためか、メニューの「ツール>NTプロンプト」
やshell関係のスクリプトが動かなくなってしまいます。howm-wrapをrequireすると
起こります。
連チャン失礼しました。
howm最新版入れました。以前から気になっていたのですが、 検索結果リストがファイル更新時刻順に並んでしまうのは、 どうしようもないんでしょうか? 昔書いたtodoなどをdoneしたりすると、 昔のファイルなのに最新になってしまいます。 ファイル名で並び替える方法があればお願いします。
>>209 (eval-after-load "yc" (…))は、「ycがロードされたときに
(…)を実行する。ロード済みなら即実行。」という関数のようです。
現時点でxyzzyにycはないはずなのでロードされることがなく、
無視で大丈夫かと。
念のため「引数が"yc"なら無視をする」というのもいいかもしれません。
あと、
> C-c , D日付を挿入する。
> C-c , d複製を作成?
このバインドは1.1から入れ替わりました。
214 :
名無し~3.EXE :03/12/05 03:55 ID:Sb8n/ACt
"と'と`を入力したら自動的にもう一つ入力して、カーソルを真ん中に移動させる
というのを作りたくて以下のように書いたのですが、
「文字列が終了していません」と言われて、うまくいきません。
どこを変えたらいいでしょう?
(add-hook '*post-command-hook*
#'(lambda ()
(when (eq *this-command* 'self-insert-command)
(cond ((looking-back "\"") (insert """) (backward-char))
((looking-back "\'") (insert "'") (backward-char))
((looking-back "\`") (insert "`") (backward-char))))))
元々は
ttp://www.haide.net/~tsukushi/xyzzy/ にあった括弧を補完するって奴の括弧の部分を"とかに変えてみただけですが。。。
>>214 (insert """)->(insert "\"")、です。
文字列内でダブルクォートを記述するためにはエスケープする必要があります。
216 :
名無し~3.EXE :03/12/05 04:16 ID:Sb8n/ACt
ダブルクォートで括られてるダブルクォートと、括ってるダブルクォートの判別がつかないから、 エスケープしてやる必要がある。
howm最新版。 qサマリバッファと、コンテンツバッファを閉じる。 って動いてます? コンテンツバッファで編集してセーブした後サマリバッファにフォーカス移して qを押すと、上下に分割されたままメニューに戻ってしまいます。 昔のに戻そうかなぁ…。戻った人います?
>>218 俺もそうなる。でもちゃんとウィンドウが閉じる事もある。
ようわからん。プチ不便。
>>220 wiki で(も)突っ込むのが仁義ってもんじゃないでしょうか、それは。
>>219 コンテンツバッファを編集せずにリストに戻って q 押すと、
ちゃんと一画面に戻ってメニュー表示するようです。
あと日付順(ファイル名順))じゃなくファイル更新日時順に
なってしまうのはどうしようもないんでしょうか?
連結表示しても更新順なんです。
>>206 > ここのやり方に従ってKaMail関係のバッファを消しているのですが、これだと
> KaMailのDraft書きながらちょっとViewerに戻って他のメールを見るということ
> ができず困っています。
右クリックメニューから,
Draftを開く
Viewバッファに切替え
とか,
C-c d
C-c v
とか。
226 :
名無し~3.EXE :03/12/06 16:53 ID:I3x2IZkB
つまんで左に持っていくと枠の形が変わるから、縦になったところでリリース
>>224 ありがとうございます。
使い始めだったばかりだったので切り替え機能があるのを見落としていました。
結局複数ドラフトとか書けないから、それで十分なんですよね。
ああ、日本語くるいまくってる・・・
作者さん、ちょっとやる気が出てきたみたい。 なので、ここでこそーり要望出してみる。 ・ textの属性に hide を追加
xyzzyページのやる気の量の事を言ってるなら、 リロードするたびに変わるぞ。
>>230 大いに賛成。
アウトラインは別ウィンドウではなく、一体型でやりたい
>>231 それで,アンテナでも更新されるようになったのか _| ̄|○
234 :
名無し~3.EXE :03/12/10 08:27 ID:FBgB4Kzd
>>233 更新チェックの範囲がずれたんだと思われ。
誰か直してくれ(他力本願
FreeLibrary() に相当する関数って何ですか? 他人のマシンのメモリを食いつぶしていると思うと load-libraryするたびに罪悪感に浸ってしまいます。
emacs lisp での [ ... ] は xyzzy では、どう書くのでしょうか?
>>237 まず emacs lisp での [ ... ] が何かを説明してください。
240 :
名無し~3.EXE :03/12/11 11:26 ID:vTPQ+m1U
起動時のプロセスの詳細を見る手段はありますか? .xyzzy の読込時、どこで失敗しているのか知りたいのですが。
ちょっといじってみた部分とか、大体の目処が立たないか?
242 :
237 :03/12/11 12:55 ID:E9+Jk9o1
>>238 ,239 thx です。
ある emacs lisp の移植をだめもとで try したのですけど、
また躓きました。 (symbol-function '\`) でエラーになります。
emacslisp では '\` , ,@ を別の関数名? に再割り当てなど
するようです。xyzzy では `-reader が backquote の処理を行ってい
るんでしょうか?
>>240 (toggle-trace-on-error) を .xyzzy の先頭に追加して再起動。
エラーを起こしているなら、その時点でのスタックダンプが表示される。
>>241 普通はそれでいけるんですが、今回どうしても上手くいかなくて。
>>242 サンクスです。
それでいけました。
ところで拡張 browser.dll はもう配布してないんでしょうか?
> emacslisp では '\` , ,@ を別の関数名? に再割り当てなど > するようです。xyzzy では `-reader が backquote の処理を行ってい > るんでしょうか? やりたい事が判らない上に、emacslisp もよく判らないので何とも言えませんが、 ` が `-reader に展開されるのか? ということでしたらイエスです。 処理をしているのか? というのもイエスでしょうか。 実際に処理系が評価しているのは `-reader です。 とりあえずマクロ文字は関数やマクロではないので symbol-function じゃ対象を参照できないです。 て言うか symbol じゃないです、そもそも。 乱暴に言えば、( や " の機能を問い合わせようとしているのと一緒です。
kamailってimap over SSL 使えますか? どうもそういうことは書いてないようなんですが。
ミニバッファをClaftLaunchの代わりに使えないかなぁ
>>247 http://pc2.2ch.net/test/read.cgi/win/1041613876/236,242,251 こういうこと?しょぼいですが
(defvar *craft-path* "D:/bin/clnch/clnch.exe") ; パス
(defvar *craft-arg* "/wr /x50 /y40 /w100 /c2 ;") ; 引数
(defun send-to-craft ()
(if (filer-get-mark-files)
(setq files (format nil "~{~A~^;~}"
(mapcar #'(lambda (x)
(map-slash-to-backslash
(remove-trail-slash
(get-short-path-name x))))
(filer-get-mark-files))))
(setq files (map-slash-to-backslash
(remove-trail-slash
(get-short-path-name
(filer-get-current-file))))))
(when files
(shell-execute *craft-path* nil (concat *craft-arg* files)))
)
craftlaunchのオプションで、パスの区切りをスラッシュにしていると
不具合があるかも。
howm-warpをいれるとcall-processがオーバーライトされるため、 (execute-shell-buffer "dir" t (selected-buffer)) のようなコードでエラーが出てきてしまいます。ほかにももう一個 シャドウイングによる挙動不審があったような…。ちょっと 思い出せませんが。何とかしていただけるとうれしいです。
>>248 それとはちょっと違って、
まんま倉の機能を持ったモードみたいな感じ。
xyzzyも倉も両方常時起動してるから
そういうモード(関数?)があれば倉が要らなくなるなぁって思って。
251 :
237 :03/12/13 06:55 ID:msGlbshP
>>245 `-readerの定義を変更したいといいますか、lisp インタプリタを
作成するときに、 ` の展開時の動作を変更したいのです。
elisp の edebug が xyzzy でも使えないかと思いまして。` を展開
する動作をキー入力に応じて1ステップずつ実行したいというのが最
終的な目標になります。が、できれば edebug のコードをなるべく
利用したいので、何かよい方法はないのかと尋ねた次第です。
elispでは (symbol-function '\`) ができてしまうようです。。。
もともと自分が edebug を移植するなんて無茶なことだったんで、
素直にあきらめようかと思います。暇 というわけでもないし。
>>251 (set-macro-character #\` fn)
で、マクロ文字 ` の定義を上書きできますが……
どうでしょう、ちょっと面倒な予感。
elisp の ` はただのマクロっぽかったけど。
て言うか elisp にはそもそもリーダマクロがないのかな?
>もともと自分が edebug を移植するなんて無茶なことだったんで、
>素直にあきらめようかと思います。暇 というわけでもないし。
それは残念。
貴重な情報どうも。 またうずいたら再開します
>>249 howm-wrap 作者さんがちゃんと直してくれるまでのつなぎに, こんな感じは?
(試してないので, 動かなかったらごめんなさい)
diff -u -r --new-file howm-wrap_031202/elisp-lib.l howm-wrap_my/elisp-lib.l
--- howm-wrap_031202/elisp-lib.lSun Dec 14 14:33:42 2003
+++ howm-wrap_my/elisp-lib.lSun Dec 14 14:33:42 2003
@@ -929,7 +929,7 @@
;;;; 他
;; いろいろと……
-(shadowing-defun call-process (program &optional infile destination display &rest args)
+(defun hw-call-process (program &optional infile destination display &rest args)
(lisp::let ((command-line (or program ""))
(wait t)
output delete)
つづき # howm-wrap の web page 作ってもらえないでしょうか. # 中身は最新版へのリンクだけで十分ですから… diff -u -r --new-file howm-wrap_031202/howm-wrap.l howm-wrap_my/howm-wrap.l --- howm-wrap_031202/howm-wrap.lSun Dec 14 14:33:42 2003 +++ howm-wrap_my/howm-wrap.lSun Dec 14 14:33:42 2003 @@ -258,6 +258,10 @@ ;; howm が動くようにいろいろと設定。 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||# +(defun howm-view-call-process-here (command args) + (let ((a `(,command nil (t nil) nil ,@args))) + (apply #'hw-call-process a))) + (defun howm-view-string<= (a b) ;(not (string< b a)) (string-lessp b a))
>>78 激しく遅レスですが、
define-modify-macro の定義に問題がありました。
setf.l line.302
(return ``(setf ,reference (,',function ,reference ,,@nreverse ,(cadr l)))))
↓
(return ``(setf ,reference ,(list* (quote ,function) reference ,@(nreverse vars) ,(cadr l)))))
で、とりあえず concnew は動きました。
rest パラメータを使うものについては問題ないと思います。
他にもちょっと気になるところがあるので、
そっち何とかなったら……亀井さんにメールした方がいいかな?
howmとhowm-wrap便利に使わせていただいています。 ところで (setq default-case-fold-search t) として検索に大文字小文字を区別しないようにしているのですが M-x howm-list-grep もしくは c-c,g で検索する時は問題ないのですが メニューでg としたときだけ何故か大文字小文字を区別しちゃいます。 何か間違ってるのでしょうか。ヒントだけでもいただけると幸いです。
現在の point がモードで定義されたコメントの内部 なのか外なのか調べる関数はないでしょうか?
>>259 (parse-point-syntax (point))
>>260 即レスありがとうございます。
できました。
262 :
名無し~3.EXE :03/12/15 22:30 ID:SYPV9Inf
xyzzyでwikipedia引くようにするLispってガイシュツですか?
263 :
名無し~3.EXE :03/12/16 14:00 ID:3Pm5EUYR
NetInstallerに出てくるパッケージは更新順にならんでいるようなのですが 辞書式順序に並び替える方法はありませんか?
>>258 > メニューでg としたときだけ何故か大文字小文字を区別しちゃいます。
直しました。
265 :
停止しました。。。 :03/12/18 19:24 ID:oUmCB96L
真・スレッドストッパー。。。(`・ω・´) シャキーン
xyzzyってUTF8での「〜」の扱いがおかしくない? SJIS->UTF8->SJISと変換したら、「〜」が文字化けしたんだけど。バグかな?
268 :
267 :03/12/18 22:47 ID:rs4pRHxO
今手元で、 --- あいうえおかきくけこ 〜 --- っていうファイルを作って保存し、開いて utf8 にして保存し、 開いて sjis にして保存して、開いてみたけど化けなかった。 もしかして、別のところで Shift_JIS で保存したファイルを持 ってきて、xyzzy で utf8 に変換し、それを xyzzy で Windows-31J に変換したことによって文字化けした…とか…?
>268 ソースコードみれ
270 :
名無し~3.EXE :03/12/19 02:15 ID:dzbleRMc
局所ニュース IEで見ると表示が崩れるの直して欲しいですね.
>>271 IE6で別に崩れて見えないけどどこが?
つーかIEのいくつ?
::::... おれたち もう終わっちゃったのかなぁ? ::::... ∧_∧_∧ ::::.(∀・( ´Д`) バカ野郎 まだ始まってもいねーよ。 r -( ( O┰O ..::ii'⌒< < ) 冊冊〉 ::'、__,,l!しし(_)l!lJ´ '、__,l!j ::::.. ::::
>>272 あれそうなのか.IE6 SP1 なんですけど,箇条書きの部分で
一行目に検索文字列を入力しなかった場合、履歴変更ができない点を修正。
という文章が
「一行」 と 「正。」 が重なって表示されてます.
俺だけなのかなぁ.
>>274 文字サイズが大以上になってるとそうなるみたい。
>>276 cvs-mode が csv-mode になっています。
howm-wrapについて質問です。 readmeなどにはmigemo.txtについてなにも書かれて いませんがどうするんでしょう、こいつ?
284 :
279 :03/12/26 09:44 ID:HpYJv+Gi
>>280 すいません、言葉が足りなくて。
howm-install.lを使えばmigemoが使えるのですがreadme.txtにしたがって
手動でインストールするときにmigemoを使えるようにするにはどうすれば
よいのでせうか。
あと、migemoが、メニューからは使える(C-c,,m)のにキーから(C-c,m)からは
(t nil)はエラーだと怒られてしまいます。なぜなんでしょう。
>>282 デバッグの仕方としては
>>285 さんに追加して
watch.l
step
なんてのもあります。
自分は使いこなせないので詳細は不明ですが。
>>284 > 手動でインストールするときにmigemoを使えるようにするにはどうすれば
howm-migemo.l を site-lisp において、
howm-wrap.l をロードすれば勝手にコンパイルして
使えるようになるはずです。
> あと、migemoが、メニューからは使える(C-c,,m)のにキーから(C-c,m)からは
> (t nil)はエラーだと怒られてしまいます。なぜなんでしょう。
キー設定を上書きしてなかった所為でした。
とりあえず↓を howm-init.l に追加しておいてください。
(global-set-key '(#\C-c #\, #\m) 'howm-list-migemo2)
288 :
282 :03/12/26 20:09 ID:jGQrh5UM
沢山のレスを頂戴して嬉しい限りです.
>>283 参考にさせて頂きます.
>>285 そのtoggle-trace-on-errorが欲しい情報でした.
勿論tag-jumpやdabbrev-popupは使用しています.
しかし前述のac-modeやnavi.elと比較すると,どうしても動的補完が使い辛いと感じます.
アウトライン解析はEclipseやViViを想像して頂けると分かり易いと思います.
>>286 情報有難う御座います.
きっと亀井さん等はVCを使用してxyzzyを作成された為に,私の様なIDE的な使用を疑問に思われる
のでしょうが,学生としてはxyzzyがIDEとして振舞ってくれれば十分な場合もあります.
それを実現したい…というのが私の書き込みです.
自力で頑張ってみますが,良ければ皆さんのお力を貸して頂けると幸いです.
# まぁVCとかVSをアカデミックで買えよ,って話になると反論出来ない訳ですが.
# そこはスルーということでよろしく.
その意気や良し!
> きっと亀井さん等はVCを使用してxyzzyを作成された為に,私の様なIDE的な使用を疑問に思われる > のでしょうが, すごい妄想…
292 :
288 :03/12/26 23:28 ID:jGQrh5UM
>>290 導入しました.
しかしC言語への対応はそれ程良くない,と感じました.
# 私の使い方が悪いんでしょうか?
>>291 やーVCなりVS持ってる人はエディタをIDEに拡張しようなんて思わんでしょう.
少なくとも私がそうであれば,思わないと思いますが.
>>292 291 さんではありませんが、
亀井さんの開発環境は cygwin だったような。(昔)
私も VC は持ってるのですが、容量がぎりぎりなので入れていません。
というわけで、292 さんに期待。
294 :
292 :03/12/27 03:16 ID:v6vjgRiq
>>293 すいません.
ソースコードに付属の文章に,VC4にてメイクを確認とあったもので…
てっきりVCにて開発されているものだと思い込んでいました.
# しかし言い出したの自分とは言え,ここまでレスがつくと尻込みします…
>>295 292さんは,自分のしたいことで忙しいと思います.
欲しい人が作る!
がんばってください.
Emacs の M-x doctor を思い出した.誰かこれ日本語化してないんだろうか.
思い出した人が(ry
あぼーん
>>212 >>223 メニューファイル(menu.howmとか)に
%"e"%eval%(progn(howm-list-all)(howm-view-sort-by-date))
と書いておくと最初から日付順でソートされたサマリを表示。
こんなんでいいんでしょうか?
>
>>287 migemo、使えるようになりました。ただ、一回migemoからC-c mで
検索してしまうとC-c mのキーバインドがhowm-list-migemoに戻っています。
つまり連続でmigemo検索ができない状態です。
>>302 これを howm-init.l に追加でどうでしょうか?
(when (member "howm-migemo" *modules* :test #'string-equal)
(global-set-key '(#\C-c #\, #\m) 'howm-list-migemo2)
(let ((m (member 'howm-list-migemo howm-default-key-table
:key #'cadr)))
(when m
(setf (cadr (car m)) 'howm-list-migemo2))))
howm1.1.0.1 素のままでは16日版howm-wrapでは動きませんでした。 action-lock.l 119 行目 (howm-font-lock-mode) を (elib::howm-font-lock-mode) に差し替え howm-mode.l 1422-1424行目 コメントアウト で一応動いているっぽいです。 とりあえず、次の版が出るまでのつなぎとして。 ところで、2chモードから書き込もうとすると不正なデータ型です。 nil string と出て書き込めないんだけど、俺だけでしょうか。
だけです、多分。
ちなみに個人的にはものすごく移植してほしいです。神さま〜
308 :
名無し~3.EXE :03/12/28 17:08 ID:s1N/vWOF
Nullpochyの外部エディタとしてxyzzyを使っているのですが、 Nullpochyからxyzzyを起動すると、Nupochyから渡されたファイルでなく、 scratchが選択された状態で起動してしまいます。 Nullpochyから渡されたファイルのバッファを選択した状態で起動するにはどうすれば良いのでしょうか?
>>308 試してないけど、xyzzycli を起動したらどうですかね
310 :
308 :03/12/28 17:48 ID:s1N/vWOF
>309 レスありがとう。 でも、Nullpochyは起動した外部エディタのプロセスを監視して そのエディタが終了したのを検出するとファイルに保存されている内容を Nullpochyに反映するようになっているため、 xyzzycli経由ではうまく動作してくれないのです。 本当はxyzzycli経由で使いたいのですけどね…。
>>310 xyzzycli -wait じゃないか?
312 :
308 :03/12/28 22:00 ID:0RmfD4rd
>311 できますた!ありがとう!
Explorerのほうで書き込み禁止したファイルを xyzzyから解除・再度禁止をすることはできますか? 自分のロックだけならview-mode,toggle-read-only でもよいのだけど、、、。
Part8にあったaa_insert.lを誰か保存していないでしょうか? HIEさんちからのリンクは404になっています。
otherbbsって書き込みは出来ないんでしたっけ?
>316 できません(´Д`) x でブラウザを起動してそこから書き込んでください…
319 :
314 :03/12/29 17:22 ID:EhZDwaJu
>315 多謝。
migemo.dllが1.2になったわけだが。
321 :
名無し~3.EXE :03/12/30 09:25 ID:7R5GakLk
現在編集中のバッファをファイルに保存し、そのバッファを削除。 他にscratch以外のバッファが無ければxyzzyも終了。 といったことをlispで自動化したいのですが、 どのようにすれば良いか教えていただけませんでしょうか?
>>313 modify-file-attributes
>>321 現在編集中のバッファ
buffer-list, buffer-modified-p
ファイルに保存
write-region, save-buffer, get-buffer-file-name
バッファを削除
delete-buffer
scratch
buffer-name
xyzzyも終了
kill-xyzzy
323 :
321 :03/12/30 11:40 ID:7R5GakLk
>322 ありがとうございます。 ただ、あと一歩、残ったバッファがscratchだけなのかどうか、 buffer-nameを使っての文字列の比較の方法がわからないのです。 もう一度ご教示頂けませんでしょうか?
>>323 > buffer-nameを使っての文字列の比較の方法がわからないのです。
string-match, string-matchp
325 :
321 :03/12/30 12:41 ID:7R5GakLk
>324 できますた!アリガトン
KaTeX のインデントについて質問です。 バッファ全体をインデントする S 式 (indent-region (point-min) (point-max)) を何回か繰り返し実行すると、 どんどん右にずれていくのですがこれはこういうものなのでしょうか? バッファ全体をインデントしながら TeX を書きたいのですが・・・
328 :
321 :03/12/30 19:03 ID:AByhgjMz
>326 元々の質問のレベルからもわかると思いますが、 lispは全くわからないのでツッコミどころ満載だと思います。 既存のものを流用しまくりですが何とか形になりました。 もっとスマートな方法があれば教えて下さい。 (defun xxxxxx () (interactive) (if (buffer-modified-p) (save-buffer-dialog)) (kill-selected-buffer) (if (= (count-buffers) 1) (if (string-match "*scratch*" (buffer-name (selected-buffer))) (kill-xyzzy))) )
>>321 save-all-buffersとかsave-all-buffers-kill-xyzzyとかは?
howmでgrep検索にCygwinのgrepコマンド使おうと思って
(setq elisp-lib::howm-view-use-grep t)
(setq elisp-lib::howm-view-grep-command "grep")
とやってみたんですが、実行してみると
不正なデータ型です: (t nil): number
てなエラーが。同じようなことやろうとして成功した方いらっしゃいます?
#激しく遅レスですが、一覧表示の時にS(sじゃなくてね)押せば好きなもので並べ替えできます。
>>212 howm-wrap付属のreadme参照
>>330 > 不正なデータ型です: (t nil): number
こっちの虫は潰してたんですが、違う虫が出てました。
一応直したんで確認お願いします。
333 :
330 :04/01/03 13:36 ID:v8y1vSa2
>>331 気づかないうちにバージョンあがってましたか。不適切な報告をしてしまって
ご迷惑をおかけしました。
最新版ですがインストール中にエラーがでます。031229版では問題ないので
たぶん手順は間違ってないとは思うのですが。今忙しいので後でエラーログ
を送らせていただきます。
変数が定義されていません: #:|]|
>CALL STACK 39: (eval #:|]|)
>CALL STACK 38: (system:*byte-code ...)
>CALL STACK 37: (compiler::record-defconstant (defconstant *elisp-reader- #1=#:|]| ...))
>CALL STACK 36: (system:*byte-code ...)
>CALL STACK 35: (compiler::process-toplevel (defconstant *elisp-reader- #1=#:|]| ...))
>CALL STACK 34: (system:*byte-code ...)
>CALL STACK 33: (compiler::compile-file-1 "D:/xyzzy/site-lisp/howm/elisp-lib.l" #<file-input stream: D:/xyzzy/site-lisp/howm/elisp-lib.l>)
>CALL STACK 32: (system:*byte-code ...)
>CALL STACK 31: (compile-file "D:/xyzzy/site-lisp/howm/elisp-lib.l")
>>333 howmのバージョンはいくつ?
wrapperはいまんとこhowm 1.1.0.1にしか対応していないと思われ
>>334 ドンピシャです。「1.1.0.1対応」って1.1はだめって事だったのね(つД`)
>>332 リンク先
すげー!こんなんもうエディタじゃないよなぁ・・・
いじってたら、ふいに.howm-keysにきちんと記録されるようになって(゚Д゚ )ウマー でも原因がなんだったのかは謎。 でもoltとの相性が悪化。保存時に6秒ほどかかるようになって(+д+)マズー 今までは一瞬。howm起動時は前も今も3秒ぐらい時間かかるけど、 保存ほど頻繁じゃないので気にならなかった。 olt非表示にすれば起動が1秒、保存が2秒ほどになるので問題ないけど、 olt常時表示も捨てがたい。困ったな。 ちなみにPen3-500MHz。
>>336 Lisp 解釈機構だから、ということか。すごすぎ。
339 :
337 :04/01/04 10:24 ID:XE5AdUeY
> セーブ後の自動処理をしない > (setq howm-menu-refresh-after-save nil) ;; メニューの更新 > (setq howm-refresh-after-save nil) ;; 下線の引き直し とりあえずこれで解決しました。お騒がせスマソ。
340 :
337 :04/01/04 10:45 ID:XE5AdUeY
さらに追加。elisp-lib.lの (create-new-buffer "*temp*") を " *temp*" にして非表示バッファにするだけで改善されました。 olt併用時の動作全般が軽くなるので、 問題なければ取り込んでいただけませんか?>wrap作者さん
howm導入挑戦中。 [[hoge]] っていうWiki風リンクって機能してる? 文字列を[[]]で囲んでリターン押してもふつうに改行されるだけ。 <<<や>>>はうまくジャンプするのに。 なんで?
>>341 .howm-keysにないキーワードだとジャンプしないです。
ちゃんと登録されているキーワードだと、なにもしなくても
下線が引かれて機能します。
[[ ]]は色づけだけの働きしかしてないみたい。
メモ保存時に.howm-keysは更新されるはずなのですけど、
念のため.howm-keysの中身を確認してみてください。
>>341 [[link]]の最後の"]]"にカーソルを置いてエンターは?
>>343 知らなかった。。これ(・∀・)イイネ!!
345 :
341 :04/01/04 14:44 ID:rWCiYN9R
なぜ [[link]] の link でリンクされないの?
348 :
名無し~3.EXE :04/01/05 12:14 ID:ACxYZOy6
howm入れたらispellが動かなくなったんですが、僕だけですか?
文字列 A の中に単語 B がいくつ含まれるかを返すような lisp は、 どうかけばよいのでしょうか? (例 . A = "asadame" B = "a" => 3 ) できるだけ高速なものがよいのですが。 よろしくお願いいたします。
>>349 charならcount関数でいける。(count #\a "abcabcabc")
stringならsubstitute-stringが置換回数を返すんだけど…(もっといい方法がありそうだけど)、
(cadr (multiple-value-list (substitute-string ...で、やれないことはない。
「飛び先が作成済みかどうか, 下線のつき方で見分けられる」
っていうとんちだったんだけど, 不評ですね.
[[link]] 全体が反応するように直します.
>>348 とりあえず,
「何をしたら, どうなってほしいのに, どうなった」
を具体的に教えてもらえると助かります.
howm のページから, 「バグの指摘をくださる方へ」を参照ください.
# …って, その中の (D) は xyzzy だとどうするのがいいんでしょう?
# (D) = 「設定ファイルを読み込まず, 手動で howm を起動」です.
>>351 そんな仕組みだったのですね。
でも残念ながらxyzzyだと[[ ]]で括り終えた時点で下線が(あってもなくても)
消えてしまうので、見分けることができません。
どちらにせよ、wikiを知っている人ほど「びっくり」な仕様でしょうから、
全体で反応するようになるとありがたいです。
テスト版は直しました. リリース版でも (setq howm-wiki-regexp "\\[\\[\\([^]\r\n]+\\)\\]\\]") (setq howm-wiki-regexp-hilit-pos 0) (setq howm-wiki-regexp-pos 1) で全体反応になるはず.
354 :
341 :04/01/06 08:43 ID:CESo2rLT
>>353 をを! でけました!!
こりゃいいですな。乙です。
355 :
349 :04/01/06 08:56 ID:j5YHyF6K
>>350 > (cadr (multiple-value-list (substitute-string ...で、やれないことはない。
有難うございます。
substitute-string とは、目から鱗でした。
タブが増えたときに2列にするのってできないんだっけ?
>>356 Sleipnir もできないんだよね。
>>334 >>335 一応 1.1 でのインストール、動作確認はしてたんですが、
フォローも無いようなので、うちでしか動いてなかったのかしらん(・ω・)
>>340 非表示バッファてのを忘れてただけで、全然問題ないです。
取り込ませてもらいました。
>>348 例の call-process っていうかシャドウイングの問題かなぁ?
ispell を入れて試してみましたが、動作しました。
*scratch* で
(eq #'call-process #'elib::call-process)
これを評価すると t になったりします?
>>351 ># …って, その中の (D) は xyzzy だとどうするのがいいんでしょう?
># (D) = 「設定ファイルを読み込まず, 手動で howm を起動」です.
xyzzy にも -q オプションがあります。
他に細々と違いがあるので、うちのページにも、
「バグ報告を下さる方へ」を追加してみました。
http://homepage3.nifty.com/~ko-ji/howm-wrap_bug-report.html
>>358 乙です。
しかしwrapper作者たんが対応バージョンを上げる日に
よく本家のバージョンがさらに上がるなあ……
360 :
359 :04/01/07 00:28 ID:bucNX2Mf
肝心なことを書き忘れてた。
howm-wrap_040106.zipにてhowm 1.1.0.3うまくインスト出来ました。
しかし本家ではhowm 1.1.0.3はすでにDLできない罠……
あと要望ですが、howm-init.lに
>>353 をコメントアウトでもいいから
書いておくといいと思われ
howmスレのほうでも話が出てたけどwrap作者さんは 対応しているバージョンのhowm本体も同じ場所で再配布されたらいかがでしょう。 howmはGPLのようですしライセンス的な問題はないですよね?
>>358 レスありがとうございます。
>*scratch* で
>(eq #'call-process #'elib::call-process)
>これを評価すると t になったりします?
パッケージが存在しません: "elib"と怒られました。
1.1.0.3入れてみたのですが、僕の環境ではなぜかelisp-libをうまく
読み込んでくれないようです。(これが原因かも)
時間のあるときにもう少しいじってみます。お騒がせしてしまいすみませんでした。
>359 もう気づいているかもしれないがちゃんと本家にある。<1.1.0.3
コマンドラインから lisp プログラムを動かせて ハァハァ している者です. pregexp が遅いですね... エディタだからしょうがないとは思いますが,どうしてなんでしょう? ; xyzzy の関数を使えというのはもっともな意見ですが. インストール不要の windows 用 lisp 処理系として使えるのが素敵です. ポータビリティがすごいですよ.出先のマシンでも心強い味方です.
>>361 howm作者さんの許可も事実上でたことですしね。
同梱配布ついでにNetInstaller対応を、と言ってみるテスト。
>>362 howm-wrapだとelisp-lib::にしなきゃいけなかったような。
>>360 >あと要望ですが、howm-init.lに
>>353 をコメントアウトでもいいから
>書いておくといいと思われ
ですね。次の版ではそうしときます。
>>361 >>365 次からはセットにして配布します。
>>362 >僕の環境ではなぜかelisp-libをうまく読み込んでくれないようです。
インストール段階ではエラーになってないんでしょうか?
*scratch* で
(require "howm/elisp-lib")
するとエラーになります?
>>365 パッケージの別名として elib を定義してるので、elib:: でも桶です。
>同梱配布ついでにNetInstaller対応を、と言ってみるテスト。
一応考えてはいたんですが、もうしばらくお待ちを。
368 :
364 :04/01/08 21:31 ID:+JG479zU
>>367 re-search-forward が速ければ,エディタとしては十分ですからね...
どうせ短いプログラムなので,xyzzy 用に書き直そうかな.
pregexp.cl をちょっと見ただけですが,末尾再帰が結構あるみたいです.
;; Hiroi さんのプログラムが完全に tail recursive になっていないような.
2ch の板リストや KaMail のフォルダリストみたいに お気に入りリストを左側に表示できたらなぁ! へ へ @ @ し M
>>366 様
*scratch* で
>(require "howm/elisp-lib")
>するとエラーになります?
これはtになりました。
実はインストールの時にhowm-installがまったく動かず、手動でやると
elisp-libが見つからないとか言われたので
(setq elisp-lib::howm-menu-lang 'elisp-lib::ja)
という設定だけしてませんでした。でhowm-init.lをコピーしております。
先ほどC:\howmとC:\howm-wrapを作ってそれぞれ解凍してから*scratch*に
(pushnew "C:/howm-wrap/" *load-path* :test #'string-equal)
としてからhowm-install.lを読み込ませてやるとうまくいきました。ispellも動きました。
適当なところに解凍といっても最初に解凍した場所が/site-lisp/howm
(インストールしたいディレクトリと同じ)だったのが悪いのか
こういうときはload-pathの設定を最初にしとくべきだったのでしょうか。
本当にお騒がせしました。そしてありがとうございました。
既に起動しているwindows上のアプリケーションのプロセスを取得して、 プロセスの標準入力に文字列を送りたいのですがよくわかりません。 part9の633あたりの list-process-base-name で得られるプロセス オブジェクトはxyzzyのprocessオブジェクトではなさそうなので、 process-send-string を使って文字列を送ることはできませんでした。 どなたかよろしくお願いします。
>>371 >xyzzyのprocessオブジェクトではなさそうなので
xyzzyの標準入力に文字列を送ろうとしているのですか?
>>372 その逆で、xyzzyから他アプリの標準入力に送ろうとしてます。
make-process と process-send-string でできるかとおもった
んですが、少し難しそうです。
文字列を送りたいアプリが、linuxのコマンド line をwindowsに
移植したものを使って起動されます。
line aplication-name
そして、line のプロセスとアプリのプロセスと2つ生成されます。
make-process でバッファに関連付けられるプロセスは line のほう
ですが、文字を送りたいのは line が作るサブプロセスのほうです。
ためしに line に対して文字を送りましたが、何も変化しませんでした。
>>373 はずしてるかもしれないけど。
FindWindowとかでサブプロセスのハンドルを取得して、
そのハンドルに対してPostMessage、SendMessage辺りを使えばいいのでは?
WindowsAPI使わないと無理かもしれない
pink鯖URLを一般板に貼っては行かんぞ。
377 :
373 :04/01/11 23:27 ID:q8mNJGOI
>>374 やっぱりそう思いますか。その辺の知識がないのと、あってもあまり
使いたくなかったのです。しばらく棚上げしておきます。
もしかして,今や xyzzy は windows アプリを **LISP で** 制御できる ツールになっているの?
>>378 できるといえばできます。
winamp.l など
*filer-jump-directory-dialog-template* を再設定するとディレクトリに
移動できなくなりました。ためしに、もともと設定されている値をそのまま
setq で与えてみましたが、同様にジャンプできません。なじぇ?
>>378 そういったことが楽にできるようにすることが
xyzzyの生き残る道なんじゃないかなぁ。
>>380 「winに適応したemacsもどき」という路線で競合するアプリが新たに
産まれない限りは、このままでも安泰でしょう。
それとも最強五目並べソフト路線でいく?
五目以外にもroguelikeとかゼビウスとかやれるようにしようぜ
テトリスもいいな
385 :
名無し~3.EXE :04/01/12 23:58 ID:asYXUvRJ
>382-384 言いだしっぺが作るという慣例に習って、お願いします。
テトリス欲しい!!
あー rougelike はいいなあ。
xyzzy使ってる人ってプログラマが多いと思うのだけども みなさんどんな言語でクソジジってますカメ
いえ無職が多いらしいです
>>388 もっぱらRubyです。
>>389 職業の話ではないと思われ。>プログラマ
それに無職って、HTMLに限った話じゃなかったっけ。
>388 C++かな。正直lispはワカンネ。勉強してないから。
質問です。 set-marker maker-point process-maker ってどういうものでしょうか?
>>392 set-marker マーカーをセット
marker-point マーカーの指すポイントを返す
process-marker バッファに結びつけられたプロセスが出力する場所を設定
……かな?
(setq m1 (make-marker)) ; マーカーオブジェクトを作成
(set-marker m1 (point-max)) ; マーカーオブジェクトm1にバッファの最後のポイントを設定
(goto-char (marker-point m1)) ;マーカーオブジェクトm1の指すポイントに移動
process-markerはlisp/shell.lとかを参考にすればよろし
間違ってたらゴメン
×process-marker バッファに結びつけられたプロセスが出力する場所を設定 ○process-marker バッファに結びつけられたプロセスが出力するポイントを返す だったかも 俺もいまいち分かってないなw
>>394 レスありがd。 何となくつかみかけてきました。
それで ls-color.l を更新してみました。
うまく動いているみたい。
ゲームを xyzzy でしたいだけなら、ウィンドウを分割して その中で拾ってきたのを動かせばいいだけなんでない?
>>396 結局xyzzyで動くゲームが要るんじゃないの??
>>397 browser.dllでFlashのゲームとか。無粋ですがね。
399 :
名無し~3.EXE :04/01/14 23:45 ID:woKV0vZM
perl-mode ではキーワードファイルからの補完はできませんか?
,.. -- 、
r'´:::: --;::`i
ト 、 ,r `;,r:、
!゙'ノ、''` i _/
>>390-399 の力を借りて平慶彦が400ゲット
_ril l `__ ,l´!
l_!!! ,、 ,..-ヽー'',,.. ' ノ`丶--'ー--、 -―--、
| ! !_!|i::::::::::`´ー''´:::::::::::::::::::|:::::::::::::::::::::,..、::`ヽ
! ', ,|!::::::::::::::::::::::::::::::::::::::::::ヽ/---‐'´`\::::\
!、_,イ:::ヽ::::::::::::::::::::::├┤:::/::| \:::ヽ、_
',::::::',::::::|ヽ::::::::::::::::::::::::::::/:::::::l ヽ'◎ ヽ
',:::::::',::::! ヽ:::::::::::::::::::::::::::::::::,! ヽ __ '、
',:::::::::::| ',::::::::::::::::::::::::::::/| ヽゞー'
ヽ_ ノ ヽ::::::::::::::::::::::::::::::!
>>399 perlを全然知らないから適当です。define-keyの#\TAB部分は自由に。
(require "perl")
(defun perl-do-completion ()
(interactive "*")
(if ed::*perl-keyword-hash-table*
(do-completion (point)
(save-excursion (skip-syntax-spec-backward "w_") (point));この"w_"、あやしい
:list (make-list-from-keyword-table ed::*perl-keyword-hash-table*))))
;毎回、make-list-from-keyword-tableしているけど、速度的には問題ないみたい
(define-key *perl-mode-map* #\TAB 'perl-do-completion)
402 :
名無し~3.EXE :04/01/16 07:07 ID:MyR6Ms2L
>>401 どうもサンクスです。
上手く動いてるようです。
2ch-modeのdolib.dllってどういう意味があるの〜〜?
>>399 僕はlispをよく知らないからphp-modeの
(defvar *php-completion-list* nil)
(define-key *php-mode-map* #\M-TAB 'php-completion)
(defun php-completion ()
"キーワードから補完"
(interactive)
(or *php-completion-list*
(setq *php-completion-list* (make-list-from-keyword-table *php-keyword-hash-table*))
(return-from php-completion nil))
(let ((opoint (point)))
(when (skip-syntax-spec-backward "w_.")
(let ((from (point)))
(goto-char opoint)
(do-completion from opoint :list *php-completion-list*)))))
の"php"の部分を"perl"や"c"や"c++"に書き換えるだけでありがたくキーワードファイルから補完させてもらってます。
>>403 Google すれば即分かると思うけど、2ch の有料化対応やね。
406 :
403 :04/01/17 03:56 ID:VkL/DLJv
>>405 なるほど、DAT落ちしたスレが読めるって言うやつか。
(split-string "abc,def," #\, t) が ("abc" "def") になります。 ("abc" "def" "") になるようにしたいんですけど、自分で組む以外に何か方法ありますか?
>>407 スペースをトリミングしてもいいなら
(split-string (concat "abc,def," " ") #\, t #\SPC)
どっかにこんなコードかtipsって無いんでしょうか >katex使っていて >hoge.texの中に >\include{tobimasu} >って感じで使っているんですけど >簡単にhoge.tex←→tobimasu.texのジャンプができるような方法 >ナイですかね >google使ってもそれらしきtips見つけられなかったんで > >贅沢を言えば >\include{tobimasu}の >tobimasu上でダブルクリック,C-Return,M-Returnのいずれかあたりで >tobimasu.texが開くと良いなぁと、 >戻りも何か適切なキーを押せばtobimasu.tex→hoge.texとしてくれるやつが良いんですけど >(tobimasu.texは開きっぱなしでも閉じても良いんですが) よろしくお願いします。
2ch-mode で、追っかけスレ一覧にスレを登録した時に、その追 っかけスレ一覧のバッファがあった場合はそれを更新するようにし た。これにより、追っかけスレ一覧のバッファがすでにある時に、 その追っかけスレ一覧にスレを登録した後、その追っかけスレ一覧 をカレントバッファにしてそれからスレ削除、ソートなどをすると 先に行ったスレ追加が無効となる現象も回避できる。 (defun tracking-add (board &optional pos track-name dialog) : (tracking-write track-name tracking-list) (let (buf win current-win) (setq buf (find-buffer (tracking-buffer-name track-name))) (when buf (setq win (get-buffer-window buf)) (if win (progn (setq current-win (selected-window)) (set-window win) (tracking-show track-name t) (set-window current-win)) (save-excursion (tracking-show track-name t))))) (setq *tracking-list-all* nil) (unless exist (menu-update))) t)
>>409 F4, S-F4で行ったり来たりできます。
ちなみにC/C++の場合は "^#include[ \t]*\"\\([^\"]+\\)\""
; includeファイルにジャンプ
(defvar *filename-getter* "^\\\\include[ \t]*{\\([^}]+\\)}")
(defun jump-include ()
"includeされたファイルにジャンプします"
(interactive)
(when editor::*tags-push-position*
(or editor::*gmark-keep-column*
(goto-bol))
(editor::global-mark-add))
(and (save-excursion
(goto-bol)
(looking-at *filename-getter*))
(let ((name (match-string 1)))
(and (file-exist-p name)
(find-file name)))))
(defun jump-include-or-tag ()
(interactive)
(or (jump-include)
(jump-tag)))
(define-key editor::*katex-mode-map* #\F4 'jump-include)
>>411 事故レス
(define-key editor::*katex-mode-map* #\F4 'jump-include)
は
(define-key elisp::*katex-mode-map* #\F4 'jump-include)
の間違いです。
>>412 (add-hook 'el::katex-mode-hook
#'(lambda ()
(define-key el::*KaTeX-mode-map* #\F4 'jump-include)))
autoload なのでたぶん、こうだろう。
xyzzyって何て読むんですか?
>>414 セクシージジー.私はいつもこう呼んでいます.
417 :
名無し~3.EXE :04/01/18 22:41 ID:zwQsalRv
>410 自分は今までスレ追加したあとに "r" してたよ
皆痛いニュース板見れてる? 板一覧更新してもここだけ追加されない……
419 :
407 :04/01/18 23:21 ID:0G2O6YDq
>>408 サンクス。
今回はスペース削っても構わないので、これ使わせていただきます。
421 :
409 :04/01/19 09:38 ID:3zeRDbMF
俺も問題無し>痛いニュース
gnuplot-modeのxyzzy版はないのでしょうか?
痛いニュースを見れないのは2ch-modeがデフォルトで参照している BBS-menuの提供サイトが閉鎖してるからでは? monazillaで他の提供サイトを見つけて書き換えれば見れると思う。
と思ったらサイト復活してた…
>>426 は無視してください
サイトの板一覧の更新が遅かっただけで今はもう見れるとか?
おおっ、見れる
(provide "spiral") (defun spiral-o-new (dr reverse-y) `(,dr ,reverse-y nil)) (defun spiral-o-set-angle (spiral angle) (setf (caddr spiral) angle)) (defun spiral-o-r (spiral angle) (/ (* angle (car spiral)) (* 2 pi))) (defun spiral-o-x (spiral angle) (* (spiral-o-r spiral angle) (cos angle))) (defun spiral-o-y (spiral angle) (* (spiral-o-r spiral angle) (sin angle) (if (cadr spiral) -1 1))) (defun spiral-o-angle-at-length (spiral l) (sqrt (/ (* 4 pi l) (car spiral))))
(defun spiral-string (str &optional (spiral (spiral-o-new 3 t)) (pitch 2) (ratio 1.5)) (setq str (substitute-string str "\n\\|\r" "")) (let* ((line-count (+ (floor (spiral-o-r spiral (* (spiral-o-angle-at-length spiral (* (length str) pitch)) 2))) 2)) (line-length (floor (* line-count ratio))) (center-x (floor (/ line-length 2.0))) (center-y (floor (/ line-count 2.0)))) (let ((lines (make-array line-count :element-type 'string :initial-element (concat (make-sequence 'string line-length :initial-element #\ ) "\n"))) (adjuster 1) (ret "")) (dotimes (i (length str)) (let* ((angle (spiral-o-angle-at-length spiral (+ (* i pitch) adjuster))) (x (+ (round (* (spiral-o-x spiral angle) ratio)) center-x)) (y (+ (round (spiral-o-y spiral angle)) center-y))) (setf (aref lines y) (concat (substring (aref lines y) 0 (- x 1)) (string (char str i)) (substring (aref lines y) x) "\n")))) (dotimes (i line-count ret) (setq ret (concat ret (aref lines i)))) (concat (substitute-string (substitute-string ret "^\\( +\n\\)*" "") "\n\\( +\n\\)*$" "") "\n"))))
(defun spiral () (interactive) (save-excursion (let ((beg (progn (goto-bol) (point)))) (goto-eol) (let ((str (buffer-substring beg (point)))) (delete-region beg (point)) (insert (if (eq *prefix-args* 'universal-argument) (spiral-string (reverse str)) (spiral-string str))))))) ;; M-x spiral ;; C-u M-x spiral ;;; spiral.lはここまで
435 :
431 :04/01/22 23:10 ID:fLjwDk7x
移植は適当なので間違ってたらごめんね。
ボッキアゲスパイラルにも対応していますか?
ぐ っ 。 じ い お ょ ー も 1 ぶ し ろ 3 ! 4 ! > >
思 っ は て と 誰 い る か 。 た が や よ が タ … ワ ラ
まーはしゃぐのもいいけどそのくらいにしとけよ。
440 :
名無し~3.EXE :04/01/22 23:49 ID:iINtcBr2
>439 空気読めよ そこはスパイラルで諌める場面だろ
441 :
名無し~3.EXE :04/01/23 04:46 ID:slyhVyGP
ac Ma a Mca M M c c M c a M c a M c M c a a a___a M M c M c acMa 。。。等幅
>>441 perl使わずに動作してくれると便利なんだけれどな。
激しくスレ違いなんだがMTのへポストツールいいのないか? みんな外国製で文字化けして使えん。
445 :
名無し~3.EXE :04/01/24 06:45 ID:IJVWC/ca
perl-mode で カーソル上の関数を ActivePerl に付いてくるような html リファレンス から引きたいんだけど、誰かやってる方いません?
php-mode でカーソル上の関数の引数が出てくるのって、誰かやっている方いません?
447 :
名無し~3.EXE :04/01/25 22:01 ID:1KCKBivC
Cのコールバックで、(char **argv, int argc)みたいな引数の物を defun-c-callableで定義した時、このargvをCommonLispの方で 解釈する手は何かあるでしょうか? argcだけひとつずつunpack-stringを実行したいのですが。
他のエディタでEOF有りで保存したファイルをxyzzyで保存すると EOFがなくなってしまいます。 これは回避可能でしょうか?(私の設定が悪いだけ?) 励ますスレで回答貰えなかったので、本スレに来ました。 マルチで申し訳ないです。
>>448 EOFって^Zって表示されるやつ?あんまり見かけないけど。
うちでは適当に編集しても消えなかったよ。
BSやDELで消しちゃったら無くなっちゃうけどね。
最後に0x1Aを挿入するだけなんだけど、俺にはlispはよくわからんのです。スマソ
450 :
448 :04/01/26 00:14 ID:uwCRkCh5
>>449 0x1Aのことです。
449さんのところで消えてないということは、組み込みんだ機能で何かあるのかも
知れないので、調べてみます。
私の職場だと付けるのが一般的なのでレスがいただけて助かります。
451 :
448 :04/01/26 00:51 ID:uwCRkCh5
.xyzzy、siteinit.l(siteinit.lcは未作成)を他のディレクトリへ移動し、 xyzzy.wxpを削除して試してみたのですが、0x1Aは削除されるようです。 私のオペミスの可能性もありますが、何か情報があれば教えて下さい。
>>451 じゃあ、 C-q C-z でとりあえず我慢
>>451 文末の^Zに関しては自分もそうなった。
requireとloadlibraryの異いを教えてください
>>454 loadlibraryでなくてload-libraryですね。
requireは、*modules*変数に、requireの引数であるモジュールネームがあれば、何もせず、
なければ、そのモジュールネームでload-libraryする。
*modules*は、provide関数を実行すれば、引数であるモジュールネームが、*modules*に登録される。
分かりやすくいえば、ほぼload-libraryと同じなんだけど、
すでにロードされているものはrequireではロードされなくなるということ。
(1回ロードすればいいんだから)
ただし、その判定を行うのは、provideをしているファイルのみ、という感じです。
(その上、モジュールネームが間違っていたら、駄目なんだけど)
あと、load-libraryだとインタラクティブに、ミニバッファで引数を指定して使えるけど、
requireはそうではない。
そうだったのかー。ありがとー(^-^)
xyzzyに最近使い始めて2ch-modeを導入してみました。 2ch-modeのスレッド一覧場面で、既読スレや追っかけ登録されたスレを 一番上部に表示させることはできないでしょうか。
verilog編集モードをもとめて、
ttp://www.verilog.com/ でemacs lispのをもろてきたのですが、
commonに変換できそうにありません。
どなたかすでに変換なさってるかたいませんか?
あるいはほかのverilog編集モードお持ちの方いませんか?
KaMail についてなんですが、ここで勝手に要望を。 送信するべきでない文字があった場合、 エラーでなくて警告という形にしてもらえると嬉しいです。 相手が書いてきた文章はそのままで返信したいときに困っています。 とりあえず kamail-send.l の当該部分をコメントアウトして対処したのですが、 .kamail に何か書くとか、もっとスマートな方法ってありますかね?
lで表示できることはできるのですが、更新スレッドがボールド表示されないので イマイチ使い勝手がよくないのですがこのあたり解決策はないのでしょうか?
463 :
名無し~3.EXE :04/01/31 14:19 ID:udPZOetm
(setq c-continued-statement-offset 4) で C のソースを書いているのですが,if 文に関しては if(a == b) if(c == d) return; のように期待通りにインデントされるのですが,通常の文に関しても int a = b + c + d + e + f + g + h; のようにインデントされてしまい,チト見栄えが悪いなぁと思っています. emacs だと int a = b + c + d + e + f + g + h; のように (意図通りに?) インデントされるのですが, xyzzy でこれを実現するにはどのように設定すれば良いのでしょうか. c-mode.l をいじらないとダメですかね…….
464 :
463 :04/01/31 14:31 ID:udPZOetm
追加です.
>>463 と似たような現象だと思うのですが,
char *s[] = {
"aaa",
"ddd"
};
xyzzy で↑こうなってしまうのを
char *s[] = {
"aaa",
"ddd"
};
↑こうインデントさせる方法も知りたいです.
どなたかご存知でしたら教えてください.
465 :
mami :04/01/31 14:32 ID:jtOXGSrq
サイト作ったけど誰も来てくれないよ
どこが悪い教えて
欲しい本、パソコン、デジカメ、腕時計、家電製品、洋服、食料品などなど何でもそろう安さもピカイチ、ネット総合ショッピングサイトです
常時、40店舗がはいってる
http://www.jun0416.com
xyzzy で1バッファで1000万文字を超えるとかなり重くなってくるのだけど なんとかならないものですか.カーソルの移動ですら,ストレス感じます. メモリ使用量は数10M程度だからもっと使ってもいいのに. 今の10倍程度を1バッファで無理なく使えるなら500Mくらい用意するのにな.
すごいなーメッセまでできるんだ。 miranda使ってるけれど、確かにこんな機能があれば便利だな。
long-operationの定義が (defmacro long-operation (&rest body) `(prog2 (begin-wait-cursor) ,@body (end-wait-cursor))) となっていますが, (defmacro long-operation (&rest body) `(prog1 (progn (begin-wait-cursor) ,@body) (end-wait-cursor))) の方がいいきがします. といってもいまさら修正効かないかもしれないので とりあえず関数リファレンスに書いておくべきなのかな. [返り値] bodyの中の式を順番に評価し,最初の式の結果をかえします.
>>470 上下とも同じだと思いますよ?
(prog2
1
2
3)
=> 2
(prog1
(progn
1
2)
3)
=> 2
472 :
470 :04/02/01 21:50 ID:Va9Bp9RO
>>471 2つのlong-operationの定義で以下の式は異なる値を返すと思う.
(long-operation
(setq a t)
(setq a nil))
>>472 たしかに。
ML で亀井さんに伝えてくださいね。
>>463 自分は、
int a = (b + ...
って逃げてる。
475 :
447 :04/02/02 23:54 ID:0XcDgUkr
自己レスですが、結局argvをfor文でまわしてargv[i]に対してコールバックを 呼ぶラッパーをCで書いて妥協しました。 いい方法無いんですかね〜
>>475 試してないから動かない可能性大です。
(c:*define-c-struct Args
(winapi:LPSTR arg0)
(winapi:LPSTR arg1)
(winapi:LPSTR arg2)
(winapi:LPSTR arg3)
(winapi:LPSTR arg4)
(winapi:LPSTR arg5))
(defun-c-callable void hoge-dll-func(((Args *) args) (int argc))
...
)
もっときれいに実現するには foreign.l をいじればよいのかもしれないけど
自分のスキルでは無理です(T-T)
>>475 // argv.c
__declspec (dllexport)
void __stdcall call_callback(void (__stdcall *callback)(char **, int)) {
static char *arg[] = {"abc", "def", "ghi", "jkl"};
(*callback)(arg, 4);
}
; argv.l
(require "foreign")
(c:define-dll-entry c:int lstrlenA ((c:void *)) "kernel32")
(c:define-dll-entry c:void call-callback (c:int) "argv.dll" "_call_callback@4")
(c:defun-c-callable c:void callback ((c:int argv) (c:int argc))
(format t "argc=~d~%" argc)
(let ((chunk (si:make-chunk nil (* argc 4) nil argv)))
(dotimes (i argc)
(format t "~d: ~a~%" i
(si:unpack-string (si:make-chunk nil (1+ (lstrlenA (si:unpack-int32 chunk (* i 4))))
nil (si:unpack-int32 chunk (* i 4))) 0)))))
(call-callback #'callback)
478 :
475 :04/02/03 01:39 ID:6E/Bzlou
>>477 うぉっ!すげぇ。どうもです。
chunkのアドレス計算でなんとかなるかなぁ、とは思っていたのですが、
そうやるのかぁ。
そもそもsi:unpack-int32という物を知らなかった時点でダメぽ…
xyzzy-messenger欲スィなぁ。
>>464 最後の要素の後にも , をつけるとか。
char *s[] = {
"aaa",
"ddd",
};
481 :
475 :04/02/03 08:46 ID:6E/Bzlou
477のおかげでdllのラッパー無しで作れるよーと思ったら… 元のdllが__stdcallが無い…
>>496 はわわ。ぜんぜんわからないよう。
誰かリファレンスより分かり易くchunkの解説してー
483 :
名無し~3.EXE :04/02/03 12:06 ID:Jtd+hNi6
484 :
名無し~3.EXE :04/02/03 23:05 ID:2Codu4q4
katexをいれたら、キーワードとかの色が表示されずに全て黒になってしまった・・・ /xyzzy/etcにはちゃんとTEXファイルがあるのに・・・ なにか対処法はあります?
485 :
475 :04/02/03 23:28 ID:6E/Bzlou
>> 482 質問した人間だが多少は解説出来ると思うのでしてみる。 間違いあったら指摘よろ。 (si:make-chunk nil (* argc 4) nil argv) で、argvというアドレスからはじまって、長さ4*argcの領域を確保する。 つまり擬似コードであらわすと chunk = malloc(4*argc); memcpy(chunk, argv, 4*argc); という感じか?厳密にはchunkはアドレスじゃなくてアドレスを持つ オブジェクトが入るから違うが。 で、 (si:unpack-int32 chunk (* i 4)) で、(chunk + (i*4))のアドレスから、4byteを、 intの値とみて読む。 これはchunk自体は単なるデータの列、つまりunsigned charの 配列みたいなもんなので、perlのunpackとかみたく、一定の 長さをもってintとみなす、みたいな感じじゃないと読めない訳だ。 続く
486 :
475 :04/02/03 23:29 ID:6E/Bzlou
で、そこに入ってる値、というのはようするに、 (int)((unsigned char)argv+(i * 4))なので、argv[i]になる。 つまり lstrlenA(argv[i]) と (lstrlenA (si:unpack-int32 chunk (* i 4))) がだいたい同じになるのかな。 後はchunkのあるアドレスからの文字列の再現方法、 つまりsi:unpack-stringが理解できればだいたいわかる と思う。 漏れも素人なのでchunk回りは苦手です…
487 :
484 :04/02/03 23:57 ID:M73DNG4q
使い方がわからないやしスレで聞いています。 失礼しました。
howm使い始めて、だんだんその便利さがわかってきました。 平岡さんkimuraさん感謝です。 howmの内容画面(howm-view-contents-mode)で、 リンクへのジャンプ(C-c , nやC-c , pに割り振られている 機能)をTABやShift-TABに割り振るにはどうしたら いいんでしょうか。 howm-init.lのそれらしいところを変えようとしたんですが わかりませんでした。
>>488 << howm-init.l >>
;; howm-menu-mode のキーカスタマイズをしたい場合以下を有効に。
(defun howm-menu-key-customize ()
(when (eq major-mode 'howm-menu-mode)
;; ここにキー定義を書く。
(define-key howm-menu-mode-map #\TAB 'elisp-lib::action-lock-goto-next-link) ←@
(define-key howm-menu-mode-map #\S-TAB 'elisp-lib::action-lock-goto-previous-link) ←A
))
(add-hook 'action-lock-mode-on-hook 'howm-menu-key-customize)
これで@は動きましたよ。
ただAは S-TAB がダメらしく怒られてしまいます。
ここどうすればいいんでしょう。どなたかお願いします。
>>489 使ってないFunctionキーとかに登録してから、エイリアスさせるんだったような。
(set-extended-key-translate-table exkey-C-tab #\F19)
(global-set-key #\F19
'elisp-lib::action-lock-goto-previous-link)
直し忘れてC-tabになってるのはご愛敬。
フラッシュメモリにxyzzyを入れようと思ってディレクトリのサイズを見たら357Mも有った。 辞書入れてるとはいえここまででかいと笑える 皆さん、どれくらい肥大化してますか?
>>492 あなたには負けました。
普通です。38.58MB。Meadowより小さいな。
142MBそのうち.2chの容量が102MB……
とうとう一年経ったか。
>327 LISPがよく分かっていないのでコードがとても恥ずかしいですが, とりあえずこれでどうでしょうか. とりあえずindent-current-bufferの代わりです. 誰か書き直し求む. ;;KaTeX用偽インデント (defun KaTeX-nise-Indent () (interactive) (setq eofchk nil) (do () (eofchk) (goto-bol) (if (looking-at "^[ \t ]*") (delete-region (match-beginning 0) (match-end 0))) (elisp::KaTeX-indent-line) (setq eofchk (not (next-line)))) )
>>489 ,
>>490 ありがとうございます。
ただ、メニュー画面だけじゃなくって内容を書くバッファでも
TABでジャンプしたいんです。
minorーmodeがhowmの時にキー定義が有効になるように
できればいいんでしょうか?
>>496 同じものを書き直してみますた。
;;KaTeX用偽インデント
(defun KaTeX-nise-Indent ()
(interactive)
(loop
(goto-bol)
(if (looking-at "^[ \t ]*")
(delete-region (match-beginning 0) (match-end 0)))
(elisp::KaTeX-indent-line)
(unless (next-line)
(return))))
>>497 elisp-lib::howm-mode-map に define-key すればいけます。
>>497 できました!ありがとうございます。めちゃ快適です。
howm-init.lに追加したもの
(define-key elisp-lib::howm-mode-map #\TAB 'elisp-lib::action-lock-goto-next-link)
(set-extended-key-translate-table exkey-S-tab #\F19)
(define-key elisp-lib::howm-mode-map #\F19 'elisp-lib::action-lock-goto-previous-link)
502 :
名無し~3.EXE :04/02/04 21:13 ID:vpsQvXFN
>>492 拡張しすぎて693MB(辞書コミ)・・・そろそろCD-Rに入らなくなるかも
ちょっと話ずれるけど、
>>492 > フラッシュメモリにxyzzyを入れようと思って
.xyzzy.historyとxyzzy.iniがユーザー名のフォルダに保存されちゃうから、
持ち歩いて出先で使ったりするのは不便じゃない?いちいちフォルダ名変えなきゃいけない。
506 :
502 :04/02/05 00:14 ID:lQ2Ve91t
>>504 英辞郎は156MBですた。結構大きいね。
1.25GBってなんじゃこりゃああああ! と思ったらbackupが874MBあった。 2chは303MB・・・
>>505 そうですね。
でもメモ帳やワードパッドを使う苦労よりもxyzzyを使いたい。
辞書と2chがネックだからそこを外せばなんとか。辞書はウェブ上にもありますし。
拡張を絞れば30MBくらいには収まると思うのですが
ええと、WZ の階層つきテキストで、 アウトラインツリーを横に表示するんでなく、 行の先頭にある . の数でその行を色分けしてくれるような モードってあるでしょうか。 要は、 .大.見出し<青 ..小見出し<緑 地の文<黒 みたいな感じで色分けするモードです。 行頭の.の数で色変えするっていうのを どういうふうに指定したらいいのかさっぱりわからない。
>>510 正規表現キーワードで指定する
質問です.バッファに関連付けられたプロセスがどれだけCPUパワーを消費しているか
調べる方法は無いでしょうか.プロセスが入力待ちか計算中かを調べようとしています.
process-status はこの目的では使えないみたいです.
どなたかお願いします.
あ、また番号ずれてる…(T-T)
514 :
496 :04/02/06 00:38 ID:NSsLO99D
>498 ありがとうございます. ところで,KaTeXの KaTeX-indent-line がキー割り当てに登録されていなかったことに今気づいたですが, これはどう したらよいのでしょうか. KaTex.lの (define-key *KaTeX-mode-map* #\C-i 'KaTeX-indent-line) だけが登録されていない(?)ようでLocal Bindingsに現れず, Global Bindingsに RET newline が出てくるだけです.
>>514 C-i は RET じゃないよ。TAB だよ。
RET は C-m のはず。
516 :
496 :04/02/06 17:30 ID:NSsLO99D
>515 派手に間違えてました.なぜ知らないんだ自分. ありがとうございます.母も非常に感謝しておりました. 早速C-mにキー割り当てをしてみようと思います.
正規表現による検索で,コンパイルはするものとして 正規表現の書き方で処理効率が結構変わるみたいなんですが,xyzzyでは どんな書き方すると平均して早い処理時間ですますことができるんでしょうか. コツみたいなものがあったら教えてください.
2ch-mode で、本文行頭の半角スペースを消すにはどうすればいいですか? 他にコピペするときなど、行頭スペースを消すのが面倒です。
>>518 本文行頭の半角スペースを消してコピー(または ペースト)する lisp を書くのが
てっとりばやいと思います。
2ch-modeでたとえば
>>1 みたいなリンクを
1までスクロールせずにポップアップみたいにできないのかな?
>>521 ESC m してからマウスカーソルを合わせる
カーソルを合わせて p
あとeとかEとか
>518 これでどうだ。 (setq *thread-body-left-space* "") (nsubst '("<[Bb][Rr]> ?" . "\n") '("<[Bb][Rr]> ?" . "\n ") *special-string-list* :test 'equal) ところで、*special-string-list* 見ていて気がついたんだが、 &amp と &amp; は連想リストの最後にまわさないといけ ないような気がする。そうしないと &amp;lt; とかが > に変換されてしまうのでは…?
525 :
521 :04/02/08 16:12 ID:3yDj1yNo
ほんとうだ、いろいろあるんですね、サンクス
バッファを閉じる際にWindowsみたいに「保存するか否か」を 聞くようにする方法、ありますか? xyzzyそのものを閉じるときにそうするスクリプトは見つけたのですが...
>>524 ありがとうございます!ちゃんと Lisp 勉強します。
x,y,z,z,y,enter,shift ってセコイよな・・・
>>526 *query-kill-buffer-hook*でやろうとしたけど、難しかったので下のように書いてみました。
変な動きをしたら、自分でデバグしてください。
(defun kill-buffer (buffer)
(interactive "bKill buffer: " :default0 (selected-buffer))
(if (with-set-buffer
(save-excursion
(set-buffer buffer)
(if (run-hook-with-args-while-success '*query-kill-buffer-hook*)
(if (need-buffer-save-p buffer)
(if (yes-no-or-cancel-p
"~Aの内容は変更されています。\n変更を保存しますか?" buffer)
(save-buffer-dialog)
t)
t))))
(delete-buffer buffer)))
排他制御を切ってテキスト閲覧→「外部で更新がありました」 →いちいちうざい ちょとワロタ
532 :
名無し~3.EXE :04/02/10 12:09 ID:hXDCHDMM
インクリメンタルサーチで関数名だけ検索したいんですができますか? 関数リストがインクリメンタルサーチできればいいんだけど…
perform-multiple-replace の引数と返り値の詳細について,referenceを 用意していただけませんか.lispプログラム内から使いたいのですが,引数に何を 与えればいいのかよく分かりません.
534 :
名無し~3.EXE :04/02/10 22:54 ID:PfMfzU8Z
とあるディレクトリのファイルサイズを調べたいんですが どうすればよいですか?
>>532 M-x list-function じゃだめ?
後は grep の結果のバッファでぐらいしか思いつきません。
つーか、何の関数?
>>534 ファイラで選択して C-u とか。
2ch_mode_otherbbs.l 入れると 2ch-mode の色付け設定が初期化されてしまう気がするんだけど俺だけですか?
>>1 ↑こういうのとか。
>536 それって数字リンクが黒くなってしまうということでしょうか? 2ch_mode_otherbbs.l 入れる前にはそうなっていなかったですか? ちらっと見た限りではデフォルトでも数字リンクは黒くなってしま うような気がするのですが…
俺は会社で見ているため、無理矢理リンクとかの装飾とかペインをとっぱらって プレーンテキストで表示されるようにしてる。
>>533 ども。
> perform-multiple-replace の引数と返り値の詳細について,referenceを
> 用意していただけませんか.lispプログラム内から使いたいのですが,引数に何を
> 与えればいいのかよく分かりません.
perform-multiple-replace
引数:
(pattern-replacement-list query regexp interactive-p noerror)
標準の perform-replace (lisp/search.l) との違いは、
pattern-replacement-list 引数のみ。
pattern-replacement-list:
pattern, replacement の cons pair を要素とするリストを指定。
ex.: (("pattern1" . "replacement1") ("pattern2" . "replacement2") ...)
query:
non-nil 置換問い合わせあり
regexp:
non-nil pattern-replacement-list の各要素内 car 部 (pattern 部) を
正規表現とみなす
interactive-p:
non-nil perform-multiple-replace の呼び出し元 function が interactive に
呼びだされたことを示す。
(pattern-replacement-list の保存、messege 出力を行う。)
noerror:
non-nil error を無視する。
(pattern にマッチしない場合のメッセージを出力しない。)
返り値:
置換した個数
>>536 ども。
> 2ch_mode_otherbbs.l 入れると 2ch-mode の色付け設定が初期化されてしまう気がするんだけど俺だけですか?
>
>>1 > ↑こういうのとか。
xyzzy Part5 の 389 に書いてみた thread-convert-anchor を適用していませんか?
標準では
>>1 のようなものは色付けされません。
541 :
533 :04/02/11 16:40 ID:EQcxN/15
>540 なるほろ…。 よろしければ、マージさせていただいてもよかですか…?
>>537 ,
>>540 あ、そうでした。
標準じゃなかったです。すみません。
で、上手く両立ってムリですか?
手元ではマージさせました。 一応コードを…。2ch_mode_otherbbs.l の thread-convert-anchor を修正してください。 (追加 >536 さんは追加しなくても構いません) (defvar *thread-fgcolor-anchor* *thread-fgcolor-body*) (修正 2ヶ所あります) (defun thread-convert-anchor () (save-excursion : 'anchor :bold t :foreground *thread-fgcolor-anchor*))) : 'anchor :bold t :foreground *thread-fgcolor-anchor*))))) >540 さんがよろしければUPしている方にもマージさせますが… もしよろしければおっしゃってください。
ども。
>>542 ,
>>544 > よろしければ、マージさせていただいてもよかですか…?
オリジナルのコードに 2 行ばかしゴミをくっつけさせてもらっただけのもの
ですし、どぞどぞご自由にしてください。
様々なコードがいいカンジになっていくのが一番です。
546 :
532 :04/02/12 14:39 ID:wEEp2//q
>>535 >M-x list-function じゃだめ?
ありがとうございます。
関数は list-function で一覧できるものなのですが、
list-function ダイアログでインクリメンタルサーチが使えればいいのですが、
キーを打ってみても、一文字目しか検索してくれない
getter ,setter がいっぱいあるので getHoge と getFuge とか
結局カーソルキーで選択していくことになります
もしかして list-function 時に
ダイアログでなくバッファに展開して…とか設定ありますか?
LISPモードで関数名の補完ってどうやればよいのですか?
ESC-tab か、 Ctrl-[ tab
>>541 > もしかして list-function 時に
> ダイアログでなくバッファに展開して…とか設定ありますか?
(in-package "editor")
(require "listfn")
(export '(list-function-buffer))
(defun list-function-buffer ()
(interactive)
(unless (and (eq *list-function-buffer* (selected-buffer))
(eql *list-function-modified* (buffer-modified-count)))
(setq *list-function-list* (long-operation
(save-excursion
(funcall build-summary-function)))
*list-function-buffer* (selected-buffer)
*list-function-modified* (buffer-modified-count)))
(let ((file (file-namestring (get-buffer-file-name *list-function-buffer*))))
(with-output-to-temp-buffer ("*listfn*")
(dolist (fn *list-function-list*)
(format t "~A:~D ~A~%" file (car fn) (cadr fn))))))
>>550 あう、自分も作ってたのに…。多少強化版なので一応コードさらしておきます。
>>546 site-lisp下にfnc-menu.lで保存してバイトコンパイル。(require "fnc-menu")してください。
(provide "fnc-menu") (in-package "editor") (require "listfn")
(defvar *function-menu-mode-map* nil)
(unless *function-menu-mode-map*
(setq *function-menu-mode-map* (make-sparse-keymap))
(define-key *function-menu-mode-map* #\q 'function-menu-close)
(define-key *function-menu-mode-map* #\RET 'function-menu-jump))
(defun user::function-menu ()
(interactive)
(function-list)
(if *list-function-selected*
(scan-buffer (format nil "^[ ]+~A[ ]+" (car *list-function-selected*)) :regexp t)))
(defun function-list ()
(unless (if (eq *list-function-buffer* (selected-buffer))
(eql *list-function-modified* (buffer-modified-count)))
(setq *list-function-list* (long-operation
(save-excursion
(funcall build-summary-function)))
*list-function-selected* nil
*list-function-buffer* (selected-buffer)
*list-function-modified* (buffer-modified-count)))
(let ((cfg (current-window-configuration)))
(with-output-to-temp-buffer ("*Function List*")
(format t " Line Function~% ---- --------~%~:{ ~8A ~A~%~}"
*list-function-list*)
(goto-char (point-min)) (function-menu-mode cfg))))
552 :
551 :04/02/13 09:50 ID:MqQKQP2K
;;;続き (defun function-menu-mode (cfg) (interactive) (kill-all-local-variables) (make-local-variable 'kept-undo-information) (make-local-variable 'need-not-save) (make-local-variable 'auto-save) (make-local-variable 'revert-buffer-function) (setq buffer-mode 'function-menu-mode mode-name "Function menu" buffer-read-only t kept-undo-information nil need-not-save t auto-save nil revert-buffer-function #'function-list) (unless (local-variable-p 'original-config) (make-local-variable 'original-config) (setq original-config cfg)) (use-keymap *function-menu-mode-map*)) (defun function-menu-close () (interactive) (set-window-configuration (prog1 original-config (delete-buffer (selected-buffer))))) (defun function-menu-jump () (interactive) (let ((x (save-excursion (back-to-indentation) (when (looking-at "[0-9]+ ") (list (parse-integer (buffer-substring (point) (progn (scan-buffer " ") (point)))) (progn (skip-chars-forward " ") (buffer-substring (point) (progn (goto-eol) (point))))))))) (when x (setq *list-function-selected* x) (function-menu-close) (set-buffer *list-function-buffer*) (goto-line (car *list-function-selected*)))))
すみませんが教えてください。 2ch-modeを起動する時に必ず新しいウィンドウを開くようにするやり方がどこかにあった気がするんですが、Wikiとか探してもみつからない。 しかも2ch-mode起動中に新しいファイルを開いても2ch-mode以外のウィンドウに開いてくれるようなやつ。 どなたか知りませんか?
>>547 536 です。ありがとうございました。
# backgroud の方も追加してみたら動いてるみたいです。
>>553 > 2ch-modeを起動する時に必ず新しいウィンドウを開くようにするやり方
これはよく知らないけど、こんな奴かなぁ。
(defun foo ()
(interactive)
(call-process "C:\\xyzzy\\xyzzy.exe -f 2ch"))
> しかも2ch-mode起動中に新しいファイルを開いても2ch-mode以外のウィンド
> ウに開いてくれるようなやつ。
大久保さんとこの*scratch*にあります。
引用しておくと
;; 2ch-mode 時は別の xyzzy を立ち上げる
(add-hook '2ch::*2ch-start-hook* 'stop-xyzzy-server)
(add-hook '2ch::*2ch-exit-hook* 'start-xyzzy-server)
だそうです。
556 :
553 :04/02/14 16:39 ID:wNkR6Q6e
>>555 後者のがまさに探していたものでした。ありがとうございました!
KaTeXでIMEオンの状態で数式入力すると$の補完がはたらくけど その際にIMEがオフになってしまうのが激しく大きなお世話です これってIME解除させなくすることってできるんでしょーか?
>>557 > KaTeXでIMEオンの状態で数式入力すると$の補完がはたらくけど
> その際にIMEがオフになってしまうのが激しく大きなお世話です
意味が分からん。
具体的にどういう操作をしているか教えてくれたら力になれるかもしんない。
559 :
532 :04/02/17 10:28 ID:4QCAir5Z
560 :
532 :04/02/17 11:52 ID:4QCAir5Z
>>551 自分の使い方では、関数リストの一番上でなくて現在位置に来る方が良かったので
苦労して修正してみました 関数一つだけ
(defun function-list ()
(unless (if (eq *list-function-buffer* (selected-buffer))
(eql *list-function-modified* (buffer-modified-count)))
(setq *list-function-list* (long-operation
(save-excursion
(funcall build-summary-function)))
*list-function-selected* nil
*list-function-buffer* (selected-buffer)
*list-function-modified* (buffer-modified-count)))
(let ((cfg (current-window-configuration))
(listpoint 0)
(currentline (current-line-number)))
(with-output-to-temp-buffer ("*Function List*"))
(insert (format nil " Line Function~% ---- --------~%"))
(setq listpoint (point))
(dolist (x *list-function-list*)
(if (< (first x) currentline)
(setq listpoint (point)))
(insert (format nil "~{ ~8A ~A~%~}" x)))
(goto-char listpoint)
(function-menu-mode cfg)))
561 :
名無し~3.EXE :04/02/17 12:42 ID:20R6qtA9
すんません。使い始めたばかりです。 perlで[.plx]の拡張子を使っているのですが、 これをPerlスクリプトだと認識させる方法はどうやるのですか? .pl .pm .cgi は認識するようにはなっているようですが。
562 :
551 :04/02/17 14:39 ID:31Wdz7dC
>>560 たしかにそっちの方が良いですね。
>>561 (pushnew '("\\.plx$" . perl-mode) *auto-mode-alist* :test 'equal)
ですか?
563 :
561 :04/02/17 16:42 ID:20R6qtA9
>>562 /xyzzy/lisp/perl.l
に以下のような行があったんで書き足して見ましたが、駄目でした。
(pushnew '(perl-maketags "*.pl" "*.plx" "*.pm" "*.cgi") *maketags-list* :key #'car)
たぶん、とんでもない質問だと思いますが、
このあとどうすれば設定が反映されますか?
perl.lc があったら削除して再バイトコンパイルかな?
**.l **.lc **.ssn 用のアイコン配ってる所あります? 使うようになりだして、飾り気のないままなのが気になってきた…
>>563 いや、だから
>>562 でいけるばず。
/xyzzy/.xyzzy ファイルがなければ用意して
>>562 の一行を書いて再起動でどう?
後、環境変数 XYZZYHOME に xyzzy.exe があるパスを設定するのを忘れずに。
/xyzzy/lisp 以下のコードを直接書き換えるのはあまりお勧めできない。
バージョンアップした時にまた書き直さないといけないからね。
# そういや最近バージョンアップないなぁ・・・
567 :
561 :04/02/17 18:31 ID:20R6qtA9
>>566 すいません。物分り悪くて。
御指摘の方法でうまくいきました。
ありがとうございました。
開発中止?
( ゚д゚)?
570 :
KingMathematician ◆5lHaaEvFNc :04/02/18 05:34 ID:vMC64SR+
疑問に思ったことなんだけど、 辞書モードにしたときに異常に重い時があるのは吾だけですか?
573 :
名無し :04/02/18 13:20 ID:9zsi/Dn6
574 :
572 :04/02/18 17:25 ID:wBQfEc/P
>>573 ありがとうございます。なんとかできました。
実は恥ずかしながらキー設定も初めてでした。
.xyzzyに書いても全然有効にならなかったので「違うのかしら?」と
しばし悩んでしまいましたが、siteini.lに書いてコンパイルしたら
うまく行きました。
どうもCraftLaunchから呼び出すと .xyzzyが無効になっちゃうみたいですね。
なんででしょ?
575 :
名無し :04/02/18 17:41 ID:9zsi/Dn6
>>574 > どうもCraftLaunchから呼び出すと .xyzzyが無効になっちゃうみたいですね。
CraftLaunch 2.08 から呼んでも有効ですが。
577 :
574 :04/02/18 19:25 ID:wBQfEc/P
>>575-576 お世話になってます。
過去ログ見たら既出でしたね。。。すみません。
XYZZYHOMEの設定はしてあったのですが、CraftLaunchの作業フォルダが
設定されていました。消してみたら読み込むようになりました。
恥かきついでにhowm-wrapについてお伺いしたいのですが、
励ますスレの方が良いでしょうか。。。なんだか申し訳ないです。
常にロシア語でものを考えろ。
579 :
KingMathematician ◆5lHaaEvFNc :04/02/18 19:40 ID:vMC64SR+
プレビューを見ながらHTMLソースを編集できるという機能があったような気がするのですが、 それを解説しているWebページが見つかりません。 あれは吾の気のせいだったのでしょうか?
set-extended-key-translate-tableを使用して2ch-modeで S-spaceをthread-previous-pageに使用しています。 この設定で困ったことが1点ありまして、私の場合、 IMEをオンにして文章を入力しているときS-spaceで 半角space入力をしているのですが、上記の設定を適用すると、 2ch-mode以外でもS-spaceで半角space入力が出来なくなってしまいます。 set-extended-key-translate-tableをmode限定にする等、 何か回避策はないでしょうか? 環境はXP Home、ATOK13、xyzzy 0.2.2.233です。
>>580 試しに
.xyzzy に
(set-extended-key-translate-table exkey-S-space #\F14)
(global-set-key #\F14 #'(lambda () (and (get-ime-mode) (insert #\SPC))))
config.l に
(set-extended-key-translate-table exkey-S-space #\F15)
(define-key *thread-map* #\F15 'thread-previous-page)
と書いて見ましたが、問題なく動いているようです。???
>>580 *global-keymap* の該当キーに
(defun insert-half-width-space (&optional (arg 1))
(interactive "*p")
(let ((*last-command-char* #\SPC))
(self-insert-command arg)))
これでも割り当ててみてくださいな。
scheme-mode 誰かこっそり作ってないですか?
CommonLispの勉強をしています。とある入門書に、 (defun powerset (lst) (if (null lst) '(nil) (let ((a (first lst)) (p (powerset (rest lst)))) (append (mapcar #'(lambda (s) (cons a s)) p) p)))) というベキ集合を調べる関数が載っていたのですが、 この関数をxyzzyで実行すると、 ((a . #1=(b . #2=(c))) (a . #3=(b)) (a . #2#) (a) #1# #3# #2# nil) という不思議な結果が返ってきます。本当は、 ((A B C) (A B) (A C) (A) (B C) (B) (C) NIL) という結果になるみたいですが、何故なのでしょうか?
587 :
名無し~3.EXE :04/02/19 07:41 ID:EKXOuCdF
588 :
586 :04/02/19 08:22 ID:TRA9gET2
>>587 あぁ、なるほど。
#1=(b c)、#2=(c)、#3=(b)と、#1#、#2#、#3#がそれぞれ
対応しているのか。注意力足りなかったです。
ありがとうございました。
オークションでLispの本9000円で落としたやつ発見!
590 :
KingMathematician ◆5lHaaEvFNc :04/02/19 11:03 ID:vqsCcgJb
五目ならべ、コンピュータは4個並んでいるところがあっても、
こちらが33とかをやると、直ぐには5個揃えなくなることがある。
これでコンピュータを先手にしても勝てる。
Re:
>>585 どうもありがとうございます。これを使うために環境変数を設定したいのですが、
xyzzyの起動と同時に環境変数XYZZYHOMEを設定して終了と同時にXYZZYHOMEを削除する機構はできますか?
>>590 試してないしもしかしたらコンソール出てうざいかもだけど、
set XYZZYHOME=path
start c:\〜\xyzzy.exe
っていう.batもしくは.cmdなファイルを書くとかかな。
xyzzyで以下のwwwサーバをたてて,
ttp://www1.odn.ne.jp/ymtz/tips.html#wwwsvr (progn
(defun filter (proc in) (insert in))
(setq proc (open-network-stream (selected-buffer) "localhost" 80))
(set-process-filter proc 'filter)
(process-send-string proc "GET /\n"))
でアクセスするのですが,結果が得られません.
ブラウザでは結果が返ってきます.どうしてでしょうか.
昔からある言葉ではなく、ウィザードリーが発祥だと思われ。
kamailに関して質問してもいいでしょうか? 最近IMAPのアカウントを二つ手に入れて、以前から使っているものを合わせて三つになりました。 そういうわけでそれらをkamailで使おうを思ったのですが、複数のアカウントは設定できない模様。 ぐぐって見ても解決策が見当らないのですがIMAPに関しては一つしか無理なのでしょうか? ご協力お願いいたします。
>>594 隠し呪文なんだそうな。詳しくは知りません^^;
>>595 フォルダで設定すればいくつでもいけるはず
>>592 (progn
(defun filter (proc in) (insert in))
(setq proc (open-network-stream (selected-buffer) "localhost" 80))
(set-process-filter proc 'filter)
(process-send-string proc "GET / HTTP/1.1\n\n"))
としてみなさい。
HTTPのrequestは以下のように定義される。
Request = Request-Line ; Section 5.1
*( general-header ; Section 4.5
| request-header ; Section 5.3
| entity-header ) ; Section 7.1
CRLF
[ message-body ] ; Section 7.2
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
すなわちRequest-line の最後のCRLFとヘッダとbodyを区切るCRLF
と2つ\nが必要なわけ。
で、一つしか送っていないからread-lineで刺さっている。
>>598 open-network-stream のreferenceが間違っているのか。
yahooからならGETできるのはサーバ側でタイムアウトしてるから
だろうね。
601 :
KingMathematician ◆5lHaaEvFNc :04/02/21 09:54 ID:22akZFde
Re:
>>591 どうもありがとうございます。でも、真っ黒のウィンドウがうっとうしいのでもう、XYZZYHOMEを入れました。
>>601 一瞬で消えるはずなんですけどやっぱりうざかったですか。
WSHを書いてみたものの、環境変数がうまく伝播してくれないようなので没。
NAVも過敏反応するし。
というかXYZZYHOMEの切り替えが目的ではなく、たんに環境変数をセット
したくないだけなら、ini内に[init]homeDirの項目で指定すればよいらしいです。
emacsで、この関数を使っているんですが、 xyzzyで使う場合、 どうしたらいいでしょうか? ;; →カーソルのすぐ左にある単語を大文字 ;; →先頭だけ大文字 ;; →小文字 (defun changecase-word (cnt) (interactive "p") (if (not (eq last-command 'changecase-word)) (setq changecase-word-type 0)) (cond ((= changecase-word-type 0) (upcase-word (- cnt)) (setq changecase-word-type 1)) ((= changecase-word-type 1) (capitalize-word (- cnt)) (setq changecase-word-type 2)) (t (downcase-word (- cnt)) (setq changecase-word-type 0 ))))
>>603 自信ないけどこんなかな?
(defvar *changecase-word-type* 0)
(defun changecase-word (&optional (cnt 1))
(interactive "p")
(unless (eq *last-command* 'changecase-word)
(setq *changecase-word-type* 0))
(cond ((= *changecase-word-type* 0)
(upcase-word (- cnt))
(setq *changecase-word-type* 1))
((= *changecase-word-type* 1)
(capitalize-word (- cnt))
(setq *changecase-word-type* 2))
(t
(downcase-word (- cnt))
(setq *changecase-word-type* 0 ))))
>>604 問題なく動作しました。
ありがとうございました。
ミニバッファから文字列を取得する際、 \nとか\tをエスケープ文字として扱うのに巧い方法はないでしょうか?
>>607 あ〜、例えば
(read-string "")
でミニバッファに
\n
と打ち込むとそのまま"\n"が取得されますよね?
これを改行のエスケープ文字として扱いたいんです。
(substitute-string (read-string "") "\\\\" "\\")
でも無理だし……。
>>608 (decode-escape-sequence (read-string "") nil)
詳しくはreference.xmlを見てね。
>>609 う、そんな関数がありましたか。
ばっちりです、ありがとうございました。
611 :
名無し~3.EXE :04/02/23 14:02 ID:o8TUof5Y
ウィンドウの高さを変えたいのですがどうすればいいのでしょう? ウィンドウといってもxyzzyで言うところのウィンドウではなくて Windowsで言うところのウィンドウです(xyzzy自体) 右上のボタンでできる「最大化」ではなくて、縦幅のみ最大化したいのですが
>>612 はへ?枠引っつかんで引っ張るだけだと思うのですが。
なんか漏れが誤解してるんだったらスマソ。
lispで変えたいってんじゃないのか? 確か過去ログにWIN32APIを使ってウィンドウを最大化するコードがあったからそれをいじれば何とかなるはずだが、 肝心のコードがどこにあるか失念した。
616 :
KingMathematician ◆5lHaaEvFNc :04/02/25 00:13 ID:fgg6WQPZ
xyzzyのマニュアルってどこから読めばいいのか分からない。(ソフトの作者が書いたのではないようだが。) とりあえず片っ端から読むのが正解なのだろうか?
>>616 「習うより慣れろ」
というかマニュアルってどれ?なんの話?
リファレンスのこと? とりあえず、必要な機能を探すときにしか読まないけど・・・・。
片っ端から読むのもいいけど、 わからない→ぐぐる。これで十分。
呼んだ事無いな、MLのログなら読むけど
>>616 cygwin スレでも言われたと思うが、本人以外でも理解できる文章の書き方を学んでくれ。
あと sage を覚えろ。
漏れも今はなんとか使えるようになったが、最初は何をどうして いいのやらさっぱりわからなくて半年ほど投げ出してた。 で存在すら忘れかけてた頃にhtml+-modeをどうしても使いたくなって ググって関連サイトを読む→意味わからん→もう一度読む を繰り返し、ようやく使えるようになった。 あの頃は本当にマニュアルがあればなあと思ったよ。 でも一つモードを覚えるとかなりとっつきやすくなると思う。 って言ってもlispは相変わらずわからないし、 どうにかこうにか使ってるってレベルなんだけど。
マニュアルとは言っても、人によって使うモードやコマンドが全然違うから 書こうにも書けないんだろうね。結局は本人が使いながら覚えていくしかない。
熟成された .xyzzy を見たいです。どこかないですか。
;熟成してないけどこんな感じ (provide "my-xyzzy") (export '(インクリメンタルサーチ 2ch-mode www-mode 送るでgrepダイアログっぽい emacsキーバインド siteinit.lを再コンパイルして有効にする KaMail タブ表示文字変更 リファレンス起動 C-zでアイコン化 終了時に必ず確認をだすようにする 高速移動用 デフォルトフォルダ設定 numbaric-dmacro .xyzzyを開く バッファをKillしてウィンドウも閉じる コンパイルビルド))
xyzzywiki に掲載コーナーがあるといいかも。
.xyzzyは長いから、1つのページにまとめるのはきつそうだ。 .xyzzy掲載用のフロントページみたいなの作って、そっからリンク張っていく方式がいいのだろうか?
.xyzzyは結構小さいとオモウ。 キーバインドにかんしては.xyzzyにあった方がいいと思うが 試してみたりするのには便利だけど、大きすぎると読み込みがとろくなるし
自分の場合、.xyzzy はカテゴリ別に分類された設定ファイルを load-file する だけになってる。 (si:*load-library "hoge-conf" :if-does-not-exist nil) こんなのが設定ファイル数分あるだけ。こうしとくとファイルが読み込めなくて もエラーにはならないのでちょっと嬉しいかも。
>624が見たいのは,.xyzzyとsiteinit.lの両方というか .emacsに対応するもののことだと思われ
631 :
624 :04/02/26 09:33 ID:1zPFz7ib
>>630 そうです。他人の .emacs ってすごく勉強になりますよね。
632 :
612 :04/02/26 16:03 ID:aIftz5Xm
>>613-615 おお、そうです、lispで(というか一発で)変えたいのです
でhieさんとこの見てきたのでだいたいできました。
(defun xyzzy-resize-maxheight ()
"xyzzyの縦幅を最大化"
(interactive)
(when (not *old-size*)
(setq *old-size* (winapi:make-RECT))
(GetWindowRect (get-window-handle) *old-size*)
;位置/サイズを指定
(SetWindowPos (get-window-handle) 0
(winapi::RECT-left *old-size*) ;X座標
-5 ;Y座標
(- (winapi::RECT-right *old-size*) ;ウィンドウ幅
(winapi::RECT-left *old-size*))
1000 ;ウィンドウ高さ
0)))
(list-bind (a b c) '(1 2 3 4) (+ a b c)) と入れると, (let ((a 1) (b 2) (c 3)) (+ a b c)) と展開されるマクロを書こうとして,下のができたんですが うまく動きません. (defmacro list-bind ((&rest vars) vals &body body) `(let ,(mapcar #'list vars vals) ,@body)) (list-bind (a b c) (1 2 3 4) (+ a b c)) こうなら動くんだけど. だれか直してください
>>633 ども。泥臭いですけどね。
(defmacro list-bind ((&rest vars) vals &body body)
(if (eq 'lisp::quote (safe-car vals))
(setq vals (cadr vals)))
`(let ,(mapcar #'list vars vals) ,@body))
(list-bind (a b c) (1 2 3 4) (+ a b c))
=> 6
(list-bind (a b c) '(1 2 3 4) (+ a b c))
=> 6
635 :
633 :04/02/26 18:40 ID:5E98rGbJ
>>634 レス thxです.
あー,こうだと vals に変数を使えないですよね.
変数リストは直接書いて値のリストは変数で指定したいのです.
言葉足らずでした,ごめんなさい.
(list-bind (a b c) (1 2 3 4) (+ a b c)) という使い方はしません.
使用例
(let ((x '(1 2 3 4)))
(list-bind (a b c) x
(+ a b c)))
=> 6
リストを構造体として使うと,
どこに何が入っているのか何回も調べることになるんで,リストの各要素に
名前を付ければ可読性が上がるだろうと思って,,,って,挫折中なのです
defstruct 使えっていうのは(ry
>>633 実行時に変数xがどれだけの長さか決まるので、letとかmapcarではちときつそうです。
multiple-value-bindとvalues-listで一気に設定するのがよさげです。
(defmacro list-bind ((&rest vars) vals &body body)
`(multiple-value-bind ,vars (values-list ,vals) ,@body))
(let ((x '(1 2 3 4)))
(list-bind (a b c) x
(+ a b c)))
=>6
637 :
633 :04/02/26 21:05 ID:5E98rGbJ
>>636 ありがとうございます. こんな関数があったんですね.
期待通りの動作です.
multiple-value-bind の定義見て勉強しようと
思ったけど builtin でしょぼーん
>>592 , 598-599
xyzzywikiの方で、open-network-streamとconnectの例の修正を取り込んでおきました。
他にもあれば突っ込んでももらえると嬉しいです。
640 :
633 :04/02/27 08:03 ID:YKQUu6/q
>>639 destructure ですか.ちょっと難しそうだけど勉強してみます.
でもへたれなんで日本語の方で.thxでした.
minorviewmodeを使っているとhowmがうまく動作しません。 toggle-read-onlyを変更すればできると思うんですが、 どなたかアドバイスいただけませんか?
>>641 ad-hocに。
(defun toggle-read-only (&optional (arg nil sv))
(interactive "p")
(toggle-mode 'buffer-read-only arg sv)
(or (equal mode-name "HM")
(view-minor-mode)))
>>642 うわー!! ありがとうございます。
どちらも思想がすきなので、とても感謝してます。
でもなんで直るか理解できない...
もうちょっと勉強してきます。
C-x & でコンパイルコマンド流したんじゃダメなのか?
>>644 コンパイルするのに打ち込むコマンド例を示さないと無理だと思われ.
コンパイラなんていくらでもあるでしょ.
>>644 fortran-mode にそんな機能はありません。
Makefile を作って C-& から make するのが一番だと思う。
オレはそうしてる。
C-x & の後のgccエラーでもfirst-error、ダブルクリックjumpできるように なりませんか?
replace-buffer の :literal の使い方が分からないのですが,どなたか 分かる人いませんか.単語単位の置換と思ったんですが,そうじゃないような. う〜ん.
メタ文字を意識するかしないか、の関係じゃないですかね たしか
652 :
651 :04/03/03 09:24 ID:M6QSXmey
> メタ文字を意識するかしないか、の関係じゃないですかね たしか メタ文字: \0, \& 一致した文字列全体 \1 〜 \9 正規表現検索での\(\)に対応する文字列 これですね.dクス. ところで referenceには scan-buffer に word-search というkeyがあると 書いてありますが,実際には無いですね.
>>652 そう、word-search、ないみたいですね。
正しくは、:left-bound、:right-boundなんだろうけど。
指摘者ということで、
貴殿がxyzzyWikiの「リファレンスにツッコミを入れる」に投稿してくれますか。
654 :
651 :04/03/03 11:20 ID:M6QSXmey
>>653 あぁ,これで単語単位の検索ができるんですね.
せっかくなので,気になった点をもう一つ.
builtin.l をみると, scan-bufferのkeyにはlimitが無いですけど,
実際に実行してみるとこのkeyは存在するみたいです.
このままだとldocでlimitが表示されないんで,buitlin.lを直接書き換えて
limitというkeyを追加してもいいんでしょうか.
とりあえずやってみたところ,おかしなことが起きないんですけど.
>>650 ,
>>652 ,
>>654 名前が 651 になってますが、650 ですよね?
>>654 > このままだとldocでlimitが表示されないんで,buitlin.lを直接書き換えて
> limitというkeyを追加してもいいんでしょうか.
> とりあえずやってみたところ,おかしなことが起きないんですけど.
ML で聞くべき内容に思えるので、ML に投稿してください。
立ち上げたときに scratch が開くのですが、 lisp-mode 以外(text-modeとか)で開けるにはどうすればいいのでしょうか。 lisp-mode にいろいろ引っかけすぎて起動が重いのです…
657 :
KingMathematician ◆5lHaaEvFNc :04/03/03 13:02 ID:se+YLFCZ
xyzzyでmaximaを使う方法はありますか? それと、よろしければ起動時のモード(text-mode,Lisp Interactionなど)を変える方法を教えてください。
>>657 (setq *default-buffer-mode* 'text-mode)
>>656 (setq *initial-buffer-mode* 'text-mode)
>>661 デフォルトと scratch の違い。
>>629 おれの .xyzzy も load-librar だけなんで短い。 .xyzzy にコード書くと
バイトコンパイルされてない分起動が遅いと思うのだけど、実際は差は
ないのかな。
新規作成したファイルの、デフォルトの文字コードをEUCに、改行コードをLFにしたいんですけど、どうしたらいいでしょうか。 今は、(M)ツール→ローカル設定→もろもろ を毎回ちまちまいじっています。
>>664 (setq *default-fileio-encoding* *encoding-euc-jp* *default-eol-code* 0)
これのようです。
C-x C-k で始まるkanji-mapもあります。
C-x C-k f で文字コード変更。大文字Fならデフォルトの文字コード変更。
C-x C-k n で改行コード変更(順々に変わっていく)。大文字Nならデフォルトの改行コード変更。
C-x C-k c でクリップボードエンコーディング変更。
文字コードもクリップボード...は、ミニバッファで入力するとき、タブで補完もできます。
>>665 ぬおおおぉぉぉ!べりーさんきゆー!
まるで10年悩んだ痔がヒサヤで直ったときのような感激だ。
ほんとは痔じゃないけど。想像でいってみました。
ついでに、
>>668 も痔だ。
だまされるな!!!
続けます。。。
テキストをソートすることは出来まつか? また出来る場合、やり方を教えていただければありがたいでつ。
行ごとにcut & paste を繰り返す・・・ じゃなくて、CSVモードで出来るんじゃないですか?
サンクスコ やってみまつ
ソートしたい範囲をリージョンにしてC-x |(←エルじゃないです。シフト押しながら\ね)と入力する。 で、ミニバッファにカーソル来るからsortと打つ。 選択した範囲のテキストをsort.exeというプログラムに渡して、処理した結果を 選択範囲と置き換えるというコマンドです。 (lispを使ったソート関数もあった気がするが、私はこっち使ってます) こーいうsort.exeみたいなプログラムをフィルタと呼ぶ。 フィルタは便利だぞー。awkとか、uniqとか。これを期に、いろいろ使ってみるとよい。 まあ、windows標準インストールされてるフィルタはsortくらいしか無いんだが・・・。
そこネットインストーラに追加したらエラー出る・・・
lisp のコードを書いてる皆さんに質問なんですが、 皆さんどうやって lisp の勉強されました? 自分でも改造してみたいなと思いまして。
俺も知りたい。
とりあえず俺↓
ttp://www.gentei.org/~yuuji/elisp/ を見てちょっと勉強。
で、普段のxyzzy上の作業で、
こうできたら良いのにな と思っていないかを考えて
あれば、簡単なものからそれを実現する方法を考えて書いてみる。
ぐだぐだ本を読むよりは、とにかくやってみた方が
できるようになるんじゃないの、と思っている人なんで。
まだ、「書ける」って感じじゃない。
具体的には、パソコン上でのメモ取りが楽しいので、
howm とか、Emacs方面のEmacs Wikiとか、
Windowsの 紙2001 とか、その他アウトラインエディタをいろいろ見て参考に。
メーラ、ブラウザとの連携もできると良いね、な感じ。
なのでvi-modeの作者のファンだ。
>>674 移転先の package.l を登録してる?
俺は問題ないよ.
678 :
675 :04/03/07 00:26 ID:+DhNNxUG
俺は最初EmacsLisperでOnLisp読んだりSICP読んだりしてたんだけど、 xyzzyに出会ってgrepd.lとかden8view.lとかc-modeとかのソース多少 読んだら後はaproposとかapiリファレンスだけでだいたいやりたい 事は出来たかなぁ。 最短で出来るようになる事を目指すともっと遥かに近道があり そうな気はするけど。
679 :
678 :04/03/07 00:27 ID:+DhNNxUG
すまぬ、
>>675 と書こうと思ってたら名を騙ってしまった。
>>678-679 675じゃないけど、知りたいのはどちらかというと
EmacsLisper までの道のりなんでは
>>675 やりたいことを細かく分けて、細かく分けた機能をテスト出来るような
コードを*scratch*に書いてC-jで確かめながら、とか。
分からない関数とかはマニュアルとか読んで、実際にコード組んで
確かめてみるとか。
他の人のコードはすごく参考になるけど、コードを読む、見るだけじゃ
なくて自分で少ない量でもいいからコードを組んで動かしながらやっ
てみればいいのでは?
682 :
675 :04/03/07 10:09 ID:wZohny1q
皆さんありがとうございます。
>>680 さんの言うとおり、lisp 自体まだあまりわかってません。
自分で実際に書いてみるのがよさそうですね。
簡単なものから挑戦してみます。
683 :
679 :04/03/07 10:18 ID:+DhNNxUG
EmacsLisperまでの道のりだと、変なオレンジに黒い線の入った、 薄いEmacsLispの入門書みたいなのを図書館で借りて、5時間 位で読んで、後はメジャーモードを書いてみたらだいたい一通り は理解出来たかなぁ。 そこからはdescribe-functionとdescribe-key-bindingsを頼り にガンガン書いたけど、xyzzyはdescribe-functionが役立たず なんだよな…
>>672 しらんかった。それ便利だなー。
Emacsでも使えないかな。
xyzzyで、関数の一覧をみるにはどうしたらいいでしょう。
>>685 何の関数によるからなんとも言えんのですが、
対応していれば M-x list-function で見る事ができます。
>>686 emacsでいえば C-h f して TABキー押したときのようなやつ。
どんな関数があるかとりあえず調べたい。
なお変数の一覧も調べたいんだが、M-x set-variable のあとにTABキー押せばいいことがわかったんで、とりあえずこれでなんとかなっている。もっとスマートな方法あればいいけど。
テキストの折り返しをxyzzy lispから制御するにはどうしたらいいですか。 メニューのツール→ローカル設定→もろもろ→テキストの折り返し で設定しているのをlispから行いたいんです。
>>688 事故解決です。
(set-buffer-fold-width width &optional buffer)
width が nil ならfoldしない、tならウィンドウサイズ、数字ならその幅。
xyzzy/lisp/*.el を grep fold したら、それらしいのが見つかりました。
xreaでMT導入してるから、mapae.lを使って更新しようと思ったんだけれど、 どうもうまくいきませんね。mt-xmlrpc.cgiの設定に一工夫必要なのかな? 誰かうまくいってる人いますか?
だれか設定済みxyzzyぷりーず。
693 :
KingMathematician ◆5lHaaEvFNc :04/03/13 07:56 ID:bGzTn9xy
晒しage
Re:
>>692 亀井さんのサイトに行け。
>>691 漏れxreaで使ってるが書きこめる様子。
しかし、前にmapaeで書きこんだら
idが割り振られない空のエントリーが出来てしまって
再構築はもちろん空のエントリーの削除も出来なくなり
blogを作りなおさなければならない状態になったので
あまり使いたくないな。
M-% で置換するときに、yやnで置換する、しないが選べますが、「置換してその場で終了」はどうしたらいいですか? Emacsなら、ピリオドをうつとその部分を置換して終了してくれますが、xyzzyは違うようです。
696 :
名無し~3.EXE :04/03/14 11:35 ID:Pb0FhdkT
q?
>>696 いいえ、qは「その場で終了」するけど、置換はしてくれません。
置換したうえで終了してくれる機能がほしい。
かめーさん生きてるのかな(ボソ
>>697 search.l 262-264 行目
(goto-char opoint)
(setq def 'quit)
(return))
↓
(setq def 'quit)
t))
search.l 286 行目
(when (eobp)
↓
(when (or (eobp)(eq def 'quit-and-back))
以上変更すれば、とりあえず . で変換後終了になります。
お客様の中にどなたか、どなたかお医者様はいらっしゃいませんか! いらっしゃるのなら2ch-modeみたいなRSS Aggregatorを至急作ってください! おながいします。
rss-modeじゃだめなのか?
warata
703 :
名無し~3.EXE :04/03/16 17:59 ID:1iYJ2TL+
HIEさんのホームページを参照させていただいて、 ;;ここから ;最近使ったファイルの削除 (defun del-file-name-history () (interactive) (setq *minibuffer-file-name-history* nil)) ;検索履歴の削除 (defun del-search-string-history () (interactive) (setq *minibuffer-search-string-history* nil)) ;メニューの追加 (add-hook '*init-app-menus-hook* #'(lambda () (insert-popup-menu *app-menu* (get-menu-position *app-menu* 'ed::window) (define-popup-menu (:item nil "最近使ったファイルの削除(&A)" 'del-file-name-history) (:item nil "検索履歴の削除(&B)" 'del-search-string-history) ) "メニュー(&M)"))) ;;ここまで これをsiteinit.lに記述して、メニューから最近使ったファイルの削除と検索履歴の削除ができるようにしてみました(これで本当に正しいのかどうかわかりませんが、とりあえず動いているようです)。 さらに、最近使ったセッションとGREPのディレクトリ履歴の削除もこのメニューに追加したいと思い、いろいろ試したのですがうまくいきません。 最近使ったセッションとGREPのディレクトリ履歴の削除をすることはできるのでしょうか?
704 :
名無し~3.EXE :04/03/16 18:02 ID:1iYJ2TL+
OHKUBO Hiroshiさんのpickup-patternを使用させていただいて、検索語の強調表示ができるようになりました(ありがとうございます)。 さらに、Grep結果(GrepダイアログとM-x grepの両方)からF10でジャンプした時とF11で次のGrep結果に移動した時に、Grepで入力した文字列の強調表示をすることは可能でしょうか? お分かりになる方がおられたらお願いします。
>>703 *session-file-history*
*grep-directory-history*
>>705 追記
両方とも export されてなかった。
こっちが正解。
ed::*session-file-history*
ed::*grep-directory-history*
707 :
名無し~3.EXE :04/03/16 19:02 ID:+D7/6JZZ
今、試してみたのですが削除できました。 705さん、ありがとうございます。
>>699 そのままじゃうまくいかなかったけど、ちょいと修正したらうまいきました。
> search.l 262-264 行目
>
> (goto-char opoint)
> (setq def 'quit)
> (return))
> ↓
> (setq def 'quit)
> t))
t)) ではなく t) のようです。
> search.l 286 行目
>
> (when (eobp)
> ↓
> (when (or (eobp)(eq def 'quit-and-back))
'quit-and-back ではなく 'quit のようです。
以上で、とりあえず . で変換後終了になりました。
さんくす。
>>704 (require "pickup-pattern") (in-package "editor")
(defun goto-error (next)
(when (and next *error-list*)
(setq *rerror-list* (cons (car *error-list*) *rerror-list*))
(setq *error-list* (cdr *error-list*)))
(when (and *rerror-list* (null *error-list*))
(rebuild-error-list))
(when *error-list*
(let ((error (car *error-list*)))
(if (= (count-windows 'arg) 1)
(progn (split-window *error-window-size*)
(set-buffer *error-buffer*))
(pop-to-buffer *error-buffer*))
(goto-line (cdr error))
(reverse-region (progn (goto-eol) (point)) (progn (goto-bol) (point)))
(recenter)
(let ((scanner (and *highlight-error* *find-error-scanner*)))
(other-window) (set-buffer (marker-buffer (car error)))
(goto-marker (car error))
(and scanner
(funcall scanner (save-excursion (goto-eol) (point)))
(eq *highlight-error* t)
(show-match)))
(recenter)
(pickup-pattern-set ;;編集
(make-pickup-pattern-item :pattern (match-string 0) :regexp t) t) t))) ;;編集
(in-package "user")
こんな感じ?(自分、pickup-pattern使わないから、よく分からないが)
たぶん色々問題があると思うので、
そのときは「編集」とコメントしてあるところを書き換えてデバッグしてください。
ああ、間違いまくってた。 以下でましになったかもしれない。 申し訳ないです。 (require "pickup-pattern") (in-package "editor") (defvar *error-pattern* nil) (defun goto-error (next) (when (and next *error-list*) (setq *rerror-list* (cons (car *error-list*) *rerror-list*)) (setq *error-list* (cdr *error-list*))) (when (and *rerror-list* (null *error-list*)) (rebuild-error-list)) (when *error-list* (let ((error (car *error-list*))) (if (= (count-windows 'arg) 1) (progn (split-window *error-window-size*) (set-buffer *error-buffer*)) (pop-to-buffer *error-buffer*)) (goto-line (cdr error)) (reverse-region (progn (goto-eol) (point)) (progn (goto-bol) (point))) (recenter) (let ((scanner (and *highlight-error* *find-error-scanner*))) (other-window) (set-buffer (marker-buffer (car error))) (goto-marker (car error)) (and scanner (funcall scanner (save-excursion (goto-eol) (point))) (eq *highlight-error* t)
;;710の続きです (show-match))) (recenter) (if *error-pattern* (pickup-pattern-set (make-pickup-pattern-item :pattern (cadr *error-pattern*) :regexp (cddr *error-pattern*)) t));;このtは謎。nilの方が良いのかも。 t))) (add-hook '*grep-hook* #'(lambda () (let ((regexp (equal *this-command* 'grep))) (setq *error-pattern* `(nil ,(if regexp *last-grep-regexp* *last-fgrep-pattern*) . ,regexp))))) (add-hook '*grepd-hook* #'(lambda () (setq *error-pattern* `(t ,(car *minibuffer-search-string-history*) . ,*grep-regexp-search*)))) (in-package "user")
712 :
名無し~3.EXE :04/03/17 16:04 ID:IjDLc+qj
>>709 回答ありがとうございます。
さっそく試してみたのですが、M-x pickup-pattern-unset-allをしても以前Grepで入力した文字列の強調表示が残ってしまいます。
私、他の方の書かれたものをちょっといじる程度でLispはさっぱりですので、対処していただけると助かります。
713 :
709 :04/03/17 16:48 ID:UwvXlATT
>>712 うーん? 自分がやってみたところ、pickup-pattern-unset-allで消えますけど…
どういう状況でそうなりますか?
(しかし適当に書いただけだから、バグってもしようがないかな)
714 :
名無し~3.EXE :04/03/17 18:21 ID:vzJPNuZf
>>713 すみません。私、Grep結果から複数のテキスト(バッファ)を開いていますので気づかなかったのですが、pickup-pattern-unset-allをしたバッファについては強調表示が消えています。
それで、なんだかかなり申し訳ないのですが、Grepに行くたびに開いているすべてのバッファに対してそれまでに入力した文字列の強調表示をクリアして、改めて新規文字列の強調表示をするということは、可能でしょうか。
>>694 ようやくアク禁解除されました。
説明されてるとおりに設定して使えてますか?
うーん、となるとうちの設定がどこか間違ってるのかな。
ところで不具合があるのは困ったものではありますが、
やっぱりエディタから更新できるのはかなり魅力的なことですね。
716 :
709 :04/03/18 10:17 ID:gML6IYn+
>>714 いい加減しゃっきりしたので、再び書き換えてみた。
*error-add-pickup-pattern-list*がtだと、*pickup-pattern-list*に、F10,F11した検索文字列が追加されます(たぶん)。
;
>>710 の (defvar *error-pattern* nil) の下の行にでも以下の一行を追加
(defvar *error-add-pickup-pattern-list* t);使わないならnil
;
>>711 の (if *error-pattern* の行から以下を差し替え
(when *error-pattern*
(let ((pickup-item (make-pickup-pattern-item :pattern (car *error-pattern*)
:regexp (cdr *error-pattern*))))
(pickup-pattern-set pickup-item t)
(when *error-add-pickup-pattern-list*
(setq *pickup-pattern-list*
(delete pickup-item *pickup-pattern-list* :test 'equalp))
(pushnew pickup-item *pickup-pattern-list* :test 'equalp)))) t)))
(add-hook '*grep-hook*
#'(lambda ()
(let ((regexp (equal *this-command* 'grep)))
(setq *error-pattern*
(cons (if regexp *last-grep-regexp* *last-fgrep-pattern*) regexp)))
(save-excursion
(dolist (buffer (buffer-list))
(set-buffer buffer)
(pickup-pattern-unset-all)))))
(add-hook '*grepd-hook*
#'(lambda ()
(setq *error-pattern*
(cons (car *minibuffer-search-string-history*) *grep-regexp-search*))
(save-excursion
(dolist (buffer (buffer-list))
(set-buffer buffer)
(pickup-pattern-unset-all)))))
(in-package "user")
717 :
704 :04/03/18 11:46 ID:Ks6ItmV3
>>716 今、試してみたのですが、もう完璧という感じで流石ですね。
Grep該当行に複数の該当文字列がある場合などにそれを見つけにくくてちょっと悩んでいましたので、かなり助かります。
ずいぶんお手数をお掛けしてしまったのではないかと思いますが、どうもありがとうございます。
それでは、失礼致します。
>>716 横からいただきました。
すばらしいです。ありがとうございます。
ずいぶん前にここで拾ったものですけど,ファイル名に空白含むと うまく動作しなかったので修正しました.使っている人は更新したほうがよさげ ;; ファイラからCraftLaunchに送る (defvar *craft-path* "c:/melted/clnch/clnch.exe") ; パス (defvar *craft-arg* "/wr /x50 /y40 /w100 /c2 ;") ; 引数 (defun send-to-craft () (interactive) (flet ((get-path-name (x) (map-slash-to-backslash (remove-trail-slash (get-short-path-name x))))) (let* ((mark-files (filer-get-mark-files)) (files (format nil "~{\"~A\"~^;~}" (mapcar #'get-path-name (if mark-files mark-files (list (filer-get-current-file))))))) (if files (shell-execute *craft-path* nil (concat *craft-arg* files)))))) (define-key filer-keymap #\F2 'send-to-craft)
721 :
名無し~3.EXE :04/03/20 18:39 ID:q141iZ96
動作の軽快さにひかれて、meadowから移行してきたのですが、 正規表現でのインクリメンタルサーチする方法がわかならくて、困っております。 isearch.l 内に *isearch-regexp* なる変数があるので、 正規表現での検索ができそうな雰囲気ではあるのですが、 どうもうまくいきません。 どなたかいい方法をご存知ではないでしょうか。
>>721 (in-package "editor")
(defvar *isearch-reg* nil)
(defun isearch-regexp-toggle ()
(interactive)
(setq *isearch-reg* (not *isearch-reg*))
(if *isearch-reg*
(message "regexp: on")
(message "regexp: off")))
(global-set-key '(#\C-t) 'isearch-regexp-toggle)
(defun isearch-scanner (string no-dup)
(let ((*isearch-regexp* *isearch-reg*)
(pattern string))
(when *isearch-scanner-hook*
(setq pattern (funcall *isearch-scanner-hook* pattern)))
(setq *isearch-current-string* string)
(setq *isearch-last-match*
(if (and (scan-buffer pattern
:reverse (not *isearch-direction*)
:no-dup no-dup
:regexp *isearch-regexp*
:case-fold *case-fold-search*)
(setq *isearch-current-match-string* (match-string 0)))
t
(progn
(setq *isearch-current-match-string* nil)
(ding)
nil)))))
(defun isearch-yank-word () (let* ((start (+ (point) (if (and *isearch-last-match* (not (eq *isearch-last-command* 'isearch-search-history-forward))) (length *isearch-current-match-string*) 0))) (end (save-excursion (goto-char start) (forward-word) (point))) (next-word (buffer-substring start end))) (if (and *isearch-smart-case* (eq *case-fold-search* :smart) (not (string-match "[A-Z]" *isearch-current-match-string*))) (setq next-word (string-downcase next-word))) (isearch-push-status) (isearch-scanner (concat *isearch-current-string* next-word) nil))) (in-package "user") これで動くかも。(C-tでregexpを使うかどうかのtoggle) migemo では動かない。
>>721 722さんを参考に,横から修正加えてみました
インクリメンタルサーチ中に C-t で,
正規表現で検索するかどうかを切り替えます.
切り替えた状態を保存して欲しくない場合は,#| と |# を消して
コメント解除してください.
;;.. インクリメンタルサーチで正規表現モードとトグル
(defun isearch-regexp-toggle ()
(interactive)
(let ((isearch-regexp (not ed::*isearch-regexp*)))
(setq ed::*isearch-regexp* isearch-regexp)
(if isearch-regexp
(message "regexp: on")
(message "regexp: off"))))
(define-key ed::*isearch-map* '#\C-t 'isearch-regexp-toggle)
#|
;;... 正規表現で検索するかどうかは現在の検索においてのみ有効
(encapsulate 'isearch-forward
'isearchf-regexp-local
'((interactive)
(let ((ed::*isearch-regexp* ed::*isearch-regexp*))
(apply basic-definition argument-list))))
|#
725 :
724 :04/03/20 22:38 ID:xZlItm6k
下のコメントを解除する場合は kia's website の encap を入れて置いてください.netinstaller からも入れられます.
神様がいっぱい!
>>721 俺も
(defvar *isearch-use-regexp* nil)
(setq *isearch-scanner-hook*
#'(lambda (p)
(setq ed::*isearch-regexp* *isearch-use-regexp*)
p))
(defun toggle-regex-isearch ()
(interactive)
(setq *isearch-use-regexp*
(not *isearch-use-regexp*))
(message "isearch ~[nomal~;regexp~]"
(if *isearch-use-regexp* 1 0)))
あきらかに、フックの使い方が違う。 _| ̄|○
>>727 *iseach-scanner-hook*も元はmigemo用に追加されたようなものですし、
正規表現のisearchだけなら727のやり方が適切だと思います。migemoは
正規表現で検索すると同時に、パターンの拡張もしてるのが違うことぐらい
でしょうか。
いつも正規表現でisearchするならこれだけ。
(setq *isearch-scanner-hook* #'(lambda (p) (setq ed::*isearch-regexp* t) p))
729 :
727 :04/03/21 08:40 ID:tJZwtBbd
>>728 そうだったのか。解説あり
入力時にエラーになるので、以下の定義も追加
(define-key *isearch-map* #\[ #'(lambda () (interactive)
(setq *isearch-use-regexp* nil)
(message "isearch nomal")
(ed::isearch-self-insert)))
(define-key *isearch-map* #\\ #'(lambda () (interactive)
(setq *isearch-use-regexp* nil)
(message "isearch nomal")
(ed::isearch-self-insert)))
730 :
721 :04/03/22 06:46 ID:KGKQL/zj
>>722 >>724 >>727 >>728 わー、お答えいただきまして、ありがとうございます。
おかげで正規表現でインクリメンタルサーチができるようになりました。
ただ、'\'や'['などを入力すると、エラーが出てしまうようです。
>>729 を見ると、これらの文字が入力されると、
通常の検索に戻すことで、エラーを回避しているようですが、
さすがにこうするしかないんでしょうか。
731 :
名無し~3.EXE :04/03/22 16:53 ID:2rranDTe
(ed:minibuffer-prompt )で開いたミニバッファに 文字を挿入したりするにはどうしたらいいですか? ミニバッファのバッファを (ed:minibuffer-prompt )でミニバッファ開いて、 (set-buffer (window-buffer (minibuffer-window))) (insert "hoge") とかやってみたんですがうまくいかないんです。
何ですと?あのアルカイダが、ベッカムを標的にしてるですと?そうですと?
>>731 上書きしちゃうのが一番手っ取り早いんではなかろうか。
>>731 ごめん,あまり確認せずにwikiに書いてしまった.
(minibuffer-buffer) を何度やっても nil しか返ってこない.
けど (window-buffer (minibuffer-window)) ならminibufferが得られるのに
ちょっと驚いた.
M-x か ESC ESC と打ってからscractchに戻って
(progn
(set-buffer (window-buffer (minibuffer-window)))
(insert "hoge")
(set-text-attribute (point-min) (point-max) 'coloring :foreground 6))
とやったら期待通りの動きをした.
minibuffer-prompt をやってキーボードからの入力待ちにしておいてから
insert するとうまくいくかも.minibufferは常にあるバッファではないみたいなので.
あと selection-forward-char をやってみたけど選択されなかった.
選択されていたかもしれないけど,色が変わって見えなかった.
minibufferはやっぱりかなり特殊なのかな
735 :
731 :04/03/22 20:17 ID:2rranDTe
>>735 > ed:minibuffer-prompt のバッファ取得するのは無理な悪寒。
今,少し触ってみた感じだとそんな気がします
ところで,minibuffer-prompt 使わずに (interactive "b")
ではどうでしょうか
このとき使われるキーマップがどれかは知らないけど,適当にコレを修正して
(defun hogehoge (buf)
(interactive "b")
(get-buffer-create buf))
を call-interactively で呼び出すようにすればいける気がしてきました.
wikiにあるのとは全然実装が変わってしまうけど.
こっちなら,minibuffer は (get-buffer-create " *Minibuf0*")
で取得できるし,勝手に補完も let で auto-fill *auto-fill-hook*
という変数をローカルに作った上で設定し,キーが押されるたびに可能なバッファ名
で補完することもできます.
キーバインドも適宜設定したうえで
call-interactively でhogehogeを呼び出すと良さそうじゃないしょうか
ただお疲れのようなので,無視してもらっても・・・
737 :
名無し~3.EXE :04/03/23 11:59 ID:rVA55z6p
>>736 言い出しっぺが作るっていう不文律があるかと思うのですが。
>>737 欲しい人・作りたい人が作るのではないのですか?
いいだしっぺにつっこむだけのレスはいいかげんうざい 参加できないならスルーしとけアホが
バッファバーをマウスでクリックすることでバッファを移動した後、 元のバッファに戻りたいのですが これは lisp で出来るのでしょうか?
741 :
名無し~3.EXE :04/03/29 07:06 ID:mkwYcdYM
2ch-modeで過去ログになっちゃった追っかけスレはどうすれば元に戻りますか!!!!!!1
742 :
名無し~3.EXE :04/03/29 07:13 ID:mkwYcdYM
Alt+Shift+Kでいけまいsたよ!!!!!!!
741 [04/03/25 19:38 ID:VDiWHeJO] 名無し~3.EXE <sage>
long-operation中にも C-g で処理を止めることができますが,
このキーボード入力はいつ処理されるのでしょうか?
割り込みのように任意のタイミングで発生されるのか,
それとも sit-for などのごく一部の関数が実行される時のみに
キーボード入力がチェックされるのでしょうか?
>>740 とりあえず F2で我慢して
742 [04/03/25 20:29 ID:VDiWHeJO] 741 <sage>
>>740 追加報告です.
調べてみたけど,タブのクリックに対応する関数の割り当てを設定しているコードがありませんでした.
右クリック・左クリックともに.これらの関数は,builtinの中で指定されているので
普通には手出しできません.
next-buffer などが バッファ移動順のヒストリをどのように持っているかも調べてみましたが,
どうやらこれもbuitlinです.タブのクリックでも移動順のヒストリが変更されていればと思いましたが
だめでした.
タブをクリックしてバッファを移動するなら,直前のバッファに戻るのは難しいです.
それでは
742 [04/03/25 20:29 ID:VDiWHeJO] 741 <sage>
>>740 追加報告です.
調べてみたけど,タブのクリックに対応する関数の割り当てを設定しているコードがありませんでした.
右クリック・左クリックともに.これらの関数は,builtinの中で指定されているので
普通には手出しできません.
next-buffer などが バッファ移動順のヒストリをどのように持っているかも調べてみましたが,
どうやらこれもbuitlinです.タブのクリックでも移動順のヒストリが変更されていればと思いましたが
だめでした.
タブをクリックしてバッファを移動するなら,直前のバッファに戻るのは難しいです.
それでは
743 [04/03/25 20:53 ID:ixsZO+2F] 740 <sage>
>>742 情報ありがとうございます。
最初、*post-command-hook* を使ってなんとかできないかと考えたのですが、
調べたらタブのクリックがコマンドでないの分かって普通の方法では無理だろうと
思っていました。
ただ、マウスをタブのところに持っていくとファイル名(バッファ名)がポップアップ
表示されるので、神ならできるかもと思って質問しました。
WIN API を使っても無理でしょうか?
744 [04/03/25 21:39 ID:e1dJZOJk] 741 <sage>
直前のバッファが何であったかさえわかればできます。
タブがクリックされたというイベントを横取りして、
現在のバッファを取得した後、クリックのイベントを送ることができれば
一番きれいにできるのでしょうが、かなり大げさです。
*post-command-hook*でもいいですが、カレントバッファとその前の
バッファを記録していき、戻りたいときにこれらの情報からバッファを
セットすれ関数を呼び出せばできます。
745 [04/03/25 23:47 ID:aY6+w/FW] 名無し~3.EXE <sage>
740 です。
>>744 ありがとうございます。
自力では、どうにもならないことが分かりました。
おとなしく諦めます。
ダブりすみません。手元の分だけ。
;;; nifetch.l - NetInstallerにフェッチオンリーの機能を追加する。 ; `f' で現在のパッケージのファイルを取得する。 ; 取得したファイルは多分 ~/.netinst/src にある。 (provide "nifetch") (eval-when (:compile-toplevel :load-toplevel :execute) (require "ni/setup")) (in-package "netinst") (define-key *apps-map* #\f 'app-fetch-current) (defun app-fetch-current () (interactive) (let ((app (app-current))) (unless app (return-from app-fetch-current)) (unless (yes-or-no-p "ファイルを取得しますか?: ~A~%~%( インストールはしません )" (app-file app)) (return-from app-fetch-current)) (when (install-app-fetch app) (apps-print app-data) (ni-msgbox "取得完了: ~A" (app-src-file app))))) ;;; nifetch.l はここまで
748 :
もう一つ :04/03/30 15:42 ID:a8fLNgg6
;;; nipacked.l - ni-autoload用のファイルを予め一つのファイルに纏めておく。 ; ; *ni-packed-autoload-file* 纏める先のファイルのパス。随時破壊再構築される。 ; ni-packed-autoload-pack 現在のautoload用のファイルを一つに纏めるコマンド。 ; ni-packed-autoload 一つに纏めたファイルを読み込むコマンド。 ; ;; インストール ; (1)site-lisp に入れて、load-libraryコマンドでこのnipackedを読み込む。 ; (2)一度 ni-packed-autoload-pack コマンドを実行する。 ; (3).xyzzyファイルの"(ni-autoload)"の代わりに次のように記述する。 ; (require "nipacked") ; (add-hook 'ni::*ni-finish-hook* #'ni-packed-autoload-pack) ; ; NetInstallerの終了毎にファイルを作り直す。 ; (4)Xyzzyを再起動する。 ; ;; アンインストール ; (1).xyzzyの該当部分を"(ni-autoload)"に書き戻す。 ; (2)site-lispに入れたこのファイル(とバイトコンパイルしたもの)を消す。 ; (3)*ni-packed-autoload-file*で指定されているファイルを消す。 ; デフォルトではsite-lispのnipackedrc.lファイル。 ; (4)Xyzzyを再起動する。
(provide "nipacked") (eval-when (:compile-toplevel :load-toplevel :execute) (require "ni/setup")) (defvar *ni-packed-autoload-file* (merge-pathnames "site-lisp/nipackedrc.l" ni::*install-directory*)) (defun ni-packed-autoload-pack () (interactive) (unless (and (file-exist-p ni::*autoload-directory*) (file-directory-p ni::*autoload-directory*)) (return-from ni-packed-autoload-pack)) (ni-packed-autoload-cat (directory ni::*autoload-directory* :wild "*.l" :absolute t :file-only t :recursive t) *ni-packed-autoload-file*))
(defun ni-packed-autoload-cat (src dest) (let (tmpbuf) (unwind-protect (progn (setq tmpbuf (create-new-buffer "*temp*")) (set-buffer tmpbuf) (dolist (f src) (goto-char (point-max)) (insert (format nil "; ~A~%" f)) (insert-file-contents f) (when (scan-buffer "(in-package") ; in-packageがあるときは為念。 (goto-char (point-max)) (insert "(in-package \"user\") ; by `nipacked'\n"))) (write-file dest)) (and tmpbuf (delete-buffer tmpbuf))))) (defun ni-packed-autoload () (interactive) (and (file-exist-p *ni-packed-autoload-file*) (load *ni-packed-autoload-file*))) (ni-packed-autoload) ;;; nipacked.l はここまで
>>747 >;;; nifetch.l - NetInstallerにフェッチオンリーの機能を追加する。
いただきました。どもです。
これでようやく ~/.netinst/config.l に記述ができました。
752 :
名無し~3.EXE :04/03/31 04:19 ID:LzKBlaFD
モードに関わらす、 1.ほげほげ ほげほげ ほげほげ ってなってくれるようなのAuto-Indentのトグルってありますか?
753 :
sage :04/03/31 04:35 ID:nl2a0SL1
sage
>>752 行頭の空白が消えてますね。
具体的には、どんな規則に従ってインデントしてほしいの?
前の行が正規表現で"^[0-9]+."に一致したら、インデントを始めるとか?
その場合、どこでインデントを終了するかは、どうやって判断すればいい?
(752の例のようなインデントでは、
Pythonのインデントのように、エディタ側にはアンインデントする位置は分からない)
2行目のげの後でCtrl+Enterすれば良いのでは。
マクロ苦手です。誰か添削してください。 ;;.. typecheck ;; 使用法 ;; (tc (or null listp) var) (defmacro tc (typep var) (let ((fun (gensym))) `(cond ((listp ',typep) (if (eq (car ',typep) 'or) (block typecheck (dolist (,fun (cdr ',typep)) (if (funcall ,fun ,var) (return-from typecheck t))) (error (format nil "不正なデータ型です: ~A : ~A" ,var (symbol-function ',typep)))) (error (format nil "Unknown type descriptor ~A" ,typep)))) ((funcall #',typep ,var) t) (t (error (format nil "不正なデータ型です: ~A : ~A" ,var (symbol-function ',typep)))))))
今ひとつ何がしたいのかわからないけど、 (setq hoge 8) (tc (or null listp) hoge) でerrorが発生するのはいいの? 形式的なところだと、block名を固定にするのはどうかと。 (defmacro test (hoge) (let ((tag (gensym))) `(block ,tag (return-from ,tag ,hoge)))) (macroexpand-1 '(test 8)) => (block #1=#:G3596 (return-from #1# 8))
>>757 ありがとうございます.
lisp は型にルーズなので,型チェックをするコードを作りました.
common lisp の the の機能限定(方言)版です.
とりあえずご指摘のところなど直しました.
(defmacro tc (typep var)
(let ((fun (gensym))
(typecheck (gensym)))
`(cond
((consp ',typep)
(if (eq (car ',typep) 'or)
(block ,typecheck
(dolist (,fun (cdr ',typep))
(if (funcall ,fun ,var)
(return-from ,typecheck t)))
(error (format nil "不正なデータ型です: ~W : ~A"
,var ',typep)))
(error (format nil "Unknown type descriptor ~A" ,typep))))
((funcall #',typep ,var) t)
(t
(error (format nil "不正なデータ型です: ~W : ~A"
,var (symbol-function ',typep)))))))
> でerrorが発生するのはいいの?
発生するのはいいのですが,違うエラーが出てました.
まだよくわかってないんだけど、 第2引数で与えられた述語(または述語群)がvarに対して真なら t それ以外ならエラーってこと?nilではなく。 どんな使い方するんでしょう?
>>759 > 第2引数で与えられた述語(または述語群)がvarに対して真なら t
> それ以外ならエラーってこと?nilではなく。
そうです
(defun f (x y z)
(tc (or null bufferp) x)
(tc listp y)
(tc integerp z)
.... )
こんな感じで関数宣言の最初に型チェックを入れるのが一般的かと.
この場合, x は null か bufferで, y は list で z は整数であれば実行を続け,
一つでも満たさなければ,エラーが出て実行が終了します.
the の仕様を知らないので違ってたら申し訳ないですが、 リストの場合orが先頭にないとエラーになるっていうのはどうなんでしょう? 素直にリストの要素がすべて述語とみなせばいいのでは? 以下テストしてませんが (defmacro tc (predicate var) `(cond ((consp ',predicate) (unless (find-if #'(lambda (f) (funcall f ,var)) ',predicate) (error (format nil "不正なデータ型です: ~W : ~A" ,var ',predicate))) t) ((funcall #',predicate ,var) t) (t (error (format nil "不正なデータ型です: ~W : ~A" ,var (symbol-function ',predicate))))))
typecase 使えばいいじゃん、て思ったら、xyzzy って typecase なかったんですね。
てわけでこんなのでどうでしょう。
述語じゃなくて型で振り分けですが。型チェックするならこちらのほうが自然でしょう。
;;;ex.
;;;(tc (integer symbol) 0) => t
;;;(tc integer 0) => t etc...
(defmacro tc (type obj)
`(case (type-of ,obj)
(,type t)
(otherwise (error "不正なデータ型です: ~W : ~A"
,obj ',type))))
個人的には、エラーではなく nil を返させて、
(unless (and (tc (null buffer) x)(tc cons y)(tc integer z)) (error ...))
とかやったほうが汎用性があっていいかな、とも思いますが。
>>761 the っていうのは直後の式が返す値の型を指定する構文です。
複数の型は指定できないんじゃなかったかな?
戻り値の型が指定外の場合にはエラーになります。
最適化の際のヒントとしても使われたりします。
ex.
(the integer (+ 2 2)) => 4
(the (values integer integer) (values 2 2)) => 2 2
763 :
762 :04/04/03 05:15 ID:02OwQTXw
追加。妥当としたい型がひとつだったら typep 使ったほうがよいですね。
「タブバーを横書きにする」をチェックして、xyzzycli.exeを起動すると ミニバッファが下に埋もれた状態で起動されるんですが、 これって有名なバグなんでしょうか。 「タブバーを横書き」にして「xyzzycli.exeから起動」することを前提に、 ミニバッファを正常な表示で起動させる策ってありますか?
>764 うちの環境では正常に起動された。 タブバーの位置とか関係ありそうな設定とか、もうちょっと詳しく教えてくれる?
766 :
756 :04/04/03 23:15 ID:b0FswKph
>>761-763 どうも.いろいろ参考になります.
確かにエラーを返す部分とチェックする部分は分けた方がいい気がしてきました.
あと型だけではなくて,値のチェックもしたくなってきました.
つまり述語ってことですね.たとえば,
(tc (and integerp (lambda (x) (>= x 0))) y)
(tc (and integerp (or (lambda (x) (>= x 10))
(lambda (x) (<= x 0)))) y)
こんなこと書いてもいいかなと思いました.
またはこれらの簡易記法として
(tc (and integerp (>= x 0)) y)
(tc (and integerp (or (>= x 10) (<= x 0)) y)
こんなことが許されると.xのかわりに _ とかでもいいですけど
and や or を tc 内で認めなければ実装は楽になりそうですけど,
tc がたくさんになってしまうなというのがちょっとひっかかってます.
and or を使えるようにするにはマクロの再帰呼び出しが必要なので
そのあたり勉強してきます.
最終的には,これをつかって design by contract によるプログラミング
がしたいと思ってます.
theのように値を返すなら,返り値に tc をかぶせるだけで使えるし.
最終的に出来上がれば, tc の定義を上書きして検査しないようにできるので
便利じゃないかなと.
767 :
764 :04/04/03 23:52 ID:OWS/rA8e
>>765 解凍したてのxyzzyを起動して(xyzzyでもxyzzycliでも)
そのまま「タブバーを横書きにする」にチェックして
表示->ツールバーでいずれかまたはすべて(どれでも)を表示させる設定で
xyzzycliから再起動すると、
>>764 の症状になるんです。
他の設定はいじってません。
バーの位置は関係ないようで、表示されているか否か、それだけのようです。
位置を変えるとミニバッファは正常に一行分表示されるようになるんですが、
xyzzycliから起動するとやっぱり埋もれます。
もちろんマウスでドラッグしてミニバッファの大きさを変えようと思えばできますが。
万人に共通なバグではないようですね。
「さまざま」の「終了時の状態を保存する」にチェックしておくと問題なく起動できるようですが、
前回編集したファイルがバッファに残ってるのがどうも気持ち悪くて。
どういった環境でこんな状態になるのか見当もつかないので、
素直にxyzzy.exeから起動することにします。
>>767 わからないけど,XYZZYHOME はちゃんと設定した?
769 :
KingMathematician ◆5lHaaEvFNc :04/04/04 11:47 ID:Adwm2XSM
xyzzy0.2.2.233がsite-lisp/siteinit.lを読み込まないのですが、どうなっているのですか? .xyzzyは読み込みました。
siteinit.l 使ってないんで確かじゃないが、ダンプファイルも消さなきゃ拙いんじゃなかった?
画面を縦2分割し,同じバッファを表示させた状態でolt-operation-down などを行うと, 現在のウィンドウのポイント位置を変更して欲しいのに,必ず左側のウィンドウのポイント 位置を変更してしまいます.これをカレントウィンドウのポイント位置の変更を優先させる ようにはできないでしょうか.
(progn (let ((cm (copy-menu-items *app-menu* (create-menu))) (menu nil)) (defun hoge () (interactive) (msgbox "hoge")) (define-key ed::*lisp-interaction-mode-map* '(#\C-c #\b) 'hoge) (setq menu (define-menu (:item nil "hoge" 'hoge) (:item nil "complete-symbol" 'lisp-complete-symbol) (:item nil "box-drawings-right" 'box-drawings-right))) (add-popup-menu cm menu "テスト") (set-menu cm))) これを実行すると、"ヘルプ"メニューの横に"テスト"メニューが追加されて、 "テスト"メニュー内に"hoge"、"complete-symbol"、"box-drawings-right"の コマンドが表示される。"hoge"と"complete-symbol"コマンドの横には バインドされてるキーが表示されるけど、"box-drawings-right"の横にはキーが 表示されない。どうもマイナーモードマップに定義されてるコマンドのキー バインドは表示されないっぽい。 マイナーモードマップに定義されてるコマンドのキーバインドを表示させる 方法ってあるかな?
775 :
名無し~3.EXE :04/04/07 17:49 ID:fRb862FZ
「バッファタブを閉じる」をマウスの代わりに ショートカットでやりたいのですが、 そのような関数はあるでしょうか。
>>775 (hide-command-bar 'buffer-bar)
これ?
閉じたり、引っ込めたり
(defun toggle-buffer-bar ()
(interactive)
(if (cadddr (find-command-bar 'buffer-bar))
(hide-command-bar 'buffer-bar)
(show-command-bar 'buffer-bar)))
777 :
KingMathematician ◆5lHaaEvFNc :04/04/07 19:32 ID:qwfq9PYk
xyzzy lispで、整数を格納した変数を使ってascii文字にして出力する方法はありますか? 例えば、xに33(10進)が入っているとき、xを参照することによって!を出力する方法はありますか?
>>777 code-char
(unicode-char)
779 :
775 :04/04/07 20:03 ID:0MgZqEC/
>>776 全部を一度に閉じるのではなく、
現在開いているバッファタブ一つを閉じられると嬉しいです。
>>779 じゃあこれか
(delete-buffer (selected-buffer))
あと、
>>776 の
>閉じたり、引っ込めたり
は
出したり、引っ込めたり
じゃん……俺、なにやってんだろ
781 :
775 :04/04/07 20:29 ID:0MgZqEC/
782 :
KingMathematician ◆5lHaaEvFNc :04/04/07 20:34 ID:qwfq9PYk
Re:
>>778 code-charの返り値は#が付いてくるのですが、このデータの型は一体なんですか?
p.s. (format t "~a" #\!) で!だけ表示されました。
>>782 当然、char型。
(type-of #\!)
=>character
>>781 変更ありのとき確認して欲しければ kill-selected-buffer
784 :
KingMathematician ◆5lHaaEvFNc :04/04/07 20:54 ID:qwfq9PYk
win98機でlispを学びたいのですが、 cygwin-emacsでclispとxyzzyでlispのどちらが良いですが?
786 :
名無し~3.EXE :04/04/09 00:05 ID:HTXXTAw7
ツールバーにバッファを表示して、howmを使っています。 howmに関するバッファタブがにツールバーを占有しているのですが、 どうすればhowm関係のタブは表示しないように設定できるでしょうか。
howm-mode-hook で rename-buffer するとか? 試してないから以下同文
diff-buffer から diff-detail を使うにはどうしたらいいのでしょうか。
>>790 diff-buffer.l の内容を 「diff」→「diff-detail」と全置換した
diff-detail-buffer.lを作成。diff-detail-buffer.lをインストール。
792 :
名無し~3.EXE :04/04/10 10:06 ID:rgJ1j1yk
global-markを保存して、次回起動時にもマーク位置に飛べるようにするにはどうすればいいのでしょうか。 お分かりの方おられましたら、お願いします。
794 :
名無し~3.EXE :04/04/10 18:19 ID:uvS+AUlP
>>793 sessionを保存しても、mark-dialog-boxで設定したマークは保存されないようです。
やっぱりこれはかなり難しいんでしょうか。
(progn (let ((src '(a b c))) (mapcar #'(lambda (x) src) src))) この結果がCygwin emacs(GNU Emacs 21.2.1 (i686-pc-cygwin))だと、 ((a b c) (a b c) (a b c)) xyzzy-0.2.2.233だと、 (#1=(a b c) #1# #1#) となります。 xyzzy上でemacsみたいな結果が欲しいのですが、どうすればよいのでしょう?
>>792 global-markはファイルを読み込んでいないと使えないようなので、
「終了時にファイル名と位置を保存」&「起動時にマークしなおす」
といういまいちな動作になってしまいました。
あんまりテストしてないので .xyzzy.history をバックアップして試してください。
(require "gmark")
(defvar *gmark-history* nil)
(register-history-variable '*gmark-history*)
(add-hook '*kill-xyzzy-hook* 'save-gmark-history)
(defun save-gmark-history ()
(setq *gmark-history* nil)
(dolist (x (ed::global-mark-make-list))
(pushnew (cons (get-buffer-file-name (second x)) (marker-point (first x)))
*gmark-history*)))
(defun set-gmark-history ()
(dolist (x *gmark-history*)
(and (car x)
(set-buffer (ed::find-file-internal (car x)))
(goto-char (cdr x))
(global-mark-add)))
(set-buffer "*scratch*") ; ここはお好みで
)
(add-hook '*post-startup-hook* 'set-gmark-history)
>>796 (format nil "~A"
(progn
(let ((src '(a b c)))
(mapcar #'(lambda (x) src) src))))
"((a b c) (a b c) (a b c))"
慣れることだ
>>798 どうも
(progn
(defmacro approx-inset-nth (n list object)
`(let ((i 0) (result nil))
(dolist (item ,list)
(when (= i ,n)
(push ,object result))
(push item result)
(incf i))
(when (= i ,n)
(push ,object result))
(nreverse result)))
(let ((index -1)
(src '(a b c))
(in-obj 'x))
(mapcar #'(lambda (x)
(approx-inset-nth (incf index) src in-obj))
src)))
=> ((x a x b x c x) (a b c) (a b c))
この結果を
(x a b c) (a x b c) (a b x c)
となるようにしたいのですが……。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7043/#approx-search.el このapprox-search.elがxyzzy上で動かないかなぁ、と思って。
勉強が足りなくてすいません……
800 :
798 :04/04/11 01:57 ID:DU6IrjE3
>>799 個人的には,こういうのは副作用を使わないですむ再帰の方がいいかと.
(progn
(defun approx-inset0 (lst object &optional result)
(if lst
(let* ((top (car lst))
(ret (approx-inset0 (cdr lst) object result))
(ret2 (mapcar #'(lambda (x) (cons top x)) (cdr ret))))
`((,top . ,(car ret)) (,object ,top . ,(car ret)) . ,ret2))
result))
(defun approx-inset (lst object &optional result)
(cdr (approx-inset0 lst object result)))
(format nil "~A" (approx-inset '(a b c) 'x)))
"((x a b c) (a x b c) (a b x c))"
>>799 (defun approx-inset-nth (n list object)
(append (butlast list n) (list object) (last list n)))
803 :
792 :04/04/11 07:16 ID:XR5NqTcD
>>797 レスありがとうございます。
テキストに何も記入しないでしおりを貼るみたいなことができればいいな、と思っていたのですが希望の動作が得られました。
これでxyzzyがさらに使いやすくなりそうです。どうもありがとうございました。
804 :
792 :04/04/11 10:13 ID:ufcaEMRO
たびたびすみません。792です。 global-markの保存・復元をセッションの保存・セッションを開くのときにできないかと思い、 (add-hook '*save-session-hook* 'save-gmark-history) (add-hook '*restore-session-hook* 'set-gmark-history) などゝとやってみたりsession.lを見てみたりしたのですが、自分ではできそうもありません。 もうしわけありませんが、global-markの保存・復元をセッションの保存・セッションを開くのときにできるようにしていただけないでしょうか。
>>804 > などゝとやってみたりsession.lを見てみたりしたのですが、自分ではできそうもありません。
できないわけはないので、解決に向け試行錯誤し続けてください。
806 :
792 :04/04/11 16:17 ID:Ufdu6RdI
>>805 今時間的にちょっとヤバイので、とりあえず終了時の状態を保存するにチェックを入れて保留しておくことにします。
そのうちリファレンスやMLの過去ログなどを見てできるようであればやってみます。
ありがとうございました。
807 :
802 :04/04/11 17:21 ID:SdLcyFgU
808 :
756 :04/04/11 21:56 ID:DU6IrjE3
(defmacro pc* (pred var) (if (consp pred) (case (car pred) ('or `(pc-or* ,(cdr pred) ,var)) ('and `(pc-and* ,(cdr pred) ,var)) ('lambda `(funcall #',pred ,val)) (t `(funcall #'(lambda (_) ,pred) ,var)) ) `(funcall #',pred ,var))) (defmacro pc-or* (pred var) (if pred `(or (pc* ,(car pred) ,var) (pc-or* ,(cdr pred) ,var)))) (defmacro pc-and* (pred var) (if pred `(and (pc* ,(car pred) ,var) (pc-and* ,(cdr pred) ,var)) t)) (defmacro pc (pred var) `(if (not (pc* ,pred ,var)) (error (format nil "不正なデータ型です: ~A : ~W" ',pred ,var)) t))
809 :
756 :04/04/11 21:57 ID:DU6IrjE3
(pc (and consp (= 2 (length _))) '(a b)) t (pc (= 2 (length _)) '(a b c)) 不正なデータ型です: (= 2 (length _)) : (a b c) 書き直してみました.今度のはどうでしょうか. 今のところ不都合無く動いていますが.
いつの間にか、xyzzy QandAが移転。
811 :
797 :04/04/12 02:30 ID:aWRuaYFt
812 :
786 :04/04/12 10:34 ID:58SuPhrS
>>795 ありがとうございます。
.xyzzyにただ貼り付けたのですが、
関数が定義されていません: lambda
と出てしまいました。
何か別の設定が必要でしょうか?
(lambda → #'(lambda かも?
815 :
792 :04/04/14 02:19 ID:huEjO7wi
>>811 情報ありがとうございます。まだあまり試していないのですがかなりよさげですね。
しかし今初めて知りましたので、自分でも須田さんの bookmark.l を参考になんか作ってしまいました(ほとんどパクリかつ中途半端ですが(笑))。ちょっと使えないかもしれませんが、一応公開しておきます。
(provide "my-bookmark")
(in-package "editor")
(export '(bookmark-jump-to-bookmark bookmark-add-new-bookmark
bookmark-clear-all bookmark-menu
bookmark-edit-bookmark-list *bookmark-max*
*bookmark-list*))
;;; カスタマイズできる変数
(defvar *bookmark-menu-item-length* 16) ;; 引き出しに入れる個数
(defvar *bookmark-max* 400) ;; bookmark をいくつまで認めるか
(define-history-variable *bookmark-list* nil)
;;; ジャンプ
(defun bookmark-jump-to-bookmark (num filename)
(let* ((buffername (file-namestring filename))
(menu-item (cons num filename))
n)
(if (find-buffer buffername)
(switch-to-buffer buffername)
(find-file filename))
(goto-line num)
(goto-bol)
))
;;; リストの操作
;; utility
(defun get-buffer-filename ()
(let ((filename (file-namestring (get-buffer-file-name (selected-buffer)))))
filename))
816 :
792 :04/04/14 02:20 ID:huEjO7wi
;; 追加 (defun bookmark-add-new-bookmark () (interactive) (let ((bookmark (cons (current-line-number) (get-buffer-file-name)))) (push bookmark *bookmark-list*) (let ((exceed (- (length *bookmark-list*) *bookmark-max*))) (when (> exceed 0) (setq *bookmark-list* (nbutlast *bookmark-list* exceed)))) ) t) ;;; nbutlast (list &optional (n 1)) ;;; the destructive version of butlast. If list has fewer ;;; than n elements, nil is returned and list is not modified. ;; 削除 (defun bookmark-clear-all () (interactive) (setq *bookmark-list* nil) t) ;; ソート (defun bookmark-sort-bookmark-list-by-filename () (interactive) (setq *bookmark-list* (sort *bookmark-list* #'string-greaterp :key #'cdr)) (unless (eq *last-command* 'minibuffer-exit) ;; ― ¶要検討¶ (bookmark-menu))) ;;; 編集 (defvar *bookmark-edit-mode-keymap* nil) (unless *bookmark-edit-mode-keymap* (setq *bookmark-edit-mode-keymap* (copy-keymap *lisp-mode-map*)) (define-key *bookmark-edit-mode-keymap* #\C-g 'bookmark-save-bmlist))
817 :
792 :04/04/14 02:21 ID:huEjO7wi
(defun bookmark-edit-bookmark-list () (interactive) (message "#\C-g で保存終了") (set-buffer (get-buffer-create "*bookmark-edit*")) (make-local-variable 'kept-undo-information) (setq kept-undo-information t) (use-keymap *bookmark-edit-mode-keymap*) (insert "(\n") (with-output-to-buffer ("*bookmark-edit*" (point-max)) (dolist (x *bookmark-list*) (format t "~S~%" x))) (goto-char (point-max)) (insert ")")) (defun bookmark-save-bmlist () (interactive) (message "変更を保存しました") (set-buffer (find-buffer "*bookmark-edit*")) (goto-char (point-min)) (replace-buffer "$" "" :regexp t) (goto-char (point-min)) (setq *bookmark-list* (with-input-from-selected-buffer (read))) (delete-buffer (selected-buffer)))
818 :
792 :04/04/14 02:22 ID:huEjO7wi
;;; メニュ (defun bookmark-menu () (interactive) (continue-pre-selection) (let ((menu (create-popup-menu)) (l (reverse *bookmark-list*))) (dotimes (i (floor (length l) *bookmark-menu-item-length*)) (let ((popup (create-popup-menu))) (add-popup-menu menu popup (format nil " Bookmark-~d" i)) (dotimes (i *bookmark-menu-item-length*) (let* ((num (caar l)) (filename (cdar l)) (fn (file-namestring filename)) (menu-item (cons fn num))) (add-menu-item popup nil (format nil "~A&~D: ~a" (if (>= i 10) (truncate i 10) " ") (rem i 10) menu-item) #'(lambda () (interactive) (bookmark-jump-to-bookmark num filename))) (pop l)))))
819 :
792 :04/04/14 02:23 ID:huEjO7wi
(let ((c 0)) (dolist (b l) (let* ((num (car b)) (filename (cdr b)) (fn (file-namestring filename)) (menu-item (cons fn num))) (add-menu-item menu nil (format nil "~A&~D: ~a" (if (>= c 10) (truncate c 10) " ") (rem c 10) menu-item) #'(lambda () (interactive) (bookmark-jump-to-bookmark num filename)))) (setq c (1+ c)))) (add-menu-separator menu) (add-menu-item menu nil "しおりをはさむ(&N)" #'(lambda () (interactive) (bookmark-add-new-bookmark))) (add-menu-item menu nil "ファイル名でソート(&S)" 'bookmark-sort-bookmark-list-by-filename) (add-menu-item menu nil "編集する(&E)" 'bookmark-edit-bookmark-list) (add-menu-item menu nil "すべて削除(&C)" 'bookmark-clear-all) (track-popup-menu menu))) ;;; キーバインディング (global-set-key '(#\C-c #\b #\n) 'bookmark-add-new-bookmark) (global-set-key '(#\C-c #\b #\c) 'bookmark-clear-all) (global-set-key '(#\C-c #\b #\m) 'bookmark-menu) (global-set-key '(#\C-c #\b #\e) 'bookmark-edit-bookmark-list) (global-set-key '(#\C-c #\b #\s) 'bookmark-sort-bookmark-list-by-filename) (global-set-key #\S-F2 'bookmark-menu)
820 :
792 :04/04/14 02:42 ID:hdm5iRny
ちなみにファイル名が無いバッファでC-c b nするとエラーになりますが、その場合はC-c b cで復帰できます。
>>814 エラーは出なくなりましたが、
howm関連のバッファタブが開いてしまいます...
822 :
名無し~3.EXE :04/04/14 15:37 ID:QJHPtSt+
>>821 howm 使ってないのでよく分からないが、howm 関連のバッファを作ってから後に
バッファ名を変えても非表示にはならないよ。
howm 関連のバッファが作られる前にバッファ名を変更しておけばできるはず。
824 :
名無し~3.EXE :04/04/15 12:21 ID:FlDivr1u
howm-view-contents-open あたりの find-file をどうにかする? どうするのかはしらない
826 :
792 :04/04/16 22:59 ID:M/cdZU6H
815から819の修正です。 @815の (defun bookmark-jump-to-bookmark (num filename) の2行下の (menu-item (cons num filename)) を削除。 A815の (defun get-buffer-filename () からその2行下の filename)) までを削除して、 (defun get-string-from-line () (let ((str (buffer-substring (save-excursion (goto-bol) (point)) (save-excursion (goto-eol) (point))))) str)) に差し替え。 B816の (defun bookmark-add-new-bookmark () からその8行下の t) ;;; nbutlast (list &optional (n 1)) までを削除して、 (defun bookmark-add-new-bookmark () (interactive) (if (get-buffer-file-name) (let ((bookmark (cons (cons (current-line-number) (get-buffer-file-name)) (abbreviate-display-string (string-trim '(#\SPC #\TAB #\ ) (get-string-from-line)) 54 nil)))) (push bookmark *bookmark-list*) (let ((exceed (- (length *bookmark-list*) *bookmark-max*))) (when (> exceed 0) (setq *bookmark-list* (nbutlast *bookmark-list* exceed))))) (plain-error "ファイル名がないよん。")) t) に差し替え。
827 :
792 :04/04/16 23:01 ID:M/cdZU6H
C818の (defun bookmark-menu () の9行下の (let* ((num (caar l)) からその3行下の (menu-item (cons fn num))) までを削除して、 (let* ((tmp (caar l)) (num (car tmp)) (filename (cdr tmp)) (str (cdar l)) (fn (file-namestring filename)) (num2 (format nil "~A" num)) (menu-item (concat fn "\t|" num2 "|" str))) に差し替え。 D819の上から3行目の (let* ((num (car b)) からその3行下の (menu-item (cons fn num))) までを削除して、 (let* ((tmp (car b)) (num (car tmp)) (filename (cdr tmp)) (str (cdr b)) (fn (file-namestring filename)) (num2 (format nil "~A" num)) (menu-item (concat fn "\t|" num2 "|" str))) に差し替え。 以上です。
828 :
792 :04/04/16 23:02 ID:M/cdZU6H
●修正点 ・ファイル名が無いバッファで C-c b n するとメニューが生成されなくなるエラーを修正。 ・しおりをはさむ際、メニューの最後に論理行の行頭から行末までの文字列を追加する(行頭・行末のスペース・タブは追加しない、長すぎる場合は中間を省略)ように変更。 ●インストール方法 1. 815の (provide "my-bookmark") から、819の最後の (global-set-key #\S-F2 'bookmark-menu) までをコピーして上記の修正を加えた上で、~/site-lispに my-bookmark.l という名前で保存する。 2. 必要に応じてバイトコンパイルする。 3. .xyzzy または siteinit.l に以下の記述を追加する。 (require "my-bookmark") 4. siteinit.l に記述した場合は xyzzy を再ダンプする。 5. 以前のものを使用していた場合には、C-c b c で以前のリストを削除して下さい。 ●使い方 ・C-c b n またはメニュー(S-F2 または C-c b m で表示)の「しおりをはさむ(N)」を選択すると、現在のバッファのファイル名・行番号(論理行)・行頭から行末までの文字列を取得してメニューに追加する。 ・メニューからしおりを選択すると該当ファイルの該当行にジャンプする。 ・C-c b e またはメニューの「編集する(E)」から編集画面を開いて不要な行を削除した後、C-g で、編集終了。
添削お願いします。 (defun path-complete () (interactive) (let ((bpt (save-excursion (goto-bol) (point))) (curp (point)) start end dir dir1 str files) (save-excursion (skip-chars-backward "^\\/") (setq end (point)) (scan-buffer "\\(~/\\|[A-Za-z]:/\\|[A-Za-z]:\\\|//[A-Za-z]/\\)" :regexp t :reverse t :case-fold t :limit bpt) (setq start (point)) (setq dir (buffer-substring start end)) (when (< 1 (length dir)) (cond ((equal (substring dir 0 1) "~") (setq dir1 (concat (si::system-root) (substring dir 2 nil))) (setq str (buffer-substring end curp)) (when (and dir1 (file-directory-p dir1)) (setq files (directory dir1 :wild (concat str "*")))))
831 :
続き :04/04/17 17:55 ID:MAeYMpUV
((equal (substring dir 0 2) "//") (setq dir1 (concat (substring dir 2 3) ":" (substring dir 3 nil))) (setq str (buffer-substring end curp)) (when (and dir1 (file-directory-p dir1)) (setq files (directory dir1 :wild (concat str "*"))))) ((equal (substring dir 2 3) "\\") (setq dir1 (map-backslash-to-slash dir)) (setq str (buffer-substring end curp)) (when (and dir1 (file-directory-p dir1)) (setq files (mapcar (function map-slash-to-backslash) (directory dir1 :wild (concat str "*")))))) (t (setq dir1 dir) (setq str (buffer-substring end curp)) (when (and dir1 (file-directory-p dir1)) (setq files (directory dir1 :wild (concat str "*"))))) ))) (when files (popup-list files #'(lambda (x) (if (not (or (string= "/" (buffer-substring (point) (1- (point)))) (string= "\\" (buffer-substring (point) (1- (point)))))) (delete-region (point) (save-excursion (skip-syntax-spec-backward "^_")(point)))) (insert x) (refresh-screen) (if (file-directory-p (concat dir1 x)) (path-complete)))))))
NetInstallerでインスコできるcomplete-pathとどう違うんだ?
833 :
792 :04/04/18 00:33 ID:a37ACMzd
>>829 これでいいのかわかりませんが、一応 Wiki に815〜819、826〜827をさらに修正したものをあげてみました。
http://www003.upp.so-net.ne.jp/rex/ ここのdexplore.l使ってる人いますか?
うちでは次のようなエラーが出て使えないんです。
---------------------------
.NET Framework SDK ドキュメント
---------------------------
このダイアログ ボックスのヘルプはありません。
このアプリケーションのヘルプ コレクションがシステムに
インストールされているかどうか確認してください。
---------------------------
OK
---------------------------
;;; siteinit.l
(require "dexplore")
(setf dp:*default-help-collection* "ms-help://ms.netframeworksdkv1.1.ja")
(define-key ed::*csharp-mode-map* #\F1 'dp:search-selection)
>>786 > howmに関するバッファタブがにツールバーを占有しているのですが、
> どうすればhowm関係のタブは表示しないように設定できるでしょうか。
「howmに関するバッファ」をどこまでとしているのかわかりませんが、
howm-init.l に以下のように書いておくことで得られる動作はどうですか?
(setq howm-menu-name-format " *howmM:%s*")
(setq howm-view-summary-name " *howmS:%s*")
(setq howm-view-contents-name " *howmC:%s*")
>>832 complete-pathはdo-completionでリストをポップアップするだけじゃない?
C:/と打ったあと、ファイルに当たるまで(C:/Program Files/Xyzzy/.xyzzy)
ディレクトリを掘り下げていきたいんだけど。
837 :
名無し~3.EXE :04/04/19 02:32 ID:wAIie4N0
例えば perl-mode で補完じゃなくタブをそのままワンキーで入れたいのですが、どうすればいいのでしょう? (add-hook 'ed::*perl-mode-hook* #'(lambda () (setq *perl-indent-column* (tab-columns)) (make-local-variable 'indent-tabs-mode) (setq indent-tabs-mode t))) ↑こんな感じではダメでした。 text-mode みたいに、どこに居る場合でも tab 押したらそのまま TAB が欲しいのです。
>>837 text-modeのときに「ヘルプ」→「キー割り当て一覧」をしてみると、
TABにはself-insert-commandが割り当てられていることが分かります。
ということで、例えばこうとか。
(add-hook 'ed::*perl-mode-hook*
#'(lambda ()
(define-key ed::*perl-mode-map* #\TAB 'self-insert-command)))
839 :
786 :04/04/19 09:48 ID:e5PtfUJL
>>835 教えていただいたとおり書いたhowm-init.lをxyzzy.exeと
同じディレクトリに置いたところ、期待通りの動作をしました。
ありがとうございました。
xyzzy本体のソースファイルが公開されていると聞いたんですが、URLを教えていただけませんか? 作者さんに連絡とる必要があるとか、そういう配布方法なのかな?
ありがとうございました。既出でしたか、すみませんでした。 MLでそのURLは見たのですが、ふざけているのかと思いそのまま見過ごしてしまいました。
>>836 うーん、自分の環境だと同じ設定方法で使えてます。
;;; siteinit.l
(require "dexplore")
(setf dp:*default-help-collection* "ms-help://ms.netframeworksdkv1.1.ja")
(define-key ed::*csharp-mode-map* #\F1 'dp:search-selection)
使えていない方多いのでしょうか…
845 :
名無し~3.EXE :04/04/24 00:59 ID:UZYiJLdI
shell3で 1. サブプロセスが走っているときは C-nで'shell-history-next 2. exitしたら、 C-nで下の行へ移動 という設定は可能でしょうか。
>>845 (process-status (buffer-process (selected-buffer)))
の値を見て条件分岐してやればできそう。
847 :
名無し~3.EXE :04/04/24 09:21 ID:DikL95n9
xyzzy の正規表現で日本語の全角文字一文字にマッチするのとかあったような気がしたんですが、探してみても見つかりません。 おしえてください。
>>847 \sj
これかな?
referenceの「正規表現の表記」及びskip-syntax-spec-forwardを参照。
849 :
名無し~3.EXE :04/04/26 23:11 ID:r5K8utnh
.xyzzyの記述について教えてください。バージョンは0.2.2.233です。 (defun upcase-before-word() (interactive) (backward-word) (upcase-word)) (define-key ctl-c-map #\u 'upcase-before-word) .xyzzyに以上の記述をしたら「変数が定義されていません: ctl-c-map」という ダイアログが出ます。 M-x apropos ctlとすると、*Help*バッファには「ctl-c-map」というのが一行目に 出てきます。 ctl-c-mapをctl-x-mapに変えるとダイアログは出てきません。 何が悪いんでしょうか?
C-cの後に何か割り当てるなら、 (define-key spec-map #\C-b 'hoge) とやってるが(これでC-c C-bでhoge実行)。 バージョンは0.2.2.228 最近のバージョンは違うんだろうか
てす
852 :
名無し~3.EXE :04/04/27 23:36 ID:hiOi/LRk
>>849 (global-set-key '(#\C-c #\u) 'upcase-bofore-word) でもOK
>>849 > .xyzzyに以上の記述をしたら「変数が定義されていません: ctl-c-map」という
> ダイアログが出ます。
> M-x apropos ctlとすると、*Help*バッファには「ctl-c-map」というのが一行目に
> 出てきます。
> ctl-c-mapをctl-x-mapに変えるとダイアログは出てきません。
> 何が悪いんでしょうか?
誤って ctl-c-map を使用しているのが悪いです。
上記で「ctl-c-map」が一行目にでてくるのは、define-key の記述の中で
ctl-c-map を誤って使用した際に、symbol が登録されたからです。
通常であれば、M-x apropos ctl では以下が出力されます。
----------------------------------------
ctl-x-4-map
ctl-x-4-prefix
ctl-x-6-map
ctl-x-6-prefix
ctl-x-map
ctl-x-prefix
mouse-ctl-left-motion
mouse-ctl-left-press
----------------------------------------
855 :
849 :04/04/28 21:36 ID:41ntfSbc
>>850 >>853 >>854 ご教授ありがとうございます。
ダンプファイルを作り直したら、M-x apropos ctlの結果が
>>854 の通りになりました。
自分の間違い記述がずっと影響してたんですね( ´д`)
よい勉強になりました。感謝!(・∀・)b
856 :
名無し~3.EXE :04/04/30 10:37 ID:dzh7A1hg
質問です。 ActivePerlをインストールしてPATHも通しました。 コマンドプロンプトでperl -vしたらちゃんと This is Perl, v5.6.1 built for 〜〜と表示されます。 が、xyzzyでM-x shellでperl -vしても 'perl' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されてません。 と返ってきます。 どうすればxyzzyでperlコマンドを実行できる様になりますか?
echo $PATH を表示させてみる
858 :
856 :04/04/30 11:22 ID:dzh7A1hg
コマンドプロンプトからPATHを見てみるとC:\Perl\bin\; を確認出来ましたが xyzzyのM-x shellでPATHを見てみるとC:\Perl\bin\;がありませんでした。 むむむ、これはどういう事でしょう。.xyzzyに何か書き込むのかなあ・・・。
>>858 とりあえず
・OS
・PATHを追加した方法
を書いてみるべし
860 :
856 :04/04/30 11:46 ID:dzh7A1hg
自己解決しました。
>>859 さんの・PATHを追加した方法と言うのでぴんと来て以下の事を試してみました。
ActivePerlをインストールする時にインストーラがPATHを追加してくれる様に
チェックボックスにチェックを入れたのですが、これがまずかったのかと推測。
一度マイコンピュータを右クリックしてプロパティの環境変数のPATHからC:\Perl\bin\;を消去。
再起動後、手動で環境変数のPATHへC:\Perl\bin\;を追加。そして再起動。
これでxyzzyのM-x shellでコマンドプロンプトからperlコマンドを打てる様になりました。
スレ汚し大変申し訳ありませんでした。
emacs だと Ctrl 5 f で新しいウィンドウでファイルを開けるんだけど xyzzyだと左右に分割されちゃうよ! 新しいウィンドゥで開くにはどうすればいいの?
C-x 4 f
863 :
861 :04/05/01 19:51 ID:Nr7sHohQ
>>862 サンクス
と思ったけど、こんどは上下に分割されちゃいました。
>>861 emacs でいうところの frame は xyzzy には無い為、同じことはできません。
しいて言えば、xyzzy.exe にファイルを渡す lisp コードを書くことでしょうか。
emacsでいうところのフレームと,xyzzyでいうところのフレームって 全然違うものなの?
全然違う。 xyzzyのフレーム(もどき)はEmacsで言うとelscreenなんかに近い。かな。
867 :
名無し~3.EXE :04/05/02 20:31 ID:3SKN3Yiq
xyzzyかmeadowのどちらを導入するか悩んでます。 調べたところではxyzzyはかなり軽くてwindowsとの親和性も高いそうですが、 一方meadowはemacsとかなり近いためにそれはそれの便利さがあるそうです。 皆様がmeadowではなくxyzzyを利用されるのは、どのような理由からでしょうか?
(前略)行けばわかるさ ありがとう〜
>>867 そこまで分かっているのに
なぜ質問するんだい?
xyzzyからtest
>>867 Windowsアプリとしてxyzzyの方がはるかに完成度が高いから。
html+-modeを使っています。 htmlファイルの文字コードをEUCに固定したいんですが、拡張子別に 保存する文字コードを指定できたりしますか?
>>872 拡張子別と言うわけではありませんが、こんな感じでどうぞ。
(1)(defvar *html+-detect-charset* t)とする
(2)html本文中でcharsetをちゃんと指定する。<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
これでファイルに漢字などが含まれていなくても意図する文字コードで開かれる筈。
>>873 こんな機能あったんだ. 全然コメント読んでなかったので知らなかった.
横からありがとん.でも defvar はあんまりよくない気がする.
(add-hook '*html+-mode-hook* #'(lambda () (setq *html+-detect-charset* t)))
とするか
(if (boundp 'ed::*html+-detect-charset*)
(setq ed::*html+-detect-charset* t)
(defvar ed::*html+-detect-charset* t))
した方が安全だと思う.この辺の違いを分かった上で defvar 使うならそれはそれでありだけど.
>>873 サンクス!
でも (defvar *html+-detect-charset* t) 書いたら
名前が衝突するためにexportできません:editor::*html+-detect-charset*
とか怒られました。
ホイールボタンクリックで "" クォーテーションの間を選択するようなことは出来ますか?
>>876 (defun dquote-selection ()
(interactive)
(goto-last-mouse-point)
(unless (scan-buffer "\"" :reverse t :tail t)
(goto-char (point-min)))
(start-selection 2 t)
(unless (scan-buffer "\"" :no-dup t)
(goto-char (point-max))))
(global-set-key #\MBtnUp 'dquote-selection)
大体こんな感じでしょうか。
これを書いてて、goto-last-mouse-point関数をはじめて知った。
878 :
名無し~3.EXE :04/05/05 13:03 ID:HGIlFqqT
xyzzyをどれかのキー一つで起動するにはどうすればよいでつか
>877 ウホ、dクス
881 :
sage :04/05/06 01:04 ID:oBK21dLU
>879 繭とか。
バックアップファイルを決められたディレクトリに一括管理することってできないの?
>>883 ε ⌒ヘ⌒ヽフ
( ( ・ω・)
しー し─J クス
検索ワードにディレクトリをいれ忘れてた・・・
素朴な疑問で既出かもしれんが、最近 verup が無いのは何故?
>885 特にバグも無いようだし、新しい機能はlispで書いてねってことだろうよ。
>>888 今まで月一でバージョンアップしてきたのがパタッと止まったのには
なにかあるにちがいない。間違いない。
あるスクリプトでテキストファイルを生成したのですが、特定の行だけ 末尾に行番号や[EOF]と同じ色で^Mという文字がついています。 ファイル自体はeuc-jp,lfです。 気になってしょうがないのですが、xyzzyでは行末の^Mとは何を表しているのでしょうか? 多分改行コード関係だと思うのですが…。
>>888 CR。スクリプトの改行コードがCR LFになってるんじゃないかな。
手っ取り早い方法はスクリプトの文字コードもeuc-jpでlfにしちゃうこと。
明示的に改行コードを指定することもできるはずなので、そっちの方が確実かな?
どっちにせよ多少の手直しは必要だと思う。
890 :
名無し~3.EXE :04/05/08 15:55 ID:24cMdKKJ
亀井氏は現在、linux版xyzzyことkamecsを製作中です。
S 式のなかで一時的に変数の値をおきかえるように 例 (let ((buffer-read-only nil)) (declare (special buffer-read-only)) --) S 式のなかで一時的に関数を別のものにしたいのですが、 どんな感じに書くのでしょうか? 例えば、 (defun foo () (msgbox "foo")) の時、 (let ((def (symbol-function 'foo))) (setf (symbol-function 'foo) #'(lambda () (msgbox "hoo")));foo の定義を書きかえる (setf (symbol-function 'foo) def);foo の定義を元に戻す ) のような処理をもっとスマートに書きたいのですが。
リファレンスに取り込み保留の所を見て書いた。 labelsとの違いはあの説明じゃわからんな。 (defun foo () (msgbox "foo")) (flet ((foo () (msgbox "hoo"))) (foo))
894 :
892 :04/05/08 20:27 ID:jfFYbwKe
>>893 トンクスです。
flet というのを知りませんでした。謝謝
一応書いておくと, fletもlabelsも局所的な関数定義をするためのものだけど, flet は,関数定義内での関数呼び出しにfletで宣言した関数を使わない. labels は,関数定義内での関数呼び出しにlabelsで宣言した関数を使う. 簡単にいうと,flet で宣言した関数は再帰呼び出しが使えず,labelsで宣言した 関数は再帰呼び出しが可能.
>>891 > 亀井氏は現在、linux版xyzzyことkamecsを製作中です。
>
ホントですか
ホントなら開発に協力できると思う。微力ながら。
899 :
898 :04/05/09 16:05 ID:7Ts/kLGL
つーか、亀井さんは、Common Lispへの準拠度を上げる気はあるのかな?
だれでもいいから CLOS を xyzzy の構造体の上なり,C++ で書かれた ソースコードに手を加えるなりして実装してほしい. Common Lispのライブラリって大抵 CLOSがかかわってるからなぁ
KaTeXをインストールしたのですが、tab入力をインデントにしようと思い、 C言語モードの書式を真似て (define-key KaTeX-mode-map* #\tab 'self-insert-command) ってな具合にしてみたのですが、エラーを出してしまいます。 どなたか助言をおねがいします。
>>901 KaTeX使ってないけど、
× KaTeX-mode-map*
○ *KaTeX-mode-map*
じゃないの?
> ってな具合にしてみたのですが、エラーを出してしまいます。
> どなたか助言をおねがいします。
どういうエラーが出たのかきちんと書くべし。
ビジネスnews+がみれないのです
移転したからじゃ?
>>900 >だれでもいいから CLOS を xyzzy の構造体の上なり,C++ で書かれた
>ソースコードに手を加えるなりして実装してほしい.
今ちょうど、CLOSをMOPに沿って実装しているので、完成したらxyzzyへ
移植するかも。構造体を利用するやり方です。ただし、symbol-macroletが
xyzzyに無いので、with-slots, with-accessorsはダメな予感。
みんな、こういう自作のパッケージを発表するのはどこでやってるの?
やっぱ、メーリングリストですか?
>>902 焦ってたもので、情報が抜けてました。お詫びします。
*KaTeX-mode-map* だと、 「変数が定義されていません*KaTeX-mode-map*」
ed::*KaTeX-mode-map* だと、「変数が定義されていません editor::*KaTeX-mode-map*」
elisp::*KaTeX-mode-map* だと、「変数が定義されていません eslip::*KaTeX-mode-map*」
となってしまいました。
>>906 (add-hook 'el::katex-mode-hook
#'(lambda ()
(define-key el::*KaTeX-mode-map* #\TAB 'self-insert-command)))
413 を参照。
909 :
900 :04/05/10 15:37 ID:W9GT0qX/
>>907 ばっちりTABインデント出来ました、ありがとうございます。
今度からは、もうちょっと頭を使ってスレ検索しようと思います。
100%準拠ってできるの?
>>912 > 100%準拠ってできるの?
現状では、ユーザが Lisp レイヤで出来る範囲では無理。
引っかかるのは、一部の特殊オペレータが実装されていないってところと、
あと declare 回りもかな。ぱっと思いつくところだと。
まあぶっちゃけ 100% 準拠してなくても……
clisp あたりなんかも完全に準拠できてるわけじゃなかった気がするし。
準拠度が上がるのが有難いのは確かだけれど。
>>912 > 100%準拠ってできるの?
>>913 さんがおっしゃっているように、現状ではC++に手を入れないと辛い
部分もありそうです。景気つけに言ってみました。
Lispレイヤですぐにできそうなのは、マクロ類の一部です。
全部は調べていないのですが、たしかecaseが無かったので、そのような
マクロで足りないのがまだあるのではないかなと思いました。
とりあえず、今、俺が作業するとしたら、そういうマクロを調べて、macros.l
としてまとめることかな。
ただ需要はあるのでしょうか? XyzzyはWindowsのときしか使わないので自分として
の動機付けはいまいちといったところです。
みなさん、Common Lisp Hyper Specとか使っています?
「よろずや」さんが、辞書引き用のhyperspec.lを公開してますけど。
ttp://www.geocities.co.jp/SiliconValley-SanJose/7474/LispDevelopEnvironment.html それともxyzzy用のreferenceが主流かな?
BMP以外のunicode文字の入力and表示ができないんだけど、 改造のポイントの情報を教えてくださいな。
916 :
名無し~3.EXE :04/05/12 19:31 ID:7HNoD4LZ
2ch-modeで就職板が開けないのですが、なぜでしょう? 他の板(Windowsとか)はOKなのです。。。
>>916 移転したんじゃない?
板リスト再読込してみたら。
919 :
916 :04/05/12 21:22 ID:7HNoD4LZ
>>917 再読込はやってみたんですが、ダメです。
ちなみにブラウザではきちんと表示されます。
Windows2000
xyzzy0.2.2.233
>>919 移転したんじゃない?
スレリスト再読込してみたら。
便乗質問。鯖移転などの場合、板一覧リストを取得することで是正するわけですが、 大抵半日ほどのタイムラグがあります。 これを手動で書き換えたいのですが(大抵xxx4.2ch.net→xxx5.2ch.netなどになる場合が多いので) スレが数多くあると手作業では大変ですし、訂正し忘れや関連部分に破綻が生じる可能性もあります。 どのようにしたらスマートに解決できるか、識者の方ご存知でしたらご教授願います。
>>921 半日待って是正するのがスマートな解決策。
>>915 > BMP以外のunicode文字の入力and表示ができないんだけど、
> 改造のポイントの情報を教えてくださいな。
ML で聞くべきです。
>>921 C-Rでbbstable取りに行って自動で書き換えるという動作を一部改編して、
古いURL入力ダイアログ → 一致するものがあれば新しいURL入力ダイアログ
としてtableを書き換えさせれば行けると思う。でも詳しいLisp書くはめどいので他の識者に譲る。
バッファタブをダブルクリックしたらバッファを閉じるようにしたいの ですが,そのようにできないのでしょうか?
927 :
925 :04/05/14 20:01 ID:iOIzgqsj
>>926 愚愚っても見つかりません.
某所のnamazu検索でも それらしいものはヒットしません.
何も分からなかったので,何か知っているなら教えてください.
この問題,lispだけでは解決できない問題なのかと思っていたけど.
>>926 925じゃないのですがぐぐっても出てこないのでキーワード教えてください。
>>927 , 928
現状では無理。諦めたほうがいいよ。
>>925 妥協案
(global-set-key #\MBtnDown 'mouse-left-press)
(global-set-key #\MBtnUp #'(lambda () (interactive)
(close-selected-buffer)))
>>925 (defun close-buffer-dblclick ()
(interactive)
(let ((click (mod *last-mouse-click-count* 6)))
(if (= click 2)
(close-selected-buffer))
(mouse-nop)))
(global-set-key #\LBtnUp 'close-buffer-dblclick)
こんなのじゃだめですよね。
バッファタブをクリックというのを取得できればいいんですが。
ところで、Grep結果から行単位(これは nazoking さんの、grep-mode.l(
http://nazoking.s31.xrea.com:8080/k/grep-mode.l )で可能です)
ではなく、テキスト単位で絞込み検索をかけることは可能でしょうか。
つまり、Grep結果に表示されているファイルだけを対象にして、別のパターンで再度Grepをかけるというようなことをしたいのです。
Grepで1000件以上もヒットすると少し悲しくなるので、お分かりの方お願いします。
>>925 > バッファタブをダブルクリックしたらバッファを閉じるようにしたいの
> ですが,そのようにできないのでしょうか?
あなたが winapi を駆使したコードを書けばできるのではないでしょうか?
933 :
925 :04/05/15 21:31 ID:WmfAURPX
>>930 ,931
ども.
やはり無理でしたか.
ホイールクリックという代替案に当分の間 お世話になろうと思います.
ありがとうございました
> つまり、Grep結果に表示されているファイルだけを対象にして、別のパターンで再度Grepをかけるというようなことをしたいのです。
たぶん,まだだれもそういった lisp を公開してないと思います.
でも *grep* バッファの内容と grep のヒストリから,ヒットしたファイルに対して
もう一度 grep をかけることはできます.ただgrepのファイル名指定にディレクトリ名を
含ませることはできないので,かなり面倒だと思います.
cygwinに含まれているgrepについては全然知りませんが,ひょっとしたらそちらを使うと
楽に作れるのかもしれません.
とりあえずは ggrep or エクスプローラの検索 or grep-mode というのが,妥協点でしょうか.
ここまで書いておいてからggrepのコードをながめ,コーディングレベルの高さに感銘しつつ思ったことは
いうほど難しくは無いけど,やっぱり楽じゃないです.
>>932 winapiについては全くの無知なんですが,winapiを使えば xyzzy のバッファタブに対するダブルクリック
というイベントを捕まえることってできるんですか?
そういったことをやっている類似のコードがあれば参考にできるんですが現状では知らないのです.
winamp.l とかは,xyzzyから一方的にイベントを送り,場合によってはその結果をもらうといった処理を
しているのは分かるんですが.
>>931 (1)*grep-directory-history* と grep バッファから、
Grep結果に表示されているファイルのリストを作成する関数。
(2)ファイルのリストに対して grep をかける関数。
を作ればよいのでは。
(1)は簡単。
(2)についても grep.l の grep1(buffer に対してgrep をかける) とか
参考にすれば出来るのでは。
そんなに難しくないと思いますよ。
935 :
931 :04/05/15 22:27 ID:zBrX1nI2
>>933 >ホイールクリックという代替案に当分の間 お世話になろうと思います.
ここの過去ログに既出ですが、こんなのもありますよ。
;閉じるボタンの追加
(add-hook '*init-app-menus-hook*
#'(lambda ()
(add-menu-item *app-menu* 'close-box :close-box
#'kill-selected-buffer)))
>でも *grep* バッファの内容と grep のヒストリから,ヒットしたファイルに対して
>もう一度 grep をかけることはできます.ただgrepのファイル名指定にディレクトリ名を
>含ませることはできないので,かなり面倒だと思います.
>cygwinに含まれているgrepについては全然知りませんが,ひょっとしたらそちらを使うと
>楽に作れるのかもしれません.
私もcygwinやemacsは全く知らないのですが、Grep結果からF10でファイルを開けているので、
何らかの変数にディレクトリ名を含めたファイル名を保存していると思われるため、
絶対できないということはないと思います。
>ここまで書いておいてからggrepのコードをながめ,コーディングレベルの高さに感銘しつつ思ったことは
>いうほど難しくは無いけど,やっぱり楽じゃないです.
確かにggrepはよく出来ていますよね。OR検索についてはggrepで問題ないのですが、
やっぱり絞込みは欲しいので、できるかどうかわかりませんが自分で作ってみようかと思います。
しかし、grep.l、grepd.l を見た限りではかなり複雑なので(glob.l も絡んでいるようです)相当時間がかかりそうですが。
936 :
931 :04/05/15 22:32 ID:zBrX1nI2
>>934 レスを書いている間に書き込んで頂いたようなので重複しますが、
参考にさせていただきます。
>931 (1)grep時に既存のgrep結果を消去しない (2)grep結果バッファからgrepを行った場合、カーソル行と履歴からファイル名・フォルダ名を読み取り これができれば何とかなるかと。
938 :
931 :04/05/16 01:31 ID:58tgYjTg
>>937 とりあえず今考えているのは *grep* バッファの先頭の : までを取り出して、
同一ファイル名の場合にはリストに追加せずに、*grep-directory-history* の car 部と結合させて
リスト化しようということです。
さっそく *grep* バッファのリスト化という所でつまづいています。
私xyzzyを使い始めて3ヶ月弱で(MLには今日入会しました)プログラミングも素人同然なので、
いずれにしてもかなり時間がかかると思います。
940 :
931 :04/05/16 17:41 ID:L1itIi1+
>>939 で頂いた情報と grep.l、grepd.l を基にして、
Grep結果に表示されているファイルを対象に再度GrepをかけるというLispが出来ました(多分)が、
需要あります?
あればwikiにあげさせてもらいますけど。
942 :
931 :04/05/16 20:45 ID:bwBXKTBH
>>941 暫定版ですが、とりあえず動くようなのでupしてみました。
今手直し&多少の機能追加検討中です。
なにかおかしなところがあったら指摘たのみます。
*regrep*バッファからregrepはできんの?
944 :
931 :04/05/16 22:48 ID:sO9Xc5Id
>>943 まさに、それが検討中の機能だったのですが、
再びupしましたので今度はできるようになったと思います。
ggrep キタ──────────(゚∀゚)──────────!! 変更履歴に AND 検索の修正が含まれてますが, このAND指定って 1行に含まれる単語の指定ですか?
せっかく書いたのに無駄になった(T_T)
勉強になったからいいじゃないか。何よりの宝だ。
>>946 せっかくだからここに貼ってみては如何でしょう。
あまり長いとあれかもしれませんが。
931さんじゃないのかなと思ってみたり
;;バックアップファイルを指定したフォルダに保存する (require "backup") (setq *backup-directory* "D:/Program Files/Xyzzy/backup-files") (setq *hierarchic-backup-directory* t) とsiteinit.lに記述したんですが指定のフォルダにバックアップファイルが作られません。 おまけに#hoge#とかいうよく分からないファイルもできてしまいます。
>>950 siteinit.lcを削除したあと、xyzzyからbite-compile-fileでsiteinit.lからsiteinit.lcを再生成する。
そのあとxyzzy.exeと同じフォルダにある、ダンプファイルを削除してみた?
すいません。 バックアップファイルを作るのチェックが外れてました・・・。
ども。
>>945 > 変更履歴に AND 検索の修正が含まれてますが, このAND指定って
> 1行に含まれる単語の指定ですか?
です。AND も OR も一行内のマッチについてです。
>>946 ダイアログ内の収まりがよさそうだったので ggrep-dialog にも機能追加
してみました。
無駄なことなんてそうそうないですよ。
私のてけとー拡張スキルも日ごろの調査/編集効率に直結してますし。
何が役に立つのかよくわからない世の中です。
改行を全て吹っ飛ばすlispを熱望してみる
>>954 こんなの?
(defun newline-all-delete ()
(interactive)
(goto-char (point-min))
(while (scan-buffer "\n+" :regexp t)
(delete-region (match-beginning 0) (match-end 0))))
>>955 > (defun newline-all-delete ()
やっぱり delete-all-newline で。
>>955 うおー
さんくすこ
糞みたいな大量のHTMLをJSに組み込みのに必要だった
マジthx
>>954 replace-stringを使うべし
Λ ↑ この文字、ギリシャ文字なんですが、このレスをブラウザで表示さ せて、xyzzy にコピーアンドペーストすると、文字が化けます。文 字化けを無視して保存させて開きなおすと文字は元に戻るんですが、 2ch-mode で文字化けしたまま送信すると、さらに別の文字に文字 化けします。 この現象はどういう理屈で起こるんでしょう…
>>959 参考にもならないかもしれないけど、うちでは大丈夫だった。
フォントはMSゴシック。
原因はクリップボードエンコーディングとかかなあ?
961 :
959 :04/05/18 22:46 ID:cBxMxLhG
>960 レスありがとうございました。自分だけなのか…('A`) ちなみにフォントは自分もMSゴシックです。クリップボードエン コーディングは Shift_JIS でした。OS は XP です。もう少し悩ん でみます…
名前の由来はマインスイーパーの裏技のコマンドっぽい。
963 :
名無し~3.EXE :04/05/19 16:04 ID:FqbsYtG3
Λ はラムダ
>>961 保存して開きなおした時のエンコーディングは何なの?
sjis? euc? utf8?
966 :
959 :04/05/19 20:34 ID:z0hDcxIQ
>964 レスありがとうございます。 >保存して開きなおした時のエンコーディングは何なの? sjis です。バイナリエディタで調べたところコードは 0x83a9 で、きちんとギリシャ文字になっているようです。
2ch-modeで、名前欄やIDから検索・抽出はできないのでしょうか。(/のような感じで)
>>967 あなたは何を調べ、何がわかりましたか?
ruby-modeをつかってます。キーワード do とかを認識してくれるのはいいんすが、 doc_title みたいな変数名も do というキーワードと誤認識してしまうらしく、 自動インデントが狂ってしまいます。結構困ってるんですけど、どうしたら直せますか。 ヒントでいいのでください。ていうかみんな困ってないのかな。 xyzzy 0.2.2.233
>>969 ruby.lの*ruby-block-beg-re*からdoを削除すれば?
calc-ruby-indentの方でdoだけを別に見てるみたいだし。
そろそろ次スレよろ
よっしゃテンプレチェックして俺が立ててやるから待ってろ
howm-prefixを変えるにはどうしたらよいのでせうか。
>>970 ありがとうございます。そのヒントを参考にして、*ruby-block-beg-re* の正規表現を書き換えました。
具体的には、
"class\\|module\\|def\\|if\\|unless\\|case\\|while\\|until\\|for\\|begin\\|do"
となっている部分を、単語の境界線を表す\\<と\\>を各単語につけて
"\\<class\\>\\|\\<module\\>\\|\\<def\\>\\|\\<if\\>\\|\\<unless\\>\\|\\<case\\>\\|\\<while\\>\\|\\<until\\>\\|\\<for\\>\\|\\<begin\\>\\|\\<do\\>"
にしてみました。快適です。
x
983 :
名無し~3.EXE :04/05/23 15:13 ID:pzlTjUZA
hide-ifdef-mode ってのは飾りか? 『何か分からんけど cpp がエラー』って それだけじゃわからんぞ
立てれんかったよペッコリ45度
>>983 cppは入ってますか?hide-ifdefをやるには予めプリプロセッサへの
パスがとおってないとダメです。
亀井さんのページしんでる?
>>985 > cppは入ってますか?
cygwin の /usr/bin/cpp でいいんでしょうか
;; ちょっと手元に xyzzy がないんで分かりませんが
>>966 もうみてないかもしれないけど,バッファーモードラインに表示されている
sjis:crlf とかと,バッファ右クリック - エンコード - 日本語 でチェック
されている値は一致してないことがあることに気づいた.
ここで Shift_JIS を指定していれば,変にいじった環境でなければ正しく
表示されると思うのだが.
990 :
959 :04/05/23 19:13 ID:oe+lx60M
>989 大変ご迷惑をおかけしました…うまくコピーアンドペーストでき ました!お付き合いしていただいた皆様、ありがとうございました…(⊃д`) >バッファーモードラインに表示されている >sjis:crlf とかと,バッファ右クリック - エンコード - 日本語 でチェック >されている値は一致してないことがあることに気づいた. 確認してみましたが、sjis:crlf でした。起動直後の xyzzy に コピーアンドペーストしていたので… で…結局原因はなにかといいますと…ブラウザに mozilla を使 っていたからでした…_| ̄|○ IE からだと普通にコピーアンドペーストができました。ほんと にしょうもないことでお騒がせしましてすみませんでした…(多謝)
>>988 cygwin ってことはコンパイラは gcc ですね。
(setq ed::*hide-ifdef-cpp* "gcc -E")
みたいです。
[xyzzy:06873] 辺りより。
>>992 了解です。
明日チェックしてみます。
; 多分、回答は来週末になりますが…