1 :
名無し~3.EXE :
2005/09/27(火) 10:05:35 ID:AiD5eisy 亀井さん作成のエディタxyzzyのスレです。
過去ログや関連サイトなどは
>>2-10 あたり。
なにはともあれをつかれー
おつかれさん Win板も油断ならんな
980超えて一日書き込みがないと落ちるはず。
つーことで質問いっすか。 lispのプログラム内でfind-fileして、ファイルの中身を書き換えてsave-bufferしようとすると 「誰かが勝手にファイルを書き換えて云々」と出ますが あれはどうやって止めればよいのでしょう save-bufferの引数はencodingと改行コード指定だけで 警告すんな、みたいなオプションはないようなんですが
レスどうもです。テキトウに書いて申し訳ない。 「知らない間にファイルの日付が変わっています。編集を継続しますか?」 と 「知らない間にファイルの日付が変わっています。保存しますか?」 の二つのアラートです。 いったんread-fileしてデータを読み込んで、lispに処理させた結果をまた書き込む ようなことをしたかったのですが、教えて戴いたverify-visited-file-modtimeでも ダメでした。 read-fileで得たデータを処理したあとで (find-file "同じファイル") (erase-buffer (selected-buffer)) (バッファに書き込む処理) (setq verify-visited-file :auto) (ed::save-buffer) (delete-buffer (selected-buffer)) みたいな感じになってます。 verify-visited-file-modtimeの行をread-fileの前にしてみたりしてるのですが どうも消えないようで。よければもうちょっとヒントおながいします
>>9 ですマーチ中なのでしっかりと応えられないけど,
そういう時は,表示されたメッセージでgrepかければ
該当する処理が見つかる
>>9 もしかすると read-file を使っているのが原因かも。
insert-file (もしくは insert-file-contents) で読み込んでください。
# read-file だとそのファイルに visit してしまうっぽい。
お手数かけます。結局原因分かるには力及ばず 別名ファイルで出力→ファイル名変更で上書き で逃げました。ホント申し訳ない…。
ggrep,フレームに対応してくんないかな。
15 :
13 :2005/09/29(木) 02:05:14 ID:uQdYur6a
普段から画面を分割しながらものを書いているのでgrep系のコマンドが pseudo-frameを使ってくれたら便利だなぁ、と思うのです。組み込みの grepをフレーム対応させてみようとしたこともあったのですがダメでした。 ggrep起動時にnew-pseudo-frame "ggrep" を作って、ggrepバッファを 消すときにggrepフレームを消す、ような感じです。
カスタマイズ好きにはたまらないソフトだな、これは。
そしてカスタマイズしている時間のほうが使ってる時間より長くなる罠
>>17 なに,最初に5000時間ぐらいカスタマイズしておけば
あとはそんなにカスタマイズに時間はかからんよ
質問です。ム板の Lisp スレから来ました。
下のURLの scheme-mode で、MzSchemeを動かしているのですが、
http://fun.sci.fukuoka-u.ac.jp/wiki/index.php?xyzzy MzScheme はutf8に対応しているはずなのですが、日本語が化け化けに
なってしまいます。(それはコマンドプロンプトでも同様なのですが)
どのように設定したら良いでしょうか?
Lispスレで、
make-process に :incode *encoding-utf8* :outcode *encoding-utf8*
を付け足すことを提案されたのですが、試したところ結果は同じでした。
Mz-schemeってようしらんけど xyzzyから送るエンコードもutf8にしてるん? それと*encoding-utf8n*ではどうかな
21 :
19 :2005/09/29(木) 12:44:00 ID:FGLmjP1d
いや、あてずっぽうなんだが、MzSchemeの方が入力コードを UTF8だと思っていなかったりしないか?ということ。 デモっぽい説明見てるとプロンプトでいきなり日本語打ってるみたいだし
23 :
19 :2005/09/29(木) 15:02:43 ID:FGLmjP1d
申し忘れましたが、そもそも MzScheme で日本語が使えるかは分かりません。 できるのか、できないのかを含めてお教えいただけたらと思います。 PLT Scheme というScheme の製品群があるのですが、その中で GUI を持つ実装を DrScheme、コマンドプロンプトから実行するものを MzScheme と呼びます。 DrScheme は問題なく日本語入力ができますが、MzScheme をWindows のコマンド プロンプト上で立ち上げても、日本語の入力はできないらしいのです。 おそらく、コマンドプロンプトが MS932 なのに対して、MzScheme が utf8 しか 受け付けないためです。
出力がUTF-8と分かってるなら:output(大文字だと効かない)はok。 あとはMxSchemeに渡す時のエンコードくらいしか浮かばないなあ。 出力が本当にutf8かどうかはnkfかiconv(というツール)で調べられる。 それ以外のことはそのMzなんとかのユーザーがいるよう祈ってちょーだい
25 :
19 :2005/09/29(木) 17:54:38 ID:FGLmjP1d
CommonLisp がわかれば outline-tree を作れますか?
すみません、scheme-mode で Gauche を動かそうとして、
http://fun.sci.fukuoka-u.ac.jp/wiki/index.php?xyzzy 上のページにある.xyzzy の該当箇所を、以下のように変更しました。
(map-slash-to-backslash "C:/Program Files/Gauche/bin/gosh.exe -i ")
すると以下のエラーが出ました。
xyzzyenv: "C:\Program Files\Gauche\bin\gosh.exe -i ": 指定されたファイ
ルが見つかりません。
-i まで含めてパス名とみなされてしまっているようですが、どうしたら解決
できるでしょうか?
>>27 > -i まで含めてパス名とみなされてしまっているようですが、どうしたら解決
> できるでしょうか?
formatの出力で全体をダブルクォーテーションで囲んでいるのでそうなります。
こうとかでいかがですか。
(format nil "\"~A\" -i" (map-slash-to-backslash "C:/Program Files/Gauche/bin/gosh.exe"))
それとたまたまこんな方がいらっしゃいました。ご参考まで。
ttp://d.hatena.ne.jp/guttyon/20050929
29 :
27 :2005/09/30(金) 02:00:21 ID:GCCEA7yx
>>28 ありがとうございます。明日、試してみます!
30 :
27 :2005/09/30(金) 10:55:59 ID:zalj2Zev
結局、こんな風にすると上手く動きました。 Gauche はそのままだと少し日本語が化けたので、*encoding-utf8n*を 指定し ました。 (setf *scheme-process-open-hook* #'(lambda (buffer) (if (buffer-process) (buffer-process) (progn (set-buffer buffer) (make-process (format ;nil "\"~A\"" ; Gauche - directly nil "\"~A\" -i" (map-slash-to-backslash "C:/Program Files/Gauche/bin/gosh.exe")) :incode *encoding-utf8n* :outcode *encoding-utf8n*) ; Chez Scheme - directly ;(map-slash-to-backslash "C:/Program Files/Chez Scheme Version 7.0/bin/i3nt/petite.exe"))) ; MzScheme - directly ;(map-slash-to-backslash "C:/Program Files/PLT-FULL-299.106/MzScheme.exe")) ;:incode *encoding-utf8n* :outcode *encoding-utf8n*) ))))
31 :
名無し~3.EXE :2005/10/02(日) 00:31:47 ID:XqQz+B7m
質問です。 xyyzzyでCのソース書くときに、 (); TABの後の括弧が、行の先頭まで移動してるのですが これはどうにかならないでしょうか?
32 :
名無し~3.EXE :2005/10/02(日) 00:36:02 ID:XqQz+B7m
(TAB)printf(); ←ここに書いたのが printf(); ←括弧を書くと、ここに移動します
33 :
名無し~3.EXE :2005/10/02(日) 00:47:59 ID:XqQz+B7m
xyzzyを使ってコーディングをされておられる方、 この部分どうやってます?
状況がさっぱりわからん。試してみたけどうちじゃ再現しなかったし。
35 :
名無し~3.EXE :2005/10/02(日) 02:26:46 ID:XqQz+B7m
>>34 さん
レスどうもです。
TABキーを使ったインデントが上手くいかないのです。
36 :
名無し~3.EXE :2005/10/02(日) 02:37:06 ID:XqQz+B7m
デフォルトでTABキーを押してもインデントされないので、 TABを使う場合は@ctrl + q ATABキー の順でやってますわ^^;
37 :
名無し~3.EXE :2005/10/02(日) 02:41:24 ID:XqQz+B7m
メモ帳のようにtabを使った後は、その場所で固定しておいて欲しいんですけど、、、。 環境によって、動作が若干違うのかなぁ^^;
あー、インデントにタブを使いたいのか。 それなら、 (setq *c-indent-tabs-mode* t) を.xyzzyにでも書けばいいと思う。
ちゅうか、インデントされるべきでない場所ならインデントしないよ。
TAB幅とかは変えられたと思うけど、インデント規則まで変えたいならわからん。
おいらは自動インデントで満足なんで。
ところで質問。dialog-boxの(:linkについてなんですが
(:link url "
http://host.domain "
ならちゃんと飛べるんだけど、ローカルなファイルに飛べない…。
もしかしてurl以外になにかキーワードがあったりしますか?
40 :
名無し~3.EXE :2005/10/02(日) 03:03:38 ID:XqQz+B7m
>>38 さん
有難うございます。^^ 参考になります
>>36 インデントを全部自分でやりたいってことなら
(define-key ed::*c-mode-map* #\TAB 'self-insert-command)
42 :
41 :2005/10/02(日) 18:23:13 ID:YwSKX29P
TAB だけじゃ不完全か。こんなとこかな。 (dolist (c '(#\TAB #\LFD #\{ #\} #\# #\:)) (define-key ed::*c-mode-map* c 'self-insert-command)) (define-key ed::*c-mode-map* #\RET 'newline)
>>39 ldialog.cc見るとurlだけだが、urlを渡して
ShellExecute (get_active_window (), "open", url, 0, 0, SW_SHOWNORMAL);
してるからurlだけどなんでも関連付けで開ける。
てか飛ぶってよくわからんがfile:///が無反応とかだったら
標準ブラウザの設定がおかしいのだと思う。
うちだとhtmlファイルはフルパスなら問題ないがfile:///で開くと
ブラウザとともになぜかメモ帳でも一緒に開いてしまう。
setbrowserで無理やり標準ブラウザを設定してるし、まあしょうがないかって感じだが。
>>43 さんくす。Operaにしてみたらすんなり行ったす。
なんだったんだろ。
>>26 CommonLisp がわからなくても勘でいけますよ (^^;;
C++ がわかるからといって xyzzy は作れませんけど。
キラタソだ〜
キラタソ?
>>47 このまえ廊下で引きこもりに斬りつけられちゃった人ですよ。
カラー選択ダイアログやフォント選択のようなコモンダイアログを呼び出し、テキストとして 返ってきた値を取得するマクロを作りたいと考えています。このようなマクロを作るにはどの ようにすればよいでしょうか? どなたかご教示くだされば幸いです。
>>49 C でコモンダイアログを呼び出して、値をテキストして取得することは
できますか?
そこから1ステップずついかないとなりません。
できるようになると、とてもいいですね。
>>50 ・・・なかなか厄介なのですね。勉強してみます。
53 :
51 :2005/10/14(金) 11:52:50 ID:UkcEJy4B
>>5 これ使っているうちに左下の作成した色の部分がどんどん変な色になってくのがやなんだよな。
だれかえろい人修正ねがいまする。
ここにはってもいいのかい
知りたいなあ
>>54 引数で渡すCの構造体のメンバの配列にDWORD値で色情報をセットすればいいんだが、
xyzzyのlispからCの構造体のメンバの配列に値を代入できないっぽい。
作成した色がたまに残ってるときあるけど、
これは不定の動作っぽいからちゃんと保存できてるわけではない。
でいっそのこと、作った色を保存できなくてもいいなら(si:clear-chunk cc)のあとにでも
(si:clear-chunk cbuf)を入れとくと0で初期化されて全部黒になるよ。
>>49-54 [common-dialog]
ども。
雑記帖の NetInstaller のところに commdlg というのを置いてみました。
commdlg を導入後以下を評価すると、ダイアログの「OK」ボタンを押すたびに
色や、色の配列を保存しつつダイアログを表示しつづけます。
終了する時は「キャンセル」ボタンを押しください。
手抜きサンプルなので BGR<->RGB 変換はやっていません。
(require "winapi/commdlg")
(defun sample-choose-color-dialog ()
(interactive)
(let (color custom-color-list)
(loop
(multiple-value-bind (color1 custom-color-list1)
(win-user::choose-color-dialog
:color color
:custom-color-list custom-color-list)
(setq color color1
custom-color-list custom-color-list1))
(if color
(format t "#~6,'0X~%" color)
(return-from sample-choose-color-dialog nil)))))
(sample-choose-color-dialog)
rgb<->bgr変換はこんな感じかと (defun rgb<->bgr (col) (+ (ash (logand col #xff0000) -16) (logand col #x00ff00) (ash (logand col #x0000ff) 16)))
ども。そうすると嘘っぽいサンプルはこんなですかね。 (defun rgb<->bgr (col) (+ (ash (logand col #xff0000) -16) (logand col #x00ff00) (ash (logand col #x0000ff) 16))) (require "winapi/commdlg") (defun sample-choose-color-dialog () (interactive) (let (color custom-color-list) (loop (multiple-value-bind (color1 custom-color-list1) (win-user::choose-color-dialog :color color :custom-color-list custom-color-list) (setq color color1 custom-color-list custom-color-list1)) (if color (progn (format t "#~6,'0X~%" (rgb<->bgr color)) (refresh-screen)) (return-from sample-choose-color-dialog nil))))) (sample-choose-color-dialog)
励ましあえスレ
>>873 | clickable-uriを使って、<img src="foo.jpg"> を開く
(require "clickable-uri")
; <img src="foo.jpg">
(push "<img src=\"[^\"]+\""
*clickable-uri-special-regexp-list*)
(push (cons "^<img src=\"\\([^\"]+\\)\""
#'(lambda (uri)
(when (string-matchp "<img src=\"\\([^\"]+\\)\"" uri)
(shell-execute (match-string 1)))))
*clickable-uri-open-command-alist*)
(clickable-uri-set-regexp)
>>62 ありがとうございました!おかげさまでできました。
あとはこれの応用で、clickable-uriの*clickable-uri-special-regexp-list*に引っかかったのを
ダブルクリックするとそこをリージョンにし、リージョンに対してのみ効果を発揮する関数を呼べば
完成ですが、検索などで引っかかったのをリージョンにする関数がへなちょこリファレンスで見つ
からないです・・・。もうちょっと探してみます。
とあるバッファでのみ有効な変数ってつくれないもんでしょうかね。 defvar-localで特定バッファで特定の値というのはできましたが 他のバッファでもとりあえず存在しているというのがなんか気になる。 あるバッファにいるときはどの関数からも参照でき バッファを消すと変数自体消えてしまうというのができるとありがたいのですが。
なにがしたいんだかわかりませんが、できませんね。
即答どうも。まだまだ勝手が掴めてないんで あんま気にせんといてくだせえ
make-local-variable でできてない? (let ((buf1 (get-buffer-create " test1")) (buf2 (get-buffer-create " test2"))) (progn (set-buffer buf1) (make-local-variable 'ぬるぽ) (list (boundp 'ぬるぽ) (progn (set-buffer buf2) (boundp 'ぬるぽ))))) => (t nil)
どうてもいいが progn いらなかったな……
>>68 (let ((p (+ (* (- 365 30) 100) 111)))
(mapcar #'code-char (list p (+ p 11 11 1))))
75 :
デフォルトの名無しさん :2005/10/20(木) 08:35:36 ID:a6HsDQqu
;;ある基点となるフォルダより下のフォルダのフルパスを全て取得するには再帰でどう書けばいいですか?
再帰じゃないと駄目? (directory "c:/dir/" :absolute t :directory-only t :recursive t)
77 :
64 :2005/10/20(木) 12:41:47 ID:nUsnkYK0
うーん、やっぱりリージョンをセットする命令が見つかりません。 おまけにKaTeX-typeset-region命令はキーバインドを使わないと呼び出せないことが発覚したし・・・。 (直接ソースを書き換えてexportしないと関数の評価が出来ない。) 具体的には、KaTeX-modeにおいて、 \includegraphics{図のファイル名} 全体をリージョンにし、このリージョンをC-c t jとキータイプしたのと同じ命令を動作させたいと 考えているのです。 (push "\\\\includegraphics\\\[*.*\\\]*{.+}" *clickable-uri-special-regexp-list*) (push (cons "^\\\\includegraphics\\\[*.*\\\]*{.+}" #'(lambda (uri) (when (string-matchp "\\\\includegraphics\\\[*.*\\\]*{.+}" uri) (リージョンを設定する命令 (match-string 0) (引数のキーバインドを押したのと同じことをする命令 C-c t r) )))) *clickable-uri-open-command-alist*) (clickable-uri-set-regexp) のようにしたいのですが、なにかいいアイディアはないでしょうか?
78 :
デフォルトの名無しさん :2005/10/20(木) 14:22:48 ID:a6HsDQqu
xyzzyでexeなどのどうやったら実行できますか??
>>79 それは filer で,しかも下の設定をしている場合だけの話でしょ.
(defun my-filer-shell-execute ()
(if (ed::filer-shell-execute)
(ed::filer-cancel)))
(define-key filer-keymap #\X 'my-filer-shell-execute)
>>78 は call-process, make-process というコマンドか
C-x & や C-x % といったキーバインドを聞いているかと
>>77 > おまけにKaTeX-typeset-region命令はキーバインドを使わないと呼び出せないことが発覚したし・・・。
> (直接ソースを書き換えてexportしないと関数の評価が出来ない。)
キーバインドを使わないと呼び出せない関数なんてあるの?
el::KaTeX-typeset-region じゃダメ?
リージョンの設定は、範囲の最初と最後にマークとポイントを置けばいいんじゃないかな。
関数を定義するときに↓みたいに書かれている 説明文を関数名から取得することはできないんでしょうか? (defun hogefunc () "this is hoge" ... )
83 :
77 :2005/10/20(木) 17:06:31 ID:nUsnkYK0
>>81 ありがとうございました!el::KaTeX-typeset-regionでうまくいきました。
リージョンの設定法も、マークの設定で検索することで
set-mark-command
という命令があることを知りました。ただ、match-stringで該当する「最初の文字に
カーソルを移動し」てset-mark-commandして、「最後の文字にカーソルを移動する」
作業が必要です。それはどのような命令を使えばいいのでしょうか?
>>84 ,
>>85 ありがとうございました。match-beginning, match-endでうまくいきそうです。
>>74 とかやっても 2ch の一覧が消えたままだったけど,
(setf (symbol-function 'menu-parse) #'menu-parse-bbstable2)
を config.lから消したらうまくいった.こういうことだったのか...
88 :
名無し~3.EXE :2005/10/20(木) 23:21:52 ID:dwP0mUDY
自分のプログラムでちょっとしたデータを 保存したい時ってどうしてる? 具体的にはプログラムの 前回実行日時なんだけど レジストリとかは使いたくないし、 ファイルに持つほどでもない クッキーとか使っちゃいたいよ
>>78 M-x: launch-application
とか?
>>86 うーん、結局うまくいかないようです。最終的には数式環境などを部分的に
タイプセットしたいので、$で囲まれた領域をタイプセット等(el::KaTeX-typeset-region
とその次のプレビュー処理)するために
(push "\\\$.+\\\$"
*clickable-uri-special-regexp-list*)
(push (cons "\\\$.+\\\$"
#'(lambda (uri)
(when (string-matchp "\\\$.+\\\$" uri)
(goto-char (match-beginning 0))
(set-mark-command)
(goto-char (match-end 0))
(el::KaTeX-typeset-region)
(call-interactively 'el::KaTeX-preview)
)))
*clickable-uri-open-command-alist*)
(clickable-uri-set-regexp)
のように書いたのですが、なぜかバッファの先頭にgoto-charして、
マッチした領域に相当する文字数だけ移動してそこをリージョンとして
タイプセットするようなのです。
マッチした部分に移動するように指定しているはずなのですが、何か書
き方がおかしいのでしょうか?
あと、clickable-uriでは複数行の領域をダブルクリックして他のコマンドに
渡す、ということはやっぱり無理ですか?(私のやった限り(文字列に\\\nを
入れてのテスト)では無理っぽい感じでしたが。)
バイナリエディタのように アドレス - バイナリ(16進) - テキスト のような表示で、実際にバイナリファイルとして編集するようなことはできませんか? バイナリの箇所を正規表現で置き換えしたいので・・・
>>93 > バイナリの箇所を正規表現で置き換えしたいので・・・
ここがよくわかんないけど、 hexl ではダメ?
>>92 > のように書いたのですが、なぜかバッファの先頭にgoto-charして、
> マッチした領域に相当する文字数だけ移動してそこをリージョンとして
> タイプセットするようなのです。
そういうときは narrowing
>>94 サンクス
使ったところ、行と次の行のバイナリが繋がってないようで思った動きにはできませんでした。
で、通常のモードでも \x00 とすれば null を検索できるようなので、 対象を \xXX を使って置き換えしたらうまくいきました。
スレ汚しスマソ
>>92 > なぜかバッファの先頭にgoto-charして
そのコードだと、そうなりますね。
マッチしているのがバッファ中の文字列でなく uri という文字列なので、
(match-beginning 0) は uri という文字列中でマッチしたインデックス(つまり 0)を返します。
で、解決方法なんですが、clickable-uri.l の中をのぞいてみたものの
関数そのものを書き換える以外にいい方法が思いつきませんでした。
やりたいことが数式のプレビューであるなら、clickable-uri にこだわらず
自分で関数を書いてしまった方が簡単かもしれません。たとえばこんな感じ↓
(defun preview-math-environment ()
(interactive)
(save-excursion
(if (and (el::KaTeX-in-math-mode-p)
(scan-buffer "\\$\\|begin" :reverse t :regexp t)
(when (string= (match-string 0) "$") ; begin 環境の数式は無視
(set-mark) ; はじめの $ でマークセット
(scan-buffer "$" :no-dup t :tail t))) ; おわりの $ へポイント移動
(el::KaTeX-typeset-region)
(message "数式がみつかりません。"))))
>>95-97 ありがとうございました。
narrowingについても研究してみます。下の方法ですと数式以外にに応用ができま
せんので、別の方法を考えなければなりません。
>(if (and (el::KaTeX-in-math-mode-p)
なるほど。数式モード中にいるかどうかで判別するわけですね。あとはclickable-uri
から「ダブルクリックしてpreview-math-environmentを起動するような設定をすれば
よいことになりますね。(本当に出来るかどうかはわかりませんが。)
改変すると\[ ]\のような複数行に渡る数式にも対応できそうでいい感じです。
重ね重ねどうもありがとうございました。
99 :
98 :2005/10/21(金) 17:37:37 ID:gHzds1t0
>>98 >「ダブルクリックしてpreview-math-environmentを起動するような設定をすれば
>よいことになりますね。
って、それやるとclickable-uriと競合してしまうやんorz。それを防ぐためにclickable-uri
の枠組み内でやろうとしていたのに・・・。
とりあえずS-C-LBtnDownにキーバインドしました。
102 :
デフォルトの名無しさん :2005/10/21(金) 21:12:00 ID:WtRYvAdm
lisp式で二つのファイルを比較する関数とかありますか?
>>102 "lisp式で" ってどういうことかよくわからないけど、 compare-file とかかな?
104 :
デフォルトの名無しさん :2005/10/21(金) 22:33:35 ID:WtRYvAdm
xyzzyからlisp式を使ってDOSコマンドをそうすれば使用できますか?
jap-mode
>>104 何が聞きたいのかますます分からくなってきたが、
*diff-command-name* をどう設定したらいいか、という質問?
107 :
デフォルトの名無しさん :2005/10/22(土) 00:14:16 ID:N0b1KWgn
>>106 ごめんなさい、レスを確認せずに連投してました。
(dos-command "copy X Y")
のようにしてDOSコマンドが使えないかということです。
execute-shell-command call-process make-process いろいろある。referenceにあたってくれ
秀丸で言うところの「スクロールしてもカーソル位置は固定」をxyzzyで実現するにはどうすればよいですか? 既出でしたらすみませんです
>>109 fast-scroll- 系か、それを save-excursion で囲むかじゃないかな?
秀丸知らないのでどっちが希望する動作かわからないけど。
後者だったらそれだけでは問題があるかもしれない。
111 :
名無し~3.EXE :2005/10/24(月) 02:13:43 ID:gP3S2OwI
>>109 > 秀丸で言うところの「スクロールしてもカーソル位置は固定」をxyzzyで実現するにはどうすればよいですか?
> 既出でしたらすみませんです
mark-setしたあと思う存分スクロールしてexchange-point-and-markで戻ってくるってのでよくね?
>>109 まず,何でカーソルを移動するの? キーボード,マウス?
そしてどちらにしても,カーソルは常に画面内に表示されてないといけない.
これはxyzzyの仕様と思っていいだろう.
キーボードの場合,109のとおり
(save-excursion (ed::scroll-window 3))
とかで可能.
マウスでやる場合は,昔ここに張った覚えがあるが,
(defun mouse-wheel-scroll-keeping-position (window n lines)
(with-selected-window
(set-window window)
(unless lines
(setq lines (window-lines window)))
(let* ((gcol (goal-column))
(cline (current-line-number))
(mlines (* n lines))
(deltalines (- (get-window-line) mlines))
ccol)
(when (scroll-window mlines)
(if (<= 0 deltalines (window-lines))
(progn
(setq ccol (current-column))
(goto-line cline)
(goto-column ccol))
(goto-virtual-column gcol))
(set-goal-column gcol)))))
(setq mouse-wheel-handler 'mouse-wheel-scroll-keeping-position)
このスレで良いのか良くわからないのですが、
Unicodeのデータをxyzzyで扱う際の文字化けにを修正したいと思っています。
具体的には、XMLをパースしてデータを変換しています。
ところが、元のデータに文字化けがあり、
一部の属性の取得がうまく行きません。
データの例:
<post href="
http://... " extended=".....??? hash="xxxx" others="1" />
extended 属性の最後の文字がダブルクォーテーションを
巻き込んで文字化けしているため、
extended および hash が正しく取得できません。
href、date は取得が可能です。
元のデータのエンコーディングはUnicodeですが、
同じファイルをWebブラウザで表示した場合は、
XMLとしてダブルクォーテーションも正しく再現されます。
(extendedの最後の文字だけ文字化けする状態)
どうにかしてextendedの値を取得したいのですが、
なにか方法はないでしょうか?
Unicodeとだけ言われてもはっきりいえないが 単に文字化けの問題ならXMLファイルの文字コードを明示して開けば 問題ないはず。文字化け直ればあとはどうとでもなるよね?
すみません、書き方が悪かったのですが、 もともとのXMLファイル自体に「文字化けしている文字」が 混入している状態です。 XMLファイル自体は正常に開くことができています。 もともと英語圏のサービスで作成されたXMLなので おそらく日本語の文字が機械的に1バイト単位に区切られて しまうことにより発生する文字化けだと思われます。 ("xあい" を最大長制限で 4 バイトに 無理やり収めてしまったときの、"い" の前半(?)部分)
そんなもんうまく読めなくて当然だろ スクリプトでも書いて壊れた部分を修復しれ
117 :
名無し~3.EXE :2005/10/27(木) 00:09:26 ID:/5XNpO8m
その、壊れた部分を直すスクリプトを どうやって書けばいいものか 皆目見当がつかなくて ここに来ました 話がまわりくどくて申しわけないです
>>117 実物のデータを見ないことにはなんとも言えんけど、
正規表現置換「. +hash=」→「" hash=」でうまくいくなら
これが一番楽なんじゃないの?
知らんけど。
>>118 文字コードで何とかすることばかり考えていたので、
ちょっとウロコが落ちました。
とりあえずそれでいっときます。ありがとう。
call-processで呼び出すプログラムが対話型のため、いったん対話をコマンドプロンプト上で行うために コマンドプロンプト上にメッセージを出力したいと考えています。ところが、 (call-process command-name :exec-directory one-directory :wait t) (command-nameが対話型のコマンド。one-directoryが実行するディレクトリ。) としても、入力を促すプロンプトが一向に出てきません。 どのように対処すればいいでしょうか?
>>120 process-filterを使うのがいいんじゃないでしょうか。
配色にも飽きてきたな、、 みんなどんな配色にしてるの?
>>120 make-process
process-send-string
call-processではxyzzyから完全に独立したプロセスを起動するので
その用途には使えないと思う。
ごめん。オレ勘違いしてたわ。
>>123 は忘れてください。
バッファタブとかフレームタブにXPStyleをなんとか適用できないものか・・・。 ソースコードを無理矢理弄るしかないんだろうな
>>121 ありがとうございます。
へなちょこリファレンスで調べてみたのですが、
(process-filter "dvipdfmx -S")
を評価してみても
不正なデータ型です: "dvipdfmx -S": process
となってしまいます。文字列で指定することはできないのでしょうか?
そろそろへなちょこリファレンスの「へなちょこ」はなくしてもいい気がする。
132 :
122 :2005/10/30(日) 10:50:49 ID:QY5tyHzA
ID:fXJvtzztさんありがとう。:-D
howmのgrepをdesktop searchにすりゃ高速でイカスだろうなー
>>130 ありがとうございました。
"cmd /c start dvipdfmx -S"
をcall-processすることでうまくいきました。
スレ違いの話題ですが、リンク先の記述では、Windows NT 2000 XP用とのことでした。Windows 9x
とかでもstartはあったと思いますが、startでさらに別のコマンドを起動することは
Windows 9xではできないのでしたっけ?
clickable-uriで外部ブラウザ指定で
file:///形式がどうやっても開けませんorz...
estsearchローカル検索
導入してみたんですが既定のブラウザでは問題なく開けるんですが
サクサクついでにサクサクなテキストブラウザ
lynxとかw3mとかで開きたいと思ったら認識してくれないです。
既定のブラウザ以外ではfile:///...を開けないのでしょうか?
テキストブラウザは既定のブラウザに出来ないと思うので
どうにか書くのかな
書き方が判らないですorz...
clickable-uriデフォルトで
http://だと外部ブラウザは立ち上がるのですが C-x C-o
file:///だと見つからないと言われます
改善できないでしょうか?教えて下さい
>>136 clickable-uriの最新版ではfile:///なuriへの扱いが変わってるんで
http://とfile:///の差は出ないと思ったんですが 。古いの使ってませんか?
estraier-modeの側ではダブルクリック時開くブラウザは変えられません。
(ダブルクリックでのURIオープンは全部clickable-uriをアテにしています)
ただ、URI:上でRETした時開くブラウザなら少々手を加えることで変更できます。
w3mの場合ならestraier.lの370行目をコメントアウトしてその下に
(call-process (concat "cmd /c start w3m " url) :wait t))))))
という行を追加。バイトコンパイルして再ダンプの上再起動してみてください。
カスタマイズが面倒なつくりは作者の怠慢なんで…。もうすわげねっす
138 :
109 :2005/10/31(月) 23:40:46 ID:jjzhyzfC
>>110-112 ありがとうございました。参考になりました。
ホイールスクロールする際にカーソル行が不動であればいいなと思っていたのですが、xyzzyの仕様ということで完全にはあきらめます。
作者様ありがとうです。 既定のブラウザを使うのがいいんだと思いました clickable-uriは古かったです。最新版にしました。 既定のブラウザでは問題なく動くので clickable-uriはfile///を認識していて 多分wikiの記述のままの部分なんですが clickable-uriの.xyzzy ブラウザ指定の部分なのかなと思うのですが (push '("^https?:" . "C:/Program Files/Lynx for win32/lynx.exe") *clickable-uri-open-command-alist*) (push (cons "^file:" #'(lambda (uri) (shell-execute uri))) *clickable-uri-open-command-alist*) ここを直せばのかなと素人目に思いますが 書き方が判からず無理なのかなと挫折
140 :
190 :2005/10/31(月) 23:47:44 ID:3kDiHBkY
estraier.lを書換すると実行されたブラウザは http接続してドメインを検索しだしてしまいました。 lynxでもw3mでも。多分パスのせいかもしれないです。 余白時で切れて検索していたのでc:/document... w3mでproxy接続で始まるとき大抵日本語文字や余白など のパスのせいなので ファイル置場を余白無しで日本語使わないなどすれば いいのかもしれないです。 既定のブラウザで愛用します。 でもテキストブラウザでも使えるといいなと思いつつorz...
141 :
名無し~3.EXE :2005/11/02(水) 03:20:50 ID:5x9mEsuX
142 :
141 :2005/11/02(水) 03:33:53 ID:5x9mEsuX
すみません。 MTのバージョンは3.2-ja-2です。
143 :
139 :2005/11/02(水) 04:37:16 ID:YYuyYUDh
すいませんでした。 estraier問題なく任意のブラウザで動きましたorz... 作者様在り難くつかわさせて頂きます スレ汚し失礼しましたorz...汚しついでなので貼っておきます clickable-uriの書き方を教えてもらい快適に 出来ました。 clickable-uri ;;clickable-uri ;; (push '("^https?:" . "C:/Program Files/Lynx for win32/lynx.exe") *clickable-uri-open-command-alist*) ;;Defult windows関連付設定なら ;;(push (cons "^file:" ;;#'(lambda (uri) ;;(shell-execute uri))) ;;*clickable-uri-open-command-alist*) ;;Open_Text_browser 任意指定のブラウザなら (push '("^file:" . "C:/Program Files/Lynx for win32/lynx.exe") これでなんでも検索結果をわたして開けました。
バッファの内容をテキスト属性まで含めて保存する方法ってありませんでしたっけ? どこかで見たような気がするんですけど見当たらなくて。
145 :
名無し~3.EXE :2005/11/02(水) 13:53:29 ID:RPt6vIqt
wiki落ちてますか?
ふと気になったのだが、なぜタイ語でもベトナム語でもなく、グルジア文字の文字セットが用意されてる のだろう?何か理由があるのか? # BDF UM+でIEでは見えてるのに、xyzzyではいまだ?になってるのが哀しい。。。
当然、理由なんてないんじゃない?
149 :
145 :2005/11/02(水) 18:57:38 ID:bhSse+ZK
どうも。一時的な不調だったようです。
xyzzyのユニコード対応も 一部だけだから実用的じゃないんだよな・・・
第二回xyzzyオフ開催日イブ
>>151 ちょっと興味あったけどその時期東京にいないから参加できずorz
何人ぐらい参加するものなんだろ。
153 :
144 :2005/11/04(金) 11:15:01 ID:Tv90X87A
とりあえず自分で適当に作りました www-mode で CLtL のインデックスとか保存したら一瞬で開けるようになりました
>>148 ・・・だよなぁ。亀井さんだし。
>>150 主な需要はカバーしているけどね。アラビア語・ヘブライ語・デヴァナーガリ文字のサポート
(というかそれ以前にArial Unicode MSなどのフォントのサポート)はいつになることやら。
ちなみに皆が新しいxyzzyに望んでいることはxyzzy WikiのWishListを除いて何じゃろ?
他のエディタにあってxyzzyにない機能というと、Unicode完全混在編集とか、縦書きサポート
とか、あとなんだろ?
xyzzyは表示周りは強くない。字間とか。プロポーショナルフォントとか。 実際のテキスト内容と表示を違うものにするのも基本的に無理だし。 どっちもいらんけど。
デーヴァナーガリー対応してなかったのか……。 卒論で使えねえじゃん。三年以内に対応キボン
>>156 文字コードの標準化ってもう終わってた?
まだなら実装しないと思うが
>>156 使えるよ。
xyzzy + LaTeX + sktパッケージなどなどで。
・・・直感的じゃないけどな。
軟弱ですけど、変更行の表示が欲しいっす。 Tipsにあるけど、ちょっと無理やりな気がする・・・
ML か直接で亀井さんにお願いをしてきてくださいね。
もう一度 mapae for xyzzy で質問でごめんなさい。 ;;mapae 色設定 (defun my-mapae-color-mode () (interactive) (defvar *mapae-mode-colorize* (compile-regexp-keyword-list '( ("\-\\{5\\}" t (:color 1 2 :line)) ("\.+\:$" t (:color 2 3 :underline)) ) ) ) (make-local-variable 'regexp-keyword-list) (setq regexp-keyword-list *mapae-mode-colorize*) ) (add-hook '*mapae-mode-hook* 'my-mapae-color-mode) という感じで色を付けたいのですが、 mapae-mode-hook でフックできてないみたいです。 どなたか、何が悪いのか教えていただけないでしょうか。
キーバインドをポップアップメニューで表示するマクロってどこかにない?
>>164 いや、そういうポップアップじゃなくてtrackpopupmenuで表示するようなやつ。
なかったら作るんだけど。
>>165 すると分からぬやしの前スレ669で俺が書いたやつとかかな。
669 [2005/09/19(月) 17:21:56 ID:uLuriK4/0] 名無しさん@お腹いっぱい。 <sage>
>>664 こんな感じ?
(defun create-mode-menu (&optional (keymap (local-keymap)) menu)
(let ((menu (or menu (create-popup-menu 'mode-menu)))
symbol)
(dolist (key-symbol (rest keymap))
(setf symbol (rest key-symbol))
(if (eq (safe-car symbol) 'keymap)
(create-mode-menu symbol menu)
(add-menu-item menu nil (symbol-name (if (symbolp symbol) symbol)) symbol)))
menu))
(add-popup-menu *app-menu* (create-mode-menu) "Key bindings")
いらなくなったらこれで。
(delete-menu *app-menu* 'mode-menu)
Emacsの M-x compile に相当するのは、 xyzzyでは C-x & だと思いますが、毎回実行するたびにコマンドがクリアされてしまいます。 バッファごとでいいので、C-x & のコマンドを保存しておくことはできますか。 また .xyzzy でコマンドを設定する方法はありますか。
>>161 Thx。そういうことでしたか。
まじで必要になったときにはMLかなにかで要望することにします。
グルジア文字を表示できている人がおそらく現にいるんだよな。
だれか表示できている人どのフォントを使っているか報告きぼんぬ。
>>169 ありがとうございます!これで表示できるようになりました。
{} ブロックの折り畳みできませんか? Outline を使えばできますが、 2ch-mode の [追っかけスレ] のように -/+ で表現され、マウスでもキーボードでも パカパカとオープンクローズできると最高。
>>171 > {} ブロックの折り畳みできませんか?
基本できません。
そして、不便が様々にでるので、やらないのが懸命です。
2ch-modeに書き込みのドラフトを保存しておく機能を つけるのって難しいんすかね…
>>175 できるっしょ。[書き込む]バッファで右クリックしたら発言を保存とかあるし。
.2ch/ぢれくとりのform-post.txtとform-save.txtを見てもいいかな?
177 :
167 :2005/11/09(水) 12:36:02 ID:UmNUwZt8
どなたか
>>167 にお答えいただけないでしょうか。
自分で (execute-subprocess "javac Foo.java") とかやってみたんですが、
*Output* バッファに切り替わらないし、どうやってコマンドを指定したらいいのかわかりません。
ミニバッファで上下カーソルキーは?
179 :
171 :2005/11/09(水) 20:52:11 ID:6LMlc8NL
2ch-modeのスレ一覧でのスレあぼーん機能が欲しい。 できんのかなこれ……
181 :
167 :2005/11/10(木) 09:39:47 ID:FhY+jh1p
>>178 そんな方法がありましたか。どうもありがとうございます。矢印キーのかわりにC-pやC-nもつかえるようですね。
しかし、いちいちカーソルキーやC-pを押さないといけないのが気になります。
もっと、コマンドをカスタマイズする方法とかサンプルをご存知でしたら教えて下さい。
みなさんはコンパイルコマンドはどうやって起動しているんですか?
>>181 (defun mycompile()
(interactive)
(and (buffer-modified-p) (save-buffer-dialog))
(if (get-buffer-file-name)
(let ((sbuf (selected-buffer)))
(save-excursion
(cond
;Java用のコンパイル
((string-match "\.java$" (get-buffer-file-name))
(execute-subprocess (format nil "javac ~A" (get-buffer-file-name))))
;;一致しない
(t (message "このファイルはコンパイルできません")))
(pop-to-buffer sbuf nil)))
(message "ファイル名が無いのでコンパイルできません")))
(global-set-key #\F5 #'mycompile)
としています。キーボードマクロで起動していたこともあります。
xyzzyからDLLを呼び出す方法について質問させてください。
bsmtp.dll(
ttp://www.hi-ho.ne.jp/babaq/bsmtp.html )を使おうと思い、以下のようなコードを書きました。
bsmtp-sendmail-funcのそれぞれの引数が1バイトだと問題がないのですが、それを2バイトにすると
xyzzyが落ちてしまいます。そのときのエラーメッセージは「致命的な例外(Access violation)が発生しました。
at 7c9412b4 (ntdll)」です。これはどこに問題があるのでしょうか?
(c:define-dll-entry
(c:char *) bsmtp-sendmail-func ((c:char *) (c:char *) (c:char *) (c:char *) (c:char *) (c:char *))
"Bsmtp.dll" "SendMail")
(defun test-bsmtp ()
(interactive)
(let* (
(server (si:make-string-chunk "a"))
(to (si:make-string-chunk "a"))
(from (si:make-string-chunk "a"))
(subject (si:make-string-chunk "a"))
(body (si:make-string-chunk "a"))
(file (si:make-string-chunk "a"))
(result (bsmtp-sendmail-func server to from subject body file)))))
ちなみにHP上のVBでのサンプルは以下のようになっていました。
Private Declare Function SendMail Lib "bsmtp" _
(szServer As String, szTo As String, szFrom As String, _
szSubject As String, szBody As String, szFile As String) As String
どなたか、よろしくお願いします。
;; ファイル名でヒストリを探ってデフォ値にする (defun my-execute-subprocess (cmd) (interactive "e& " :history0 'ed::execute :default0 (let ((fn (let ((fn (get-buffer-file-name))) (and fn (file-namestring fn)))) (h (symbol-value (get 'ed::execute 'ed::minibuffer-history-variable)))) (when h (or (and fn (let ((fn (regexp-quote fn))) (find-if #'(lambda (x) (string-matchp fn x)) h))) (car h))))) (execute-subprocess cmd)) ヒストリって間接的にアクセスするようになってるんですね。 あってるかどうかわからないですけど。
185 :
167 :2005/11/11(金) 14:51:45 ID:uqJTD0Op
>>182 どうもありがとうございます。
それを自分なりにカスタマイズしてみます。
まずは javac のかわりに jikes +E ですね。
186 :
167 :2005/11/11(金) 15:00:12 ID:uqJTD0Op
>>182 に関連して質問です。
*scratch* バッファなどで C-x & echo hoge とすると、ウィンドウが2つにわかれ、下のウィンドウに実行結果が表示されます。
しかし java-mode になっているバッファで C-x & echo hoge とすると、上のウィンドウに表示されてしまいます。
なぜ java-mode だと上のウィンドウに表示されるのでしょうか。
また java-mode でも下のウィンドウに表示させるようにするにはどうしたらいいでしょうか。
xyzzy version 0.2.2.231 です。
>>186 pop-to-buffer はカーソル位置によって、表示 window を上か下かに決めると思う。
常に下のウィンドウに表示させるとかしたいなら、
(delete-other-windows)
(split-window (- (truncate (/ (window-height) 2))) nil)
(set-buffer "*Output*")
とか。
188 :
名無し~3.EXE :2005/11/11(金) 16:42:07 ID:M/gorip+
;; 右クリックメニュー (add-hook '*init-app-menus-hook* #'(lambda() (insert-popup-menu *app-popup-menu* 0 (define-popup-menu (:item nil "小文字に変換(&D)" 'downcase-selection :modify-any-selection) (:item nil "大文字に変換(&U)" 'upcase-selection :modify-any-selection) "文字変換(&M)") (insert-popup-menu *app-popup-menu* nil "選択範囲をGoogle検索(&S)" 'search-google-selection nil)))) TIPSサイトとかで拾ったtrコマンドっぽいのとググル検索を右クリに仕込みたいんだけど 「siteinit.l: 994: 予期しないEOFを検出しました」と言われてしまう もうお手上げだ誰か助けてくらさい
>>188 (add-hook '*init-app-menus-hook*
#'(lambda()
(insert-popup-menu *app-popup-menu* 0
(define-popup-menu
(:item nil "小文字に変換(&D)"
'downcase-selection :modify-any-selection)
(:item nil "大文字に変換(&U)"
'upcase-selection :modify-any-selection))
"文字変換(&M)")
(insert-menu-item *app-popup-menu* 1 nil "選択範囲をGoogle検索(&S)" 'search-google-selection)
))
とか。
予期しないEOFを検出しましたのエラーが出るのは括弧の数があってないのが原因と思われ。
190 :
188 :2005/11/11(金) 17:32:54 ID:M/gorip+
ありがとうございます 僕の環境だと、9行目の最後の閉じ括弧は要らないようです とにかく希望の動作をするようになったので嬉しいです 早速insert-menu-itemなどをググって調べてみたいと思います
191 :
188 :2005/11/11(金) 17:48:09 ID:M/gorip+
上の閉じ括弧云々は僕の勘違いでしたすいません
変数が定義されているかどうかを調べる関数ってありますか? (defined? '*foo*) ;; -> nil みたいな関数。
>>183 戻り値がチャンクの関数はうまく扱えないです
戻り値がintのBSendMailなら使えると思います
>>192 (fboundp 'foo) ;関数
(boundp '*foo*) ;変数
195 :
183 :2005/11/11(金) 23:48:29 ID:rOqNVhkl
>>193 なるほど、そういう制限があったんですね。
早速、BSendMailで試したらちゃんと動作しました。
ありがとうございました。
196 :
167 :2005/11/12(土) 08:01:07 ID:t4YgWNGo
>>187 (split-window (truncate (/ (window-height) 2)) nil)
でいけました。ありがとうございます。
>>194 (boundp '*foo*)
でいけました。ありがとうございます。
画面の高さを得るために、次のような関数を作りました。 (defun get-window-height () (interactive) (delete-other-windows) ;; ほかのウィンドウを全部消す (message "~d" (window-height)) ;; for debug (window-height) ;; ウィンドウの高さを返す ) 画面が分割されている・いないにかかわらず、同じ値を返してくれるものと期待していたのですが、 実際に返される値は、delete-other-windowsを実行するまえのウィンドウの高さのようです。 delete-other-windowsを実行したあとの画面の高さを得るにはどうしたらいいでしょうか。
(defun get-window-height () (interactive) (delete-other-windows) ;; ほかのウィンドウを全部消す (sit-for 0.00001) (message "~d" (window-height)) ;; for debug (window-height) ;; ウィンドウの高さを返す ) # sleep-forの方がイイのかも
refresh-screenでどーだ。
200 :
名無し~3.EXE :2005/11/12(土) 09:42:32 ID:3ZrF1rdl
xyzzyenv: platex -src ***.tex: 指定されたファイルが見つかりません。 なぜ??
>>200 > なぜ??
期待するファイルが期待する位置にないからみつからないんでしょ。
203 :
197 :2005/11/12(土) 17:51:00 ID:t4YgWNGo
>>199 refresh-screenでいけました。ありがとうございます。
続いて質問なんですけど、Javaのgetter/setter入力を支援するような関数やライブラリはありませんか?
なければ作ろうとは思っているんですけど、あれば使わせてもらおうと思います。
204 :
197 :2005/11/12(土) 22:45:17 ID:t4YgWNGo
毎回質問でごめん。 関数forward-wordで、アルファベットと数字はwordとみなされますが、アンダーバーはwordとみなされません。 しかしJavaなどでは、アンダーバーは変数名や関数名の一部として使われます。 forward-wordやbackward-wordで、アンダーバーもwordとみなしてもらうようにするにはどうしたらいいでしょうか。
205 :
197 :2005/11/12(土) 22:46:17 ID:t4YgWNGo
下げ忘れた。すまん。
>>204 set-syntax-word とか。少しは自分で調べろ。
>>204 _ もスキップして欲しいときは forward-sexp を使うべきなのでは
208 :
197 :2005/11/13(日) 08:08:38 ID:87kickNr
>>207 forward-sexpでいけました。ありがとう。これで java のアクセッサ入力を支援するライブラリができました。はずかしながら載せてみます。
--- ここから ---
;; java-accessor.l - Javaのアクセッサ定義を支援する
;;
;; * 使い方:
;; たとえば
;; private String fooBar; /* コメント */
;; という行があれば、その行にカーソルを移動し、M-x java-copy-accessor を実行する。
;; そのあと任意の場所で C-y を押せば、アクセッサが挿入される。
;;
;; * アクセッサの文字列:
;; - インスタンス変数宣言が
;; private String fooBar; /* camel case */
;; のときは
;; public String getFooBar() { return fooBar; }
;; public void setFooBar(String fooBar) { this.fooBar = fooBar; }
;; というアクセッサになる。
;; - インスタンス変数宣言が
;; private String foo_bar; /* '_' でつなげる */
;; のときは
;; public String getFooBar() { return foo_bar; }
;; public void setFooBar(String foo_bar) { this.foo_bar = foo_bar; }
;; というアクセッサになる。
;; - インスタンス変数宣言が
;; private String _foo_bar; /* 先頭が '_' */
;; のときは
;; public String getFooBar() { return _foo_bar; }
;; public void setFooBar(String foo_bar) { _foo_bar = foo_bar; }
;; というアクセッサになる。
209 :
197 :2005/11/13(日) 08:09:28 ID:87kickNr
;; 変数名と型を受け取り、アクセッサの文字列を返す (defun java-accessor-string (var type &optional indent) (interactive "p") (if (not indent) (setq indent " ")) (let* ((c0 (char var 0)) (arg (if (eq c0 #\_) (substring var 1) var)) (attr (if (eq c0 #\_) var (concat "this." var))) (list (split-string var #\_)) (base (if (eq (length list) 1) (let ((word (car list))) (concat (string-upcase (substring word 0 1)) (substring word 1))) (let ((capitalized-list (map 'list '(lambda (arg) (string-capitalize arg)) list))) (apply 'concat capitalized-list)))) ) (concat indent "public " type " get" base "() { return " var "; }\n" indent "public void set" base "(" type " " arg ") { " attr " = " arg "; }\n")))
210 :
197 :2005/11/13(日) 08:10:14 ID:87kickNr
;; 現在行のインスタンス変数宣言からアクセッサ定義を作り出し、*kill-ring*に保存する。 (defun java-copy-accessor () (interactive) (save-excursion (let (p1 p2 p3 p4 p5 p6) (beginning-of-line) (setq p1 (point)) (re-search-forward "[^ \t]" t) (setq p2 (point)) (search-forward ";") (backward-sexp 2) (setq p3 (point)) (forward-sexp) (setq p4 (point)) (forward-sexp) (backward-sexp) (setq p5 (point)) (forward-sexp) (setq p6 (point)) (let* ((indent (buffer-substring p1 p2)) (type (buffer-substring p3 p4)) (var (buffer-substring p5 p6)) (str (java-accessor-string var type indent))) (setq editor::*kill-ring* (editor::push-kill-ring (list str) editor::*kill-ring* editor::*kill-ring-max*)) (setq editor::*kill-ring-yank-pointer* editor::*kill-ring*))))) --- ここまで ---
>>210 コマンドとして使うんじゃなくてプログラムの中で使いたかったのか。
そういうことなら検索を使う方がいいかも。
(defun java-copy-accessor ()
(save-excursion
(goto-bol)
(if (looking-at "\\(^[ \t]*\\)private[ \t]+\\(\\sw\\)+[ \t]+\\(\\sw\\|\\s_\\)[ \t]*;")
(progn
(setq editor::*kill-ring*
(editor::push-kill-ring
(list (java-accessor-string (match-string 3) (match-string 2) (match-string 1)))
editor::*kill-ring* editor::*kill-ring-max*))
(setq editor::*kill-ring-yank-pointer* editor::*kill-ring*))
(message "宣言が見つかりません"))))
212 :
197 :2005/11/13(日) 12:00:05 ID:87kickNr
>>210 private Stirng value = null;
とかだとうまくうごかないから、
>>210 の
(search-forward ";")
を
(re-search-forward "[=;]")
にしてください。
>>211 うまいプログラムですね。goto-bolとかlooking-atとか、ぜんぜん知りませんでした。
こんなの、教えてもらわないと知ることはなさそう。参考になります。
213 :
197 :2005/11/13(日) 12:59:48 ID:87kickNr
>>211 のおかげで、すごく短くなりました。
またlooking-atと正規表現を使うことで、Genericsへの対応も簡単にできました(\\s_はうまく動かなかったんですけど)。
private java.lang.Map<String, Object> _foo_bar = null;
みたいなものでも動くようになりました。どうもありがとうございます。
改良版 java-copy-accessor:
(defun java-copy-accessor ()
(interactive)
(save-excursion
(goto-bol)
(if (looking-at "\\(^[ \t]*\\).*?\\([a-zA-Z0-9_.]+\\(<.*?>\\)?\\)[ \t]+\\([a-zA-Z0-9_]+\\)[ \t]*[=;]")
(let* ((indent (match-string 1))
(type (match-string 2))
(var (match-string 4))
(str (java-accessor-string var type indent)))
(setq editor::*kill-ring*
(editor::push-kill-ring (list str) editor::*kill-ring* editor::*kill-ring-max*))
(setq editor::*kill-ring-yank-pointer* editor::*kill-ring*))
(message "error: instance variable declaration not found."))))
>>213 細かいことだけど、 .* だけでも空文字列にマッチするよ
(string-match "\\(^[ \t]*\\).*\\([a-zA-Z0-9_.]+\\(<.*>\\)?\\)[ \t]+\\([a-zA-Z0-9_]+\\)[ \t]*[=;]"
"private java.lang.Map<String, Object> _foo_bar = null;")
=> 0
知ろうとしなければ知ることはないですよ。
216 :
197 :2005/11/13(日) 14:48:00 ID:87kickNr
>>214 .* だと最長一致だから、
private String foo = aaa bbb; // おかしな定義だけど仮にあったとして。
みたいなのがあったとき、型がaaa、変数がbbbだとみなされてしまうはず。
.*? だと最短一致だから、Stringが型でfooが変数としてちゃんとマッチしてくれる。
だったと思います。
217 :
214 :2005/11/13(日) 15:24:02 ID:0VScHbZk
>>216 そういえばそういうのがありましたね
これは失礼。
>>209 base の部分、俺ならこう書くな。変数 list は必要なさそうなので使わない。
やってることは基本的に同じなんだけど、let は必要なさそうだし。
(base (if (find #\_ var)
(apply #'concat (mapcar #'string-capitalize (split-string var #\_)))
(concat (string-upcase (substring var 0 1)) (substring var 1))))
あと java-accessor-string はインタラクティブに呼び出すことはなさそうだから
(interactive "p") もいらなそう。
goto-bol とか looking-at とか割と基本的な関数なんで、ほかの人の書いたコードを見てみるといいかも。
暇なときにリファレンスを眺めてみるのもオススメ。どういう関数があるのか知ってると後で役に立つと思う。
訳あって英語版XP+日本語パックという環境に移ることになりました。 xyzzyはほとんど動くのですが、、minibufferの上の行番号とかバッファ名が出るところ (なんという名称なのでしょうか?)で日本語の文字化けが起こります。 たとえば日本語名のファイルを開いた場合、あるいは2chモードでスレ名が日本語の場合、 ここで文字化けが起こります。これは、設定等で直すことが可能でしょうか? ご指導よろしくお願いします。
>>219 これで直るかは知らないけど.詳しくはリファレンスを読んで.
(setq-default mode-line-format " [ %i ] %* %k:%l [%b] (%M) %P %f")
execute-subprocessはプログラムを非同期に実行するようですが、プログラムが終了したことを知るにはどうしたらいいですか。 具体的にはJavaコンパイラを起動し、終了したら「コンパイルが終了しました」というメッセージを*Command output*バッファに出したいです。 理由は、Javaコンパイラは起動が遅く、またコンパイルエラーがない場合は何も出力しないので、コンパイルエラーがなかったのかそれともまだコンパイル中なのかというのがわかりづらいので。
223 :
221 :2005/11/15(火) 10:41:14 ID:iAvcA8VE
>>222 call-processはexecute-subprocessと挙動がかなり違うようです。
execute-subprocessに :waint t みたいな指定ができるといちばんうれしいのですが、
できなければ call-process の出力をファイルではなくバッファに出す方法でもいいですので
教えてください。
いろいろ調べた結果, call-process の結果をファイルに出力して実行後に開くか, execute-subprocess がbufferを返すので, bufferに関連付けられたプロセスの実行状態を process-statusで調べるとできる.
226 :
221 :2005/11/15(火) 14:14:42 ID:iAvcA8VE
execute-shell-commandは?
228 :
221 :2005/11/15(火) 15:04:17 ID:iAvcA8VE
>>225 どうもありがとうございます。225をヒントにして、以下のようにprocess-exit-codeを用いてポーリングすると、プロセスの終了を検出できました。
(let ((command "javac Test.java")
(input nil)
(output "*Compile*"))
(execute-subprocess cmd input output)
(let ((process (buffer-process output)))
(while (not (process-exit-code process))
(sleep-for 1)))) ; or sit-for
しかし、また問題が発生しました。
・sleep-for を使うと、その間はキー入力を受け付けない。これはうれしくない。
・sit-for を使うと、キー入力は受け付けるんだけど、プロセスが終了するまえにキーを入力してしまうと、なぜか無限ループに入ってしまう。
sleep-forがキー入力を受け付けるようになることはないと思うので、sit-forで無限ループにならないようにするという方向で調査します。
しかしバッファにプロセスが結びつくのか。みなさんよくご存知で。
>>226 内容は同じもの.online上のものをbrowserデミルか,
localのものをxyzzyで見るかの違い.
コードをバリバリ書くなら,
>>224 +
http://www1.odn.ne.jp/ymtz/ref2doc.html は便利だと思う.
execute-subprocess がないのは,まだ誰もその説明文を書いていないから.
リファレンスには類義語辞書みたいな役割を求めてるけど,
see-also がほとんど張られてないのが残念
リファレンスの1項目ごとに あるフォーマットに従ったwikiの1ページがあって,
wikiからコマンド 1つで reference.xml が生成できると,修正する方も
更新する方も楽そうだけど,とりあえずは現状維持なのかな
>>219 システムフォントを日本語にしてますか?
メニューが文字化けしてないなら,システムフォントは日本語のような気がしますが.
モードラインが何のフォントで表示されているか分かりませんが,
この部分が日本語フォントで表示されていないのが原因であるのは間違いないと
思うので,画面のプロパティのデザインでフォントを設定するとうまくいくと思います.
ちなみに, part9 582-586によると
popup-stringで使われているフォントは (win2kでは) ヒント で設定するようです.
>>228 (long-operation
(while t))
とやると,quit(C-g) 以外の入力を受け付けなくなるようなので,
sit-for + long-operation で何とかなりませんか.
231 :
221 :2005/11/15(火) 15:45:37 ID:iAvcA8VE
>>228 sit-for の挙動ですが、キー入力によって一度抜けると、ふたたび sit-for を実行しても、スリープしないようです。
たとえば次のコードでは、実行後何もしなければ15秒間ミニバフッファに数字が0から15まで表示されますが、何かキーを押すとすぐに15まで達してしまいます。
(let ((i 0))
(message "i = 0")
(while (< i 15)
(sit-for 1)
(setq i (1+ i))
(message "i = ~D" i)
)
)
なぜこんな仕様なんでしょう? キー入力によって sit-for を一度抜けても、もう一度 sit-for を呼び出したならスリープしてほしいです。
>>231 > なぜこんな仕様なんでしょう? キー入力によって sit-for を一度抜けても、
> もう一度 sit-for を呼び出したならスリープしてほしいです。
全くその通りだと思う.自分も同じことを過去にやろうとして諦めていたけど,
(clear-input *keyboard*)
すればいいことに気づいた.
補足. 以下でもok (let ((i 0) c) (message "i = 0") (while (< i 15) (sit-for 1) (setq c (read-char-no-hang *keyboard*)) (and c (msgbox "~A" c)) (setq i (1+ i)) (message "i = ~D" i) ) )
>>229 > リファレンスには類義語辞書みたいな役割を求めてるけど,
> see-also がほとんど張られてないのが残念
そう思うならツッコミ入れるの手伝っておくれ。
リファレンスに新規投稿してる人たちはそれぞれの基準で書く内容を決めてると思うんで、
その基準に当てはまらないものは抜け落ちてる可能性がある。
わかりにくいとか不便だとか思ったらツッコんでもらえるとありがたい。
>>229 > リファレンスの1項目ごとに あるフォーマットに従ったwikiの1ページがあって,
> wikiからコマンド 1つで reference.xml が生成できると,修正する方も
> 更新する方も楽そうだけど,とりあえずは現状維持なのかな
refwikiは一項目ごとにぶった切ったXMLをパースしてhtmlを表示させています。
で、cronで定期的にくっつけてreference.xmlを生成しています。
(tar.gzで圧縮してあるのがそれです。)
あとはxyzzyから更新できるようにすれば完璧とか思っていますが、
さらにいいアイディアがあるということでしょうか?
詳しく教えてください。
もしくはrefwikiのソースを持っていって改良してください。
よろしくお願いいたします。
236 :
221 :2005/11/16(水) 06:52:17 ID:eBZJd7Gs
>>232-233 どうもありがとうございます。しかし *keyboard* をさわる方法では、意図した動作にはなりませんでした。
そもそもやりたいことは、execute-subprocess でJavaコンパイラを起動し、それが終了したときに終了したことを表す文字列を出力用バッファに表示させたいということです。
コンパイルには時間がかかることがあるので、その間でも編集作業ができるようにしたいのですが、execute-subprocess はそれができます。この動作は変えたくありません。
しかし *keyboard* をさわってしまうとキー入力が飛んでしまうので、コンパイル中の編集作業ができなくなってしまいます。
残念。
(let ((command "javac Test.java")
(input nil)
(output "*Compile*"))
(execute-subprocess command input output)
(let ((process (buffer-process output)))
(while (not (process-exit-code process))
(clear-input *keyboard*) ; キー入力が飛んでしまう
(sit-for 1))))
> そう思うならツッコミ入れるの手伝っておくれ。
こういう反応あるだろうなとは,思ってました.ぼちぼちとやります.
>>235 refwikiは,単なるオンライン上の関数リファレンスだと思っていました.
refwikiが,reference.xmlを編集するインタフェースになっているんですね.
wikiのツッコミを入れる方だと,ツッコミをマージする手作業が必要だと
理解しているのですが,品質を高めるにはいいものの,2度手間だなと思ってます.
refwikiの編集権限は,複数人で行っているんでしょうか.それとも,
wikiのツッコミを1人がマージしてるんでしょうか.
> もしくはrefwikiのソースを持っていって改良してください。
これは公開されているんでしょうか? 修正できるかは別として,他人のコードを読む
ことには積極的でありたいので,よければください.
捨てアドも準備します.
>>236 そういうのは,antとかmakeをつかって再コンパイルが
必要な部分だけ行うのが,まっとうな方法じゃないんでしょうか?
それで,だいぶコンパイル時間を短縮できたと思います.
本wikiの管理者です。 refwikiはシステムの改造をいくばくか(リファレンス管理者さんに希望を出して手を加える感じで) とつっこみゃーをやっています。あとリリース係か。 > 理解しているのですが,品質を高めるにはいいものの,2度手間だなと思ってます. > refwikiの編集権限は,複数人で行っているんでしょうか.それとも, > wikiのツッコミを1人がマージしてるんでしょうか. 編集権限は複数人持っています。現旧メンテナと僕の3人かな? が実際の権限の発動はref管理人さん一人が行っている感じです。 積極的にコミットしてくれる人(ななしさんでは困りますが)には 権限の開放も含めてウェルカム状態なのですが(ですよね?) 人が増えることを想定した体制作りはしてきてなかったので、 まぁやる気がある人ならぼちぼち相談していきましょう。 二度手間を省けるシーンというのはなんでしょうか? > > もしくはrefwikiのソースを持っていって改良してください。 アーカイブのページをじっくり眺めてください。 最新になってましたっけ?>誰とは無く
240 :
219 :2005/11/16(水) 11:17:21 ID:2cX6iOUl
>>230 どうもありがとうございました。同じく「ヒント」でした。
>>237 > ソースコードとか
比較的新しいのがリファレンスアーカイブのページの片隅にあります。
ttp://xyzzy.s53.xrea.com/reference/archive/ 自分とこにも置いてあるみたいですけどかなり古いやつみたいですね(^^;
大きな変更はなかったと思いますが、最新が必要でしたらアーカイブ作ります。
遠慮なくおっしゃってください。
> 手作業とか
・品質の保証
・XMLがよく分からんという人への配慮
・自分のCGIを書くスキルとの妥協
このくらいの理由で現在の形になっています。
> 編集権限とか
これまで欲しいといってくる人がいなかっただけで、
欲しい方に差し上げたいという気持ちは大いにあります。
>>236 set-process-sentinel
"aa"という文字列を"\xaa"という一文字にするには どういう方法があるでしょうか。知恵貸してください。
(code-char (parse-integer "aa" :radix 16)) かな。
xyzzyのカラー印刷機能はやく実装されないかなぁ…
246 :
221 :2005/11/17(木) 17:24:07 ID:zOH2B9xA
>>242 set-process-sentinelこそ、まさに探していたものでした。どうもありがとうございます。
(let ((command "javac Test.java")
(input nil)
(output "*Compile*"))
(execute-subprocess command input output)
(let ((process (buffer-process output)))
(set-process-sentinel process
#'(lambda (process)
(save-excursion
(switch-to-buffer "*Compile*")
(goto-char (point-max))
(insert "## Compile finished.")
(goto-char (point-min))
)))))
ところで #'(lambda ...) と '(lambda ...) の違いってなんですか?後者だとset-process-sentinelがうまく動いてくれなかったんですが。
またググろうにも、「#」は記号なんでうまくひっかかってくれません。
>>238 antやmakeを使う・使わないに関係なく、javacは起動だけでも時間がかかります。
また実際のプロジェクトでは当然ビルドツールを使って必要なもののみコンパイルしていますが、それでも時間はかかります。こういうときはスクリプト言語のほうが手軽ですね。
>>245 作者がレーザープリンタ使ってないならしょうがない
>>246 > ところで #'(lambda ...) と '(lambda ...) の違いってなんですか?
#'(lambda ...) は (function (lambda ...))
'(lambda ...) は (quote (lambda ...))
前者は関数閉包で後者はリストかな。
249 :
243 :2005/11/18(金) 10:09:36 ID:yECEVePq
もっとシェアが広がって欲しいなぁ、、、、 Emacsみたいに
251 :
名無し~3.EXE :2005/11/18(金) 23:43:42 ID:qtJDHMHP
Emacsのシェアが大きいと言ってしまうのはなんか距離感間違ってる気がする。 プログラマにおいてすらそんなに多数派じゃないだろ… ましてやwindowsユーザーで(ry
シェアって言うか便利lisp書いてくれる人がもっと増えてほしいってことだろ? それなら同意。
253 :
名無し~3.EXE :2005/11/19(土) 13:04:58 ID:lSdiMfvl
252 それももちろんだけど いろんなPCに入っていてほすい。 いろんなって、普及してる数と対応OSね。
マックに入ったら、乗り換えるかも
Lispを多少でも読める人ってCできる人の何分の一くらいなんだろ。
ものぐさだからphp-modeとhtml+-modeとxml-modeを ショートカットで切り替えられたらなぁと思う。 でもLispはわからず…。
>>256 ショートカットってどのくらいのレベルのものを考えてるのかわからんけど、
そんなに難しいことじゃないと思う。
極端な話↓これぐらいでもそれっぽくはなる。お勧めはしないが。
(global-set-key #\F1 'php-mode)
(global-set-key #\F2 'html+-mode)
(global-set-key #\F3 'xml-mode)
これ以上は要求がわからんのでなんともいえない。
>>257 単純にM-x php-modeやM-x html+-modeと打つのが面倒なので,
ある1つのキーバインドで(たとえばF1とか)で切り替えられたらなぁ,
という,それだけのことです。
最初は上の例のようにしようかと思ったけど,3つもキーをつぶしちゃったら
なんか後で面倒なことになりそうだなぁ,と思って。
それって結局どうしたいのよ
multi-modeではダメなのか?
>>258 こんなで。
(defun my-rotate-mode ()
(interactive)
(case buffer-mode
(html+-mode
(php-mode))
(php-mode
(xml-mode))
(xml-mode
(html+-mode))))
(global-set-key #\F1 'my-rotate-mode)
(require "html+-mode") (let ((key #\F1)) (define-key *html+-mode-map* key 'php-mode) (define-key *php-mode-map* key 'xml-mode) (define-key *xml-mode-map* key 'html+-mode))
>>261 ,262
おぉ!2パターンも!
お二人ともどうもありがとうございます。これで快適に開発できそうです。
c-mode や java-mode などでキーワードの色付けのまま ブレスの深さで背景色を色分けできる? つまり、for や if などのキーワードは色が付いたまま、 1 レベル目の背景色は無色、2 レベル目は青、4 レベル名以降は赤、 のようにしたいんです。
このエディタマジ気に入った んで、作者に感謝の意と敬意を表して 「Xyzzy入門」本を買おうと思うのですが 作者さんにとってプラスになりますか? 編集した人の懐にしか金が入らないなら 買わないつもりだけど
>>265 そういう意味なら,本体のみを使うなら買わなくても
いいけど,便利な拡張lispを使うなら買ってもいいんじゃないかと
269 :
264 :2005/11/24(木) 09:18:24 ID:G/CVaLp1
>>265 あまりに宣伝しないものだから、作者さんとしては宣伝する気が
まったくないどころか、むしろ広まって欲しくないとさえ思えてくる。。。
# 作者がソフトの広まりを歓迎しない事例はきちんとある。
# viを作ったビル・ジョイも、「viがこんなに広まることを知っていたら
# 私は作らなかった」なんて言ってたし。
もしそうなら、この本が出たということ自体、作者はあんまり歓迎して
いなかったりして。
まぁ、作者が喜ぶかどうかは別にして、この本を読んで面白いマクロを
作れれば、xyzzyコミュニティがさらに広まるきっかけにはなると思う。
そもそも著者はxyzzyコミュニティを育てる努力をしている人たちだし、
こうした報酬をもらってもまったくばちは当たらないと思う。
個人的には唯一にしてかなり良い本だと感じたので、立ち読みして興味が
あれば買ってみては?
clickable-urlを入れてるとxyzzyが固まってしまうファイルがあって 仕方なくclickable-urlを外したのですが、なんとか固まらないようにできないでしょうか? 中身はバイナリをbase64にした文字列を大量に含むxmlです。
>>272 とりあえず clickable-url ではなくて clickable-uri を使うようにしてみるの
はどうでしょうか。
全くの勘ですが、そこはかとなく固まり具合が軽減される気がします。
275 :
名無し~3.EXE :2005/11/28(月) 20:16:30 ID:oIS+VQq2
phpでファイルに書き出すときにEUC-JPで書き出して、 そいつをxyzzyで開くとなぜかSJISで開かれる。 自動認識で開いてるんだけど、これをEUC-JPにするとうまく表示された。 php上で読みこんで表示させると文字化けしないので、xyzzyの文字コード認識が 失敗していると思うのですが、ファイルの先頭が日本語でないと認識しないんでしょうか? xyzzyのほうでC-x C-k C-f euc-jp とするとこちらはちゃんとEUC-JPとして認識されるのですが この違いはなんなんでしょうか?
>>273 うまくいきました。
>>275 ファイルの先頭の方で自動判別するのでそんな感じになる。
utf8なxmlとかでよく起きて困りもの。
もうちょっと自動判別で読み込むサイズをを大きくできないのかなと思う。
>>275 ちょっと調べてみたけどエンコーディングを認識させる方法はいくつかあるみたい。
1. find-file に与えた引数(C-u をつけて呼び出す)
2. *auto-encoding-alist* で指定
3. -*- Encoding: EUC-JP -*- とファイルの頭に書く
の順番で判定して、何も無かったら
>>276 の言う自動判別になるのかな?
Excel との連携ダメ? クリップボードでどちらのお行儀が悪いかという問題だと思うけど、 β(beta)とかの記号が Excel から貼り付けられないし(消える)、 ×(バツ)といった記号は小さくなったりします。(0157) ×(バツ)は xyzzy の中でクリップボードコピペすると (817E) になります。 当方環境 Win2k SP4 / Excel 97 / xyzzy 0.2.2.234 / ついでに OOo 2.0 Calc も同様でした。
日本語は化けたりしない? 右クリック→クリップボードエンコーディングをいじるといいかも。
長い処理をしてるときにC-gでエラーで抜けられるつくりって、 C-g特有の特別なものなんでしょうか? 他のキーをquitにしても上記のことはできないみたいだし、 C-gを他の関数にしても長い処理の間にやるとなぜかquitになるみたいだし……。 他のキーで処理を中断させることはできないんでしょうか?
set-quit-char かな。
久々に NetInstaller を起動してみたら、 NetInstaller 自体が新しくなったみたいだったので、 何も考えずに NetInstaller をアップデートしてみたところ、 サイトのリストがきれいさっぱりなくなってしまいました。 どうも設定の保存場所が変わったようなのですが、 正しいアップデートの仕方としては、どういう手順を取るべきだったでしょうか?
>>282 XYZZYHOME と xyzzy.exe のあるディレクトリが違う?
今回のアップデートの注意事項で,
設定ファイルのパスが
XYZZYHOME から xyzzy.exe のあるディレクトリの .netinst
に変わったとあったよ
>>282 homeにある"~/.netinst"フォルダごとxyzzy.exeのあるフォルダに移動すればそれで良しだったハズ。
普通なら"C:/Program Files/xyzzy/.netinst"になるのかな?
もしくは"~/.xyzzy"などに
(setq ni::*base-directory* "~/.netinst")
を記述すれば元通りになると思います。
Microsoft Visual C++ Toolkit 2003とxyzzyで 例えばF5にコンパイルなどxyzzyをToolkitの仮IDEのような感じに設定することはできますか?
ごめんウソをつきました。
>>284 の
>(setq ni::*base-directory* "~/.netinst")
はダメだったみたい(´Д`;)
あれ?
こんな感じで動いてます。 (defpackage "netinst" (:use "lisp" "editor") (:nicknames "ni")) (setq ni::*base-directory* "~/.netinst") (require "ni/setup") で、なんでディレクトリが変わったんでしょうかね?
288 :
名無し~3.EXE :2005/12/02(金) 16:25:46 ID:zIou3Fta
UTF-8で文字列のバイト長を取りたいのだけど こんな感じでやると、sjis になってしまう (si:chunk-size (si:make-string-chunk "ほげほげ")) 9 UTF-8 でエンコードした際のバイト数を取る方法ってありませんか?
>>287 サンクス!
setupの前にやらなきゃやっぱダメだったんですね。
なんで変わったんでしょうねぇ。
私も最初はとまどいましたw
自動アップデート方式のlispなだけになおさらwww
290 :
名無し~3.EXE :2005/12/02(金) 16:37:23 ID:zIou3Fta
ごめん、自己解決した。 (setq str (convert-encoding-from-internal *encoding-utf8* "ほげほげ" nil)) (si:chunk-size (si:make-string-chunk str)) 16
>>287 ,289
たしかになんで変わったんでしょうね。
個人的な理解としては、lisp ファイルは $XYZZY/site-lisp に、
設定ファイルはホームディレクトリに置くものだと思ってたんですが、
これって勘違いですかね?
>>292 なるほどー。ずいぶんと前からの話みたいですね。
でもあえて言わせていただきますと、デフォルトで $XYZZY/site-lisp にインストールするのはやめて、
それこそ~/.netinstの下あたりにインストールする仕様にしたほうが良かったんじゃないかなーと思います。
どの拡張を使いたいかというのは各ユーザの事情に依るものだろうと思いますし、
$XYZZY/site-lispへ入れたいときはそれ用の設定をして使ってもらうとかして。
と、シングルユーザ環境から述べてみました。
>>292 理解しました。ドットがついてるから個人用の設定ファイルだと思い込んでました。
よく見たらディレクトリのことですね。これなら $XYZZY 以下にあるのも納得です。
>>293 どの拡張を読み込むかはファイルをどこに置こうがロードするかしないかで決まると思うので、
全部 $XYZZY/site-lisp に突っ込んでしまい、
各自 .xyzzy で設定するのが重複などの無駄が少ない気がします。
ちなみに私もシングルユーザ環境なので細かいところまで考えたわけではないですが。
295 :
282 :2005/12/02(金) 22:18:51 ID:i0kGyAJ9
皆様、アドバイスありがとうございました。元の通りになりました。 今回の NetInstaller の正しいアップデートの手順としてはこんな感じでしょうかね。 1. M-x netinstaller する。 2. NetInstaller で NetInstaller をアップデートする。 3. xyzzy 終了。 4. ~/.netinst を XYZZYHOME/.netinst としてコピー or 移動する。
296 :
282 :2005/12/02(金) 22:23:21 ID:i0kGyAJ9
あ、 4. のコピー or 移動する先は $XYZZY/.netinst ですかね。
ふと思ったのですが、 UNIX とかだと、個人用の設定はドットで始まる名前ですが、
共用の設定はドットファイルにしないのが普通なので、
$XYZZY/.netinst/ というのはちょっと奇妙な気がします。
あと、私も
>>294 さんの後半の意見に賛成です。
>>294 > 全部 $XYZZY/site-lisp に突っ込んでしまい、
> 各自 .xyzzy で設定するのが重複などの無駄が少ない気がします。
もちろんそれはそうなのですが、私は共用しないほうがよいと言っているわけではないですよ。
どこまで重複を許すのか(というのはちょと変だけど)は管理している人のポリシー次第なわけで、
面倒見の良い管理者ならsite-lispになんでもかんでもつっこんでおいてくれるでしょう。
逆に、欲しければ各自でやってね、というやり方もありうるわけです。
また、ni-autoloadはまだマルチユーザに対応していないですよね?
あるいはni-autoloadの環境で、拡張を一時的にはずしたいというときなど
アンインストールしちゃうのが簡単で手っ取り早いわけですが、
マルチユーザ環境でそれはどうなんだろうとか、
それらをこれから拡張したりする手間とか(私がするわけじゃないけど)
そんなこんなを頭のすみっこで考えたりすると、
NetInstallerは基本的に個別のユーザがそのユーザの範囲で使うものとしておくほうが
バランスがとれていてわかりやすいんじゃないかなあと思った次第。
なんかうまく言えないですけど。
つくりたい人がつくるだけだよね。
(defun buffer-modified-hook (buffer operation from to undo-p) (msgbox "ope:~A undo:~A from:~d to:~d" operation undo-p from to)) (add-hook 'post-buffer-modified-hook 'buffer-modified-hook) こんなのを書いてアウトラインツリーを起動すると勝手に すべてのバッファで (enable-post-buffer-modified-hook t) となるみたいなのですが何故でしょう? 私の環境のせいでしょうか?
ども。
>>299 > こんなのを書いてアウトラインツリーを起動すると勝手に
> すべてのバッファで (enable-post-buffer-modified-hook t)
> となるみたいなのですが何故でしょう?
outline-tree がそのように動作するからです。
> 私の環境のせいでしょうか?
いいえ、ちがいます。
ちなみに今確認したところ outline-tree2 では
(enable-post-buffer-modified-hook t) を使っていませんでした。
301 :
299 :2005/12/03(土) 17:14:58 ID:CwxJwn3B
>>300 あ、そういうことでしたか。了解いたしました。
outline-tree2 もいつか試してみます。
どうもありがとうございました。
RTTが長いネットワーク経由でファイルをたくさん開いてると、 xyzzyをアクティブにするときかなり時間(十数秒)待たされる。 アクティブになるときファイルの何かをチェックしてるんだと思うんだけど これって無効に出来ないの? 設定で出来る排他制御やバックアップファイル作成とかのファイル弄る系は すべてオフにしてあります。
>>302 *create-buffer-hook*で,特定のパスにあるファイルの
verify-visited-file-modtime を nil にするか,
(delete-hook 'ed::*activate-hook* 'ed::verify-buffers-file-modtime)
で更新のチェックをとめる.
304 :
名無し~3.EXE :2005/12/06(火) 14:37:05 ID:7e2KXmW7
JavaTinyConsoleのC/C++版って無いでしょうか? あそこまで素晴らしいものでなくても、せめて編集→ビルド→デバッグが楽になる 環境があると嬉しいのですが。
>>304 詳しくないけど,cppp-modeとかチェックした?
デバッグはサポートしてないと思うが
C-x C-f したときにTABキーでファイル名が補完されますが、このときに補完されるファイル名にフィルタをかけることはできますか? 具体的にいうと、*.java は補完されてほしいのですが *.class は補完対象からはずしたいんです。
234とdiffった感じ自分に関係ある変更は無さそ
ライセンスなのにChangeLog
311 :
名無し~3.EXE :2005/12/08(木) 01:08:18 ID:TG3Xf6o7
これなんていう種類のライセンス?
>>308 早速落としますた!!!tks Kamei-san
かめいさーん 地味に開発続いてたんすね サンクスコ
UNIXコマンドの basename や dirname にあたる関数って何ですか? pathname-directoryやpathname-nameはちょっと違うんで。
file-namestring/directory-namestringかな
>>315 どうもありがとう。それでした。
しかし、いまだに探したい項目がリファレンスからうまく見つけられない。
>>316 見つけられないときは M-x appropos や info-modoki-mode の全文検索 (#\f)
で探すと見つかるかも
>>319 うん、それ変わった
昨日diff取った時whistlerの行がxpになってたの見た
>>319 これが書かれたときにはなかったのかもしれないが、
そもそも(si:dump-image-path)を使えばいいじゃない。
>>322 こんな関数があったとは…。
教えてくれてありがと。
>>274 --- thread.l_orig2005-04-21 20:57:33.203125000 +0900
+++ thread.l2005-12-10 09:21:21.171875000 +0900
@@ -832,7 +832,7 @@
(defun thread-convert-anchor ()
(save-excursion
(goto-char (point-min))
- (while (scan-buffer "<a href=\"[^\"]+\" target=\"_blank\">>>\\([-0-9]+\\)</a>"
+ (while (scan-buffer "<a href=\"[^\"]+\" target=\"?_blank\"?>>>\\([-0-9]+\\)</a>"
:regexp t
:tail nil)
(let ((num (match-string 1)))
@@ -1226,16 +1226,21 @@
'date
:foreground *thread-fgcolor-date*
)
- (set-text-attribute (point)
- (progn
-(insert (format nil "~A " (thread-line-name line)))
-(point))
- 'name
- :foreground (if (addr-sage-p (thread-line-addr line))
- *thread-fgcolor-name-sage*
- *thread-fgcolor-name*)
- :bold t
- )
+ (let (amendmented-name +(before-amendment-name (thread-line-name line))) + (if (string-match "^\\([^<]*\\)<b [^>]*><a [^>]*>\\([^<]*\\)</a>\\(.*\\)$" before-amendment-name) +(setq amendmented-name (concat (match-string 1) (match-string 2) (match-string 3))) + (setq amendmented-name before-amendment-name)) + (set-text-attribute (point) +(progn + (insert (format nil "~A " amendmented-name)) + (point)) +'name +:foreground (if (addr-sage-p (thread-line-addr line)) +*thread-fgcolor-name-sage* + *thread-fgcolor-name*) +:bold t +)) (if *thread-hide-addr* (progn (set-text-attribute (point)
326 :
274 :2005/12/10(土) 13:14:30 ID:+f2lCRG8
>>324-325 どうもありがとうございます!!
バッチリでした〜ヽ(´▽`)ノ
アンカーの_blankに囲みがなかったんですね
nameの部分は……良くわからなかったので勉強しますw
siteinit.lのバイトコンパイル推奨って書かれてるのを どこかで目にしたんだけど、具体的な理由が聞きたいな。 siteinit.lをバイトコンパイルしても、 ダンプファイル作成時のsiteinit読み込みが速くなるだけかと思ってたけど、 siteinit.lcの有無で、できあがるダンプファイルに違いがあるみたい。
>>327 俺もどこで見たかは忘れたけど、バイトコンパイルしないと
siteinit.l で定義した関数は当然のことながらコンパイルしてない関数になり、
逆にコンパイルしておけばコンパイル済み関数として登録されるらしい。
関数を定義してなければバイトコンパイルしてもしなくても変わらないのかも。
試してみたら確かに compiled-function-p の戻り値が変わった。 あとは試してないけど eval-when とか書いてると違うのかも。
emacs みたいに検索とか yank した後で元の場所にマークをセットするように したいんですが、自分で作らないとないですか?
すごくわかりやすい。サンクス
olt でも olt2 でもいいんですが, utf8 で書いた文字列をノードに表示させると,文字化けするのを 回避できないでしょうか. とりあえず, ウムラウトe だけでもいいんですが.
フォントが無いならどうしようもないんじゃ
334 :
332 :2005/12/11(日) 19:23:01 ID:xBYPRj+E
>>333 レスthx.
ASCII, 日本語, ラテン文字 全て MS ゴシックで,バッファには
(load-library "iso8859-1")
C-x 8 ` e
でウムラウトe が入力&表示できます.なので,MSゴシックは h を
持っていると思ってました.たぶん間違いないと思うけど.
olt では h が ・h で表示されます.
バッファの文字コードがutf8でもsjisでも同じ結果です.
何とか h が表示できないでしょうか.
335 :
332 :2005/12/11(日) 19:25:37 ID:xBYPRj+E
>>334 で h で表示されたところには, ウムラウトe が
・h は意図通りの出力です.
フォントというよりは,olt が sjis で表示しようとして
うまく表示できていないだけかなと思うんですけど.
ども。
>>332-335 > utf8 で書いた文字列をノードに表示させると,文字化けするのを
> 回避できないでしょうか.
win98 や IE が入っていない環境なんかも xyzzy の動作環境のような気が
するので、基本内部コード sjis にしてあります。
テストを全く行っていないのですが、とりあえずコードを追加してみました。
20分ぐらいでの追加なので本当にテストを行っていません (^^;;
treeview-20051212.zip をダウンロードして、以下で適用してみてください。
(require "treeview/setup")
(require "treeview/unicode")
おかしな動作など、動作の具合を報告お願いします。
337 :
332 :2005/12/12(月) 14:02:06 ID:rFHaxAIu
>>336 ありがとうございます.
実はolt2は初めて使いましたが,何とか希望の動作を
するところまでできました.
ユニコードで表示できていると思います.
今回の拡張とは関係ありませんが気づいた点を
1. edit-filer-history.l という拡張lispが buffer-name
という定数を宣言していて,olt2の動作に影響を与えていました.
buffer-name という名前は一般的だなと思うので,
定数宣言の名前を適当に変えて,問題なくなりました.
2. olt2のどこかの説明で[メニューを表示して〜]というの
がありましたが,バッファ上で右クリックしていました.
olt2のノード上だったんですね.
何かおかしな点を見つけたら,また報告します.
ありがとうございました.
olt2 で便乗質問おねがいします。treeview ライブラリのインストールの際、 M-x treeview-make-all すると、 >> 変数が定義されていません: winapi::TVHT_ONITEMSTATEICON とエラーがでてしまいます。treeview.dll は最新版を使用しておりますし、 color や win-window の入っております。
339 :
名無し~3.EXE :2005/12/13(火) 21:06:13 ID:J2e0oXhV
xyzzyの電卓で、確率のnCrを計算したいのですが、 100C78 を計算する場合どのように書けばいいか教えて戴けませんか?
>>339 ↑100と78は下揃えの小さい字です。
>>339-340 > xyzzyの電卓で、確率のnCrを計算したいのですが、
> 100C78 を計算する場合どのように書けばいいか教えて戴けませんか?
$ C(n,m)=n!/((n-m)!*m!)
function
$ C(100,78)
7332066885177656269200
>>341 ありがとうございました。
素晴らしすぎて感動している次第です(TT)
>>338 俺も同様のエラーがでます。
winapi::TVHT_ONITEMSTATEICON
とあったからwinapiが古いのかと思ったけど
別に古くは無かったし,どうしたらいいんでしょう?
winapi って treeview/winapi.l みたいだけど, treeview 入れなおしたら直るとか?
ども。
>>338 >>343 >>344 > >> 変数が定義されていません: winapi::TVHT_ONITEMSTATEICON
なんで自分のところで起こらないのかは追っていませんが、多分直しました。
346 :
343 :2005/12/14(水) 08:48:31 ID:uWaMu1Du
>>345 作者様、どうもありがとうございます!
勢いで質問ですが、outline-tree2って前みたいに
「即追狭制強隠」のツールバーアイコンはないんですか?
それともoutline-tree1で使っていたアイコンをコピればおkなんでしょうか?
マルチ
ども。
>>346 > 勢いで質問ですが、outline-tree2って前みたいに
> 「即追狭制強隠」のツールバーアイコンはないんですか?
はい。ありません。
そもそも outline-tree での「狭制隠」の動作は outline-tree2 に
実装するのは適当でないと考えており、実装していません。
ツールバーについては、単に outline-tree2 にツールバーがあって
も嬉しい点がなさそうなので実装していないというのが現状です。
アイコンも描けないですしね (^^;;
wwwをw3mでレンダリングする設定にすると(ver 0.0.1.4-2)googleの 検索クエリがどんどんappendされてしまうのですがどうしてでしょうか。 "xyzzy"で検索した後テキストボックスをクリックして"xyzzy"をクリア、 新しく"wiki"と入力して検索すると"wiki xyzzy"で検索した結果が 表示されます。w3mでない標準のレンダリングではならないのですが。
>>349 ページ上下のフォームの値が混ざってしまっているのが原因ぽいです。
halfdumpのフォームはまだダメダメなので、気長にお待ち下さい。
>>351 残念ながら絵心が皆無。
表示-ツールバー-TreeViewがあったから気になっただけなんだよね、実際は。
>>350 自分でもびっくりするようなtypoが原因でした。
とりあえずこの問題だけはこれで直るかと。
--- www-tag.l24 Nov 2005 15:12:27 -00001.4
+++ www-tag.l15 Dec 2005 04:50:41 -0000
@@ -112,7 +112,7 @@
(setf (get 'a 'www-close-tag-open) '(a link))
-(setf (get 'form 'www-close-tag-open) '(from))
+(setf (get 'form 'www-close-tag-open) '(form))
(setf (get 'form 'www-close-tag-close) '(body html))
;;
354 :
349 :2005/12/16(金) 05:09:32 ID:P8P8u4PN
確認しました。これでより一層おいしくなりました。 ありがとうございました。
common lispに関する質問です。 どうしてこのようになるのでしょうか? (setq x '("A" "B")) ("A" "B") (delete "B" x :test 'string=) ("A") x ("A") (setq x '("A")) ("A") (delete "A" x :test 'string=) nil x ("A") ;消したはずが…
>>355 先頭以外の要素を削除するときは,
リストの一個手前のcdr部を削除する次の
要素につなげる.これでリストから削除さ
れたことになる.
先頭の要素の場合は,戻り値となるリストの
cdr部を返すようにすることで,戻り値から削除される.
この場合,リストの先頭を指しているほかの変数の指し
ている場所を変えるわけではないので,
なので,先頭要素が削除される場合に結果が一致しない
ことになるので, delete, delete-if delete-if-not
等の関数の結果は,必ず戻り値を使用して,引数に与え
た変数の値を, delete などの関数の結果として使用し
てはいけない.
長文失礼.
358 :
355 :2005/12/18(日) 06:06:32 ID:IWCiUF7r
>>356 lispのリストはcar部とcdr部でできてるんでしたね。そういえばそうでした。
他の言語の配列のようにはいかない部分なのですね。よく分かりました。
>>357 ほんとだ。私の問題はリスト構造とリスト操作関数の理解不足ですけどね。
>>358 ただの配列というよりリンクリストみたいなものだと思えばいいかと。
ファイラでの削除についてです。 (setq *filer-use-recycle-bin* t) な状態で、ファイルの詰まったディレクトリを削除する時、 (1)時間がかかり、 (2)ごみ箱にはディレクトリそのものでなく、中身のファイルがバラバラに入る という2点を何とかしたいと思っています。 これらは、ファイルをひとつずつ消して、空のディレクトリを最後に削除という作業を 再帰的に行っている結果なのだと思います。 そこで下記の対策を考えたのですが、どちらもイマイチです。いい方法が解る方、 アドバイスを頂けないでしょうか? 対策1:コンテキストメニューから「削除」を選べばOKですが、操作が2段になってしまいます。 (filer-context-menu) --> "D"押下 なんて感じです。 これがひとつの関数にまとまれば良いのですが、どうすればいいのかわからないです。 対策2:「移動」の動作でごみ箱に放り込めばいいのかなと思って、ソースいじって (get-special-folder-location) にごみ箱のキーワード追加してやってみましたが、 戻り値はディレクトリとして見なされず、うまくいかない感じです。
最近xyzzy lispで遊ばせてもらっているのですが、 xyzzy lispにマルチスレッドってありますか?
>>362 あったらいいね.俺も欲しい.
複数の外部プロセスと連携することは可能なので
それが精一杯かと.
ありがとうございます。 外部プロセスでどうにか頑張ってみようと思います。
M-x のMってどのキーですか
ESC か ALT
>>366 ありがとうございます!でもなんでMなんだろう…
meta
outline-tree2 について質問です。 outline-tree2 を終了した後、xyzzy を終了し再起動すると 1. config.l で C-RET に設定したキーが無効になる。 2. outline-tree: user-regexp-lisp-dots とかファイルの先頭でのアウトラインの 指定が効かなくなる。 みたいなのですが、これを回避する方法はありますでしょうか?
371 :
360 :2005/12/22(木) 22:28:26 ID:QJM1pLnK
>>370 アドバイスありがとうございます。紹介感謝です。
ちょっと以下のようにしてやってみましたが、いい感じな気がします。
(defun my-concat-strlist (dirs)
(if (null dirs) ""
(concat (car dirs) " " (my-concat (cdr dirs)))
)
)
(defun my-filer-delete ()
(interactive)
(execute-shell-command (concat "C:/programs/xyzzy/recycle.exe " (my-concat (filer-get-mark-files))))
(filer-reload)
)
(define-key filer-keymap #\F1 'my-filer-delete)
動かない。。。修正よろ (load-library "wip/winapi") (c:define-dll-entry c:long beginthread-impl ((c:void *) winapi:UINT (c:void *)) "msvcrt" "_beginthreadex") (let (callback) (c:defun-c-callable c:void threadfunc ((c:void* arg)) (funcall callback arg)) (defun beginthread (fn arg) (setq callback fn) (< 0 (beginthread-impl #'threadfunc 0 arg)))) (beginthread #'(lambda (arg) (message-box "mo!")) 0)
373 :
372 :2005/12/23(金) 00:17:27 ID:8k272AjS
関数名間違えてた、、、orz というわけでスレッド完成。 (load-library "wip/winapi") (c:define-dll-entry c:long beginthread-impl ((c:void *) winapi:UINT (c:void *)) "msvcrt" "_beginthread") (let (callback) (c:defun-c-callable c:void threadfunc ((c:void* arg)) (funcall callback arg)) (defun beginthread (fn arg) (setq callback fn) (< 0 (beginthread-impl #'threadfunc 0 arg)))) (beginthread #'(lambda (arg) (message-box "mo!")) 0)
ども。
>>369 > outline-tree2 を終了した後、xyzzy を終了し再起動すると
> 1. config.l で C-RET に設定したキーが無効になる。
> 2. outline-tree: user-regexp-lisp-dots とかファイルの先頭でのアウトラインの
> 指定が効かなくなる。
> みたいなのですが、これを回避する方法はありますでしょうか?
上記は .outline-tree/config.l 及び .outline-tree/autoload/ を読み込むタイ
ミングがoutline-tree2 起動時であることに起因します。
(require "outline-tree/outline-tree")
(outline-tree2::outline-tree-config-load)
上記のように記載すれば事前に読み込んでおくことができます。
ただし上記を siteinit.l に記載した場合、config.l や autoload/ 変更後には
xyzzy をダンプしなおさないと意図した動作になりません。
(require "outline-tree/outline-tree") を siteinit.l に記載し
(outline-tree2::outline-tree-config-load) を .xyzzy に記載するのが
よいかもしれません。
config.l、autoload/ の読み込みタイミングは以前から悩んみよく変更していた
のですが、ここのところは「outline-tree2 起動毎」に落ち着かせています。
そして固まった。。。 (beginthread #'(lambda (arg) (loop (sleep-for 1) (outline-tree2::outline-tree-create-outline-and-select-node))) 0)
python-modeってないですか? py-modeを試しましたが、作者自身が不完全と書いている 通りちょっとインデントの判定がまずくて・・・
(progn (beginthread #'(lambda (arg) (sleep-for 1) (msgbox "mo!")) 0) (message "10") ) sleep-for 入れたら,作ったスレッド永遠に終わらないんですが...
>>371 うまくいって何よりでした。
で、ちょいと改善案。
(defun my-filer-delete ()
(execute-shell-command (format nil "C:/programs/xyzzy/recycle.exe~{ \"~A\"~}" (filer-get-mark-files)))
(filer-reload))
>>374 369 です。お返事ありがとうございます。うまくいきました。
((outline-tree2::outline-tree-autoload)を足しますた。)
どうもありがとうございました。
>>376 py-mode は二つあるはずだけど両方試しました?
たぶん Emacs lisp から移植されたものの方が機能豊富だと思いますが。
>>374 369 です。二画面ファイラをモードありにしておいて、outline-tree2 からファイラを
起動しそこからファイルを開くと画面がリフレッシュされない模様です。
いじっていてたまたま気づいたのでご報告します。
>>380 おお、もうひとつの方で上手く行きました
ありがとうございます
ども。
>>379 > ((outline-tree2::outline-tree-autoload)を足しますた。)
(outline-tree2::outline-tree-config-load) では autoload/ 以下は
読み込まれませんでしたね。確認不足でした。
うまくいったようで何よりです。
>>381 > 369 です。二画面ファイラをモードありにしておいて、outline-tree2 からファイラを
> 起動しそこからファイルを開くと画面がリフレッシュされない模様です。
ありがとうございます。確認しました。
(無理やりな)対応を考えてみます。
そもそも「フォルダノード」からのファイラ起動ってつけてはみたものの
全く不要なので、はずしてしまおうかとも思ったりしています。
>>377 情報あり。
微妙に挙動がきもいですが、
とりあえず自動リロード完成版。
(load-library "wip/winapi")
(c:define-dll-entry
c:long beginthread-impl ((c:void *) winapi:UINT (c:void *))
"msvcrt" "_beginthread")
(c:define-dll-entry
c:void sleep (winapi:UINT)
"kernel32" "Sleep")
(let (callback)
(c:defun-c-callable c:void threadfunc ((c:void* arg))
(funcall callback arg))
(defun beginthread (fn arg)
(setq callback fn)
(< 0 (beginthread-impl #'threadfunc 0 arg))))
(beginthread
#'(lambda (arg)
(loop
(sleep 10000)
(outline-tree2::outline-tree-create-outline-and-select-node)))
0)
>>384 369 です。
> そもそも「フォルダノード」からのファイラ起動ってつけてはみたものの
> 全く不要なので、はずしてしまおうかとも思ったりしています。
あ、自分もその方がうれしいかもです。
あと、また outline-tree2 について便乗質問させてください。
1. いったんアウトラインを閉じる(終了でなく)と C-RET でアウトラインを開けなく
なる。
2. 開かれたことのないバッファノードを初めてダブルクリックしても、アウトラインが
展開されない。
これらは仕様だと思うのですが、これはどうしてでしょう?
使ってみて少し不思議に思いますた。
上の修正です。 1. いったんアウトラインを閉じる(終了でなく)と C-RET でアウトラインを開けなく なる。 => 1. いったんアウトラインを閉じる(終了でなく)と C-RET で (アウトラインを閉じたバッファで) アウトラインを開けなくなる。
流れをぶった切ってすまん. 12月のreference更新で,インストールパスが微妙に変わったので, ref2doc.l を使ってる人は,ロード後に, (setq *reference-xml-file* (merge-pathnames \"reference/reference.xml\" (si:system-root))) が必要. それだけです.
ども。
>>387 > 1. いったんアウトラインを閉じる(終了でなく)と C-RET で
> (アウトラインを閉じたバッファで) アウトラインを開けなくなる。
これは、C-RET に何を割り当てているかによります。
outline-tree2::outline-tree-create-outline-and-select-node を割り当てている
場合、アウトライン作成時にアウトラインウィンドウが開きます。
「アウトラインを閉じたバッファ」というのが、「いったんアウトラインを作成し、
アウトラインを削除したバッファ」のことだとしたら、上記報告いただいた動作は
再現しませんでした。
>>386 > 2. 開かれたことのないバッファノードを初めてダブルクリックしても、アウトラインが
> 展開されない。
これは、はるか昔に実装上の楽さなどから、なんとなく以下のように決めたからです。
あくまでもバッファノードのダブルクリックは「バッファの選択」動作だが、
「ノード追従」の設定がなされている場合、クリックで「バッファの選択」動作
となる。
> これらは仕様だと思うのですが、これはどうしてでしょう?
> 使ってみて少し不思議に思いますた。
自分では問題ではなく、誰からも指摘がなかったため、現状そのようになっている
というのが理由です。
希望の仕様について連絡いただき、実装が可能で、適用しても万人に受けつけられ
そうならば、仕様はざくざくと変更していきますよ (^^;;
>>389 369 です。
> outline-tree2::outline-tree-create-outline-and-select-node を割り当てている
> 場合、アウトライン作成時にアウトラインウィンドウが開きます。
> 「アウトラインを閉じたバッファ」というのが、「いったんアウトラインを作成し、
> アウトラインを削除したバッファ」のことだとしたら、上記報告いただいた動作は
> 再現しませんでした。
>
度々すみません、
「いったんアウトラインを作成し、アウトラインを削除したバッファ」
の意味でなく
「いったんアウトラインを作成し、outline-tree を閉じたバッファ」
の意味だったのですが、再現しないでしょうか?
ども。
>>390 exkey-C-return の動作は、ユーザが exkey-C-return に何のコマンドを割り
当てているかによるところなので、なんとも言えません。
とはいえ、きっと outline-tree2::outline-tree-create-outline-and-select-node
を割り当てていると思い、そしてそのコマンドはおっしゃられるとおり、アウ
トラインウィンドウを開くのはアウトライン作成(更新)時のみです。
「いったんアウトラインを作成し、outline-tree を閉じ、その後編集をしたバッファ」
ではお望みの動作をしていると思います。
お望みの動作のコマンドを各人が config.l あたりで定義して exkey-C-return
のキーに割り当てるのが手っ取り早いとは思いますが、
outline-tree-create-outline-and-select-node 自体も、問答無用でアウトラ
インウィンドウを開くような動作にしておきますね。
>>391 369 です。
いろいろ無理を言ってしまい申し訳ありませんでした。
長いことお付き合いくださりありがとうございます。
olt2 の更新楽しみにしております。
>>392 ども。
いえいえ。とりあえず更新しておきました。
394 :
名無し~3.EXE :2005/12/24(土) 11:41:24 ID:1zx4tU3N
Hyper Estraier Mode でファイル名に日本語が含まれると、 検索結果のURI:とTitle:が文字化けしてしまいますが、 これを防ぐ方法はないでしょうか?
395 :
394 :2005/12/24(土) 17:23:12 ID:+wSxWpEq
いろいろ試してみましたが、
urlエンコードされた検索結果を si::www-url-decode で整形→整形できない文字がある
(おそらく、この問題(
http://www.shtml.jp/mojibake/sjis_cgi.html )と思われる)。
estseek.conf に showlreal: true と記述すると検索結果が豆腐文字になってしまう
(文字コードが sjis のせいか?しかし、文字コードは変えたくない)。
などにより現状では完全に文字化けを防ぐのは無理っぽい気がします。
namazu だとどうしても漏れがあるので、できれば Hyper Estraier を使いたいのですが
本体に対応してもらわないと無理なのかな...
>>395 ???
日本語余白半角
ぜんぶおk
うんこな日本語完全対応でデコエンコしてくれてるが
平気だよ??
本家更新激しいから内容?仕様改定されてるのかも?
うちは変えてないから古いせいかも。
確か初版のest-modeのとき一緒にいれて放置して(ry
397 :
396 :2005/12/24(土) 20:18:52 ID:7r4dkIuw
Namazuも古いままだけど。 Namazuは条件キツカッタ。 半角が... ~/.../うんこな...で動かないから に比べて完璧な気がする。 両方新版は入れてないけど。
unicodeにBOMがついているとeclipseがうまく読み込んでくれないのですが BOMなしで保存することってできないですかね?
せっかくオープンソースになったんだからさ、自家版xyzzyやろうぜ。 思いつくだけでも、 ・netinstaller標準添付 ・国際化 ・clispの準拠度を上げる ・スキンとか半透明ウィンドウとか対応 ・unixポーティング(名前はX-yzzyで決まりだな) …… こんな感じだな。だれか、sfにアカウントとって。
>>396 レスどもです。
hyperestraier-1.0.2 と 1.1.2 で試してみましたが、
うちではまず、検索対象のファイル名に日本語が含まれると
URI: の日本語部分が urlエンコードされて出力され(これは仕様のようですが)、
さらに、上でも挙げたここ(
http://www.shtml.jp/mojibake/sjis_cgi.html )で指摘されて
いる文字がファイル名に含まれると、URI: 部分に urlデコードをかけてもその文字が
文字化けしてしまいます。
やりたいのは、hyperestraier で抽出したローカルのファイルに対して grep をかける
ということです。
上の urlで文字化けする文字がわかっているので、その文字を正常な文字に変換し
直して抽出するコードを書いて、もうすぐ出来そうなんですが、そちらの環境では
文字化けしないとすると、こちらが何か勘違いしてるんですかね。
>>399 オープンソースにしたらクォリティ落ちそう
>>400 駄目文字があるのか。
当たったことないから思いもしなかったが、
昔の話だけど特定文字列で駄目な例もあったから
多分?仕様?なんじゃないかな
バッファタブがXPstyleに対応してくれればおk
>>399 導入の難しさをインストーラ付きで配布でカバーできてもいいかなとは思うが。
Windows標準風のキー設定にするインストールオプションがあってもいいかなと。
>>405 ありがとうございます!
でも結局、情報を元にxyzzyのデフォルトの挙動を変更することで
対応することにしました。
(setf (gethash "UTF-8" *mime-charset-name-hash-table*)
'("UTF-8" *encoding-utf8n*))
というのも、編集中のテキストはpythonコードなのですが、
インタープリタに正しくutf-8を識別させるため、先頭に
# -*- encoding: utf-8 -*-
と書く必要があります。
しかし、これだとxyzzyはutf-8と判別してしまうためです。
eclipseがちゃんと対応してくれればよいのですけどね、、、orz
余談ですが、eclipseのようにBOM付きutf-8を解釈できないアプリだけでなく、
BOMがついているとutf-16と解釈する処理系も存在するようです。
すみません、本当にしょうも無いことなんですが、 (let ((text '("( ・A・ )" "(・A・ )" "(A・ )" "(・ )" "( )" "( ・)" "( ・A)" "( ・A・)" )) (i 0)) (setf (cdr (last text)) text) (unless (local-variable-p 'mode-line-format) (make-local-variable 'mode-line-format)) (defun kurukuru () (setf mode-line-format (nth i text)) (incf i)) (start-timer 0.5 'kurukuru)) (stop-timer 'kurukuru) こんなのをscratchバッファに書いて評価すると モードラインにクルクル回る顔がでると思ったのですが、 他のバッファにも出てくる上に キーボードを押さないと変化しません。 何が悪いのでしょうか?
>>378 改善案も提示して頂いて多謝であります。
おっしゃる通りの関数のみで無事に動作しております。ありがとうございます・・・
;;; もっとLispのウデを磨かねば
>>407 refresh-screenしないと再描画されない。
他のバッファでしないようにするには
バッファごとに内容が違う変数を宣言してそれでどうにか。
(let ((text '("( ・A・ )"
"(・A・ )"
"(A・ )"
"(・ )"
"( )"
"( ・)"
"( ・A)"
"( ・A・)"
))
(i 0))
(setf (cdr (last text)) text)
(unless (local-variable-p 'mode-line-format)
(make-local-variable 'mode-line-format))
(defvar-local *mode-line-aa* nil)
(setq *mode-line-aa* t)
(defun kurukuru ()
(when *mode-line-aa*
(setf mode-line-format (nth i text))
(incf i)
(refresh-screen)))
(start-timer 0.5 'kurukuru))
410 :
407 :2005/12/25(日) 23:21:13 ID:0fRFyWay
>>409 > refresh-screen
なるほど。こういう使い方なんですね。
> バッファごとに内容が違う変数を宣言して
(make-local-variable 'mode-line-format)
だけではなぜ駄目なのでしょうか?
おもしろーい(^-^)
RSSバナーとかいろいろな用途に使えそう。
ってタイマーあるなら
>>385 はいらないじゃん! orz
>>407 循環リストをnthで辿るのは、効率の面でまずいんじゃない?
(let ((buf (selected-buffer)) (text '("( ・A・ )" "(・A・ )" "(A・ )" "(・ )" "( )" "( ・)" "( ・A)" "( ・A・)" )) (i 0)) (unless (local-variable-p 'mode-line-format) (make-local-variable 'mode-line-format)) (start-timer 0.5 #'(lambda () (when (equal (selected-buffer) buf) (setf mode-line-format (nth (mod i 8) text)) (incf i) (refresh-screen)))))
循環リストを使うならカウンタ要らなくて、単に (pop text) で良いですね
>>402 今さっき気づいたんですが、estcmd gather を実行するときに -pc CP932 の
オプションをつけてやればダメ文字でも文字化けを防げるみたいです
(検索結果を整形するコードを書いたのが無駄になった(^_^;)。
Hyper Estraier は精度もスピードもなかなか良くていい感じです。
>>415 > -pc CP932 のオプションをつけてやれば
すいません、それ、どうやってやるんですか?
417 :
415 :2005/12/27(火) 00:52:16 ID:L3xI1XVc
>>416 私は、自分で適当にでっちあげてしまったので使ってないんですが、
Hyper Estraier Mode だと、多分 406行の estcmd gather の後にでも
-pc CP932 を書いてやればいいんじゃないかと思います。
418 :
415 :2005/12/27(火) 05:58:05 ID:L3xI1XVc
それと上でも書きましたが、URI: の日本語部分が urlエンコードされて出力されるので 適当に scan-buffer をかけるなりして urlデコードしてやればURI: 部分も日本語表示 できると思います。
419 :
416 :2005/12/27(火) 17:48:01 ID:aPZT1S/G
>>417-418 ども。
417を試してみたんですが、状況に変化はないです。
418はどうやったらいいのかわからず(すみません)。
そもそもsearch-resultの画面で検索したHINTが化けることがあるのは
一体なにがいけないんでしょう・・・。
さらにいろいろやってるうちに.docファイルのインデクシングができて
いないらしいことに気付きました。
もしかしたら私の場合は導入の時点で何か間違えていたのかもです。
もう少し試行錯誤してみます。失礼しました。
420 :
415 :2005/12/27(火) 20:42:48 ID:L3xI1XVc
>>419 私は適当に HE.l と HE-grep.l というものを作成していたので、
それで試してみましたが、.docファイルのインデクシングもちゃんと
できますよ。
本家のユーザガイド(
http://hyperestraier.sourceforge.net/uguide-ja.html )の
Windows用のフィルタの項目に書かれているコマンドを実行すれば
.docファイルもインデグシングされるはずです。
HINT というのは検索語のことですか?文字化けの原因はおそらく文字コードの
問題と思われます。
文字コードの指定などのオプションについては上記のページを参考にすれば
いいんじゃないかと。
421 :
416 :2005/12/27(火) 22:42:59 ID:QzUpTcGV
>>420 いろいろとどうも。
その後ひきつづきいろいろやってみた結果、.docファイルのインデクシングが
できていないのではなく、それらのファイルに含まれているはずの日本語の言葉
を検索するとまったくヒットしない、英語の単語で検索をかけると文字化けした
状態で結果が表示される、という状況でした。
インデックスを作り直そうと削除しようとしたところ、.htmlファイルをインデクシング
したフォルダはdで削除できるのに、.docファイルをインデクシングしたフォルダは削除
できません。やはり正しくindexが作られなかったんですかね。
また、教えていただいたページにかかれていたコマンドをshellから実行したところ、
かなり時間をかけてインデックスを作成していたようなのに、メニューからindex作成追加
を選んでも表示されず、当然?検索もできませんでした。もしかして作られたindexファイル
が別の場所に置かれているんでしょうか。
うーん、ちょっと疲れてきちゃいました(いろいろと教えてもらったのにすみません)。
ちょっと一休みして、hyperestraierも最新版にするなどしてもう一度トライしてみます。
お騒がせしました。
422 :
415 :2005/12/29(木) 14:50:47 ID:62WBdtZo
423 :
415 :2005/12/29(木) 18:04:32 ID:62WBdtZo
あげましておめでとうございます。
425 :
名無し~3.EXE :2006/01/11(水) 22:24:30 ID:7+tKDVT1
それは北口での話だけど南口の駅の中で昼飯を食い 食事後エスカレイタァを降ると降りたそこにオバチャンが二人で立ち止まって会話をしてる 二重駐車よりも気分の悪いオバチャンらだなと思ったけど喉元は過ぎたので一瞥し去った そのままトイレに向かったらトイレの入り口でオバチャンが三人たむろしてて オバチャン達の後ろでスラムダンクもビックリなぐらい左右に揺れてなんとかトイレに入った 小便を済ませて手を洗って出るとまだそこで通れない状態で話をしていた 流石に辛抱たまらず 『ここ入り口やで』 言うて手で横に押して出た 後ろで 『若いのに・・・・』の後は何を言うテルのか聞こえなかったけど それで大きく動いたような気配もなく明らかに毒づいていたな クサッとる
xml-modeとかsgml-modeってある?
>>426 xml-modeならnetinstallerからどうぞ
428 :
名無し~3.EXE :2006/01/12(木) 02:19:58 ID:lNJ9A9DG
サクラエディタみたいな検索した単語にハイライトするものってありますか?
>>429 検索語全てをハイライトなら、xyzzy 関連さんのpickup-patternでどうですか。
>430 pickup-patternさっそく入れてみました。 設定方法みながらやってショートカットによる色づけはできた。 けどgrepと同時に起動するように設定できないorz
>433 できました!ありですー。 ようやく自分好みになってきたんでxyzzy(ジジイ?なんて読むかわからない)に 乗り移れそうです。
ちょっと気になったんですけど、これってこういうものなんでしょうか? (make-local-variable '*kbd-translate-table*) => t (local-variable-p '*kbd-translate-table*) => nil キーマップいじればいいんですけど、 バッファローカルにできたらそのほうが簡単かなと思って。
>>435 > ちょっと気になったんですけど、これってこういうものなんでしょうか?
です。
*kbd-translate-table* はスペシャル変数として定義されているので
バッファローカルにすることはできません。
(si:*specialp '*kbd-translate-table*)
=>t
437 :
435 :2006/01/15(日) 19:00:21 ID:S2bjtOIr
>>436 ありがとうございます。
special ってグローバルなスペシャル変数のことだったんですね。
どうもシンボルのフラグがよく分かってないようで・・・
Emacs の Undo/Redo のような動作を実現したいと思い、 lisp の勉強も兼ねて自作関数を作ろうと思いました。 しかし、 undo と redo を切り替える判定をどうやって補足したらいいかがわかりません。 (defun hoge () (interactive) (if (ここで切り替え) (redo) (undo)) 「ここで切り替え」のところで、たとえば C-g や C-f のようなコマンドが入力されたかどうかを 判断して undo と redo を一つの関数で(その関数を定義したひとつのキーバインドで) 使い分けていきたいのですが、 xyzzy Reference(HTML 版) の中にそれらしき項目を 見つけられませんでした。 lisp/ ディレクトリ以下を quit や forward-char で grep もして みたのですが、具体的な実装コードも見つけられませんでした。 Q. そういう動作は難しいんでしょうか? Q. もしかしてすでにあり自分が見つけられていないだけでしょうか? Q. builtin.l で (si::defun-builtin undo ()) とかなってる関数の詳しい中身は、 ひょっとすると xyzzy のソースコードを読まないと理解不能なんでしょうか?
まずは、求めている動作の仕様をあいまいにしないでかきやがれ。
>>438 > Q. builtin.l で (si::defun-builtin undo ()) とかなってる関数の詳しい中身は、
> ひょっとすると xyzzy のソースコードを読まないと理解不能なんでしょうか?
です。
>>438 > Q. そういう動作は難しいんでしょうか?
「そういう動作」ってどういう動作?
> Q. もしかしてすでにあり自分が見つけられていないだけでしょうか?
何をさがしているのかがわからん。
説明下手ですいません。。
http://flex.ee.uec.ac.jp/texi/emacs-jp/emacs-jp_19.html >>
他のコマンドを使用すると,変更取り消しコマンドの連続を中断します.
中断するとそれまでの変更取り消しコマンド自身が取り消し可能な普通のコマンドとみなされます.
このようにしてC-fなどのそれほど重要な効果のないコマンドを入力して,取り消された変更を再生できます.
そのあとはさらに変更取り消しコマンドを使用できます.
<<
上記のような動作をさせたいと思っています。
undo を何度か繰り返して、 C-g や C-f などの、 undo の対象にならないコマンドを
一回打ってから再度 undo コマンドを打つと redo になる、という動作です。
*last-command* の値を見たらどう?
あとは実装あるのみだ
ヒントありがとうございます! やれそうな気がしてきました。
特定のワークグループの(list-servers)って実現できないでしょうか? MYGRPがターゲットとして (list-servers "MYGRP")みたいな感じで
質問です (setf a '("ほげ" "杏仁豆腐" "xyzzy")) (sort a 'string>) >> ("杏仁豆腐" "ほげ" "xyzzy") a >> ("ほげ" "xyzzy") sortをすると1つ消えてしまうのですが、これはこういうものでしょうか?
>>447 sortは破壊的関数で、この場合引き数のリスト a を変更しつつソートをする。
だから
(setq a (sort a 'string>))
の様に戻り値を使うようにしないと駄目。
449 :
447 :2006/01/20(金) 16:06:34 ID:o04zHM7w
>>448 なるほど。
破壊的 と書いてあったのでaにソートした結果を勝手に入れるのかと思ってしまいました。
なんで馬鹿ほど 自分勝手に解釈して出来ないって騒ぎ立てるんだろう・・・
ところで、KaMailってUTF-8のメールを送信できたんだね。超便利。最高。 デフォルトだと本文の銭湯にBOMがはいっちまうが、適当にコード書けばオケという。
なんで質問してるだけなのに 勝手に騒ぎ立ててることにして煽るんだろう・・・
>>452 煽る方もアレだけど
煽られてもしょうがない内容だったとおもうよ
真摯に受け止めて次から気をつけた方がいい
そうかな?同じ勘違いをしてる人は結構多いように思う。
MLでやられるよりは幾らかマシ。
とはいえ、それ全部読めといわれると二の足を踏む人が多そう。 FAQ 的な質問だからQ&Aに入れてしまってもいいかもね。
「破壊的関数」だけでも自分の間違いが解るはずなので、単に検索の仕方を知らないだけかもね。 まぁ、それでも脊髄反射でスレに書きこむのはどうかと思うが。
>>458 勘違いした状態でそこを読んでも自分の解釈が間違ってることに気付きにくそう。
よく見れば下のほうの nreverse の例で書いてあるけど・・・
>>457 最低限やることやってから効いて欲しいけどな・・・
教えて君でぐぐってみるといいかも
>>459 そういう人は破壊的の意味を取り違えてるから破壊的関数で検索することはありえない
FAQがないと延々と繰り返されるよこのやり取り。
>>462 たしかに.そんな気がする.
でも,このコミュニティにFAQを書く余裕は無い罠
人の話を聞かない人は FAQあっても見ないとおもう
466 :
457 :2006/01/24(火) 18:13:24 ID:ckQ2HHhu
467 :
名無し~3.EXE :2006/01/25(水) 10:17:04 ID:zsoUQyEO
xyzzyで出来て、meadowとかで出来ないことってありますか?
あります。逆もあります。
逆があるのは知ってるけど lispの実装とか見てる限りないっぽいんだけど・・・ 逆はキャレットとか基本的なこともいくつかあるのも分かる
軽いから複数起動しても平気、とか?
ファイラとか。
APIの呼び出しは?
ダイアログ定義したり
popup-list だしたり、IEうめこんだり
common lisp で書ける / elisp で書ける
469はこんなのでまんぞくしたのかね。 何を知りたいのかわかんねーな。
>>469 初期設定での有無はあるだろうけど
lispで書けば出来ることしかないと思われ
>>382 です。py-mode機能的には申し分ないのですが
tabでインデントをさせるだけで、ものすごくCPUを
使っているみたいです。
Emacs lispとxyzzy lispでは効率良いプログラムの
書き方が違うせいなのかな…
rss-mode がすっごく良くなったね もしかして bloglines から乗り換えられるかな
481 :
名無しさん :2006/01/28(土) 00:55:03 ID:cgT8C1pV
hatena-bookmark-mode使えた人いるー? なんかatom-modokiに関数が足りないっぽいんだけど…
>>481 そこともう一箇所直さないと使えない。どこかはわすれたwww
483 :
名無しさん :2006/01/28(土) 19:04:47 ID:cgT8C1pV
>>482 昨夜atom-modokiが更新されて動くかとオモタら「不正なデータ型」
ってエラーが出たけどそのもう一箇所直せばOK?
>>483 そう。hatena-bookmark.l の 428 行目をイカのようにすれば動く。
x (hatenab_feed-next feed)
o (hatenab_feed-next pfeed)
485 :
名無しさん :2006/01/29(日) 01:32:12 ID:SqC3Y6hw
rss-mode 0.0.2.0beta2をインストールしてからM-x rss でしばらく使用してから終了させ、 起動しなおすとツールバーが全て非表示になり 表示→ツールバーがマスクされて選択できなくなるのですが、 同じ症状出ている方はいらっしゃいますか?
487 :
名無し~3.EXE :2006/01/30(月) 20:24:32 ID:dUUxiYWw
rss-mode 0.0.2.0beta5(beta4でも)では、title-barにあった「rss-mode」の表示はなくなってしまったのでしょうか? 前に表示した他のバッファ(ファイル)名になってしまうのは不便かな……と。 なにか手はありますでしょうか?
~/ 依存の処理はsiteinit.l時点で書いちゃダメだったのね…。 ダンプ処理考えたら納得したけど、めっさハマった。 というわけでxyzzy wikiのjavascript-mode、siteinit.lで requireするとload-keyword-fileが失敗します。
>>489 何のことかと思ったけど
*keyword-load-path*
が ~/ だという話ね
ちゃんとインストールすればエラーは起こらないよ.
または,user-homedir-pathname と si:system-root
が同じだったらね
まぁ,ちゃんとインストールするのは難しいので
作者さん修正よろ
その表示を消したい場合はどうすればいいのでしょうか・・・
perl-modeってpodを認識してくれないのな 困った…
>>490 「ちゃんと」がよくわからないけども、
(equal (user-homedir-pathname) (si:system-root))
=> t
な環境です。
496 :
489 :2006/02/03(金) 10:28:09 ID:6Kvn4nML
>>495 > ~/ 依存の処理はsiteinit.l時点で書いちゃダメだったのね…。
これには納得できなかったから, どこか勘違いしているんだろうと
思ってそれっぽい理由考えてレスしてた.すまそ
ところで,実行中に ~/ の位置が変わるものなの?
javascript-mode の作者は provide の使い方を間違えているとは
思うけど,load-keyword-file が失敗するのは他に原因がある気がする.
少なくとも,siteinit.l で require しても,自分の環境では
load-keyword-fileに失敗する事はなかった.
スタックトレースぐらい出さないとエラーを修正するのは楽じゃなさそう
490 だった orz
$XYZZYHOME(~/)とその影響を受ける~/.xyzzyや~/etc等は ユーザー毎の設定(レジストリでいうHKEY_CURRENT_USER)になり、 siteinit.lはxyzzyそのものの設定(HKEY_LOCAL_MACHINE)になる。 ダンプファイルがxyzzy.exeと同じ所にあり、$XYZZYHOME変えても (そこにダンプファイル作られずに)共有されるのがその証拠。 そしてダンプにユーザー依存の処理を含むと、マルチユーザー環境下で 破綻してしまう。 とまあ理屈は置いておくとして。 実際にsiteinit.lと.xyzzyに (msgbox "~A ~A ~A" (user-homedir-pathname) (etc-path)) を書くと結果がまるで食い違うはず。 そしてsiteinit.l時点でのetc-pathはnil。だからこの時点で load-keyword-fileをすると、 (merge-pathnames "javascript+DOM" nil) => c:\xyzzy\javacript+DOM ;; (merge-pathnames "javascript+DOM" (default-directory))と同じ になってファイルが読めず、返値がhashtableではなくnilになってしまう。 (キーワードに色が付かないだけで、エラーが起きるわけではない) ところでこの手の関数がnilやfalse返すのは「失敗」って言う…よね?
~A多いよ、多いよ~A。
>>498 なるほど.言いたいことはわかったんだけど,
まだよく分からないところもあるんだ.
*keyword-load-path*
がどうなっているか,教えてくれないか?
あ、わすれてた。*keyword-load-path*はnilでした。 ディレクトリ構造いじってる人以外は変えてない(nil)んじゃないかな。
>>501 どうも.
とりあえず調べて分かった事.
(etc-path) は *etc-path* が siteinit.l 実行後に設定されるので,
※ lisp/startup.lの
※ (si:*load-library "loadup") 後に (ed::init-misc-objects)内で設定
(etc-path) を使う (load-keyword-file "〜") を siteinit.l 中で実行するのは
よくないことが起こる.
ユーザ側の回避策として siteinit.l の先頭にでも
(setq *etc-path* "~/etc") か
(pushnew "~/etc" *keyword-load-path* :test 'equal) をいれ,
モード作成者は, require 時にキーワードファイルがロードできる事を
前提にしてはいけないという事で作れ!
ということでした.
ありがとうございました.
>>498 etc って $XYZZY/etc じゃなくて ~/etc なんだ。知らなかった。
$XYZZY とホームディレクトリを一緒にしてると管理は楽だけど、
こういうところで落とし穴にはまりそう。
メジャーモードを作るなら lisp ディレクトリにあるやつを
真似しておけば間違いは少ないと思う。
たとえばキーワードファイルについても、lisp ディレクトリにあるモードでは
ファイル読み込み時じゃなくてモード起動時に設定するようになってるはず。
まあそんな事情があったとは知らなかったけどね。
> *etc-path* > キーワードファイル等を格納するパスが設定されています。 > 標準では(merge-pathnames "etc" (si:system-root))が設定されています。 どう見ても勘違いです。ほんとうにありがとうございました。 …ごめんなさい。orz
505 :
503 :2006/02/03(金) 21:41:26 ID:2uXKbSZy
>>504 そう言われて misc.l の init-misc-objects 見てみました。
…503 の前半はうそでした。$XYZZY/etc であってるじゃんヽ(`Д´)ノ
今後は自分でも確認してから発言しますすいません
506 :
502 :2006/02/04(土) 07:20:18 ID:YP7a8P5o
あれれ そんな大事なところを間違えてるとは. とほほ
xyzzyで使われているLispのBNFってありますか? ソースをダウンロードしてみたけど、それっぽいのは見つかりませんでした。 lex.ccとかあるけどちがうっぽいし。
common lispの仕様では(format)の第1引数がtだった 場合デフォルトの出力先に出るとなっています。 しかし、xyzzyのバッファから(format t "test")と してみるとどこにも出力されていないように見えます。 どこに出力されているんでしょう?
>>508 *standard-output* かな
510 :
507 :2006/02/05(日) 18:12:31 ID:YULWmH7y
>>507 なんにもレスがつかない・・・
xyzzyのLispのBNFはどっかにないですか。
だいたいのところはわかるのですが、細かいところがよくわからなくて。
例えば変数名はどのようなパターンになるか、とか。
リテラルとしてどのようなものがあるのか、とか。
>>510 BNFないだろうね.
BNFをユーザが変更できちゃうんだからね.
言語仕様が知りたいなら CLtL2 読んだら.
必ずしも効率のいい勉強の仕方だとは思わないけど
単なるCommonLispにBNFも糞もないだろ 言語仕様書読めよ
>>510 ソースは lread.cc 辺りなんじゃない?
漏れにはわけわかめだが…('A`)
>>510 変数名のパターンとか無理でしょ
(symbolp '|例えば こんな
文字列でも
大丈夫|)
=> t
515 :
507 :2006/02/05(日) 22:17:38 ID:YULWmH7y
>>511 BNFをユーザが変更できるというのは本当でしょうか。
S式からはずれた式が書けるということでしょうか。
>>513 たしかにそれっぽいですね。でも読んでもわからんです。
コメントが一切入っていない、修行僧のようなコードでした。
>>514 できませんか?
symbol : "'" "|" characters "|"
| "'" "+" characters "+"
| ....
characters : character
| characters character
516 :
514 :2006/02/06(月) 00:07:47 ID:cuHg5gYG
>>515 それでいいのかどうか分かんないですが、
それ以前に
>>514 の例はあまり意味がなかったような気もしてきた。
なんか、ASCIIと日本語で別々のフォントを指定して、 日本語のほうを大きめのサイズにするとClearTypeがかかるな。 MS ゴシックでClearTypeがかかったのを見てびっくりした。
フォントといえば イイ感じのアウトラインフォント見つけても等幅じゃないと使えない ini書き換えて無理やり使うと文字かぶってしまうし その辺どうにかならんのかなぁ…
ソース公開されてんだから自前で(ry いや、フォント描画をGDI+に切り替えてサイズに関係なくアンチエイリアス/ClearTypeがかかるようにしようと思ったが面倒で手もつけてないが。
エディタでプロポフォントを使うのはまずいだろ。
文字数が同じでも幅が変わってくる。
>>520 んなことせんでもMSゴシックからBMP部分を抜けばアンチエイリアスかかるよ。
小さいサイズだとアウトラインフォントを使わず内臓BMPフォントを使うようにWinはなってる。
エディタで見るようなサイズの文字にアンチエがかかってると 気持ち悪くてしょうがない俺は少数派でしょうか。
よくわからんが、プロポーショナルフォントって レターフェースはそのままにボディフェースのサイズを変えているってこと? つまり前スペなり後スペを調整してるの? 難しいね〜文字って
>>521 いや別にビットマップフォント削らんでもGASPいじればアンチエイリアスかかるが、GDIのアンチエイリアシングはタコいので線幅が1ピクセル切るような大きさだと余計見づらくなるだけ。
>>523 プロポーショナルフォントの場合(に限らんが)、個々の文字で固有の幅を持ってるので描画するときは"この文字列を描画するのに何ピクセル必要か"をいちいち計算しながら描画するのが普通。
ボディフェースとかレターフェイスとか前スペってなんなんだYO! 教えてちょ
xyzzyの開発って続いているんでしょうか?xyzzyは佐野さんが独自で作ってるんですよね。 Linux版にない機能とかも付けて頂けるんでしょうか。メインで使ってるんですが、使いやすくて良いですね。
何この釣りw
>>527 釣りとかじゃなく、本当に知りたいんです。答えていただけないでしょうか?
>>529 昨日からずっとググって調べてるんですが、分からないです。
531 :
526 :2006/02/21(火) 18:32:41 ID:XSaWYUgU
・作者は亀井さん ・最近(xyzzy時間)バージョンがあがったばかり。 ・更に最近、ライセンスを明示してソースコードを公開した。 (ソースコードそのものは以前から(リンクしていなかったが)一応見ることはできた) ・そもそも Windows 専用アプリなので Linux 版にない機能とかは意味不明。
彼が何をGoogleで調べたのか興味ある。
534 :
526 :2006/02/21(火) 18:43:31 ID:XSaWYUgU
>>532 ありがとうございます。馬鹿みたいな質問で申し訳ありませんでした。
>>533 主にWikiです。
佐野さんがたくさん書き込まれていたので、作者を勘違いしてしまいました。
Emacsからの移植がどうのこうのかいてあったので、Linuxとまた勘違いしてしまいました。
>>536 Wikiで調べるのは「ググる」とは言わん。
>>530 で「昨日からずっとググって調べてる」と書いてあるのは嘘かよ……
>>535 ググってましたよ。ググってxyzzyの解説サイト探して、最後に辿り着いたのがWiki。
Wikiが一番有用だったから、主にWikiって書いた。6:4ぐらいでWikiの方を多く見てましたね。
>>537 Wiki以外で数十サイト見たけど、解決しませんでした。
Wikiにはいろいろ書いてあってよかったですけど、勘違いしていたので解決しませんでした。
('A`)
これはひどい……
君は秀丸を使った方がいいよ
>>543 サポートあっても買いたくないな。これといって凄い機能があるわけでもないし。
実際問題ごにょごにょしてる人多いだろ
>>546 EmacsでVC++ライクな折りたたみというのはどっかで見た気がするが。
>>544 いや、526みたいな人向けに書いたのだが。
俺も単一バッファしか(ry
態度がだんだん変化してゆく奴は相手しないほうがいいよ
↑スルーで
∧ ∧ (*‘ω‘ )つ ちんぽっぽ (( (⊃ (⌒) )) (__ノ ∧ ∧ ちんぽっぽ (‘ω‘ *)__ ♪ (( ⊂⊂ _) (__ノ ̄ 彡 ∧∧ ちんぽっぽ (ω‘ *)∩ )) (( (⊃ 丿 (__)し' ,一-、 / ̄ l | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ■■-っ < ハイハイ、いったんCM逝きまーす ´∀`/ \__________ ∧ ∧ \ (‘ω‘ *)ノ | (⊃Ё|_ノ| (__)し'
同期スクロールって出来ますかね? 二つのウィンドウ(バッファ?)を同じ分だけスクロールする機能です。 メニューとキーバインドは一通り見てみたんですが… (lispを書けば出来るんだろうけど全く分からないorz)
>>554 diff系のlispで見た気が。多分diff-detailだったと思います。
>>554 > 同期スクロールって出来ますかね?
> 二つのウィンドウ(バッファ?)を同じ分だけスクロールする機能です。
> メニューとキーバインドは一通り見てみたんですが…
そりゃ、見かたが足りないね。
S-C-Up (scroll-down-both-window)とか
S-C-Down (scroll-up-both-window)とかあります。
>>556 あ、ホントだ…見落としていたみたいですorz
お手数をお掛けしました。
(一応検索をかけたはずなんだけど、スペルミスでもしていたんだろうか…)
>>555 解決しましたがありがとうございました。
ヘルプメニューの最近入力したキーを記録させないように出来ますか? 何か方法があれば教えて欲しいのですが。
>>558 ちょっと違うんですが、こんなんでどうですか?
(in-package "editor")
(defun get-recent-keys ()
"")
それをsiteinit.lに書いたらいいんですか?
ありがとうございます、出来ました。ダンプファイル削除し忘れてました。
マウスで同時スクロールって可能ですか? キーボードだと一気に同時スクロールできないので不便なんです・・・
Ctrl+Spaceにキーバインドしたいんですが、 .xyzzyに (global-set-key #\C-SPC 'dabbrev-expand) と書くと 起動時に「文字コードが範囲外です: C-SPC」とエラーダイアログが出ます。 Ctrl+Spaceにキーバインドするにはどう書けばいいんでしょうか? エライ人お願いします。
#\NUL C-x ? のあと目的のキー入力したらいいかも。
565 :
563 :2006/02/22(水) 13:30:21 ID:cjS7pJsK
>564 サンクスです!
566 :
名無し~3.EXE :2006/02/22(水) 23:58:21 ID:7LfaecNd
age
複数のファイルを同時に開こうとしたときに、開こうとしたファイルが1つでも存在しなかった場合は、 全て開くのを中止してしまうようですが、存在しているファイルだけでも開くように出来ませんか? 例えば、↓のショートカットを作成してそれを開いても、3.txt がなかったりすると、1.txtや2.txt も開けません。 "C:\Program Files\xyzzy\xyzzycli.exe" "C:\1.txt" "C:\2.txt" "C:\3.txt" これを 1.txt と 2.txt は開くようにしたいのです。 セッションファイルを使えば出来るんですが、ダブルクリックで開くためにはショートカットを使わざるを得ないのです。 (.ssn形式はほかのアプリで使ってます。)
>>567 セッションファイルでできるのならセッションファイルの拡張子を変えればいい
じゃん。セッションファイルの中身は単にlispだから拡張子は何でもいいよ。
気になるなら*session-dialog-filter*とかもいくつか変更してもいいし。
>>568 ありがとうございます。ダブルクリックに関してはそれで解決しました。
ただ、他アプリでランチャ的に "(略)\xyzzycli.exe" "C:\1.txt" "C:\2.txt" とか指定してるんですが、
その時にセッションファイルを作ってそのアプリに登録するのは手間なので、lispか何かでどうにかならないでしょうか?
>>569 んじゃー、バッチファイルで。
C:\xyzzy\xyzzycli.exe %1
C:\xyzzy\xyzzycli.exe %2
こいつを、hoge.batとかで保存して、ランチャに登録。
バッチファイル起動時の引数にファイルを二つ渡してやる。
>>570 2つ以上のファイルを開くときには
C:\xyzzy\xyzzycli.exe %3
C:\xyzzy\xyzzycli.exe %4
という感じで追加しなければいけないのでしょうか?
>>571 バッチファイルで引数の数だけ繰り返したいなら、
for %%a in (%*) do xyzzycli.exe %%a
とかすればいい。
けどウチでは
>>567 に書いてあるように開くのを中止されることはないよ。
存在するファイルはちゃんと開かれるし、存在しないファイルは新規ファイルとして開かれる。
>>572 出来ました。本当にありがとうございます。でもこの現象は私だけですか。色々調べてみます。
574 :
573 :2006/02/24(金) 02:16:02 ID:6ZDqYwyq
一応報告しておきます。 色々調べてみた結果、存在しないファイルのあったフォルダ自体がなく、それが手前に来ると再現するようです。 例えば、"C:\abc\1.txt"のあるフォルダ "C:\abc"自体が存在しなかったとすると、 "C:\xyzzy\xyzzycli.exe" "C:\abc\1.txt" "C:\2.txt"→全て開けない "C:\xyzzy\xyzzycli.exe" "C:\2.txt" "C:\abc\1.txt" "C:\3.txt"→"C:\2.txt"は開けるが"C:\3.txt"は開けない となるようです。batファイルを使うと大丈夫です。
575 :
573 :2006/02/24(金) 02:25:28 ID:6ZDqYwyq
補足で、batファイルを使うと開くときのファイル名がおかしくなるときがあります。
>>576 見事に出来ました。ありがとうございます!
質問なんですが、テキストファイルの右クリックメニューの「印刷」で、 xyzzyで印刷するには、print,prontto にどんなパラメータを指定すればいいのでしょうか?
すみません。
>>578 の訂正です。prontto→printto
いつか折り畳み機能が付くのを期待
NetInstallerで調子に乗って大量にインストールしてたら、バッファバーが表示されなくなり、 とても困っています。なんというものをインストールしたら、そうなるんでしょうか?
>>582 「printto」もそれと同じでいいのでしょうか?
>>584 「printto」は、複数ファイルを右クリック→印刷 のときに意味があるらしいのですが、
「pront」と同じように指定して、試しても何も変わりませんでした。
(「printto」に何を指定しても、「print」で指定したもので印刷されます。
しかし、事実「printto」が存在しているので、何かしら意味があるとは思います。)
ですので、「printto」は一体どう指定したら良いのか分からないのです。
>>581 インストールしたやつ
全部書け
話はそれからだ
>>586 結局「printto」にはどう指定したら良いのでしょうか?
>>588 誰も知らないから、あんたが調べて報告してください
簡単そうでできない…。 (状態) ホームディレクトリの下に ~/tex, ~/public_html/php, ~/public_html/perl, ~/public_html/cgi-bin とフォルダが並んでる (やりたいこと) 新規ファイルを開く際、 hoge.texなら~/tex/hoge.texを開き hoge.htmlなら~/public_html/hoge.htmlを開き hoge.phpなら~/public_html/php/hoge.phpを開き hoge.plなら~/public_html/perl/hoge.plを開き hoge.cなら~/public_html/cgi-bin/hoge.cを開く みたいなこと。要はファイルを開く際拡張子につきデフォルトのフォルダを指定したいんだが。 普通のfind-fileとは別なものを作らなきゃダメなんだよね?
>>591 *before-find-file-hook* でなんとかできるんじゃない?
>>593 じゃ半分ずつインストールして,どちらで再現するか調べる
再現する方だけをさらに半分に分け同じ事を繰り返す
インストールするとおかしくなるパッケージが分かったら報告する
そしたら話が進むんじゃないか
>>593 もしくは
(ni-autoload) の前に (toggle-trace-on-error t) を書いて,
*Trace Error* の重要そうなところを報告する.
>>596 今このスレはPart13ですよね。となると過去ログは12000レスということになります。
そんなに大量のログから検索なんてとても時間が足りません。ですので、
>>594 の方の方法で今調べてます。
>>597 ところで、あれだけ言われているのに、このスレの中位は読んだのかよ?
600ゲット 600レスも読むのは大変なんじゃない?
>>600 >>597 で
「過去ログ読むのは時間が足りないからお前等の時間を割いて俺様に教えろ」
って言ってるのが正しいと思ってるのか?
まぁこれ系のキチガイは言うだけ無駄だと思うけどな……
ただのイヤミだったわけだが
>>602 言ってること分からない?
釣りならいいんだけど
本気で思ってそうで最近の子供は怖いんだよね
??? 俺は597に対してイヤミを言ってたつもりなんだが
>603 横槍すまんが、600=602と597は別人でしょ? で、600は597の発言を皮肉ってると
お前らやるんなら余所でやれや。周りに迷惑かけるな。
608 :
597 :2006/03/02(木) 00:28:32 ID:Gq5dDPiK
>>594 検証した結果、switch-bar をインストールするとなるようです。
ありがとうございました。
>>601 あなたの言ってることはもっともなことだと思います。しかし、12000レスもある過去ログを読め と言われても、
とてもそんな時間がないことも事実です。その辺も分かって下さい。
だめだこりゃ、典型的なパターン
>>609 もし、あなたが逆の立場だった場合、12000レスの過去ログを見るんですか?
>610 12000レスから絞り込めば,たかが100レス前後読めばわかるんじゃないか?
このスレって人いたんだ。
>>610 609 じゃないが、「バッファバー」とか「表示」という単語で検索ぐらい
するだろうな。
それすらしない、できない、あなたは、やっぱり「だめだこりゃ」だと思うよ。
普段から効率を考えて作業している?
「使えないやつ」の典型的パターンじゃね?
普段ヒマ & 粘着が来るとスレ急激に伸びるって
Emacs関係のスレにだんだん似てきたぞ。
誰でも情報集めにはそれなりに工夫してるし
そのための多くの補助ツールもある。
>>610 もいい機会だから少し考えれ。
情報が「ない!」のに比べれば天国みたいに幸せな状況なんだぞ
別に全スレ読めとは言ってないし、このスレだけでも始めから見てもらえないものか。
一人のキチガイのおかげで
>>591-592 のやり取りが埋もれるのは忍びないなぁ……
と思ったりするんだがどうよ?
>>546 遅レスだけど、ぶっちゃけ羨ましいなあ>折りたたみ
xyzzyにも欲しいなあ。
meadowでも出来るけど重いし
617 :
610 :2006/03/02(木) 11:31:37 ID:Gq5dDPiK
このスレ内で「バッファ」「buffer」でレス抽出したけど、必要な情報は何もなかったんですよ。
オレなら「バー」とか「表示」で抽出するな いや、それよりもアンインストールして少しずつインストールしなおすのが先か。 そもそも説明を読まないで無闇にインストールしたらトラブって当然だと思うけどね。
>>617 頼むからもう出てこないでくれ。他のまともな話が流れる。
>>596 になんかレスをしないで、完全無視すべきだったと反省しています。
どうせこれ以上何言っても無駄でしょうし、時間がもったいないので、このレスを最後にします。
効率的な検索の方法を教えてあげている(ちょっときつい言い方ではあるが) のに、それを理解しないで、12000レスにだけ拘っていることに気づけ
622 :
名無し~3.EXE :2006/03/02(木) 23:57:15 ID:CYoDi1D6
知障
>>620 =ID:Gq5dDPiK晒し上げ
絶対といっていいほど低能っててめえを棚に上げて責任転嫁して最後っ屁ひるよな。
さすが2ちゃんねる、罵倒はお得意。
2ちゃんじゃなくても見下されると思われ
テキストファイル全体をクリップボードに送る時どうしてる? 俺はテキスト先頭にいってMark set, 末尾でRegion copy 設定で「中途半端に同期」にチェックをつけてる でもめんどくさいんだよね、これ
普通にコンテクストメニューから。 TP使いなんであんま面倒じゃないしな。
C-a に selection-whole-buffer を割り当ててるから、(必要ならマーク) C-a C-Inert
>>625 (defun 全部コピーする ()
(interactive)
(copy-region-to-clipboard (point-min) (point-max)))
C-< C-> C-Insert C-Insert には copy-region-to-clipboard を改造したやつを割り当ててる
>>625 Alt → E → S → ツールバーのコピーボタン 使ってます。
>>625 マウスの左クリック5連打でテキスト全体が選択されるから
'copy-selection-to-clipboadを割り当てて左クリック5連打。
; マウス左ボタンで範囲を選択した瞬間にクリップボードにコピー
(global-set-key #\LBtnUp 'copy-selection-to-clipboard)
>>632 625じゃないけど、こりは便利そう棚。漏れも使おう。
ミニバッファに入った時にminibuffer-completeを呼びたいと思い 以下のように書いたのですが、*enter-minibuffer-hook*が実行される時点では (minibuffer-completion-type)はnil (point-min)も(point-max)も0で do-completion-internalから:no-matchが返ってきます。 もう打つ手が思いつかないのですが、これはできないのでしょうか? (add-hook '*enter-minibuffer-hook* #'(lambda (bf his) (save-excursion (set-buffer bf) (minibuffer-complete))))
635 :
625 :2006/03/05(日) 01:39:59 ID:oFEkhwkA
>>631 マウス5連打ってすごいな。そんな操作があることが驚きだ
>>632 ありがとう。これ使うことにした
MLに池沼がわいたな
>>625 winkeyしてない人の話なのね。結構いるんだな。
おれはwinkeyしてるから使い方がわからぬやしスレにあった、
カーソルが動かないselection-whole-bufferしてC-cですむもんな。
>>637 (load-library "Gates")してる人なんてごく一部だと思いますが……
Gatesじゃないけどwinkey.l + α で使ってます。 普段Windowsしか使わない人間にとっては 基本的な動作はWindows準拠じゃないと辛いんですよ。 体が覚えちゃってるので。
>>634 > (minibuffer-completion-type)はnil
ミニバッファに入ったときの値を調べたら M-x のときは :command-name だった.
(defun mini-compl (bf his)
(save-excursion
(set-buffer bf)
(do-completion-internal (point-min) (point-max)
;(minibuffer-completion-type bf)
:command-name
(minibuffer-completion-list bf)
nil nil
*last-command-char*
*minibuffer-popup-completion-list*)))
(add-hook '*enter-minibuffer-hook* 'mini-compl)
一応,これで M-x で入ると補完候補が表示される.
あと残りの細かな挙動の差異は自分で埋めてみるといいよ.
やっぱ自分の欲しいものだとがんばれるし,できたときの感慨も一入だよ.
>>639 Winkeyは始め試してみたけど
正直C-vをもう少し何か工夫がほしかった。
某所から引用 (provide "winkey2") (in-package "editor") ;;; winkey.lからコピー (defvar *default-selection-keymap* (let ((keymap (make-sparse-keymap))) (define-key keymap #\C-c 'copy-selection-to-clipboard) (define-key keymap #\C-x 'kill-selection-to-clipboard) keymap)) (setq-default selection-keymap *default-selection-keymap*) (define-key esc-map #\C-x #'ctl-x-prefix) (define-key esc-map #\C-c #'specific-command-prefix) ;;; Windowsっぽい設定 ; files (global-set-key #\C-n 'new-file) (global-set-key #\C-o 'open-file-dialog) (global-set-key #\C-s 'save-buffer-dialog) (global-set-key #\C-p 'print-selected-buffer-dialog) (global-set-key #\M-F4 'kill-xyzzy) ; Alt+F4 ; edit (global-set-key #\C-z 'undo) (global-set-key #\C-y 'redo) (global-set-key #\C-v 'paste-from-clipboard) (global-set-key #\C-a 'selection-whole-buffer) ; search (global-set-key #\C-f 'search-dialog) (global-set-key #\C-r 'replace-dialog) (global-set-key #\F3 'repeat-forward-search) (global-set-key #\S-F3 'repeat-backward-search)
続き ; move ; chars (global-set-key #\S-Left 'selection-backward-char) (global-set-key #\S-Right 'selection-forward-char) ; lines (global-set-key #\S-Up 'selection-previous-virtual-line) (global-set-key #\S-Down 'selection-next-virtual-line) ; bol/eol (global-set-key #\Home 'beginning-of-virtual-line) (global-set-key #\End 'end-of-virtual-line) (global-set-key #\S-Home 'selection-beginning-of-virtual-line) (global-set-key #\S-End 'selection-end-of-virtual-line) ; words (global-set-key #\C-Left 'backward-word) (global-set-key #\C-Right 'forward-word) (global-set-key #\S-C-Left 'selection-backward-word) (global-set-key #\S-C-Right 'selection-forward-word) ; page (global-set-key #\S-PageUp 'selection-previous-page) (global-set-key #\S-PageDown 'selection-next-page) ; bob/eob (global-set-key #\C-Home 'beginning-of-buffer) (global-set-key #\C-End 'end-of-buffer) (global-set-key #\S-C-Home 'selection-beginning-of-buffer) (global-set-key #\S-C-End 'selection-end-of-buffer) ; buffers (global-set-key #\C-F4 'close-selected-buffer) (global-set-key #\S-C-F24 'previous-buffer) ; Shift+Ctrl+Tab (global-set-key #\C-F24 'next-buffer) ; Ctrl+Tab (set-extended-key-translate-table exkey-S-C-tab #\S-C-F24) (set-extended-key-translate-table exkey-C-tab #\C-F24)
前はwinkey2をtoggle-gatesから呼び出すようにしてた。 ネイティブのキーバインドを覚える気がある人にお勧め
なんか使ってくれている人がたくさんいるみたいですが 628のを参考にして最初の関数を書き換えてみました。 (defun copy-all-to-clipboard () (interactive) (copy-region-to-clipboard (point-min) (point-max)) ) これだけでいいんですね まぁ元のでも不具合は無いと思いますので気が向いたら書き換えてみてください。
class A { public: A(); virtual ~A(); } class A とかくと、上記のように 一発で出てくるような設定って、できないですかね?
>>646 ちょっと違うけどこんなのじゃ駄目?
(defun makeClass (args)
(interactive "sClaaName:")
(insert
(concat
"class " args "\n"
" { \n"
" public: \n"
" " args ";\n"
" virtual ~" args "(); \n"
" }\n"
)
)
)
これに行内サーチしてクラス名を取得したのをつければいいんだけど
サーチ開始場所の指定が良く分からなかったのでヒントだけ書いて逃げる
(scan-buffer "class \\(.*\\)" :regexp t)
(makeClass (string-trim " " (match-string 1)))
648 :
647 :2006/03/08(水) 11:54:35 ID:Nev+4VGJ
できた (defun makeClass (args) (interactive "sClassName:") (insert (concat ; "class " args "\n" " { \n" " public: \n" " " args ";\n" " virtual ~" args "(); \n" " }\n" ) ) ) (defun makeClass2 () (interactive) (scan-buffer "class \\(.*\\)" :regexp t :reverse t) (goto-line (+ (current-line-number) 1)) (makeClass (string-trim " " (match-string 1))) ) (global-set-key '(#\C-c #\c) 'makeClass2) キーバインドはお好みでどうぞ
649 :
647 :2006/03/08(水) 12:01:38 ID:Nev+4VGJ
同一行に見つからなかったときにも対処してみた。 (defun makeClass2 () (interactive) (setq l1 (current-line-number)) (setq c1 (current-column)) (scan-buffer "class \\(.*\\)" :regexp t :reverse t) (if (= l1 (current-line-number)) (and (goto-column c1) (makeClass (string-trim " " (match-string 1))) ) (msgbox "同一行でclass名が見つかりません") ) )
>>646 少し違うがc+++-modeでC-c t
>>647 insert は引数を複数受けるので concat しなくてもいいんじゃないかと。
652 :
646 :2006/03/08(水) 23:25:49 ID:rZPzrEHr
>>404 ネットインストーラより、普通にインストーラをつけて
Cygwin見たいに選べたらいいねぇ。
そうすれば更新とか簡単そうだし、
本体自体も軽くなりそう
そんなの出来たらやってる
.xyzzy を作成するツールでもいいぞ 選択肢を選ぶと必要な.xyzzyができるようなUnixとかでよくあるような奴
wikiがつながらないぜ
SS も見たいけど .xyzzy の方もあげてほしい 特に NetInstaller とかで lisp 公開している達人方の
達人じゃないけど.xyzzyを公開してみる ;;; -*- mode: lisp; package: user -*- ;;; Last updated: <2005/06/21> 以上w いや全部siteinitに書いてるんだわ(^^;
はぁ。じゃ .xyzzy と siteinit.l の公開で。
見てみたら .xyzzy が約 450 行、 siteinit.l は分割してるんでよくわからんけど 1000 行ぐらいありそう。 というわけで公開は無理ぽ。 どういうことを知りたいのかわかれば、部分的に公開とかできないこともないけど。 まあ大半は Wiki や 2ch で拾ったものだけどね。
.xyzzyとsiteinit.lだけでスレが流れてlispネタができないので Wikiかアプロダでも使ってやってくれい。
>>665 じゃあ、そのlispネタをどうぞ。
そんなに書き込みもないし、スレの活性化を思って提案してみたんだけど。
>>665 はどんなlispネタ持ってきてくれるの?
このスレ3人目の逆ギレ君登場。
>>665 に同意。
無理に活性化も再利用的なこともする必要はないと思う。
環境晒しはきりがないし。
ただ「これは便利」という自慢(?)の部分を晒すのはありかと。
というわけで言い出しっぺしてみる。
C-x & のログウィンドウがジャマだったので別フレーム&必ず下側&サイズ小さめ。
もっといい書き方がありそうだし、車輪だったりしたらスマン。
(defvar *original-execute-subprocess* (function ed::execute-subprocess))
(defun ed::execute-subprocess (cmd &optional (arg nil f) bufname environ directory)
(interactive "e& \np" :history0 'execute)
(select-pseudo-frame
(or (find-pseudo-frame "*execute*")
(new-pseudo-frame "*execute*")))
(if (equal (count-windows) 1)
(split-window -13 nil))
(other-window -1)
(funcall *original-execute-subprocess* cmd bufname environ directory)
(other-window 1))
>>668 > (defun ed::execute-subprocess (cmd &optional (arg nil f) bufname environ directory)
[skip]
> (funcall *original-execute-subprocess* cmd bufname environ directory)
引数 arg を渡していないような。
引数がずれるよ、きっと。
>>668 というか supplied-p variable の f も渡せてない。
渡す方法ってあるんだっけ?
encap.lだと何とかなる?
# オレはヘタレなのでそういうのはコピペで引っ張ってきて
# 関数を再定義しちゃうんですけど。
funcall してるところをこうするとか? (if f (funcall *original-execute-subprocess* arg cmd bufname environ directory) (funcall *original-execute-subprocess*))
調べてみた。
encap.lを使えば多分大丈夫。
(defun foo (a &optional (b nil sv))
(insert (format nil "a: ~A, b: ~A, sv: ~A" a b sv)))
(apply #'foo '(hoge))
->a: hoge, b: nil, sv: nil
=>t
(apply #'foo '(hoge guu))
->a: hoge, b: guu, sv: t
=>t
(apply #'foo '(hoge nil))
->a: hoge, b: nil, sv: t
=>t
>>671 氏
それもOKですね。
またwikiが・・・ 削除できないようにって出来ないんですかね。
あらま、ほんと。
派手にやってるね。
>>673 削除できない=編集できないだから難しそう。
今見てきたけど、凄い粘着ぶりだな IPが表示されるMediaWikiにした方がいいのかもね…
>>674 削除できない ≠ 編集できない ですよ?
ログインしないと削除できないようにできるはず。
うわごめん、FSWikiみたいにユーザを作れないのか……
PukiWikiなんだから凍結はできる。 次善の策として、これまでのページ(凍結)と編集できるページと分けて 新規に書き込む人からリンクしてもらうというのがある。 いずれにせよこれまでの貴重な情報が消えるのは悲しいので 管理者さんがんばってください。
>>677 設定ファイルを直接弄ればユーザーを作ってページごとにアクセス制御は出来るみたいだけど、FSWikiのようなユーザー管理画面はない。
PukiWikiなんだから荒らしてもログから復活させるだけじゃないか? 多分1,2分だよ
スクリプトっぽいな… PukiWikiの公式に相談に行ったほうがいいのかも というか、対策が見つかるまでしばらく編集機能を停止した方がいいんじゃないかな?
パスワード入れる機能を導入してみるとか。 スクリプトならパスは何でも良いだろ。
>>682 公式に荒されてますって相談するのは御門違いではw
とりあえず編集停止が妥当だと思う。
>>683 JoeなBasic認証とかにしとけば楽だけど、
それだと絶対に文句言う奴が出てくるだろうから大変そうだよなぁ。
メジャーモードで、使わない文字のキーを無効にしたいんですが、 もっといい方法ありますか? (setq *test-map* (make-sparse-keymap)) (dolist (key (cons 13 (do ((i 32 (incf i)) (lis nil)) ((> i 122) lis) (push i lis)) )) (define-key *test-map* (code-char key) #'(lambda () (interactive))))
>>685 ベルを鳴らすだけの undefined ってコマンドがあるよ。
可読性を考えるとこんなのがいいかも。
(map 'list (lambda (c) (define-key *test-map* c 'undefined))
"^Mzyxwvutsrqponmlkjihgfedcba`_^]\\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#\"! ")
あるいは substitute-key-definition を使うのもいいかもしれない。
howmおせーーーーーーーーーーーーーーーーーーー もっとさくっと保存できない物か・・・
>>688 いや、アップデートしてないhown-wrapを本スレに誘導されても困るから。
もう期待は出来そうにないんだから、 必要な人がどうにかするしかないんじゃないの。
>>687 俺はとりあえずこれをhowm-init.lに書いて凌いでる
; セーブ後にhowm-menuを更新しない
(setf howm-menu-refresh-after-save nil)
お前ら優しいな >いや、アップデートしてないhown-wrapを本スレに誘導されても困るから。 この一文で俺は答える気なくした
>>692 hown本スレはemac lispの話なのに
更新終ってるcommon lispの話をしだしても向こうが迷惑だろ。
うが、typoした。 s/hown/howm/
695 :
685 :2006/03/13(月) 19:47:30 ID:7cQC05Ri
>>686 ありがとうございました。こんなのでよさげでした。
(setq *test-map* (make-sparse-keymap))
(substitute-key-definition 'self-insert-command 'undefined *test-map* *global-keymap*)
(substitute-key-definition 'newline 'undefined *test-map* *global-keymap*)
色の設定はそんなに細かくできなかったような。
>>697 なんか15色くらいしか設定できないみたいだね('A`)
PC-98レベルかよ('A`)
一連の荒らしのせいか知らんが、よく 403 Forbidden になる。 迷惑な話だ。最近は荒らしも収まったみたいだが。
elisp→xyzzy移植ガイドみたいなのあればガンガンやりたいな…
>>700 ファイル名補完とURL補完は何とかなるだろ
migemo-dabbrev はめんどくさそうだ
最近、Wikipediaをいじることが多いんだが、ヘブライ文字も扱いたいな。
defs.lを修正しないと動かないのは初心者除けかな(笑)
*before-delete-buffer-hook*にフック仕掛けて *this-command*がkill-xyzzyだったら〜するという処理をしたいのですが、 ×ボタンで終了するとkill-xyzzyになりません。 toplev.ccの case WM_CLOSE: Buffer::kill_xyzzy (1); return 0; のとこで*this_command*をkill-xyzzyにできればいいのかなとおもいますが 何かいい方法があれば教えてください。 xsymbol_value (Vthis_command)=Qt; とかやったらできたので、何かユニークな値を入れる方法でもいいです。 ;;*this_command*はあんまりtにならないと思うでこれでも代替手段になるかも。
何をやりたいのかわからんけど、 *kill-xyzzy-hook*, *query-kill-xyzzy-hook*では駄目?
せっかくゲストブックがあるのにこっち使うのもアレだけど HE.l、netinstallerから入れて、~/.xyzzyに (require "HE") してxyzzy再起動すると 「パッケージがありません "Browserex"」とアラートが出る。 メニューの「BX」も消失。 念のため新しくxyzzyを入れてwin-window,exbrowserdll,HE-grepと入れなおしてみたが同様だった。 それぞれインストールするたびreadme.txtなどにあるように (require "hoge")を~/.xyzzyに入れて再起動してる。
>>715 こっちでもそうなった。
とりあえず、.xyzzyの先頭に (require "browserex") 入れて回避している。
ゲストブックに書きなよ。冷たいな。
>>715 ,
>>716 browserex がなくても動くように、fboundp で関数 bx::navigate が定義されているかを
確認しようとしていたのですが、(require "HE") の前にパッケージ browserex が読み込
まれていないと bx:: のところでエラーとなってしまうようです。
find-package で パッケージ browserex があるかどうかを確認しようとしても、関数の前に
bx:: と書くとそのパッケージがない場合にエラーになってしまうようなので、とりあえず
HE.l に (require "browserex") の記述を追加することでエラーを回避したつもりです。
こちらに書かれても構いませんが、見てなくてもうらみっこなしということで。(^^;
>>718 ロードされているかどうかなら
(find "browserex" *modules* :test #'string=)
で調べられるよ。
720 :
718 :2006/03/26(日) 15:25:17 ID:uXHe2Hil
>>719 コメントどもです。
ちょっと書き方が悪かったかもしれませんが、ロードされていればパッケージ browserex が存在するはずなので
ロードされているかどうかは (find-package "browserex")でも調べられます。
問題は、コード中に bx:: などのパッケージを表す接頭辞をつけて関数を記述するとそのパッケージが存在しない場合に
エラーになってしまうということです。
browserex を入れて困る人がいるとも思えませんが、一応パッケージ browserex を無理やり作成することで
browserex がなくても動くようにしてみました。
>>720 たとえばこんな感じで回避できないかな。
(and (find-package "browserex")
(funcall (find-symbol "navigate" "browserex")))
今やっているお話からは少しずれますが…前、2ch-modeの config.lに(require "browserex")って書いたら、browserexパッ ケージは登録されているのに、bxニックネームが登録されていない という現象が起きた覚えがあります。いろいろ悩んだ結果、 define-command-bar で browserex::browser-tool-bar が登録され ているため、.xyzzyに書かないと環境初期化時にbrowserexパッケ ージが自動作成されてしまい、後にbxニックネーム指定つきの browserexパッケージの定義をしても無視されるのではないかとい う結論に達したのですが…やっぱり(require browserex)は.xyzzy やsiteinit.lに書かないといけない(コマンド実行時に動的に読み 込んだりは出来ない)ものなのでしょうか?
724 :
718 :2006/03/26(日) 18:43:21 ID:uXHe2Hil
>>721 コメントありがとうございます。
教えていただいたコードを参考に再アップしてみました。
無理っぽいと思っても、方法はあるものですね。
一つ勉強になりました。m(_ _)m
リファレンスずっと古いの使ってたから新しいの入れたんだけど もうすぐバージョンアップですか?
リファレンスが更新されたね
>>725 更新厨は他のソフトを使った方が幸せになりますよ
729 :
725 :2006/03/29(水) 23:22:19 ID:vdLwRQXH
ああすまんリファレンスにバージョンアップって言葉はおかしかったか もはやxyzzyなしでは生きていけない俺が他のソフト使えと言われるとはwww
Wiki にまた変なのが…
731 :
佐野 :2006/03/31(金) 22:15:41 ID:KF78K4eV
ご迷惑をおかけしております。
proxyのブラックリストをどこかからもらってきてはっつけました。
被害の出ているひとがいましたら僕に直接メール送ってください。
いらんML登録とかうざいのは*もう勘弁なので*やめてください。
[email protected] よろしくお願いします。(_ _)
というか、何で荒らしてるんだ?xyzzyで恥でもかいたか
佐野せんせい、2chにメールアドレス生は業者に回収されて 余計にspam増えるのでは……
gmailはフィルタリングが優秀だから大丈夫じゃない?
なんでこんなところにまでググル厨が…
俺もlisp書けるようになりたいなぁ…
Lisp って最初はキモく見えるけど、結局は慣れだよ。 何かのコードを見よう見まねで改変してみるとかオススメ。 あと具体的にやりたいことがあるなら上達は早いと思う。
今朝から Wiki (というか xrea)にアクセスできないorz 誰も騒いでないってことは、もしかしてうちだけ?
普通に見れた
743 :
740 :2006/04/08(土) 22:54:04 ID:+KR6un3S
744 :
740 :2006/04/08(土) 22:55:05 ID:+KR6un3S
2画面ファイラーでウムラウト(ドイツ語特殊文字)を 含むフォルダを開こうとしたら フォルダ名からウムラウト消したファイルを 新規で開いてしまうのはバグ? それとも、名前にウムラウトを使おうとする人間がバグ?
>>745 報告から皮肉っぽさを消して亀井さんへ直接送ってください
ファイル名ユニコード対応は9x系切り捨てになるんじゃなかったっけ、普通は。 メジャーバージョンアップクラスの更新になっちゃうね。 そもそもVC4.1ってことはまだ9x系のマシンで開発されてるっぽいんだが
LPCWSTRとchar*のキャストとかあって、無理そう。
変なファイル名は百害あって一利なし
UNICODEファイル名が浸透するまでは極力英数字でがんばる
>>746 皮肉ではなく自虐のつもりだったのに。
テキストコミュニケーションって難しい (´・ω・`)
>>750 そうする
>>749 「見やすい」は立派に"利"だと思う。残りは同意
ちょっと小ネタ (defun test-insert () (interactive) (dotimes (x 1000000) (insert "あ"))) (compile 'test-insert) (defun test1 () (interactive) (let (tick) (goto-char (point-min)) (setq tick (get-internal-real-time)) (while (scan-buffer "あ" :no-dup t)) (message "~A" (- (get-internal-real-time) tick)))) (compile 'test1) >1406,1391,1407 (defun test2 () (interactive) (let ((regexp (compile-regexp "あ")) ;regexp-quote しても同じ tick) (goto-char (point-min)) (setq tick (get-internal-real-time)) (while (scan-buffer regexp :no-dup t)) (message "~A" (- (get-internal-real-time) tick)))) (compile 'test2) >1531,1547,1515 compile-regexp しない方が速い
>>753 速いのは、正規表現で検索してないからでは。
(defun test1 ()
(interactive)
(let (tick)
(goto-char (point-min))
(setq tick (get-internal-real-time))
(while (scan-buffer "あ" :no-dup t :regexp t))
(message "~A" (- (get-internal-real-time) tick))))
としたら、test2 より遅くなると思われ。
>>755 > (while (scan-buffer "あ" :no-dup t :regexp t))
これは "あ" に対して、 regexp-quote しなくなるだけじゃなかったかな?
だからこっちのほうが元のよりもわずかに高速。
いや、:regexp t すればはっきり遅くなったよ。
758 :
753 :2006/04/16(日) 13:30:49 ID:1KNZ875a
>>755-757 コメントども。
こんな感じみたいです。
(defun test1 ()
(interactive)
(let (tick)
(goto-char (point-min))
(setq tick (get-internal-real-time))
(while (scan-buffer "あ" :no-dup t :regexp t)) ; :regexp t を記述
(message "~A" (- (get-internal-real-time) tick))))
(compile 'test1)
>2610,2594,2593
(defun test2 ()
(interactive)
(let ((regexp (compile-regexp "あ"))
tick)
(goto-char (point-min))
(setq tick (get-internal-real-time))
(while (scan-buffer regexp :no-dup t :regexp t)) ; :regexp t を記述
(message "~A" (- (get-internal-real-time) tick))))
(compile 'test2)
>2141,2125,2156
正規表現検索する場合は compile-regexp した方が速い。
compile-regexp する場合は :regexp t を記述しない方が速い。
おすすめ色設定教えてください。(^^; しっくりこないよ、、
背景 (32,32,32) 文字 (255,255,255) キーワード1 (126,170,214) キーワード2 (157,214,126) キーワード3 (214,126,126) 文字列 (214,183,126) あとはてけとう
こんなかんじ
ttp://hipee.moe.hm/uplon/1026.png textColor=#9000000
backColor=#e1e1e1
ctlColor=#c0c0c0
selectionTextColor=#ffffff
selectionBackColor=#808080
kwdColor1=#c84040
kwdColor2=#208420
kwdColor3=#964096
stringColor=#4040c8
commentColor=#a4a4a4
…
linenum=#a4a0a0
>>762 set-tab-columns に 2, 4, 8 を渡すボタン。
普段タブ幅4にしてるけど、たまに幅8でないと見にくいテキストがあったりするから作った。
折りたたみ機能まだー?
「まだー?」てヲイ 折り畳みは本体に手を入れるか、余程トリッキーなlispコードが必要になるだろ(多分
>>764 現在のバッファの内容を非表示バッファに保存
→非表示バッファを元に現在のバッファにアウトラインを生成
→現在のバッファを編集するたびに非表示バッファも変更
→保存は非表示バッファの内容をファイルに書き込む
こんな感じでできるかも。
2ch-modeの透明あぼーんみたいな感じにすれば出来るんじゃないの よくしらんが
もし
>>766 みたいにしても、UNDOやREDO情報が変わっちゃうよね?
それとも、保持することってできるのかな
>>771 非表示バッファで(setq kept-undo-information 1000)すれば、
UNDO、REDO情報は保持されるはず。
現在のバッファを編集した時に非表示バッファの同じ位置に移動して
同様の変更を加える(つまり非表示バッファは素のテキストのまま)。
UNDO、REDOは非表示バッファをUNDO、REDOしてそれを元に
現在のバッファにアウトラインを生成する。
現在のバッファに行番号の情報を持たせて(バッファに直接書くか変数
に代入)該当する行の範囲だけアウトラインを生成し直せば処理もそれほど
重くならないはず。
誰か
>>766 の方法でfolding実装してる人いる?
lispを使いこなせない俺にはまず、
非表示バッファと表示バッファをリンクさせる方法からつまづいてるんだけど
774 :
名無し~3.EXE :2006/04/20(木) 15:51:11 ID:qv6wM8jW
使い始めたばかりの初心者の質問です; 新しくIPAコジックなるフォントをインストールしたのですが メモ帳などでフォントを選択できるのですが、 xyzzyのツール、共通設定、フォントでは選択に表示されませんでした。 xyzzy.iniをいろいろ書き換えてみたのですが、 うまくいきませんでした。 どんたかわかる方おられましたらよろしくお願いします;
>>774 プロポーショナルフォント使っているんじゃね?
IPAコジックなんて聞いたこともなゐ
「ゴシック」な。xyzzy初心者というか日本語初心者かよ……
こじっくこじっくー
微妙なものが出来上がるので、無理に folding を実装するのは やめたほうがいいと思うよ。
あんま typo のひとつでいじめなさんな。
>>774 私もちゃんと理解しているわけではないのであれなのですが、
フォントの持っている字詰め情報によって
見た目上等幅でも等幅フォントとして認識されない場合があるようです。
IPA ゴシックについても、他の等幅フォントのみを扱えるエディタでも
認識されないようなのでこの場合に当てはまるのではないかと思います。
で、xyzzy.ini ですが、
[font] 以下 Japanese=... の行を以下のように変えても駄目でしょうか。
私の環境ではそれで変更できました。
Japanese=*,"IPAゴシック",128 (* はフォントサイズをピクセル数で)
また、xyzzy.ini を sjis 以外で保存してはいないでしょうか。
780 :
774 :2006/04/21(金) 10:20:41 ID:ZEaK7JPR
xyzzy.iniにIPAコジックって書いてしまっていた、、、 ちゃんとゴシックって書いたら変更できました^^; 答えてくれた方ありがとうございます かなり恥ずかしいなぁ
オチのあまりの壮絶さに思わず笑ってシモタヨ
define-history-variable された変数のうち特定の変数だけ 記録する数を増やす lisp って既にある?
>>782 add-history あたりがそうかもと思ったけど、これは最近使ったファイル専用
の実装になっていたので、ないんじゃないかな。
値をリストで持つヒストリー専用の変数を用意して、プログラムの変数は
nil のときにこのヒストリーの先頭のものを使ったり、メニューで選べるよう
にするぐらいでしょ? やればすぐできる。
ディレクトリをマウスでドロップした時に、そのディレクトリにファイルを作りたいと思って こんなLISP書いてみたんだけど、template-insert を使ってるとミニバッファあたりが変になります。 *before-find-file-hook* で find-file 使ってるからかな? なんかうまい方法ないでしょうか。 (add-hook '*before-find-file-hook* #'(lambda (dir) (interactive) (if (file-directory-p dir) (progn (find-file (read-file-name "FileName: " :default (append-trail-slash (map-backslash-to-slash dir)) :history *minibuffer-file-name-history*)) (selected-buffer)))))
>>784 *drag-and-drop-hook*でやってみては
>>785 *drag-and-drop-hook*に渡す引数が2つだと言うことはわかったんですが、
引数を2つ取る関数をadd-hookしてやると、不正な関数ですというエラーが出てしまいます。
リファレンスを見るとこのフックはほかと呼び出され方が違うみたいなことが書いてあったんですが
そのせいですかね…
>>786 add-hook じゃなくて setq しないといけない
>>786 y-or-n-pでひっかかるようですね。理由はちょっとわかりませんが。
以下、根本的な解決ではありませんけれども、
(1) ti::ynの中のy-or-n-pをyes-or-no-pに書き換える
(2) いちいち聞かなくてよいなら
(defun ti::yn (s) t)
(3) 無理矢理
(defun ti::yn (s)
(prog1 (y-or-n-p "テンプレートを挿入しますか? (~A)" s)
(unread-char #\C-g *keyboard*)))
とかでごまかせないですか?
>>785 ,787-788
みなさん、ありがとうございました。結局、(3)に近い方法でごまかせました。
template-insert が *find-file-hooks* にかかっているので、find-file 直後に C-g
とできるわけですね… 勉強になりました。
(setq *drag-and-drop-hook*
#'(lambda (window filelist)
(set-window window)
(let (file (dir (car filelist)))
(interactive)
(if (file-directory-p dir)
(progn
(setq file (read-file-name "FileName: "
(append-trail-slash (map-backslash-to-slash dir))
:history *minibuffer-file-name-history*))
(find-file file)
(unread-char #\C-g *keyboard*))
(editor::default-drag-and-drop-hook window filelist)))))
790 :
名無し~3.EXE :2006/04/29(土) 20:32:53 ID:LmpGHb7G
2ch-modeで自動的にBeログインさせるにはどうしたらいい?
いくつかひな形を書いたソースコードをファイルで用意しておいて、 ソースを編集している最中に、好きな場所に insert したいのですが、 1. ひな形(ファイル)の選択 (デフォルトでは事前設定のファイル、変えたい場合はワンアクション加える) 2. insert をするようなのってできませんかね?
まぁそうなんですが、 それだと、デフォルトディレクトリをひな形のおいてある場所つねに指してないといけない、 デフォルトで事前設定ファイルを選択するという動作が入る、 という煩わしさがあるので、もっと楽にしたいんですが。
こんなのはどう? (defconstant *custom-insert-file-directory* "d:/test/template") (defun custom-insert-file () (interactive) (let ((path (directory *custom-insert-file-directory* :absolute t)) (menu (create-popup-menu))) (mapcar #'(lambda (x) (interactive) (add-menu-item menu nil (pathname-name x) #'(lambda () (interactive) (insert-file x)))) path) (track-popup-menu menu))) (global-set-key '(#\C-x #\i) 'custom-insert-file) d:/test/template にテンプレートを置いておいて、メニューでそれを選ぶみたいな
>>793 別解ってことで。
(defvar *my-insert-file-template* "d:/test/template.txt")
(defun my-insert-file (&optional arg)
(interactive "*P")
(let ((filename
(if arg
(read-exist-file-name "File name: " :default *my-insert-file-template*)
*my-insert-file-template*)))
(if (file-exist-p filename)
(insert-file filename))))
(global-set-key '(#\C-x #\i) 'my-insert-file)
普通に実行すればプロンプトも出さずそのまま insert。
C-u 付きで実行すればミニバッファから選択。
メタ構文変数を名詞に使うな ボケ
>>796 > メタ構文変数を名詞に使うな ボケ
これってどれのこと?
さわる物みな傷つける思春期ですか?
>>799 > >(if arg
> のとこでしょう。
なるほど。
>>796 のいっていることもわからなくはないな。(言葉遣いは別として)
とはいっても、そういうコードがたくさんだからね。
>>800 だよね?名詞って言ってるし。てか、名詞ってのも変だけど。
本体に手を入れて追加したい機能ってありますか? GWの予定が変わって暇なんでできることであればやってみようかと。
popup-listの改善。 せめてキーの設定をlispでできるようにするだけでも。
805 :
名無し~3.EXE :2006/05/01(月) 07:48:49 ID:P842csM8
folding
>>806 賛成 PATCHでやるのがよろしいかと。
マルチスレッド
(defun my-insert-file (file) (interactive "fpath:" :default0 "~/template/" :default1 "~/template/html" :default2 "~/template/lisp") (insert-file file))
>>803 process-filter セットしておいて、スリープしてプロセスからの入力待ちし、
process-filter が実行されたら、すぐに元のプログラムの実行が再開される
スリープ関数。 sit-for がキー入力ですぐ復帰するけど、そのプロセス版。
お題のレベルが高いのですぐには対応できなさす ほとんどがEmacsでできてXyzzyでできないことですよね ちと、勉強します^^;
OS判別してNT系ならUnicodeファイル名対応を。
describe-functionで出るやつからソースに跳べるとうれしい。
>>814 これは本体で対応することじゃないね。
lispでの対応だから簡単だよ。
>>814 これでOK?
(defun describe-key-briefly-to-jump (key &optional keep-window other-window)
"キーに割り当てられた関数にタグジャンプ"
(interactive "kDescribe key briefly: \np")
(let ((command (lookup-key-command key))
(opoint (point)))
(setq key (key-to-string key))
(cond ((null command)
(message "~a is not bound" key))
(t
(let ((class nil)
(name (symbol-name command))
(functionp 'ed::function))
(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)
(when keep-window
(set-mark)
(set-window window))
(values t class name functionp opoint))
(progn
(message "Not Found ~:[~*~A~;~A::~A~]" class class name)
(values nil class name functionp opoint)))))
))))
>816 どうもありがとうございます。関数名で跳べるやつはこれを参考にちょっとがんばってみます。
aproposから1発で飛べるように頑張ってくれよ
819 :
名無し~3.EXE :2006/05/02(火) 19:09:35 ID:/pyQWfSK
すごく・・・いいです。 site-lispにある関数にも跳べると文句ないんですけどね、とかいってみたり。
821 :
名無し~3.EXE :2006/05/02(火) 21:04:09 ID:/pyQWfSK
>821 site-lispにあるファイルを読み込むのに、 (load "site-lisp/hoge.l") てやんないとファイルがないって怒られるんですけど、これってもしかして変なんですか? リンク先のコードを.xyzzyに張ってみたけどやっぱりsite-lispの関数には跳べませんでした。 info-modoki-mode.l入れてあります。
>>822 IEからのカキコに反省して、2chブラウザからにしてみた。
普通、ファイルの先頭に
(provide "hoge")
みたいにして
(require "hoge")
で呼び出すと思うんだけどそれができないってこと?
>823 (require "hoge") なら大丈夫ですね。 *load-path*にsite-lispが入っているのに(load "hoge.l")でsite-lispにあるファイルが読めないのは何か変なことで、 これが、>819のコードでsite-lispの関数に飛べないのと関係があるのかなと思ったんですけど、別に原因があるのかもしれないですね。
.xyzzyの内容を必要最低限にしてsiteinit.lはなしでやってみたけど、site-lispの関数にはジャンプできませんね。 なんでだろ。 .xyzzyの中身は819のコードと(require "migemo")だけにしてみました。 819の"lisp/"を"site-lisp/"に変えたら飛べたんですけど。当たり前か。
>>825 describe-functionの結果の
foo: a Lisp function.
foo
not documented.
下側の foo からは跳べない?
*load-path* は load-library や require の時に有効みたいですね
(ちゃんと調べてないけど)
>>824 load は *load-path* を見てくれなかったような。
無茶な質問します。 calcって改造できるんでしょうか。 具体的には、カンマがあったら無視したいのですが・・・ 用途は、3桁カンマ区切りの数字を普通の数字として扱いたいのです
それと、TAGSファイルの作成はしている? あと思いつくのは、siteinit.l に (require "hoge") を書いて再ダンプくらいかな。
>826 跳べないです。 「fooが見つかりません」て出ます。
>829 XTAGSを作成しています。 siteinit.lと際ダンプしてみましたけど相変わらずですね。うーん。
>>830 パッケージが違ってるんじゃないの?
editorなら ed::foo でどう?
>>828 lisp\calc.l ってのがあると思うよ。
>830 M-x describe-functionしてed::fooてやって出てきたバッファでタグジャンプ、てことですよね? site-lispの関数だとやっぱり跳べません。うむむ。
>>834 素の状態のxyzzyの場合 (require "help") だと
lisp ディレクトリのを読みにいってしまうようなので
help.l を my-help.l に改名してsite-lispに置く。provide も my-help に変更
(require "my-help") で呼び出し
819のコードを
(in-package "editor") と
(in-package "user") で挟む
何もインストールしていない状態でこれで動いているので
これでだめなら、そちらの環境の問題かと。
>835 うまくいきませんでした。残念。 しかし、default-direcotryをsite-lispとトグルする関数を書いてみたところ、 どうやらうまくいっているようなのでこれで良しとすることにしました。 長々とお付き合いくださり本当にどうもありがとうございました。
837 :
名無し~3.EXE :2006/05/03(水) 16:04:50 ID:0ZfNBrfE
余計かもしれんけど、TAGSファイルをlispまたはsite-lispのいずれかの ディレクトリに対してしか作成していないなんてことはないよね?
>837 両方のディレクトリにそれぞれ「ツール→TAGSファイルの作成」で作ったXTAGSがあります。 もしかしてと思ってctagsというので試してみましたが、ディレクトリを聞いてはくれるものの 直接にsite-lispの関数には跳んでくれませんね。
819ので出てきた*help*バッファで、ということです。
ルートディレクトリにはあるの?
Wikiでみたらgtagsに関するページが張られていたね。 早速使ったら面白かったよ。
もうひとつ。 gtagsでXTAGSみたいに作成する際にどこに作成するのかポップアップ?みたいにすることは可能ですか?
文字の表示がちらつくんだけど、グラボが悪いのかな 他のテキストエディタだとちらつかないんだけど
>840 xyzzyはf:/util/xyzzyにインストールしてあって、%XYZZYHOME%はf:/homeです。
>>844 だからf:/util/xyzzyにXTAGSファイルはあるの?
>845 なかったです。 作ったら出来ました。どうもお騒がせしました。ありがとうございます。
C-n で下に行がなければ新規に行を追加していく そんなLispを書くヒントをください ノビ太に九九を教えるかのごとく
>>847 それだけなら一行で済むんだが、
そうじゃなくて自分で関数を書きたいということか?
ちなみに一行で済ます方法はこれね (setq next-line-add-newlines t)
>>848-849 orz ありがとう
Lispの練習をしようと思ってたんですが
はじめっからあるならそっち使います
>>850 練習するつもりなら、とりあえず
next-line-add-newlines
を grep して、どこでどんな風に使われているかをチェックしてみては?
>>851 (´・ω・`)
grepしたけど、何処で定義されてるかわかんない
cmds.lがちょっと意味ありそげでした。
でもdefunされてないとお手上げ、どこを見ていいのやらサッパリです。
整形用のキーバインドで、 (行)選択状態でTAB押下で選択行全ての冒頭にTAB挿入ってどうすれば? ありそうだけど見つけられず……
>>853 とりあえずヒントっぽいものを。
他にもいい方法はあるかもしれない。
(multiple-value-bind (s e)
(editor::get-selection-start-end)
(save-excursion
(string-rectangle
(progn (goto-char s) (goto-bol) (point))
(progn (goto-char e) (goto-bol) (point))
"\t")))
>>853 こういうこと?
(defun foo ()
(interactive "*p")
(let ((indent-tabs-mode t))
(declare (special indent-tabs-mode))
(shift-selection)))
>>853 自分は shift-selection の定義をぱくってこんなの書いてある。
メール書くときは欠かせないけど、まぁどっかにありそう。
;;.. selection-keyamp を初期化
(setq-default ed::selection-keymap (make-sparse-keymap))
;;.. quote-selection
(defun quote-selection ()
(interactive "*p")
(if (pre-selection-p)
(let ((type (get-selection-type))
opoint)
(selection-start-end (start end)
(save-restriction
(narrow-to-region start end)
(quote-region start end)
(save-excursion
(goto-char (point-min))
(start-selection type t (point-max))
(fix-selection-point)
))))))
857 :
856 :2006/05/09(火) 02:45:50 ID:nh03iNBF
;;... select 中の >, | は quotation (defun quote->-selection () (interactive "*p") (let ((*quotation-prefix* "> ")) (quote-selection))) (defun quote-bar-selection () (interactive "*p") (let ((*quotation-prefix* "| ")) (quote-selection))) (define-key ed::selection-keymap #\> 'quote->-selection) (define-key ed::selection-keymap #\| 'quote-bar-selection)
>>852 見る関数は next-line と next-line-1 だけだよ。
でもこれはちょっと分かりにくいかも。
とりあえず、挙動を知っている関数の定義を読んでいけば、
自然と理解できるはず。 info-modoki-mode とかの支援は
必須だけどね。
読んでいくついでに、関数リファレンスに補足していって
くれると、こちらとしても大助かりです。
append-next-killしたときに、 "If the next command is a kill, it will append" とか出てほしいのですが、 (defun my-append-next-kill () (hoge)) とかやるしかないですか?
>>859 (defun append-next-kill ()
(interactive)
(message "If the next command is a kill, it will append")
(setq *last-command* 'ed::kill-region)
(setq *this-command* 'ed::kill-region))
上書きしちゃうということですね。 わかりました。どうもありがとうございます。
862 :
1/2 :2006/05/10(水) 23:25:24 ID:Y3GWLqem
>>853 >>856 のを参考にしながら作ってみました。
Tab で冒頭にタブが入り、Shift + Tab で冒頭のタブが削除されます。
セレクションのキーマップになにか設定してあるようであれば
キーバインドのところは適時変更してください。
;;■ 範囲選択中にタブが押されたら冒頭にタブを挿入
(defun perform-replace-selection (pattern replacement query regexp interactive-p noerror)
"選択範囲内を perform-replace"
(interactive "*p")
(let ((type (get-selection-type)))
(selection-start-end (start end)
(save-restriction
(narrow-to-region start end) (goto-char (point-min))
(perform-replace pattern replacement query regexp interactive-p noerror)
(save-excursion
(goto-char (point-min))
(start-selection type t (point-max))
(fix-selection-point)
)))))
863 :
2/2 :2006/05/10(水) 23:26:59 ID:Y3GWLqem
(defun tabshift-selection () "冒頭にタブを挿入" (interactive "*p") (perform-replace-selection "^.+$" "\t\\0" nil t nil t)) (defun untabshift-selection () "冒頭のタブを1つ削除(タブがなければ何もしない)" (interactive "*p") (perform-replace-selection "^\t" "" nil t nil t)) ;;キーバインド (setq-default ed::selection-keymap (make-sparse-keymap)) (define-key ed::selection-keymap #\TAB 'tabshift-selection) (define-key ed::selection-keymap #\S-F15 'untabshift-selection) (set-extended-key-translate-table exkey-S-tab #\S-F15)
GJ!
complete but not uniqueていゆうのは? ネタかぶてるよってこと?
>>865 補完はできたけど、それが唯一の候補じゃない。
例えば、M-x split-win まで入力してTABを押すとsplit-windowが出てくるけど
他にもsplit-window-verticallyってコマンドもあって…あーごめん上手く説明できない。
>866 つまり補完候補と一致したけど,その状態でも更に補完候補があるよって感じ?
869 :
803 :2006/05/17(水) 23:52:11 ID:kobx6VgB
GW風邪引いて倒れてますた^^; 仕事がちょいと忙しいので、 待ってる人いたら気長にお待ちください。 忘れたころにまた現れるやも
うむ 適度にガンバレ
872 :
名無し~3.EXE :2006/05/19(金) 21:52:26 ID:S3EsA3jL
grepの結果を毎回別のバッファに出力するようにするにはどのようにすればよいでしょうか?
873 :
名無し~3.EXE :2006/05/19(金) 22:59:35 ID:S3EsA3jL
自己レス grepd.lの195行目を (let ((buffer (get-buffer-create "*grep*"))) ↓ (let ((buffer (create-new-buffer "*grep*"))) としようとしましたが、使い勝手的には (let ((buffer (get-buffer-create (concat "*grep*" pattern)))) の方がいいのかな? もっとスマートなやり方が在れば教えてください
>>873 それの応用で秀丸みたいに別ウィンドウを開いてとかできたらいいんだけど…
>>872 つ xyzzyの使い方が分からぬやし 励ましあえ その7/164-165
>>874 > それの応用で秀丸みたいに別ウィンドウを開いてとかできたらいいんだけど…
スマートにはいかないが、できなくはない。
(defun my-grep-dialog ()
(interactive)
(let ((win (current-window-configuration)))
(grep-dialog)
(let ((file (make-temp-file-name)))
(write-region (point-min) (point-max) file)
(call-process (format nil "~A ~A -e \"(progn (cd \\\"~A\\\") (setup-temp-buffer (selected-buffer)) (rename-buffer \\\"*grep*\\\" (selected-buffer)))\""
(merge-pathnames "xyzzy.exe" (si:system-root))
file
(default-directory)))
(delete-buffer (selected-buffer))
(set-window-configuration win))))
set-extended-key-translate-tableを駆使すればC-S-jとかにバインド出来ますか?
>>877 こんなふうにすればできます
(require "wip/winapi")
(c:define-dll-entry c:short GetKeyState (c:int) "user32")
(global-set-key #\C-j
(lambda ()
(interactive)
(call-interactively
(if (minusp (GetKeyState #x10))
'foo
'bar))))
>878 すごいです。どうもありがとうございました。
880 :
874 :2006/05/20(土) 17:19:48 ID:gwYB1jZC
>>876 (゚Д゚)スゴー
ありがとうございました!
dat落ち?
(1 2 3 4 5)みたいなリストから(1 2 3)を取り出したいんですけど、 (reverse (nthcdr 2 (reverse '(1 2 3 4 5)))) これよりもかっこいいやり方がありそうな気がします。 よろしければご教示いただけますでしょうか。
last butlast
>883 なるほど。ありがとうございます。 (butlast foo (- (length foo) n)) これで最初からn個が取り出せました。
>>884 butlastの定義を見ると
>>882 とやってることは同じだったり
nbutlastのやり方だとこんな
(let ((x '(1 2 3 4 5))
(n 3))
(setf (cdr (nthcdr (1- n) x)) nil)
x)
→(1 2 3)
subseq使えば?
>886 これはそのものずばりですね。ありがとうございました。
テキストを暗号化して使うことはxyzzyで出来ますか? 外部アプリと連携でもいいので、できるととても嬉しいのですが 具体的にしたいことを述べますと以下の通りです "himitsu-mode"のようなモードを作り そのモードではファイルを保存すると 元のファイルが"hoge.txt"だった場合、"hoge.txt.himitsu"で保存され "*.himitsu"作成時にパスワードが要求される そんで、そのファイルをそのパスワードを使って暗号化する 2回目以降はパスワードを要求されない "*.himitsu"のファイルを開く時はパスワード入力が促され 正しければ複合化して通常のファイルの用に扱える ただし、"himitsu-mode"でこの場合は開き、保存時にパスワードを聞かれない パスワードが誤っていれば何も開かない 以上です。 既存の方法でこのような事はできるんでしょうか?
>>888 *before-save-buffer-hook* と *before-find-file-hook* を使えばできそうな気がする
890 :
889 :2006/05/24(水) 10:55:07 ID:ZQrV0/m8
あったらいいなと思ったことはあるんで、とりあえずテンプレ書いてみました。 これだけの機能ならモードにする必然性はないような。 (add-hook '*before-save-buffer-hook* 'himitsu-save-buffer) (let ((flag nil)) (defun toggle-himitsu-mode () (interactive) (setq flag (null flag)) (if (interactive-p) (message (format nil "Himitsu mode ~~Aabled.") (if flag "en" "dis")))) (defun himitsu-save-buffer () (when flag ;; ここに暗号化して保存するコードを書く t)) ) (add-hook '*before-find-file-hook* (lambda (filename) (when (string-matchp "\\.himitsu$" filename) (himitsu-find-file filename)))) (defun himitsu-find-file (filename) ;; ここに復号して開くコードを書く t)
891 :
889 :2006/05/24(水) 13:24:10 ID:ZQrV0/m8
なんかいまいち…… こんなふうにした方がいいのかな (add-hook '*before-save-buffer-hook* (lambda () (when (buffer-needs-encryption-p) (save-buffer-with-encryption)))) (add-hook '*before-find-file-hook* (lambda (filename) (when (file-encrypted-p filename) (find-file-with-decryption filename)))) それともモードにする必要あります?
>>888 パスワード渡してそれを元に本文を暗号化するみたいな、
都合のいいアプリなりルーチンがありそうでないだろw
だいたいパスワードを元にって何暗号を想定してるんだ?独自実装ならまだ簡単だよな。
文書ごとにパスワードがあるんじゃパスワード管理も大変だし。
出来るかできないかでいえばできるが、かなり手間かかる。
現在開いているバッファから、特定の文字列を名前に含むものを拾っていきたいと思っています。 あるバッファの名前にその文字列が含まれているかどうか、次のようにして調べることができたのですが、 (string-match "foobar" (buffer-name (car (buffer-list)))) これ以外のやり方ってありますか?
ごめんなさい。やっぱいいです。
>>890-891 これって自動セーブのファイルとかバックアップファイルとかそのへんも暗号化されるの?
>>889-891 ありがとうございます。
モードにする必要はないので
>>891 ので行きたいのですが
やっぱり暗号化、復号化処理がネックなんですね。
>>892 暗号は「Blowfishってよさそうだな」と思ってます
とはいえ、全く暗号関連方面の流れを知らないので
何か良いのがあれば別ので頼みます
Blowfishはこのサイトが詳しかったです
http://www22.big.or.jp/~qul/program/text/route004.html これ、参考に"都合のいいアプリ"作ろうと頑張ってみましたが
C++書いたことないので挫折中です。ファイルの開け方から調べてます。
パスワードは文書ごとに管理で問題ないと俺は考えてます
1,2個のファイルにまとめるつもりなので。
一括管理する場合への変更はLispでそれ程難しくないのではないかな?
と考えてることも理由の一つです。 Lisp書けませんが。
つまりは、「もうちょっと頑張ってみます。期待はしないでね」という事です
897 :
889 :2006/05/25(木) 08:00:58 ID:uEgHGYf6
>>895 そういえばそうでないとまずそうですね
どうなんだろう、考えてなかった
パスワード管理の問題については保存の際にパスワード情報を文書の中に埋め込むか、
正しいかどうかのチェックはしないで開いてしまう(間違ってると正しく復元されない)
と簡単なのかなあと思ってました。
とりあえず、暇なときに
>>891 の続き考えてみます。
alpacaやEasyPGみたいなのがいいなー。
899 :
889 :2006/05/25(木) 16:43:42 ID:S6CMmplI
902 :
889 :2006/05/26(金) 00:19:57 ID:D89W6fGY
>>900 > blowfishのDLLだったらこれが使えるかも
どうもです。
DLL を差し替えても使えるようにできたらいいかもしんないですね。
ところで、入力されたパスワードを記憶しとくのってどうやりましょう。
すぐに思いつくのは defvar-local した変数に入れるか、
関係する関数を定義するときに let で局所変数を作っといてそれに入れるか、
ぐらいなんですけど。
TrueCryptとか使って暗号ドライブ上で編集したら駄目なの?
904 :
900 :2006/05/26(金) 01:10:35 ID:fE9HxrMB
>>902 > 入力されたパスワードを記憶しとくのってどうやりましょう。
オレもその2択かなぁと思います。
作りやすいのはきっと前者でしょうが、
なんとなく後者の方が安全な気がするので
一応後者を推しておきます。
流れ切って申し訳ありません。 印刷についてなんですが、改ページが入ってはいけないテキストの塊をあらわすコントロールコードってありますか?
ありません。
>>905 そういうのは生データであるテキストでやるべきではない。メタデータで処理するもんだ。
ん、2ch-modeで書けなくなったな
やっぱい書けないの俺だけじゃないのね 対応できた人いたら公開希望
書き込める…?
自分で手入れてるんでdiffでなくてスマソ。 form.l の form-format-post-vars 関数内、 post の format 文字列のケツに &hana=mogera を追加でおっけー。
どうかな?
できました。サンクス
919 :
912 :2006/05/27(土) 23:25:25 ID:KMJCKKFb
ただ、運営見てると bbs.cgi の仕様変更を再検討中っぽいので(今回のはひろゆきの独断)、 近いうちにまた書けなくなる恐れあり。 そんときはそんときってことで。
どこにやればいいのか分からない・・・
書き込みテスト
>>912 サンクス
>>920 C:/Program Files/xyzzy/site-lisp/.../form.l
の
"submit=~A&FROM=~A&mail=~A&MESSAGE=~A&time=~D&bbs=~A"
という行を
"submit=~A&FROM=~A&mail=~A&MESSAGE=~A&time=~D&bbs=~A&hana=mogera"
と変更して
M-x byte-compile-fileで再コンパイル
で、xyzzy再起動すればOK
クッキー食べることが必須になったらどう対処すりゃいいんだろ?
テストだす
te
なぜか書けない
書けてますね。
なんでかなあと思ってたら、再ダンプしてなかったというオチでした。
>>912 ありがとうございます
929 :
912 :2006/05/28(日) 10:05:05 ID:wDSqgIB6
えと、bbs.cgiの再変更終わって今朝配布済みみたい。
ややこしいんだけど、一言で言えば今回は
>>912 の細工してれば問題なさげ。
よかったよかった。
tes
test
test
なんでみんなこのスレで書き込みテストするんだ!ヽ(`Д´)ノ
てすと
tesっと
test
だからここでテストするなって
あんがと。たよりになるのはやっぱここです。
KaMailV3 で pop before smtp する場合、認証設定には何もいらないで すよね? POP3 での取得は成功しているのですけど、SMTP での送信が成功せずに 試行錯誤中です。 なにか助言ありましたら宜しくお願いいたします。
ttp://hie.s64.xrea.com/xyzzy/note2/wiki.cgi?page=Search#p2 にある、
(defun xgrep (pattern directory files)
(interactive "sgrep: \nDdirectory: \nsfiles: " :history0 'search)
(require "grepd")
(let ((ed::*grep-case-fold-search* nil)
(ed::*grep-regexp-search* t)
(ed::*grep-understand-escape-sequences* t)
(ed::*understand-escape-sequences* t)
(ed::*grep-subdir* nil)
(ed::*grep-name-only* nil))
(ed::scan-files pattern (split-string files #\; t " ") directory)))
に、
(ed::*grep-understand-escape-sequences* t)
(ed::*understand-escape-sequences* t)
を追加したんですが、エスケープシーケンスを理解してくれてないようです。
どうしたら理解してもらえるでしょうか。
\\( とかじゃね
>>942 decode-escape-sequence
>>942 (setq pattern (decode-escape-sequence pattern ed::*grep-regexp-search*))
うわ。かぶったorz ついでに探し方を。 まず、scan-filesでlispフォルダをgrepする。 そしたらlisp/grepd.lってファイルでのみ使われてることが分かる。 (ed::*grep-understand-escape-sequences* t) (ed::*understand-escape-sequences* t) を探しあててるんだから、 lisp/grepd.l内で検索をかける。 *understand-escape-sequences*は上の方の定義で2回使われていて、 *grep-understand-escape-sequences*は上の方の定義と grep-dialog-1っていう関数内で使われていることが分かる。 そしたらgrep-dialog-1関数内で*understand-escape-sequences*が どういう風に使われているか見ると良いよ。 駄文・長文スマソ。
今更気づいたが、bbsmenu.html の最後の項目が2ch:Menuの板一覧に現れない /2ch/menu.l の 関数menu-parse-bbsmenu は save-excursion 内の whileループを出たとこに (when (and current board) (push (list current (reverse board) nil) menu) (setq board nil)) が要るのでは。既出も既出の気がするが一応
出来たかな?
てすと
test
(let((result)(i)) (do ((temp 10)(x 1 (1+ x))) ((>= x temp) result) (setq result (append result (list (format nil "~D" x))))) (do ((temp 10)(x 1 (1+ x))) ((>= x temp) result) (do ((temp 10)(y 1 (1+ y))) ((>= y temp) result) (setq result (append result (list (format nil "~D-~D" x y)))))) (do ((temp 10)(x 1 (1+ x))) ((>= x temp) result) (do ((temp 10)(y 1 (1+ y))) ((>= y temp) result) (do ((temp 10)(z 1 (1+ z))) ((>= z temp) result) (setq result (append result (list (format nil "~D-~D-~D" x y z)))))))) これをもう少し賢く書く方法ないですか
>>954 何をしたいのかよく分かんね。
Cのfor文ネストみたいな繰り返し処理を行って、結果をリストに出力?
- 1だけ足したいならdotimesでいいんじゃね?
- リスト要素の追加はappendで後ろに足すより、consで前に足して
最後にnreverseで逆転させるほうが綺麗じゃね?
ってな訳で、ここまで短くした。
(let (result)
(dotimes (x 9)
(setq result (cons (format nil "~D" (1+ x)) result)))
(dotimes (x 9)
(dotimes (y 9)
(setq result (cons (format nil "~D-~D" (1+ x) (1+ y)) result))))
(dotimes (x 9)
(dotimes (y 9)
(dotimes (z 9)
(setq result (cons (format nil "~D-~D-~D" (1+ x) (1+ y) (1+ z)) result)))))
(nreverse result))
再帰で副作用を使わずにやりたかったけど、うまく作れなかったので断念。
ありがとうございます dotimesで1足せばよかったのか〜
自分は自然に書くと
>>955 のをsetq+consから
(push (format nil "~D" (1+ x)) result)
に変えたものになると思う。
こういうリスト処理はpushした後nreverseするのが定石。
バイトコンパイルすりゃappendよか速い。
あるいはdotimes書くの嫌がって適当に追加したあと自前の比較関数でソートするかも
(let (result)
(dotimes (x 9)
(push (format nil "~D" (1+ x)) result)
(dotimes (y 9)
(push (format nil "~D-~D" (1+ x) (1+ y)) result)
(dotimes (z 9)
(push (format nil "~D-~D-~D" (1+ x) (1+ y) (1+ z)) result))))
(sort result #'(lambda (a b)
(if (<= (length a)
(length b))
(string-lessp a b)))))
速さまで考えてくれるとは、4桁にするとずいぶん差がでますね 涙でそうです
>944 >945 どうもありがとうございました。勉強になります。
>>954 思いつきで別解を書いてみた
短いってだけで応用できる場面ほとんどなさそうだけど
(let (result)
(dotimes (x 1000 (nreverse result))
(let ((y (coerce (format nil "~D" x) 'list)))
(unless (find #\0 y)
(push (format nil "~{~A~^-~}" y) result)))))
新スレ立ててきます
>>955 再帰で作ってみたよ
(defun foo (cnt &optional x)
(if (zerop cnt)
x
(foo (1- cnt) (nreverse (let (r)
(dotimes (i 9)
(push (format nil "~D" (1+ i)) r))
(when x
(dolist (j x)
(dotimes (i 9)
(push (format nil "~A-~D" j (1+ i)) r))))
r)))))
1回分しかかいてないけど、何となく自分ならこっちかも。 (let (result) (do ((x 1 (1+ x))) ((> x 9)) (push (format nil "~D" x) result)) (nreverse result))
>>963 (foo 10) は無謀だったw
初めてPC 使い切った感じがした
966 :
955 :2006/05/31(水) 22:27:02 ID:vQeHQ5p2
埋めついでに再帰版を書いたよ。
本当は昨日書いてたんだけど、会社の先輩に見つかって怒られて
凹んだついでに消しちゃったのは内緒だ。
ちなみに、単に再帰で書いているってだけで、
他に応用できないし、他の解より速くなる当ても無い。
最後のnconcをなんとか無くせないものか。
(defun foo (n &optional (x 9) l1 tmp)
(labels ((inloop1 (n &optional (prefix "") result)
(if (= n 0)
result
(inloop1 (1- n) prefix (cons (format nil "~A~D" prefix n) result)))))
(cond
((<= n 0) l1)
((null l1) (let ((a (inloop1 x)))
(foo (1- n) x a a)))
(t (let ((b (mapcan #'(lambda (s)
(inloop1 x (format nil "~A-" s)))
tmp)))
(foo (1- n) x (nconc l1 b) b))))))
(foo 3)で、
>>954 と同じ評価結果になる。
会社で先輩に見つからないようになる拡張lisp書いちゃいなよYOU!
埋めるためにリスト遊びでもやる? (a b c d)な普通の純リストを ((((nil . a) . b) . c) . d)なCARでつなげるリストへ 変換してください。 ↓
ほい (defun foo (list) (reduce (lambda (a b) (cons a b)) list :initial-value nil)) (foo '(a b c d)) => ((((nil . a) . b) . c) . d)
lambda 使う必要なかった…… (defun foo (list) (reduce 'cons list :initial-value nil))
男なら黙って再帰 (defun foo (list) (labels ((rec (a b) (if a (rec (cdr a) (cons b (car a))) b))) (rec list nil))) xyzzyだと再帰よりdolistのが速かったような記憶。 なんかつまらんコードになって申し訳ない (defun foo (list) (let (result) (dolist (x list result) (setq result (cons result x)))))
(a b c d e f g)リストをn個のリストにするにはどうしたら、よいでしょうか (foo list 2)なら =>((a b)(c d)(e f)(g)) 3なら =>((a b c)(d e f)(g))
>>973 ありがとうございました
HTMLになってたんですね 知らなかった
適当に埋めないとまたdat落ちになるんじゃない?
書き込めないよママン!!
979 :
名無し~3.EXE :2006/06/03(土) 22:08:48 ID:G7MNPt/I
埋
test
書き込みテスト用スレってWindows板にはないのか? 埋め
さっ
適当にテスト件埋め
埋め
埋め
この板って、980過ぎても落ちないんだっけ?
うめ
900
901
うめえ
梅
ど根性ガエルの寿司屋
(´・ω・`)しらんがな
996なら亀のアイコンを変更する
997なら木村カエラと結婚
998 なら 9x9=81
null
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。