]> code.delx.au - gnu-emacs/blobdiff - lisp/progmodes/icon.el
Romain Francoise's and Ami Fischman's bugfixes.
[gnu-emacs] / lisp / progmodes / icon.el
index fed89e93038f3244faaae0ce62983f6638afd176..eef9382636778c50bbb456c746b2b0619ba1c467 100644 (file)
@@ -46,9 +46,8 @@
     (define-key icon-mode-map "\e\C-e" 'end-of-icon-defun)
     (define-key icon-mode-map "\e\C-q" 'indent-icon-exp)
     (define-key icon-mode-map "\177" 'backward-delete-char-untabify)
-    (define-key icon-mode-map "\t" 'icon-indent-command)
-  
-    (define-key icon-mode-map [menu-bar] (make-sparse-keymap))
+
+    (define-key icon-mode-map [menu-bar] (make-sparse-keymap "Icon"))
     (define-key icon-mode-map [menu-bar icon]
       (cons "Icon" map))
     (define-key map [beginning-of-icon-defun] '("Beginning of function" . beginning-of-icon-defun))
@@ -187,9 +186,9 @@ with no args, if that value is non-nil."
   (setq comment-start-skip "# *")
   (make-local-variable 'comment-indent-function)
   (setq comment-indent-function 'icon-comment-indent)
+  (set (make-local-variable 'indent-line-function) 'icon-indent-line)
   ;; font-lock support
-  (make-local-variable 'font-lock-defaults)
-  (setq font-lock-defaults  
+  (setq font-lock-defaults
        '((icon-font-lock-keywords
           icon-font-lock-keywords-1 icon-font-lock-keywords-2)
          nil nil ((?_ . "w")) beginning-of-defun
@@ -203,7 +202,7 @@ with no args, if that value is non-nil."
   ;; we start from the assertion that `hs-special-modes-alist' is autoloaded.
   (unless (assq 'icon-mode hs-special-modes-alist)
     (setq hs-special-modes-alist
-         (cons '(icon-mode  "\\<procedure\\>" "\\<end\\>" nil 
+         (cons '(icon-mode  "\\<procedure\\>" "\\<end\\>" nil
                             icon-forward-sexp-function)
                hs-special-modes-alist)))
   (run-hooks 'icon-mode-hook))
@@ -211,12 +210,7 @@ with no args, if that value is non-nil."
 ;; This is used by indent-for-comment to decide how much to
 ;; indent a comment in Icon code based on its context.
 (defun icon-comment-indent ()
-  (if (looking-at "^#")
-      0        
-    (save-excursion
-      (skip-chars-backward " \t")
-      (max (if (bolp) 0 (1+ (current-column)))
-          comment-column))))
+  (if (looking-at "^#") 0 comment-column))
 
 (defun electric-icon-brace (arg)
   "Insert character and correct line's indentation."
@@ -619,47 +613,42 @@ Returns nil if line starts inside a string, t if in a comment."
   "Subdued level highlighting for Icon mode.")
 
 (defconst icon-font-lock-keywords-2
-  (append 
+  (append
    icon-font-lock-keywords-1
    (eval-when-compile
      (list
       ;; Fontify all type specifiers.
-      (cons 
-       (concat 
-       "\\<" (regexp-opt  '("null" "string" "co-expression" "table" "integer" 
-                            "cset"  "set" "real" "file" "list") t) 
-       "\\>") 
+      (cons
+       (regexp-opt  '("null" "string" "co-expression" "table" "integer"
+                     "cset"  "set" "real" "file" "list") 'words)
        'font-lock-type-face)
       ;; Fontify all keywords.
       ;;
-      (cons 
-       (concat 
-       "\\<" 
-       (regexp-opt 
-        '("break" "do" "next" "repeat" "to" "by" "else" "if" "not" "return" 
-          "until" "case" "of" "while" "create" "every" "suspend" "default" 
-          "fail" "record" "then") t)
-       "\\>")
+      (cons
+       (regexp-opt
+       '("break" "do" "next" "repeat" "to" "by" "else" "if" "not" "return"
+         "until" "case" "of" "while" "create" "every" "suspend" "default"
+         "fail" "record" "then") 'words)
        'font-lock-keyword-face)
-      ;; "end" "initial" 
-      (cons (concat "\\<" (regexp-opt '("end" "initial") t) "\\>")
+      ;; "end" "initial"
+      (cons (regexp-opt '("end" "initial") 'words)
            'font-lock-builtin-face)
       ;; Fontify all system variables.
-      (cons 
-       (regexp-opt 
-       '("&allocated" "&ascii" "&clock" "&col" "&collections" "&column" 
+      (cons
+       (regexp-opt
+       '("&allocated" "&ascii" "&clock" "&col" "&collections" "&column"
          "&control" "&cset" "&current" "&date" "&dateline" "&digits" "&dump"
-         "&e" "&error" "&errornumber" "&errortext" "&errorvalue" "&errout" 
-         "&eventcode" "&eventsource" "&eventvalue" "&fail" "&features" 
-         "&file" "&host" "&input" "&interval" "&lcase" "&ldrag" "&letters" 
-         "&level" "&line" "&lpress" "&lrelease" "&main" "&mdrag" "&meta" 
-         "&mpress" "&mrelease" "&null" "&output" "&phi" "&pi" "&pos" 
-         "&progname" "&random" "&rdrag" "&regions" "&resize" "&row" 
-         "&rpress" "&rrelease" "&shift" "&source" "&storage" "&subject" 
+         "&e" "&error" "&errornumber" "&errortext" "&errorvalue" "&errout"
+         "&eventcode" "&eventsource" "&eventvalue" "&fail" "&features"
+         "&file" "&host" "&input" "&interval" "&lcase" "&ldrag" "&letters"
+         "&level" "&line" "&lpress" "&lrelease" "&main" "&mdrag" "&meta"
+         "&mpress" "&mrelease" "&null" "&output" "&phi" "&pi" "&pos"
+         "&progname" "&random" "&rdrag" "&regions" "&resize" "&row"
+         "&rpress" "&rrelease" "&shift" "&source" "&storage" "&subject"
          "&time" "&trace" "&ucase" "&version" "&window" "&x" "&y") t)
        'font-lock-constant-face)
       (cons      ;; global local static declarations and link files
-       (concat 
+       (concat
        "^[ \t]*"
        (regexp-opt '("global" "link" "local" "static") t)
        "\\(\\sw+\\>\\)*")
@@ -671,13 +660,13 @@ Returns nil if line starts inside a string, t if in a comment."
               font-lock-variable-name-face)))))
 
       (cons      ;; $define $elif $ifdef $ifndef $undef
-       (concat "^" 
+       (concat "^"
               (regexp-opt'("$define" "$elif" "$ifdef" "$ifndef" "$undef") t)
               "\\>[ \t]*\\([^ \t\n]+\\)?")
-           '((1 font-lock-builtin-face) 
+           '((1 font-lock-builtin-face)
              (4 font-lock-variable-name-face nil t)))
-      (cons      ;; $dump $endif $else $include 
-       (concat 
+      (cons      ;; $dump $endif $else $include
+       (concat
        "^" (regexp-opt'("$dump" "$endif" "$else" "$include") t) "\\>" )
        'font-lock-builtin-face)
       (cons      ;; $warning $error
@@ -698,4 +687,5 @@ Returns nil if line starts inside a string, t if in a comment."
 
 (provide 'icon)
 
+;;; arch-tag: 8abf8c99-e7df-44af-a58f-ef5ed2ee52cb
 ;;; icon.el ends here