emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/generic.el


From: Lute Kamstra
Subject: [Emacs-diffs] Changes to emacs/lisp/generic.el
Date: Mon, 11 Apr 2005 04:07:15 -0400

Index: emacs/lisp/generic.el
diff -c emacs/lisp/generic.el:1.36 emacs/lisp/generic.el:1.37
*** emacs/lisp/generic.el:1.36  Tue Apr  5 18:32:59 2005
--- emacs/lisp/generic.el       Mon Apr 11 08:07:14 2005
***************
*** 23,38 ****
  ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  ;; Boston, MA 02111-1307, USA.
  
- ;; Purpose:
- 
- ;; Meta-mode to create simple major modes
- ;; with basic comment and font-lock support
- 
  ;;; Commentary:
  
  ;; INTRODUCTION:
! 
! ;; Generic-mode is a meta-mode which can be used to define small modes
  ;; which provide basic comment and font-lock support.  These modes are
  ;; intended for the many configuration files and such which are too
  ;; small for a "real" mode, but still have a regular syntax, comment
--- 23,33 ----
  ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  ;; Boston, MA 02111-1307, USA.
  
  ;;; Commentary:
  
  ;; INTRODUCTION:
! ;;
! ;; The macro `define-generic-mode' can be used to define small modes
  ;; which provide basic comment and font-lock support.  These modes are
  ;; intended for the many configuration files and such which are too
  ;; small for a "real" mode, but still have a regular syntax, comment
***************
*** 68,87 ****
  ;; more than this, or you find yourself writing extensive customizations,
  ;; perhaps you should be writing a major mode instead!
  ;;
! ;; LOCAL VARIABLES:
! ;;
! ;; To put a file into generic mode using local variables, use a line
! ;; like this in a Local Variables block:
  ;;
! ;;   mode: default-generic
! ;;
! ;; Do NOT use "mode: generic"!
! ;; See also "AUTOMATICALLY ENTERING GENERIC MODE" below.
! ;;
! ;; DEFINING NEW GENERIC MODES:
! ;;
! ;; Use the `define-generic-mode' function to define new modes.
! ;; For example:
  ;;
  ;;   (define-generic-mode 'foo-generic-mode
  ;;     (list ?%)
--- 63,71 ----
  ;; more than this, or you find yourself writing extensive customizations,
  ;; perhaps you should be writing a major mode instead!
  ;;
! ;; EXAMPLE:
  ;;
! ;; You can use `define-generic-mode' like this:
  ;;
  ;;   (define-generic-mode 'foo-generic-mode
  ;;     (list ?%)
***************
*** 90,124 ****
  ;;     (list "\\.FOO\\'")
  ;;     (list 'foo-setup-function))
  ;;
! ;; defines a new generic-mode `foo-generic-mode', which has '%' as a
  ;; comment character, and "keyword" as a keyword.  When files which
  ;; end in '.FOO' are loaded, Emacs will go into foo-generic-mode and
  ;; call foo-setup-function.  You can also use the function
  ;; `foo-generic-mode' (which is interactive) to put a buffer into
  ;; foo-generic-mode.
  ;;
- ;; AUTOMATICALLY ENTERING GENERIC MODE:
- ;;
- ;; Generic-mode provides a hook which automatically puts a file into
- ;; default-generic-mode if the first few lines of a file in
- ;; fundamental mode start with a hash comment character.  To disable
- ;; this functionality, set the variable `generic-use-find-file-hook'
- ;; to nil BEFORE loading generic-mode.  See the variables
- ;; `generic-lines-to-scan' and `generic-find-file-regexp' for
- ;; customization options.
- ;;
  ;; GOTCHAS:
  ;;
  ;; Be careful that your font-lock definitions are correct.  Getting
  ;; them wrong can cause Emacs to continually attempt to fontify! This
  ;; problem is not specific to generic-mode.
- ;;
  
  ;; Credit for suggestions, brainstorming, help with debugging:
  ;;   address@hidden (Alfred Correira)
  ;; Extensive cleanup by:
  ;;   Stefan Monnier (monnier+gnu/address@hidden)
! ;;
  ;;; Code:
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
--- 74,97 ----
  ;;     (list "\\.FOO\\'")
  ;;     (list 'foo-setup-function))
  ;;
! ;; to define a new generic-mode `foo-generic-mode', which has '%' as a
  ;; comment character, and "keyword" as a keyword.  When files which
  ;; end in '.FOO' are loaded, Emacs will go into foo-generic-mode and
  ;; call foo-setup-function.  You can also use the function
  ;; `foo-generic-mode' (which is interactive) to put a buffer into
  ;; foo-generic-mode.
  ;;
  ;; GOTCHAS:
  ;;
  ;; Be careful that your font-lock definitions are correct.  Getting
  ;; them wrong can cause Emacs to continually attempt to fontify! This
  ;; problem is not specific to generic-mode.
  
  ;; Credit for suggestions, brainstorming, help with debugging:
  ;;   address@hidden (Alfred Correira)
  ;; Extensive cleanup by:
  ;;   Stefan Monnier (monnier+gnu/address@hidden)
! 
  ;;; Code:
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
***************
*** 138,184 ****
  instead (which see).")
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; Customization Variables
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- 
- (defgroup generic nil
-   "Define simple major modes with comment and font-lock support."
-   :prefix "generic-"
-   :group 'extensions)
- 
- (defcustom generic-use-find-file-hook t
-   "*If non-nil, add a hook to enter `default-generic-mode' automatically.
- This is done if the first few lines of a file in fundamental mode
- start with a hash comment character."
-   :group 'generic
-   :type  'boolean)
- 
- (defcustom generic-lines-to-scan 3
-   "*Number of lines that `generic-mode-find-file-hook' looks at.
- Relevant when deciding whether to enter Default-Generic mode automatically.
- This variable should be set to a small positive number."
-   :group 'generic
-   :type  'integer)
- 
- (defcustom generic-find-file-regexp "^#"
-   "*Regular expression used by `generic-mode-find-file-hook'.
- Files in fundamental mode whose first few lines contain a match
- for this regexp, should be put into Default-Generic mode instead.
- The number of lines tested for the matches is specified by the
- value of the variable `generic-lines-to-scan', which see."
-   :group 'generic
-   :type  'regexp)
- 
- (defcustom generic-ignore-files-regexp "[Tt][Aa][Gg][Ss]\\'"
-   "*Regular expression used by `generic-mode-find-file-hook'.
- Files whose names match this regular expression should not be put
- into Default-Generic mode, even if they have lines which match
- the regexp in `generic-find-file-regexp'.  If the value is nil,
- `generic-mode-find-file-hook' does not check the file names."
-   :group 'generic
-   :type  '(choice (const :tag "Don't check file names" nil) regexp))
- 
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; Functions
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
--- 111,116 ----
***************
*** 391,441 ****
        '((nil "^\\[\\(.*\\)\\]" 1))
          imenu-case-fold-search t))
  
- ;; This generic mode is always defined
- (define-generic-mode default-generic-mode (list ?#) nil nil nil nil :group 
'generic)
- 
- ;; A more general solution would allow us to enter generic-mode for
- ;; *any* comment character, but would require us to synthesize a new
- ;; generic-mode on the fly. I think this gives us most of what we
- ;; want.
- (defun generic-mode-find-file-hook ()
-   "Hook function to enter Default-Generic mode automatically.
- 
- Done if the first few lines of a file in Fundamental mode start
- with a match for the regexp in `generic-find-file-regexp', unless
- the file's name matches the regexp which is the value of the
- variable `generic-ignore-files-regexp'.
- 
- This hook will be installed if the variable
- `generic-use-find-file-hook' is non-nil.  The variable
- `generic-lines-to-scan' determines the number of lines to look at."
-   (when (and (eq major-mode 'fundamental-mode)
-            (or (null generic-ignore-files-regexp)
-                (not (string-match
-                      generic-ignore-files-regexp
-                      (file-name-sans-versions buffer-file-name)))))
-     (save-excursion
-       (goto-char (point-min))
-       (when (re-search-forward generic-find-file-regexp
-                              (save-excursion
-                                (forward-line generic-lines-to-scan)
-                                (point)) t)
-       (goto-char (point-min))
-       (default-generic-mode)))))
- 
- (defun generic-mode-ini-file-find-file-hook ()
-   "Hook function to enter Default-Generic mode automatically for INI files.
- Done if the first few lines of a file in Fundamental mode look like an
- INI file.  This hook is NOT installed by default."
-   (and (eq major-mode 'fundamental-mode)
-        (save-excursion
-        (goto-char (point-min))
-        (and (looking-at "^\\s-*\\[.*\\]")
-             (ini-generic-mode)))))
- 
- (and generic-use-find-file-hook
-     (add-hook 'find-file-hook 'generic-mode-find-file-hook))
- 
  ;;;###autoload
  (defun generic-make-keywords-list (keywords-list face &optional prefix suffix)
    "Return a regular expression matching the specified KEYWORDS-LIST.
--- 323,328 ----




reply via email to

[Prev in Thread] Current Thread [Next in Thread]