;;; -*- Emacs-Lisp -*- ;;; $Id: irex-browse.el,v 3.4 1999/02/13 09:51:15 tsuchiya Exp $ ;; This file is part of IREX tools. ;; Please refer "Copyright file" at the root directory. ;; (C) IREX committee IREX実行委員会. All rights reserved. ;;; 依存関係の宣言 (provide 'irex-browse) (require 'irex-common) (require 'irex-tougou) (require 'irex-list) (require 'irex-article) ;;; 変数の宣言 (defvar irex-judge-current-pid nil "\ irex-browse を実行中は lambda が代入されている") (defvar irex-judge-current-topic_id nil "閲覧中のトピックの TOPIC-ID") (defvar irex-judge-window-configuration nil "irex-browse を実行する直前の Window 分割の状態を保持している変数") (defvar irex-judge-buffer nil "irex-browse による閲覧の対象となっているバッファ") (defvar irex-judge-default-sid nil "*irex-browse による閲覧のデフォルトの対象とする検索システム") (defvar irex-judge-current-sid nil "irex-browse による閲覧の対象となっている検索システム") ;;;---------------------------------------------------------------------- ;;; IREX-BROWSE 本体 ;;;---------------------------------------------------------------------- (defun irex-browse (&optional system-id) "\ カレントバッファの IREX 結果統合ファイルを閲覧するコマンド IREX 結果統合ファイルを開いてから、 M-x irex-browse と実行して下さい。 検索を行なったシステムについての情報を同時に閲覧する場合は、 C-u M-x irex-browse などのように何らかの引数を前置して実行して下さい。 " (interactive (if current-prefix-arg (list (cond ((stringp irex-judge-default-sid) irex-judge-default-sid) ((integerp irex-judge-default-sid) (number-to-string irex-judge-default-sid)) (t (read-from-minibuffer "システム識別番号( SID )を入力して下さい: ")))))) (and (or (not (stringp irex-judge-current-sid)) (yes-or-no-p "irex-browse は既に実行中の可能性がありますが、構わず実行しますか? ")) (or (not (stringp irex-judge-current-pid)) (yes-or-no-p "irex-judge が既に実行中の可能性がありますが、構わず実行しますか? ")) (progn ;; 起動時の Window 分割を記憶しておく (setq irex-judge-window-configuration (current-window-configuration) irex-judge-buffer (current-buffer) irex-judge-current-pid 'lambda irex-judge-current-sid system-id) ;; 対象となるバッファの構文解析を行う -> 失敗した場合は何もしないで終了 (if (setq irex-judge-current-topic_id (irex-tougou-parse-buffer irex-judge-buffer)) (progn (setq buffer-read-only t) (irex-article-make-buffer) (irex-list-make-buffer t) (irex-judge-split-window) (irex-list-redisplay)) (setq irex-judge-current-sid nil))))) (defun irex-browse-exit () "irex-browse を終了する関数" (interactive) (set-buffer irex-judge-buffer) (setq buffer-read-only nil) (irex-article-exit) (irex-list-exit) (irex-tougou-exit) (set-window-configuration irex-judge-window-configuration) (setq irex-judge-current-sid nil irex-judge-current-pid nil irex-judge-current-topic_id nil irex-judge-buffer nil irex-judge-window-configuration nil)) ;;;---------------------------------------------------------------------- ;;; ウインドウ操作関数 ;;;---------------------------------------------------------------------- (defun irex-judge-split-window () "\ irex-judge ツール用にウインドウを分割する関数 記事内容バッファが表示されているウインドウを返す" (delete-other-windows) (split-window-vertically irex-list-window-height) (let ((w1 (selected-window)) (w2 (next-window))) (set-window-buffer w1 (get-buffer irex-list-buffer-name)) (set-window-buffer w2 (get-buffer irex-article-buffer-name)) w2)) (defun irex-judge-split-window-2 () "\ irex-judge ツール用にウインドウを分割する関数 記事内容バッファが表示されているウインドウさらに2分割して下のウインドウを返す" (split-window (irex-judge-split-window)))