Update all packages
This commit is contained in:
@@ -341,7 +341,7 @@
|
|||||||
((:keywords "killing" "convenience")
|
((:keywords "killing" "convenience")
|
||||||
(:url . "https://github.com/leoliu/easy-kill"))])
|
(:url . "https://github.com/leoliu/easy-kill"))])
|
||||||
(ebdb .
|
(ebdb .
|
||||||
[(0 5 3)
|
[(0 5 4)
|
||||||
((emacs
|
((emacs
|
||||||
(25 1))
|
(25 1))
|
||||||
(cl-lib
|
(cl-lib
|
||||||
@@ -375,14 +375,16 @@
|
|||||||
((:url . "http://elpa.gnu.org/packages/ediprolog.html")
|
((:url . "http://elpa.gnu.org/packages/ediprolog.html")
|
||||||
(:keywords "languages" "processes"))])
|
(:keywords "languages" "processes"))])
|
||||||
(eglot .
|
(eglot .
|
||||||
[(1 0)
|
[(1 1)
|
||||||
((emacs
|
((emacs
|
||||||
(26 1)))
|
(26 1))
|
||||||
|
(jsonrpc
|
||||||
|
(1 0 0)))
|
||||||
"Client for Language Server Protocol (LSP) servers" tar
|
"Client for Language Server Protocol (LSP) servers" tar
|
||||||
((:keywords "convenience" "languages")
|
((:keywords "convenience" "languages")
|
||||||
(:url . "https://github.com/joaotavora/eglot"))])
|
(:url . "https://github.com/joaotavora/eglot"))])
|
||||||
(el-search .
|
(el-search .
|
||||||
[(1 7 1)
|
[(1 7 2)
|
||||||
((emacs
|
((emacs
|
||||||
(25))
|
(25))
|
||||||
(stream
|
(stream
|
||||||
@@ -448,6 +450,13 @@
|
|||||||
nil "Parse and browse f90 interfaces" single
|
nil "Parse and browse f90 interfaces" single
|
||||||
((:url . "http://github.com/wence-/f90-iface/")
|
((:url . "http://github.com/wence-/f90-iface/")
|
||||||
(:keywords))])
|
(:keywords))])
|
||||||
|
(filladapt .
|
||||||
|
[(2 12 2)
|
||||||
|
((emacs
|
||||||
|
(24 4)))
|
||||||
|
"Adaptive fill" single
|
||||||
|
((:url . "http://elpa.gnu.org/packages/filladapt.html")
|
||||||
|
(:keywords))])
|
||||||
(flylisp .
|
(flylisp .
|
||||||
[(0 2)
|
[(0 2)
|
||||||
((emacs
|
((emacs
|
||||||
@@ -614,7 +623,7 @@
|
|||||||
(jsonrpc .
|
(jsonrpc .
|
||||||
[(1 0 0)
|
[(1 0 0)
|
||||||
((emacs
|
((emacs
|
||||||
(26 1)))
|
(25 2)))
|
||||||
"JSON-RPC library" single
|
"JSON-RPC library" single
|
||||||
((:url . "http://elpa.gnu.org/packages/jsonrpc.html")
|
((:url . "http://elpa.gnu.org/packages/jsonrpc.html")
|
||||||
(:keywords "processes" "languages" "extensions"))])
|
(:keywords "processes" "languages" "extensions"))])
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Good signature from 474F05837FBDEF9B GNU ELPA Signing Agent <elpasign@elpa.gnu.org> (trust undefined) created at 2018-07-02T06:10:03-0300 using DSA
|
Good signature from 474F05837FBDEF9B GNU ELPA Signing Agent <elpasign@elpa.gnu.org> (trust undefined) created at 2018-07-17T06:10:03-0300 using DSA
|
||||||
File diff suppressed because one or more lines are too long
@@ -112,18 +112,28 @@
|
|||||||
(nth 3 res) (plist-get (nthcdr 4 res) :predicate))))
|
(nth 3 res) (plist-get (nthcdr 4 res) :predicate))))
|
||||||
(cdr (assq 'display-sort-function meta))))))
|
(cdr (assq 'display-sort-function meta))))))
|
||||||
(`match
|
(`match
|
||||||
;; Can't just use 0 when base-size (see above) is non-zero.
|
;; Ask the for the `:company-match' function. If that doesn't help,
|
||||||
(let ((start (if (get-text-property 0 'face arg)
|
;; fallback to sniffing for face changes to get a suitable value.
|
||||||
0
|
(let ((f (plist-get (nthcdr 4 (company--capf-data)) :company-match)))
|
||||||
(next-single-property-change 0 'face arg))))
|
(if f (funcall f arg)
|
||||||
(when start
|
(let* ((match-start nil) (pos -1)
|
||||||
;; completions-common-part comes first, but we can't just look for this
|
(prop-value nil) (faces nil)
|
||||||
;; value because it can be in a list.
|
(has-face-p nil) chunks
|
||||||
(or
|
(limit (length arg)))
|
||||||
(let ((value (get-text-property start 'face arg)))
|
(while (< pos limit)
|
||||||
(text-property-not-all start (length arg)
|
(setq pos
|
||||||
'face value arg))
|
(if (< pos 0) 0 (next-property-change pos arg limit)))
|
||||||
(length arg)))))
|
(setq prop-value (or
|
||||||
|
(get-text-property pos 'face arg)
|
||||||
|
(get-text-property pos 'font-lock-face arg))
|
||||||
|
faces (if (listp prop-value) prop-value (list prop-value))
|
||||||
|
has-face-p (memq 'completions-common-part faces))
|
||||||
|
(cond ((and (not match-start) has-face-p)
|
||||||
|
(setq match-start pos))
|
||||||
|
((and match-start (not has-face-p))
|
||||||
|
(push (cons match-start pos) chunks)
|
||||||
|
(setq match-start nil))))
|
||||||
|
(nreverse chunks)))))
|
||||||
(`duplicates t)
|
(`duplicates t)
|
||||||
(`no-cache t) ;Not much can be done here, as long as we handle
|
(`no-cache t) ;Not much can be done here, as long as we handle
|
||||||
;non-prefix matches.
|
;non-prefix matches.
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
(define-package "company" "20180615.1508" "Modular text completion framework"
|
(define-package "company" "20180704.701" "Modular text completion framework"
|
||||||
'((emacs "24.3"))
|
'((emacs "24.3"))
|
||||||
:keywords
|
:keywords
|
||||||
'("abbrev" "convenience" "matching")
|
'("abbrev" "convenience" "matching")
|
||||||
@@ -403,10 +403,13 @@ be kept if they have different annotations. For that to work properly,
|
|||||||
backends should store the related information on candidates using text
|
backends should store the related information on candidates using text
|
||||||
properties.
|
properties.
|
||||||
|
|
||||||
`match': The second argument is a completion candidate. Return the index
|
`match': The second argument is a completion candidate. Return a positive
|
||||||
after the end of text matching `prefix' within the candidate string. It
|
integer, the index after the end of text matching `prefix' within the
|
||||||
will be used when rendering the popup. This command only makes sense for
|
candidate string. Alternatively, return a list of (CHUNK-START
|
||||||
backends that provide non-prefix completion.
|
. CHUNK-END) elements, where CHUNK-START and CHUNK-END are indexes within
|
||||||
|
the candidate string. The corresponding regions are be used when rendering
|
||||||
|
the popup. This command only makes sense for backends that provide
|
||||||
|
non-prefix completion.
|
||||||
|
|
||||||
`require-match': If this returns t, the user is not allowed to enter
|
`require-match': If this returns t, the user is not allowed to enter
|
||||||
anything not offered as a candidate. Please don't use that value in normal
|
anything not offered as a candidate. Please don't use that value in normal
|
||||||
@@ -2507,7 +2510,6 @@ If SHOW-VERSION is non-nil, show the version in the echo area."
|
|||||||
(- width (length annotation)))
|
(- width (length annotation)))
|
||||||
annotation))
|
annotation))
|
||||||
right)))
|
right)))
|
||||||
(setq common (+ (min common width) margin))
|
|
||||||
(setq width (+ width margin (length right)))
|
(setq width (+ width margin (length right)))
|
||||||
|
|
||||||
(font-lock-append-text-property 0 width 'mouse-face
|
(font-lock-append-text-property 0 width 'mouse-face
|
||||||
@@ -2519,11 +2521,17 @@ If SHOW-VERSION is non-nil, show the version in the echo area."
|
|||||||
'company-tooltip-annotation-selection
|
'company-tooltip-annotation-selection
|
||||||
'company-tooltip-annotation)
|
'company-tooltip-annotation)
|
||||||
line))
|
line))
|
||||||
(font-lock-prepend-text-property margin common 'face
|
(cl-loop
|
||||||
|
with width = (- width (length right))
|
||||||
|
for (comp-beg . comp-end) in (if (integerp common) `((0 . ,common)) common)
|
||||||
|
for inline-beg = (+ margin comp-beg)
|
||||||
|
for inline-end = (min (+ margin comp-end) width)
|
||||||
|
when (< inline-beg width)
|
||||||
|
do (font-lock-prepend-text-property inline-beg inline-end 'face
|
||||||
(if selected
|
(if selected
|
||||||
'company-tooltip-common-selection
|
'company-tooltip-common-selection
|
||||||
'company-tooltip-common)
|
'company-tooltip-common)
|
||||||
line)
|
line))
|
||||||
(when (let ((re (funcall company-search-regexp-function
|
(when (let ((re (funcall company-search-regexp-function
|
||||||
company-search-string)))
|
company-search-string)))
|
||||||
(and (not (string= re ""))
|
(and (not (string= re ""))
|
||||||
@@ -59,6 +59,9 @@ or radio, offer completion of all possible values.
|
|||||||
Otherwise, offer a variant of `eval-expression', with the initial
|
Otherwise, offer a variant of `eval-expression', with the initial
|
||||||
input corresponding to the chosen variable.
|
input corresponding to the chosen variable.
|
||||||
|
|
||||||
|
With a prefix arg, restrict list to variables defined using
|
||||||
|
`defcustom'.
|
||||||
|
|
||||||
\(fn SYM)" t nil)
|
\(fn SYM)" t nil)
|
||||||
|
|
||||||
(autoload 'counsel-apropos "counsel" "\
|
(autoload 'counsel-apropos "counsel" "\
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
;;; -*- no-byte-compile: t -*-
|
;;; -*- no-byte-compile: t -*-
|
||||||
(define-package "counsel" "20180625.634" "Various completion functions using Ivy" '((emacs "24.3") (swiper "0.9.0")))
|
(define-package "counsel" "20180717.845" "Various completion functions using Ivy" '((emacs "24.3") (swiper "0.9.0")))
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
;; Author: Oleh Krehel <ohwoeowho@gmail.com>
|
;; Author: Oleh Krehel <ohwoeowho@gmail.com>
|
||||||
;; URL: https://github.com/abo-abo/swiper
|
;; URL: https://github.com/abo-abo/swiper
|
||||||
;; Package-Version: 20180625.634
|
;; Package-Version: 20180717.845
|
||||||
;; Version: 0.10.0
|
;; Version: 0.10.0
|
||||||
;; Package-Requires: ((emacs "24.3") (swiper "0.9.0"))
|
;; Package-Requires: ((emacs "24.3") (swiper "0.9.0"))
|
||||||
;; Keywords: convenience, matching, tools
|
;; Keywords: convenience, matching, tools
|
||||||
@@ -46,10 +46,19 @@
|
|||||||
(require 'dired)
|
(require 'dired)
|
||||||
|
|
||||||
;;* Utility
|
;;* Utility
|
||||||
(defun counsel-more-chars (n)
|
(defvar counsel-more-chars-alist
|
||||||
"Return two fake candidates prompting for at least N input."
|
'((counsel-grep . 2)
|
||||||
|
(t . 3))
|
||||||
|
"Minimum amount of characters to prompt for before fetching candidates.")
|
||||||
|
|
||||||
|
(defun counsel-more-chars ()
|
||||||
|
"Return two fake candidates prompting for at least N input.
|
||||||
|
N is obtained from `counsel-more-chars-alist'."
|
||||||
|
(let ((len (length ivy-text))
|
||||||
|
(n (ivy-alist-setting counsel-more-chars-alist)))
|
||||||
|
(when (< len n)
|
||||||
(list ""
|
(list ""
|
||||||
(format "%d chars more" (- n (length ivy-text)))))
|
(format "%d chars more" (- n len))))))
|
||||||
|
|
||||||
(defun counsel-unquote-regex-parens (str)
|
(defun counsel-unquote-regex-parens (str)
|
||||||
"Unquote regex parenthesis in STR."
|
"Unquote regex parenthesis in STR."
|
||||||
@@ -465,7 +474,7 @@ Update the minibuffer with the amount of lines collected every
|
|||||||
#'xref-push-marker-stack
|
#'xref-push-marker-stack
|
||||||
(require 'etags)
|
(require 'etags)
|
||||||
(lambda (&optional m)
|
(lambda (&optional m)
|
||||||
(ring-insert find-tag-marker-ring (or m (point-marker)))))
|
(ring-insert (with-no-warnings find-tag-marker-ring) (or m (point-marker)))))
|
||||||
"Compatibility shim for `xref-push-marker-stack'.")
|
"Compatibility shim for `xref-push-marker-stack'.")
|
||||||
|
|
||||||
(defun counsel--find-symbol (x)
|
(defun counsel--find-symbol (x)
|
||||||
@@ -648,10 +657,15 @@ When the selected variable is a `defcustom' with the type boolean
|
|||||||
or radio, offer completion of all possible values.
|
or radio, offer completion of all possible values.
|
||||||
|
|
||||||
Otherwise, offer a variant of `eval-expression', with the initial
|
Otherwise, offer a variant of `eval-expression', with the initial
|
||||||
input corresponding to the chosen variable."
|
input corresponding to the chosen variable.
|
||||||
|
|
||||||
|
With a prefix arg, restrict list to variables defined using
|
||||||
|
`defcustom'."
|
||||||
(interactive (list (intern
|
(interactive (list (intern
|
||||||
(ivy-read "Variable: "
|
(ivy-read "Variable: " (counsel-variable-list)
|
||||||
(counsel-variable-list)
|
:predicate (and current-prefix-arg
|
||||||
|
(lambda (varname)
|
||||||
|
(get (intern varname) 'custom-type)))
|
||||||
:preselect (ivy-thing-at-point)
|
:preselect (ivy-thing-at-point)
|
||||||
:history 'counsel-set-variable-history))))
|
:history 'counsel-set-variable-history))))
|
||||||
(let ((doc (and (require 'cus-edit)
|
(let ((doc (and (require 'cus-edit)
|
||||||
@@ -1267,17 +1281,17 @@ Typical value: '(recenter)."
|
|||||||
:type 'hook
|
:type 'hook
|
||||||
:group 'ivy)
|
:group 'ivy)
|
||||||
|
|
||||||
(defun counsel-git-grep-function (string &optional _pred &rest _unused)
|
(defun counsel-git-grep-function (str &optional _pred &rest _unused)
|
||||||
"Grep in the current git repository for STRING."
|
"Grep in the current git repository for STRING."
|
||||||
(if (and (> counsel--git-grep-count counsel--git-grep-count-threshold)
|
(or
|
||||||
(< (length string) 3))
|
(and (> counsel--git-grep-count counsel--git-grep-count-threshold)
|
||||||
(counsel-more-chars 3)
|
(counsel-more-chars))
|
||||||
(let* ((default-directory (ivy-state-directory ivy-last))
|
(let* ((default-directory (ivy-state-directory ivy-last))
|
||||||
(cmd (format counsel-git-grep-cmd
|
(cmd (format counsel-git-grep-cmd
|
||||||
(setq ivy--old-re (ivy--regex string t)))))
|
(setq ivy--old-re (ivy--regex str t)))))
|
||||||
(if (<= counsel--git-grep-count counsel--git-grep-count-threshold)
|
(if (<= counsel--git-grep-count counsel--git-grep-count-threshold)
|
||||||
(split-string (shell-command-to-string cmd) "\n" t)
|
(split-string (shell-command-to-string cmd) "\n" t)
|
||||||
(counsel--gg-candidates (ivy--regex string))
|
(counsel--gg-candidates (ivy--regex str))
|
||||||
nil))))
|
nil))))
|
||||||
|
|
||||||
(defun counsel-git-grep-action (x)
|
(defun counsel-git-grep-action (x)
|
||||||
@@ -1409,11 +1423,12 @@ INITIAL-INPUT can be given as the initial minibuffer input."
|
|||||||
:unwind unwind-function
|
:unwind unwind-function
|
||||||
:history 'counsel-git-grep-history
|
:history 'counsel-git-grep-history
|
||||||
:caller 'counsel-git-grep))))
|
:caller 'counsel-git-grep))))
|
||||||
|
(cl-pushnew 'counsel-git-grep ivy-highlight-grep-commands)
|
||||||
|
|
||||||
(defun counsel-git-grep-proj-function (str)
|
(defun counsel-git-grep-proj-function (str)
|
||||||
"Grep for STR in the current git repository."
|
"Grep for STR in the current git repository."
|
||||||
(if (< (length str) 3)
|
(or
|
||||||
(counsel-more-chars 3)
|
(counsel-more-chars)
|
||||||
(let ((regex (setq ivy--old-re
|
(let ((regex (setq ivy--old-re
|
||||||
(ivy--regex str t))))
|
(ivy--regex str t))))
|
||||||
(counsel--async-command (format counsel-git-grep-cmd regex))
|
(counsel--async-command (format counsel-git-grep-cmd regex))
|
||||||
@@ -1581,19 +1596,20 @@ done") "\n" t)))
|
|||||||
(defvar counsel-git-log-split-string-re "\ncommit "
|
(defvar counsel-git-log-split-string-re "\ncommit "
|
||||||
"The `split-string' separates when split output of `counsel-git-log-cmd'.")
|
"The `split-string' separates when split output of `counsel-git-log-cmd'.")
|
||||||
|
|
||||||
(defun counsel-git-log-function (input)
|
(defun counsel-git-log-function (str)
|
||||||
"Search for INPUT in git log."
|
"Search for STR in git log."
|
||||||
(if (< (length input) 3)
|
(or
|
||||||
(counsel-more-chars 3)
|
(counsel-more-chars)
|
||||||
|
(progn
|
||||||
;; `counsel--yank-pop-format-function' uses this
|
;; `counsel--yank-pop-format-function' uses this
|
||||||
(setq ivy--old-re (funcall ivy--regex-function input))
|
(setq ivy--old-re (funcall ivy--regex-function str))
|
||||||
(counsel--async-command
|
(counsel--async-command
|
||||||
;; "git log --grep" likes to have groups quoted e.g. \(foo\).
|
;; "git log --grep" likes to have groups quoted e.g. \(foo\).
|
||||||
;; But it doesn't like the non-greedy ".*?".
|
;; But it doesn't like the non-greedy ".*?".
|
||||||
(format counsel-git-log-cmd
|
(format counsel-git-log-cmd
|
||||||
(replace-regexp-in-string "\\.\\*\\?" ".*"
|
(replace-regexp-in-string "\\.\\*\\?" ".*"
|
||||||
(ivy-re-to-str ivy--old-re))))
|
(ivy-re-to-str ivy--old-re))))
|
||||||
nil))
|
nil)))
|
||||||
|
|
||||||
(defun counsel-git-log-action (x)
|
(defun counsel-git-log-action (x)
|
||||||
"Add candidate X to kill ring."
|
"Add candidate X to kill ring."
|
||||||
@@ -2176,11 +2192,12 @@ string - the full shell command to run."
|
|||||||
|
|
||||||
(defun counsel-locate-function (input)
|
(defun counsel-locate-function (input)
|
||||||
"Call the \"locate\" shell command with INPUT."
|
"Call the \"locate\" shell command with INPUT."
|
||||||
(if (< (length input) 3)
|
(or
|
||||||
(counsel-more-chars 3)
|
(counsel-more-chars)
|
||||||
|
(progn
|
||||||
(counsel--async-command
|
(counsel--async-command
|
||||||
(funcall counsel-locate-cmd input))
|
(funcall counsel-locate-cmd input))
|
||||||
'("" "working...")))
|
'("" "working..."))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun counsel-locate (&optional initial-input)
|
(defun counsel-locate (&optional initial-input)
|
||||||
@@ -2421,15 +2438,15 @@ regex string."
|
|||||||
(ivy-set-occur 'counsel-ag 'counsel-ag-occur)
|
(ivy-set-occur 'counsel-ag 'counsel-ag-occur)
|
||||||
(ivy-set-display-transformer 'counsel-ag 'counsel-git-grep-transformer)
|
(ivy-set-display-transformer 'counsel-ag 'counsel-git-grep-transformer)
|
||||||
|
|
||||||
(defun counsel-ag-function (string)
|
(defun counsel-ag-function (str)
|
||||||
"Grep in the current directory for STRING using BASE-CMD.
|
"Grep in the current directory for STRING using BASE-CMD.
|
||||||
If non-nil, append EXTRA-AG-ARGS to BASE-CMD."
|
If non-nil, append EXTRA-AG-ARGS to BASE-CMD."
|
||||||
(if (< (length string) 3)
|
(or
|
||||||
(counsel-more-chars 3)
|
(counsel-more-chars)
|
||||||
(let ((default-directory (ivy-state-directory ivy-last))
|
(let ((default-directory (ivy-state-directory ivy-last))
|
||||||
(regex (counsel-unquote-regex-parens
|
(regex (counsel-unquote-regex-parens
|
||||||
(setq ivy--old-re
|
(setq ivy--old-re
|
||||||
(ivy--regex string)))))
|
(ivy--regex str)))))
|
||||||
(counsel--async-command (format counsel-ag-command
|
(counsel--async-command (format counsel-ag-command
|
||||||
(shell-quote-argument regex)))
|
(shell-quote-argument regex)))
|
||||||
nil)))
|
nil)))
|
||||||
@@ -2457,17 +2474,16 @@ AG-PROMPT, if non-nil, is passed as `ivy-read' prompt argument."
|
|||||||
(car (split-string counsel-ag-command)))))))
|
(car (split-string counsel-ag-command)))))))
|
||||||
(when (null extra-ag-args)
|
(when (null extra-ag-args)
|
||||||
(setq extra-ag-args ""))
|
(setq extra-ag-args ""))
|
||||||
(let* ((args-end (string-match " -- " extra-ag-args))
|
(let* ((args-end (string-match "-- " extra-ag-args))
|
||||||
(file (if args-end
|
(file (if args-end
|
||||||
(substring-no-properties extra-ag-args (+ args-end 3))
|
(substring-no-properties extra-ag-args (match-end 0))
|
||||||
""))
|
""))
|
||||||
(extra-ag-args (if args-end
|
(extra-ag-args (if args-end
|
||||||
(substring-no-properties extra-ag-args 0 args-end)
|
(substring-no-properties extra-ag-args 0 args-end)
|
||||||
extra-ag-args)))
|
extra-ag-args)))
|
||||||
(setq counsel-ag-command (format counsel-ag-command
|
(setq counsel-ag-command (format counsel-ag-command
|
||||||
(concat extra-ag-args
|
(concat extra-ag-args
|
||||||
" -- "
|
" -- %s "
|
||||||
"%s"
|
|
||||||
file))))
|
file))))
|
||||||
(ivy-set-prompt 'counsel-ag counsel-prompt-function)
|
(ivy-set-prompt 'counsel-ag counsel-prompt-function)
|
||||||
(let ((default-directory (or initial-directory
|
(let ((default-directory (or initial-directory
|
||||||
@@ -2484,6 +2500,7 @@ AG-PROMPT, if non-nil, is passed as `ivy-read' prompt argument."
|
|||||||
(counsel-delete-process)
|
(counsel-delete-process)
|
||||||
(swiper--cleanup))
|
(swiper--cleanup))
|
||||||
:caller 'counsel-ag)))
|
:caller 'counsel-ag)))
|
||||||
|
(cl-pushnew 'counsel-ag ivy-highlight-grep-commands)
|
||||||
|
|
||||||
(defun counsel-grep-like-occur (cmd-template)
|
(defun counsel-grep-like-occur (cmd-template)
|
||||||
(unless (eq major-mode 'ivy-occur-grep-mode)
|
(unless (eq major-mode 'ivy-occur-grep-mode)
|
||||||
@@ -2526,6 +2543,7 @@ This uses `counsel-ag' with `counsel-pt-base-command' instead of
|
|||||||
(interactive)
|
(interactive)
|
||||||
(let ((counsel-ag-base-command counsel-pt-base-command))
|
(let ((counsel-ag-base-command counsel-pt-base-command))
|
||||||
(counsel-ag initial-input)))
|
(counsel-ag initial-input)))
|
||||||
|
(cl-pushnew 'counsel-pt ivy-highlight-grep-commands)
|
||||||
|
|
||||||
;;** `counsel-ack'
|
;;** `counsel-ack'
|
||||||
(defcustom counsel-ack-base-command
|
(defcustom counsel-ack-base-command
|
||||||
@@ -2570,6 +2588,7 @@ RG-PROMPT, if non-nil, is passed as `ivy-read' prompt argument."
|
|||||||
(interactive)
|
(interactive)
|
||||||
(let ((counsel-ag-base-command counsel-rg-base-command))
|
(let ((counsel-ag-base-command counsel-rg-base-command))
|
||||||
(counsel-ag initial-input initial-directory extra-rg-args rg-prompt)))
|
(counsel-ag initial-input initial-directory extra-rg-args rg-prompt)))
|
||||||
|
(cl-pushnew 'counsel-rg ivy-highlight-grep-commands)
|
||||||
|
|
||||||
;;** `counsel-grep'
|
;;** `counsel-grep'
|
||||||
(defcustom counsel-grep-base-command "grep -E -n -e %s %s"
|
(defcustom counsel-grep-base-command "grep -E -n -e %s %s"
|
||||||
@@ -2584,8 +2603,8 @@ substituted by the search regexp and file, respectively. Neither
|
|||||||
|
|
||||||
(defun counsel-grep-function (string)
|
(defun counsel-grep-function (string)
|
||||||
"Grep in the current directory for STRING."
|
"Grep in the current directory for STRING."
|
||||||
(if (< (length string) 2)
|
(or
|
||||||
(counsel-more-chars 2)
|
(counsel-more-chars)
|
||||||
(let ((regex (counsel-unquote-regex-parens
|
(let ((regex (counsel-unquote-regex-parens
|
||||||
(setq ivy--old-re
|
(setq ivy--old-re
|
||||||
(ivy--regex string)))))
|
(ivy--regex string)))))
|
||||||
@@ -2657,12 +2676,15 @@ When non-nil, INITIAL-INPUT is the initial search pattern."
|
|||||||
(setq res (ivy-read "grep: " 'counsel-grep-function
|
(setq res (ivy-read "grep: " 'counsel-grep-function
|
||||||
:initial-input initial-input
|
:initial-input initial-input
|
||||||
:dynamic-collection t
|
:dynamic-collection t
|
||||||
:preselect (format "%d:%s"
|
:preselect
|
||||||
|
(when (< (- (line-end-position) (line-beginning-position)) 300)
|
||||||
|
(format "%d:%s"
|
||||||
(line-number-at-pos)
|
(line-number-at-pos)
|
||||||
(regexp-quote
|
(regexp-quote
|
||||||
(buffer-substring-no-properties
|
(buffer-substring-no-properties
|
||||||
(line-beginning-position)
|
(line-beginning-position)
|
||||||
(line-end-position))))
|
(line-end-position)))))
|
||||||
|
|
||||||
:history 'counsel-git-grep-history
|
:history 'counsel-git-grep-history
|
||||||
:update-fn (lambda ()
|
:update-fn (lambda ()
|
||||||
(counsel-grep-action (ivy-state-current ivy-last)))
|
(counsel-grep-action (ivy-state-current ivy-last)))
|
||||||
@@ -2702,14 +2724,15 @@ When non-nil, INITIAL-INPUT is the initial search pattern."
|
|||||||
(counsel-grep initial-input)))
|
(counsel-grep initial-input)))
|
||||||
|
|
||||||
;;** `counsel-recoll'
|
;;** `counsel-recoll'
|
||||||
(defun counsel-recoll-function (string)
|
(defun counsel-recoll-function (str)
|
||||||
"Run recoll for STRING."
|
"Run recoll for STR."
|
||||||
(if (< (length string) 3)
|
(or
|
||||||
(counsel-more-chars 3)
|
(counsel-more-chars)
|
||||||
|
(progn
|
||||||
(counsel--async-command
|
(counsel--async-command
|
||||||
(format "recoll -t -b %s"
|
(format "recoll -t -b %s"
|
||||||
(shell-quote-argument string)))
|
(shell-quote-argument str)))
|
||||||
nil))
|
nil)))
|
||||||
|
|
||||||
;; This command uses the recollq command line tool that comes together
|
;; This command uses the recollq command line tool that comes together
|
||||||
;; with the recoll (the document indexing database) source:
|
;; with the recoll (the document indexing database) source:
|
||||||
@@ -2856,6 +2879,7 @@ otherwise continue prompting for tags."
|
|||||||
(declare-function org-global-tags-completion-table "org")
|
(declare-function org-global-tags-completion-table "org")
|
||||||
(declare-function org-agenda-files "org")
|
(declare-function org-agenda-files "org")
|
||||||
(declare-function org-agenda-set-tags "org-agenda")
|
(declare-function org-agenda-set-tags "org-agenda")
|
||||||
|
(declare-function org-tags-completion-function "org")
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun counsel-org-tag ()
|
(defun counsel-org-tag ()
|
||||||
@@ -2874,21 +2898,23 @@ otherwise continue prompting for tags."
|
|||||||
(unless (org-at-heading-p)
|
(unless (org-at-heading-p)
|
||||||
(org-back-to-heading t))
|
(org-back-to-heading t))
|
||||||
(setq counsel-org-tags (split-string (org-get-tags-string) ":" t)))
|
(setq counsel-org-tags (split-string (org-get-tags-string) ":" t)))
|
||||||
(let ((org-setting-tags t)
|
(let ((org-last-tags-completion-table
|
||||||
(org-last-tags-completion-table
|
(append (and (or org-complete-tags-always-offer-all-agenda-tags
|
||||||
(append org-tag-persistent-alist
|
|
||||||
(or org-tag-alist (org-get-buffer-tags))
|
|
||||||
(and
|
|
||||||
(or org-complete-tags-always-offer-all-agenda-tags
|
|
||||||
(eq major-mode 'org-agenda-mode))
|
(eq major-mode 'org-agenda-mode))
|
||||||
(org-global-tags-completion-table
|
(org-global-tags-completion-table
|
||||||
(org-agenda-files))))))
|
(org-agenda-files)))
|
||||||
|
(unless (boundp 'org-current-tag-alist)
|
||||||
|
org-tag-persistent-alist)
|
||||||
|
(or (if (boundp 'org-current-tag-alist)
|
||||||
|
org-current-tag-alist
|
||||||
|
org-tag-alist)
|
||||||
|
(org-get-buffer-tags)))))
|
||||||
(ivy-read (counsel-org-tag-prompt)
|
(ivy-read (counsel-org-tag-prompt)
|
||||||
(lambda (str &rest _unused)
|
(lambda (str _pred _action)
|
||||||
(delete-dups
|
(delete-dups
|
||||||
(all-completions str 'org-tags-completion-function)))
|
(all-completions str #'org-tags-completion-function)))
|
||||||
:history 'org-tags-history
|
:history 'org-tags-history
|
||||||
:action 'counsel-org-tag-action
|
:action #'counsel-org-tag-action
|
||||||
:caller 'counsel-org-tag))))
|
:caller 'counsel-org-tag))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
@@ -3196,7 +3222,11 @@ include attachments of other Org buffers."
|
|||||||
(lambda (x)
|
(lambda (x)
|
||||||
(when (> (length x) 2)
|
(when (> (length x) 2)
|
||||||
(format "%-5s %s" (nth 0 x) (nth 1 x))))
|
(format "%-5s %s" (nth 0 x) (nth 1 x))))
|
||||||
(or org-capture-templates
|
;; We build the list of capture templates as in
|
||||||
|
;; `org-capture-select-template':
|
||||||
|
(or (org-contextualize-keys
|
||||||
|
(org-capture-upgrade-templates org-capture-templates)
|
||||||
|
org-capture-templates-contexts)
|
||||||
'(("t" "Task" entry (file+headline "" "Tasks")
|
'(("t" "Task" entry (file+headline "" "Tasks")
|
||||||
"* TODO %?\n %u\n %a")))))
|
"* TODO %?\n %u\n %a")))))
|
||||||
:require-match t
|
:require-match t
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
(define-package "ess" "20180701.100" "Emacs Speaks Statistics: statistical programming within Emacs"
|
|
||||||
'((julia-mode "0.3"))
|
|
||||||
:keywords
|
|
||||||
'("statistics" "languages")
|
|
||||||
:url "http://ess.r-project.org/")
|
|
||||||
;; Local Variables:
|
|
||||||
;; no-byte-compile: t
|
|
||||||
;; End:
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
;;; ess.el --- Emacs Speaks Statistics: statistical programming within Emacs
|
|
||||||
|
|
||||||
;; Copyright (C) 1989--1996 Bates, Kademan, Ritter and Smith
|
|
||||||
;; Copyright (C) 1997--2010 A.J. Rossini, Richard M. Heiberger, Martin
|
|
||||||
;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen.
|
|
||||||
;; Copyright (C) 2011--2018 A.J. Rossini, Richard M. Heiberger, Martin
|
|
||||||
;; Maechler, Kurt Hornik, Rodney Sparapani, Stephen Eglen,
|
|
||||||
;; Vitalie Spinu, and Lionel Henry.
|
|
||||||
|
|
||||||
;; Author: Doug Bates
|
|
||||||
;; Ed Kademan
|
|
||||||
;; Frank Ritter
|
|
||||||
;; David Smith
|
|
||||||
;; Created: October 14, 1991
|
|
||||||
;; Maintainer: ESS-core <ESS-core@r-project.org>
|
|
||||||
;; Keywords: statistics, languages
|
|
||||||
;; URL: http://ess.r-project.org/
|
|
||||||
;; Package-Requires: ((julia-mode "0.3"))
|
|
||||||
|
|
||||||
;; This file is part of ESS
|
|
||||||
|
|
||||||
;; This file is free software; you can redistribute it and/or modify
|
|
||||||
;; it under the terms of the GNU General Public License as published by
|
|
||||||
;; the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
;; any later version.
|
|
||||||
;;
|
|
||||||
;; This file is distributed in the hope that it will be useful,
|
|
||||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
;; GNU General Public License for more details.
|
|
||||||
;;
|
|
||||||
;; A copy of the GNU General Public License is available at
|
|
||||||
;; http://www.r-project.org/Licenses/
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;; PURPOSE
|
|
||||||
;;
|
|
||||||
;; Interface to the S, SAS, and XLisp dialects of statistical
|
|
||||||
;; programming languages, with potential extensions to other
|
|
||||||
;; languages. Designed to be extendable to most other interactive
|
|
||||||
;; statistical programming situations.
|
|
||||||
|
|
||||||
;; BRIEF OVERVIEW
|
|
||||||
;;
|
|
||||||
;; Supports structured editing of S, SAS, and XLisp (statistics
|
|
||||||
;; programming languages) functions that are integrated with a
|
|
||||||
;; running process in a buffer.
|
|
||||||
|
|
||||||
;; THE ESS MAILING LIST
|
|
||||||
;;
|
|
||||||
;; There is an informal mailing list for discussions of ESS. Alpha
|
|
||||||
;; and beta releases of ESS are also announced here. Send mail
|
|
||||||
;; to ess-help-request@r-project.org to join.
|
|
||||||
|
|
||||||
;; OVERVIEW OF ESS
|
|
||||||
;;
|
|
||||||
;; S is a statistics programming language developed at Bell Labs
|
|
||||||
;; particularly suited for descriptive and exploratory statistics.
|
|
||||||
;; s-mode is built on top of comint (the general command interpreter
|
|
||||||
;; mode written by Olin Shivers), and so comint.el (or comint.elc)
|
|
||||||
;; should be either loaded or in your load path when you invoke it.
|
|
||||||
;;
|
|
||||||
;; Aside from the general features offered by comint such as
|
|
||||||
;; command history editing and job control, inferior S mode
|
|
||||||
;; allows you to dump and load S objects into and from external
|
|
||||||
;; files, and to display help on functions. It also provides
|
|
||||||
;; name completion while you do these. For more detailed
|
|
||||||
;; information see the documentation strings for inferior-ess,
|
|
||||||
;; inferior-ess-mode, ess-mode, and comint-mode. There are also
|
|
||||||
;; many variables and hooks available for customizing (see
|
|
||||||
;; the variables below that have document strings that start
|
|
||||||
;; with an "*").
|
|
||||||
|
|
||||||
;; INSTALLATION
|
|
||||||
;; See README and S-site for details.
|
|
||||||
|
|
||||||
;; GETTING RELEASES OF ESS
|
|
||||||
;; ===> http://ess.r-project.org
|
|
||||||
;;
|
|
||||||
|
|
||||||
;; CREDITS.
|
|
||||||
;; Thanks to shiba@shun.isac.co.jp (Ken'ichi "Modal" Shibayama) for
|
|
||||||
;; the indenting code.
|
|
||||||
;; Thanks also to maechler@stat.math.ethz.ch (Martin Maechler) for
|
|
||||||
;; suggestions and bug fixes.
|
|
||||||
;; ess-eval-line-and-step is based on a function by Rod Ball
|
|
||||||
;; (rod@marcam.dsir.govt.nz)
|
|
||||||
;; Also thanks from David Smith to the previous authors for all their
|
|
||||||
;; help and suggestions.
|
|
||||||
;; And thanks from Richard M. Heiberger, Kurt Hornik, Martin
|
|
||||||
;; Maechler, and A.J. Rossini to David Smith.
|
|
||||||
|
|
||||||
;; BUG REPORTS
|
|
||||||
;; Please report bugs to ess-bugs@r-project.org
|
|
||||||
;; Comments, suggestions, words of praise and large cash donations
|
|
||||||
;; are also more than welcome, but should generally be split between
|
|
||||||
;; all authors :-).
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(require 'ess-site)
|
|
||||||
|
|
||||||
(provide 'ess)
|
|
||||||
|
|
||||||
;;; ess.el ends here
|
|
||||||
@@ -3,6 +3,14 @@ allnews.texi.
|
|||||||
|
|
||||||
Changes and New Features in development version:
|
Changes and New Features in development version:
|
||||||
|
|
||||||
|
* ESS[R]: Interaction with inferior process in non-R files within
|
||||||
|
packages (for instance C or C++ files) has been improved. This is
|
||||||
|
a work in progress.
|
||||||
|
|
||||||
|
* ESS[R]: 'ess-r-package-use-dir' (which sets the working directory
|
||||||
|
to the root of the current package) now works with any mode (e.g.
|
||||||
|
in C or C++ files within '/src').
|
||||||
|
|
||||||
* This is the last release to support Emacs older than 25.1 Going
|
* This is the last release to support Emacs older than 25.1 Going
|
||||||
forward, only GNU Emacs 25.1 and newer will be supported. Soon
|
forward, only GNU Emacs 25.1 and newer will be supported. Soon
|
||||||
after this release, support for older Emacs versions will be
|
after this release, support for older Emacs versions will be
|
||||||
@@ -104,15 +112,32 @@ Changes and New Features in development version:
|
|||||||
customization to 'inferior-ess-R-program'. These variables are
|
customization to 'inferior-ess-R-program'. These variables are
|
||||||
treated as risky variables.
|
treated as risky variables.
|
||||||
|
|
||||||
* Customization of ess-smart-S-assign-key has been reworked. Use
|
* 'ess-smart-S-assign' changed name to 'ess-insert-S-assign'. By
|
||||||
'(setq ess-smart-S-assign-key nil)' to disable smart assignment at
|
default, it provides similar functionality. Since many users
|
||||||
any time instead of '(ess-toggle-underscore nil)'. To use another
|
dislike this functionality, it is easier to disable; set
|
||||||
key, you should set the value of 'ess-smart-S-assign-key' before
|
'ess-smart-S-assign-key' to nil. The following functions have been
|
||||||
ESS is loaded. The following functions have been made obsolete.
|
made obsolete and will be removed in the next release of ESS:
|
||||||
You should customize ess-smart-S-assign-key instead:
|
ess-smart-S-assign, ess-toggle-S-assign, ess-toggle-S-assign-key,
|
||||||
ess-toggle-S-assign, ess-toggle-S-assign-key,
|
ess-disable-smart-S-assign.
|
||||||
ess-unset-smart-S-assign-key, ess-activate-smart-S-assign-key,
|
|
||||||
ess-disable-smart-S-assign
|
* The option ess-S-assign has been removed. Customize new option
|
||||||
|
'ess-assign-list' instead.
|
||||||
|
|
||||||
|
* 'C-c C-=' is now bound to 'ess-cycle-assignment' by default See the
|
||||||
|
docstring for details. New user customization option
|
||||||
|
'ess-assign-list' controls what assignment operators are cycled
|
||||||
|
through.
|
||||||
|
|
||||||
|
* The ESS initialization process has been further streamlined. If
|
||||||
|
you update the autoloads (which installation from 'package-install'
|
||||||
|
does), you should not need to '(require 'ess-site)' at all, as
|
||||||
|
autoloads should automatically load ESS when it is needed (e.g.
|
||||||
|
the first time an R buffer is opened). In order to defer loading
|
||||||
|
your ESS config, you may want to do something like
|
||||||
|
'(with-require-after-load "ess" <ess-config-here>)' in your Emacs
|
||||||
|
init file. Users of the popular 'use-package' Emacs package can
|
||||||
|
now do '(use-package ess :defer t)' to take advantage of this
|
||||||
|
behavior.
|
||||||
|
|
||||||
Changes and New Features in 17.11:
|
Changes and New Features in 17.11:
|
||||||
|
|
||||||
@@ -215,6 +215,14 @@ File: announc.info, Node: New Features, Prev: License, Up: Announce
|
|||||||
|
|
||||||
Changes and New Features in development version:
|
Changes and New Features in development version:
|
||||||
|
|
||||||
|
* ESS[R]: Interaction with inferior process in non-R files within
|
||||||
|
packages (for instance C or C++ files) has been improved. This is
|
||||||
|
a work in progress.
|
||||||
|
|
||||||
|
* ESS[R]: 'ess-r-package-use-dir' (which sets the working directory
|
||||||
|
to the root of the current package) now works with any mode (e.g.
|
||||||
|
in C or C++ files within '/src').
|
||||||
|
|
||||||
* This is the last release to support Emacs older than 25.1 Going
|
* This is the last release to support Emacs older than 25.1 Going
|
||||||
forward, only GNU Emacs 25.1 and newer will be supported. Soon
|
forward, only GNU Emacs 25.1 and newer will be supported. Soon
|
||||||
after this release, support for older Emacs versions will be
|
after this release, support for older Emacs versions will be
|
||||||
@@ -316,15 +324,32 @@ Changes and New Features in development version:
|
|||||||
customization to 'inferior-ess-R-program'. These variables are
|
customization to 'inferior-ess-R-program'. These variables are
|
||||||
treated as risky variables.
|
treated as risky variables.
|
||||||
|
|
||||||
* Customization of ess-smart-S-assign-key has been reworked. Use
|
* 'ess-smart-S-assign' changed name to 'ess-insert-S-assign'. By
|
||||||
'(setq ess-smart-S-assign-key nil)' to disable smart assignment at
|
default, it provides similar functionality. Since many users
|
||||||
any time instead of '(ess-toggle-underscore nil)'. To use another
|
dislike this functionality, it is easier to disable; set
|
||||||
key, you should set the value of 'ess-smart-S-assign-key' before
|
'ess-smart-S-assign-key' to nil. The following functions have been
|
||||||
ESS is loaded. The following functions have been made obsolete.
|
made obsolete and will be removed in the next release of ESS:
|
||||||
You should customize ess-smart-S-assign-key instead:
|
ess-smart-S-assign, ess-toggle-S-assign, ess-toggle-S-assign-key,
|
||||||
ess-toggle-S-assign, ess-toggle-S-assign-key,
|
ess-disable-smart-S-assign.
|
||||||
ess-unset-smart-S-assign-key, ess-activate-smart-S-assign-key,
|
|
||||||
ess-disable-smart-S-assign
|
* The option ess-S-assign has been removed. Customize new option
|
||||||
|
'ess-assign-list' instead.
|
||||||
|
|
||||||
|
* 'C-c C-=' is now bound to 'ess-cycle-assignment' by default See the
|
||||||
|
docstring for details. New user customization option
|
||||||
|
'ess-assign-list' controls what assignment operators are cycled
|
||||||
|
through.
|
||||||
|
|
||||||
|
* The ESS initialization process has been further streamlined. If
|
||||||
|
you update the autoloads (which installation from 'package-install'
|
||||||
|
does), you should not need to '(require 'ess-site)' at all, as
|
||||||
|
autoloads should automatically load ESS when it is needed (e.g.
|
||||||
|
the first time an R buffer is opened). In order to defer loading
|
||||||
|
your ESS config, you may want to do something like
|
||||||
|
'(with-require-after-load "ess" <ess-config-here>)' in your Emacs
|
||||||
|
init file. Users of the popular 'use-package' Emacs package can
|
||||||
|
now do '(use-package ess :defer t)' to take advantage of this
|
||||||
|
behavior.
|
||||||
|
|
||||||
Changes and New Features in 17.11:
|
Changes and New Features in 17.11:
|
||||||
|
|
||||||
@@ -5,6 +5,113 @@
|
|||||||
(add-to-list 'load-path (directory-file-name
|
(add-to-list 'load-path (directory-file-name
|
||||||
(or (file-name-directory #$) (car load-path))))
|
(or (file-name-directory #$) (car load-path))))
|
||||||
|
|
||||||
|
|
||||||
|
;;;### (autoloads nil "ess" "ess.el" (0 0 0 0))
|
||||||
|
;;; Generated autoloads from ess.el
|
||||||
|
|
||||||
|
(autoload 'ess-mode "ess" "\
|
||||||
|
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).
|
||||||
|
|
||||||
|
\(fn &optional ALIST PROC-NAME IS-DERIVED)" nil nil)
|
||||||
|
|
||||||
|
(autoload 'ess-parse-errors "ess" "\
|
||||||
|
Jump to error in last loaded ESS source file.
|
||||||
|
With prefix argument, only shows the errors ESS reported.
|
||||||
|
|
||||||
|
RESET is for compatibility with `next-error' and is ignored.
|
||||||
|
|
||||||
|
\(fn &optional SHOWERR RESET)" t nil)
|
||||||
|
|
||||||
|
(autoload 'ess-dump-object-into-edit-buffer "ess" "\
|
||||||
|
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.
|
||||||
|
|
||||||
|
\(fn OBJECT)" t nil)
|
||||||
|
|
||||||
|
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ess" '("ess-")))
|
||||||
|
|
||||||
|
;;;***
|
||||||
|
|
||||||
;;;### (autoloads nil "ess-arc-d" "ess-arc-d.el" (0 0 0 0))
|
;;;### (autoloads nil "ess-arc-d" "ess-arc-d.el" (0 0 0 0))
|
||||||
;;; Generated autoloads from ess-arc-d.el
|
;;; Generated autoloads from ess-arc-d.el
|
||||||
@@ -270,113 +377,6 @@ ESS[JAGS]: Major mode for JAGS.
|
|||||||
|
|
||||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ess-lsp-l" '("Lisp-editing-alist")))
|
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ess-lsp-l" '("Lisp-editing-alist")))
|
||||||
|
|
||||||
;;;***
|
|
||||||
|
|
||||||
;;;### (autoloads nil "ess-mode" "ess-mode.el" (0 0 0 0))
|
|
||||||
;;; Generated autoloads from ess-mode.el
|
|
||||||
|
|
||||||
(autoload 'ess-mode "ess-mode" "\
|
|
||||||
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).
|
|
||||||
|
|
||||||
\(fn &optional ALIST PROC-NAME IS-DERIVED)" nil nil)
|
|
||||||
|
|
||||||
(autoload 'ess-parse-errors "ess-mode" "\
|
|
||||||
Jump to error in last loaded ESS source file.
|
|
||||||
With prefix argument, only shows the errors ESS reported.
|
|
||||||
|
|
||||||
RESET is for compatibility with `next-error' and is ignored.
|
|
||||||
|
|
||||||
\(fn &optional SHOWERR RESET)" t nil)
|
|
||||||
|
|
||||||
(autoload 'ess-dump-object-into-edit-buffer "ess-mode" "\
|
|
||||||
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.
|
|
||||||
|
|
||||||
\(fn OBJECT)" t nil)
|
|
||||||
|
|
||||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ess-mode" '("ess-")))
|
|
||||||
|
|
||||||
;;;***
|
;;;***
|
||||||
|
|
||||||
;;;### (autoloads nil "ess-mouse" "ess-mouse.el" (0 0 0 0))
|
;;;### (autoloads nil "ess-mouse" "ess-mouse.el" (0 0 0 0))
|
||||||
@@ -926,8 +926,7 @@ Popup a menu of functions to run on selected string or region.
|
|||||||
|
|
||||||
;;;***
|
;;;***
|
||||||
|
|
||||||
;;;### (autoloads nil nil ("ess-julia.el" "ess-pkg.el" "ess.el")
|
;;;### (autoloads nil nil ("ess-julia.el" "ess-pkg.el") (0 0 0 0))
|
||||||
;;;;;; (0 0 0 0))
|
|
||||||
|
|
||||||
;;;***
|
;;;***
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
(require 'ess-utils)
|
(require 'ess-utils)
|
||||||
(require 'ess-inf)
|
(require 'ess-inf)
|
||||||
(require 'ess-custom)
|
(require 'ess-custom)
|
||||||
(require 'ess-mode)
|
(require 'ess)
|
||||||
|
|
||||||
(setq auto-mode-alist
|
(setq auto-mode-alist
|
||||||
(append '(("\\.[bB][uU][gG]\\'" . ess-bugs-mode)) auto-mode-alist))
|
(append '(("\\.[bB][uU][gG]\\'" . ess-bugs-mode)) auto-mode-alist))
|
||||||
@@ -549,12 +549,6 @@ ess-smart-comma only, but will be enriched in the near future.")
|
|||||||
Used to avoid annoying jumping by ess-eval.*-and-step to end of
|
Used to avoid annoying jumping by ess-eval.*-and-step to end of
|
||||||
buffer or end chunks etc.")
|
buffer or end chunks etc.")
|
||||||
|
|
||||||
(defcustom ess-S-assign " <- "
|
|
||||||
"String used for left assignment in all S dialects.
|
|
||||||
Used by \\[ess-smart-S-assign]."
|
|
||||||
:group 'ess-S
|
|
||||||
:type 'string)
|
|
||||||
|
|
||||||
(defcustom ess-smart-S-assign-key "_"
|
(defcustom ess-smart-S-assign-key "_"
|
||||||
"Key used by `ess-smart-S-assign'.
|
"Key used by `ess-smart-S-assign'.
|
||||||
Should be nil or a \"simple\" key, in other words no key
|
Should be nil or a \"simple\" key, in other words no key
|
||||||
@@ -565,6 +559,19 @@ to another string, it must be set before ESS is loaded."
|
|||||||
:group 'ess-S
|
:group 'ess-S
|
||||||
:type '(choice (const :tag "Nothing" :value nil) string))
|
:type '(choice (const :tag "Nothing" :value nil) string))
|
||||||
|
|
||||||
|
(defcustom ess-assign-list (cons (if (boundp 'ess-S-assign) ess-S-assign " <- ")
|
||||||
|
'(" <<- " " = " " -> " " ->> "))
|
||||||
|
"List of assignment operators.
|
||||||
|
`ess-cycle-assignment' uses this list. These strings must
|
||||||
|
contain spaces on either side."
|
||||||
|
;; Note that spaces on either side is not strictly true (as in the
|
||||||
|
;; function won't error), but matching <-/<<- is broken without
|
||||||
|
;; them.
|
||||||
|
:type '(repeat string)
|
||||||
|
:group 'ess)
|
||||||
|
(defvar ess-S-assign)
|
||||||
|
(make-obsolete-variable 'ess-S-assign 'ess-assign-list "2018-07-01")
|
||||||
|
|
||||||
(defcustom ess-r-prettify-symbols
|
(defcustom ess-r-prettify-symbols
|
||||||
'(("<-" . (?\s (Br . Bl) ?\s (Bc . Bc) ?←))
|
'(("<-" . (?\s (Br . Bl) ?\s (Bc . Bc) ?←))
|
||||||
("->" . (?\s (Br . Bl) ?\s (Bc . Bc) ?→))
|
("->" . (?\s (Br . Bl) ?\s (Bc . Bc) ?→))
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
(require 'ess-inf)
|
(require 'ess-inf)
|
||||||
(require 'info))
|
(require 'info))
|
||||||
|
|
||||||
(require 'ess-mode)
|
(require 'ess)
|
||||||
|
|
||||||
; ess-help-mode
|
; ess-help-mode
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
@@ -989,7 +989,7 @@ option for other dialects)."
|
|||||||
(defun ess-submit-bug-report ()
|
(defun ess-submit-bug-report ()
|
||||||
"Submit a bug report on the ess-mode package."
|
"Submit a bug report on the ess-mode package."
|
||||||
(interactive)
|
(interactive)
|
||||||
(require 'ess-mode)
|
(require 'ess)
|
||||||
(require 'reporter)
|
(require 'reporter)
|
||||||
(let ((reporter-prompt-for-summary-p 't))
|
(let ((reporter-prompt-for-summary-p 't))
|
||||||
(reporter-submit-bug-report
|
(reporter-submit-bug-report
|
||||||
@@ -1303,7 +1303,7 @@ type of the region."
|
|||||||
(file (if ess-microsoft-p
|
(file (if ess-microsoft-p
|
||||||
(ess-replace-in-string file "[\\]" "/")
|
(ess-replace-in-string file "[\\]" "/")
|
||||||
file)))
|
file)))
|
||||||
file))
|
(abbreviate-file-name file)))
|
||||||
|
|
||||||
(defun ess-load-file--normalise-buffer (file)
|
(defun ess-load-file--normalise-buffer (file)
|
||||||
(when (ess-check-source file)
|
(when (ess-check-source file)
|
||||||
@@ -1952,12 +1952,12 @@ for `ess-eval-region'."
|
|||||||
(define-key map "\M-?" 'ess-list-object-completions)
|
(define-key map "\M-?" 'ess-list-object-completions)
|
||||||
(define-key map "\C-c\C-k" 'ess-request-a-process)
|
(define-key map "\C-c\C-k" 'ess-request-a-process)
|
||||||
(define-key map "," 'ess-smart-comma)
|
(define-key map "," 'ess-smart-comma)
|
||||||
|
(define-key map (kbd "C-c C-=") 'ess-cycle-assignment)
|
||||||
(define-key map "\C-c\C-d" 'ess-doc-map)
|
(define-key map "\C-c\C-d" 'ess-doc-map)
|
||||||
(define-key map "\C-c\C-e" 'ess-extra-map)
|
(define-key map "\C-c\C-e" 'ess-extra-map)
|
||||||
(define-key map "\C-c\C-t" 'ess-dev-map)
|
(define-key map "\C-c\C-t" 'ess-dev-map)
|
||||||
(when ess-smart-S-assign-key
|
(when ess-smart-S-assign-key
|
||||||
(define-key map ess-smart-S-assign-key #'ess-smart-S-assign))
|
(define-key map ess-smart-S-assign-key 'ess-insert-assign))
|
||||||
map)
|
map)
|
||||||
"Keymap for `inferior-ess' mode.")
|
"Keymap for `inferior-ess' mode.")
|
||||||
|
|
||||||
@@ -1992,7 +1992,7 @@ for `ess-eval-region'."
|
|||||||
["Jump to Error" ess-parse-errors t]
|
["Jump to Error" ess-parse-errors t]
|
||||||
["Load source file" ess-load-file t]
|
["Load source file" ess-load-file t]
|
||||||
["Resynch S completions" ess-resynch t]
|
["Resynch S completions" ess-resynch t]
|
||||||
["Recreate R and S versions known to ESS" (ess-r-s-versions-creation+menu) t]
|
;; ["Recreate R and S versions known to ESS" (ess-r-s-versions-creation+menu) t]
|
||||||
)
|
)
|
||||||
"------"
|
"------"
|
||||||
("start-dev" :visible nil); <-- ??
|
("start-dev" :visible nil); <-- ??
|
||||||
@@ -2200,14 +2200,11 @@ to continue it."
|
|||||||
"Sends the command on the current line to the ESS process."
|
"Sends the command on the current line to the ESS process."
|
||||||
(interactive)
|
(interactive)
|
||||||
(run-hooks 'ess-send-input-hook)
|
(run-hooks 'ess-send-input-hook)
|
||||||
;; (let ((proc (get-buffer-process (current-buffer))))
|
(unless (ess-process-get 'busy)
|
||||||
;; (if (not proc)
|
;; avoid new line insertion
|
||||||
;; (user-error "Current buffer has no process")
|
(ess-process-put 'prev-prompt nil))
|
||||||
;; (let ((comint-process-echoes (or comint-process-echoes
|
|
||||||
;; (< (point) (marker-position (process-mark proc))))))
|
|
||||||
;; (comint-send-input))))
|
|
||||||
(comint-send-input)
|
(comint-send-input)
|
||||||
(setq ess-object-list nil)) ;; Will be reconstructed from cache if needs be
|
(setq ess-object-list nil))
|
||||||
|
|
||||||
(defun inferior-ess--goto-input-start:field ()
|
(defun inferior-ess--goto-input-start:field ()
|
||||||
"Move point to the begining of input skiping all continuation lines.
|
"Move point to the begining of input skiping all continuation lines.
|
||||||
@@ -2637,6 +2634,7 @@ command (%s) like this, or a version with explicit options(max.print=1e6):
|
|||||||
|
|
||||||
local({ out <- try({%s}); print(out, max=1e6) })\n
|
local({ out <- try({%s}); print(out, max=1e6) })\n
|
||||||
"
|
"
|
||||||
|
(inferior-ess-force)
|
||||||
(let* ((tbuffer (get-buffer-create
|
(let* ((tbuffer (get-buffer-create
|
||||||
" *ess-get-words*")); initial space: disable-undo
|
" *ess-get-words*")); initial space: disable-undo
|
||||||
(word-RE
|
(word-RE
|
||||||
@@ -3034,12 +3032,12 @@ prefix argument NO-FORCE-CURRENT is non-nil."
|
|||||||
(let ((dir (if buffer-file-name
|
(let ((dir (if buffer-file-name
|
||||||
(file-name-directory buffer-file-name)
|
(file-name-directory buffer-file-name)
|
||||||
default-directory)))
|
default-directory)))
|
||||||
(ess-set-working-directory dir)))
|
(ess-set-working-directory (abbreviate-file-name dir))))
|
||||||
|
|
||||||
(defun ess-get-working-directory (&optional no-error)
|
(defun ess-get-working-directory (&optional no-error)
|
||||||
"Retrive the current working directory from the current ess process."
|
"Retrive the current working directory from the current ess process."
|
||||||
(if ess-getwd-command
|
(if ess-getwd-command
|
||||||
(car (ess-get-words-from-vector ess-getwd-command))
|
(abbreviate-file-name (car (ess-get-words-from-vector ess-getwd-command)))
|
||||||
(unless no-error
|
(unless no-error
|
||||||
(error "Not implemented for dialect %s" ess-dialect))))
|
(error "Not implemented for dialect %s" ess-dialect))))
|
||||||
|
|
||||||
4
elpa/ess-20180717.825/ess-pkg.el
Normal file
4
elpa/ess-20180717.825/ess-pkg.el
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
(define-package "ess" "20180717.825" "Emacs Speaks Statistics" 'nil)
|
||||||
|
;; Local Variables:
|
||||||
|
;; no-byte-compile: t
|
||||||
|
;; End:
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
(require 'compile)
|
(require 'compile)
|
||||||
(require 'easymenu)
|
(require 'easymenu)
|
||||||
(require 'eldoc)
|
(require 'eldoc)
|
||||||
(require 'ess-mode)
|
(require 'ess)
|
||||||
(require 'ess-help)
|
(require 'ess-help)
|
||||||
(require 'ess-s-lang)
|
(require 'ess-s-lang)
|
||||||
(require 'ess-roxy)
|
(require 'ess-roxy)
|
||||||
@@ -434,90 +434,10 @@ Set this variable to nil to disable searching for other versions of R.
|
|||||||
If you set this variable, you need to restart Emacs (and set this variable
|
If you set this variable, you need to restart Emacs (and set this variable
|
||||||
before ess-site is loaded) for it to take effect.")
|
before ess-site is loaded) for it to take effect.")
|
||||||
|
|
||||||
;; Create functions for calling different (older or newer than default)
|
|
||||||
;; versions of R and S(qpe).
|
|
||||||
(defvar ess-versions-created nil
|
|
||||||
"List of strings of all S- and R-versions found on the system.")
|
|
||||||
|
|
||||||
(defvar ess-r-created-runners nil
|
(defvar ess-r-created-runners nil
|
||||||
"List of R-versions found from `ess-r-versions' on the system.")
|
"List of R-versions found from `ess-r-versions' on the system.")
|
||||||
(define-obsolete-variable-alias 'ess-r-versions-created 'ess-r-created-runners "2018-05-05")
|
(define-obsolete-variable-alias 'ess-r-versions-created 'ess-r-created-runners "2018-05-05")
|
||||||
|
|
||||||
(defun ess-r-s-define-runners ()
|
|
||||||
"(Re)Create ESS R-X.Y.Z and S-X.Y.Z commands.
|
|
||||||
See `ess-r-versions' and `ess-s-versions' for which functions
|
|
||||||
will be (re)created."
|
|
||||||
(interactive)
|
|
||||||
(let ((R-newest-list '("R-newest"))
|
|
||||||
(ess-s-created-runners
|
|
||||||
(if ess-microsoft-p
|
|
||||||
(nconc
|
|
||||||
(ess-sqpe-versions-create ess-SHOME-versions) ;; 32-bit
|
|
||||||
(ess-sqpe-versions-create ess-SHOME-versions-64 "-64-bit")) ;; 64-bit
|
|
||||||
(require 'ess-sp6-d)
|
|
||||||
(ess-s-define-runners))))
|
|
||||||
(when ess-microsoft-p
|
|
||||||
(setq ess-rterm-version-paths
|
|
||||||
(ess-flatten-list
|
|
||||||
(ess-uniq-list
|
|
||||||
(if (not ess-directory-containing-R)
|
|
||||||
(if (getenv "ProgramW6432")
|
|
||||||
(let ((P-1 (getenv "ProgramFiles(x86)"))
|
|
||||||
(P-2 (getenv "ProgramW6432")))
|
|
||||||
(nconc
|
|
||||||
;; Always 32 on 64 bit OS, nil on 32 bit OS
|
|
||||||
(ess-find-rterm (concat P-1 "/R/") "bin/Rterm.exe")
|
|
||||||
(ess-find-rterm (concat P-1 "/R/") "bin/i386/Rterm.exe")
|
|
||||||
|
|
||||||
;; Keep this both for symmetry and because it can happen:
|
|
||||||
(ess-find-rterm (concat P-1 "/R/") "bin/x64/Rterm.exe")
|
|
||||||
|
|
||||||
;; Always 64 on 64 bit OS, nil on 32 bit OS
|
|
||||||
(ess-find-rterm (concat P-2 "/R/") "bin/Rterm.exe")
|
|
||||||
(ess-find-rterm (concat P-2 "/R/") "bin/i386/Rterm.exe")
|
|
||||||
(ess-find-rterm (concat P-2 "/R/") "bin/x64/Rterm.exe")))
|
|
||||||
(let ((PF (getenv "ProgramFiles")))
|
|
||||||
(nconc
|
|
||||||
;; Always 32 on 32 bit OS, depends on 32 or 64 process on 64 bit OS
|
|
||||||
(ess-find-rterm (concat PF "/R/") "bin/Rterm.exe")
|
|
||||||
(ess-find-rterm (concat PF "/R/") "bin/i386/Rterm.exe")
|
|
||||||
(ess-find-rterm (concat PF "/R/") "bin/x64/Rterm.exe"))))
|
|
||||||
(let ((PF ess-directory-containing-R))
|
|
||||||
(nconc
|
|
||||||
(ess-find-rterm (concat PF "/R/") "bin/Rterm.exe")
|
|
||||||
(ess-find-rterm (concat PF "/R/") "bin/i386/Rterm.exe")
|
|
||||||
(ess-find-rterm (concat PF "/R/") "bin/x64/Rterm.exe"))))))))
|
|
||||||
(ess-r-define-runners)
|
|
||||||
;; Add the new defuns, if any, to the menu.
|
|
||||||
;; Check that each variable exists, before adding.
|
|
||||||
;; e.g. ess-sqpe-versions-created will not be created on Unix.
|
|
||||||
(setq ess-versions-created
|
|
||||||
(ess-flatten-list
|
|
||||||
(mapcar (lambda(x) (if (boundp x) (symbol-value x) nil))
|
|
||||||
'(R-newest-list
|
|
||||||
ess-r-created-runners
|
|
||||||
ess-s-created-runners))))))
|
|
||||||
(define-obsolete-function-alias
|
|
||||||
'ess-r-s-versions-creation 'ess-r-s-define-runners "2018-5-12")
|
|
||||||
|
|
||||||
(defun ess-r-s-define-runners+menu ()
|
|
||||||
"Set up R-X.Y.Z and S-X.Y.Z functions and add them to the menu.
|
|
||||||
Call `\\[ess-r-s-define-runners] creating `ess-versions-created' and
|
|
||||||
update the \"Start Process\" menu."
|
|
||||||
(interactive)
|
|
||||||
(ess-r-s-define-runners)
|
|
||||||
(when ess-versions-created
|
|
||||||
;; new-menu will be a list of 3-vectors, of the form:
|
|
||||||
;; ["R-1.8.1" R-1.8.1 t]
|
|
||||||
(let ((new-menu (mapcar (lambda(x) (vector x (intern x) t))
|
|
||||||
ess-versions-created)))
|
|
||||||
(easy-menu-add-item ess-mode-menu '("Start Process")
|
|
||||||
(cons "Other" new-menu))))
|
|
||||||
ess-versions-created)
|
|
||||||
(define-obsolete-function-alias
|
|
||||||
'ess-r-s-versions-creation+menu 'ess-r-s-define-runners+menu "2018-05-12")
|
|
||||||
|
|
||||||
|
|
||||||
;;;*;;; Mode init
|
;;;*;;; Mode init
|
||||||
|
|
||||||
(defvar ess-r-post-run-hook nil
|
(defvar ess-r-post-run-hook nil
|
||||||
@@ -738,8 +658,18 @@ as `ess-r-created-runners' upon ESS initialization."
|
|||||||
(mapcar #'ess-find-exec-completions
|
(mapcar #'ess-find-exec-completions
|
||||||
ess-r-versions)))))))
|
ess-r-versions)))))))
|
||||||
;; Iterate over each string in VERSIONS, creating a new defun each time.
|
;; Iterate over each string in VERSIONS, creating a new defun each time.
|
||||||
(setq ess-r-created-runners
|
(setq ess-r-created-runners versions)
|
||||||
(mapc (lambda (v) (ess-define-runner v "R")) versions)))))
|
(if ess-microsoft-p
|
||||||
|
(cl-mapcar (lambda (v p) (ess-define-runner v "R" p)) versions ess-rterm-version-paths)
|
||||||
|
(mapc (lambda (v) (ess-define-runner v "R")) versions))
|
||||||
|
;; Add to menu
|
||||||
|
(when ess-r-created-runners
|
||||||
|
;; new-menu will be a list of 3-vectors, of the form:
|
||||||
|
;; ["R-1.8.1" R-1.8.1 t]
|
||||||
|
(let ((new-menu (mapcar (lambda(x) (vector x (intern x) t))
|
||||||
|
ess-r-created-runners)))
|
||||||
|
(easy-menu-add-item ess-mode-menu '("Start Process")
|
||||||
|
(cons "Other" new-menu)))))))
|
||||||
(define-obsolete-function-alias
|
(define-obsolete-function-alias
|
||||||
'ess-r-versions-create 'ess-r-define-runners "2018-05-12")
|
'ess-r-versions-create 'ess-r-define-runners "2018-05-12")
|
||||||
|
|
||||||
@@ -2219,6 +2149,42 @@ otherwise nil."
|
|||||||
(undo-boundary))))
|
(undo-boundary))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;; Create functions that can be called for running different versions
|
||||||
|
;; of R.
|
||||||
|
;; FIXME: Should be set in ess-custom
|
||||||
|
(setq ess-rterm-version-paths
|
||||||
|
(ess-flatten-list
|
||||||
|
(ess-uniq-list
|
||||||
|
(if (not ess-directory-containing-R)
|
||||||
|
(if (getenv "ProgramW6432")
|
||||||
|
(let ((P-1 (getenv "ProgramFiles(x86)"))
|
||||||
|
(P-2 (getenv "ProgramW6432")))
|
||||||
|
(nconc
|
||||||
|
;; Always 32 on 64 bit OS, nil on 32 bit OS
|
||||||
|
(ess-find-rterm (concat P-1 "/R/") "bin/Rterm.exe")
|
||||||
|
(ess-find-rterm (concat P-1 "/R/") "bin/i386/Rterm.exe")
|
||||||
|
|
||||||
|
;; Keep this both for symmetry and because it can happen:
|
||||||
|
(ess-find-rterm (concat P-1 "/R/") "bin/x64/Rterm.exe")
|
||||||
|
|
||||||
|
;; Always 64 on 64 bit OS, nil on 32 bit OS
|
||||||
|
(ess-find-rterm (concat P-2 "/R/") "bin/Rterm.exe")
|
||||||
|
(ess-find-rterm (concat P-2 "/R/") "bin/i386/Rterm.exe")
|
||||||
|
(ess-find-rterm (concat P-2 "/R/") "bin/x64/Rterm.exe")))
|
||||||
|
(let ((PF (getenv "ProgramFiles")))
|
||||||
|
(nconc
|
||||||
|
;; Always 32 on 32 bit OS, depends on 32 or 64 process on 64 bit OS
|
||||||
|
(ess-find-rterm (concat PF "/R/") "bin/Rterm.exe")
|
||||||
|
(ess-find-rterm (concat PF "/R/") "bin/i386/Rterm.exe")
|
||||||
|
(ess-find-rterm (concat PF "/R/") "bin/x64/Rterm.exe"))))
|
||||||
|
(let ((PF ess-directory-containing-R))
|
||||||
|
(nconc
|
||||||
|
(ess-find-rterm (concat PF "/R/") "bin/Rterm.exe")
|
||||||
|
(ess-find-rterm (concat PF "/R/") "bin/i386/Rterm.exe")
|
||||||
|
(ess-find-rterm (concat PF "/R/") "bin/x64/Rterm.exe")))))))
|
||||||
|
(ess-r-define-runners)
|
||||||
|
|
||||||
;;*;; Provide and auto-loads
|
;;*;; Provide and auto-loads
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
@@ -189,7 +189,7 @@ Root is determined by locating `ess-r-package-root-file'."
|
|||||||
"Set process directory to current package directory."
|
"Set process directory to current package directory."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let ((dir (cdr (ess-r-package-project))))
|
(let ((dir (cdr (ess-r-package-project))))
|
||||||
(ess-set-working-directory dir)))
|
(ess-set-working-directory (abbreviate-file-name dir))))
|
||||||
|
|
||||||
(defun ess-r-package-set-package ()
|
(defun ess-r-package-set-package ()
|
||||||
"Set a package for ESS r-package commands."
|
"Set a package for ESS r-package commands."
|
||||||
@@ -245,7 +245,7 @@ arguments, or expressions which return R arguments."
|
|||||||
(let* ((pkg-info (or (ess-r-package-project)
|
(let* ((pkg-info (or (ess-r-package-project)
|
||||||
(ess-r-package-set-package)))
|
(ess-r-package-set-package)))
|
||||||
(pkg-name (ess-r-package-name))
|
(pkg-name (ess-r-package-name))
|
||||||
(pkg-path (or pkg-path (concat "'" (cdr pkg-info) "'")))
|
(pkg-path (or pkg-path (concat "'" (abbreviate-file-name (cdr pkg-info)) "'")))
|
||||||
(args (ess-r-command--build-args p actions)))
|
(args (ess-r-command--build-args p actions)))
|
||||||
(message msg pkg-name)
|
(message msg pkg-name)
|
||||||
(with-ess-process-buffer nil
|
(with-ess-process-buffer nil
|
||||||
@@ -472,6 +472,16 @@ disable the mode line entirely."
|
|||||||
:lighter ess-r-package-mode-line
|
:lighter ess-r-package-mode-line
|
||||||
(if ess-r-package-mode
|
(if ess-r-package-mode
|
||||||
(progn
|
(progn
|
||||||
|
;; Forward relevant R settings for interacting with inferior
|
||||||
|
;; processes from any mode
|
||||||
|
(let ((vars '(ess-dialect
|
||||||
|
ess-setwd-command
|
||||||
|
ess-getwd-command
|
||||||
|
ess-quit-function
|
||||||
|
inferior-ess-reload-function)))
|
||||||
|
(mapc (lambda (var) (set (make-local-variable var)
|
||||||
|
(eval (cdr (assq var ess-r-customize-alist)))))
|
||||||
|
vars))
|
||||||
(add-hook 'project-find-functions #'ess-r-package-project)
|
(add-hook 'project-find-functions #'ess-r-package-project)
|
||||||
(run-hooks 'ess-r-package-enter-hook))
|
(run-hooks 'ess-r-package-enter-hook))
|
||||||
(remove-hook 'project-find-functions #'ess-r-package-project)
|
(remove-hook 'project-find-functions #'ess-r-package-project)
|
||||||
@@ -46,12 +46,15 @@
|
|||||||
;; on a *lot* of ideas from ess-rdired.el.
|
;; on a *lot* of ideas from ess-rdired.el.
|
||||||
|
|
||||||
;; TODO: Refactor and remove byte-compile-warnings file-local variable.
|
;; TODO: Refactor and remove byte-compile-warnings file-local variable.
|
||||||
|
;; TODO: This should be more tightly integrated with ess-r-mode and ESSR.
|
||||||
|
;; TODO: Should be active in ess-r-mode not only ess-inf
|
||||||
|
;; TODO: Both S level Utils and this package's Rutils are in the menu; confusing and inconvenient.
|
||||||
(defvar pkg)
|
(defvar pkg)
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
;; Autoloads and requires
|
;; Autoloads and requires
|
||||||
(require 'ess-site)
|
(require 'ess-r-mode)
|
||||||
(require 'ess-rdired)
|
(require 'ess-rdired)
|
||||||
|
|
||||||
(defvar ess-rutils-buf "*R temp*"
|
(defvar ess-rutils-buf "*R temp*"
|
||||||
@@ -60,14 +63,7 @@
|
|||||||
(defvar ess-rutils-mode-map nil
|
(defvar ess-rutils-mode-map nil
|
||||||
"Keymap for the *R temp* buffer.")
|
"Keymap for the *R temp* buffer.")
|
||||||
|
|
||||||
(defvar ess-rutils-rhtml-fn
|
(unless ess-rutils-mode-map
|
||||||
(expand-file-name "ess-rutils-help-start.R" ess-etc-directory)
|
|
||||||
"Path to the file defining the R function .rutils.help.start().
|
|
||||||
This file is loaded into the inferior R process so that
|
|
||||||
`ess-rutils-html-docs' can use .rutils.help.start().")
|
|
||||||
|
|
||||||
(if ess-rutils-mode-map
|
|
||||||
()
|
|
||||||
(setq ess-rutils-mode-map (make-sparse-keymap))
|
(setq ess-rutils-mode-map (make-sparse-keymap))
|
||||||
(define-key ess-rutils-mode-map "l" 'ess-rutils-loadpkg)
|
(define-key ess-rutils-mode-map "l" 'ess-rutils-loadpkg)
|
||||||
(define-key ess-rutils-mode-map "i" 'ess-rutils-mark-install)
|
(define-key ess-rutils-mode-map "i" 'ess-rutils-mark-install)
|
||||||
@@ -289,17 +285,16 @@ File extension not required."
|
|||||||
|
|
||||||
(defun ess-rutils-html-docs (&optional remote)
|
(defun ess-rutils-html-docs (&optional remote)
|
||||||
"Use `browse-url' to navigate R html documentation.
|
"Use `browse-url' to navigate R html documentation.
|
||||||
Documentation is produced by a modified help.start(), that returns the URL
|
Documentation is produced by a modified help.start(), that
|
||||||
produced by GNU R's http server. This function is defined in a file given
|
returns the URL produced by GNU R's http server. If called with a
|
||||||
by the path in variable `ess-rutils-rhtml-fn'. If called with a prefix,
|
prefix, the modified help.start() is called with update=TRUE. The
|
||||||
the modified help.start() is called with update=TRUE. The optional REMOTE
|
optional REMOTE argument should be a string with a valid URL for
|
||||||
argument should be a string with a valid URL for the 'R_HOME' directory on
|
the 'R_HOME' directory on a remote server (defaults to NULL)."
|
||||||
a remote server (defaults to NULL)."
|
|
||||||
(interactive)
|
(interactive)
|
||||||
(let* ((update (if current-prefix-arg "update=TRUE" "update=FALSE"))
|
(let* ((update (if current-prefix-arg "update=TRUE" "update=FALSE"))
|
||||||
(remote (if (or (and remote (not (string= "" remote))))
|
(remote (if (or (and remote (not (string= "" remote))))
|
||||||
(concat "remote=" remote) "remote=NULL"))
|
(concat "remote=" remote) "remote=NULL"))
|
||||||
(rhtml (format ".rutils.help.start(%s, %s)\n" update remote))
|
(rhtml (format ".ess_help_start(%s, %s)\n" update remote))
|
||||||
(tmpbuf (get-buffer-create "**ess-rutils-mode**")))
|
(tmpbuf (get-buffer-create "**ess-rutils-mode**")))
|
||||||
(ess-command rhtml tmpbuf)
|
(ess-command rhtml tmpbuf)
|
||||||
(set-buffer tmpbuf)
|
(set-buffer tmpbuf)
|
||||||
@@ -422,14 +417,10 @@ Options should be separated by value of `crm-default-separator'."
|
|||||||
["Browse HTML" ess-rutils-html-docs t]
|
["Browse HTML" ess-rutils-html-docs t]
|
||||||
["Apropos" ess-rutils-apropos t]))
|
["Apropos" ess-rutils-apropos t]))
|
||||||
|
|
||||||
(easy-menu-add-item inferior-ess-mode-menu nil
|
(easy-menu-add-item inferior-ess-mode-menu nil ess-rutils-mode-menu "Utils")
|
||||||
ess-rutils-mode-menu)
|
(add-hook 'inferior-ess-mode-hook 'ess-rutils-keys)
|
||||||
|
|
||||||
(add-hook 'inferior-ess-mode-hook 'ess-rutils-keys t)
|
|
||||||
(add-hook 'ess-r-post-run-hook
|
|
||||||
(lambda ()
|
|
||||||
(ess--inject-code-from-file ess-rutils-rhtml-fn)) t)
|
|
||||||
|
|
||||||
|
(make-obsolete 'ess-rutils-rhtml-fn "overwrite .ess_help_start instead." "2018-06")
|
||||||
|
|
||||||
(provide 'ess-rutils)
|
(provide 'ess-rutils)
|
||||||
|
|
||||||
@@ -575,81 +575,65 @@ and one that is well formatted in emacs ess-mode."
|
|||||||
(ess-if-verbose-write "ess-fix-misc __end__\n");___D___
|
(ess-if-verbose-write "ess-fix-misc __end__\n");___D___
|
||||||
))
|
))
|
||||||
|
|
||||||
(defvar polymode-mode)
|
(defun ess-cycle-assignment ()
|
||||||
(defun ess-smart-S-assign (&optional N)
|
"Cycle between assignment symbols in `ess-assign-list'.
|
||||||
"Act as smart `ess-S-assign' key.
|
On consecutive calls, replace the assignment symbol before point
|
||||||
Insert `ess-S-assign', unless in string/comment. If the
|
with the next symbol from that list. This function sets the last
|
||||||
underscore key is pressed a second time, the assignment operator
|
keypress to repeat it, so if it is bound to \"C-c C-=\" pressing
|
||||||
is removed and replaced by the underscore. `ess-S-assign',
|
\"=\" again cycles to the next assignment."
|
||||||
typically \" <- \", can be customized. In ESS modes other than
|
|
||||||
R/S, the underscore is always inserted.
|
|
||||||
|
|
||||||
If `ess-smart-S-assign-key' is nil, just call
|
|
||||||
`self-insert-command'. You can pass N as usual."
|
|
||||||
(interactive)
|
(interactive)
|
||||||
|
(if (eq last-command this-command)
|
||||||
|
(let ((slist ess-assign-list)
|
||||||
|
str)
|
||||||
|
(while (and (setq str (car slist)
|
||||||
|
slist (cdr slist))
|
||||||
|
(not (and (re-search-backward str
|
||||||
|
(- (point) (length str)) t)
|
||||||
|
(not (replace-match (car slist))))))))
|
||||||
|
(insert (car ess-assign-list)))
|
||||||
|
(set-transient-map
|
||||||
|
(let ((map (make-sparse-keymap))
|
||||||
|
(key (format "%c" (event-basic-type last-input-event))))
|
||||||
|
(define-key map (kbd key) #'ess-cycle-assignment)
|
||||||
|
map)))
|
||||||
|
|
||||||
|
(defun ess-insert-assign (arg)
|
||||||
|
"Insert the first element of `ess-assign-list' unless in string or comment.
|
||||||
|
If the character before point is the first element of
|
||||||
|
`ess-assign-list', replace it with the last character typed. If
|
||||||
|
`ess-smart-S-assign-key' is nil, do `self-insert-command' using
|
||||||
|
ARG as the number of times to insert."
|
||||||
|
(interactive "p")
|
||||||
(if ess-smart-S-assign-key
|
(if ess-smart-S-assign-key
|
||||||
(save-restriction
|
(let* ((assign (car ess-assign-list))
|
||||||
(ignore-errors
|
(event (event-basic-type last-input-event))
|
||||||
(when (and (eq major-mode 'inferior-ess-mode)
|
(char (ignore-errors (format "%c" event))))
|
||||||
(> (point) (process-mark (get-buffer-process (current-buffer)))))
|
(cond ((and char (ess-inside-string-or-comment-p))
|
||||||
(narrow-to-region (process-mark (ess-get-process)) (point-max)))
|
(insert char))
|
||||||
(and ess-noweb-mode
|
((re-search-backward assign (- (point) (length assign)) t)
|
||||||
(ess-noweb-in-code-chunk)
|
(if (and char (numberp event))
|
||||||
(ess-noweb-narrow-to-chunk))
|
(replace-match char t t)
|
||||||
(and (fboundp 'pm/narrow-to-span)
|
(replace-match "")))
|
||||||
polymode-mode
|
(t (insert assign))))
|
||||||
(pm/narrow-to-span)))
|
(funcall #'self-insert-command arg)))
|
||||||
(if (or
|
|
||||||
(ess-inside-string-or-comment-p (point))
|
|
||||||
(not (equal ess-language "S")))
|
|
||||||
(insert ess-smart-S-assign-key)
|
|
||||||
(ess-insert-S-assign)))
|
|
||||||
(funcall #'self-insert-command (or N 1))))
|
|
||||||
|
|
||||||
(defun ess-insert-S-assign ()
|
|
||||||
"Insert the assignment operator `ess-S-assign', unless it is already there.
|
|
||||||
In that case, it is removed and replaced by `ess-smart-S-assign-key'.
|
|
||||||
`ess-S-assign', typically \" <- \", can be customized."
|
|
||||||
(interactive)
|
|
||||||
;; one keypress produces ess-S-assign; a second keypress will delete
|
|
||||||
;; ess-S-assign and instead insert _
|
|
||||||
;; Rather than trying to count a second _ keypress, just check whether
|
|
||||||
;; the current point is preceded by ess-S-assign.
|
|
||||||
(let ((assign-len (length ess-S-assign)))
|
|
||||||
(if (and
|
|
||||||
(>= (point) (+ assign-len (point-min))) ;check that we can move back
|
|
||||||
(save-excursion
|
|
||||||
(backward-char assign-len)
|
|
||||||
(looking-at ess-S-assign)))
|
|
||||||
;; If we are currently looking at ess-S-assign, replace it with _
|
|
||||||
(progn
|
|
||||||
(delete-char (- assign-len))
|
|
||||||
(insert ess-smart-S-assign-key))
|
|
||||||
(if (string= ess-smart-S-assign-key "_")
|
|
||||||
(delete-horizontal-space))
|
|
||||||
(insert ess-S-assign))))
|
|
||||||
|
|
||||||
(defalias 'ess--activate-smart-S-assign-key 'ignore "")
|
|
||||||
(make-obsolete 'ess--activate-smart-S-assign-key
|
|
||||||
"it does nothing. Set `ess-smart-S-assign-key' instead." "2018-06-08")
|
|
||||||
(defun ess-disable-smart-S-assign (&rest _ignore)
|
(defun ess-disable-smart-S-assign (&rest _ignore)
|
||||||
"Disable `ess-smart-S-assign'."
|
"Disable `ess-insert-assign'."
|
||||||
(declare (obsolete ess-smart-S-assign-key "2018-06-08"))
|
(declare (obsolete "Use ess-smart-S-assign-key instead." "2018-06-08"))
|
||||||
(warn "This function is obsolete, use `ess-smart-S-assign-key' instead.")
|
|
||||||
(setq ess-smart-S-assign-key nil))
|
(setq ess-smart-S-assign-key nil))
|
||||||
|
|
||||||
(defun ess-add-MM-keys ()
|
(defun ess-add-MM-keys ()
|
||||||
"Define MM's user keys, currently \\<ess-mode-map>\\[ess-insert-function-outline], and
|
"Define MM's user keys, currently \\<ess-mode-map>\\[ess-insert-function-outline], and
|
||||||
\\<inferior-ess-mode-map>\\[ess-execute-screen-options]."
|
\\<inferior-ess-mode-map>\\[ess-execute-screen-options]."
|
||||||
(interactive)
|
(interactive)
|
||||||
(require 'ess-mode); typically unnecessary
|
(require 'ess); typically unnecessary
|
||||||
(require 'ess-inf); dito
|
(require 'ess-inf); dito
|
||||||
(define-key inferior-ess-mode-map "\C-cw" 'ess-execute-screen-options)
|
(define-key inferior-ess-mode-map "\C-cw" 'ess-execute-screen-options)
|
||||||
|
|
||||||
;; Make M-- : [Alt] + [-] (in addition to / instead of "_" = (on US-keyboard) [Shift]+ [-]
|
;; Make M-- : [Alt] + [-] (in addition to / instead of "_" = (on US-keyboard) [Shift]+ [-]
|
||||||
;; Note this overwrites 'M--' as "negative argument" (still on 'C--'):
|
;; Note this overwrites 'M--' as "negative argument" (still on 'C--'):
|
||||||
(define-key ess-mode-map [?\M--] 'ess-insert-S-assign)
|
(define-key ess-mode-map [?\M--] 'ess-insert-assign)
|
||||||
(define-key inferior-ess-mode-map [?\M--] 'ess-insert-S-assign)
|
(define-key inferior-ess-mode-map [?\M--] 'ess-insert-assign)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -802,11 +786,12 @@ return it. Otherwise, return `ess-help-topics-list'."
|
|||||||
|
|
||||||
|
|
||||||
(define-obsolete-function-alias 'ess-toggle-S-assign-key #'ignore "2018-06-08")
|
(define-obsolete-function-alias 'ess-toggle-S-assign-key #'ignore "2018-06-08")
|
||||||
(define-obsolete-function-alias 'ess-smart-underscore 'ess-smart-S-assign "2018-06-08")
|
(define-obsolete-function-alias 'ess-smart-underscore 'ess-insert-assign "2018-06-08")
|
||||||
|
(define-obsolete-function-alias 'ess-smart-S-assign 'ess-insert-assign "2018-06-21")
|
||||||
|
(define-obsolete-function-alias 'ess-insert-S-assign 'ess-insert-assign "2018-07-02")
|
||||||
|
|
||||||
(define-obsolete-function-alias 'ess-toggle-underscore 'ess-disable-smart-S-assign "2018-06-08")
|
(define-obsolete-function-alias 'ess-toggle-underscore 'ess-disable-smart-S-assign "2018-06-08")
|
||||||
(define-obsolete-function-alias 'ess-toggle-S-assign 'ess-disable-smart-S-assign "2018-06-08")
|
(define-obsolete-function-alias 'ess-toggle-S-assign 'ess-disable-smart-S-assign "2018-06-08")
|
||||||
(define-obsolete-function-alias 'ess--unset-smart-S-assign-key 'ess-disable-smart-S-assign "2018-06-08")
|
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(add-to-list 'auto-mode-alist '("\\.[Ss]t\\'" . S-transcript-mode))
|
(add-to-list 'auto-mode-alist '("\\.[Ss]t\\'" . S-transcript-mode))
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(require 'ess-mode)
|
(require 'ess)
|
||||||
|
|
||||||
;;; Table of Contents
|
;;; Table of Contents
|
||||||
;;; Section 1: Variable Definitions
|
;;; Section 1: Variable Definitions
|
||||||
@@ -435,13 +435,27 @@ on the way."
|
|||||||
(file-name-directory ess-sas-file-path)) "\""))))
|
(file-name-directory ess-sas-file-path)) "\""))))
|
||||||
(comint-send-input))
|
(comint-send-input))
|
||||||
|
|
||||||
|
(defun ess-sas--change-alist (item value alist)
|
||||||
|
"Modify ALIST to set VALUE to ITEM.
|
||||||
|
If there is a pair whose car is ITEM, replace its cdr by VALUE.
|
||||||
|
If there is not such pair, create new pair (ITEM . VALUE) and
|
||||||
|
return new alist whose car is the new pair and cdr is ALIST.
|
||||||
|
\[tomo's ELIS like function]"
|
||||||
|
(let ((pair (assoc item alist)))
|
||||||
|
(if pair
|
||||||
|
(progn
|
||||||
|
(setcdr pair value)
|
||||||
|
alist)
|
||||||
|
(cons (cons item value) alist))))
|
||||||
|
|
||||||
(defun ess-sas-create-local-variables-alist (&optional file-or-buffer)
|
(defun ess-sas-create-local-variables-alist (&optional file-or-buffer)
|
||||||
"Create an alist of local variables from file-or-buffer, use the
|
"Create an alist of local variables from file-or-buffer, use the
|
||||||
current buffer if nil."
|
current buffer if nil."
|
||||||
|
|
||||||
(if file-or-buffer (set-buffer (ess-get-file-or-buffer file-or-buffer)))
|
(if file-or-buffer (set-buffer (ess-get-file-or-buffer file-or-buffer)))
|
||||||
|
(ess-sas--change-alist 'ess-kermit-remote-directory ess-kermit-remote-directory nil))
|
||||||
|
|
||||||
(ess-change-alist 'ess-kermit-remote-directory ess-kermit-remote-directory nil))
|
(define-obsolete-function-alias
|
||||||
|
'ess-change-alist 'ess-sas--change-alist "2018-07-06")
|
||||||
|
|
||||||
(defun ess-sas-data-view-fsview (&optional ess-sas-data)
|
(defun ess-sas-data-view-fsview (&optional ess-sas-data)
|
||||||
"Open a dataset for viewing with PROC FSVIEW."
|
"Open a dataset for viewing with PROC FSVIEW."
|
||||||
@@ -50,7 +50,6 @@
|
|||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(require 'ess)
|
(require 'ess)
|
||||||
(require 'ess-mode)
|
|
||||||
(require 'ess-custom)
|
(require 'ess-custom)
|
||||||
(require 'ess-sas-a)
|
(require 'ess-sas-a)
|
||||||
|
|
||||||
@@ -137,22 +136,24 @@ A .lst file is a SAS listing file when:
|
|||||||
'(ess-SAS-listing-mode-p . SAS-listing-mode))
|
'(ess-SAS-listing-mode-p . SAS-listing-mode))
|
||||||
|
|
||||||
(defun SAS-log-mode ()
|
(defun SAS-log-mode ()
|
||||||
"`ess-transcript-mode' for SAS."
|
"`ess-transcript-mode' for SAS."
|
||||||
(interactive)
|
(interactive)
|
||||||
(SAS-mode)
|
(SAS-mode)
|
||||||
(setq mode-name "ESS[LOG]")
|
(setq mode-name "ESS[LOG]")
|
||||||
(ess-transcript-minor-mode 1)
|
(ess-transcript-minor-mode 1)
|
||||||
(setq buffer-read-only t)) ;; to protect the buffer.
|
(setq buffer-read-only t) ;; to protect the buffer.
|
||||||
|
(buffer-disable-undo))
|
||||||
|
|
||||||
(defvar sas-mode-local-map nil "contains modified local keymap for SAS")
|
(defvar sas-mode-local-map nil "contains modified local keymap for SAS")
|
||||||
(defun SAS-listing-mode()
|
(defun SAS-listing-mode()
|
||||||
"Fundamental mode with `ess-listing-minor-mode' and read-only."
|
"Fundamental mode with `ess-listing-minor-mode' and read-only."
|
||||||
(interactive)
|
(interactive)
|
||||||
(fundamental-mode)
|
(fundamental-mode)
|
||||||
(setq mode-name "ESS[LST]")
|
(setq mode-name "ESS[LST]")
|
||||||
(ess-listing-minor-mode 1)
|
(ess-listing-minor-mode 1)
|
||||||
(use-local-map sas-mode-local-map)
|
(use-local-map sas-mode-local-map)
|
||||||
(setq buffer-read-only t)) ;; to protect the buffer.
|
(setq buffer-read-only t) ;; to protect the buffer.
|
||||||
|
(buffer-disable-undo))
|
||||||
|
|
||||||
(fset 'sas-log-mode 'SAS-log-mode)
|
(fset 'sas-log-mode 'SAS-log-mode)
|
||||||
(fset 'SAS-transcript-mode 'SAS-log-mode)
|
(fset 'SAS-transcript-mode 'SAS-log-mode)
|
||||||
@@ -42,9 +42,6 @@
|
|||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
;; Provide here; otherwise we'll get infinite loops of (require ..):
|
|
||||||
(provide 'ess-site)
|
|
||||||
|
|
||||||
;;;; Load path, autoloads, and major modes
|
;;;; Load path, autoloads, and major modes
|
||||||
;;;; ========================================
|
;;;; ========================================
|
||||||
;;
|
;;
|
||||||
@@ -95,10 +92,6 @@ for ESS, such as icons.")
|
|||||||
(add-to-list 'Info-default-directory-list (expand-file-name "../doc/info/" ess-lisp-directory)))
|
(add-to-list 'Info-default-directory-list (expand-file-name "../doc/info/" ess-lisp-directory)))
|
||||||
|
|
||||||
|
|
||||||
;; Loads ess-custom.el and more
|
|
||||||
(require 'ess)
|
|
||||||
|
|
||||||
|
|
||||||
;;; Loading popular dialects (they should become optional in the future)
|
;;; Loading popular dialects (they should become optional in the future)
|
||||||
|
|
||||||
;; R and Julia
|
;; R and Julia
|
||||||
@@ -137,20 +130,9 @@ for ESS, such as icons.")
|
|||||||
;;; Toolbar support
|
;;; Toolbar support
|
||||||
(require 'ess-toolbar)
|
(require 'ess-toolbar)
|
||||||
|
|
||||||
;;; Site Specific setup
|
|
||||||
;;;; ===============================================
|
|
||||||
|
|
||||||
(eval-after-load "ess-r-mode"
|
|
||||||
'(progn
|
|
||||||
(ess-write-to-dribble-buffer "[ess-site:] before creating ess-versions-* ...")
|
|
||||||
(ess-r-s-define-runners+menu)
|
|
||||||
(ess-write-to-dribble-buffer "[ess-site:] after ess-versions-created ...")))
|
|
||||||
|
|
||||||
;; Check to see that inferior-ess-r-program points to a working version
|
|
||||||
;; of R; if not, try to find the newest version:
|
|
||||||
(ess-check-R-program) ;; -> (ess-find-newest-R) if needed, in ./ess-r-d.el
|
|
||||||
(ess-write-to-dribble-buffer "[ess-site:] *very* end ...")
|
(ess-write-to-dribble-buffer "[ess-site:] *very* end ...")
|
||||||
|
|
||||||
|
|
||||||
|
(provide 'ess-site)
|
||||||
|
|
||||||
;;; ess-site.el ends here
|
;;; ess-site.el ends here
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
;;; Requires and Autoloads:
|
;;; Requires and Autoloads:
|
||||||
|
|
||||||
(require 'ess-mode)
|
(require 'ess)
|
||||||
(require 'ess-inf)
|
(require 'ess-inf)
|
||||||
(require 'ess-s-lang)
|
(require 'ess-s-lang)
|
||||||
(require 'ess-dde)
|
(require 'ess-dde)
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(require 'ess-mode)
|
(require 'ess)
|
||||||
(require 'ess-inf)
|
(require 'ess-inf)
|
||||||
(require 'ess-s-lang)
|
(require 'ess-s-lang)
|
||||||
(require 'ess-dde)
|
(require 'ess-dde)
|
||||||
@@ -187,10 +187,26 @@ ESS initialization."
|
|||||||
;; Iterate over each string in VERSIONS, creating a new defun
|
;; Iterate over each string in VERSIONS, creating a new defun
|
||||||
;; each time.
|
;; each time.
|
||||||
(setq ess-s-created-runners
|
(setq ess-s-created-runners
|
||||||
(mapc (lambda (v) (ess-define-runner v "S")) versions)))))
|
(mapc (lambda (v) (ess-define-runner v "S")) versions))
|
||||||
|
;; Add to menu
|
||||||
|
(when ess-s-created-runners
|
||||||
|
;; new-menu will be a list of 3-vectors, of the form:
|
||||||
|
;; ["R-1.8.1" R-1.8.1 t]
|
||||||
|
(let ((new-menu (mapcar (lambda (x) (vector x (intern x) t))
|
||||||
|
ess-s-created-runners)))
|
||||||
|
(easy-menu-add-item ess-mode-menu '("Start Process")
|
||||||
|
(cons "Other" new-menu)))))))
|
||||||
|
;; Define the runners
|
||||||
|
(if ess-microsoft-p
|
||||||
|
(nconc
|
||||||
|
(ess-sqpe-versions-create ess-SHOME-versions) ;; 32-bit
|
||||||
|
(ess-sqpe-versions-create ess-SHOME-versions-64 "-64-bit")) ;; 64-bit
|
||||||
|
(ess-s-define-runners))
|
||||||
(define-obsolete-function-alias
|
(define-obsolete-function-alias
|
||||||
'ess-s-versions-create 'ess-s-define-runners "2018-05-12")
|
'ess-s-versions-create 'ess-s-define-runners "2018-05-12")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; Provide package
|
; Provide package
|
||||||
|
|
||||||
(provide 'ess-sp6-d)
|
(provide 'ess-sp6-d)
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(require 'ess-mode)
|
(require 'ess)
|
||||||
(require 'ess-stata-lang)
|
(require 'ess-stata-lang)
|
||||||
|
|
||||||
(defvar STA-dialect-name "stata"
|
(defvar STA-dialect-name "stata"
|
||||||
@@ -81,8 +81,7 @@
|
|||||||
;;; Autoloads and Requires
|
;;; Autoloads and Requires
|
||||||
|
|
||||||
(eval-when-compile
|
(eval-when-compile
|
||||||
(require 'ess-custom)
|
(require 'ess-custom))
|
||||||
(require 'ess))
|
|
||||||
|
|
||||||
(require 'ess-utils)
|
(require 'ess-utils)
|
||||||
(require 'ess-noweb-mode)
|
(require 'ess-noweb-mode)
|
||||||
@@ -80,7 +80,6 @@ Currently only R is supported."
|
|||||||
|
|
||||||
(defcustom ess-tracebug-prefix nil
|
(defcustom ess-tracebug-prefix nil
|
||||||
"*Key to be used as prefix for all ess-tracebug commands.
|
"*Key to be used as prefix for all ess-tracebug commands.
|
||||||
|
|
||||||
Set this to a key cominbation you don't use often, like:
|
Set this to a key cominbation you don't use often, like:
|
||||||
|
|
||||||
(setq ess-tracebug-prefix \"\\M-t\")
|
(setq ess-tracebug-prefix \"\\M-t\")
|
||||||
@@ -118,15 +117,13 @@ paragraph, R will report an error."
|
|||||||
|
|
||||||
(defcustom ess-tracebug-enter-hook nil
|
(defcustom ess-tracebug-enter-hook nil
|
||||||
"List of functions to call on entry to ess-tracebug mode.
|
"List of functions to call on entry to ess-tracebug mode.
|
||||||
Use `add-hook' to insert append your functions to this list.
|
Use `add-hook' to insert append your functions to this list."
|
||||||
"
|
|
||||||
:group 'ess-tracebug
|
:group 'ess-tracebug
|
||||||
:type 'hook)
|
:type 'hook)
|
||||||
|
|
||||||
(defcustom ess-tracebug-exit-hook nil
|
(defcustom ess-tracebug-exit-hook nil
|
||||||
"List of functions to call on exit of ess-tracebug mode.
|
"List of functions to call on exit of ess-tracebug mode.
|
||||||
Use `add-hook' to insert append your functions to this list.
|
Use `add-hook' to insert append your functions to this list."
|
||||||
"
|
|
||||||
:group 'ess-tracebug
|
:group 'ess-tracebug
|
||||||
:type 'hook)
|
:type 'hook)
|
||||||
|
|
||||||
@@ -153,7 +150,6 @@ the outer-most code block.")
|
|||||||
|
|
||||||
(defvar ess-tracebug-original-buffer-marker nil
|
(defvar ess-tracebug-original-buffer-marker nil
|
||||||
"Marker pointing to the beginning of original source code.
|
"Marker pointing to the beginning of original source code.
|
||||||
|
|
||||||
If non-nil, tracebug will insert the source references based on
|
If non-nil, tracebug will insert the source references based on
|
||||||
this location instead of the current buffer. This is useful for
|
this location instead of the current buffer. This is useful for
|
||||||
applications, like org-babel, that call ess evaluation functions
|
applications, like org-babel, that call ess evaluation functions
|
||||||
@@ -1265,14 +1261,9 @@ prompts."
|
|||||||
(if do-clean
|
(if do-clean
|
||||||
(ess--replace-long+-in-prompt prompt (eq pos2 (point-max)))
|
(ess--replace-long+-in-prompt prompt (eq pos2 (point-max)))
|
||||||
prompt)))
|
prompt)))
|
||||||
;; insert prompt but avoid comint-output-filter
|
;; Cannot bypass this call to comint-output-filter function as
|
||||||
(with-current-buffer pbuf
|
;; external tools could rely on prompts (org-babel [#598])
|
||||||
(save-restriction
|
(comint-output-filter proc prompt)
|
||||||
(widen)
|
|
||||||
(goto-char (process-mark proc))
|
|
||||||
(with-silent-modifications
|
|
||||||
(insert prompt)
|
|
||||||
(set-marker (process-mark proc) (point)))))
|
|
||||||
(setq prev-prompt (and do-clean prompt)
|
(setq prev-prompt (and do-clean prompt)
|
||||||
pos1 pos2))
|
pos1 pos2))
|
||||||
;; insert last chunk if any
|
;; insert last chunk if any
|
||||||
@@ -1287,15 +1287,14 @@ symbols (like aaa$bbb and aaa@bbb in R)."
|
|||||||
(ess-symbol-start)))))
|
(ess-symbol-start)))))
|
||||||
|
|
||||||
(defun ess-inside-string-or-comment-p (&optional pos)
|
(defun ess-inside-string-or-comment-p (&optional pos)
|
||||||
"Return non-nil if POSition [defaults to (point)] is inside string or comment
|
"Return non-nil if POS is inside a string or comment.
|
||||||
(according to syntax)."
|
POS defaults to `point.'"
|
||||||
;;FIXME (defun ess-calculate-indent ..) can do that ...
|
(save-excursion
|
||||||
(interactive)
|
(let* ((pos (or pos (point)))
|
||||||
(setq pos (or pos (point)))
|
(state (syntax-ppss pos)))
|
||||||
(let ((ppss (syntax-ppss pos)))
|
(or (nth 3 state) (nth 4 state)))))
|
||||||
(or (car (setq ppss (nthcdr 3 ppss)))
|
|
||||||
(car (setq ppss (cdr ppss)))
|
|
||||||
(nth 3 ppss))))
|
|
||||||
|
|
||||||
(defun ess-inside-string-p (&optional pos)
|
(defun ess-inside-string-p (&optional pos)
|
||||||
"Return non-nil if point is inside string (according to syntax)."
|
"Return non-nil if point is inside string (according to syntax)."
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
;;; ess-mode.el --- Support for editing ESS source code
|
;;; ess.el --- Emacs Speaks Statistics
|
||||||
|
|
||||||
;; Copyright (C) 1989-1994 Doug Bates, Ed Kademan, Frank Ritter, David Smith.
|
;; Copyright (C) 1989-1994 Doug Bates, Ed Kademan, Frank Ritter, David Smith.
|
||||||
;; Copyright (C) 1997--2010 A.J. Rossini, Richard M. Heiberger, Martin
|
;; Copyright (C) 1997--2010 A.J. Rossini, Richard M. Heiberger, Martin
|
||||||
@@ -107,7 +107,8 @@
|
|||||||
(define-key map "\C-c\C-e" 'ess-extra-map)
|
(define-key map "\C-c\C-e" 'ess-extra-map)
|
||||||
(define-key map "\C-c\C-t" 'ess-dev-map)
|
(define-key map "\C-c\C-t" 'ess-dev-map)
|
||||||
(when ess-smart-S-assign-key
|
(when ess-smart-S-assign-key
|
||||||
(define-key map ess-smart-S-assign-key #'ess-smart-S-assign))
|
(define-key map ess-smart-S-assign-key 'ess-insert-assign))
|
||||||
|
(define-key map (kbd "C-c C-=") 'ess-cycle-assignment)
|
||||||
map)
|
map)
|
||||||
"Keymap for `ess-mode'.")
|
"Keymap for `ess-mode'.")
|
||||||
|
|
||||||
@@ -155,7 +156,7 @@
|
|||||||
["Goto end of process buffer" ess-switch-to-end-of-ESS t]
|
["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 to process buffer" ess-switch-to-inferior-or-script-buffer t]
|
||||||
["Switch Process" ess-switch-process t]
|
["Switch Process" ess-switch-process t]
|
||||||
["Recreate R and S versions known to ESS" (ess-r-s-versions-creation+menu) t]
|
;; ["Recreate R and S versions known to ESS" (ess-r-s-versions-creation+menu) t]
|
||||||
("Start Process"
|
("Start Process"
|
||||||
["R" R :help "Start a new R process" :active t]
|
["R" R :help "Start a new R process" :active t]
|
||||||
["S" S :help "Start a new S process" :active t]
|
["S" S :help "Start a new S process" :active t]
|
||||||
@@ -947,25 +948,29 @@ generate the source buffer."
|
|||||||
(down-list 1)
|
(down-list 1)
|
||||||
(error nil)))))))
|
(error nil)))))))
|
||||||
|
|
||||||
(defun ess-define-runner (name dialect)
|
(defun ess-define-runner (name dialect &optional path)
|
||||||
"Create a function NAME.
|
"Create a function NAME.
|
||||||
This function starts the inferior process with the specified
|
This function starts the inferior process with the specified
|
||||||
version. DIALECT can be \"R,\" \"S,\", \"SAS.\""
|
version. DIALECT can be \"R,\" \"S,\", \"SAS.\" If given, PATH
|
||||||
|
should be the absolute path to the program. It defaults to NAME."
|
||||||
(lexical-let ((name name)
|
(lexical-let ((name name)
|
||||||
(dialect dialect))
|
(dialect dialect)
|
||||||
|
(path path))
|
||||||
(fset (intern name)
|
(fset (intern name)
|
||||||
(lambda (&optional start-args)
|
(lambda (&optional start-args)
|
||||||
"Start this process version in an inferior ESS buffer.
|
"Start this process version in an inferior ESS buffer.
|
||||||
Function defined using `ess-define-runner'."
|
Function defined using `ess-define-runner'."
|
||||||
(interactive "P")
|
(interactive "P")
|
||||||
(cond ((string= dialect "R")
|
(cond ((string= dialect "R")
|
||||||
(let ((inferior-ess-r-program name))
|
(let ((inferior-ess-r-program (or path name)))
|
||||||
(R start-args)))
|
(R start-args)))
|
||||||
((string= dialect "S")
|
((string= dialect "S")
|
||||||
(let ((inferior-S+-program name))
|
(let ((inferior-S+-program (or path name)))
|
||||||
|
(require 'ess-sp6-d)
|
||||||
(S+)))
|
(S+)))
|
||||||
((string= dialect "SAS")
|
((string= dialect "SAS")
|
||||||
(let ((inferior-SAS-program name))
|
(let ((inferior-SAS-program (or path name)))
|
||||||
|
(require 'ess-sas-d)
|
||||||
(SAS))))))))
|
(SAS))))))))
|
||||||
|
|
||||||
(defun ess-version ()
|
(defun ess-version ()
|
||||||
@@ -1009,6 +1014,6 @@ Function defined using `ess-define-runner'."
|
|||||||
(concat ess-version " [" ess-revision "]")))
|
(concat ess-version " [" ess-revision "]")))
|
||||||
|
|
||||||
|
|
||||||
(provide 'ess-mode)
|
(provide 'ess)
|
||||||
|
|
||||||
;;; ess-mode.el ends here
|
;;; ess.el ends here
|
||||||
@@ -242,6 +242,14 @@ File: ess.info, Node: New features, Next: Credits, Prev: Features, Up: Intro
|
|||||||
|
|
||||||
Changes and New Features in development version:
|
Changes and New Features in development version:
|
||||||
|
|
||||||
|
* ESS[R]: Interaction with inferior process in non-R files within
|
||||||
|
packages (for instance C or C++ files) has been improved. This is
|
||||||
|
a work in progress.
|
||||||
|
|
||||||
|
* ESS[R]: 'ess-r-package-use-dir' (which sets the working directory
|
||||||
|
to the root of the current package) now works with any mode (e.g.
|
||||||
|
in C or C++ files within '/src').
|
||||||
|
|
||||||
* This is the last release to support Emacs older than 25.1 Going
|
* This is the last release to support Emacs older than 25.1 Going
|
||||||
forward, only GNU Emacs 25.1 and newer will be supported. Soon
|
forward, only GNU Emacs 25.1 and newer will be supported. Soon
|
||||||
after this release, support for older Emacs versions will be
|
after this release, support for older Emacs versions will be
|
||||||
@@ -343,15 +351,32 @@ Changes and New Features in development version:
|
|||||||
customization to 'inferior-ess-R-program'. These variables are
|
customization to 'inferior-ess-R-program'. These variables are
|
||||||
treated as risky variables.
|
treated as risky variables.
|
||||||
|
|
||||||
* Customization of ess-smart-S-assign-key has been reworked. Use
|
* 'ess-smart-S-assign' changed name to 'ess-insert-S-assign'. By
|
||||||
'(setq ess-smart-S-assign-key nil)' to disable smart assignment at
|
default, it provides similar functionality. Since many users
|
||||||
any time instead of '(ess-toggle-underscore nil)'. To use another
|
dislike this functionality, it is easier to disable; set
|
||||||
key, you should set the value of 'ess-smart-S-assign-key' before
|
'ess-smart-S-assign-key' to nil. The following functions have been
|
||||||
ESS is loaded. The following functions have been made obsolete.
|
made obsolete and will be removed in the next release of ESS:
|
||||||
You should customize ess-smart-S-assign-key instead:
|
ess-smart-S-assign, ess-toggle-S-assign, ess-toggle-S-assign-key,
|
||||||
ess-toggle-S-assign, ess-toggle-S-assign-key,
|
ess-disable-smart-S-assign.
|
||||||
ess-unset-smart-S-assign-key, ess-activate-smart-S-assign-key,
|
|
||||||
ess-disable-smart-S-assign
|
* The option ess-S-assign has been removed. Customize new option
|
||||||
|
'ess-assign-list' instead.
|
||||||
|
|
||||||
|
* 'C-c C-=' is now bound to 'ess-cycle-assignment' by default See the
|
||||||
|
docstring for details. New user customization option
|
||||||
|
'ess-assign-list' controls what assignment operators are cycled
|
||||||
|
through.
|
||||||
|
|
||||||
|
* The ESS initialization process has been further streamlined. If
|
||||||
|
you update the autoloads (which installation from 'package-install'
|
||||||
|
does), you should not need to '(require 'ess-site)' at all, as
|
||||||
|
autoloads should automatically load ESS when it is needed (e.g.
|
||||||
|
the first time an R buffer is opened). In order to defer loading
|
||||||
|
your ESS config, you may want to do something like
|
||||||
|
'(with-require-after-load "ess" <ess-config-here>)' in your Emacs
|
||||||
|
init file. Users of the popular 'use-package' Emacs package can
|
||||||
|
now do '(use-package ess :defer t)' to take advantage of this
|
||||||
|
behavior.
|
||||||
|
|
||||||
Changes and New Features in 17.11:
|
Changes and New Features in 17.11:
|
||||||
|
|
||||||
@@ -4721,104 +4746,104 @@ Node: Introduction2347
|
|||||||
Node: Features5100
|
Node: Features5100
|
||||||
Node: Current Features5936
|
Node: Current Features5936
|
||||||
Node: New features9387
|
Node: New features9387
|
||||||
Node: Credits20331
|
Node: Credits21509
|
||||||
Node: Manual23890
|
Node: Manual25068
|
||||||
Node: Installation26556
|
Node: Installation27734
|
||||||
Node: Latest version26992
|
Node: Latest version28170
|
||||||
Node: Installation instructions27753
|
Node: Installation instructions28931
|
||||||
Node: License30953
|
Node: License32131
|
||||||
Node: Stability31616
|
Node: Stability32794
|
||||||
Node: Requirements32113
|
Node: Requirements33291
|
||||||
Node: Interactive ESS32794
|
Node: Interactive ESS33972
|
||||||
Node: Starting up33608
|
Node: Starting up34786
|
||||||
Node: Multiple ESS processes34352
|
Node: Multiple ESS processes35530
|
||||||
Node: ESS processes on Remote Computers35433
|
Node: ESS processes on Remote Computers36611
|
||||||
Node: Customizing startup39535
|
Node: Customizing startup40713
|
||||||
Node: Entering commands42152
|
Node: Entering commands43330
|
||||||
Node: Command-line editing43310
|
Node: Command-line editing44488
|
||||||
Node: Transcript44543
|
Node: Transcript45721
|
||||||
Node: Last command46312
|
Node: Last command47490
|
||||||
Node: Process buffer motion47738
|
Node: Process buffer motion48916
|
||||||
Node: Transcript resubmit49241
|
Node: Transcript resubmit50419
|
||||||
Node: Saving transcripts51206
|
Node: Saving transcripts52384
|
||||||
Node: Command History52996
|
Node: Command History54174
|
||||||
Node: Saving History56405
|
Node: Saving History57583
|
||||||
Node: History expansion57166
|
Node: History expansion58344
|
||||||
Node: Hot keys60377
|
Node: Hot keys61555
|
||||||
Node: Statistical Process running in ESS?64447
|
Node: Statistical Process running in ESS?65625
|
||||||
Node: Emacsclient65726
|
Node: Emacsclient66904
|
||||||
Node: Other66518
|
Node: Other67696
|
||||||
Node: Evaluating code67537
|
Node: Evaluating code68715
|
||||||
Node: Transcript Mode71218
|
Node: Transcript Mode72396
|
||||||
Node: Resubmit72371
|
Node: Resubmit73549
|
||||||
Node: Clean73434
|
Node: Clean74612
|
||||||
Node: Editing objects74430
|
Node: Editing objects75608
|
||||||
Node: Edit buffer75548
|
Node: Edit buffer76726
|
||||||
Node: Loading77594
|
Node: Loading78772
|
||||||
Node: Error Checking78621
|
Node: Error Checking79799
|
||||||
Node: Indenting79670
|
Node: Indenting80848
|
||||||
Node: Styles82859
|
Node: Styles84037
|
||||||
Node: Other edit buffer commands85294
|
Node: Other edit buffer commands86472
|
||||||
Node: Source Files86950
|
Node: Source Files88128
|
||||||
Node: Source Directories91554
|
Node: Source Directories92732
|
||||||
Node: Help94707
|
Node: Help95885
|
||||||
Node: Completion98805
|
Node: Completion99983
|
||||||
Node: Object names99038
|
Node: Object names100216
|
||||||
Node: Function arguments101711
|
Node: Function arguments102889
|
||||||
Node: Minibuffer completion102250
|
Node: Minibuffer completion103428
|
||||||
Node: Auto-complete102730
|
Node: Auto-complete103908
|
||||||
Node: Company104277
|
Node: Company105455
|
||||||
Node: Icicles104656
|
Node: Icicles105834
|
||||||
Node: Developing with ESS105975
|
Node: Developing with ESS107153
|
||||||
Node: ESS tracebug106421
|
Node: ESS tracebug107599
|
||||||
Node: Editing documentation109579
|
Node: Editing documentation110757
|
||||||
Node: R documentation files110129
|
Node: R documentation files111307
|
||||||
Node: Roxygen114056
|
Node: Roxygen115234
|
||||||
Node: Namespaced Evaluation118391
|
Node: Namespaced Evaluation119569
|
||||||
Node: Extras120387
|
Node: Extras121565
|
||||||
Node: ESS ElDoc121411
|
Node: ESS ElDoc122589
|
||||||
Node: ESS Flymake122907
|
Node: ESS Flymake124085
|
||||||
Node: Handy commands123848
|
Node: Handy commands125026
|
||||||
Node: Highlighting125045
|
Node: Highlighting126223
|
||||||
Node: Parens126374
|
Node: Parens127552
|
||||||
Node: Graphics126850
|
Node: Graphics128028
|
||||||
Node: printer127521
|
Node: printer128699
|
||||||
Node: X11128277
|
Node: X11129455
|
||||||
Node: winjava128616
|
Node: winjava129794
|
||||||
Node: Imenu129028
|
Node: Imenu130206
|
||||||
Node: Toolbar129875
|
Node: Toolbar131053
|
||||||
Node: Xref130283
|
Node: Xref131461
|
||||||
Node: Rdired130606
|
Node: Rdired131784
|
||||||
Node: Rutils131660
|
Node: Rutils132838
|
||||||
Node: Org134054
|
Node: Org135232
|
||||||
Node: Sweave and AUCTeX134996
|
Node: Sweave and AUCTeX136174
|
||||||
Node: ESS for R137120
|
Node: ESS for R138298
|
||||||
Node: ESS(R)--Editing files137420
|
Node: ESS(R)--Editing files138598
|
||||||
Node: iESS(R)--Inferior ESS processes137939
|
Node: iESS(R)--Inferior ESS processes139117
|
||||||
Node: Philosophies for using ESS(R)142688
|
Node: Philosophies for using ESS(R)143866
|
||||||
Node: Example ESS usage143615
|
Node: Example ESS usage144793
|
||||||
Node: ESS for SAS145836
|
Node: ESS for SAS147014
|
||||||
Node: ESS(SAS)--Design philosophy146559
|
Node: ESS(SAS)--Design philosophy147737
|
||||||
Node: ESS(SAS)--Editing files147512
|
Node: ESS(SAS)--Editing files148690
|
||||||
Node: ESS(SAS)--TAB key149366
|
Node: ESS(SAS)--TAB key150544
|
||||||
Node: ESS(SAS)--Batch SAS processes150732
|
Node: ESS(SAS)--Batch SAS processes151910
|
||||||
Node: ESS(SAS)--Function keys for batch processing155758
|
Node: ESS(SAS)--Function keys for batch processing156936
|
||||||
Node: iESS(SAS)--Interactive SAS processes165244
|
Node: iESS(SAS)--Interactive SAS processes166422
|
||||||
Node: iESS(SAS)--Common problems168998
|
Node: iESS(SAS)--Common problems170176
|
||||||
Node: ESS(SAS)--Graphics170521
|
Node: ESS(SAS)--Graphics171699
|
||||||
Node: ESS(SAS)--Windows171304
|
Node: ESS(SAS)--Windows172482
|
||||||
Node: ESS for BUGS171882
|
Node: ESS for BUGS173060
|
||||||
Node: ESS for JAGS173638
|
Node: ESS for JAGS174816
|
||||||
Node: Mailing lists/bug reports176990
|
Node: Mailing lists/bug reports178168
|
||||||
Node: Bugs177254
|
Node: Bugs178432
|
||||||
Node: Reporting Bugs178879
|
Node: Reporting Bugs180057
|
||||||
Node: Mailing Lists179772
|
Node: Mailing Lists180950
|
||||||
Node: Help with Emacs180519
|
Node: Help with Emacs181697
|
||||||
Node: Customization181050
|
Node: Customization182228
|
||||||
Node: Indices181824
|
Node: Indices183002
|
||||||
Node: Key index181999
|
Node: Key index183177
|
||||||
Node: Function and program index187277
|
Node: Function and program index188455
|
||||||
Node: Variable index196771
|
Node: Variable index197949
|
||||||
Node: Concept index200259
|
Node: Concept index201437
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
@@ -103,20 +103,6 @@ The default value is nil."
|
|||||||
;; This REALLY shouldn't need an editing mode. Just a transcript and
|
;; This REALLY shouldn't need an editing mode. Just a transcript and
|
||||||
;; an inferior process handler.
|
;; an inferior process handler.
|
||||||
|
|
||||||
(defun ess-change-alist (item value alist)
|
|
||||||
"Modify ALIST to set VALUE to ITEM.
|
|
||||||
If there is a pair whose car is ITEM, replace its cdr by VALUE.
|
|
||||||
If there is not such pair, create new pair (ITEM . VALUE) and
|
|
||||||
return new alist whose car is the new pair and cdr is ALIST.
|
|
||||||
\[tomo's ELIS like function]"
|
|
||||||
(let ((pair (assoc item alist)))
|
|
||||||
(if pair
|
|
||||||
(progn
|
|
||||||
(setcdr pair value)
|
|
||||||
alist)
|
|
||||||
(cons (cons item value) alist))))
|
|
||||||
|
|
||||||
|
|
||||||
(defun ess-select-alist-dialect (&optional dialect)
|
(defun ess-select-alist-dialect (&optional dialect)
|
||||||
"Query user for an ESS dialect and return the matching customize-alist."
|
"Query user for an ESS dialect and return the matching customize-alist."
|
||||||
(interactive)
|
(interactive)
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user