;;; icon.el --- mode for editing Icon code
-;; Copyright (C) 1989, 2001-2011 Free Software Foundation, Inc.
+;; Copyright (C) 1989, 2001-2016 Free Software Foundation, Inc.
;; Author: Chris Smith <csmith@convex.com>
;; Created: 15 Feb 89
:group 'languages)
(defcustom icon-indent-level 4
- "*Indentation of Icon statements with respect to containing block."
+ "Indentation of Icon statements with respect to containing block."
:type 'integer
:group 'icon)
(defcustom icon-brace-imaginary-offset 0
- "*Imagined indentation of a Icon open brace that actually follows a statement."
+ "Imagined indentation of a Icon open brace that actually follows a statement."
:type 'integer
:group 'icon)
(defcustom icon-brace-offset 0
- "*Extra indentation for braces, compared with other text in same context."
+ "Extra indentation for braces, compared with other text in same context."
:type 'integer
:group 'icon)
(defcustom icon-continued-statement-offset 4
- "*Extra indent for Icon lines not starting new statements."
+ "Extra indent for Icon lines not starting new statements."
:type 'integer
:group 'icon)
(defcustom icon-continued-brace-offset 0
- "*Extra indent for Icon substatements that start with open-braces.
+ "Extra indent for Icon substatements that start with open-braces.
This is in addition to `icon-continued-statement-offset'."
:type 'integer
:group 'icon)
(defcustom icon-auto-newline nil
- "*Non-nil means automatically newline before and after braces Icon code.
+ "Non-nil means automatically newline before and after braces Icon code.
This applies when braces are inserted."
:type 'boolean
:group 'icon)
(defcustom icon-tab-always-indent t
- "*Non-nil means TAB in Icon mode should always reindent the current line.
+ "Non-nil means TAB in Icon mode should always reindent the current line.
It will then reindent, regardless of where in the line point is
when the TAB command is used."
:type 'boolean
(ch-syntax (char-syntax ch)))
(if (eq ch-syntax ?w)
(assoc (buffer-substring
- (progn (forward-word -1) (point))
- (progn (forward-word 1) (point)))
+ (progn (forward-word-strictly -1) (point))
+ (progn (forward-word-strictly 1) (point)))
icon-resword-alist)
(not (memq ch '(0 ?\; ?\} ?\{ ?\) ?\] ?\" ?\' ?\# ?\, ?\. ?\n))))))
((and (eq (char-syntax (following-char)) ?w)
(cdr
(assoc (buffer-substring (point)
- (save-excursion (forward-word 1) (point)))
+ (save-excursion (forward-word-strictly 1)
+ (point)))
icon-resword-alist))) 0)
(t (end-of-line 0) (icon-backward-to-start-of-continued-exp lim))))
(interactive)
(if (not (bobp)) (forward-char -1))
(re-search-forward "\\(\\s \\|^\\)end\\(\\s \\|$\\)" (point-max) 'move)
- (forward-word -1)
+ (forward-word-strictly -1)
(forward-line 1))
\f
(defun indent-icon-exp ()
(let ((indent-stack (list nil))
(contain-stack (list (point)))
(case-fold-search nil)
- restart outer-loop-done inner-loop-done state ostate
- this-indent last-sexp last-depth
- at-else at-brace at-do
+ outer-loop-done inner-loop-done state ostate
+ this-indent last-depth
+ at-else at-brace
(opoint (point))
(next-depth 0))
(save-excursion
(setq state (parse-partial-sexp (point) (progn (end-of-line) (point))
nil nil state))
(setq next-depth (car state))
- (if (and (car (cdr (cdr state)))
- (>= (car (cdr (cdr state))) 0))
- (setq last-sexp (car (cdr (cdr state)))))
(if (or (nth 4 ostate))
(icon-indent-line))
(if (or (nth 3 state))
(setq outer-loop-done t))
(if outer-loop-done
nil
- (if (/= last-depth next-depth)
- (setq last-sexp nil))
(while (> last-depth next-depth)
(setq indent-stack (cdr indent-stack)
contain-stack (cdr contain-stack)