[BACK]Return to gnuplot.el CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gnuplot

Annotation of OpenXM_contrib/gnuplot/gnuplot.el, Revision 1.1

1.1     ! maekawa     1: ;;
        !             2: ;; $Id: gnuplot.el,v 1.4 1993/09/27 17:08:18 alex Exp $
        !             3: ;;
        !             4: ;;
        !             5: ;
        !             6: ; gnu-plot.el - Definitions of GNU-PLOT mode for emacs editor.
        !             7: ;
        !             8: ; Author:      Gershon Elber
        !             9: ;              Computer Science Dept.
        !            10: ;              University of Utah
        !            11: ; Date:        Tue May 14 1991
        !            12: ; Copyright (c) 1991, 1992, Gershon Elber
        !            13: ;
        !            14: ; This file defines an environment to run edit and execute GNU-PLOT programs.
        !            15: ; Such a program should have a '.gp' extension in order it to be in
        !            16: ; gnu-plot-mode major mode. Two new functions are provided to communicate
        !            17: ; between the editted file and the plotting program:
        !            18: ; 1. send-line-to-gnu-plot - sends a single line to the plotting program for
        !            19: ;    execution. The line sent is the line the cursor is on,
        !            20: ;    Bounded to Meta-E by default.
        !            21: ; 2. send-region-to-gnu-plot - sends the region from the current mark
        !            22: ;    (mark-marker) to current position (point-marker) to the plotting program.
        !            23: ;    This function is convenient for sending a large block of commands.
        !            24: ;    Bounded to Meta-R by default.
        !            25: ; Both functions checks for existance of a buffer named gnu-plot-program
        !            26: ; and a process named "gnu-plot" hooked to it, and will restart a new process
        !            27: ; or buffer if none exists. The program to execute as process "gnu-plot" is
        !            28: ; defined by the gnu-plot-program constant below.
        !            29: ;
        !            30:
        !            31: (defvar gnu-plot-program "gnuplot"
        !            32:   "*The executable to run for gnu-plot-program buffer.")
        !            33:
        !            34: (defvar gnu-plot-echo-program t
        !            35:   "*Control echo of executed commands to gnu-plot-program buffer.")
        !            36:
        !            37: (defvar gnu-plot-mode-map nil "")
        !            38: (if gnu-plot-mode-map
        !            39:     ()
        !            40:   (setq gnu-plot-mode-map (make-sparse-keymap))
        !            41:   (define-key gnu-plot-mode-map "\M-e" 'send-line-to-gnu-plot)
        !            42:   (define-key gnu-plot-mode-map "\M-r" 'send-region-to-gnu-plot))
        !            43:
        !            44: ;;;
        !            45: ;;; Define the gnu-plot-mode
        !            46: ;;;
        !            47: (defun gnu-plot-mode ()
        !            48:   "Major mode for editing and executing GNU-PLOT files.
        !            49:
        !            50: see send-line-to-gnu-plot and send-region-to-gnu-plot for more."
        !            51:   (interactive)
        !            52:   (use-local-map gnu-plot-mode-map)
        !            53:   (setq major-mode 'gnu-plot-mode)
        !            54:   (setq mode-name "Gnu-Plot")
        !            55:   (run-hooks 'gnu-plot-mode-hook))
        !            56:
        !            57: ;;;
        !            58: ;;; Define send-line-to-gnu-plot - send from current cursor position to next
        !            59: ;;; semicolin detected.
        !            60: ;;;
        !            61: (defun send-line-to-gnu-plot ()
        !            62:   "Sends one line of code from current buffer to the GNU-PLOT program.
        !            63:
        !            64: Use to execute a line in the GNU-PLOT plotting program. The line sent is
        !            65: the line the cursor (point) is on.
        !            66:
        !            67: The GNU-PLOT plotting program buffer name is gnu-plot-program and the
        !            68: process name is 'gnu-plot'. If none exists, a new one is created.
        !            69:
        !            70: The name of the gnu-plot program program to execute is stored in
        !            71: gnu-plot-program variable and may be changed."
        !            72:   (interactive)
        !            73:   (if (equal major-mode 'gnu-plot-mode)
        !            74:     (progn
        !            75:       (make-gnu-plot-buffer)        ; In case we should start a new one.
        !            76:       (beginning-of-line)
        !            77:       (let ((start-mark (point-marker)))
        !            78:        (next-line 1)
        !            79:        (let* ((crnt-buffer (buffer-name))
        !            80:               (end-mark (point-marker))
        !            81:               (string-copy (buffer-substring start-mark end-mark)))
        !            82:          (switch-to-buffer-other-window (get-buffer "gnu-plot-program"))
        !            83:          (end-of-buffer)
        !            84:          (if gnu-plot-echo-program
        !            85:            (insert string-copy))
        !            86:          (set-marker (process-mark (get-process "gnu-plot")) (point-marker))
        !            87:          (if (not (pos-visible-in-window-p))
        !            88:            (recenter 3))
        !            89:          (switch-to-buffer-other-window (get-buffer crnt-buffer))
        !            90:          (process-send-region "gnu-plot" start-mark end-mark)
        !            91:          (goto-char end-mark))))
        !            92:     (message "Should be invoked in gnu-plot-mode only.")))
        !            93:
        !            94: ;;;
        !            95: ;;; Define send-region-to-gnu-plot - send from current cursor position to
        !            96: ;;; current marker.
        !            97: ;;;
        !            98: (defun send-region-to-gnu-plot ()
        !            99:   "Sends a region of code from current buffer to the GNU-PLOT program.
        !           100:
        !           101: When this function is invoked on an GNU-PLOT file it send the region
        !           102: from current point to current mark to the gnu-plot plotting program.
        !           103:
        !           104: The GNU-PLOT plotting program buffer name is gnu-plot-program and the
        !           105: process name is 'gnu-plot'. If none exists, a new one is created.
        !           106:
        !           107: The name of the gnu-plot program program to execute is stored in
        !           108: gnu-plot-program variable and may be changed."
        !           109:   (interactive)
        !           110:   (if (equal major-mode 'gnu-plot-mode)
        !           111:     (progn
        !           112:       (make-gnu-plot-buffer)     ; In case we should start a new one.
        !           113:       (copy-region-as-kill (mark-marker) (point-marker))
        !           114:       (let ((crnt-buffer (buffer-name)))
        !           115:        (switch-to-buffer-other-window (get-buffer "gnu-plot-program"))
        !           116:        (end-of-buffer)
        !           117:        (if gnu-plot-echo-program
        !           118:          (yank))
        !           119:        (set-marker (process-mark (get-process "gnu-plot")) (point-marker))
        !           120:        (if (not (pos-visible-in-window-p))
        !           121:          (recenter 3))
        !           122:        (switch-to-buffer-other-window (get-buffer crnt-buffer))
        !           123:        (process-send-region "gnu-plot" (mark-marker) (point-marker))))
        !           124:     (message "Should be invoked in gnu-plot-mode only.")))
        !           125:
        !           126: ;;;
        !           127: ;;; Switch to "gnu-plot-program" buffer if exists. If not, creates one and
        !           128: ;;; execute the program defined by gnu-plot-program.
        !           129: ;;;
        !           130: (defun make-gnu-plot-buffer ()
        !           131:   "Switch to gnu-plot-program buffer or create one if none exists"
        !           132:   (interactive)
        !           133:   (if (get-buffer "gnu-plot-program")
        !           134:     (if (not (get-process "gnu-plot"))
        !           135:       (progn
        !           136:        (message "Starting GNU-PLOT plotting program...")
        !           137:        (start-process "gnu-plot" "gnu-plot-program" gnu-plot-program)
        !           138:        (process-send-string "gnu-plot" "\n")
        !           139:        (message "Done.")))
        !           140:     (progn
        !           141:       (message "Starting GNU-PLOT plotting program...")
        !           142:       (start-process "gnu-plot" "gnu-plot-program" gnu-plot-program)
        !           143:       (process-send-string "gnu-plot" "\n")
        !           144:       (message "Done."))))
        !           145:
        !           146: ;;;
        !           147: ;;; Autoload gnu-plot-mode on any file with gp extension.
        !           148: ;;;
        !           149: (setq auto-mode-alist (append '(("\\.gp$" . gnu-plot-mode))
        !           150:                              auto-mode-alist))

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>