; ; ingres.el written by M.Toyama, Keio University, Yokohama, Japan ; ; copies and distribution are not restricted ; no warrranties: actually this is my first e-lisp programming! ; (provide 'ingres) (defvar ingres-mode-map nil) (setq ingres-mode-map (make-sparse-keymap)) (define-key ingres-mode-map "\C-c\C-c" 'ingres-execute) (define-key ingres-mode-map "\C-c\C-q" 'ingres-quit) (define-key ingres-mode-map "\C-c\C-e" 'ingres-erase-buffer) (define-key ingres-mode-map "\C-c\C-v" 'ingres-scroll-output-window) (define-key ingres-mode-map "\C-c\C-x" 'ingres-rev-scroll-output-window) (define-key ingres-mode-map "\C-c\C-b" 'ingres-bottom-output-window) (defun ingres (database) (interactive "sSpecify database: ") (delete-other-windows) (pop-to-buffer (get-buffer-create "INGRES -- OUTPUT") nil) (erase-buffer) (pop-to-buffer (get-buffer-create "INGRES -- QUEL") nil) (erase-buffer) (shrink-window (- (window-height) 7)) (use-local-map ingres-mode-map) (start-process "ingres" "INGRES -- OUTPUT" "ingres" database)) (defun ingres-execute () (interactive) (pop-to-buffer (get-buffer "INGRES -- OUTPUT") nil) (goto-char (point-max)) (recenter 1) (pop-to-buffer (get-buffer "INGRES -- QUEL") nil) (goto-char (point-max)) (newline) (delete-blank-lines) (goto-char 1) (save-excursion (if (not (search-forward "\\" (point-max) t)) (progn (goto-char (point-max)) (insert "\\g") (newline) (message "\\g missing: inserted") (beep)))) (process-send-region "ingres" 1 (point-max))) (defun ingres-quit () (interactive) (pop-to-buffer (get-buffer "INGRES -- QUEL") nil) (erase-buffer) (insert "\\q") (ingres-execute) (delete-window) (kill-buffer "INGRES -- QUEL") (kill-buffer "INGRES -- OUTPUT")) (defun ingres-erase-buffer () (interactive) (erase-buffer)) (defun ingres-scroll-output-window () (interactive) (pop-to-buffer (get-buffer "INGRES -- QUEL") nil) (scroll-other-window)) (defun ingres-rev-scroll-output-window () (interactive) (pop-to-buffer (get-buffer "INGRES -- OUTPUT") nil) (scroll-down) (pop-to-buffer (get-buffer "INGRES -- QUEL") nil)) (defun ingres-bottom-output-window () (interactive) (pop-to-buffer (get-buffer "INGRES -- OUTPUT") nil) (goto-char (point-max)) (recenter (- (window-height) 2)) (pop-to-buffer (get-buffer "INGRES -- QUEL") nil))