;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\207" [require ess-custom ess-utils ess-generics ess-inf ess-noweb-mode] 2) #@24 Keymap for `ess-mode'. (defvar ess-mode-map (byte-code "\302 \303\304\305#\210\303\306\307#\210\303\310\311#\210\303\312\313#\210\303\314\315#\210\303\316\317#\210\303\320\321#\210\303\322\323#\210\303\324\325#\210\303\326\327#\210\303\330\331#\210\303\332\333#\210\303\334\335#\210\303\336\337#\210\303\340\341#\210\303\342\343#\210\303\344\345#\210\303\346\347#\210\303\350\351#\210\303\352\353#\210\303\354\355#\210\303\356\355#\210\303\357\360#\210\303\361\362#\210\303\363\364#\210\303\365\364#\210\303\366\367#\210\303\370\371#\210\303\372\373#\210\303\374\375#\210\303\376\377#\210\303\201@\201A#\210\303\201B\201C#\210\303\201D\201E#\210\303\201F\201G#\210\303\201H\201G#\210\303\201I\201J#\210\303\201K\201L#\210\303\201M\201N#\210\303\201O\201P#\210\303\201Q\201R#\210\303\201S\201T#\210\303\201U\201V#\210\303\201W\201X#\210 \203K\303 \201Y#\210\303\201Z\201[#\210)\207" [map ess-smart-S-assign-key make-sparse-keymap define-key " " ess-newline-and-indent [remap yank] ess-yank "" ess-eval-region "\362" ess-eval-region-and-go "" ess-eval-buffer "\342" ess-eval-buffer-and-go [3 C-up] ess-eval-buffer-from-beg-to-here [3 C-down] ess-eval-buffer-from-here-to-end "" ess-eval-function "\346" ess-eval-function-and-go "" ess-eval-region-or-function-or-paragraph-and-step "" ess-eval-paragraph-and-step "\360" ess-eval-paragraph-and-go "\230" ess-eval-region-or-function-or-paragraph "" ess-eval-line-visibly-and-step "\n" ess-eval-line [(control return)] ess-eval-region-or-line-visibly-and-step "\352" ess-eval-line-and-go "\201" ess-goto-beginning-of-function-or-para "\205" ess-goto-end-of-function-or-para "nd" ess-narrow-to-defun-or-para "nf" "" ess-switch-to-ESS-deprecated "" ess-switch-to-inferior-or-script-buffer "\f" ess-load-file "\354" "" ess-display-help-on-object "" ess-switch-process " " ess-complete-object-name-deprecated "\277" ess-list-object-completions " " ess-force-buffer-current "`" ess-show-traceback [(control 99) 126] ess-show-call-stack "\221" ess-indent-exp "{" skeleton-pair-insert-maybe "}" "\210" ess-mark-function-or-para " " ess-indent-or-complete "" ess-quit "\215" ess-use-this-dir "," ess-smart-comma "" ess-doc-map "" ess-extra-map "" ess-dev-map ess-smart-S-assign [3 67108925] ess-cycle-assign] 4) (#$ . 236)) (substitute-key-definition 'indent-new-comment-line 'ess-indent-new-comment-line ess-mode-map global-map) #@16 ESS extra map. (defvar ess-extra-map (byte-code "\301\302\300!\210\303\304\305#\210\303\306\305#\210\303\307\310#\210\303\311\310#\210\303\312\313#\210\303\314\313#\210\303\315\316#\210\303\317\316#\210\303\320\321#\210\303\322\321#\210\303\323\324#\210\303\325\324#\210\303\326\327#\210\303\330\327#\210\303\331\332#\210\303\333\332#\210\303\334\335#\210)\207" [ess-extra-map nil define-prefix-command define-key "" ess-dump-object-into-edit-buffer "d" "" ess-execute "e" " " ess-install-library "i" "\f" ess-load-library "l" "" inferior-ess-reload "r" "" ess-set-style "s" "" ess-build-tags-for-directory "t" "" ess-execute-screen-options "w" "/" ess-set-working-directory] 4) (#$ . 2727)) #@29 Menu for use in `ess-mode'. (defvar ess-mode-menu nil (#$ . 3450)) (easy-menu-do-define 'ess-mode-menu ess-mode-map "Menu for use in `ess-mode'." '("ESS" ["What is this? (beta)" ess-mouse-me t] ["Load file" ess-load-file t] ["Eval region | func | para" ess-eval-region-or-function-or-paragraph t] ["Eval region | func | para & step" ess-eval-region-or-function-or-paragraph-and-step t] ["Eval region | line" ess-eval-region-or-line-visibly-and-step t] ["Enter expression" ess-execute t] "------" ("Process" ["Goto end of process buffer" ess-switch-to-end-of-ESS t] ["Switch to process buffer" ess-switch-to-inferior-or-script-buffer t] ["Switch Process" ess-switch-process t] ("Start Process" ["R" R :help "Start a new R process" :active t] ["S" S :help "Start a new S process" :active t] ["Sqpe" Sqpe ess-microsoft-p] ["S+6-exisiting" S+6-existing ess-microsoft-p] ["SAS" SAS-menu t] ("Other" ["No other R or Sqpe versions" nil nil]) ["About" (ess-goto-info "Starting up") t]) ("Eval visibly " :filter ess--generate-eval-visibly-submenu)) "------" ("ESS Eval" ["Eval region | func | para" ess-eval-region-or-function-or-paragraph t] ["Eval region | func | para & step" ess-eval-region-or-function-or-paragraph-and-step t] ["Eval region | line & step" ess-eval-region-or-line-visibly-and-step t] "-----" ["Eval buffer" ess-eval-buffer t] ["Eval buffer till here" ess-eval-buffer-from-beg-to-here t] ["Eval buffer from here" ess-eval-buffer-from-here-to-end t] ["Eval region" ess-eval-region t] ["Eval function" ess-eval-function t] ["Eval line" ess-eval-line t] ["Eval line & step" ess-eval-line-and-step t] ["Eval paragraph" ess-eval-paragraph t] ["Eval paragraph & step" ess-eval-paragraph-and-step t] ["Eval chunk" ess-eval-chunk ess-noweb-mode] ["Eval chunk and step" ess-eval-chunk-and-step ess-noweb-mode] ["Eval thread" ess-eval-thread ess-noweb-mode] ["About" (ess-goto-info "Evaluating code") t]) ("Eval and Go" ["Eval buffer" ess-eval-buffer-and-go t] ["Eval region" ess-eval-region-and-go t] ["Eval function" ess-eval-function-and-go t] ["Eval line" ess-eval-line-and-go t] ["Eval paragraph" ess-eval-paragraph-and-go t] ["Eval chunk" ess-eval-chunk-and-go ess-noweb-mode] ["Eval thread" ess-eval-thread-and-go ess-noweb-mode] ["About" (ess-goto-info "Evaluating code") t]) ("Motion" ["Beginning of function or para" ess-goto-beginning-of-function-or-para t] ["End of function or para" ess-goto-end-of-function-or-para t] "-----" ["Backward list" backward-list t] ["Forward list" forward-list t] ["Next parenthesis" down-list t] ["Enclosing parenthesis" backward-up-list t] ["Backward sexp" backward-sexp t] ["Forward sexp" forward-sexp t] ["About" (Info-goto-node "(Emacs)Lists") t]) ("ESS Edit" ["Edit new object" ess-dump-object-into-edit-buffer t] ["Complete Filename" comint-replace-by-expanded-filename t] ["Complete File or Object" ess-indent-or-complete t] ["Kill sexp" kill-sexp t] ["Mark function" ess-mark-function-or-para t] ["Indent expression" ess-indent-exp t] ["Indent line" ess-indent-command t] ["Toggle Auto-Fill Mode" auto-fill-mode t] ["Undo" undo t] ["About" (ess-goto-info "Edit buffer") t]) "------" ("start-dev" :visible nil) ("end-dev" :visible nil) "------" ("Font Lock" :active ess-font-lock-keywords :filter ess--generate-font-lock-submenu) "------" ["Describe" describe-mode t] ["About editing" (ess-goto-info "Editing") t] ["Read ESS info" (ess-goto-info "") t] ["Send bug report" ess-submit-bug-report t])) #@3691 Major mode for editing ESS source. Optional arg ALIST describes how to customize the editing mode. Optional arg PROC-NAME is name of associated inferior process. \{ess-mode-map} Extra binding to note: 'ESC C-\' indent-region. Entry to this mode runs the hooks in ess-mode-hook. You can send text to the inferior ESS process from other buffers containing ESS source. `ess-eval-region' sends the current region to the ESS process. `ess-eval-buffer' sends the current buffer to the ESS process. `ess-eval-function' sends the current function to the ESS process. `ess-eval-line' sends the current line to the ESS process. `ess-beginning-of-function' and `ess-end-of-function' move the point to the beginning and end of the current ESS function. `ess-switch-to-ESS' switches the current buffer to the ESS process buffer. `ess-switch-to-end-of-ESS' switches the current buffer to the ESS process buffer and puts point at the end of it. `ess-eval-region-and-go', `ess-eval-buffer-and-go', `ess-eval-function-and-go', and `ess-eval-line-and-go' switch to the S process buffer after sending their text. `ess-load-file' sources a file of commands to the ESS process. \[ess-indent-command] indents for ESS code. \[backward-delete-char-untabify] converts tabs to spaces as it moves back. Comments are indented in a similar way to Emacs-lisp mode: `###' beginning of line `##' the same level of indentation as the code `#' the same column on the right, or to the right of such a column if that is not possible.(default value 40). \[indent-for-comment] command automatically inserts such a `#' in the right place, or aligns such a comment if it is already inserted. \[ess-indent-exp] command indents each line of the syntactic unit following point. Variables controlling indentation style: `ess-tab-always-indent' Non-nil means TAB in ESS mode should always reindent the current line, regardless of where in the line point is when the TAB command is used. `ess-auto-newline' Non-nil means automatically newline before and after braces inserted in S code. `ess-indent-offset' Indentation of ESS statements within surrounding block. The surrounding block's indentation is the indentation of the line on which the open-brace appears. `ess-offset-block' Indentation of blocks opened with curly braces or anonymous parentheses. `ess-offset-arguments' Indentation of function arguments or bracket indices. `ess-offset-arguments-newline' Indentation of function arguments or bracket indices when the opening delimiter is immediately followed by a newline. `ess-offset-continued' Indentation style for continued statements. `ess-align-nested-calls' Functions whose nested calls should be aligned. `ess-align-arguments-in-calls' Calls in which arguments should be aligned. `ess-align-continuations-in-calls' Whether ignore indentation after an operator in calls `ess-align-blocks' Blocks that should always be aligned vertically. `ess-indent-from-lhs' Whether function calls given as argument should be indented from the parameter name. `ess-indent-from-chain-start' Whether to indent arguments from the first of several consecutive calls. `ess-indent-with-fancy-comments' Non-nil means distinguish between #, ##, and ### for indentation. Furthermore, \[ess-set-style] command enables you to set up predefined ess-mode indentation style. At present, predefined style are `BSD', `GNU', `K&R', `C++', `CLB' (quoted from C language style). (defalias 'ess-mode #[(&optional alist proc-name is-derived) "\206\306\307p\"\206\310\311! \204\312 \210\313!\210\314\315\316\n p$!\210\314\315\317\"!\210 \2049\320\321 \2066\n\322Q\314\315\323.\"!\210\313.!\210\324/\325\"\210\3260!\2101\203[\3271!\210\330\331!\210\332\333\334\335\325#\210\3362\337\340\341\332\342$\210\343\325 \"\210\330\344!\210\345\346B$\337\347\350\332\342$\210\351 \210\352\353!\210\352\354!\210\314\355!\207" [alist is-derived ess-language ess-dialect major-mode mode-name buffer-local-value ess-local-customize-alist error "Customise alist is not specified, nor ess-local-customize-alist is set" kill-all-local-variables ess-setq-vars-local ess-write-to-dribble-buffer format "(ess-mode-1): ess-language=%s, ess-dialect=%s buf=%s \n" "(ess-mode-1.5): alist=%s \n" ess-mode "ESS[" "]" "(ess-mode-1.6): editing-alist=%s \n" ess-set-style t use-local-map set-syntax-table make-local-variable indent-tabs-mode nil put ess-local-process-name permanent-local (" [" (:eval (ess--get-mode-line-indicator)) ess--local-mode-line-process-indicator "]") add-hook comint-dynamic-complete-functions ess-complete-filename local delq comint-completion-addsuffix "/" "" ess-idle-timer-functions ess-synchronize-dirs ess-load-extras run-mode-hooks prog-mode-hook ess-mode-hook "\nFinished setting up ESS-mode.\n" ess-mode-editing-alist ess-style ess-mode-map ess-mode-syntax-table mode-line-process] 6 (#$ . 6908)]) (byte-code "\302\303\304\305#\210\306 \"\207" [ess-mode-map prog-mode-map put ess-mode derived-mode-parent prog-mode set-keymap-parent] 4) #@135 Get `ess--mode-line-process-indicator' from process buffer. Internal function to be used for dynamic mode-line dysplay in `ess-mode'. (defalias 'ess--get-mode-line-indicator #[nil "\203)\304!\211\205\305 ! \203&\306\n!\203&r\nq\210\307\310 \")\202'\311*\207\311\207" [ess-local-process-name proc buff ess--mode-line-process-indicator get-process process-buffer buffer-live-p mapcar eval "none"] 4 (#$ . 12195)]) #@74 Install library/package for current dialect. Currently works only for R. (defalias 'ess-install-library #[nil "\302!\203  \207\303\304 \"\207" [ess-install-library-function ess-dialect fboundp error "Sorry, not available for %s"] 3 (#$ . 12623) nil]) #@93 If inside a function go to the beginning of it. Otherwise go to the beginning of paragraph. (defalias 'ess-goto-beginning-of-function-or-para #[nil "\300\301!\204 \302 \210`\207" [ess-beginning-of-function no-error backward-paragraph] 2 (#$ . 12883) nil]) #@77 If inside a function go to end of it. Otherwise go to the end of paragraph. (defalias 'ess-goto-end-of-function-or-para #[nil "\300\301\302\"\204\n\303 \210`\207" [ess-end-of-function nil no-error forward-paragraph] 3 (#$ . 13146) nil]) #@54 Put mark at end of ESS function, point at beginning. (defalias 'ess-mark-function-or-para #[nil "\300 \210\301`!\210\302 \210\303 \207" [ess-goto-beginning-of-function-or-para push-mark ess-goto-end-of-function-or-para exchange-point-and-mark] 2 (#$ . 13390) nil]) (byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias ess-mark-function ess-mark-function-or-para nil make-obsolete "15.09"] 4) #@134 Make text outside current function invisible. If text is already narrowed, this is removed before narrowing to the current function. (defalias 'ess-narrow-to-defun-or-para #[nil "\212~\210\302 \303  }+\207" [beg end ess-goto-beginning-of-function-or-para ess-goto-end-of-function-or-para] 2 (#$ . 13802) nil]) (byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias ess-narrow-to-defun ess-narrow-to-defun-or-para nil make-obsolete "15.09"] 4) #@62 Like `newline-and-indent' but accounts for roxygen comments. (defalias 'ess-newline-and-indent #[nil "\301\302!\203\303\230\203\302 \207\304 \207" [ess-dialect fboundp ess-roxy-newline-and-indent "R" newline-and-indent] 2 (#$ . 14265) nil]) #@67 Like `indent-new-comment-line' but accounts for roxygen comments. (defalias 'ess-indent-new-comment-line #[nil "\301\302!\203\303\230\203\302 \207\304 \207" [ess-dialect fboundp ess-roxy-indent-new-comment-line "R" indent-new-comment-line] 2 (#$ . 14517) nil]) #@217 Set up the `ess-mode' style variables from the `ess-style' variable. If STYLE argument is given, use that instead. It makes the ESS indentation style variables buffer local. When non-nil, QUIET suppresses messaging. (defalias 'ess-set-style #[(&optional style quiet) "\306\307\306\310\"\"\n\204\311\312\313 \314\315\314\211 &!\n\206\f\316\304!\210\307\n! >\2030\n\2027\317\320\321\n\"!\210 \204@\322\323\f\"\210\324\325\f\236A\"\210\f)\207" [ess-style-alist ess-styles style ess-default-style ess-style quiet mapcar symbol-name car intern ess-completing-read "Set ESS mode indentation style" nil t make-local-variable error format "Bad ESS style: %s" message "ESS-style: %s" mapc #[(ess-style-pair) "\301@!\210@AL\207" [ess-style-pair make-local-variable] 2]] 9 (#$ . 14790) nil]) #@521 Indent current line as ESS code, or in some cases insert a tab character. If `ess-tab-always-indent' is non-nil (the default), always indent current line. Otherwise, indent the current line only if point is at the left margin or in the line's indentation; otherwise insert a tab. A numeric argument, regardless of its value, means indent rigidly all the lines of the expression starting after point so that this line becomes properly indented. The relative indentation among the lines of the expression are preserved. (defalias 'ess-indent-command #[(&optional whole-exp) "\2035\306 \307\211\212\f\203\310 \210`\311\312!\210\313\312!\210`\nb\210\312y\210`) \nV\2053\314\n #+\207\f\204F\212\315\307x\210n)\204F\316 \207 \207" [whole-exp end beg shift-amt ess-tab-always-indent indent-line-function ess-indent-line nil beginning-of-line backward-up-list 1 forward-list indent-code-rigidly " " insert-tab] 4 (#$ . 15595) "P"]) #@256 When region is selected indent the region. Otherwise, if `ess-tab-complete-in-script' is non-nil, try to indent, if code is already indented, complete instead. The default of `ess-tab-complete-in-script' is nil. Also see `ess-first-tab-never-complete'. (defalias 'ess-indent-or-complete #[nil "\304 \203\f\305\306 \307 \"\207\310  \205[\247\205[\311=\205[\n\312=\204Y \203Y \313=\2034\314\315!\204Y \316=\203@\314\317!\203Y \320=\203L\314\321!\203Y \322=\205[\314\323!?\205[\324 )\207" [shift ess-tab-complete-in-script last-command ess-first-tab-never-complete use-region-p indent-region region-beginning region-end ess-indent-command 0 ess-indent-or-complete unless-eol looking-at "\\s-*$" symbol "\\w\\|\\s_" symbol-or-paren "\\w\\|\\s_\\|\\s)" symbol-or-paren-or-punct "\\w\\|\\s_\\|\\s)\\|\\s." completion-at-point] 3 (#$ . 16544) nil]) #@55 Indent each line of the ESS grouping following point. (defalias 'ess-indent-exp #[nil "\303\304!\203\305\230\203\304 \207\212`\3061\307\310!\210`0\202 \210\311 \205*\312\n \"+\207" [ess-dialect end start fboundp ess-r-indent-exp "R" (error) forward-sexp 1 nil indent-region] 3 (#$ . 17411) nil]) #@80 Indent current line as ESS code. Return the amount the indentation changed by. (defalias 'ess-indent-line #[nil "\302!\203  \207\302\303!\203\303 \207 \207" [ess-indent-line-function indent-line-function fboundp ess-r-indent-line] 2 (#$ . 17724)]) #@270 Edit an ESS OBJECT in its own buffer. Without a prefix argument, this simply finds the file pointed to by `ess-source-directory'. If this file does not exist, or if a prefix argument is given, a dump() command is sent to the ESS process to generate the source buffer. (defalias 'ess-dump-object-into-edit-buffer #[(object) "\306;\203\n\202r\307\310 !!q\210\311\n!\210 )!\211\312\f \"P\313!\314\315 !!\204H\316\312\317 \"!\203C\320\315 !!\210\202H\321\322 \"\210\203U\323 \"\202~\203e\324!\210\325\326!\202~\314!\203y\327!\210\325\330\"\202~\323 \"+\207" [ess-source-directory ess-local-process-name ess-customize-alist dirname ess-dump-filename-template object file-name-as-directory process-buffer ess-get-process ess-setq-vars-local format get-file-buffer file-exists-p directory-file-name y-or-n-p "Directory %s does not exist. Create it? " make-directory error "Directory %s does not exist" ess-dump-object pop-to-buffer message "Popped to edit buffer." ess-find-dump-file-other-window "Read %s" filename old-buff current-prefix-arg] 5 (#$ . 17985) (byte-code "\300\301!\210\302\303!\207" [ess-force-buffer-current "Process to dump from: " ess-read-object-name "Object to edit"] 2)]) #@60 When defined this function is called by `ess-dump-object'. (defvar ess-dump-object-function nil (#$ . 19218)) (make-variable-buffer-local 'ess-dump-object-function) #@107 Dump the ESS object OBJECT into file FILENAME. Use `ess-defmethod' to define dialect specific overrides. (defalias 'ess-dump-object #[(object filename) "\306 \n#\307\n!\204\310\311 \n#\210\312\f!\203\f \n\"\202`\313\n!\203+\314\313\n!!\210\315 !\210\316\317\n\"\210\320\n!\210\321\322 \323 \324#\210\325\324!\210 \204O\326\327!\210\324 \330=\203W\324\205`\331\332 !)\207" [inferior-ess-dump-command object filename complete-dump-command ess-dump-object-function ess-keep-dump-files format file-writable-p error "Can't dump %s as %f is not writeable" fboundp get-file-buffer kill-buffer ess-command message "Dumped in %s" ess-find-dump-file-other-window indent-region point-min-marker point-max-marker nil set-buffer-modified-p make-local-variable make-backup-files check delete-file buffer-file-name ess-delete-dump-files] 4 (#$ . 19390)]) #@50 Find ESS source file FILENAME in another window. (defalias 'ess-find-dump-file-other-window #[(filename) "\306!\204 \307\310\311\"!\210\312!\210\313 !\210\314\315!\210\n\f\205Bdb\210\316 \317\320#\205B\321\f\320\211#\210\322\317!\210eb\210\3231@\324\315!0\207\210\317\207" [filename ess-customize-alist ess-current-process-name ess-local-process-name ess-function-template ess-dumped-missing-re file-exists-p ess-write-to-dribble-buffer format "%s does not exist. Bad dump, starting fresh." find-file-other-window ess-mode auto-save-mode 1 re-search-backward nil t replace-match set-buffer-modified-p (error) down-list] 4 (#$ . 20253)]) #@208 Create a function NAME. This function starts the inferior process with the specified version. DIALECT can be "R," "S,", "SAS." If given, PATH should be the absolute path to the program. It defaults to NAME. (defalias 'ess-define-runner #[(name dialect &optional path) "\306\307!\306\310!\306\311!\211\211\fL\210) \211L\210)\211L\210)\312\nJ!\313\314\315\316\317\320\321D\322D\322 D\322\nD\323\257\257M+\207" [#1=#:--cl-path-- #2=#:--cl-dialect-- #3=#:--cl-name-- #4=#:v name #5=#:v make-symbol "--name--" "--dialect--" "--path--" intern lambda (&rest --cl-rest--) "Start this process version in an inferior ESS buffer.\nFunction defined using `ess-define-runner'." (interactive "P") apply function #[(#6=#:G3 #7=#:G4 #8=#:G5 &optional start-args) "J\306\230\203 J\206\nJ\307\310!\210\311\f!)\207J\312\230\203/ J\206&\nJ\307\313!\210\314 )\207J\315\230\205F J\206=\nJ\307\316!\210\317 )\207" [#7# #6# #8# inferior-ess-r-program start-args inferior-S+-program "R" require ess-r-mode run-ess-r "S" ess-sp6-d S+ "SAS" ess-sas-d SAS inferior-SAS-program] 2] quote --cl-rest-- dialect #9=#:v path] 12 (#$ . 20905)]) #@47 Return a string with ESS version information. (defalias 'ess-version #[nil "\301\302\303\304 \305!#!\207" [ess-lisp-directory message format "ess-version: %s (loaded from %s)" ess-version-string file-name-directory] 6 (#$ . 22051) nil]) (defalias 'ess-version-string #[nil "\306!\307\n\310P!\211\205\311 \312P\307 !\205/r\313 !q\210eb\210\314\315\316\317#\205.\320\321!)\211\"\203= \322\"Q\202@\n\323P#\307#!\205Zr\313#!q\210eb\210\324\321\325 {P)$ \326P%\307%!\205t\327\330\331\332\333 \321\334O!#P&\335\336\f\206}\332$\206\203\332&\206\211\332$\211'\332\230\203\225\337'(\340'\341R. \207" [ess-lisp-directory ess-dir ess-etc-directory is-release rel-string git-ref-fn file-name-directory file-exists-p ".IS.RELEASE" "Released " ".git/HEAD" find-file-noselect re-search-forward "ref: \\(.*\\)\n" nil t match-string 1 ".git/" "git-ref" "git: " point-at-eol "ess-pkg.el" "elpa: " replace-regexp-in-string "ess-" "" file-name-nondirectory -1 format "%s%s%s" "" " [" "]" git-ref git-fname git-rev elpa-fname elpa-rev ess-revision ess-version] 9]) (provide 'ess)