~ubuntu-branches/ubuntu/raring/ess/raring-proposed

« back to all changes in this revision

Viewing changes to lisp/ess-trns.el

  • Committer: Package Import Robot
  • Author(s): Dirk Eddelbuettel
  • Date: 2012-05-09 08:00:38 UTC
  • mfrom: (1.2.23)
  • Revision ID: package-import@ubuntu.com-20120509080038-7an3nhbtgaj02a17
Tags: 12.04-1-1
New upstream patch version released today

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 
3
3
;; Copyright (C) 1989--1994 Bates, Kademan, Ritter and Smith
4
4
;; Copyright (C) 1997--2010 A.J. Rossini, Rich M. Heiberger, Martin
5
 
;;      Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen.
 
5
;;      Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen.
6
6
;; Copyright (C) 2011--2012 A.J. Rossini, Richard M. Heiberger, Martin Maechler,
7
 
;;      Kurt Hornik, Rodney Sparapani, Stephen Eglen and Vitalie Spinu.
 
7
;;      Kurt Hornik, Rodney Sparapani, Stephen Eglen and Vitalie Spinu.
8
8
 
9
 
;; Original Author: David Smith <dsmith@stats.adelaide.edu.au>
10
 
;; Maintainers: ESS-core <ESS-core@r-project.org>
 
9
;; Author: David Smith <dsmith@stats.adelaide.edu.au>
 
10
;; Maintainer: ESS-core <ESS-core@r-project.org>
11
11
 
12
12
;; This file is part of ESS
13
13
 
18
18
 
19
19
;; This file is distributed in the hope that it will be useful,
20
20
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
21
 
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
21
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22
22
;; GNU General Public License for more details.
23
23
 
24
24
;; You should have received a copy of the GNU General Public License
25
 
;; along with GNU Emacs; see the file COPYING.  If not, write to
 
25
;; along with GNU Emacs; see the file COPYING.  If not, write to
26
26
;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
27
27
 
