home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / bit / listserv / sasl / 3926 < prev    next >
Encoding:
Text File  |  1992-08-27  |  4.1 KB  |  117 lines

  1. Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
  2. Path: sparky!uunet!europa.asd.contel.com!paladin.american.edu!auvm!UNC.BITNET!UNCSM1
  3. Message-ID: <SAS-L%92082713413749@VTVM2.BITNET>
  4. Newsgroups: bit.listserv.sas-l
  5. Date:         Thu, 27 Aug 1992 13:43:00 EDT
  6. Reply-To:     Sally Muller <UNCSM1@UNC.BITNET>
  7. Sender:       "SAS(r) Discussion" <SAS-L@UGA.BITNET>
  8. From:         Sally Muller <UNCSM1@UNC.BITNET>
  9. Subject:      Syntax-Sensitive Editing for SAS Programs
  10. Lines: 105
  11.  
  12. ----------------------------------------------------------------------
  13. SUMMARY:  Mark Riggle's (original OBSERVATION's article)  very nice
  14.           SAS mode for emacs....here are some useful emacs functions
  15.           to go with it.
  16. REL/PLTF: 6.06 MVS/ESA  6.06 VM/XA
  17. E-ADDR:   uncsm1@unc.bitnet
  18. NAME:     Sally Muller
  19. PH/ADDR:  919-962-6501  OIT CB#3455, UNC, Chapel Hill NC 27514
  20. ----------------------------------------------------------------------
  21. Ahhh yes.....the image is getting clearer now....I can almost see
  22. it....yes, yes....
  23.  
  24. Re: Syntax-Sensitive Editing for SAS Programs
  25.  
  26. It is possible to bring up the SAS system in line mode in an emacs
  27. shell and then conviently submit all or part of a file you are
  28. currently editing to run.  This way you work interactively and have
  29. access to emacs sas-mode.  Here are some emacs functions that submit
  30. SAS code.  Typically, the submit functions should be bound to keys.
  31. I hope some of you find this helpful.
  32.  
  33. ;;; Functions for submitting code from emacs to run in SAS line mode.
  34. ;;;
  35. ;;; sas-shell         - creates a new shell named, *shell1*,
  36. ;;;                     *shell2*, *shell3*, ....  Submit functions
  37. ;;;                     assume shell names of this form.
  38. ;;;
  39. ;;; sas-set-shell     - sets the shell to which the submit functions
  40. ;;;                     send SAS code.  By default, this is *shell1*.
  41. ;;;
  42. ;;; sas-set-step      - sets the end of step for sas-submit-step.
  43. ;;;                     By default, submit until run;.*
  44. ;;;
  45. ;;; sas-submit-marked - submits a marked region.
  46. ;;;
  47. ;;; sas-submit-step   - submits a step.  End of step is set with
  48. ;;;                     the sas-set-step function.
  49. ;;;
  50. ;;; sas-submit-rest   - submits the rest of the buffer.
  51. ;;;
  52. ;;; sas-submit-buffer - submits the entire buffer.
  53.  
  54. (defvar sas-runshell      "*shell1*" "default shell for submit functions.")
  55. (defvar sas-submit-step-end "run;.*" "default step end for sas-submit-step")
  56.  
  57. (defun sas-shell ()
  58.   "Create a new shell named, *shell1*, *shell2*, *shell3*, ....
  59. Numbers are reused as they become available."
  60.   (interactive)
  61.   (let ((shell-number 1))
  62.     (while (get-buffer (format "*shell%d*" shell-number))
  63.       (setq shell-number (+ shell-number 1)))
  64.     (shell)
  65.     (rename-buffer (format "*shell%d*" shell-number)))
  66. )
  67.  
  68. (defun sas-set-shell ()
  69.   "Set the shell for submit functions."
  70.   (interactive)
  71.   (setq sas-runshell
  72.      (format "*shell%s*"
  73.        (read-from-minibuffer "Enter shell number: " (substring sas-runshell 6
  74.  7))))
  75.   (switch-to-buffer sas-runshell)
  76. )
  77.  
  78. (defun sas-set-step (hold-string)
  79.   "Set the end of the step for sas-submit-step command."
  80.   (interactive (list (read-from-minibuffer "Enter step boundary: ")))
  81.   (setq sas-submit-step-end hold-string)
  82.   (message sas-submit-step-end)
  83. )
  84.  
  85. (defun sas-submit-marked (beg end)
  86.   "Submit marked region to sas-runshell with SAS %include statement."
  87.   (interactive "r")
  88.   (delete-file "~/.#junk-submit-text")
  89.   (write-region beg end "~/.#junk-submit-text")
  90.   (switch-to-buffer-other-window sas-runshell)
  91.   (process-send-string sas-runshell "%include '~/.#junk-submit-text' /
  92.  source;\n")
  93. )
  94.  
  95. (defun sas-submit-step ()
  96.   "Submit from point through step end to sas-runshell."
  97.   (interactive)
  98.   (push-mark (point))
  99.   (let ((beg (point)))
  100.     (if (re-search-forward sas-submit-step-end (point-max) t)
  101.       (sas-submit-marked beg (point))
  102.       ;else
  103.       (message "Search for end of step failed.")))
  104. )
  105.  
  106. (defun sas-submit-buffer ()
  107.   "Submit this buffer to sas-runshell with SAS %include statement."
  108.   (interactive)
  109.   (sas-submit-marked (point-min) (point-max))
  110. )
  111.  
  112. (defun sas-submit-rest ()
  113.   "Submit from point through the end sas-runshell with SAS %include statement.
  114.   (interactive)
  115.   (sas-submit-marked (point) (point-max))
  116. )
  117.