From: Lute Kamstra <Lute.Kamstra.lists@xs4all.nl>
Subject: Re: Splitting and moving generic.el.
Date: Tue, 05 Apr 2005 20:58:14 +0200 [thread overview]
Message-ID: <87psx9capl.fsf@xs4all.nl> (raw)
In-Reply-To: <878y45sdxi.fsf@xs4all.nl> (Lute Kamstra's message of "Wed, 30 Mar 2005 11:03:53 +0200")
Lute Kamstra <Lute.Kamstra.lists@xs4all.nl> writes:
> generic.el currently contains two facilities:
>
> 1. Defining major modes by means of define-generic-mode.
>
> 2. The definition of default-generic-mode and some setup code to use
> it automatically for some files.
>
> I think 2. is a strange side-effect when you are using generic.el to
> do 1. So I propose to move 2. to generic-x.el, where it is more
> appropriate.
The patch below implements this. Ok to commit?
> And what about moving generic.el from lisp/ to lisp/emacs-lisp/? That
> seems the appropriate location.
Can I do this as well?
Lute.
2005-04-05 Lute Kamstra <lute@gnu.org>
* generic.el: Commentary section cleanup.
(generic): Delete.
(generic-use-find-file-hook, generic-lines-to-scan)
(generic-find-file-regexp, generic-ignore-files-regexp)
(default-generic-mode, generic-mode-find-file-hook)
(generic-mode-ini-file-find-file-hook): Move to generic-x.el.
* generic-x.el (generic-x): Docstring fix. Put it in the data group.
(generic-use-find-file-hook, generic-lines-to-scan)
(generic-find-file-regexp, generic-ignore-files-regexp)
(default-generic-mode, generic-mode-find-file-hook)
(generic-mode-ini-file-find-file-hook): Moved from generic.el.
Index: lisp/generic.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/generic.el,v
retrieving revision 1.36
diff -u -r1.36 generic.el
--- lisp/generic.el 5 Apr 2005 18:32:59 -0000 1.36
+++ lisp/generic.el 5 Apr 2005 18:42:38 -0000
@@ -23,16 +23,11 @@
;; 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
+;;
+;; 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,20 +63,9 @@
;; 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:
+;; EXAMPLE:
;;
-;; 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:
+;; You can use `define-generic-mode' like this:
;;
;; (define-generic-mode 'foo-generic-mode
;; (list ?%)
@@ -90,35 +74,24 @@
;; (list "\\.FOO\\'")
;; (list 'foo-setup-function))
;;
-;; defines a new generic-mode `foo-generic-mode', which has '%' as a
+;; 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.
;;
-;; 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:
;; ACorreir@pervasive-sw.com (Alfred Correira)
;; Extensive cleanup by:
;; Stefan Monnier (monnier+gnu/emacs@flint.cs.yale.edu)
-;;
+
;;; Code:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -138,47 +111,6 @@
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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -391,51 +323,6 @@
'((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.
Index: lisp/generic-x.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/generic-x.el,v
retrieving revision 1.29
diff -u -r1.29 generic-x.el
--- lisp/generic-x.el 5 Apr 2005 18:33:50 -0000 1.29
+++ lisp/generic-x.el 5 Apr 2005 18:42:40 -0000
@@ -41,6 +41,16 @@
;; 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,11 +105,96 @@
(require 'font-lock)
(defgroup generic-x nil
- "Extra modes for generic mode."
+ "A collection of generic modes."
:prefix "generic-"
- :group '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,10 +245,6 @@
etc-fstab-generic-mode)
generic-extras-enable-list)))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Generic-modes
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
;;; Apache
(when (memq 'apache-conf-generic-mode generic-extras-enable-list)
next prev parent reply other threads:[~2005-04-05 18:58 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-30 9:03 Splitting and moving generic.el Lute Kamstra
2005-04-05 18:58 ` Lute Kamstra [this message]
-- strict thread matches above, loose matches on Subject: below --
2005-04-20 9:05 Jason Rumney
2005-04-20 10:50 ` Lute Kamstra
2005-04-20 11:36 ` Jason Rumney
2005-04-20 12:09 ` Lute Kamstra
2005-04-20 12:31 ` Jason Rumney
2005-04-20 13:27 ` Lute Kamstra
2005-04-20 17:11 ` Eli Zaretskii
2005-04-20 17:08 ` Eli Zaretskii
2005-04-20 20:58 ` Jason Rumney
2005-04-21 3:27 ` Eli Zaretskii
2005-04-20 17:05 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87psx9capl.fsf@xs4all.nl \
--to=lute.kamstra.lists@xs4all.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.