28
28
;;; Commentary:
39
39
  (require 'comint)
40
40
  (require 'ess-inf))
41
41
 
42
 
(autoload 'ess-eval-region              "ess-inf" "[autoload]" t)
43
 
(autoload 'ess-eval-region-and-go       "ess-inf" "[autoload]" t)
44
 
(autoload 'ess-eval-function            "ess-inf" "[autoload]" t)
45
 
(autoload 'ess-eval-function-and-go     "ess-inf" "[autoload]" t)
46
 
(autoload 'ess-eval-line                "ess-inf" "[autoload]" t)
47
 
(autoload 'ess-eval-line-and-go         "ess-inf" "[autoload]" t)
48
 
(autoload 'ess-eval-line-and-step       "ess-inf" "[autoload]" t)
49
 
 
50
 
(autoload 'comint-previous-prompt       "comint" "[autoload]" t)
51
 
(autoload 'comint-next-prompt           "comint" "[autoload]" t)
52
 
 
53
 
(autoload 'ess-load-file                "ess-inf" "[autoload]" t)
54
 
(autoload 'ess-request-a-process        "ess-inf" "(autoload)" nil)
55
 
(autoload 'get-ess-buffer               "ess-inf" "(autoload)" nil)
56
 
(autoload 'ess-switch-to-ESS            "ess-inf" "(autoload)" nil)
57
 
(autoload 'ess-switch-to-end-of-ESS     "ess-inf" "(autoload)" nil)
58
 
(autoload 'ess-eval-linewise            "ess-inf" "(autoload)" nil)
59
 
(autoload 'inferior-ess-get-old-input   "ess-inf" "(autoload)" nil)
 
42
(autoload 'ess-eval-region              "ess-inf" "[autoload]" t)
 
43
(autoload 'ess-eval-region-and-go       "ess-inf" "[autoload]" t)
 
44
(autoload 'ess-eval-function            "ess-inf" "[autoload]" t)
 
45
(autoload 'ess-eval-function-and-go     "ess-inf" "[autoload]" t)
 
46
(autoload 'ess-eval-line                "ess-inf" "[autoload]" t)
 
47
(autoload 'ess-eval-line-and-go         "ess-inf" "[autoload]" t)
 
48
(autoload 'ess-eval-line-and-step       "ess-inf" "[autoload]" t)
 
49
 
 
50
(autoload 'comint-previous-prompt       "comint" "[autoload]" t)
 
51
(autoload 'comint-next-prompt           "comint" "[autoload]" t)
 
52
 
 
53
(autoload 'ess-load-file                "ess-inf" "[autoload]" t)
 
54
(autoload 'ess-request-a-process        "ess-inf" "(autoload)" nil)
 
55
(autoload 'get-ess-buffer               "ess-inf" "(autoload)" nil)
 
56
(autoload 'ess-switch-to-ESS            "ess-inf" "(autoload)" nil)
 
57
(autoload 'ess-switch-to-end-of-ESS     "ess-inf" "(autoload)" nil)
 
58
(autoload 'ess-eval-linewise            "ess-inf" "(autoload)" nil)
 
59
(autoload 'inferior-ess-get-old-input   "ess-inf" "(autoload)" nil)
60
60
 
61
61
 ; ess-transcript-mode
62
62
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
74
74
  (define-key ess-transcript-mode-map "\C-c\C-s" 'ess-switch-process)
75
75
  (define-key ess-transcript-mode-map "\C-c\C-r" 'ess-eval-region)
76
76
  (define-key ess-transcript-mode-map "\C-c\M-r" 'ess-eval-region-and-go)
77
 
;;  (define-key ess-transcript-mode-map "\M-\C-x"  'ess-eval-function)
78
 
;;  (define-key ess-transcript-mode-map "\C-c\M-f" 'ess-eval-function-and-go)
79
 
;;  (define-key ess-transcript-mode-map "\C-c\C-j" 'ess-eval-line)
80
 
;;  (define-key ess-transcript-mode-map "\C-c\M-j" 'ess-eval-line-and-go)
 
77
  ;;  (define-key ess-transcript-mode-map "\M-\C-x"  'ess-eval-function)
 
78
  ;;  (define-key ess-transcript-mode-map "\C-c\M-f" 'ess-eval-function-and-go)
 
79
  ;;  (define-key ess-transcript-mode-map "\C-c\C-j" 'ess-eval-line)
 
80
  ;;  (define-key ess-transcript-mode-map "\C-c\M-j" 'ess-eval-line-and-go)
81
81
 
82
82
  (define-key ess-transcript-mode-map "\C-c\C-k"    'ess-force-buffer-current)
83
83
  (define-key ess-transcript-mode-map "\C-c\C-q"    'ess-quit)
84
84
 
85
85
  (define-key ess-transcript-mode-map "\C-c\C-j" 'ess-transcript-send-command)
86
86
  (define-key ess-transcript-mode-map "\C-c\M-j" 'ess-transcript-send-command-and-move)
87
 
  (define-key ess-transcript-mode-map "\M-\C-a"  'ess-beginning-of-function)
88
 
  (define-key ess-transcript-mode-map "\M-\C-e"  'ess-end-of-function)
 
87
  (define-key ess-transcript-mode-map "\M-\C-a"  'ess-beginning-of-function)
 
88
  (define-key ess-transcript-mode-map "\M-\C-e"  'ess-end-of-function)
89
89
  (define-key ess-transcript-mode-map "\C-c\C-y" 'ess-switch-to-ESS)
90
90
  (define-key ess-transcript-mode-map "\C-c\C-z" 'ess-switch-to-end-of-ESS)
91
91
  (define-key ess-transcript-mode-map "\C-c\C-v" 'ess-display-help-on-object)
92
92
  (define-key ess-transcript-mode-map "\C-c\C-d" 'ess-dump-object-into-edit-buffer)
93
93
  (define-key ess-transcript-mode-map "\C-c\C-t" 'ess-execute-in-tb)
94
 
  (define-key ess-transcript-mode-map "\C-c\t"   'ess-complete-object-name)
95
 
  (define-key ess-transcript-mode-map "\C-a"     'comint-bol)
96
 
  (define-key ess-transcript-mode-map "\M-\t"    'comint-replace-by-expanded-filename)
97
 
  (define-key ess-transcript-mode-map "\M-?"     'comint-dynamic-list-completions)
 
94
  (define-key ess-transcript-mode-map "\C-c\t"   'ess-complete-object-name)
 
95
  (define-key ess-transcript-mode-map "\C-a"     'comint-bol)
 
96
  (define-key ess-transcript-mode-map "\M-\t"    'comint-replace-by-expanded-filename)
 
97
  (define-key ess-transcript-mode-map "\M-?"     'comint-dynamic-list-completions)
98
98
  (define-key ess-transcript-mode-map "\C-c\C-k" 'ess-request-a-process)
99
 
  (define-key ess-transcript-mode-map "{"        'ess-electric-brace)
100
 
  (define-key ess-transcript-mode-map "}"        'ess-electric-brace)
101
 
  (define-key ess-transcript-mode-map "\e\C-h"   'ess-mark-function)
102
 
  (define-key ess-transcript-mode-map "\e\C-q"   'ess-indent-exp)
103
 
  ;(define-key ess-transcript-mode-map "\177"    'backward-delete-char-untabify)
104
 
  (define-key ess-transcript-mode-map "\t"       'ess-indent-command)
 
99
  (define-key ess-transcript-mode-map "{"        'ess-electric-brace)
 
100
  (define-key ess-transcript-mode-map "}"        'ess-electric-brace)
 
101
  (define-key ess-transcript-mode-map "\e\C-h"   'ess-mark-function)
 
102
  (define-key ess-transcript-mode-map "\e\C-q"   'ess-indent-exp)
 
103
                                        ;(define-key ess-transcript-mode-map "\177"    'backward-delete-char-untabify)
 
104
  (define-key ess-transcript-mode-map "\t"       'ess-indent-command)
105
105
 
106
106
  (define-key ess-transcript-mode-map "\C-c\C-p" 'comint-previous-prompt)
107
107
  (define-key ess-transcript-mode-map "\C-c\C-n" 'comint-next-prompt)
108
108
  ;; (define-key ess-transcript-mode-map "\C-c\C-n"    'ess-eval-line-and-step)
109
109
 
110
 
  (define-key ess-transcript-mode-map "\r"       'ess-transcript-send-command-and-move)
111
 
  (define-key ess-transcript-mode-map "\M-\r"    'ess-transcript-send-command)
112
 
  (define-key ess-transcript-mode-map "\C-c\r"   'ess-transcript-copy-command)
 
110
  (define-key ess-transcript-mode-map "\r"       'ess-transcript-send-command-and-move)
 
111
  (define-key ess-transcript-mode-map "\M-\r"    'ess-transcript-send-command)
 
112
  (define-key ess-transcript-mode-map "\C-c\r"   'ess-transcript-copy-command)
113
113
  (define-key ess-transcript-mode-map "\C-c\C-w" 'ess-transcript-clean-region))
114
114
 
115
115
(easy-menu-define
116
 
 ess-transcript-mode-menu ess-transcript-mode-map
117
 
 "Menu for use in S transcript mode."
118
 
 '("ESS-trans"
119
 
   ["What is this? (beta)" ess-mouse-me                 t]
120
 
   ["Describe"         describe-mode                    t]
121
 
   ["About"           (ess-goto-info "Transcript Mode") t]
122
 
   ["Send bug report"  ess-submit-bug-report            t]
123
 
   "------"
124
 
   ["Mark cmd group"   mark-paragraph           t]
125
 
   ["Previous prompt"  comint-previous-prompt   t]
126
 
   ["Next prompt"      comint-next-prompt       t]
127
 
   "------"
128
 
   ["Send and move" ess-transcript-send-command-and-move t]
129
 
   ["Copy command"  ess-transcript-copy-command         t]
130
 
   ["Send command"  ess-transcript-send-command         t]
131
 
   ["Clean Region"  ess-transcript-DO-clean-region      t]
132
 
   ["Switch S process" ess-switch-process               t]
133
 
))
 
116
  ess-transcript-mode-menu ess-transcript-mode-map
 
117
  "Menu for use in S transcript mode."
 
118
  '("ESS-trans"
 
119
    ["What is this? (beta)" ess-mouse-me                        t]
 
120
    ["Describe"         describe-mode                   t]
 
121
    ["About"           (ess-goto-info "Transcript Mode") t]
 
122
    ["Send bug report"  ess-submit-bug-report           t]
 
123
    "------"
 
124
    ["Mark cmd group"   mark-paragraph          t]
 
125
    ["Previous prompt"  comint-previous-prompt  t]
 
126
    ["Next prompt"      comint-next-prompt      t]
 
127
    "------"
 
128
    ["Send and move" ess-transcript-send-command-and-move t]
 
129
    ["Copy command"  ess-transcript-copy-command                t]
 
130
    ["Send command"  ess-transcript-send-command                t]
 
131
    ["Clean Region"  ess-transcript-DO-clean-region     t]
 
132
    ["Switch S process" ess-switch-process              t]
 
133
    ))
134
134
 
135
135
(unless (featurep 'xemacs)
136
136
  (if (featurep 'ess-trans)
137
137
      (define-key ess-transcript-mode-map [menu-bar ess-trans]
138
 
        (cons "ess-trans" ess-transcript-mode-menu))
 
138
        (cons "ess-trans" ess-transcript-mode-menu))
139
139
    (eval-after-load "ess-trans"
140
140
      '(define-key ess-transcript-mode-map
141
 
         [menu-bar ess-trans]
142
 
         (cons "ess-trans"
143
 
               ess-transcript-mode-menu)))))
 
141
         [menu-bar ess-trans]
 
142
         (cons "ess-trans"
 
143
               ess-transcript-mode-menu)))))
144
144
 
145
145
(when (featurep 'xemacs)
146
146
  (defun ess-transcript-mode-xemacs-menu ()
147
 
  "Hook to install `ess-transcript-mode' menu for XEmacs (w/ easymenu)."
148
 
  (if 'ess-transcript-mode
149
 
        (easy-menu-add ess-transcript-mode-menu)
150
 
    (easy-menu-remove ess-transcript-mode-menu)))
 
147
    "Hook to install `ess-transcript-mode' menu for XEmacs (w/ easymenu)."
 
148
    (if 'ess-transcript-mode
 
149
        (easy-menu-add ess-transcript-mode-menu)
 
150
      (easy-menu-remove ess-transcript-mode-menu)))
151
151
 
152
152
  (add-hook 'ess-transcript-mode-hook 'ess-transcript-mode-xemacs-menu))
153
153
 
174
174
  (use-local-map ess-transcript-mode-map)
175
175
  (set-syntax-table ess-mode-syntax-table)
176
176
  (setq mode-line-process
177
 
        '(" [" ess-local-process-name "]"))
 
177
        '(" [" ess-local-process-name "]"))
178
178
  (make-local-variable 'ess-local-process-name)
179
179
  (setq ess-local-process-name nil)
180
180
  (unless inferior-ess-prompt ;; For S languages it is set in custom-alist
181
181
    (setq inferior-ess-prompt
182
 
          ;; Do not anchor to bol with `^'
183
 
          (concat "\\("
184
 
                  inferior-ess-primary-prompt
185
 
                  "\\|"
186
 
                  inferior-ess-secondary-prompt
187
 
                  "\\)")))
 
182
          ;; Do not anchor to bol with `^'
 
183
          (concat "\\("
 
184
                  inferior-ess-primary-prompt
 
185
                  "\\|"
 
186
                  inferior-ess-secondary-prompt
 
187
                  "\\)")))
188
188
  (make-local-variable 'paragraph-start)
189
189
  (setq paragraph-start (concat "^" inferior-ess-prompt "\\|^\^L"))
190
190
  (make-local-variable 'paragraph-separate)
197
197
  ;; font-lock support
198
198
  (make-local-variable 'font-lock-defaults)
199
199
  (setq font-lock-defaults
200
 
        '(inferior-ess-font-lock-keywords nil nil ((?' . "."))))
 
200
        '(inferior-ess-font-lock-keywords nil nil ((?' . "."))))
201
201
 
202
202
  ;;; Keep <tabs> out of the code.
203
203
  (make-local-variable 'indent-tabs-mode)
213
213
is not already."
214
214
  (interactive)
215
215
  (let* ((proc (or ess-local-process-name
216
 
                   (ess-request-a-process "Evaluate into which process? " t)))
217
 
         (ess-buf (get-ess-buffer proc)))
 
216
                   (ess-request-a-process "Evaluate into which process? " t)))
 
217
         (ess-buf (get-ess-buffer proc)))
218
218
    (setq ess-local-process-name proc)
219
219
    (if (get-buffer-window ess-buf) nil
220
220
      (display-buffer ess-buf t))
221
221
    (let ((input (inferior-ess-get-old-input)))
222
222
      (save-excursion
223
 
        (set-buffer ess-buf)
224
 
        (goto-char (point-max))
225
 
        (ess-eval-linewise input)))))
 
223
        (set-buffer ess-buf)
 
224
        (goto-char (point-max))
 
225
        (ess-eval-linewise input)))))
226
226
 
227
227
(defun ess-transcript-send-command-and-move ()
228
228
  "Send the command on this line, and move point to the next command."
229
229
  (interactive)
230
 
;; (ess-transcript-send-command) ;; This doesn't work properly
231
 
;; replacement code begins
232
 
   (let* ((proc (or ess-local-process-name
233
 
                   (ess-request-a-process "Evaluate into which process? " t)))
234
 
         (ess-buf (get-ess-buffer proc)))
235
 
     (setq ess-local-process-name proc)
236
 
     (if (get-buffer-window ess-buf) nil
237
 
       (display-buffer ess-buf t))
238
 
     (let ((input (inferior-ess-get-old-input)))
239
 
       (save-excursion
240
 
        (set-buffer ess-buf)
241
 
        (goto-char (point-max))
242
 
        (ess-eval-linewise input nil nil nil 1))))
243
 
;; replacement code ends
 
230
  ;; (ess-transcript-send-command) ;; This doesn't work properly
 
231
  ;; replacement code begins
 
232
  (let* ((proc (or ess-local-process-name
 
233
                   (ess-request-a-process "Evaluate into which process? " t)))
 
234
         (ess-buf (get-ess-buffer proc)))
 
235
    (setq ess-local-process-name proc)
 
236
    (if (get-buffer-window ess-buf) nil
 
237
      (display-buffer ess-buf t))
 
238
    (let ((input (inferior-ess-get-old-input)))
 
239
      (save-excursion
 
240
        (set-buffer ess-buf)
 
241
        (goto-char (point-max))
 
242
        (ess-eval-linewise input nil nil nil 1))))
 
243
  ;; replacement code ends
244
244
  (goto-char ess-temp-point)
245
245
  (comint-next-prompt 1))
246
246
 
248
248
  "Copy the command at point to the command line of the ESS process."
249
249
  (interactive)
250
250
  (let* ((proc (or ess-local-process-name
251
 
                   (ess-request-a-process "Evaluate into which process? " t)))
252
 
         (ess-buf (process-buffer (get-process proc)))
253
 
         (input (inferior-ess-get-old-input)))
 
251
                   (ess-request-a-process "Evaluate into which process? " t)))
 
252
         (ess-buf (process-buffer (get-process proc)))
 
253
         (input (inferior-ess-get-old-input)))
254
254
    (setq ess-local-process-name proc)
255
255
    (if (get-buffer-window ess-buf) nil
256
256
      (display-buffer ess-buf t))
269
269
  (unless inferior-ess-prompt
270
270
    (error "Cannot clean ESS transcript region in this mode!
271
271
 That only works in ess-transcript-mode or inferior-ess-mode ('*R*' etc)."
272
 
           ;; Maybe call ess-clean-region-in-new-transcript ?"))
273
 
           ))
 
272
           ;; Maybe call ess-clean-region-in-new-transcript ?"))
 
273
           ))
274
274
  (let ((do-toggle (and buffer-read-only even-if-read-only))
275
 
        (ess-prompt-rx (concat "^" inferior-ess-prompt)))
 
275
        (ess-prompt-rx (concat "^" inferior-ess-prompt)))
276
276
    (save-excursion
277
277
      (if do-toggle (toggle-read-only 0))
278
278
      (save-restriction
279
 
        (unless (featurep 'xemacs) ;; does not exist in xemacs:
280
 
          (deactivate-mark))
281
 
        (narrow-to-region beg end)
282
 
        (goto-char (point-min))
283
 
        (delete-non-matching-lines ess-prompt-rx)
284
 
        (goto-char (point-min))
285
 
        ;; (replace-regexp  *  * ) :
286
 
        (while (re-search-forward ess-prompt-rx nil t)
287
 
          (replace-match "" nil nil)))
 
279
        (unless (featurep 'xemacs) ;; does not exist in xemacs:
 
280
          (deactivate-mark))
 
281
        (narrow-to-region beg end)
 
282
        (goto-char (point-min))
 
283
        (delete-non-matching-lines ess-prompt-rx)
 
284
        (goto-char (point-min))
 
285
        ;; (replace-regexp  *  * ) :
 
286
        (while (re-search-forward ess-prompt-rx nil t)
 
287
          (replace-match "" nil nil)))
288
288
 
289
289
      (if do-toggle (toggle-read-only 1)))))
290
290
 
299
299
;;   (let ((bname (buffer-file-name)))
300
300
;;     (setq bname (if bname .. ..))
301
301
;;     (let
302
 
;;       (fbase (if fname (file-name-sans-extension (file-name-nondirectory fname))
303
 
;;                (buffer-name)))
 
302
;;       (fbase (if fname (file-name-sans-extension (file-name-nondirectory fname))
 
303
;;                (buffer-name)))
304
304
;;
305
 
;;       ;; the buffer name should be like a file name
306
 
;;       (buf-nam ....)
307
 
;;       (trns-buf (get-buffer-create fbase))
 
305
;;       ;; the buffer name should be like a file name
 
306
;;       (buf-nam ....)
 
307
;;       (trns-buf (get-buffer-create fbase))
308
308
;;     (pop-to-buffer trns-buf)
309
309
;;     (ess-transcript-mode .....)
310
310
;; )))
327
327
 
328
328
;;; This file is automatically placed in Outline minor mode.
329
329
;;; The file is structured as follows:
330
 
;;; Chapters:     ^L ;
331
 
;;; Sections:    ;;*;;
 
330
;;; Chapters:     ^L ;
 
331
;;; Sections:    ;;*;;
332
332
;;; Subsections: ;;;*;;;
333
 
;;; Components:  defuns, defvars, defconsts
334
 
;;;              Random code beginning with a ;;;;* comment
 
333
;;; Components:  defuns, defvars, defconsts
 
334
;;;              Random code beginning with a ;;;;* comment
335
335
 
336
336
;;; Local variables:
337
337
;;; mode: emacs-lisp
339
339
;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*"
340
340
;;; End:
341
341
 
342
 
;;; ess-trans.el ends here
 
342
;;; ess-trns.el ends here