[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/generic-x.el
From: |
Lute Kamstra |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/generic-x.el |
Date: |
Mon, 11 Apr 2005 04:08:02 -0400 |
Index: emacs/lisp/generic-x.el
diff -c emacs/lisp/generic-x.el:1.30 emacs/lisp/generic-x.el:1.31
*** emacs/lisp/generic-x.el:1.30 Fri Apr 8 14:26:13 2005
--- emacs/lisp/generic-x.el Mon Apr 11 08:08:02 2005
***************
*** 41,46 ****
--- 41,56 ----
;; You can also send in new modes; if the file types a reasonably common,
;; we would like to install them.
;;
+ ;; DEFAULT GENERIC MODE:
+ ;;
+ ;; This file 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-x. See the variables
+ ;; `generic-lines-to-scan' and `generic-find-file-regexp' for
+ ;; customization options.
+ ;;
;; PROBLEMS WHEN USED WITH FOLDING MODE:
;;
;; [The following relates to the obsolete selective-display technique.
***************
*** 95,105 ****
(require 'font-lock)
(defgroup generic-x nil
! "Extra modes for generic mode."
:prefix "generic-"
! :group 'generic
:version "20.3")
(defcustom generic-extras-enable-list nil
"*List of generic modes to enable by default.
Each entry in the list should be a symbol. The variables
--- 105,200 ----
(require 'font-lock)
(defgroup generic-x nil
! "A collection of generic modes."
:prefix "generic-"
! :group 'data
:version "20.3")
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;; Default-Generic mode
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+ (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-x
+ :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-x
+ :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-x
+ :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-x
+ :type '(choice (const :tag "Don't check file names" nil) regexp))
+
+ ;; 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))
+
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;; Other Generic modes
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
(defcustom generic-extras-enable-list nil
"*List of generic modes to enable by default.
Each entry in the list should be a symbol. The variables
***************
*** 150,159 ****
etc-fstab-generic-mode)
generic-extras-enable-list)))
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; Generic-modes
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
;;; Apache
(when (memq 'apache-conf-generic-mode generic-extras-enable-list)
--- 245,250 ----
- [Emacs-diffs] Changes to emacs/lisp/generic-x.el, Lute Kamstra, 2005/04/04
- [Emacs-diffs] Changes to emacs/lisp/generic-x.el, Lute Kamstra, 2005/04/05
- [Emacs-diffs] Changes to emacs/lisp/generic-x.el, Dan Nicolaescu, 2005/04/08
- [Emacs-diffs] Changes to emacs/lisp/generic-x.el,
Lute Kamstra <=
- [Emacs-diffs] Changes to emacs/lisp/generic-x.el, Lute Kamstra, 2005/04/11
- [Emacs-diffs] Changes to emacs/lisp/generic-x.el, Lute Kamstra, 2005/04/13
- [Emacs-diffs] Changes to emacs/lisp/generic-x.el, Lute Kamstra, 2005/04/29