* etc/publicsuffix.txt: Update from source.
[bpt/emacs.git] / lisp / generic-x.el
index ce1599b..21b4297 100644 (file)
@@ -1,6 +1,6 @@
 ;;; generic-x.el --- A collection of generic modes
 
-;; Copyright (C) 1997-1998, 2001-201 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2001-2014 Free Software Foundation, Inc.
 
 ;; Author:  Peter Breton <pbreton@cs.umb.edu>
 ;; Created: Tue Oct 08 1996
@@ -460,136 +460,7 @@ like an INI file.  You can add this hook to `find-file-hook'."
 
 ;;; DOS/Windows BAT files
 (when (memq 'bat-generic-mode generic-extras-enable-list)
-
-(define-generic-mode bat-generic-mode
-  nil
-  nil
-  (eval-when-compile
-    (list
-     ;; Make this one first in the list, otherwise comments will
-     ;; be over-written by other variables
-     '("^[@ \t]*\\([rR][eE][mM][^\n\r]*\\)" 1 font-lock-comment-face t)
-     '("^[ \t]*\\(::.*\\)"                  1 font-lock-comment-face t)
-     '("^[@ \t]*\\([bB][rR][eE][aA][kK]\\|[vV][eE][rR][iI][fF][yY]\\)[ \t]+\\([oO]\\([nN]\\|[fF][fF]\\)\\)"
-       (1 font-lock-builtin-face)
-       (2 font-lock-constant-face t t))
-     ;; Any text (except ON/OFF) following ECHO is a string.
-     '("^[@ \t]*\\([eE][cC][hH][oO]\\)[ \t]+\\(\\([oO]\\([nN]\\|[fF][fF]\\)\\)\\|\\([^>|\r\n]+\\)\\)"
-       (1 font-lock-builtin-face)
-       (3 font-lock-constant-face t t)
-       (5 font-lock-string-face t t))
-     ;; These keywords appear as the first word on a line.  (Actually, they
-     ;; can also appear after "if ..." or "for ..." clause, but since they
-     ;; are frequently used in simple text, we punt.)
-     ;; In `generic-bat-mode-setup-function' we make the keywords
-     ;; case-insensitive
-     (generic-make-keywords-list
-      '("for"
-       "if")
-      font-lock-keyword-face "^[@ \t]*")
-     ;; These keywords can be anywhere on a line
-     ;; In `generic-bat-mode-setup-function' we make the keywords
-     ;; case-insensitive
-     (generic-make-keywords-list
-      '("do"
-       "exist"
-       "errorlevel"
-       "goto"
-       "not")
-      font-lock-keyword-face)
-     ;; These are built-in commands.  Only frequently-used ones are listed.
-     (generic-make-keywords-list
-      '("CALL"     "call"       "Call"
-       "CD"        "cd"         "Cd"
-       "CLS"       "cls"        "Cls"
-       "COPY"      "copy"       "Copy"
-       "DEL"       "del"        "Del"
-       "ECHO"      "echo"       "Echo"
-       "MD"        "md"         "Md"
-       "PATH"      "path"       "Path"
-       "PAUSE"     "pause"      "Pause"
-       "PROMPT"    "prompt"     "Prompt"
-       "RD"        "rd"         "Rd"
-       "REN"       "ren"        "Ren"
-       "SET"       "set"        "Set"
-       "START"     "start"      "Start"
-       "SHIFT"     "shift"      "Shift")
-      font-lock-builtin-face "[ \t|\n]")
-     '("^[ \t]*\\(:\\sw+\\)"         1 font-lock-function-name-face t)
-     '("\\(%\\sw+%\\)"               1 font-lock-variable-name-face t)
-     '("\\(%[0-9]\\)"                1 font-lock-variable-name-face t)
-     '("[\t ]+\\([+-/][^\t\n\" ]+\\)" 1 font-lock-type-face)
-     '("[ \t\n|]\\<\\([gG][oO][tT][oO]\\)\\>[ \t]*\\(\\sw+\\)?"
-       (1 font-lock-keyword-face)
-       (2 font-lock-function-name-face nil t))
-     '("[ \t\n|]\\<\\([sS][eE][tT]\\)\\>[ \t]*\\(\\sw+\\)?[ \t]*=?"
-       (1 font-lock-builtin-face)
-       (2 font-lock-variable-name-face t t))))
-  '("\\.[bB][aA][tT]\\'"
-    "\\.[cC][mM][dD]\\'"
-    "\\`[cC][oO][nN][fF][iI][gG]\\."
-    "\\`[aA][uU][tT][oO][eE][xX][eE][cC]\\.")
-  '(generic-bat-mode-setup-function)
-  "Generic mode for MS-Windows batch files.")
-
-(defvar bat-generic-mode-syntax-table nil
-  "Syntax table in use in `bat-generic-mode' buffers.")
-
-(defvar bat-generic-mode-keymap (make-sparse-keymap)
-  "Keymap for `bat-generic-mode'.")
-
-(defun bat-generic-mode-compile ()
-  "Run the current BAT file in a compilation buffer."
-  (interactive)
-  (let ((compilation-buffer-name-function
-        (function
-         (lambda (_ign)
-           (concat "*" (buffer-file-name) "*")))))
-    (compile
-     (concat (w32-shell-name) " -c " (buffer-file-name)))))
-
-(eval-when-compile (require 'comint))
-(defun bat-generic-mode-run-as-comint ()
-  "Run the current BAT file in a comint buffer."
-  (interactive)
-  (require 'comint)
-  (let* ((file (buffer-file-name))
-        (buf-name (concat "*" file "*")))
-    (with-current-buffer (get-buffer-create buf-name)
-      (erase-buffer)
-      (comint-mode)
-      (comint-exec
-       buf-name
-       file
-       (w32-shell-name)
-       nil
-       (list "-c" file))
-      (display-buffer buf-name))))
-
-(define-key bat-generic-mode-keymap "\C-c\C-c" 'bat-generic-mode-compile)
-
-;; Make underscores count as words
-(unless bat-generic-mode-syntax-table
-  (setq bat-generic-mode-syntax-table (make-syntax-table))
-  (modify-syntax-entry ?_ "w" bat-generic-mode-syntax-table))
-
-;; bat-generic-mode doesn't use the comment functionality of
-;; define-generic-mode because it has a three-letter comment-string,
-;; so we do it here manually instead
-(defun generic-bat-mode-setup-function ()
-  (make-local-variable 'parse-sexp-ignore-comments)
-  (make-local-variable 'comment-start)
-  (make-local-variable 'comment-start-skip)
-  (make-local-variable 'comment-end)
-  (setq imenu-generic-expression '((nil "^:\\(\\sw+\\)" 1))
-       parse-sexp-ignore-comments t
-       comment-end ""
-       comment-start "REM "
-       comment-start-skip "[Rr][Ee][Mm] *")
-  (set-syntax-table bat-generic-mode-syntax-table)
-  ;; Make keywords case-insensitive
-  (setq font-lock-defaults '(generic-font-lock-keywords nil t))
-  (use-local-map bat-generic-mode-keymap)))
+  (define-obsolete-function-alias 'bat-generic-mode 'bat-mode "24.4"))
 
 ;;; Mailagent
 ;; Mailagent is a Unix mail filtering program.  Anyone wanna do a
@@ -646,83 +517,10 @@ like an INI file.  You can add this hook to `find-file-hook'."
   "Generic mode for Sys V pkginfo files."))
 
 ;; Javascript mode
-;; Includes extra keywords from Armando Singer [asinger@MAIL.COLGATE.EDU]
+;; Obsolete; defer to js-mode from js.el.
 (when (memq 'javascript-generic-mode generic-extras-enable-list)
-
-(define-generic-mode javascript-generic-mode
-  '("//" ("/*" . "*/"))
-  '("break"
-    "case"
-    "continue"
-    "default"
-    "delete"
-    "do"
-    "else"
-    "export"
-    "for"
-    "function"
-    "if"
-    "import"
-    "in"
-    "new"
-    "return"
-    "switch"
-    "this"
-    "typeof"
-    "var"
-    "void"
-    "while"
-    "with"
-    ;; words reserved for ECMA extensions below
-    "catch"
-    "class"
-    "const"
-    "debugger"
-    "enum"
-    "extends"
-    "finally"
-    "super"
-    "throw"
-    "try"
-    ;; Java Keywords reserved by JavaScript
-    "abstract"
-    "boolean"
-    "byte"
-    "char"
-    "double"
-    "false"
-    "final"
-    "float"
-    "goto"
-    "implements"
-    "instanceof"
-    "int"
-    "interface"
-    "long"
-    "native"
-    "null"
-    "package"
-    "private"
-    "protected"
-    "public"
-    "short"
-    "static"
-    "synchronized"
-    "throws"
-    "transient"
-    "true")
-  '(("^\\s-*function\\s-+\\([A-Za-z0-9_]+\\)"
-     (1 font-lock-function-name-face))
-    ("^\\s-*var\\s-+\\([A-Za-z0-9_]+\\)"
-     (1 font-lock-variable-name-face)))
-  '("\\.js\\'")
-  (list
-   (function
-    (lambda ()
-      (setq imenu-generic-expression
-           '((nil "^function\\s-+\\([A-Za-z0-9_]+\\)" 1)
-             ("*Variables*" "^var\\s-+\\([A-Za-z0-9_]+\\)" 1))))))
-  "Generic mode for JavaScript files."))
+  (define-obsolete-function-alias 'javascript-generic-mode 'js-mode "24.3")
+  (define-obsolete-variable-alias 'javascript-generic-mode-hook 'js-mode-hook "24.3"))
 
 ;; VRML files
 (when (memq 'vrml-generic-mode generic-extras-enable-list)
@@ -912,21 +710,16 @@ like an INI file.  You can add this hook to `find-file-hook'."
   ;; the choice of face for each token group
   (eval-when-compile
     (list
-     (generic-make-keywords-list
-      '("FILEFLAGSMASK"
-       "FILEFLAGS"
-       "FILEOS"
-       "FILESUBTYPE"
-       "FILETYPE"
-       "FILEVERSION"
-       "PRODUCTVERSION")
-      font-lock-type-face)
-     (generic-make-keywords-list
-      '("BEGIN"
-       "BLOCK"
-       "END"
-       "VALUE")
-      font-lock-function-name-face)
+     (list (regexp-opt '("FILEFLAGSMASK"
+                        "FILEFLAGS"
+                        "FILEOS"
+                        "FILESUBTYPE"
+                        "FILETYPE"
+                        "FILEVERSION"
+                        "PRODUCTVERSION") 'symbols)
+          1 font-lock-type-face)
+     (list (regexp-opt '("BEGIN" "BLOCK" "END" "VALUE") 'symbols)
+          1 font-lock-function-name-face)
      '("^#[ \t]*include[ \t]+\\(<[^>\"\n]+>\\)" 1 font-lock-string-face)
      '("^#[ \t]*define[ \t]+\\(\\sw+\\)("       1 font-lock-function-name-face)
      '("^#[ \t]*\\(elif\\|if\\)\\>"
@@ -1490,18 +1283,22 @@ like an INI file.  You can add this hook to `find-file-hook'."
     "WIN32SMINOR")
   "Function argument constants used in InstallShield 3 and 5."))
 
-(defvar rul-generic-mode-syntax-table nil
+;; c++-mode-syntax-table used to be autoloaded, with an initial nil value.
+;; This file did not load cc-mode, and therefore rul-generic-mode-syntax-table
+;; would have different values according to whether or not cc-mode
+;; happened to be loaded before this file was.
+(require 'cc-mode)
+(defvar c++-mode-syntax-table)
+
+(defvar rul-generic-mode-syntax-table
+  (let ((table (make-syntax-table c++-mode-syntax-table)))
+    (modify-syntax-entry ?\r "> b" table)
+    (modify-syntax-entry ?\n "> b" table)
+    (modify-syntax-entry ?/  ". 124b" table)
+    (modify-syntax-entry ?*  ". 23" table)
+    table)
   "Syntax table to use in `rul-generic-mode' buffers.")
 
-(setq rul-generic-mode-syntax-table
-      (make-syntax-table c++-mode-syntax-table))
-
-(modify-syntax-entry ?\r "> b" rul-generic-mode-syntax-table)
-(modify-syntax-entry ?\n "> b" rul-generic-mode-syntax-table)
-
-(modify-syntax-entry ?/  ". 124b" rul-generic-mode-syntax-table)
-(modify-syntax-entry ?*  ". 23"   rul-generic-mode-syntax-table)
-
 ;; here manually instead
 (defun generic-rul-mode-setup-function ()
   (make-local-variable 'parse-sexp-ignore-comments)
@@ -1541,21 +1338,25 @@ like an INI file.  You can add this hook to `find-file-hook'."
        (1 font-lock-keyword-face)
        (2 font-lock-constant-face nil t))
      ;; system variables
-     (generic-make-keywords-list
-      installshield-system-variables-list
-      font-lock-variable-name-face "[^_]" "[^_]")
+     (list (concat "[^_]"
+                  (regexp-opt installshield-system-variables-list 'symbols)
+                  "[^_]")
+          1 font-lock-variable-name-face)
      ;; system functions
-     (generic-make-keywords-list
-      installshield-system-functions-list
-      font-lock-function-name-face "[^_]" "[^_]")
+     (list (concat "[^_]"
+                  (regexp-opt installshield-system-functions-list 'symbols)
+                  "[^_]")
+          1 font-lock-function-name-face)
      ;; type keywords
-     (generic-make-keywords-list
-      installshield-types-list
-      font-lock-type-face "[^_]" "[^_]")
+     (list (concat "[^_]"
+                  (regexp-opt installshield-types-list 'symbols)
+                  "[^_]")
+          1 font-lock-type-face)
      ;; function argument constants
-     (generic-make-keywords-list
-      installshield-funarg-constants-list
-      font-lock-variable-name-face "[^_]" "[^_]"))) ; is this face the best choice?
+     (list (concat "[^_]"
+                  (regexp-opt installshield-funarg-constants-list 'symbols)
+                  "[^_]")
+          1 font-lock-variable-name-face))) ; is this face the best choice?
   '("\\.[rR][uU][lL]\\'")
   '(generic-rul-mode-setup-function)
   "Generic mode for InstallShield RUL files.")