annotate lisp/progmodes/octave-mod.el @ 63308:51d38cfbe542

Warn about using "cvs up -kb" if one intends to commit changes. Add a pointer to another site with detailed configure and build instructions. Suggest to look at config.log when configure fails. Add MinGW Make 3.80 to the list of successful combinations.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 11 Jun 2005 11:31:29 +0000
parents f2892faa87d4
children 18a818a2ee7c 01137c1fdbe9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17517
8f952e921136 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17151
diff changeset
1 ;;; octave-mod.el --- editing Octave source files under Emacs
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
52930
069cb76731fd (octave-comment-start): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
3 ;; Copyright (C) 1997, 2003 Free Software Foundation, Inc.
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 ;; Author: Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at>
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 ;; Author: John Eaton <jwe@bevo.che.wisc.edu>
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 ;; Maintainer: Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at>
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 ;; Keywords: languages
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; any later version.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 ;; Boston, MA 02111-1307, USA.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 ;;; Commentary:
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28
16905
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
29 ;; This package provides Emacs support for Octave.
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
30 ;; It defines Octave mode, a major mode for editing
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
31 ;; Octave code.
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
32
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
33 ;; The file octave-hlp.el provides `octave-help', a facility for looking up
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
34 ;; documentation on a symbol in the Octave info files.
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35
16905
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
36 ;; The file octave-inf.el contains code for interacting with an inferior
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
37 ;; Octave process using comint.
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38
16905
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
39 ;; See the documentation of `octave-mode', `octave-help' and
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
40 ;; `run-octave' for further information on usage and customization.
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
41
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
42 ;;; Code:
26157
313a03652df3 Added (require 'custom) and deleted :version line from
Stephen Eglen <stephen@gnu.org>
parents: 25277
diff changeset
43 (require 'custom)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
45 (defgroup octave nil
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
46 "Major mode for editing Octave source files."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
47 :group 'languages)
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
48
17533
997e9c9b618b (inferior-octave-output-list): Declare here
Richard M. Stallman <rms@gnu.org>
parents: 17517
diff changeset
49 (defvar inferior-octave-output-list nil)
997e9c9b618b (inferior-octave-output-list): Declare here
Richard M. Stallman <rms@gnu.org>
parents: 17517
diff changeset
50 (defvar inferior-octave-output-string nil)
997e9c9b618b (inferior-octave-output-list): Declare here
Richard M. Stallman <rms@gnu.org>
parents: 17517
diff changeset
51 (defvar inferior-octave-receive-in-progress nil)
997e9c9b618b (inferior-octave-output-list): Declare here
Richard M. Stallman <rms@gnu.org>
parents: 17517
diff changeset
52
16911
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
53 (defconst octave-maintainer-address
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
54 "Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at>, bug-gnu-emacs@gnu.org"
16911
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
55 "Current maintainer of the Emacs Octave package.")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
56
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
57 (defvar octave-abbrev-table nil
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
58 "Abbrev table for Octave's reserved words.
42445
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
59 Used in `octave-mode' and inferior-octave-mode buffers.
16911
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
60 All Octave abbrevs start with a grave accent (`).")
42445
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
61 (unless octave-abbrev-table
16911
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
62 (let ((ac abbrevs-changed))
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
63 (define-abbrev-table 'octave-abbrev-table ())
42445
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
64 (define-abbrev octave-abbrev-table "`a" "all_va_args" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
65 (define-abbrev octave-abbrev-table "`b" "break" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
66 (define-abbrev octave-abbrev-table "`cs" "case" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
67 (define-abbrev octave-abbrev-table "`ca" "catch" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
68 (define-abbrev octave-abbrev-table "`c" "continue" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
69 (define-abbrev octave-abbrev-table "`el" "else" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
70 (define-abbrev octave-abbrev-table "`eli" "elseif" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
71 (define-abbrev octave-abbrev-table "`et" "end_try_catch" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
72 (define-abbrev octave-abbrev-table "`eu" "end_unwind_protect" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
73 (define-abbrev octave-abbrev-table "`ef" "endfor" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
74 (define-abbrev octave-abbrev-table "`efu" "endfunction" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
75 (define-abbrev octave-abbrev-table "`ei" "endif" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
76 (define-abbrev octave-abbrev-table "`es" "endswitch" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
77 (define-abbrev octave-abbrev-table "`ew" "endwhile" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
78 (define-abbrev octave-abbrev-table "`f" "for" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
79 (define-abbrev octave-abbrev-table "`fu" "function" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
80 (define-abbrev octave-abbrev-table "`gl" "global" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
81 (define-abbrev octave-abbrev-table "`gp" "gplot" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
82 (define-abbrev octave-abbrev-table "`gs" "gsplot" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
83 (define-abbrev octave-abbrev-table "`if" "if ()" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
84 (define-abbrev octave-abbrev-table "`o" "otherwise" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
85 (define-abbrev octave-abbrev-table "`rp" "replot" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
86 (define-abbrev octave-abbrev-table "`r" "return" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
87 (define-abbrev octave-abbrev-table "`s" "switch" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
88 (define-abbrev octave-abbrev-table "`t" "try" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
89 (define-abbrev octave-abbrev-table "`up" "unwind_protect" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
90 (define-abbrev octave-abbrev-table "`upc" "unwind_protect_cleanup" nil 0 t)
3dbc8d04a492 (octave-abbrev-table): Mark all the predefined abbrevs as "system" abbrevs.
Pavel Janík <Pavel@Janik.cz>
parents: 42205
diff changeset
91 (define-abbrev octave-abbrev-table "`w" "while ()" nil 0 t)
16911
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
92 (setq abbrevs-changed ac)))
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
93
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
94 (defvar octave-comment-char ?#
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
95 "Character to start an Octave comment.")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
96 (defvar octave-comment-start
52930
069cb76731fd (octave-comment-start): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
97 (string octave-comment-char ?\ )
16911
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
98 "String to insert to start a new Octave in-line comment.")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
99 (defvar octave-comment-start-skip "\\s<+\\s-*"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
100 "Regexp to match the start of an Octave comment up to its body.")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
101
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
102 (defvar octave-begin-keywords
17151
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
103 '("for" "function" "if" "switch" "try" "unwind_protect" "while"))
16911
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
104 (defvar octave-else-keywords
17151
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
105 '("case" "catch" "else" "elseif" "otherwise" "unwind_protect_cleanup"))
16911
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
106 (defvar octave-end-keywords
17151
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
107 '("end" "endfor" "endfunction" "endif" "endswitch" "end_try_catch"
16911
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
108 "end_unwind_protect" "endwhile"))
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
109
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
110 (defvar octave-reserved-words
17151
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
111 (append octave-begin-keywords
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
112 octave-else-keywords
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
113 octave-end-keywords
16911
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
114 '("all_va_args" "break" "continue" "global" "gplot" "gsplot"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
115 "replot" "return"))
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
116 "Reserved words in Octave.")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
117
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
118 (defvar octave-text-functions
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
119 '("casesen" "cd" "chdir" "clear" "diary" "dir" "document" "echo"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
120 "edit_history" "format" "gset" "gshow" "help" "history" "hold"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
121 "load" "ls" "more" "run_history" "save" "set" "show" "type"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
122 "which" "who" "whos")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
123 "Text functions in Octave (these names are also reserved).")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
124
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
125 (defvar octave-variables
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
126 '("EDITOR" "EXEC_PATH" "F_DUPFD" "F_GETFD" "F_GETFL" "F_SETFD"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
127 "F_SETFL" "I" "IMAGEPATH" "INFO_FILE" "INFO_PROGRAM" "Inf" "J"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
128 "LOADPATH" "NaN" "OCTAVE_VERSION" "O_APPEND" "O_CREAT" "O_EXCL"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
129 "O_NONBLOCK" "O_RDONLY" "O_RDWR" "O_TRUNC" "O_WRONLY" "PAGER" "PS1"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
130 "PS2" "PS4" "PWD" "SEEK_CUR" "SEEK_END" "SEEK_SET" "__F_DUPFD__"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
131 "__F_GETFD__" "__F_GETFL__" "__F_SETFD__" "__F_SETFL__" "__I__"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
132 "__Inf__" "__J__" "__NaN__" "__OCTAVE_VERSION__" "__O_APPEND__"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
133 "__O_CREAT__" "__O_EXCL__" "__O_NONBLOCK__" "__O_RDONLY__"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
134 "__O_RDWR__" "__O_TRUNC__" "__O_WRONLY__" "__PWD__" "__SEEK_CUR__"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
135 "__SEEK_END__" "__SEEK_SET__" "__argv__" "__e__" "__eps__"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
136 "__error_text__" "__i__" "__inf__" "__j__" "__nan__" "__pi__"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
137 "__program_invocation_name__" "__program_name__" "__realmax__"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
138 "__realmin__" "__stderr__" "__stdin__" "__stdout__" "ans" "argv"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
139 "automatic_replot" "beep_on_error" "completion_append_char"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
140 "default_return_value" "default_save_format"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
141 "define_all_return_values" "do_fortran_indexing" "e"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
142 "echo_executing_commands" "empty_list_elements_ok" "eps"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
143 "error_text" "gnuplot_binary" "gnuplot_has_multiplot" "history_file"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
144 "history_size" "ignore_function_time_stamp" "implicit_str_to_num_ok"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
145 "inf" "nan" "nargin" "ok_to_lose_imaginary_part"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
146 "output_max_field_width" "output_precision"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
147 "page_output_immediately" "page_screen_output" "pi"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
148 "prefer_column_vectors" "prefer_zero_one_indexing"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
149 "print_answer_id_name" "print_empty_dimensions"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
150 "program_invocation_name" "program_name" "propagate_empty_matrices"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
151 "realmax" "realmin" "resize_on_range_error"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
152 "return_last_computed_value" "save_precision" "saving_history"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
153 "silent_functions" "split_long_rows" "stderr" "stdin" "stdout"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
154 "string_fill_char" "struct_levels_to_print"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
155 "suppress_verbose_help_message" "treat_neg_dim_as_zero"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
156 "warn_assign_as_truth_value" "warn_comma_in_global_decl"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
157 "warn_divide_by_zero" "warn_function_name_clash"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
158 "warn_missing_semicolon" "whitespace_in_literal_matrix")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
159 "Builtin variables in Octave.")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
160
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
161 (defvar octave-function-header-regexp
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
162 (concat "^\\s-*\\<\\(function\\)\\>"
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
163 "\\([^=;\n]*=[ \t]*\\|[ \t]*\\)\\(\\w+\\)\\>")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
164 "Regexp to match an Octave function header.
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
165 The string `function' and its name are given by the first and third
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
166 parenthetical grouping.")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
167
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
168 (defvar octave-font-lock-keywords
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
169 (list
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
170 ;; Fontify all builtin keywords.
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
171 (cons (concat "\\<\\("
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
172 (mapconcat 'identity octave-reserved-words "\\|")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
173 (mapconcat 'identity octave-text-functions "\\|")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
174 "\\)\\>")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
175 'font-lock-keyword-face)
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
176 ;; Fontify all builtin operators.
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
177 (cons "\\(&\\||\\|<=\\|>=\\|==\\|<\\|>\\|!=\\|!\\)"
28070
7079931424be (octave-font-lock-keywords): To font-lock the
Gerd Moellmann <gerd@gnu.org>
parents: 26157
diff changeset
178 (if (boundp 'font-lock-builtin-face)
7079931424be (octave-font-lock-keywords): To font-lock the
Gerd Moellmann <gerd@gnu.org>
parents: 26157
diff changeset
179 'font-lock-builtin-face
7079931424be (octave-font-lock-keywords): To font-lock the
Gerd Moellmann <gerd@gnu.org>
parents: 26157
diff changeset
180 'font-lock-preprocessor-face))
16911
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
181 ;; Fontify all builtin variables.
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
182 (cons (concat "\\<\\("
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
183 (mapconcat 'identity octave-variables "\\|")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
184 "\\)\\>")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
185 'font-lock-variable-name-face)
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
186 ;; Fontify all function declarations.
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
187 (list octave-function-header-regexp
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
188 '(1 font-lock-keyword-face)
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
189 '(3 font-lock-function-name-face nil t)))
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
190 "Additional Octave expressions to highlight.")
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
191
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
192 (defcustom inferior-octave-buffer "*Inferior Octave*"
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
193 "*Name of buffer for running an inferior Octave process."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
194 :type 'string
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
195 :group 'octave-inferior)
16911
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
196
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
197 (defvar inferior-octave-process nil)
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
198
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 (defvar octave-mode-map nil
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 "Keymap used in Octave mode.")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 (if octave-mode-map
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 (let ((map (make-sparse-keymap)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 (define-key map "`" 'octave-abbrev-start)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 (define-key map ";" 'octave-electric-semi)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 (define-key map " " 'octave-electric-space)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207 (define-key map "\n" 'octave-reindent-then-newline-and-indent)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 (define-key map "\t" 'indent-according-to-mode)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 (define-key map "\e;" 'octave-indent-for-comment)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
210 (define-key map "\e\n" 'octave-indent-new-comment-line)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 (define-key map "\e\t" 'octave-complete-symbol)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 (define-key map "\M-\C-a" 'octave-beginning-of-defun)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 (define-key map "\M-\C-e" 'octave-end-of-defun)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 (define-key map "\M-\C-h" 'octave-mark-defun)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
215 (define-key map "\M-\C-q" 'octave-indent-defun)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 (define-key map "\C-c;" 'octave-comment-region)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
217 (define-key map "\C-c:" 'octave-uncomment-region)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 (define-key map "\C-c\C-b" 'octave-submit-bug-report)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 (define-key map "\C-c\C-p" 'octave-previous-code-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 (define-key map "\C-c\C-n" 'octave-next-code-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 (define-key map "\C-c\C-a" 'octave-beginning-of-line)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
222 (define-key map "\C-c\C-e" 'octave-end-of-line)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 (define-key map "\C-c\M-\C-n" 'octave-forward-block)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 (define-key map "\C-c\M-\C-p" 'octave-backward-block)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 (define-key map "\C-c\M-\C-u" 'octave-backward-up-block)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 (define-key map "\C-c\M-\C-d" 'octave-down-block)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 (define-key map "\C-c\M-\C-h" 'octave-mark-block)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 (define-key map "\C-c]" 'octave-close-block)
49334
8dad7ccccdcb (octave-mode-map): Change C-c i bindings to C-c C-i.
Richard M. Stallman <rms@gnu.org>
parents: 47939
diff changeset
229 (define-key map "\C-c\C-f" 'octave-insert-defun)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 (define-key map "\C-c\C-h" 'octave-help)
49334
8dad7ccccdcb (octave-mode-map): Change C-c i bindings to C-c C-i.
Richard M. Stallman <rms@gnu.org>
parents: 47939
diff changeset
231 (define-key map "\C-c\C-il" 'octave-send-line)
8dad7ccccdcb (octave-mode-map): Change C-c i bindings to C-c C-i.
Richard M. Stallman <rms@gnu.org>
parents: 47939
diff changeset
232 (define-key map "\C-c\C-ib" 'octave-send-block)
8dad7ccccdcb (octave-mode-map): Change C-c i bindings to C-c C-i.
Richard M. Stallman <rms@gnu.org>
parents: 47939
diff changeset
233 (define-key map "\C-c\C-if" 'octave-send-defun)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
234 (define-key map "\C-c\C-ir" 'octave-send-region)
49334
8dad7ccccdcb (octave-mode-map): Change C-c i bindings to C-c C-i.
Richard M. Stallman <rms@gnu.org>
parents: 47939
diff changeset
235 (define-key map "\C-c\C-is" 'octave-show-process-buffer)
8dad7ccccdcb (octave-mode-map): Change C-c i bindings to C-c C-i.
Richard M. Stallman <rms@gnu.org>
parents: 47939
diff changeset
236 (define-key map "\C-c\C-ih" 'octave-hide-process-buffer)
8dad7ccccdcb (octave-mode-map): Change C-c i bindings to C-c C-i.
Richard M. Stallman <rms@gnu.org>
parents: 47939
diff changeset
237 (define-key map "\C-c\C-ik" 'octave-kill-process)
8dad7ccccdcb (octave-mode-map): Change C-c i bindings to C-c C-i.
Richard M. Stallman <rms@gnu.org>
parents: 47939
diff changeset
238 (define-key map "\C-c\C-i\C-l" 'octave-send-line)
8dad7ccccdcb (octave-mode-map): Change C-c i bindings to C-c C-i.
Richard M. Stallman <rms@gnu.org>
parents: 47939
diff changeset
239 (define-key map "\C-c\C-i\C-b" 'octave-send-block)
8dad7ccccdcb (octave-mode-map): Change C-c i bindings to C-c C-i.
Richard M. Stallman <rms@gnu.org>
parents: 47939
diff changeset
240 (define-key map "\C-c\C-i\C-f" 'octave-send-defun)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
241 (define-key map "\C-c\C-i\C-r" 'octave-send-region)
49334
8dad7ccccdcb (octave-mode-map): Change C-c i bindings to C-c C-i.
Richard M. Stallman <rms@gnu.org>
parents: 47939
diff changeset
242 (define-key map "\C-c\C-i\C-s" 'octave-show-process-buffer)
8dad7ccccdcb (octave-mode-map): Change C-c i bindings to C-c C-i.
Richard M. Stallman <rms@gnu.org>
parents: 47939
diff changeset
243 (define-key map "\C-c\C-i\C-h" 'octave-hide-process-buffer)
8dad7ccccdcb (octave-mode-map): Change C-c i bindings to C-c C-i.
Richard M. Stallman <rms@gnu.org>
parents: 47939
diff changeset
244 (define-key map "\C-c\C-i\C-k" 'octave-kill-process)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 (setq octave-mode-map map)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 (defvar octave-mode-menu
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 (list "Octave"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 (list "Lines"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 ["Previous Code Line" octave-previous-code-line t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251 ["Next Code Line" octave-next-code-line t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 ["Begin of Continuation" octave-beginning-of-line t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 ["End of Continuation" octave-end-of-line t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 ["Split Line at Point" octave-indent-new-comment-line t])
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 (list "Blocks"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 ["Next Block" octave-forward-block t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 ["Previous Block" octave-backward-block t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 ["Down Block" octave-down-block t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259 ["Up Block" octave-backward-up-block t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 ["Mark Block" octave-mark-block t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 ["Close Block" octave-close-block t])
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262 (list "Functions"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 ["Begin of Function" octave-beginning-of-defun t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 ["End of Function" octave-end-of-defun t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 ["Mark Function" octave-mark-defun t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 ["Indent Function" octave-indent-defun t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 ["Insert Function" octave-insert-defun t])
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 "-"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 (list "Debug"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 ["Send Current Line" octave-send-line t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 ["Send Current Block" octave-send-block t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 ["Send Current Function" octave-send-defun t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 ["Send Region" octave-send-region t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 ["Show Process Buffer" octave-show-process-buffer t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 ["Hide Process Buffer" octave-hide-process-buffer t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 ["Kill Process" octave-kill-process t])
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 "-"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 ["Indent Line" indent-according-to-mode t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 ["Complete Symbol" octave-complete-symbol t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 "-"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 ["Toggle Abbrev Mode" abbrev-mode t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 ["Toggle Auto-Fill Mode" auto-fill-mode t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 "-"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 ["Submit Bug Report" octave-submit-bug-report t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285 "-"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 ["Describe Octave Mode" octave-describe-major-mode t]
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 ["Lookup Octave Index" octave-help t])
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 "Menu for Octave mode.")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289
52930
069cb76731fd (octave-comment-start): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
290 (defvar octave-mode-syntax-table
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 (let ((table (make-syntax-table)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 (modify-syntax-entry ?\r " " table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 (modify-syntax-entry ?+ "." table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 (modify-syntax-entry ?- "." table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 (modify-syntax-entry ?= "." table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 (modify-syntax-entry ?* "." table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 (modify-syntax-entry ?/ "." table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 (modify-syntax-entry ?> "." table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 (modify-syntax-entry ?< "." table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 (modify-syntax-entry ?& "." table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 (modify-syntax-entry ?| "." table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 (modify-syntax-entry ?! "." table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 (modify-syntax-entry ?\\ "\\" table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 (modify-syntax-entry ?\' "." table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305 (modify-syntax-entry ?\` "w" table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 (modify-syntax-entry ?\" "\"" table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 (modify-syntax-entry ?. "w" table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 (modify-syntax-entry ?_ "w" table)
52930
069cb76731fd (octave-comment-start): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
309 (modify-syntax-entry ?\% "<" table)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 (modify-syntax-entry ?\# "<" table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 (modify-syntax-entry ?\n ">" table)
52930
069cb76731fd (octave-comment-start): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
312 table)
069cb76731fd (octave-comment-start): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
313 "Syntax table in use in `octave-mode' buffers.")
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
315 (defcustom octave-auto-indent nil
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
316 "*Non-nil means indent line after a semicolon or space in Octave mode."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
317 :type 'boolean
26157
313a03652df3 Added (require 'custom) and deleted :version line from
Stephen Eglen <stephen@gnu.org>
parents: 25277
diff changeset
318 :group 'octave)
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
319
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
320 (defcustom octave-auto-newline nil
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
321 "*Non-nil means automatically newline after a semicolon in Octave mode."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
322 :type 'boolean
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
323 :group 'octave)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
325 (defcustom octave-blink-matching-block t
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 "*Control the blinking of matching Octave block keywords.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 Non-nil means show matching begin of block when inserting a space,
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
328 newline or semicolon after an else or end keyword."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
329 :type 'boolean
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
330 :group 'octave)
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
331 (defcustom octave-block-offset 2
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
332 "*Extra indentation applied to statements in Octave block structures."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
333 :type 'integer
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
334 :group 'octave)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 (defvar octave-block-begin-regexp
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 (concat "\\<\\("
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 (mapconcat 'identity octave-begin-keywords "\\|")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 "\\)\\>"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 (defvar octave-block-else-regexp
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 (concat "\\<\\("
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 (mapconcat 'identity octave-else-keywords "\\|")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 "\\)\\>"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 (defvar octave-block-end-regexp
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 (concat "\\<\\("
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 (mapconcat 'identity octave-end-keywords "\\|")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347 "\\)\\>"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 (defvar octave-block-begin-or-end-regexp
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 (concat octave-block-begin-regexp "\\|" octave-block-end-regexp))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 (defvar octave-block-else-or-end-regexp
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 (concat octave-block-else-regexp "\\|" octave-block-end-regexp))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 (defvar octave-block-match-alist
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 '(("for" . ("end" "endfor"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 ("function" . ("end" "endfunction"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 ("if" . ("else" "elseif" "end" "endif"))
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
356 ("switch" . ("case" "otherwise" "end" "endswitch"))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 ("try" . ("catch" "end" "end_try_catch"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 ("unwind_protect" . ("unwind_protect_cleanup" "end"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 "end_unwind_protect"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 ("while" . ("end" "endwhile")))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 "Alist with Octave's matching block keywords.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 Has Octave's begin keywords as keys and a list of the matching else or
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 end keywords as associated values.")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 (defvar octave-block-comment-start
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 (concat (make-string 2 octave-comment-char) " ")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 "String to insert to start a new Octave comment on an empty line.")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
369 (defcustom octave-continuation-offset 4
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
370 "*Extra indentation applied to Octave continuation lines."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
371 :type 'integer
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
372 :group 'octave)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 (defvar octave-continuation-regexp
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 "[^#%\n]*\\(\\\\\\|\\.\\.\\.\\)\\s-*\\(\\s<.*\\)?$")
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
375 (defcustom octave-continuation-string "\\"
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
376 "*Character string used for Octave continuation lines. Normally \\."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
377 :type 'string
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
378 :group 'octave)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 (defvar octave-completion-alist nil
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381 "Alist of Octave symbols for completion in Octave mode.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 Each element looks like (VAR . VAR), where the car and cdr are the same
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 symbol (an Octave command or variable name).
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
384 Currently, only builtin variables can be completed.")
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 (defvar octave-mode-imenu-generic-expression
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 (list
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 ;; Functions
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 (list nil octave-function-header-regexp 3))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 "Imenu expression for Octave mode. See `imenu-generic-expression'.")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
392 (defcustom octave-mode-startup-message t
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 41773
diff changeset
393 "*nil means do not display the Octave mode startup message."
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
394 :type 'boolean
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
395 :group 'octave)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
397 (defcustom octave-mode-hook nil
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
398 "*Hook to be run when Octave mode is started."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
399 :type 'hook
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
400 :group 'octave)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
402 (defcustom octave-send-show-buffer t
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
403 "*Non-nil means display `inferior-octave-buffer' after sending to it."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
404 :type 'boolean
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
405 :group 'octave)
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
406 (defcustom octave-send-line-auto-forward t
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 "*Control auto-forward after sending to the inferior Octave process.
20781
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
408 Non-nil means always go to the next Octave code line after sending."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
409 :type 'boolean
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
410 :group 'octave)
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
411 (defcustom octave-send-echo-input t
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
412 "*Non-nil means echo input sent to the inferior Octave process."
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
413 :type 'boolean
6f55b3849106 Customized.
Andreas Schwab <schwab@suse.de>
parents: 20459
diff changeset
414 :group 'octave)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 ;;;###autoload
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 (defun octave-mode ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 "Major mode for editing Octave code.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 This mode makes it easier to write Octave code by helping with
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 indentation, doing some of the typing for you (with Abbrev mode) and by
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 showing keywords, comments, strings, etc. in different faces (with
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 Font Lock mode on terminals that support it).
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 Octave itself is a high-level language, primarily intended for numerical
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 computations. It provides a convenient command line interface for
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 solving linear and nonlinear problems numerically. Function definitions
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 can also be stored in files, and it can be used in a batch mode (which
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 is why you need this mode!).
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 The latest released version of Octave is always available via anonymous
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 ftp from bevo.che.wisc.edu in the directory `/pub/octave'. Complete
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 source and binaries for several popular systems are available.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 Type \\[list-abbrevs] to display the built-in abbrevs for Octave keywords.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 Keybindings
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 ===========
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441 \\{octave-mode-map}
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 Variables you can use to customize Octave mode
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 ==============================================
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
446 octave-auto-indent
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
447 Non-nil means indent current line after a semicolon or space.
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
448 Default is nil.
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
449
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 octave-auto-newline
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 Non-nil means auto-insert a newline and indent after a semicolon.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 Default is nil.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 octave-blink-matching-block
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 Non-nil means show matching begin of block when inserting a space,
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 newline or semicolon after an else or end keyword. Default is t.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 octave-block-offset
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 Extra indentation applied to statements in block structures.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 Default is 2.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 octave-continuation-offset
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 Extra indentation applied to Octave continuation lines.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 Default is 4.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 octave-continuation-string
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 String used for Octave continuation lines.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 Default is a backslash.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 octave-mode-startup-message
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 41773
diff changeset
471 nil means do not display the Octave mode startup message.
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 Default is t.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 octave-send-echo-input
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475 Non-nil means always display `inferior-octave-buffer' after sending a
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 command to the inferior Octave process.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 octave-send-line-auto-forward
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 Non-nil means always go to the next unsent line of Octave code after
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 sending a line to the inferior Octave process.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 octave-send-echo-input
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 Non-nil means echo input sent to the inferior Octave process.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485 Turning on Octave mode runs the hook `octave-mode-hook'.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 To begin using this mode for all `.m' files that you edit, add the
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 following lines to your `.emacs' file:
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 (autoload 'octave-mode \"octave-mod\" nil t)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 (setq auto-mode-alist
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 (cons '(\"\\\\.m$\" . octave-mode) auto-mode-alist))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 To automatically turn on the abbrev, auto-fill and font-lock features,
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 add the following lines to your `.emacs' file as well:
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 (add-hook 'octave-mode-hook
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 (lambda ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 (abbrev-mode 1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 (auto-fill-mode 1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 (if (eq window-system 'x)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 (font-lock-mode 1))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 To submit a problem report, enter \\[octave-submit-bug-report] from \
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 an Octave mode buffer.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 This automatically sets up a mail buffer with version information
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 already added. You just need to add a description of the problem,
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 including a reproducible test case and send the message."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 (kill-all-local-variables)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 (use-local-map octave-mode-map)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 (setq major-mode 'octave-mode)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 (setq mode-name "Octave")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 (setq local-abbrev-table octave-abbrev-table)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516 (set-syntax-table octave-mode-syntax-table)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
517
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 (make-local-variable 'indent-line-function)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 (setq indent-line-function 'octave-indent-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
521 (make-local-variable 'comment-start)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 (setq comment-start octave-comment-start)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 (make-local-variable 'comment-end)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524 (setq comment-end "")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 (make-local-variable 'comment-column)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
526 (setq comment-column 32)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 (make-local-variable 'comment-start-skip)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528 (setq comment-start-skip "\\s<+\\s-*")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 (make-local-variable 'comment-indent-function)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530 (setq comment-indent-function 'octave-comment-indent)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532 (make-local-variable 'parse-sexp-ignore-comments)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533 (setq parse-sexp-ignore-comments t)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 (make-local-variable 'paragraph-start)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 (setq paragraph-start (concat "\\s-*$\\|" page-delimiter))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 (make-local-variable 'paragraph-separate)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 (setq paragraph-separate paragraph-start)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538 (make-local-variable 'paragraph-ignore-fill-prefix)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 (setq paragraph-ignore-fill-prefix t)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 (make-local-variable 'fill-paragraph-function)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541 (setq fill-paragraph-function 'octave-fill-paragraph)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 (make-local-variable 'adaptive-fill-regexp)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 (setq adaptive-fill-regexp nil)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544 (make-local-variable 'fill-column)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545 (setq fill-column 72)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546 (make-local-variable 'normal-auto-fill-function)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547 (setq normal-auto-fill-function 'octave-auto-fill)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
548
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
549 (make-local-variable 'font-lock-defaults)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550 (setq font-lock-defaults '(octave-font-lock-keywords nil nil))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
551
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 (make-local-variable 'imenu-generic-expression)
20459
90f306f86f5d Use imenu-case-fold-search.
Dave Love <fx@gnu.org>
parents: 20181
diff changeset
553 (setq imenu-generic-expression octave-mode-imenu-generic-expression
90f306f86f5d Use imenu-case-fold-search.
Dave Love <fx@gnu.org>
parents: 20181
diff changeset
554 imenu-case-fold-search nil)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556 (octave-add-octave-menu)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557 (octave-initialize-completions)
62772
f2892faa87d4 * progmodes/ada-mode.el (ada-mode):
Lute Kamstra <lute@gnu.org>
parents: 52930
diff changeset
558 (run-mode-hooks 'octave-mode-hook))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 ;;; Miscellaneous useful functions
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 (defun octave-describe-major-mode ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 "Describe the current major mode."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 (describe-function major-mode))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566 (defsubst octave-in-comment-p ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 "Returns t if point is inside an Octave comment, nil otherwise."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 (save-excursion
52930
069cb76731fd (octave-comment-start): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
570 (nth 4 (parse-partial-sexp (line-beginning-position) (point)))))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 (defsubst octave-in-string-p ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 "Returns t if point is inside an Octave string, nil otherwise."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 (save-excursion
52930
069cb76731fd (octave-comment-start): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
576 (nth 3 (parse-partial-sexp (line-beginning-position) (point)))))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578 (defsubst octave-not-in-string-or-comment-p ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 "Returns t iff point is not inside an Octave string or comment."
52930
069cb76731fd (octave-comment-start): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
580 (let ((pps (parse-partial-sexp (line-beginning-position) (point))))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 (not (or (nth 3 pps) (nth 4 pps)))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
583 (defun octave-in-block-p ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 "Returns t if point is inside an Octave block, nil otherwise.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 The block is taken to start at the first letter of the begin keyword and
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 to end after the end keyword."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 (let ((pos (point)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 (condition-case nil
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 (skip-syntax-forward "w")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 (octave-up-block -1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 (octave-forward-block)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594 t)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 (error nil))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 (< pos (point)))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598 (defun octave-in-defun-p ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 "Returns t iff point is inside an Octave function declaration.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 The function is taken to start at the `f' of `function' and to end after
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 the end keyword."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602 (let ((pos (point)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604 (or (and (looking-at "\\<function\\>")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 (octave-not-in-string-or-comment-p))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606 (and (octave-beginning-of-defun)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 (condition-case nil
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 (octave-forward-block)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 t)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 (error nil))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612 (< pos (point)))))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
614 (defun octave-maybe-insert-continuation-string ()
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
615 (if (or (octave-in-comment-p)
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
616 (save-excursion
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
617 (beginning-of-line)
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
618 (looking-at octave-continuation-regexp)))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
619 nil
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
620 (delete-horizontal-space)
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
621 (insert (concat " " octave-continuation-string))))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
622
23848
7896e341d77f (octave-abbrev-start): Use the correct
Karl Heuer <kwzh@gnu.org>
parents: 21669
diff changeset
623 (defvar octave-xemacs-p
7896e341d77f (octave-abbrev-start): Use the correct
Karl Heuer <kwzh@gnu.org>
parents: 21669
diff changeset
624 (string-match "XEmacs\\|Lucid" emacs-version))
7896e341d77f (octave-abbrev-start): Use the correct
Karl Heuer <kwzh@gnu.org>
parents: 21669
diff changeset
625
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 ;;; Comments
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 (defun octave-comment-region (beg end &optional arg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 "Comment or uncomment each line in the region as Octave code.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 See `comment-region'."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 (interactive "r\nP")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 (let ((comment-start (char-to-string octave-comment-char)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 (comment-region beg end arg)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
633
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 (defun octave-uncomment-region (beg end &optional arg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 "Uncomment each line in the region as Octave code."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 (interactive "r\nP")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 (or arg (setq arg 1))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 (octave-comment-region beg end (- arg)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 ;;; Indentation
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 (defun calculate-octave-indent ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 "Return appropriate indentation for current line as Octave code.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 Returns an integer (the column to indent to) unless the line is a
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 comment line with fixed goal golumn. In that case, returns a list whose
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 car is the column to indent to, and whose cdr is the current indentation
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 level."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 (let ((is-continuation-line
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 (if (zerop (octave-previous-code-line))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 (looking-at octave-continuation-regexp))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 (icol 0))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 (beginning-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 ;; If we can move backward out one level of parentheses, take 1
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 ;; plus the indentation of that parenthesis. Otherwise, go back
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 ;; to the beginning of the previous code line, and compute the
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 ;; offset this line gives.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 (if (condition-case nil
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 (up-list -1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 t)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 (error nil))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 (setq icol (+ 1 (current-column)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 (if (zerop (octave-previous-code-line))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667 (octave-beginning-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 (back-to-indentation)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 (setq icol (current-column))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 (let ((bot (point))
52930
069cb76731fd (octave-comment-start): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
671 (eol (line-end-position)))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 (while (< (point) eol)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 (if (octave-not-in-string-or-comment-p)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 (cond
17151
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
675 ((looking-at "\\<switch\\>")
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
676 (setq icol (+ icol (* 2 octave-block-offset))))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677 ((looking-at octave-block-begin-regexp)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 (setq icol (+ icol octave-block-offset)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679 ((looking-at octave-block-else-regexp)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680 (if (= bot (point))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 (setq icol (+ icol octave-block-offset))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682 ((looking-at octave-block-end-regexp)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 (if (not (= bot (point)))
17151
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
684 (setq icol (- icol
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
685 (octave-block-end-offset)))))))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 (forward-char)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 (if is-continuation-line
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688 (setq icol (+ icol octave-continuation-offset)))))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690 (back-to-indentation)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 (cond
17151
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
692 ((and (looking-at octave-block-else-regexp)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693 (octave-not-in-string-or-comment-p))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694 (setq icol (- icol octave-block-offset)))
17151
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
695 ((and (looking-at octave-block-end-regexp)
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
696 (octave-not-in-string-or-comment-p))
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
697 (setq icol (- icol (octave-block-end-offset))))
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
698 ((or (looking-at "\\s<\\s<\\s<\\S<")
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
699 (octave-before-magic-comment-p))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 (setq icol (list 0 icol)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 ((looking-at "\\s<\\S<")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 (setq icol (list comment-column icol)))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 icol))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704
17151
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
705 (defun octave-block-end-offset ()
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
706 (save-excursion
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
707 (octave-backward-up-block 1)
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
708 (* octave-block-offset
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
709 (if (string-match (match-string 0) "switch") 2 1))))
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
710
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
711 (defun octave-before-magic-comment-p ()
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
712 (save-excursion
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
713 (beginning-of-line)
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
714 (and (bobp) (looking-at "\\s-*#!"))))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
715
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716 (defun octave-comment-indent ()
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
717 (if (or (looking-at "\\s<\\s<\\s<")
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
718 (octave-before-magic-comment-p))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719 0
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 (if (looking-at "\\s<\\s<")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 (calculate-octave-indent)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722 (skip-syntax-backward " ")
17151
0663a5ce936c (octave-abbrev-table): Add abbrevs for switch,
Karl Heuer <kwzh@gnu.org>
parents: 16911
diff changeset
723 (max (if (bolp) 0 (+ 1 (current-column)))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724 comment-column))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726 (defun octave-indent-for-comment ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727 "Maybe insert and indent an Octave comment.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728 If there is no comment already on this line, create a code-level comment
41773
31e7749d1e1a Doc fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 28070
diff changeset
729 \(started by two comment characters) if the line is empty, or an in-line
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
730 comment (started by one comment character) otherwise.
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 Point is left after the start of the comment which is properly aligned."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733 (indent-for-comment)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
734 (indent-according-to-mode))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736 (defun octave-indent-line (&optional arg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
737 "Indent current line as Octave code.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738 With optional ARG, use this as offset unless this line is a comment with
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739 fixed goal column."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 (or arg (setq arg 0))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 (let ((icol (calculate-octave-indent))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743 (relpos (- (current-column) (current-indentation))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744 (if (listp icol)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745 (setq icol (car icol))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 (setq icol (+ icol arg)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 (if (< icol 0)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748 (error "Unmatched end keyword")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 (indent-line-to icol)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750 (if (> relpos 0)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 (move-to-column (+ icol relpos))))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 (defun octave-indent-new-comment-line ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754 "Break Octave line at point, continuing comment if within one.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 If within code, insert `octave-continuation-string' before breaking the
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
756 line. If within a string, signal an error.
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
757 The new line is properly indented."
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 (delete-horizontal-space)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 (cond
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 ((octave-in-comment-p)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 (indent-new-comment-line))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 ((octave-in-string-p)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 (error "Cannot split a code line inside a string"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 (t
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 (insert (concat " " octave-continuation-string))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767 (octave-reindent-then-newline-and-indent))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769 (defun octave-indent-defun ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 "Properly indents the Octave function which contains point."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773 (octave-mark-defun)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 (message "Indenting function...")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 (indent-region (point) (mark) nil))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 (message "Indenting function...done."))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779 ;;; Motion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 (defun octave-next-code-line (&optional arg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 "Move ARG lines of Octave code forward (backward if ARG is negative).
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 Skips past all empty and comment lines. Default for ARG is 1.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
784 On success, return 0. Otherwise, go as far as possible and return -1."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785 (interactive "p")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786 (or arg (setq arg 1))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 (beginning-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 (let ((n 0)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 (inc (if (> arg 0) 1 -1)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
790 (while (and (/= arg 0) (= n 0))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791 (setq n (forward-line inc))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792 (while (and (= n 0)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793 (looking-at "\\s-*\\($\\|\\s<\\)"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794 (setq n (forward-line inc)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795 (setq arg (- arg inc)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 n))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
797
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 (defun octave-previous-code-line (&optional arg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 "Move ARG lines of Octave code backward (forward if ARG is negative).
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800 Skips past all empty and comment lines. Default for ARG is 1.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 On success, return 0. Otherwise, go as far as possible and return -1."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803 (interactive "p")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 (or arg (setq arg 1))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805 (octave-next-code-line (- arg)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
806
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807 (defun octave-beginning-of-line ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 "Move point to beginning of current Octave line.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 If on an empty or comment line, go to the beginning of that line.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810 Otherwise, move backward to the beginning of the first Octave code line
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 which is not inside a continuation statement, i.e., which does not
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 follow a code line ending in `...' or `\\', or is inside an open
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813 parenthesis list."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 (beginning-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816 (if (not (looking-at "\\s-*\\($\\|\\s<\\)"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 (while (or (condition-case nil
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 (up-list -1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
820 (beginning-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821 t)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 (error nil))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823 (and (or (looking-at "\\s-*\\($\\|\\s<\\)")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
825 (if (zerop (octave-previous-code-line))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 (looking-at octave-continuation-regexp))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
827 (zerop (forward-line -1)))))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829 (defun octave-end-of-line ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830 "Move point to end of current Octave line.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831 If on an empty or comment line, go to the end of that line.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832 Otherwise, move forward to the end of the first Octave code line which
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833 does not end in `...' or `\\' or is inside an open parenthesis list."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
834 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835 (end-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
836 (if (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837 (beginning-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838 (looking-at "\\s-*\\($\\|\\s<\\)"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839 ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
840 (while (or (condition-case nil
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
841 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
842 (up-list 1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
843 (end-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
844 t)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
845 (error nil))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
846 (and (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
847 (beginning-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 (or (looking-at "\\s-*\\($\\|\\s<\\)")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849 (looking-at octave-continuation-regexp)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850 (zerop (forward-line 1)))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851 (end-of-line)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
852
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
853 (defun octave-scan-blocks (from count depth)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
854 "Scan from character number FROM by COUNT Octave begin-end blocks.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855 Returns the character number of the position thus found.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857 If DEPTH is nonzero, block depth begins counting from that value.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
858 Only places where the depth in blocks becomes zero are candidates for
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859 stopping; COUNT such places are counted.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861 If the beginning or end of the buffer is reached and the depth is wrong,
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862 an error is signaled."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 (let ((min-depth (if (> depth 0) 0 depth))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864 (inc (if (> count 0) 1 -1)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
865 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866 (while (/= count 0)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867 (catch 'foo
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 (while (or (re-search-forward
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 octave-block-begin-or-end-regexp nil 'move inc)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870 (if (/= depth 0)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871 (error "Unbalanced block")))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872 (if (octave-not-in-string-or-comment-p)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874 (cond
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 ((match-end 1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876 (setq depth (+ depth inc)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877 ((match-end 2)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878 (setq depth (- depth inc))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879 (if (< depth min-depth)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 (error "Containing expression ends prematurely"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 (if (= depth 0)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 (throw 'foo nil))))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 (setq count (- count inc)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884 (point))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 (defun octave-forward-block (&optional arg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 "Move forward across one balanced Octave begin-end block.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 With argument, do it that many times.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889 Negative arg -N means move backward across N blocks."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 (interactive "p")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 (or arg (setq arg 1))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892 (goto-char (or (octave-scan-blocks (point) arg 0) (buffer-end arg))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
894 (defun octave-backward-block (&optional arg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895 "Move backward across one balanced Octave begin-end block.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896 With argument, do it that many times.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 Negative arg -N means move forward across N blocks."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898 (interactive "p")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899 (or arg (setq arg 1))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
900 (octave-forward-block (- arg)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 (defun octave-down-block (arg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903 "Move forward down one begin-end block level of Octave code.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904 With argument, do this that many times.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
905 A negative argument means move backward but still go down a level.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
906 In Lisp programs, an argument is required."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
907 (interactive "p")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908 (let ((inc (if (> arg 0) 1 -1)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 (while (/= arg 0)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910 (goto-char (or (octave-scan-blocks (point) inc -1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
911 (buffer-end arg)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 (setq arg (- arg inc)))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 (defun octave-backward-up-block (arg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915 "Move backward out of one begin-end block level of Octave code.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 With argument, do this that many times.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 A negative argument means move forward but still to a less deep spot.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 In Lisp programs, an argument is required."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 (interactive "p")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920 (octave-up-block (- arg)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 (defun octave-up-block (arg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923 "Move forward out of one begin-end block level of Octave code.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 With argument, do this that many times.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 A negative argument means move backward but still to a less deep spot.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 In Lisp programs, an argument is required."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 (interactive "p")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928 (let ((inc (if (> arg 0) 1 -1)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929 (while (/= arg 0)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 (goto-char (or (octave-scan-blocks (point) inc 1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931 (buffer-end arg)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932 (setq arg (- arg inc)))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934 (defun octave-mark-block ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935 "Put point at the beginning of this Octave block, mark at the end.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
936 The block marked is the one that contains point or follows point."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
938 (let ((pos (point)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
939 (if (or (and (octave-in-block-p)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
940 (skip-syntax-forward "w"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
941 (condition-case nil
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
943 (octave-down-block 1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
944 (octave-in-block-p))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
945 (error nil)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
946 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
947 (octave-up-block -1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
948 (push-mark (point))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949 (octave-forward-block)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950 (exchange-point-and-mark))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951 (goto-char pos)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 (message "No block to mark found"))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
954 (defun octave-close-block ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
955 "Close the current Octave block on a separate line.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 An error is signaled if no block to close is found."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 (let (bb-keyword)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959 (condition-case nil
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962 (octave-backward-up-block 1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
963 (setq bb-keyword (buffer-substring-no-properties
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
964 (match-beginning 1) (match-end 1))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965 (if (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966 (beginning-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967 (looking-at "^\\s-*$"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968 (indent-according-to-mode)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 (octave-reindent-then-newline-and-indent))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970 (insert (car (reverse
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 (assoc bb-keyword
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972 octave-block-match-alist))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 (octave-reindent-then-newline-and-indent)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974 t)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 (error (message "No block to close found")))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977 (defun octave-blink-matching-block-open ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 "Blink the matching Octave begin block keyword.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 If point is right after an Octave else or end type block keyword, move
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 cursor momentarily to the corresponding begin keyword.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 Signal an error if the keywords are incompatible."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983 (let (bb-keyword bb-arg eb-keyword pos eol)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
984 (if (and (octave-not-in-string-or-comment-p)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
985 (looking-at "\\>")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
987 (skip-syntax-backward "w")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
988 (looking-at octave-block-else-or-end-regexp)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
989 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
990 (cond
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 ((match-end 1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992 (setq eb-keyword
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993 (buffer-substring-no-properties
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 (match-beginning 1) (match-end 1)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995 (octave-backward-up-block 1))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996 ((match-end 2)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 (setq eb-keyword
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998 (buffer-substring-no-properties
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999 (match-beginning 2) (match-end 2)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 (octave-backward-block)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1001 (setq pos (match-end 0)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002 bb-keyword
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1003 (buffer-substring-no-properties
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1004 (match-beginning 0) pos)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1005 pos (+ pos 1)
52930
069cb76731fd (octave-comment-start): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
1006 eol (line-end-position)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007 bb-arg
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1009 (save-restriction
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010 (goto-char pos)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1011 (while (and (skip-syntax-forward "^<" eol)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1012 (octave-in-string-p)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013 (not (forward-char 1))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1014 (skip-syntax-backward " ")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1015 (buffer-substring-no-properties pos (point)))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1016 (if (member eb-keyword
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1017 (cdr (assoc bb-keyword octave-block-match-alist)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1018 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1019 (message "Matches `%s %s'" bb-keyword bb-arg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1020 (if (pos-visible-in-window-p)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1021 (sit-for blink-matching-delay)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1022 (error "Block keywords `%s' and `%s' do not match"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023 bb-keyword eb-keyword))))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1024
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 (defun octave-beginning-of-defun (&optional arg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026 "Move backward to the beginning of an Octave function.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027 With positive ARG, do it that many times. Negative argument -N means
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 move forward to Nth following beginning of a function.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029 Returns t unless search stops at the beginning or end of the buffer."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 (interactive "p")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031 (let* ((arg (or arg 1))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1032 (inc (if (> arg 0) 1 -1))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 (found))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 (and (not (eobp))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035 (not (and (> arg 0) (looking-at "\\<function\\>")))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1036 (skip-syntax-forward "w"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1037 (while (and (/= arg 0)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1038 (setq found
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039 (re-search-backward "\\<function\\>" nil 'move inc)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1040 (if (octave-not-in-string-or-comment-p)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1041 (setq arg (- arg inc))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042 (if found
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044 (and (< inc 0) (goto-char (match-beginning 0)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045 t))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1046
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1047 (defun octave-end-of-defun (&optional arg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1048 "Move forward to the end of an Octave function.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1049 With positive ARG, do it that many times. Negative argument -N means
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1050 move back to Nth preceding end of a function.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 An end of a function occurs right after the end keyword matching the
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053 `function' keyword that starts the function."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1054 (interactive "p")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 (or arg (setq arg 1))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056 (and (< arg 0) (skip-syntax-backward "w"))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
1057 (and (> arg 0) (skip-syntax-forward "w"))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1058 (if (octave-in-defun-p)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1059 (setq arg (- arg 1)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1060 (if (= arg 0) (setq arg -1))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1061 (if (octave-beginning-of-defun (- arg))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1062 (octave-forward-block)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1063
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1064 (defun octave-mark-defun ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1065 "Put point at the beginning of this Octave function, mark at its end.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1066 The function marked is the one containing point or following point."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1067 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1068 (let ((pos (point)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1069 (if (or (octave-in-defun-p)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1070 (and (octave-beginning-of-defun -1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071 (octave-in-defun-p)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1073 (skip-syntax-forward "w")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1074 (octave-beginning-of-defun)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1075 (push-mark (point))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1076 (octave-end-of-defun)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1077 (exchange-point-and-mark))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1078 (goto-char pos)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1079 (message "No function to mark found"))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
1080
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1081
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082 ;;; Filling
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1083 (defun octave-auto-fill ()
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1084 "Perform auto-fill in Octave mode.
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1085 Returns nil if no feasible place to break the line could be found, and t
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1086 otherwise."
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1087 (let (fc give-up)
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1088 (if (or (null (setq fc (current-fill-column)))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1089 (save-excursion
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
1090 (beginning-of-line)
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1091 (and auto-fill-inhibit-regexp
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1092 (looking-at auto-fill-inhibit-regexp))))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1093 nil ; Can't do anything
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1094 (if (and (not (octave-in-comment-p))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1095 (> (current-column) fc))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1096 (setq fc (- fc (+ (length octave-continuation-string) 1))))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1097 (while (and (not give-up) (> (current-column) fc))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1098 (let* ((opoint (point))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1099 (fpoint
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1100 (save-excursion
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1101 (move-to-column (+ fc 1))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1102 (skip-chars-backward "^ \t\n")
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1103 ;; If we're at the beginning of the line, break after
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1104 ;; the first word
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1105 (if (bolp)
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1106 (re-search-forward "[ \t]" opoint t))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1107 ;; If we're in a comment line, don't break after the
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1108 ;; comment chars
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1109 (if (save-excursion
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1110 (skip-syntax-backward " <")
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1111 (bolp))
52930
069cb76731fd (octave-comment-start): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
1112 (re-search-forward "[ \t]" (line-end-position)
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1113 'move))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1114 ;; If we're not in a comment line and just ahead the
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1115 ;; continuation string, don't break here.
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1116 (if (and (not (octave-in-comment-p))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1117 (looking-at
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1118 (concat "\\s-*"
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1119 (regexp-quote
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1120 octave-continuation-string)
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1121 "\\s-*$")))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1122 (end-of-line))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1123 (skip-chars-backward " \t")
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1124 (point))))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1125 (if (save-excursion
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1126 (goto-char fpoint)
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1127 (not (or (bolp) (eolp))))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1128 (let ((prev-column (current-column)))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1129 (if (save-excursion
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1130 (skip-chars-backward " \t")
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1131 (= (point) fpoint))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1132 (progn
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1133 (octave-maybe-insert-continuation-string)
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1134 (indent-new-comment-line t))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1135 (save-excursion
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1136 (goto-char fpoint)
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1137 (octave-maybe-insert-continuation-string)
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1138 (indent-new-comment-line t)))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1139 (if (>= (current-column) prev-column)
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1140 (setq give-up t)))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1141 (setq give-up t))))
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1142 (not give-up))))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 (defun octave-fill-paragraph (&optional arg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 "Fill paragraph of Octave code, handling Octave comments."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146 (interactive "P")
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
1147 (save-excursion
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 (let ((end (progn (forward-paragraph) (point)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 (beg (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150 (forward-paragraph -1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 (skip-chars-forward " \t\n")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 (beginning-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 (point)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154 (cfc (current-fill-column))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155 (ind (calculate-octave-indent))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156 comment-prefix)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1157 (save-restriction
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1158 (goto-char beg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1159 (narrow-to-region beg end)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1160 (if (listp ind) (setq ind (nth 1 ind)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1161 (while (not (eobp))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1162 (condition-case nil
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163 (octave-indent-line ind)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 (error nil))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 (if (and (> ind 0)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 (not
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168 (beginning-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 (looking-at "^\\s-*\\($\\|\\s<+\\)"))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170 (setq ind 0))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171 (move-to-column cfc)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 ;; First check whether we need to combine non-empty comment lines
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173 (if (and (< (current-column) cfc)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174 (octave-in-comment-p)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1175 (not (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176 (beginning-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177 (looking-at "^\\s-*\\s<+\\s-*$"))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 ;; This is a nonempty comment line which does not extend
47939
5f47d61ffbdc Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 42445
diff changeset
1179 ;; past the fill column. If it is followed by a nonempty
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 ;; comment line with the same comment prefix, try to
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181 ;; combine them, and repeat this until either we reach the
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 ;; fill-column or there is nothing more to combine.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184 ;; Get the comment prefix
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1185 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186 (beginning-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187 (while (and (re-search-forward "\\s<+")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 (not (octave-in-comment-p))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1189 (setq comment-prefix (match-string 0)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1190 ;; And keep combining ...
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1191 (while (and (< (current-column) cfc)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1192 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193 (forward-line 1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1194 (and (looking-at
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1195 (concat "^\\s-*"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1196 comment-prefix
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1197 "\\S<"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1198 (not (looking-at
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199 (concat "^\\s-*"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 comment-prefix
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 "\\s-*$"))))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202 (delete-char 1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203 (re-search-forward comment-prefix)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204 (delete-region (match-beginning 0) (match-end 0))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1205 (fixup-whitespace)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1206 (move-to-column cfc))))
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1207 ;; We might also try to combine continued code lines> Perhaps
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1208 ;; some other time ...
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209 (skip-chars-forward "^ \t\n")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1210 (delete-horizontal-space)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211 (if (or (< (current-column) cfc)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1212 (and (= (current-column) cfc) (eolp)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1213 (forward-line 1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1214 (if (not (eolp)) (insert " "))
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1215 (or (octave-auto-fill)
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1216 (forward-line 1)))))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217 t)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1219
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1220 ;;; Completions
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1221 (defun octave-initialize-completions ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1222 "Create an alist for Octave completions."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1223 (if octave-completion-alist
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1224 ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1225 (setq octave-completion-alist
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1226 (mapcar '(lambda (var) (cons var var))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1227 (append octave-reserved-words
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1228 octave-text-functions
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1229 octave-variables)))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1231 (defun octave-complete-symbol ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1232 "Perform completion on Octave symbol preceding point.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1233 Compare that symbol against Octave's reserved words and builtin
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1234 variables."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235 ;; This code taken from lisp-complete-symbol
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1237 (let* ((end (point))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1238 (beg (save-excursion (backward-sexp 1) (point)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1239 (string (buffer-substring-no-properties beg end))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1240 (completion (try-completion string octave-completion-alist)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1241 (cond ((eq completion t)) ; ???
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1242 ((null completion)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1243 (message "Can't find completion for \"%s\"" string)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1244 (ding))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1245 ((not (string= string completion))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1246 (delete-region beg end)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1247 (insert completion))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1248 (t
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1249 (let ((list (all-completions string octave-completion-alist))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1250 (conf (current-window-configuration)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1251 ;; Taken from comint.el
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
1252 (message "Making completion list...")
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1253 (with-output-to-temp-buffer "*Completions*"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254 (display-completion-list list))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 (message "Hit space to flush")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1256 (let (key first)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257 (if (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 (set-buffer (get-buffer "*Completions*"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1259 (setq key (read-key-sequence nil)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1260 first (aref key 0))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1261 (and (consp first) (consp (event-start first))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1262 (eq (window-buffer (posn-window (event-start
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263 first)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 (get-buffer "*Completions*"))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1265 (eq (key-binding key) 'mouse-choose-completion)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1267 (mouse-choose-completion first)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1268 (set-window-configuration conf))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1269 (if (eq first ?\ )
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1270 (set-window-configuration conf)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1271 (setq unread-command-events
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1272 (listify-key-sequence key))))))))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
1273
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1274
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1275 ;;; Electric characters && friends
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1276 (defun octave-reindent-then-newline-and-indent ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1277 "Reindent current Octave line, insert newline, and indent the new line.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1278 If Abbrev mode is on, expand abbrevs first."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1279 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1280 (if abbrev-mode (expand-abbrev))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1281 (if octave-blink-matching-block
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1282 (octave-blink-matching-block-open))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1283 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1284 (delete-region (point) (progn (skip-chars-backward " \t") (point)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1285 (indent-according-to-mode))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1286 (insert "\n")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1287 (indent-according-to-mode))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1288
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1289 (defun octave-electric-semi ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1290 "Insert a semicolon in Octave mode.
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1291 Maybe expand abbrevs and blink matching block open keywords.
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1292 Reindent the line of `octave-auto-indent' is non-nil.
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1293 Insert a newline if `octave-auto-newline' is non-nil."
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1294 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1295 (if (not (octave-not-in-string-or-comment-p))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1296 (insert ";")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1297 (if abbrev-mode (expand-abbrev))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1298 (if octave-blink-matching-block
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1299 (octave-blink-matching-block-open))
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1300 (if octave-auto-indent
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1301 (indent-according-to-mode))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1302 (insert ";")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1303 (if octave-auto-newline
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1304 (newline-and-indent))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1305
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1306 (defun octave-electric-space ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1307 "Insert a space in Octave mode.
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1308 Maybe expand abbrevs and blink matching block open keywords.
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1309 Reindent the line of `octave-auto-indent' is non-nil."
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1310 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1311 (setq last-command-char ? )
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1312 (if (not (octave-not-in-string-or-comment-p))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1313 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1314 (indent-according-to-mode)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1315 (self-insert-command 1))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1316 (if abbrev-mode (expand-abbrev))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1317 (if octave-blink-matching-block
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1318 (octave-blink-matching-block-open))
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1319 (if (and octave-auto-indent
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1320 (save-excursion
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1321 (skip-syntax-backward " ")
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1322 (not (bolp))))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1323 (indent-according-to-mode))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1324 (self-insert-command 1)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1325
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1326 (defun octave-abbrev-start ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1327 "Start entering an Octave abbreviation.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1328 If Abbrev mode is turned on, typing ` (grave accent) followed by ? or
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1329 \\[help-command] lists all Octave abbrevs. Any other key combination is
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1330 executed normally.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1331 Note that all Octave mode abbrevs start with a grave accent."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1332 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1333 (if (not abbrev-mode)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1334 (self-insert-command 1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1335 (let (c)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1336 (insert last-command-char)
23848
7896e341d77f (octave-abbrev-start): Use the correct
Karl Heuer <kwzh@gnu.org>
parents: 21669
diff changeset
1337 (if (if octave-xemacs-p
7896e341d77f (octave-abbrev-start): Use the correct
Karl Heuer <kwzh@gnu.org>
parents: 21669
diff changeset
1338 (or (eq (event-to-character (setq c (next-event))) ??)
7896e341d77f (octave-abbrev-start): Use the correct
Karl Heuer <kwzh@gnu.org>
parents: 21669
diff changeset
1339 (eq (event-to-character c) help-char))
7896e341d77f (octave-abbrev-start): Use the correct
Karl Heuer <kwzh@gnu.org>
parents: 21669
diff changeset
1340 (or (eq (setq c (read-event)) ??)
7896e341d77f (octave-abbrev-start): Use the correct
Karl Heuer <kwzh@gnu.org>
parents: 21669
diff changeset
1341 (eq c help-char)))
7896e341d77f (octave-abbrev-start): Use the correct
Karl Heuer <kwzh@gnu.org>
parents: 21669
diff changeset
1342 (let ((abbrev-table-name-list '(octave-abbrev-table)))
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1343 (list-abbrevs))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1344 (setq unread-command-events (list c))))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1345
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1346 (defun octave-insert-defun (name args vals)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1347 "Insert an Octave function skeleton.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1348 Prompt for the function's name, arguments and return values (to be
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349 entered without parens)."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350 (interactive
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351 (list
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1352 (read-from-minibuffer "Function name: "
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1353 (substring (buffer-name) 0 -2))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1354 (read-from-minibuffer "Arguments: ")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1355 (read-from-minibuffer "Return values: ")))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1356 (let ((string (format "%s %s (%s)"
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1357 (cond
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1358 ((string-equal vals "")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1359 vals)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360 ((string-match "[ ,]" vals)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1361 (concat " [" vals "] ="))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362 (t
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363 (concat " " vals " =")))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364 name
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1365 args))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1366 (prefix octave-block-comment-start))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1367 (if (not (bobp)) (newline))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368 (insert "function" string)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1369 (indent-according-to-mode)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370 (newline 2)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1371 (insert prefix "usage: " string)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
1372 (reindent-then-newline-and-indent)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1373 (insert prefix)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
1374 (reindent-then-newline-and-indent)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375 (insert prefix)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1376 (indent-according-to-mode)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1377 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1378 (newline 2)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1379 (insert "endfunction")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1380 (indent-according-to-mode))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
1381
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1382
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1383 ;;; Menu
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1384 (defun octave-add-octave-menu ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1385 "Adds the `Octave' menu to the menu bar in Octave mode."
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
1386 (require 'easymenu)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1387 (easy-menu-define octave-mode-menu-map octave-mode-map
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1388 "Menu keymap for Octave mode." octave-mode-menu)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1389 (easy-menu-add octave-mode-menu-map octave-mode-map))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1390
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1391
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1392 ;;; Communication with the inferior Octave process
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1393 (defun octave-kill-process ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1394 "Kill inferior Octave process and its buffer."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1395 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1396 (if inferior-octave-process
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1397 (progn
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1398 (process-send-string inferior-octave-process "quit;\n")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 (accept-process-output inferior-octave-process)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1400 (if inferior-octave-buffer
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1401 (kill-buffer inferior-octave-buffer)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1402
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1403 (defun octave-show-process-buffer ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1404 "Make sure that `inferior-octave-buffer' is displayed."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1405 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1406 (if (get-buffer inferior-octave-buffer)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1407 (display-buffer inferior-octave-buffer)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1408 (message "No buffer named %s" inferior-octave-buffer)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1409
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1410 (defun octave-hide-process-buffer ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1411 "Delete all windows that display `inferior-octave-buffer'."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1412 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1413 (if (get-buffer inferior-octave-buffer)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1414 (delete-windows-on inferior-octave-buffer)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1415 (message "No buffer named %s" inferior-octave-buffer)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1416
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1417 (defun octave-send-region (beg end)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1418 "Send current region to the inferior Octave process."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1419 (interactive "r")
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
1420 (inferior-octave t)
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1421 (let ((proc inferior-octave-process)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1422 (string (buffer-substring-no-properties beg end))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1423 line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1424 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1425 (set-buffer inferior-octave-buffer)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1426 (setq inferior-octave-output-list nil)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1427 (while (not (string-equal string ""))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1428 (if (string-match "\n" string)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1429 (setq line (substring string 0 (match-beginning 0))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1430 string (substring string (match-end 0)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1431 (setq line string string ""))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1432 (setq inferior-octave-receive-in-progress t)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1433 (inferior-octave-send-list-and-digest (list (concat line "\n")))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1434 (while inferior-octave-receive-in-progress
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1435 (accept-process-output proc))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1436 (insert-before-markers
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1437 (mapconcat 'identity
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1438 (append
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1439 (if octave-send-echo-input (list line) (list ""))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1440 (mapcar 'inferior-octave-strip-ctrl-g
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1441 inferior-octave-output-list)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1442 (list inferior-octave-output-string))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1443 "\n")))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1444 (if octave-send-show-buffer
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1445 (display-buffer inferior-octave-buffer)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1446
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1447 (defun octave-send-block ()
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
1448 "Send current Octave block to the inferior Octave process."
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1449 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1450 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1451 (octave-mark-block)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1452 (octave-send-region (point) (mark))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1453
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1454 (defun octave-send-defun ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1455 "Send current Octave function to the inferior Octave process."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1456 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1457 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1458 (octave-mark-defun)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1459 (octave-send-region (point) (mark))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1460
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1461 (defun octave-send-line (&optional arg)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1462 "Send current Octave code line to the inferior Octave process.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1463 With positive prefix ARG, send that many lines.
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1464 If `octave-send-line-auto-forward' is non-nil, go to the next unsent
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1465 code line."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1466 (interactive "P")
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1467 (or arg (setq arg 1))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1468 (if (> arg 0)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1469 (let (beg end)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1470 (beginning-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1471 (setq beg (point))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1472 (octave-next-code-line (- arg 1))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1473 (end-of-line)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1474 (setq end (point))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1475 (if octave-send-line-auto-forward
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1476 (octave-next-code-line 1))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1477 (octave-send-region beg end))))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1478
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1479 (defun octave-eval-print-last-sexp ()
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1480 "Evaluate Octave sexp before point and print value into current buffer."
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1481 (interactive)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1482 (inferior-octave t)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1483 (let ((standard-output (current-buffer))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1484 (print-escape-newlines nil)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1485 (opoint (point)))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1486 (terpri)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49334
diff changeset
1487 (prin1
16901
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1488 (save-excursion
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1489 (forward-sexp -1)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1490 (inferior-octave-send-list-and-digest
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1491 (list (concat (buffer-substring-no-properties (point) opoint)
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1492 "\n")))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1493 (mapconcat 'identity inferior-octave-output-list "\n")))
f2035f66dba0 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1494 (terpri)))
16905
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1495
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1496 ;;; Bug reporting
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1497 (defun octave-submit-bug-report ()
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1498 "Submit a bug report on the Emacs Octave package via mail."
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1499 (interactive)
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1500 (require 'reporter)
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1501 (and
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1502 (y-or-n-p "Do you want to submit a bug report? ")
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1503 (reporter-submit-bug-report
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1504 octave-maintainer-address
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1505 (concat "Emacs version " emacs-version)
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1506 (list
20181
fe0f0a9bb43f (octave-auto-indent): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 17533
diff changeset
1507 'octave-auto-indent
16905
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1508 'octave-auto-newline
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1509 'octave-blink-matching-block
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1510 'octave-block-offset
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1511 'octave-comment-char
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1512 'octave-continuation-offset
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1513 'octave-continuation-string
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1514 'octave-help-files
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1515 'octave-mode-startup-message
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1516 'octave-send-echo-input
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1517 'octave-send-line-auto-forward
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1518 'octave-send-show-buffer))))
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1519
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1520 ;;; provide ourself
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1521
16911
123d19079d9f Delete explicit autoload calls.
Richard M. Stallman <rms@gnu.org>
parents: 16905
diff changeset
1522 (provide 'octave-mod)
16905
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1523
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49598
diff changeset
1524 ;;; arch-tag: 05f1ce09-be87-4c00-803e-4919ffa26c23
16905
a93836c8b52b Merge in octave.el; don't require octave.el.
Richard M. Stallman <rms@gnu.org>
parents: 16902
diff changeset
1525 ;;; octave-mod.el ends here