;ELC ;;; compiled by kwzh@hal.gnu.ai.mit.edu on Tue Aug 2 22:18:14 1994 ;;; from file /gd/gnu/emacs/19.0/lisp/sh-script.el ;;; emacs version 19.25.91.2. ;;; bytecomp version FSF 2.10 ;;; optimization is on. ;;; this file uses opcodes which do not exist in Emacs 18. (if (and (boundp 'emacs-version) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19"))) (error "`/gd/gnu/emacs/19.0/lisp/sh-script.el' was compiled for Emacs 19")) (byte-code "\nBBÇ" [("/bin/" . sh-or-other-mode) ("\\.sh$\\|\\.shar$\\|/\\.\\(profile\\|bash_profile\\|login\\|bash_login\\|logout\\|bash_logout\\|bashrc\\|t?cshrc\\|xinitrc\\|startxrc\\|xsession\\)$" . sh-mode) auto-mode-alist nil] 3) (defvar sh-mode-syntax-table (byte-code "  # # # # # # # # # # # # # )" [copy-syntax-table table modify-syntax-entry 35 "<" 12 ">#" 10 34 "\"\"" 39 "\"'" 96 "$`" 36 "_" 33 37 58 46 94 126] 4) "\ Syntax table in use in Shell-Script mode.") (defvar sh-use-prefix nil "\ If non-nil when loading, `$' and `<' will be C-c $ and C-c < .") (defvar sh-mode-map (byte-code "  # # # # # # # # >Ԃ?# # # YۂZ# # # # # # # # $ $ $ # $ $ $ $ !B# # # @# AB# CD# EF# GH# )" [make-sparse-keymap map define-key "(" sh-function "" sh-while "" sh-until "" sh-select "\f" sh-indexed-loop " " sh-if "" sh-for "" sh-case sh-use-prefix "$" "$" sh-query-for-variable "=" sh-assignment "+" sh-add "<" "<" sh-maybe-here-document "(" pair-insert-maybe "{" "[" "'" "`" "\"" " " sh-indent-line substitute-key-definition complete-tag comint-dynamic-complete-filename current-global-map newline-and-indent sh-newline-and-indent delete-backward-char backward-delete-char-untabify ":" sh-set-shell beginning-of-defun sh-beginning-of-compound-command backward-sentence sh-beginning-of-command forward-sentence sh-end-of-command manual-entry sh-manual-entry [menu-bar insert] "Insert" [menu-bar insert sh-while] ("While loop" . sh-while) [menu-bar insert sh-until] ("Until loop" . sh-until) [menu-bar insert sh-select] ("Select statement" . sh-select) [menu-bar insert sh-indexed-loop] ("Indexed loop" . sh-indexed-loop) [menu-bar insert sh-if] ("If statement" . sh-if) [menu-bar insert sh-for] ("For loop" . sh-for) [menu-bar insert sh-case] ("Case statement" . sh-case)] 6) "\ Keymap used in Shell-Script mode.") (defvar sh-find-file-modifies t "\ *What to do when newly found file has no magic number: nil do nothing t insert magic number other insert magic number, but mark as unmodified.") (defvar sh-query-for-magic t "\ *If non-nil, ask user before changing or inserting magic number.") (defvar sh-magicless-file-regexp "/\\.[^/]+$" "\ *On files with this kind of name no magic is inserted or changed.") (defvar magic-number-alist (quote (("L\\|ELF" . hexl-mode) ("#!.*perl" . perl-mode))) "\ A regexp to match the magic number of a found file. Currently this is only used by function `sh-or-other-mode'.") (defvar sh-executable ".* is \\([^ ]*\\)\n" "\ *Regexp to match the output of sh builtin `type' command on your machine. The regexp must match the whole output, and must contain a \\(something\\) construct which matches the actual executable.") (defvar sh-chmod-argument "+x" "\ *After saving, if the file is not executable, set this mode. The mode can be absolute, such as \"777\", or relative, such as \"+x\". Do nothing if this is nil.") (defvar sh-shell-path (byte-code "!‡" [getenv "SHELL" "/bin/sh"] 2) "\ *The executable of the shell being programmed.") (defvar sh-shell-argument nil "\ *A single argument for the magic number, or nil.") (defvar sh-shell nil "\ The shell being programmed. This is set by \\[sh-set-shell].") (defvar sh-shell-is-csh nil "\ The shell being programmed. This is set by \\[sh-set-shell].") (defvar sh-tab-width 4 "\ The default value for `tab-width' in Shell-Script mode. This is the width of tab stops after the indentation of the preceeding line.") (defvar sh-remember-variable-min 3 "\ *Don't remember variables less than this length for completing reads.") (defvar sh-beginning-of-command "\\([;({`|&]\\|^\\)[ ]*\\([/~:a-zA-Z0-9]\\)" "\ *Regexp to determine the beginning of a shell command. The actual command starts at the beginning of the second \\(grouping\\).") (defvar sh-end-of-command "\\([/~:a-zA-Z0-9]\\)[ ]*\\([;#)}`|&]\\|$\\)" "\ *Regexp to determine the end of a shell command. The actual command ends at the end of the first \\(grouping\\).") (defvar sh-assignment-space (quote (csh tcsh)) "\ List of shells that allow spaces around the assignment =.") (defvar sh-here-document-word "+" "\ Word to delimit here documents.") (defvar sh-variables (quote (("addsuffix" tcsh) ("allow_null_glob_expansion" bash) ("ampm" tcsh) ("argv" csh tcsh) ("autocorrect" tcsh) ("autoexpand" tcsh) ("autolist" tcsh) ("autologout" tcsh) ("auto_resume" bash) ("BASH" bash) ("BASH_VERSION" bash) ("cdable_vars" bash) ("cdpath" csh tcsh) ("CDPATH" sh ksh bash) ("chase_symlinks" tcsh) ("child" csh tcsh) ("COLUMNS" ksh tcsh) ("correct" tcsh) ("dextract" tcsh) ("echo" csh tcsh) ("edit" tcsh) ("EDITOR") ("el" tcsh) ("ENV" ksh bash) ("ERRNO" ksh) ("EUID" bash) ("FCEDIT" ksh bash) ("FIGNORE" bash) ("fignore" tcsh) ("FPATH" ksh) ("gid" tcsh) ("glob_dot_filenames" bash) ("histchars" bash csh tcsh) ("HISTFILE" ksh bash) ("HISTFILESIZE" bash) ("histlit" tcsh) ("history" csh tcsh) ("history_control" bash) ("HISTSIZE" bash) ("home" csh tcsh) ("HOME") ("HOST" tcsh) ("hostname_completion_file" bash) ("HOSTTYPE" bash tcsh) ("HPATH" tcsh) ("HUSHLOGIN") ("IFS" sh ksh bash) ("ignoreeof" bash csh tcsh) ("IGNOREEOF" bash) ("ignore_symlinks" tcsh) ("LANG") ("LC_COLLATE") ("LC_CTYPE") ("LC_MESSAGES") ("LC_MONETARY") ("LC_NUMERIC") ("LC_TIME") ("LINENO" ksh bash) ("LINES" ksh tcsh) ("listjobs" tcsh) ("listlinks" tcsh) ("listmax" tcsh) ("LOGNAME") ("mail" csh tcsh) ("MAIL") ("MAILCHECK") ("MAILPATH") ("MAIL_WARNING" bash) ("matchbeep" tcsh) ("nobeep" tcsh) ("noclobber" bash csh tcsh) ("noglob" csh tcsh) ("nolinks" bash) ("nonomatch" csh tcsh) ("NOREBIND" tcsh) ("notify" bash) ("no_exit_on_failed_exec" bash) ("NO_PROMPT_VARS" bash) ("oid" tcsh) ("OLDPWD" ksh bash) ("OPTARG" sh ksh bash) ("OPTERR" bash) ("OPTIND" sh ksh bash) ("PAGER") ("path" csh tcsh) ("PATH") ("PPID" ksh bash) ("printexitvalue" tcsh) ("prompt" csh tcsh) ("prompt2" tcsh) ("prompt3" tcsh) ("PROMPT_COMMAND" bash) ("PS1" sh ksh bash) ("PS2" sh ksh bash) ("PS3" ksh) ("PS4" ksh bash) ("pushdsilent" tcsh) ("pushdtohome" tcsh) ("pushd_silent" bash) ("PWD" ksh bash) ("RANDOM" ksh bash) ("recexact" tcsh) ("recognize_only_executables" tcsh) ("REPLY" ksh bash) ("rmstar" tcsh) ("savehist" tcsh) ("SECONDS" ksh bash) ("shell" csh tcsh) ("SHELL") ("SHLVL" bash tcsh) ("showdots" tcsh) ("sl" tcsh) ("status" csh tcsh) ("SYSTYPE" tcsh) ("tcsh" tcsh) ("term" tcsh) ("TERM") ("TERMCAP") ("time" csh tcsh) ("TMOUT" ksh bash) ("tperiod" tcsh) ("tty" tcsh) ("UID" bash) ("uid" tcsh) ("verbose" csh tcsh) ("version" tcsh) ("visiblebell" tcsh) ("VISUAL") ("watch" tcsh) ("who" tcsh) ("wordchars" tcsh))) "\ Alist of all environment and shell variables used for completing read. Variables only understood by some shells are associated to a list of those.") (defvar sh-font-lock-keywords (quote (("[ ]\\(#.*\\)" 1 font-lock-comment-face) ("\"[^`]*\"\\|'.*'\\|\\\\[^\nntc]" . font-lock-string-face))) "\ *Rules for highlighting shell scripts. This variable is included into the various variables `sh-SHELL-font-lock-keywords'. If no such variable exists for some shell, this one is used.") (defvar sh-sh-font-lock-keywords (append sh-font-lock-keywords (quote (("\\(^\\|[^-._a-z0-9]\\)\\(case\\|do\\|done\\|elif\\|else\\|esac\\|fi\\|for\\|if\\|in\\|then\\|until\\|while\\)\\($\\|[^-._a-z0-9]\\)" 2 font-lock-keyword-face t)))) "\ *Rules for highlighting Bourne shell scripts.") (defvar sh-ksh-font-lock-keywords (append sh-sh-font-lock-keywords (quote (("\\(^\\|[^-._a-z0-9]\\)\\(function\\|select\\)\\($\\|[^-._a-z0-9]\\)" 2 font-lock-keyword-face t)))) "\ *Rules for highlighting Korn shell scripts.") (defvar sh-bash-font-lock-keywords (append sh-sh-font-lock-keywords (quote (("\\(^\\|[^-._a-z0-9]\\)\\(function\\)\\($\\|[^-._a-z0-9]\\)" 2 font-lock-keyword-face t)))) "\ *Rules for highlighting Bourne again shell scripts.") (defvar sh-csh-font-lock-keywords (append sh-font-lock-keywords (quote (("\\(^\\|[^-._a-z0-9]\\)\\(breaksw\\|case\\|default\\|else\\|end\\|endif\\|foreach\\|if\\|switch\\|then\\|while\\)\\($\\|[^-._a-z0-9]\\)" 2 font-lock-keyword-face t)))) "\ *Rules for highlighting C shell scripts.") (defvar sh-tcsh-font-lock-keywords sh-csh-font-lock-keywords "\ *Rules for highlighting Toronto C shell scripts.") (defalias 'sh-or-other-mode #[nil " @@! A @A) " [magic-number-alist l looking-at sh-mode] 3 "\ Decide whether this is a compiled executable or a script. Usually the file-names of scripts and binaries cannot be automatically distinguished, so the presence of an executable's magic number is used."]) (defalias 'sh-mode #[nil " \n!\f!!!!!!!!!!!!!! \neb!q{s !)!%&=!!" [kill-all-local-variables set-syntax-table sh-mode-syntax-table use-local-map sh-mode-map make-local-variable indent-line-function comment-start comment-start-skip after-save-hook require-final-newline sh-shell-path sh-shell sh-shell-is-csh pair-alist pair-filter font-lock-keywords font-lock-keywords-case-fold-search sh-variables sh-mode major-mode "Shell-script" mode-name sh-indent-line "# " sh-chmod sh-tab-width tab-width t nil ((96 _ 96)) sh-quoted-p sh-set-shell looking-at "#![ ]*\\([^ \n ]+\\)" 1 boundp find-file sh-find-file-modifies set-buffer-modified-p run-hooks sh-mode-hook] 3 "\ Major mode for editing shell scripts. This mode works for many shells, since they all have roughly the same syntax, as far as commands, arguments, variables, pipes, comments etc. are concerned. Unless the file's magic number indicates the shell, your usual shell is assumed. Since filenames rarely give a clue, they are not further analyzed. The syntax of the statements varies with the shell being used. The syntax of statements can be modified by putting a property on the command or new ones defined with `define-sh-skeleton'. For example (put 'sh-until 'ksh '(() \"until \" _ \\n > \"do\" \\n \"done\")) or (put 'sh-if 'smush '(\"What? \" \"If ya got ( \" str \" ) ya betta { \" _ \" }\")) where `sh-until' or `sh-if' have been or will be defined by `define-sh-skeleton'. The following commands are available, based on the current shell's syntax: \\[sh-case] case statement \\[sh-for] for loop \\[sh-function] function definition \\[sh-if] if statement \\[sh-indexed-loop] indexed loop from 1 to n \\[sh-select] select statement \\[sh-until] until loop \\[sh-while] while loop \\[backward-delete-char-untabify] Delete backward one position, even if it was a tab. \\[sh-newline-and-indent] Delete unquoted space and indent new line same as this one. \\[sh-end-of-command] Go to end of successive commands. \\[sh-beginning-of-command] Go to beginning of successive commands. \\[sh-set-shell] Set this buffer's shell, and maybe its magic number. \\[sh-manual-entry] Display the Unix manual entry for the current command or shell. \\[sh-query-for-variable] Unless quoted with \\, query for a variable with completions offered. \\[sh-maybe-here-document] Without prefix, following an unquoted < inserts here document. {, (, [, ', \", ` Unless quoted with \\, insert the pairs {}, (), [], or '', \"\", ``." nil]) (defalias (quote shell-script-mode) (quote sh-mode)) (defalias 'define-sh-skeleton '(macro . #[(command documentation &rest definitions) ";  B! DDC DBBE D DBBBBBFEBBBE D DBBDF  DBB DBBBEDF" [documentation definitions "" require backquote progn let quote while or and (not (if (boundp (quote skeleton-debug)) skeleton-debug)) get command ((car (car definitions))) put (car (car definitions)) if (symbolp (cdr (car definitions))) ((cdr (car definitions))) ((cdr (car definitions))) ((setq definitions (cdr definitions))) (quote menu-enable) (sh-shell) defun nil (interactive) skeleton-insert (sh-shell) error "%s statement syntax not defined for shell %s." (sh-shell)] 15 "\ Define COMMAND with [DOCSTRING] to insert statements as in DEFINITION ... Prior definitions (e.g. from ~/.emacs) are maintained. Each definition is built up as (SHELL PROMPT ELEMENT ...). Alternately a synonym definition can be (SHELL . PREVIOUSLY-DEFINED-SHELL). For the meaning of (PROMPT ELEMENT ...) see `skeleton-insert'. Each DEFINITION is actually stored as (put COMMAND SHELL (PROMPT ELEMENT ...)), which you can also do yourself."])) (defalias 'sh-indent-line #[nil "! \f!łi)=#Si iW9l5SłSlKi T _]Si T _j)i W`w)" [line-move -1 back-to-indentation looking-at comment-start-skip 0 previous this-command newline-and-indent tab-width current-indentation " " nil] 3 "\ Indent as far as preceding line, then by steps of `tab-width'. If previous line starts with a comment, it's considered empty." nil]) (defalias 'sh-remember-variable #[(var) "G W \"C B" [var sh-remember-variable-min assoc sh-variables] 3 "\ Make VARIABLE available for future completing reads in this buffer."]) (byte-code "! \n@\n@\"O!\nA\f)" [boundp process-environment l sh-remember-variable 0 string-match "="] 7) (defalias 'sh-quoted-p #[nil "`x`)Z¦=" ["\\\\" nil 2 1] 3 "\ Is point preceded by an odd number of backslashes?"]) (defalias 'sh-executable #[(command) "` \nP&`\fb\f!.\f͕=.ΔΕ{`\f|!," [buffer-modified-p nil after-change-function buffer-read-only point call-process "sh" t "-c" "type " command looking-at sh-executable 0 1 set-buffer-modified-p] 8 "\ If COMMAND is an executable in $PATH its full name is returned. Else nil."]) (defalias 'sh-chmod #[nil "\n!\nR!" [sh-chmod-argument file-executable-p buffer-file-name shell-command "chmod " " "] 5 "\ This gets called after saving a file to assure that it be executable. You can set the absolute or relative mode with `sh-chmod-argument'."]) (byte-code "!\f  @@N- @@ @A9( @AN+ @A# A)#" [((sh "expression: " "case " str " in" n > (read-string "pattern: ") 41 n > _ n ";;" n ("other pattern, %s: " < str 41 n > n ";;" n) < "*)" n > n resume: < < "esac") (ksh . sh) (bash . sh) (csh "expression: " "switch( " str " )" n > "case " (read-string "pattern: ") 58 n > _ n "breaksw" n ("other pattern, %s: " < "case " str 58 n > n "breaksw" n) < "default:" n > n resume: < < "endsw") (tcsh . csh)) definitions boundp skeleton-debug sh-case put menu-enable (get (quote sh-case) sh-shell)] 6) (defalias 'sh-case #[nil "\nN\f\n#!" [skeleton-insert sh-case sh-shell error "%s statement syntax not defined for shell %s."] 5 "\ Insert a case/switch statement in the current shell's syntax." nil]) (byte-code "!\f  @@N- @@ @A9( @AN+ @A# A)#" [((sh "Index variable: " "for " str " in " _ "; do" n > 36 (sh-remember-variable str) n < "done") (ksh . sh) (bash . sh) (csh "Index variable: " "foreach " str " ( " _ " )" n > 36 (sh-remember-variable str) n < "end") (tcsh . csh)) definitions boundp skeleton-debug sh-for put menu-enable (get (quote sh-for) sh-shell)] 6) (defalias 'sh-for #[nil "\nN\f\n#!" [skeleton-insert sh-for sh-shell error "%s statement syntax not defined for shell %s."] 5 "\ Insert a for loop in the current shell's syntax." nil]) (byte-code "!\f  @@N- @@ @A9( @AN+ @A# A)#" [((sh "Index variable: " str "=1" n "while [ $" str " -le " (read-string "upper limit: ") " ]; do" n > _ 36 str n str 61 (sh-add (sh-remember-variable str) 1) n < "done") (ksh . sh) (bash . sh) (csh "Index variable: " "@ " str " = 1" n "while( $" str " <= " (read-string "upper limit: ") " )" n > _ 36 (sh-remember-variable str) n "@ " str "++" n < "end") (tcsh . csh)) definitions boundp skeleton-debug sh-indexed-loop put menu-enable (get (quote sh-indexed-loop) sh-shell)] 6) (defalias 'sh-indexed-loop #[nil "\nN\f\n#!" [skeleton-insert sh-indexed-loop sh-shell error "%s statement syntax not defined for shell %s."] 5 "\ Insert an indexed loop from 1 to n in the current shell's syntax." nil]) (defalias 'sh-add #[(var delta) "W\n‚ !PǞ\"" [delta 0 " - " " + " abs skeleton-insert sh-shell ((sh "`expr $" var delta "`") (ksh "$(( $" var delta " ))") (bash "$[ $" var delta " ]")) t] 3 "\ Insert an addition of VAR and prefix DELTA for Bourne type shells." (list (sh-remember-variable (completing-read "Variable: " sh-variables (lambda (element) (or (not (cdr element)) (memq sh-shell (cdr element)))))) (prefix-numeric-value current-prefix-arg))]) (byte-code "!\f  @@N- @@ @A9( @AN+ @A# A)#" [((sh nil "() {" n > _ n < "}") (ksh "name: " "function " str " {" n > _ n < "}") (bash "name: " "function " str "() {" n > _ n < "}")) definitions boundp skeleton-debug sh-function put menu-enable (get (quote sh-function) sh-shell)] 6) (defalias 'sh-function #[nil "\nN\f\n#!" [skeleton-insert sh-function sh-shell error "%s statement syntax not defined for shell %s."] 5 "\ Insert a function definition in the current shell's syntax." nil]) (byte-code "!\f  @@N- @@ @A9( @AN+ @A# A)#" [((sh "condition: " "if [ " str " ]; then" n > _ n ("other condition, %s: " < "elif [ " str " ]; then" n > n) < "else" n > n resume: < "fi") (ksh . sh) (bash . sh) (csh "condition: " "if( " str " ) then" n > _ n ("other condition, %s: " < "else if ( " str " ) then" n > n) < "else" n > n resume: < "endif") (tcsh . csh)) definitions boundp skeleton-debug sh-if put menu-enable (get (quote sh-if) sh-shell)] 6) (defalias 'sh-if #[nil "\nN\f\n#!" [skeleton-insert sh-if sh-shell error "%s statement syntax not defined for shell %s."] 5 "\ Insert an if statement in the current shell's syntax." nil]) (byte-code "!\f  @@N- @@ @A9( @AN+ @A# A)#" [((ksh "Index variable: " "select " str " in " _ "; do" n > 36 str n < "done")) definitions boundp skeleton-debug sh-select put menu-enable (get (quote sh-select) sh-shell)] 6) (defalias 'sh-select #[nil "\nN\f\n#!" [skeleton-insert sh-select sh-shell error "%s statement syntax not defined for shell %s."] 5 "\ Insert a select statement in the current shell's syntax." nil]) (byte-code "#! @@N4 @@ @A9/ @AN2 @A# A)#" [put sh-select menu-enable (get (quote sh-select) sh-shell) ((sh "condition: " "until [ " str " ]; do" n > _ n < "done") (ksh . sh) (bash . sh)) definitions boundp skeleton-debug sh-until (get (quote sh-until) sh-shell)] 6) (defalias 'sh-until #[nil "\nN\f\n#!" [skeleton-insert sh-until sh-shell error "%s statement syntax not defined for shell %s."] 5 "\ Insert an until loop in the current shell's syntax." nil]) (byte-code "#! @@N4 @@ @A9/ @AN2 @A# A)#" [put sh-until menu-enable (get (quote sh-until) sh-shell) ((sh "condition: " "while [ " str " ]; do" n > _ n < "done") (ksh . sh) (bash . sh) (csh "condition: " "while( " str " )" n > _ n < "end") (tcsh . csh)) definitions boundp skeleton-debug sh-while (get (quote sh-while) sh-shell)] 6) (defalias 'sh-while #[nil "\nN\f\n#!" [skeleton-insert sh-while sh-shell error "%s statement syntax not defined for shell %s."] 5 "\ Insert a while loop in the current shell's syntax." nil]) (defalias 'sh-query-for-variable #[(arg) "V !HN !#p\n   ##!==uc=Gu+" [arg 1 sh-quoted-p self-insert-command nil sh-query-for-variable keymap put copy-keymap minibuffer-local-completion-map buffer completion-ignore-case define-key "{" #[nil "\n`V Ë" [arg 1 beep ((byte-code " !c" [t arg switch-to-buffer-other-window buffer "{}"] 2))] 2 nil nil] sh-remember-variable completing-read "Variable: " sh-variables #[(element) "A?\n A>" [element sh-shell] 2] t] 6 "\ Unless quoted with `\\', query for variable-name with completions. Prefix arg 0 means don't insert `$' before the variable. Prefix arg 2 or more means only do self-insert that many times. If { is pressed as the first character, it will surround the variable name." "*p"]) (defalias 'sh-assignment #[(arg) "=Š \f>x`x`{)!!" [arg 1 sh-remember-variable sh-shell sh-assignment-space " " nil "a-zA-Z0-9_" self-insert-command] 4 "\ Insert self. Remember previous identifier for future completing read." "p"]) (defalias 'sh-maybe-here-document #[(arg) "\n!!\n:`Zf\f=?:`Zb ):c!-c )" [self-insert-command prefix-numeric-value arg 2 last-command-char sh-quoted-p sh-here-document-word looking-at "[ \n]" 32 1 newline 10] 3 "\ Inserts self. Without prefix, following unquoted `<' inserts here document. The document is bounded by `sh-here-document-word'." "*P"]) (autoload (quote comint-dynamic-complete-filename) "comint" "\ Dynamically complete the filename at point." t) (defalias 'sh-newline-and-indent #[(&optional arg) " ` x` W u` | \nj*" [current-indentation end-of-line previous arg " " nil sh-quoted-p 1 newline] 2 "\ Strip unquoted whitespace, insert newline, and indent like current line. Unquoted whitespace is stripped from the current line's end, unless a prefix ARG is given." "*P"]) (defalias 'sh-set-shell #[(shell) "eb !  ! \" !!>\n\"!?!?JA\nLтM\" ]Qt\"!ރ!w ``){# Q!e`{\"``| c# Q!ރ )!" [file-name-absolute-p shell sh-executable error "Cannot find %s." sh-shell-path intern file-name-nondirectory sh-shell (csh tcsh) sh-shell-is-csh intern-soft format "sh-%s-font-lock-keywords" font-lock-keywords boundp sh-font-lock-keywords "\\(^\\|[^$]\\|\\$[^{]\\)#+[ ]*" "\\(^\\|[^$]\\|\\$[^{]\\)\\B#+[ ]*" comment-start-skip ": %s" mode-line-process sh-shell-argument " " buffer-read-only buffer-file-name string-match sh-magicless-file-regexp find-file sh-find-file-modifies t looking-at "#!" "#! " nil sh-query-for-magic y-or-n-p "Replace magic number by ``#! " "''? " message "Magic number ``%s'' replaced." "Add ``#! " "#! " 10 run-hooks sh-set-shell-hook] 5 "\ Set this buffer's shell to SHELL (a string). Calls the value of `sh-set-shell-hook' if set." "sName or path of shell: "]) (defalias 'sh-beginning-of-command #[nil " # Ĕb" [re-search-backward sh-beginning-of-command nil t 2] 4 "\ Move point to successive beginnings of commands." nil]) (defalias 'sh-end-of-command #[nil " # ĕb" [re-search-forward sh-end-of-command nil t 1] 4 "\ Move point to successive ends of commands." nil]) (defalias 'sh-manual-entry #[(arg) " ` `{!)!Q  !\" ˘-!. \f\")" [sh-beginning-of-command sh-executable forward-sexp command read-input "Manual entry (default " symbol-name sh-shell "): " file-name-nondirectory manual-entry "" arg] 4 "\ Display the Unix manual entry for the current command or shell. Universal argument ARG, is passed to `Man-getpage-in-background'." "P"])