;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\207" [require comint shell executable ess-sas-l] 2) #@37 *Arguments to use for starting SAS. (defvar inferior-SAS-args "-stdio -linesize 80 -noovp -nosyntaxcheck" (#$ . -200)) #@97 Hack variable, needed for args preprocessing. Better logic needed! (see 2 uses, in this file). (defvar inferior-SAS-args-temp nil (#$ . 325)) #@48 Set up log and list files for interactive SAS. (defalias 'ess-SAS-pre-run-hook #[(temp-ess-dialect) "\306\307!\310\311\310\n\204 T\312\313 \f\"!?\211\203\313 \f\"*\314 \315Q*\314 \316Q+\317,\310\211-.\310/\320\321\32201\fp%!\210\203Ur\307q\210\323\324\325\")\306*!\204~\326 \210\327\330p!!\210\331\332!\210\333\334!.\335 \210\336 \210\337\325!\210\323*\325\"\210\306+!\204\244\326 \210\327\330p!!\210\331\332!\210\333\334!/\336 \210\340\325!\210\323+\325\"\210\341.\341/\341\260\211-2P3\203\302r q\210\323\307!\210)\342 \210\343 \210\343 \210\344\332\345 8!\210\346\332!\210\344+!\210\343 \210\346\347!\210\344*!\210\346\332!\210\3504!\351P\2115\2116. \207" [ess-shell-buffer-name-flag ess-shell-buffer-name done ntry temp-ess-dialect tmp-procname get-buffer "*shell*" nil 0 get-process ess-proc-name "*" ".lst*" ".log*" "/bin/sh" ess-write-to-dribble-buffer format "(ess-SAS-pre-run-hook 1): ess-lang=%s, ess-dialect=%s, temp-dialect=%s, buf=%s \n" rename-buffer "*ess-shell-regular*" t shell accept-process-output get-buffer-process sleep-for 2 ess-insert-accept "tty" SAS-listing-mode shell-mode ess-listing-minor-mode ess-transcript-minor-mode " " delete-other-windows split-window-vertically switch-to-buffer buffer-list other-window 1 file-name-as-directory "ess-sas-sh-command" ess-sas-lst-bufname ess-sas-log-bufname explicit-shell-file-name inferior-SAS-redirect-args ess-sas-lst ess-sas-log ess-language ess-dialect inferior-SAS-args inferior-SAS-args-temp ess-etc-directory inferior-SAS-program inferior-ess-program] 8 (#$ . 474)]) #@43 Submit command to process, get next line. (defalias 'ess-insert-accept #[(command) "db\210c\210\303 \210\304\305p!!\210\306y\210`\307\210 `{db\210\n*\207" [command beg ess-tty-name comint-send-input accept-process-output get-buffer-process -1 nil] 3 (#$ . 2066) nil]) #@32 Variables to customize for SAS (defvar SAS-customize-alist '((ess-local-customize-alist quote SAS-customize-alist) (ess-language . "SAS") (ess-dialect . "SAS") (ess-mode-editing-alist . SAS-editing-alist) (ess-mode-syntax-table . SAS-syntax-table) (inferior-ess-program . inferior-SAS-program) (ess-help-sec-regex . "^[A-Z. ---]+:$") (ess-help-sec-keys-alist . " ") (ess-object-name-db-file . "ess-sas-namedb.el") (inferior-ess-objects-command . "objects(%d)") (inferior-ess-help-command . "help(\"%s\",pager=\"cat\",window=F)\n") (inferior-ess-exit-command . "endsas;\n") (ess-loop-timeout . 500000) (inferior-ess-primary-prompt . "^") (inferior-ess-secondary-prompt . "^") (comint-use-prompt-regexp . t) (inferior-ess-start-file) (inferior-ess-start-args . inferior-SAS-args-temp)) (#$ . 2344)) #@65 Major mode for editing SAS source. See ess-mode for more help. (defalias 'SAS-mode #[(&optional proc-name) "\306\n\"\210 \2043\307\310 !\311\f!\210 \203\305 \210\n\203#\312 \210 \203+\313 \210\f\2033\314 \210\315 \316\317#\210\320 !\210\321\322!\210\323\324\325\326!\207" [SAS-customize-alist ess-customize-alist proc-name sas-mode-local-map ess-sas-edit-keys-toggle ess-sas-local-unix-keys ess-mode copy-keymap current-local-map ess-sas-edit-keys-set ess-sas-local-pc-keys ess-sas-global-unix-keys ess-sas-global-pc-keys define-key ";" ess-electric-run-semicolon use-local-map make-local-variable font-lock-defaults (SAS-mode-font-lock-defaults nil t) t run-mode-hooks SAS-mode-hook font-lock-keywords-case-fold-search] 4 (#$ . 3147) nil]) (add-to-list 'auto-mode-alist '("\\.[Ss][Aa][Ss]\\'" . SAS-mode)) #@94 Insert character. If the line contains "run;" or "quit;" and nothing else then indent line. (defalias 'ess-electric-run-semicolon #[(arg) "\203\304c\207\305\n\204<l\203<\212\306\305x\210\307v\210\310\311!\205$\306\305x\210n)\203< c\210\312 \210\212 \2037 Tb\210\313\307!\210) \203M\212 b\210\314\315\n!!)\202R\314\315\n!!)\207" [ess-sas-edit-keys-toggle insertpos arg last-command-event ";" nil " " -1 looking-at "run\\|quit" ess-indent-line delete-char self-insert-command prefix-numeric-value] 3 (#$ . 3978) "P"]) #@26 Start SAS from the menu. (defalias 'SAS-menu #[nil "\203\301\302!\207\303 \207" [ess-microsoft-p error "SAS cannot be started this way in ESS on Windows." SAS] 2 (#$ . 4513) nil]) #@33 Call 'SAS', from SAS Institute. (defalias 'SAS #[nil "\305\306\"\210\307\310\311\312\n #!\210\313 !\210\314\315 \210r\316q\210\317\f!*\207" [SAS-customize-alist temp-dialect ess-dialect ess-eval-visibly-p sas-mode-local-map set-default ess-customize-alist "SAS" ess-write-to-dribble-buffer format "(SAS): ess-dial=%s, temp-dial=%s\n" ess-SAS-pre-run-hook nil inferior-ess "*SAS*" use-local-map] 5 (#$ . 4702) nil]) #@398 Put running SAS buffers into separate frames. Load this function M-x load-file essx-sas.el RET. Then find-file myfile.sas. If myfile.sas is already in a buffer, kill-buffer it and then find-file it again. Place the cursor in a myfile.sas buffer. Run SAS with M-x SAS, Return the cursor to the myfile.sas buffer, then enter C-c C-w to put *SAS* *SAS.log* *SAS.lst* buffers into their own frames. (defalias 'ess-multi-frame-SAS #[nil "\300 \210r\301q\210\302 \210)r\303q\210\302 \210)r\304q\210\302 )\207" [delete-other-windows "*SAS*" make-frame "*SAS.log*" "*SAS.lst*"] 1 (#$ . 5127) nil]) (add-hook 'ess-mode-hook #[nil "\301\230\205\n\302\303\304\"\207" [ess-language "SAS" local-set-key "" ess-multi-frame-SAS] 3]) #@60 *If a number, then return that number, otherwise return 0. (defalias 'ess-num-or-zero #[(arg) "\247\203 \206\n\301\207" [arg 0] 1 (#$ . -5857)]) (provide 'ess-sas-d)