Initial release of Maemo 5 port of gnuplot
[gnuplot] / lisp / gnuplot.el.old
diff --git a/lisp/gnuplot.el.old b/lisp/gnuplot.el.old
new file mode 100644 (file)
index 0000000..c8f15b1
--- /dev/null
@@ -0,0 +1,150 @@
+;;
+;; $Id: gnuplot.el.old,v 1.1 1999/03/23 13:21:33 lhecking Exp $
+;;
+;;
+; 
+; gnu-plot.el - Definitions of GNU-PLOT mode for emacs editor.
+; 
+; Author:      Gershon Elber
+;              Computer Science Dept.
+;              University of Utah
+; Date:        Tue May 14 1991
+; Copyright (c) 1991, 1992, Gershon Elber
+;
+; This file defines an environment to run edit and execute GNU-PLOT programs.
+; Such a program should have a '.gp' extension in order it to be in
+; gnu-plot-mode major mode. Two new functions are provided to communicate
+; between the editted file and the plotting program:
+; 1. send-line-to-gnu-plot - sends a single line to the plotting program for
+;    execution. The line sent is the line the cursor is on,
+;    Bounded to Meta-E by default.
+; 2. send-region-to-gnu-plot - sends the region from the current mark
+;    (mark-marker) to current position (point-marker) to the plotting program.
+;    This function is convenient for sending a large block of commands.
+;    Bounded to Meta-R by default.
+; Both functions checks for existance of a buffer named gnu-plot-program
+; and a process named "gnu-plot" hooked to it, and will restart a new process
+; or buffer if none exists. The program to execute as process "gnu-plot" is
+; defined by the gnu-plot-program constant below.
+;
+
+(defvar gnu-plot-program "gnuplot"
+  "*The executable to run for gnu-plot-program buffer.")
+
+(defvar gnu-plot-echo-program t
+  "*Control echo of executed commands to gnu-plot-program buffer.")
+
+(defvar gnu-plot-mode-map nil "")
+(if gnu-plot-mode-map
+    ()
+  (setq gnu-plot-mode-map (make-sparse-keymap))
+  (define-key gnu-plot-mode-map "\M-e" 'send-line-to-gnu-plot)
+  (define-key gnu-plot-mode-map "\M-r" 'send-region-to-gnu-plot))
+
+;;;
+;;; Define the gnu-plot-mode
+;;;
+(defun gnu-plot-mode ()
+  "Major mode for editing and executing GNU-PLOT files.
+
+see send-line-to-gnu-plot and send-region-to-gnu-plot for more."
+  (interactive)
+  (use-local-map gnu-plot-mode-map)
+  (setq major-mode 'gnu-plot-mode)
+  (setq mode-name "Gnu-Plot")
+  (run-hooks 'gnu-plot-mode-hook))
+
+;;;
+;;; Define send-line-to-gnu-plot - send from current cursor position to next
+;;; semicolin detected.
+;;;
+(defun send-line-to-gnu-plot ()
+  "Sends one line of code from current buffer to the GNU-PLOT program.
+
+Use to execute a line in the GNU-PLOT plotting program. The line sent is
+the line the cursor (point) is on.
+
+The GNU-PLOT plotting program buffer name is gnu-plot-program and the 
+process name is 'gnu-plot'. If none exists, a new one is created.
+
+The name of the gnu-plot program program to execute is stored in
+gnu-plot-program variable and may be changed."
+  (interactive)
+  (if (equal major-mode 'gnu-plot-mode)
+    (progn
+      (make-gnu-plot-buffer)        ; In case we should start a new one.
+      (beginning-of-line)
+      (let ((start-mark (point-marker)))
+       (next-line 1)
+       (let* ((crnt-buffer (buffer-name))
+              (end-mark (point-marker))
+              (string-copy (buffer-substring start-mark end-mark)))
+         (switch-to-buffer-other-window (get-buffer "gnu-plot-program"))
+         (end-of-buffer)
+         (if gnu-plot-echo-program
+           (insert string-copy))
+         (set-marker (process-mark (get-process "gnu-plot")) (point-marker))
+         (if (not (pos-visible-in-window-p))
+           (recenter 3))
+         (switch-to-buffer-other-window (get-buffer crnt-buffer))
+         (process-send-region "gnu-plot" start-mark end-mark)
+         (goto-char end-mark))))
+    (message "Should be invoked in gnu-plot-mode only.")))
+
+;;;
+;;; Define send-region-to-gnu-plot - send from current cursor position to
+;;; current marker.
+;;;
+(defun send-region-to-gnu-plot ()
+  "Sends a region of code from current buffer to the GNU-PLOT program.
+
+When this function is invoked on an GNU-PLOT file it send the region
+from current point to current mark to the gnu-plot plotting program.
+
+The GNU-PLOT plotting program buffer name is gnu-plot-program and the
+process name is 'gnu-plot'. If none exists, a new one is created.
+
+The name of the gnu-plot program program to execute is stored in
+gnu-plot-program variable and may be changed."
+  (interactive)
+  (if (equal major-mode 'gnu-plot-mode)
+    (progn
+      (make-gnu-plot-buffer)     ; In case we should start a new one.
+      (copy-region-as-kill (mark-marker) (point-marker))
+      (let ((crnt-buffer (buffer-name)))
+       (switch-to-buffer-other-window (get-buffer "gnu-plot-program"))
+       (end-of-buffer)
+       (if gnu-plot-echo-program
+         (yank))
+       (set-marker (process-mark (get-process "gnu-plot")) (point-marker))
+       (if (not (pos-visible-in-window-p))
+         (recenter 3))
+       (switch-to-buffer-other-window (get-buffer crnt-buffer))
+       (process-send-region "gnu-plot" (mark-marker) (point-marker))))
+    (message "Should be invoked in gnu-plot-mode only.")))
+
+;;;
+;;; Switch to "gnu-plot-program" buffer if exists. If not, creates one and
+;;; execute the program defined by gnu-plot-program.
+;;;
+(defun make-gnu-plot-buffer ()
+  "Switch to gnu-plot-program buffer or create one if none exists"
+  (interactive)
+  (if (get-buffer "gnu-plot-program")
+    (if (not (get-process "gnu-plot"))
+      (progn
+       (message "Starting GNU-PLOT plotting program...")
+       (start-process "gnu-plot" "gnu-plot-program" gnu-plot-program)
+       (process-send-string "gnu-plot" "\n")
+       (message "Done.")))
+    (progn
+      (message "Starting GNU-PLOT plotting program...")
+      (start-process "gnu-plot" "gnu-plot-program" gnu-plot-program)
+      (process-send-string "gnu-plot" "\n")
+      (message "Done."))))
+
+;;;
+;;; Autoload gnu-plot-mode on any file with gp extension. 
+;;;
+(setq auto-mode-alist (append '(("\\.gp$" . gnu-plot-mode))
+                             auto-mode-alist))