;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 cl-lib comint ess-custom ido] 2) #@63 Directory containing ess-site.el(c) and other ESS Lisp files. (defvar ess-lisp-directory (byte-code "\301\302\203\f\303!\202\304\305!!!\207" [load-file-name directory-file-name file-name-directory file-truename locate-library "ess-utils"] 4) (#$ . 195)) #@130 Location of the ESS etc/ directory. The ESS etc directory stores various auxillary files that are useful for ESS, such as icons. (defvar ess-etc-directory nil (#$ . 461)) (byte-code "\204A\303 <\203@ :\203@\304\n\305 @Q!\306!\203$\307\211\202\307 A\211\204\310\311!\210\310\311!\210\312\313!\210\314\315!\210\202)\307\207" [ess-etc-directory path-list ess-lisp-directory ("../etc/ess/" "../etc/" "../../etc/ess/" "./etc/") expand-file-name "/" file-directory-p nil beep 0 message "ERROR:ess-etc-directory\nRelative to ess-lisp-directory, one of the following must exist:\n../etc/ess, ../etc, ../../etc/ess or ./etc" sit-for 4] 5) #@91 If this variable is non-nil in a buffer make all variable permannet. Used in noweb modes. (defvar ess--make-local-vars-permanent nil (#$ . 1114)) (byte-code "\300\301!\210\302\301\303\304#\207" [make-variable-buffer-local ess--make-local-vars-permanent put permanent-local t] 4) #@70 Shortcut for \[message] only if `ess-show-load-messages' is non-nil. (defalias 'ess-message #[(format-string &rest args) "\303\300!\205\205\304 \n\"\207" [ess-show-load-messages format-string args boundp message] 3 (#$ . 1399)]) (defalias 'ess-goto-line #[(line) "\214~\210eb\210Sy)\207" [line] 1]) #@80 Return the 'point' at the end of N lines. N defaults to 1, i.e., current line. (defalias 'ess-line-end-position #[(&optional N) "\212\210`)\207" [N] 1 (#$ . 1710)]) #@92 Search for a REGEXP and store as match 1. Optionally ignore strings that match exceptions. (defalias 'ess-search-except #[(regexp &optional except backward) "\305\306 \203<\n\203\307 \306\305#\204 \n\2046\310 \306\305#\2036\311\312!\f\205,\313\f\"\211\203\306\202\306\211\204*\207" [exit continue backward regexp except t nil search-backward-regexp search-forward-regexp match-string 1 string-match] 5 (#$ . 1883) nil]) #@119 If buffer was modified, save file and set Local Variables if defined. Return t if buffer was modified, nil otherwise. (defalias 'ess-save-and-set-local-variables #[nil "`\303 \203\f\304 \210\305\306!\210\307 \310\216\311\312\313\314#\203\"\315\314\211\"\210* b\210*\207" [ess-temp-return-value ess-temp-point save-match-data-internal buffer-modified-p save-buffer beginning-of-line -1 match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] search-forward "End:" nil t revert-buffer] 4 (#$ . 2331) nil]) #@175 Return FILE-OR-BUFFER if it is a buffer. Otherwise return the buffer associated with the file which must be qualified by it's path; if the buffer does not exist, return nil. (defalias 'ess-get-file-or-buffer #[(file-or-buffer) "\205\301!\203\f\207\302!\207" [file-or-buffer bufferp find-buffer-visiting] 2 (#$ . 2883) nil]) #@114 Set local variables from ALIST in current buffer. If FILE-OR-BUFFER is specified, perform action in that buffer. (defalias 'ess-set-local-variables #[(alist &optional file-or-buffer) "\203 \302!q\210\303\304 \"\207" [file-or-buffer alist ess-get-file-or-buffer mapcar #[(pair) "\301@!\210@\302A!L\207" [pair make-local-variable eval] 3]] 3 (#$ . 3221) nil]) #@64 If ESS-ARG is a list return it, else return ESS-ARG in a list. (defalias 'ess-return-list #[(ess-arg) "<\203\207C\207" [ess-arg] 1 (#$ . 3591)]) #@367 Uniquify LIST, stably, deleting elements using PREDICATE. Return the list with subsequent duplicate items removed by side effects. PREDICATE is called with an element of LIST and a list of elements from LIST, and should return the list of elements with occurrences of the element removed. This function will work even if LIST is unsorted. See also `ess-uniq-list'. (defalias 'ess-uniq #[(list predicate) "\211\203 @A\"\241\211\204)\207" [list predicate] 5 (#$ . 3748)]) #@65 Delete all duplicate entries in ITEMS list, calling `ess-uniq'. (defalias 'ess-uniq-list #[(items) "\301\302\"\207" [items ess-uniq delete] 3 (#$ . 4236)]) #@78 Take the arguments and flatten them into one long LIST. Drops 'nil' entries. (defalias 'ess-flatten-list #[(&rest list) "\301!\207" [list ess-flatten-list-1] 2 (#$ . 4399)]) (defalias 'ess-flatten-list-1 #[(list) "\204\301\207:\203\302\303@!\303A!\"\207C\207" [list nil append ess-flatten-list-1] 4]) #@50 Convert 2 or more lines of white space into one. (defalias 'ess-delete-blank-lines #[nil "\212eb\210\301 \302\216\303\304\305\306#\205\307 \210\202 +\207" [save-match-data-internal match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] search-forward-regexp "^[ ]*\n[ ]*\n" nil t delete-blank-lines] 4 (#$ . 4716) nil]) (defalias 'ess-line-to-list-of-words #[(line) "<\203\207\303\304\305\306 #\203\"\304\224\304\225O\nB\304\225\202 \307\310 !\210\n\237*\207" [line posn list nil 0 string-match "[^ \n]+" store-match-data match-data] 4]) #@76 Revert from disk if file and buffer last modification times are different. (defalias 'ess-revert-wisely #[nil "\301 \210\302p!?\205`\303\304\211\"\210b\210)\304\207" [ess-temp-store-point hack-local-variables verify-visited-file-modtime revert-buffer t] 3 (#$ . 5314) nil]) #@135 Given a root directory and the root of an executable file name, find it's full name and path, if it exists, anywhere in the sub-tree. (defalias 'ess-find-exec #[(ess-root-arg ess-root-dir) "\305\306\307#\310\n\"\311 \203' @ A\312\f!\203 \313\n\f\"\244\202 +\207" [ess-root-dir ess-tmp-dirs ess-root-arg ess-tmp-return ess-tmp-dir directory-files t "^[^.]" ess-find-exec-completions nil file-accessible-directory-p ess-find-exec] 4 (#$ . 5599)]) #@172 Given the root of an executable file name, find all possible completions. Search for the executables in ESS-EXEC-DIR (which defaults to `exec-path' if no value is given). (defalias 'ess-find-exec-completions #[(ess-root-arg &optional ess-exec-dir) "\203\n\306!\202 \307\nG\307\211\307\n\203h\n@\nA G\310V\203\311 !\203\312 \"\203\313 !@PA\314!\2037\315!\2047\316!\2047 C\244\2027 .\207" [ess-exec-dir exec-path ess-exec-path ess-tmp-exec ess-tmp-path-count ess-tmp-dir ess-return-list nil 0 file-accessible-directory-p file-name-all-completions file-name-as-directory file-executable-p backup-file-name-p file-directory-p ess-tmp-files ess-tmp-file ess-root-arg] 4 (#$ . 6064)]) #@71 Drop all entries in FILE-STRINGS that do not "look like" directories. (defalias 'ess-drop-non-directories #[(file-strings) "\301\302\303\"!\207" [file-strings ess-flatten-list mapcar file-name-directory] 4 (#$ . 6799)]) #@28 Return Nth parent of PATH. (defalias 'ess--parent-dir #[(path n) "\203&\n\303V\203&\304\305 !!\211 \232\203\306\211\202\nS\202)\207" [path opath n 0 file-name-directory directory-file-name nil] 4 (#$ . 7026)]) #@686 BODY is evaluate only if the value of procss variable TIME-VAR is bigger than the time of the last user input (stored in 'last-eval' process variable). TIME-VAR is the name of the process variable which holds the access time. See the code for `ess-synchronize-dirs' and `ess-cache-search-list'. Returns nil when no current process, or process is busy, or time-var > last-eval. Otherwise, execute BODY and return the last value. If BODY is executed, set process variable TIME-VAR to (current-time). Variable *proc* is bound to the current process during the evaluation of BODY. Should be used in `ess-idle-timer-functions' which call the process to avoid excessive requests. (defalias 'ess-when-new-input '(macro . #[(time-var &rest body) "\302\303\304\305\306\307\310\311DEDD\312\313\304\314\315 BDC\316\310\311D\317BBB\320BBBEEE\207" [time-var body with-ess-process-buffer 'no-error let (le (process-get *proc* 'last-eval)) tv process-get *proc* quote when (and (or (null tv) (null le) (time-less-p tv le)) (not (process-get *proc* 'busy))) out progn process-put ((current-time)) (out)] 12 (#$ . 7260)])) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put ess-when-new-input lisp-indent-function 1 put edebug-form-spec t] 5) #@581 Execute dialect specific COMMAND. -- If command is nil issue warning 'Not available for dialect X' -- If command is a elisp function, execute it with ARGS -- If a string starting with 'http' or 'www', browse with `browse-url', otherwise execute the command in inferior process. -- If a string, interpret as a command to subprocess, and substitute ARGS with `(format ,command ,@args). When PROMPT is non-nil ask the user for a string value and prepend the response to ARGS. If prompt is a string just pass it to `read-string'. If a list, pass it to `ess-completing-read'. (defalias 'ess-execute-dialect-specific '(macro . #[(command &optional prompt &rest args) "\303\304D\305\306\307\303\310D\311DFD\301\312 DD\313\302\314\315\312\nDEDF\316BBF\207" [command prompt args if null (message "Not implemented for dialect %s" ess-dialect) let* com symbolp symbol-function quote (resp (and prompt (if (stringp prompt) (read-string prompt) (apply 'ess-completing-read prompt)))) append (list resp) ((cond ((functionp com) (apply com args)) ((and (stringp com) (string-match "^\\(http\\|www\\)" com)) (setq com (apply 'format com args)) (require 'browse-url) (browse-url com)) ((stringp com) (unless (string-match "\n$" com) (setq com (concat com "\n"))) (setq com (apply 'format com args)) (ess-eval-linewise com)) (t (error "Argument COMMAND must be either a function or a string"))))] 12 (#$ . 8521)])) #@87 Number of idle seconds to wait before running function in `ess-idle-timer-functions'. (custom-declare-variable 'ess-idle-timer-interval 1 '(#$ . 9937) :type '(integer) :group 'ess) #@586 A list of functions to run each `ess-idle-timer-interval' idle seconds. If your function calls the process, you better use `ess-when-new-input' to wrap your call. If you call the subprocess please respect `ess-can-eval-in-background' variable. These functions are run with `run-hooks'. Use `add-hook' to add symbols to this variable. Most likely you will need a local hook. Then you should specify the LOCAL argument to `add-hook' and initialise it in `ess-mode-hook' or `ess-post-run-hook', or one of the more specialised hooks `ess-r-post-run-hook',`ess-stata-post-run-hook' etc. (defvar ess-idle-timer-functions nil (#$ . 10125)) #@50 Internal function executed by `ess--idle-timer'. (defalias 'ess--idle-timer-function #[nil "\300\301!\207" [run-hooks ess-idle-timer-functions] 2 (#$ . 10767)]) (require 'timer) #@47 Timer used to run `ess-idle-timer-functions'. (defvar ess--idle-timer (run-with-idle-timer ess-idle-timer-interval 'repeat 'ess--idle-timer-function) (#$ . 10951)) (defalias 'ess--generate-eval-visibly-submenu #[(menu) "\300\207" [(["yes" (lambda nil (interactive) (setq ess-eval-visibly t)) :style radio :enable t :selected (eq ess-eval-visibly t)] ["nowait" (lambda nil (interactive) (setq ess-eval-visibly 'nowait)) :style radio :enable t :selected (eq ess-eval-visibly 'nowait)] ["no" (lambda nil (interactive) (setq ess-eval-visibly nil)) :style radio :enable t :selected (eq ess-eval-visibly nil)])] 1]) #@76 Return a cons (STANDARD-VALUE . CUSTOM-VALUE) of `ess-font-lock-keywords'. (defalias 'ess--fl-keywords-values #[nil "\303\304!\203\n\202 \2119\203#\305\n!\203#\306\n\307N@!\nJB\202&\310\311!)\207" [ess-font-lock-keywords inferior-ess-font-lock-keywords sym derived-mode-p ess-mode custom-variable-p eval standard-value error "(inferior-)`ess-font-lock-keywords' must be a symbol of a custom variable"] 4 (#$ . 11567)]) (defalias 'ess--extract-fl-keywords #[nil "\301 \302\303\304@!\")\207" [values ess--fl-keywords-values mapcar #[(kv) "\303@ A\"\211\203\nA\241\210)\207" [kv values cust-kv assoc] 4] copy-alist] 4]) #@320 Retrieve `font-lock-keywords' from ess-[dialect]-font-lock-keywords. Merge the customized values of that variable on top of the standard values and return the new list. For this to work, `ess-font-lock-keywords' and `inferior-ess-font-lock-keywords' should hold a name of the ess-[dialect]-font-lock-keywords variable. (defalias 'ess-build-font-lock-keywords #[nil "\300\301\302\303\304 \"\"\207" [delq nil mapcar #[(c) "A\205@J\207" [c] 1] ess--extract-fl-keywords] 5 (#$ . 12207)]) (defalias 'ess-font-lock-toggle-keyword #[(&optional keyword) "\306  \206\307\310!\203\311\312\313\314\315@\"\316\317$!\202\320\321!\322 A\"\206N\322 @\"\323\324!\2037\n\2028 \211\205F\f \fJBL\210 *\206N\320\325 \"\211\211A?\241\210\326\327\330 \"-\207" [values keyword ess-font-lock-keywords inferior-ess-font-lock-keywords sym kwd ess--fl-keywords-values called-interactively-p any intern ess-completing-read "Keyword to toggle" mapcar #[(el) "\301@!\207" [el symbol-name] 2] nil t error "Wrong number of arguments" assoc derived-mode-p ess-mode "Invalid keyword %s" mapc #[(b) "rq\210 \n=\205 \f=\205\305 )\207" [b major-mode mode ess-dialect dialect font-lock-refresh-defaults] 2] buffer-list major-mode ess-dialect dialect mode] 7 nil nil]) #@41 Generate ESS font-lock submenu in MENU. (defalias 'ess--generate-font-lock-submenu #[(menu) "\300\301\302\303 \"\304\305D\"\207" [append mapcar #[(el) "\301\302@!\303\304\305\306\307@DDF\310\311\312\313\314A&\207" [el vector symbol-name lambda nil (interactive) ess-font-lock-toggle-keyword quote :style toggle :enable t :selected] 9] ess--extract-fl-keywords "-----" ["Save to custom" (lambda nil (interactive) (customize-save-variable (if (derived-mode-p 'ess-mode) ess-font-lock-keywords inferior-ess-font-lock-keywords) (ess--extract-fl-keywords))) t]] 4 (#$ . 13480)]) #@364 Read a string in the minibuffer, with completion. Use `ido-completing-read' if IDO interface is present, or fall back on classical `completing-read' otherwise. Meaning of arguments is as in `completing-read' (PROMPT is automatically suffixed with ': ' and (default %s) when needed). If HIST is null use `ess--completing-hist' as history. See also `ess-use-ido'. (defalias 'ess-completing-read #[(prompt collection &optional predicate require-match initial-input hist def) "\205\306\307!\n\206 \310 \203 \204\311\312\f #\f\313P \203~ \205* ?\314\211\211\315\316!\314 !\"\317\216\320 \210\321\322\323\"\210\321\324\325\"\210\326\327\f\n #$&\n\203v\nJ@\230\204v\n\nJBL\210).\202\214\330\f%#$\n &)\207" [ess-use-ido use-ido hist def prompt ido-mode featurep ido ess--completing-hist format "%s(default %s)" ": " nil ignore copy-sequence #[nil "\205 \301\302\303\"\210\301\304\305\"\207" [reset-ido remove-hook minibuffer-setup-hook ido-minibuffer-setup choose-completion-string-functions ido-choose-completion-string] 3] ido-init-completion-maps add-hook minibuffer-setup-hook ido-minibuffer-setup choose-completion-string-functions ido-choose-completion-string ido-read-internal list completing-read ess-ido-flex-matching collection sel ido-choice-list ido-enable-flex-matching ido-context-switch-command ido-directory-too-big ido-directory-nonreadable ido-current-directory reset-ido require-match initial-input predicate] 8 (#$ . 14065)]) #@59 Load all the extra features depending on custom settings. (defalias 'ess-load-extras #[(&optional inferior) "\203\306\202 \307\310\311 \"\312\313!\203W\203\f\314=\202 \f\203W \235\203. \210\2022 B \203W\315\316 \" \317\320 \"\210\316 >\203Q \210\202W\316 B \312\321!\203\206\203h!\314=\202j!\203\206\"\203\206\322\321!\210\323\324\"\"!\315\325\"\210\326\327!\210#\203\275\204\230$\204\243\203\275$\314=\203\275\330V\203\261\322\331!\210\332\322\333!\210#\334\335!\210%\205\323\205\323\n\205\323\336\337!\205\323\337\335!*\207" [inferior ess-dialect isR mode ess-use-auto-complete ac-modes inferior-ess-mode ess-mode string-match "^R" boundp ac-sources t delq ac-source-filename mapc #[(el) " \235\203 \207 B\211\207" [el ac-sources] 2] company-backends make-local-variable cl-copy-list append company-capf require eldoc 0.4 eldoc-idle-delay 0.1 eldoc-documentation-function eldoc-mode 1 fboundp ess-tracebug ess-ac-sources ess-use-company ess-company-backends ess-eldoc-function ess-use-eldoc ess-use-tracebug] 4 (#$ . 15564)]) #@718 Execute single-key comands defined in MAP till a key is pressed which is not part of map. Return the value of the lastly executed command. Single-key input commands are those that once executed do not requre the prefix command for subsequent invocation. PROMPT is passed to `read-event'. If WAIT is t, wait for next input and ignore the keystroke which triggered the command. Each command in map should accept one at least one argument, the most recent event (as read by `read-event'). ARGS are the supplementary arguments passed to the commands. EXIT-FORM should be supplied for a more refined control of the read-even loop. The loop is exited when EXIT-FORM evaluates to t. See examples in the tracebug code. (defalias 'ess--execute-electric-command '(macro . #[(map &optional prompt wait exit-form &rest args) "\305\306\307\310\311BBD\312BB\313\314\315 \316BBD\317\320 \321\322\323\307\324\307\325\nBBBEEE\326\323\327\321\307\310\330\321\325\331 DEDEEE\321\322\324\307\325\nBBBE\332\321\333\fE\257\334BBBBBE\207" [map wait args prompt exit-form let* (ev last-command-event) command lookup-key ((vector ev)) (out exit) if not or (command) (message "%s is undefined" (key-description (this-command-keys))) unless setq out and funcall ev while (not exit) vector read-event (sleep-for 0.01) exit ((unless exit (push ev unread-command-events)) out)] 18 (#$ . 16672)])) #@215 Command passed to generate tags. If nil, `ess-build-tags-for-directory' uses the mode's imenu regexpresion. Othersiwe, it should be a string with two %s formats: one for directory and another for the output file. (defvar ess-build-tags-command nil (#$ . 18055)) #@206 Yank and strip the code, leaving only (R/S/Lsp/..) commands. Deletes any lines not beginning with a prompt, and then removes the prompt from those lines that remain. Invoke this command with C-u C-u C-y. (defalias 'ess-yank-cleaned-commands #[nil "\303 `\304 !\210\305\306\307\310!!\210\311\312!\203#\313\314!\203#\314 `\315#\210` =\203-\316\317!\210\n\305=\2056\320\211)\207" [yank-window-start beg this-command window-start push-mark t insert-for-yank current-kill 0 require ess-trns fboundp ess-transcript-clean-region nil message "No commands found" yank] 4 (#$ . 18325)]) #@68 With double prefix ARG (C-u C-u) call `ess-yank-cleaned-commands'. (defalias 'ess-yank #[(&optional arg) "\303\232\203 \304 \207\305\306`\"\211\307=\203\306\202! \204 \306\202! \211!*\207" [arg remapped command (16) ess-yank-cleaned-commands command-remapping yank ess-yank] 4 (#$ . 18917) "*P"]) (put 'ess-yank 'delete-selection 'yank) #@556 Ask for directory and tag file and build tags for current dialect. If the current language defines `ess-build-tags-command' use it and ask the subprocess to build the tags. Otherwise use imenu regexp and call find .. | etags .. in a shell command. You must have 'find' and 'etags' programs installed. Use M-. to navigate to a tag. \[visit-tags-table] to append/replace the currently used tag table. If prefix is given, force tag generation based on imenu. Might be useful when different language files are also present in the directory (.cpp, .c etc). (defalias 'ess-build-tags-for-directory #[(dir tagfile) "\306!G\307=\204\310!\203\311!\312P\313!\203\274\314\315!\210\316!\211\242\n>\2041\317\320\321 D\"\210 A@ \242\n>\204C\317\320\321 D\"\210\322 8 \242\n>\204U\317\320\321 D\"\210\323 8 \242\n>\204g\317\320\321 D\"\210\324 8* \242\n>\204z\317\320\321 D\"\210\325 8+ \242\n>\204\215\317\320\321 D\"\210\326 8, \242\n>\204\240\317\320\321 D\"\210\327 8- \210\f\210 \210*\210+\210,\210-\210,.\313.!\203f\314\315!\210\316.!\211\242\n>\204\332\317\320\321 D\"\210 A@ \242\n>\204\354\317\320\321 D\"\210\322 8 \242\n>\204\376\317\320\321 D\"\210\323 8 \242\n>\204\317\320\321 D\"\210\324 8* \242\n>\204#\317\320\321 D\"\210\325 8+ \242\n>\2046\317\320\321 D\"\210\326 8, \242\n>\204I\317\320\321 D\"\210\327 8- \210\f\210 \210*\210+\210,\210-\210,../\203z0\204z\330\331/.#!\2071\204\2102\204\210\332\333!\210\331\334.\"3\335\336\337\3401\"\"4\331\341\342\3434\344##5\345\346\"\210\347\331\35035#!\307U\205\273\345\351!+\207" [tagfile foo cl-struct-tramp-file-name-tags foo-method foo-user foo-domain file-name-nondirectory 0 file-directory-p file-name-as-directory "TAGS" file-remote-p require tramp tramp-dissect-file-name signal wrong-type-argument tramp-file-name 2 3 4 5 6 7 ess-eval-linewise format error "No ess-tag-command found, and no imenu-generic-expression defined" "find %s -type f -size 1M \\( -regex \".*\\.\\(cpp\\|jl\\|[RsrSch]\\(nw\\)?\\)$\" \\)" delq nil mapcar #[(l) "\301\302A@\"?\205\303\304\305\306\307A@\310$\3118#\207" [l string-match "'" format "/%s/\\%d/" replace-regexp-in-string "/" "\\/" t 2] 7] "etags -o %s --regex='%s' -" mapconcat identity "' --regex='" message "Building tags: %s" shell-command "%s | %s" "Building tags .. ok!" foo-host foo-port foo-localname foo-hop dir ess-build-tags-command current-prefix-arg imenu-generic-expression ess-imenu-generic-expression find-cmd regs tags-cmd] 8 (#$ . 19271) "DDirectory to tag:\nGTags file (default TAGS): "]) #@176 Get external PostScript viewer to be used from ESS. Use `ess-ps-viewer-pref' when that is executably found by \[executable-find]. Otherwise try a list of fixed known viewers. (defalias 'ess-get-ps-viewer #[nil "\301\203 \302!\206\302\303!\206\302\304!\206\302\305!!\207" [ess-ps-viewer-pref file-name-nondirectory executable-find "gv" "evince" "kghostview"] 3 (#$ . 21861)]) #@170 Get external PDF viewer to be used from ESS. Use `ess-pdf-viewer-pref' when that is executably found by \[executable-find]. Otherwise try a list of fixed known viewers. (defalias 'ess-get-pdf-viewer #[nil "\2062\302\303!\2062\302\304!\2062\302\305!\2062\302\306!\2062\302\307!\2062\302\310!\2062\311\312!\2052\312\313!@\211;\203<\314 ! )\207" [ess-pdf-viewer-pref viewer executable-find "evince" "kpdf" "okular" "xpdf" "acroread" "xdg-open" fboundp ess-get-words-from-vector "getOption(\"pdfviewer\")\n" file-name-nondirectory] 3 (#$ . 22252)]) #@66 The overlay for highlighting currently evaluated region or line. (defvar ess-current-region-overlay (byte-code "\301``\"\302\303\304#\210)\207" [overlay make-overlay overlay-put face highlight] 4) (#$ . 22815)) (defalias 'ess-blink-region #[(start end) "\205\305 \n #\210\306\f\307\310#\207" [ess-blink-region ess-current-region-overlay start end ess-blink-delay move-overlay run-with-timer nil #[nil "\301!\207" [ess-current-region-overlay delete-overlay] 2]] 4]) (defalias 'ess-deactivate-mark #[nil "\302\303!\203\304\300!\203\203\305 \205\306 \207 \205\307 \207" [evil-mode mark-active featurep evil boundp evil-visual-state-p evil-normal-state deactivate-mark] 2]) #@112 Show a tooltip displaying 'text' at (around) point, xo and yo are x- and y-offsets for the toolbar from point. (defalias 'ess-tooltip-show-at-point #[(text xo yo) "\306\307\310\"\306\307\311\"\312 \313 \307\211\211\211\211:\204$\202<@\314=\2038\315 A@Z Z\202<A@:\204H\202`@\314=\203\\\316 A@Z\fZ\202`A@\317\320 @\321 \3228\262@ $\317\320 A@\321 \3228\262A\n$\311B\310 BBB\323!. \207" [my-y-offset my-x-offset frame-top frame-left fh fw frame-parameter nil left top frame-pixel-width frame-pixel-height - x-display-pixel-width x-display-pixel-height + window-inside-pixel-edges posn-at-point 2 tooltip-show fy fx xo yo tooltip-frame-parameters text] 9 (#$ . 23510)]) #@132 Select FRAME, raise it, and set input focus, if possible. Copied almost verbatim from gnus-utils.el (but with test for mac added). (defalias 'ess-select-frame-set-input-focus #[(frame) "\303!\210\304!\210 \305>\203\306\307!\203\307!\210\202+ \310=\203+\306\311!\203+\311!\210\n\2057\312\313!S\314#\207" [frame window-system focus-follows-mouse raise-frame select-frame (x mac) fboundp x-focus-frame w32 w32-focus-frame set-mouse-position frame-width 0] 4 (#$ . 24238)]) #@210 This is the same as \[do-auto-fill] in GNU emacs 21.3, with one major difference: if we could not find a suitable place to break the line, we simply do not break it (instead of breaking after the first word). (defalias 'ess-do-auto-fill #[nil "\306\211\211\211\307 \211?\2064\310 \211?\2064 \311=\203&i\fX\2064\212\312 \210` \2053\313 !)?\205\267 \314>\203C\212\315 \210)$\203s\203R\316\230\203s\317\212\320\321!\210`)\212\322\321!\210`)\"\211%\203r%\316\232\204r%) \204\260i\fV\203\260\306&`\306\323'()\212\312 \210`&\203\240\313\324!!\203\240\325\225&\326\fT!\210'\204\336o\204\312(\204\312*\203\312\212\327u\210\313\330!\205\306\313\331!?)\204\336o\204(\204+\203+ \203\306'\332\333!\210`&X\203\362\323(\202\245\313\334!\203\377\335\306x\210\202\245\321u\210\202\245,\203 \336`S!\337=\203\336`!\337=\204 \340&!\210\335\306x\210`,-\212-b\210n?\205e\212\341\306w\210l)?\205e&\205F`&X?\205e.\205d`/\312 \210\342./\323#\205c`/=)?)\203\252i0\212\335\306x\210`-U)\203\2011\323!\210\202\214\212-b\2101\323!\210) \311=\204\235\212\325\210\343 \306\323#\210)i0Y\203\246\323)\202\254\323*\202s\343 \323\211#\210\323-\207" [fill-prefix give-up bol justify fc auto-fill-inhibit-regexp nil current-justification current-fill-column left beginning-of-line looking-at (full center right) unjustify-current-line "" fill-context-prefix backward-paragraph 1 forward-paragraph t regexp-quote 0 move-to-column -1 "\\. " "\\. " re-search-backward "[ ]\\|\\c|.\\|.\\c|\\|^" "[ ]" " " charset-after ascii fill-find-break-point " " re-search-forward justify-current-line adaptive-fill-mode prefix after-prefix first bounce opoint sentence-end-double-space fill-nobreak-predicate enable-multibyte-characters fill-point comment-start-skip limit prev-column comment-line-break-function] 6 (#$ . 24729)]) (defalias 'ess-containing-sexp-position #[nil "\300 A@\207" [syntax-ppss] 1]) #@49 Like (line-end-position) but stops at comments. (defalias 'ess-code-end-position #[nil "\212\300 Tb\210\301\302!\210`)\207" [line-end-position forward-comment -1] 2 (#$ . 26701)]) (defvar ess-r-set-function-start "^set[MGAR][GMa-z]+\\s-?(") #@59 Regexp to match the beginning of a function in S buffers. (defvar ess-function-pattern nil (#$ . 26948)) #@50 The regular expression for matching an R symbol. (defvar ess-r-symbol-pattern "\\(\\sw\\|\\s_\\)" (#$ . 27059)) #@47 The regular expression for matching a R name. (defvar ess-r-name-pattern (concat "\\(" ess-r-symbol-pattern "+\\|\\(`\\).+`\\)") (#$ . 27177)) (byte-code "\306\307\310\211\311P\312\313\314\315\f \316 \317\260\320\f\321\322\260\323\324\325\326\260\327\330Q!\210\331\332Q!\210.\n\333\207" [Q repl Sym-0 Symb xSymb _or_ "\\s\"" "\\(<-\\)?" "\\(\\sw\\|\\s_\\)" "+" "[^ \n\"']+" "\\)\\|\\(" "\\(\\s-\\|\n\\)*" "\\(\\(\\(" "\\(^\\|[ ]\\)" "\\)\\)" "^set\\(As\\|Method\\|Generic\\|GroupGeneric\\|ReplaceMethod\\)(" "," ".*" "\\|" "\\)\\(" "\\s<.*\\s>\\)*" "function\\s-*(" (lambda (def-tmp-var) (defvar ess-r-function-pattern def-tmp-var "The regular expression for matching the beginning of an R function.")) "\\s-*\\(<-\\|=\\)" (lambda (def-tmp-var) (defvar ess-s-function-pattern def-tmp-var "The regular expression for matching the beginning of an S function.")) "\\s-*\\(<-\\|_\\|=\\)" nil space part-1 set-S4-exp part-2] 9) (defvar ess--fn-name-start-cache nil) #@258 Return (FN-NAME . START-POS). FN-NAME is a function name located before the pointer. START-POS is the position where FN-NAME starts. LOOK-BACK is a number of characters to look back; defaults to 2000. Store this cons in variable `ess--fn-name-start-cache'. (defalias 'ess--fn-name-start #[(&optional look-back) "\212\214\306p!\211\205 \307!\211\203` Y\203 `}\210\310\311!\203/\312\302!\203/\n\203/\311 \210\313 ?\205q\3141me`\315Z]`}\210\316\317!\210\320\321!\204R\316\317!\210\202E\322\323 !\211\205h \f\235?\205h ` GZB)0\202o\210\324\211,\207" [proc mark ess-noweb-mode funname ess-S-non-functions ess--fn-name-start-cache get-buffer-process process-mark fboundp ess-noweb-narrow-to-chunk boundp ess-inside-string-p (error) 1000 up-list -1 looking-at "(" symbol-name ess-symbol-at-point nil] 4 (#$ . 28183)]) #@189 Leave (and return) the point at the beginning of the current ESS function. If the optional argument NO-ERROR is non-nil, the function returns nil when it cannot find a function beginning. (defalias 'ess-beginning-of-function #[(&optional no-error) "`\306\211\211\211\307\310\311\312!\313#\203\314u\210`\315\316\317\f \fZ#!\210 \314V\203T\320 \311\321!T\313#\203T\313`\315\316\322\n\"!\210 b\210\307\323\311\324!\313#\210\307\310\311 \313#\210\202X\315\325!\210\204\262\320e\313#\203k\326`!\203~\fb\210\203z\313\306\202~\327\330!\210\204X`\315\316\331\332\224\332\225\n$!\210\333 !\334\314!\210 \204\237\335\314!\210`\nb\210 \fY\205\255\n\fX\211\203\\\n-\207" [done end beg in-set-S4 init-point ess-r-set-function-start nil search-forward "(" ess-line-end-position 2 t 1 ess-write-to-dribble-buffer format "ess-BEG-of-fun after 'search-FWD (': Ini-pt %d, (p)-Ini-pt = %d\n" re-search-backward -1 " set*() function start at position %d" "function" 4 "ELSE not in setMethod() header ...\n" ess-inside-string-or-comment-p error "Point is not in a function according to 'ess-function-pattern'" " Match,Pt:(%d,%d),%d\n" 0 looking-at forward-list forward-sexp ess-function-pattern no-error] 7 (#$ . 29021) nil]) #@122 Leave the point at the end of the current ESS function. Optional argument for location of BEGINNING. Return '(beg end). (defalias 'ess-end-of-function #[(&optional beginning no-error) "\203\nb\210\202\306 !\205V\307\n!\310\211\311\312\313 #!\210\314\315!\210 \204.\316\315!\210\311\312\317`\"!\210\320 `\fW\203R\212\316\315!\210`)\212\321\315!\210`)^b\210\2028`+D\207" [beginning no-error ess-r-set-function-start npos end-pos in-set-S4 ess-beginning-of-function looking-at nil ess-write-to-dribble-buffer format "ess-END-of-fun: S4=%s, beginning = %d\n" forward-list 1 forward-sexp "ess-END-of-fun: found #1 : %d\n" ess-line-end-position forward-paragraph] 5 (#$ . 30268) nil]) #@140 Like `symbol-at-point' but consider fully qualified names. Fully qualified names include accessor symbols (like aaa$bbb and aaa@bbb in R). (defalias 'ess-symbol-at-point #[nil "\304 p\305\216\306\n\206 \206\304 !\210\307 +\207" [#1=#:buffer #2=#:table ess-mode-completion-syntax-table ess-mode-syntax-table syntax-table #[nil "rq\210\302 !)\207" [#1# #2# set-syntax-table] 2] set-syntax-table symbol-at-point] 2 (#$ . 30972)]) #@57 Get bounds of symbol at point. Intended for completion. (defalias 'ess-bounds-of-symbol #[nil "\305 p\306\216\307\n\206 \206\305 !\210\310\311!+\211\205+\212\f@b\210\312\313!)?\205+\f)\207" [#1=#:buffer #2=#:table ess-mode-completion-syntax-table ess-mode-syntax-table bounds syntax-table #[nil "rq\210\302 !)\207" [#1# #2# set-syntax-table] 2] set-syntax-table bounds-of-thing-at-point symbol looking-at "/\\|.[0-9]"] 3 (#$ . 31412)]) #@143 Get initial position for objects completion. Symbols are fully qualified names that include accessor symbols (like aaa$bbb and aaa@bbb in R). (defalias 'ess-symbol-start #[nil "\300 @\207" [ess-bounds-of-symbol] 1 (#$ . 31865)]) #@43 Get initial position for args completion. (defalias 'ess-arg-start #[nil "\300 ?\205\301 \205\302\303\304\"\203`\207\305 \207" [ess-inside-string-p ess--fn-name-start looking-back "[(,]+[ \n]*" nil ess-symbol-start] 3 (#$ . 32100)]) #@66 Return non-nil if POS is inside string. POS defaults to `point'. (defalias 'ess-inside-string-p #[(&optional pos) "\206`\301\302!8)\207" [pos 3 syntax-ppss] 3 (#$ . 32346)]) #@66 Return non-nil if POS is inside string. POS defaults to `point'. (defalias 'ess-inside-comment-p #[(&optional pos) "\206`\301\302!8)\207" [pos 4 syntax-ppss] 3 (#$ . 32531)]) #@79 Return non-nil if POS is inside a string or comment. POS defaults to `point'. (defalias 'ess-inside-string-or-comment-p #[(&optional pos) "\301!\206 \302!\207" [pos ess-inside-string-p ess-inside-comment-p] 2 (#$ . 32717)]) #@152 Return t if position POS is inside brackets. POS defaults to point if no value is given. If CURLY?? is non nil also return t if inside curly brackets. (defalias 'ess-inside-brackets-p #[(&optional pos curly\?) "\212\304!\305\211@\306V\2034 \2044\nA@b\210\307\310\305f\"\204+ \203-\307\311\305f\"\203-\312\304 \211\202 +\207" [pos r ppss curly\? syntax-ppss nil 0 char-equal 91 123 t] 4 (#$ . 32951)]) (defalias 'ess-quote-special-chars #[(string) "\301\302\303\301\304\211\305\306%#\207" [string replace-regexp-in-string "\"" "\\\\\\&" "\\\\" nil t] 9]) #@111 Get the word you're on (cheap algorithm). Use `ess-read-object-name-default' for a better but slower version. (defalias 'ess-extract-word-name #[nil "\212\300\301\302\303#\210\304\224\304\225{)\207" [re-search-forward "\\<\\w+\\>" nil t 0] 4 (#$ . 33525)]) #@253 Instead of (replace-regexp..) -- do NOT replace in strings or comments. If FIXEDCASE is non-nil, do *not* alter case of replacement text. If LITERAL is non-nil, do *not* treat `\' as special. If VERBOSE is non-nil, (message ..) about replacements. (defalias 'ess-rep-regexp #[(regexp to-string &optional fixedcase literal verbose) "\205 ?`\306\307\f\306\310#\211\205C \nW\205C\n\311\nS!\204 \2038\312\224\313\314\n\n{$\210)\315 #\210\202 +\207" [case-fold-search fixedcase p ppt regexp verbose nil re-search-forward t ess-inside-string-or-comment-p 0 message "buffer in (match-beg.,p)=(%d,%d) is '%s'" replace-match beg to-string literal] 6 (#$ . 33789)]) #@190 Replace REGEXP matches from beginning of buffer with TO-STRING. If DONT-QUERY is non-nil, call `ess-rep-regexp' else call `query-replace-regexp'. VERBOSE can be passed to `ess-rep-regexp'. (defalias 'ess-replace-regexp-dump-to-src #[(regexp to-string &optional dont-query verbose) "\212eb\210\203\304 \n\305\211 %\202\306 \n\305#)\207" [dont-query regexp to-string verbose ess-rep-regexp nil query-replace-regexp] 6 (#$ . 34480)]) #@110 Replace-regexp .. ensuring space around all occurences of WORD. Start at from FROM, which defaults to point. (defalias 'ess-space-around #[(word &optional from verbose) "\212b\210\303\304 \305Q\306\307\211\n%\210b\210\303\310 \311Q\306\307\211\n%)\207" [from word verbose ess-rep-regexp "\\([^ \n]\\)\\(\\<" "\\>\\)" "\\1 \\2" nil "\\(\\<" "\\>\\)\\([^ \n]\\)"] 6 (#$ . 34923) "d\nP"]) #@116 Return a string for use as a timestamp, like "13 Mar 1992". Include hr:min if CLOCK is non-nil. Redefine to taste. (defalias 'ess-time-string #[(&optional clock) "\301\302\205\303P!\207" [clock format-time-string "%e %b %Y" ", %H:%M"] 3 (#$ . 35320)]) #@283 Replace all matches in STR for REGEXP with NEWTEXT string. Optional LITERAL non-nil means do a literal replacement. Otherwise treat \ in NEWTEXT string as special: \& means substitute original matched text, \N means substitute match for (...) number N, \\ means insert one \. (defalias 'ess-replace-in-string #[(str regexp newtext &optional literal) ";\204\n\306\307\"\210 ;\204\306\310 \"\210\311\312\313\211\211\314 #\211\203I \312\225\n O\203> \202C\315\316 \311#Q\202 \313OP-\207" [str newtext prev-start match special start error "(replace-in-string): First argument must be a string: %s" "(replace-in-string): 3rd arg must be a string: %s" "" 0 nil string-match mapconcat #[(c) "\203?\303 \304\267\202\305\207\n\306\224\306\225O\207 \307Y\203; \310X\203; \307\311 G\\V\2030\312\313 \"\207 \307Z\n \224 \225O\207\314 !\207 \315=\203I\316\303\207\314 !\207" [special c str nil #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (92 12 38 14)) "\\" 0 48 57 match-data error "(replace-in-string) Invalid match num: %c" char-to-string 92 t] 3] rtn-str regexp literal] 6 (#$ . 35582)]) #@216 *[Dis]activates (ess-nuke-trailing-whitespace). Disabled if nil; if t, it works unconditionally, otherwise, the user is queried. Note that setting the default to t may not be a good idea when you edit binary files! (defvar ess-nuke-trailing-whitespace-p nil (#$ . -36758)) #@328 Nuke all trailing whitespace in the buffer. Whitespace in this case is just spaces or tabs. This is a useful function to put on `write-file-hooks'. If the variable `ess-nuke-trailing-whitespace-p' is nil, this function is disabled. If t, unreservedly strip trailing whitespace. If not nil and not t, query for each instance. (defalias 'ess-nuke-trailing-whitespace #[nil "\305  \306\230\204@\307\230\204@\n\204@ \203@\310 \311\216\212\214~\210eb\210 \312=\203:\313\314d\312#\203?\315\224\315\225|\210\202)\316\314\317\"\210,)\320\207" [bname major-mode buffer-read-only ess-nuke-trailing-whitespace-p save-match-data-internal buffer-name "rmail-mode" "RMAIL" match-data #[nil "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3] t re-search-forward "[ ]+$" 0 query-replace-regexp "" nil] 4 (#$ . 37038) nil]) #@37 Write TEXT to `ess-dribble-buffer'. (defalias 'ess-write-to-dribble-buffer #[(text) "\204 \205r\304\n!q\210db\210\305 !)\207" [ess-verbose ess-write-to-dribble ess-dribble-buffer text get-buffer-create insert-before-markers] 2 (#$ . 37886)]) #@70 Write TEXT to `ess-dribble-buffer' only if `ess-verbose' is non-nil. (defalias 'ess-if-verbose-write #[(text) "\205\302 !\207" [ess-verbose text ess-write-to-dribble-buffer] 2 (#$ . 38139)]) (defalias 'ess-kill-last-line #[nil "\212db\210\300y\210\301 d|)\207" [-1 point-at-eol] 2]) #@52 Whether to adjust background color in code chunks. (defvar ess-adjust-chunk-faces t (#$ . 38431)) #@140 Internal usage: indicates whether a buffer has chunks. This is used to make face adjustment a no-op when a buffer does not contain chunks. (defvar ess-buffer-has-chunks nil (#$ . 38536)) (make-variable-buffer-local 'ess-buffer-has-chunks) #@40 Default intensity for adjusting faces. (defvar ess-adjust-face-intensity 2 (#$ . 38781)) #@95 Adjust face background between START and END. On dark background, lighten. Oposite on light. (defalias 'ess-adjust-face-background #[(start end &optional intensity) "\206 \306\307\310!\311\312\313\"\314=\203[\202\"\315\nBC\316 \317\211\317\320\216\321\303 $.\207" [intensity ess-adjust-face-intensity color face #1=#:modified buffer-undo-list color-lighten-name face-background default frame-parameter nil background-mode light background-color buffer-modified-p t #[nil "?\205\301\302!\207" [#1# restore-buffer-modified-p nil] 2] ess-adjust-face-properties inhibit-read-only inhibit-modification-hooks start end] 6 (#$ . 38876)]) #@111 Tweaked `font-lock-prepend-text-property'. Adds the `ess-face-adjusted' property so we only adjust face once. (defalias 'ess-adjust-face-properties #[(start end prop value) "<\203 \202 C\306\211\f U?\205`\307\f\306 $\310\f\"\311>\203B <\203B\312 @!\204? @\313>\203B C\314\f\n\315 <\203R \202T C\"\316\317F#\210\n\211\202+\207" [value prev next val start end nil next-single-property-change get-text-property (face font-lock-face) keywordp (foreground-color background-color) add-text-properties append ess-face-adjusted t prop] 8 (#$ . 39541)]) (defalias 'ess-find-overlay #[(pos prop) "\301\302\303!\"\207" [pos cl-some #[(overlay) "\302 \"\205\207" [overlay prop overlay-get] 3] overlays-at] 4]) #@69 Put Emacs to sleep for `ess-sleep-for-shell' seconds (floats work). (defalias 'ess-sleep #[nil "\301!\207" [ess-sleep-for-shell sleep-for] 2 (#$ . 40280)]) #@63 Set language variables from ALIST, in buffer BUF, if desired. (defalias 'ess-setq-vars-local #[(alist &optional buf) "\203q\210\302\303 \"\207" [buf alist mapc #[(pair) "\302@!\210@\303A!L\210 \205\304@\305\306#\207" [pair ess--make-local-vars-permanent make-local-variable eval put permanent-local t] 4]] 3 (#$ . 40443)]) #@63 Set language variables from ALIST, in buffer BUF, if desired. (defalias 'ess-setq-vars-default #[(alist &optional buf) "\203q\210\302\303 \"\207" [buf alist mapc #[(pair) "\301@\302A!\"\207" [pair set-default eval] 4]] 3 (#$ . 40782)]) #@30 Regexp to search for errors. (defvar ess-error-regexp "^\\(Syntax error: .*\\) at line \\([0-9]*\\), file \\(.*\\)$" (#$ . 41030)) (provide 'ess-utils)