Archive for 2012年11月|Monthly archive page

newLISP マニュアル v.10.4.5 日本語訳公開

 今回のバージョンアップは、バグ・フィックスがメインな感じ。
 安心して、バージョンアップできます(笑)。

 ということで、マニュアルの日本語訳をアップしました。

 newLISP マニュアル & リファレンス の全訳のリリースで、現在のバージョンは、v.10.4.5 です。

こちらから newlisp_manual-10405 をダウンロードして下さい。

 目次も含め日本語併記にしてあります。
 Lutz氏のご好意によりこちらで見ることもできます。

 いつものように、間違いやおかしな点が有りましたら、こちらの blog までご一報下さい。

 以上、如何でしょうか?

gs:get-selected-text を使ってみる...または、newlisp-edit.lsp の改良

 よく、エディターなどで文字を選択して文字検索をかけると、選択された文字列が文字検索パネルに表示されます。でも、newLISPの統合開発環境 newLISP-GS では、そうなりません。
 newLISPの GUI にそういう機能がないのかというと、あります。それが gs:get-selected-text。今回は、これを使って newlisp-edit.lsp を改造します。
 gs:get-selected-textgs:text-pane などで選択された文字列を取得する関数です。書式は、

(gs:get-selected-text sym-id [sym-action])

 となり、sym-id には gs:text-pane などのシンボル名が入ります。newlisp-edit.lsp では、こんな感じに記述します。

(gs:get-selected-text currentEdit 'selected-text-handler)

 ここで currentEdit は変数で、文字通り編集中の gs:text-pane のシンボル名が入っています。だから、クォート()が付きません。selected-text-handler は選択された文字列を取得するハンドラーで

(define (selected-text-handler id text)
  (when text
    (gs:set-text 'FindTextField (base64-dec text))))

 と定義します。これを newlisp-edit.lsp の適当な所に追加して、後は前述の gs:get-selected-text 文を必要な所に挿入します。挿入する箇所は、関数 findbutton-handler

(define (findbutton-handler)
	(if findDialogOpen 
		(begin
			(gs:request-focus 'FindTextField)
			(gs:select-text 'FindTextField 0)
			(gs:get-selected-text currentEdit 'selected-text-handler)	; ←ここに追加
			)
		(openFindDialog)
	)
)

 と関数 openFindDialog

(define (openFindDialog)
	(gs:dialog 'FindDialog 'TheEditor "Find text" 460 200 nil nil)
		:
	(set 'findDialogOpen true)
	(gs:get-selected-text currentEdit 'selected-text-handler)	; ←ここに追加
)

 と二箇所。
 この変更した newlisp-edit.lsp を使えば、文字列を選択して検索をかけた時、検索パネルの Find の表示がある gs:text-field に選択した文字列が入ります。
 これで newLISP-GS の作業効率が大幅アップ(笑)。

 以上、如何でしょうか?