2014-12-23 19:11:45 +00:00
|
|
|
|
This file contains information on Emacs developer processes.
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
2014-12-23 19:11:45 +00:00
|
|
|
|
For information on contributing to Emacs as a non-developer, see
|
|
|
|
|
(info "(emacs)Contributing") or
|
|
|
|
|
http://www.gnu.org/software/emacs/manual/html_node/emacs/Contributing.html
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
2014-12-23 19:11:45 +00:00
|
|
|
|
* Information for Emacs Developers.
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
2014-12-06 08:11:36 +00:00
|
|
|
|
An "Emacs Developer" is someone who contributes a lot of code or
|
2015-04-22 11:25:34 +00:00
|
|
|
|
documentation to the Emacs repository. Generally, they have write
|
2014-12-23 23:38:57 +00:00
|
|
|
|
access to the Emacs git repository on Savannah
|
|
|
|
|
https://savannah.gnu.org/git/?group=emacs.
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
2014-12-06 08:11:36 +00:00
|
|
|
|
** Write access to the Emacs repository.
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
2014-12-06 08:11:36 +00:00
|
|
|
|
Once you become a frequent contributor to Emacs, we can consider
|
2015-04-22 11:25:34 +00:00
|
|
|
|
giving you write access to the version-control repository. Request
|
|
|
|
|
access on the emacs-devel@gnu.org mailing list. Also, be sure to
|
|
|
|
|
subscribe to the emacs-devel@gnu.org mailing list and include the
|
|
|
|
|
"emacs-announce" topic, so that you get the announcements about
|
|
|
|
|
feature freeze and other important events.
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
2014-12-06 08:11:36 +00:00
|
|
|
|
** Using the Emacs repository
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
2015-04-22 11:25:34 +00:00
|
|
|
|
Emacs uses Git for the source code repository.
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
2014-12-06 08:11:36 +00:00
|
|
|
|
See http://www.emacswiki.org/emacs/GitQuickStartForEmacsDevs to get
|
|
|
|
|
started, and http://www.emacswiki.org/emacs/GitForEmacsDevs for more
|
|
|
|
|
advanced information.
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
2014-12-06 08:11:36 +00:00
|
|
|
|
Alternately, see admin/notes/git-workflow.
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
2015-04-14 23:21:55 +00:00
|
|
|
|
If committing changes written by someone else, make the commit in
|
2015-04-22 11:25:34 +00:00
|
|
|
|
their name, not yours. Git distinguishes between the author
|
2014-12-06 08:11:36 +00:00
|
|
|
|
and the committer; use the --author option on the commit command to
|
|
|
|
|
specify the actual author; the committer defaults to you.
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
2015-04-07 07:00:55 +00:00
|
|
|
|
** Commit messages
|
2014-12-23 19:11:45 +00:00
|
|
|
|
|
2015-04-22 11:25:34 +00:00
|
|
|
|
Emacs development no longer stores descriptions of new changes in
|
|
|
|
|
ChangeLog files. Instead, a single ChangeLog file is generated from
|
|
|
|
|
the commit messages when a release is prepared. So changes you commit
|
|
|
|
|
should not touch any of the ChangeLog files in the repository, but
|
|
|
|
|
instead should contain the log entries in the commit message. Here is
|
|
|
|
|
an example of a commit message (indented):
|
2015-04-07 07:00:55 +00:00
|
|
|
|
|
|
|
|
|
Deactivate shifted region
|
|
|
|
|
|
|
|
|
|
Do not silently extend a region that is not highlighted;
|
2015-04-19 02:08:53 +00:00
|
|
|
|
this can happen after a shift (Bug#19003).
|
2015-04-07 07:00:55 +00:00
|
|
|
|
* doc/emacs/mark.texi (Shift Selection): Document the change.
|
|
|
|
|
* lisp/window.el (handle-select-window):
|
|
|
|
|
* src/frame.c (Fhandle_switch_frame, Fselected_frame):
|
|
|
|
|
Deactivate the mark.
|
|
|
|
|
|
2015-04-22 11:25:34 +00:00
|
|
|
|
Below are some rules and recommendations for formatting commit
|
|
|
|
|
messages:
|
2014-12-23 19:11:45 +00:00
|
|
|
|
|
2015-04-22 11:25:34 +00:00
|
|
|
|
- Start with a single unindented summary line explaining the change;
|
|
|
|
|
do not end this line with a period. If that line starts with a
|
|
|
|
|
semi-colon and a space "; ", the log message will be ignored when
|
|
|
|
|
generating the ChangeLog file. Use this for minor commits that do
|
|
|
|
|
not need separate ChangeLog entries, such as changes in etc/NEWS.
|
|
|
|
|
|
|
|
|
|
- After the summary line, there should be an empty line, then
|
|
|
|
|
unindented ChangeLog entries.
|
2014-12-23 19:11:45 +00:00
|
|
|
|
|
2015-03-29 20:03:55 +00:00
|
|
|
|
- Limit lines in commit messages to 78 characters, unless they consist
|
2015-04-07 07:00:55 +00:00
|
|
|
|
of a single word of at most 140 characters; this is enforced by a
|
|
|
|
|
commit hook. It's nicer to limit the summary line to 50 characters;
|
|
|
|
|
this isn't enforced. If the change can't be summarized so briefly,
|
|
|
|
|
add a paragraph after the empty line and before the individual file
|
|
|
|
|
descriptions.
|
2014-12-23 19:11:45 +00:00
|
|
|
|
|
|
|
|
|
- If only a single file is changed, the summary line can be the normal
|
|
|
|
|
file first line (starting with the asterisk). Then there is no
|
|
|
|
|
individual files section.
|
|
|
|
|
|
2015-04-24 14:47:23 +00:00
|
|
|
|
- If the commit has more than one author, the commit message should
|
2015-04-24 15:00:02 +00:00
|
|
|
|
contain separate lines to mention the other authors, like the
|
2015-04-24 14:47:23 +00:00
|
|
|
|
following:
|
2015-04-22 11:25:34 +00:00
|
|
|
|
|
|
|
|
|
Co-authored-by: Joe Schmoe <j.schmoe@example.org>
|
|
|
|
|
|
|
|
|
|
- If the commit is a tiny change that is exempt from copyright paperwork,
|
|
|
|
|
the commit message should contain a separate line like the following:
|
|
|
|
|
|
|
|
|
|
Copyright-paperwork-exempt: yes
|
|
|
|
|
|
|
|
|
|
- The commit message should contain "Bug#NNNNN" if it is related to
|
|
|
|
|
bug number NNNNN in the debbugs database. This string is often
|
|
|
|
|
parenthesized, as in "(Bug#19003)".
|
2014-12-23 19:11:45 +00:00
|
|
|
|
|
2015-03-29 20:03:55 +00:00
|
|
|
|
- Commit messages should contain only printable UTF-8 characters.
|
|
|
|
|
|
2015-03-29 20:59:50 +00:00
|
|
|
|
- Commit messages should not contain the "Signed-off-by:" lines that
|
2015-03-29 20:03:55 +00:00
|
|
|
|
are used in some other projects.
|
|
|
|
|
|
2015-05-19 01:43:01 +00:00
|
|
|
|
- Any lines of the commit message that start with "; " are omitted
|
2015-05-19 01:41:03 +00:00
|
|
|
|
from the generated ChangeLog.
|
|
|
|
|
|
2015-04-22 11:25:34 +00:00
|
|
|
|
- Explaining the rationale for a design choice is best done in comments
|
|
|
|
|
in the source code. However, sometimes it is useful to describe just
|
|
|
|
|
the rationale for a change; that can be done in the commit message
|
|
|
|
|
between the summary line and the file entries.
|
|
|
|
|
|
2014-12-06 08:11:36 +00:00
|
|
|
|
- Emacs generally follows the GNU coding standards when it comes to
|
|
|
|
|
ChangeLogs:
|
2015-04-22 11:25:34 +00:00
|
|
|
|
http://www.gnu.org/prep/standards/html_node/Change-Logs.html or
|
|
|
|
|
"(info (standards)Change Logs"). One exception is that we still
|
|
|
|
|
sometimes quote `like-this' (as the standards used to recommend)
|
|
|
|
|
rather than 'like-this' (as they do now), because `...' is so widely
|
|
|
|
|
used elsewhere in Emacs.
|
2014-12-06 08:11:36 +00:00
|
|
|
|
|
2014-12-23 19:11:45 +00:00
|
|
|
|
- Some of the rules in the GNU coding standards section 5.2
|
2014-12-29 10:20:50 +00:00
|
|
|
|
"Commenting Your Work" also apply to ChangeLog entries: they must be
|
2014-12-23 19:11:45 +00:00
|
|
|
|
in English, and be complete sentences starting with a capital and
|
|
|
|
|
ending with a period (except the summary line should not end in a
|
|
|
|
|
period).
|
|
|
|
|
|
2015-04-14 23:15:07 +00:00
|
|
|
|
They are preserved indefinitely, and have a reasonable chance of
|
|
|
|
|
being read in the future, so it's better that they have good
|
|
|
|
|
presentation.
|
2014-12-23 19:11:45 +00:00
|
|
|
|
|
|
|
|
|
- Use the present tense; describe "what the change does", not "what
|
|
|
|
|
the change did".
|
|
|
|
|
|
2014-12-06 08:28:38 +00:00
|
|
|
|
- Preferred form for several entries with the same content:
|
|
|
|
|
|
2015-04-07 07:00:55 +00:00
|
|
|
|
* lisp/help.el (view-lossage):
|
|
|
|
|
* lisp/kmacro.el (kmacro-edit-lossage):
|
|
|
|
|
* lisp/edmacro.el (edit-kbd-macro): Fix docstring, lossage is now 300.
|
2014-12-06 08:28:38 +00:00
|
|
|
|
|
|
|
|
|
(Rather than anything involving "ditto" and suchlike.)
|
|
|
|
|
|
2015-04-22 11:25:34 +00:00
|
|
|
|
- There is no standard or recommended way to identify revisions in
|
|
|
|
|
ChangeLog entries. Using Git SHA1 values limits the usability of
|
|
|
|
|
the references to Git, and will become much less useful if Emacs
|
|
|
|
|
switches to a different VCS. So we recommend against that.
|
2014-12-06 08:11:36 +00:00
|
|
|
|
|
|
|
|
|
One way to identify revisions is by quoting their summary line.
|
|
|
|
|
Another is with an action stamp - an RFC3339 date followed by !
|
|
|
|
|
followed by the committer's email - for example,
|
2015-04-22 11:25:34 +00:00
|
|
|
|
"2014-01-16T05:43:35Z!esr@thyrsus.com". Often, "my previous commit"
|
2014-12-06 08:11:36 +00:00
|
|
|
|
will suffice.
|
|
|
|
|
|
2015-11-15 01:35:50 +00:00
|
|
|
|
- There is no need to mention files such as NEWS and MAINTAINERS, or
|
|
|
|
|
to indicate regeneration of files such as 'configure', in the
|
|
|
|
|
ChangeLog entry. "There is no need" means you don't have to, but
|
|
|
|
|
you can if you want to.
|
2014-12-06 08:11:36 +00:00
|
|
|
|
|
2015-04-07 07:00:55 +00:00
|
|
|
|
** Generating ChangeLog entries
|
|
|
|
|
|
|
|
|
|
- You can use various Emacs functions to ease the process of writing
|
|
|
|
|
ChangeLog entries; see (info "(emacs)Change Log Commands") or
|
|
|
|
|
http://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html.
|
|
|
|
|
|
|
|
|
|
- If you use Emacs VC, one way to format ChangeLog entries is to create
|
2015-04-09 00:30:42 +00:00
|
|
|
|
a top-level ChangeLog file manually, and update it with 'C-x 4 a' as
|
2015-04-07 07:00:55 +00:00
|
|
|
|
usual. Do not register the ChangeLog file under git; instead, use
|
|
|
|
|
'C-c C-a' to insert its contents into into your *vc-log* buffer.
|
2015-04-19 21:40:51 +00:00
|
|
|
|
Or if 'log-edit-hook' includes 'log-edit-insert-changelog' (which it
|
2015-04-09 00:36:30 +00:00
|
|
|
|
does by default), they will be filled in for you automatically.
|
2015-04-07 07:00:55 +00:00
|
|
|
|
|
|
|
|
|
- Alternatively, you can use the vc-dwim command to maintain commit
|
|
|
|
|
messages. When you create a source directory, run the shell command
|
|
|
|
|
'git-changelog-symlink-init' to create a symbolic link from
|
|
|
|
|
ChangeLog to .git/c/ChangeLog. Edit this ChangeLog via its symlink
|
|
|
|
|
with Emacs commands like 'C-x 4 a', and commit the change using the
|
|
|
|
|
shell command 'vc-dwim --commit'. Type 'vc-dwim --help' for more.
|
|
|
|
|
|
2015-04-22 11:25:34 +00:00
|
|
|
|
** Branches
|
2014-12-06 08:11:36 +00:00
|
|
|
|
|
|
|
|
|
Development normally takes places on the trunk.
|
|
|
|
|
Sometimes specialized features are developed on separate branches
|
|
|
|
|
before possibly being merged to the trunk.
|
|
|
|
|
|
|
|
|
|
Development is discussed on the emacs-devel mailing list.
|
|
|
|
|
|
2014-12-06 08:28:38 +00:00
|
|
|
|
The trunk branch is named "master" in git; release branches are named
|
|
|
|
|
"emacs-nn" where "nn" is the major version.
|
2014-12-06 08:11:36 +00:00
|
|
|
|
|
|
|
|
|
If you are fixing a bug that exists in the current release, be sure to
|
|
|
|
|
commit it to the release branch; it will be merged to the master
|
|
|
|
|
branch later.
|
|
|
|
|
|
2014-12-06 08:28:38 +00:00
|
|
|
|
However, if you know that the change will be difficult to merge to the
|
|
|
|
|
trunk (eg because the trunk code has changed a lot), you can apply the
|
2015-11-14 11:52:34 +00:00
|
|
|
|
change to both trunk and branch yourself. It could also happen that a
|
|
|
|
|
change is cherry-picked from master to the release branch, and so
|
|
|
|
|
doesn't need to be merged back. In these cases, indicate in the
|
|
|
|
|
release branch commit log that there is no need to merge the commit to
|
|
|
|
|
the trunk; start the commit message with "Backport:". gitmerge.el
|
|
|
|
|
will then exclude that commit from the merge to trunk.
|
2014-12-06 08:11:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
** Other process information
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
|
|
|
|
** Emacs Mailing lists.
|
|
|
|
|
|
|
|
|
|
Discussion about Emacs development takes place on emacs-devel@gnu.org.
|
|
|
|
|
|
2011-04-17 02:30:56 +00:00
|
|
|
|
Bug reports and fixes, feature requests and implementations should be
|
|
|
|
|
sent to bug-gnu-emacs@gnu.org, the bug/feature list. This is coupled
|
|
|
|
|
to the tracker at http://debbugs.gnu.org .
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
2011-04-17 02:30:56 +00:00
|
|
|
|
You can subscribe to the mailing lists, or see the list archives,
|
|
|
|
|
by following links from http://savannah.gnu.org/mail/?group=emacs .
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
2015-04-07 07:00:55 +00:00
|
|
|
|
To email a patch you can use a shell command like 'git format-patch -1'
|
|
|
|
|
to create a file, and then attach the file to your email. This nicely
|
2015-09-11 15:34:46 +00:00
|
|
|
|
packages the patch's commit message and changes. To send just one
|
|
|
|
|
such patch without additional remarks, you can use a command like
|
|
|
|
|
'git send-email --to=bug-gnu-emacs@gnu.org 0001-DESCRIPTION.patch'.
|
2015-04-07 07:00:55 +00:00
|
|
|
|
|
2015-11-06 08:56:59 +00:00
|
|
|
|
** Issue tracker (a.k.a. "bug tracker")
|
|
|
|
|
|
|
|
|
|
The Emacs issue tracker is at http://debbugs.gnu.org/. The form
|
|
|
|
|
presented by that page allows to view bug reports and search the
|
|
|
|
|
database for bugs matching several criteria. Messages posted to the
|
|
|
|
|
bug-gnu-emacs@gnu.org mailing list, mentioned above, are recorded by
|
|
|
|
|
the tracker with the corresponding bugs/issues.
|
|
|
|
|
|
|
|
|
|
GNU ELPA has a 'debbugs' package that allows accessing the tracker
|
|
|
|
|
database from Emacs.
|
|
|
|
|
|
2016-01-01 20:07:53 +00:00
|
|
|
|
Bugs needs regular attention. A large backlog of bugs is
|
|
|
|
|
disheartening to the developers, and a culture of ignoring bugs is
|
|
|
|
|
harmful to users, who expect software that works. Bugs have to be
|
|
|
|
|
regularly looked at and acted upon. Not all bugs are critical, but at
|
|
|
|
|
the least, each bug needs to be regularly re-reviewed to make sure it
|
|
|
|
|
is still reproducible.
|
|
|
|
|
|
|
|
|
|
The process of going through old or new bugs and acting on them is
|
|
|
|
|
called bug triage. This process is described in the file
|
2016-01-09 04:04:59 +00:00
|
|
|
|
admin/notes/bug-triage.
|
2016-01-01 20:07:53 +00:00
|
|
|
|
|
2007-09-09 11:48:59 +00:00
|
|
|
|
** Document your changes.
|
|
|
|
|
|
2014-12-06 08:11:36 +00:00
|
|
|
|
Any change that matters to end-users should have an entry in etc/NEWS.
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
2014-12-31 14:14:33 +00:00
|
|
|
|
Doc-strings should be updated together with the code.
|
|
|
|
|
|
|
|
|
|
Think about whether your change requires updating the manuals. If you
|
|
|
|
|
know it does not, mark the NEWS entry with "---". If you know
|
|
|
|
|
that *all* the necessary documentation updates have been made, mark
|
2015-04-22 11:25:34 +00:00
|
|
|
|
the entry with "+++". Otherwise do not mark it.
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
2015-03-21 10:09:30 +00:00
|
|
|
|
Please see (info "(elisp)Documentation Tips") or
|
|
|
|
|
https://www.gnu.org/software/emacs/manual/html_node/elisp/Documentation-Tips.html
|
2015-04-19 21:40:51 +00:00
|
|
|
|
for more specific tips on Emacs's doc style. Use 'checkdoc' to check
|
2015-03-21 10:09:30 +00:00
|
|
|
|
for documentation errors before submitting a patch.
|
|
|
|
|
|
|
|
|
|
** Test your changes.
|
|
|
|
|
|
|
|
|
|
Please test your changes before committing them or sending them to the
|
2015-11-10 21:28:40 +00:00
|
|
|
|
list. If possible, add a new test along with any bug fix or new
|
|
|
|
|
functionality you commit (of course, some changes cannot be easily
|
|
|
|
|
tested).
|
2015-03-21 10:09:30 +00:00
|
|
|
|
|
|
|
|
|
Emacs uses ERT, Emacs Lisp Regression Testing, for testing. See (info
|
|
|
|
|
"(ert)") or https://www.gnu.org/software/emacs/manual/html_node/ert/
|
|
|
|
|
for more information on writing and running tests.
|
|
|
|
|
|
2016-01-05 08:47:41 +00:00
|
|
|
|
If your test lasts longer than some few seconds, mark it in its
|
|
|
|
|
`ert-deftest' definition with ":tags '(:expensive-test)".
|
|
|
|
|
|
2015-03-21 10:09:30 +00:00
|
|
|
|
To run tests on the entire Emacs tree, run "make check" from the
|
|
|
|
|
top-level directory. Most tests are in the directory
|
2015-11-23 22:02:42 +00:00
|
|
|
|
"test/". From the "test/" directory, run "make
|
2015-03-21 10:09:30 +00:00
|
|
|
|
<filename>" to run the tests for <filename>.el(c). See
|
2015-11-23 22:02:42 +00:00
|
|
|
|
"test/Makefile" for more information.
|
2015-03-21 10:09:30 +00:00
|
|
|
|
|
2016-01-05 08:47:41 +00:00
|
|
|
|
Tests which are tagged ":expensive-test" are enabled additionally, if
|
|
|
|
|
you run "make check-expensive" from the top-level directory. "make
|
|
|
|
|
<filename>" as mentioned above incorporates expensive tests for
|
|
|
|
|
<filename>.el(c).
|
|
|
|
|
|
2007-09-09 11:48:59 +00:00
|
|
|
|
** Understanding Emacs Internals.
|
|
|
|
|
|
|
|
|
|
The best way to understand Emacs Internals is to read the code,
|
|
|
|
|
but the nodes "Tips" and "GNU Emacs Internals" in the Appendix
|
2015-04-22 11:25:34 +00:00
|
|
|
|
of the Emacs Lisp Reference Manual may also help. Some source files,
|
|
|
|
|
such as xdisp.c, have large commentaries describing the design and
|
|
|
|
|
implementation in more detail.
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
|
|
|
|
The file etc/DEBUG describes how to debug Emacs bugs.
|
|
|
|
|
|
2015-11-06 08:56:59 +00:00
|
|
|
|
*** Non-ASCII characters in Emacs files
|
|
|
|
|
|
|
|
|
|
If you introduce non-ASCII characters into Emacs source files, it is a
|
|
|
|
|
good idea to add a 'coding' cookie to the file to state its encoding.
|
|
|
|
|
Please use the UTF-8 encoding unless it cannot do the job for some
|
|
|
|
|
good reason. As of Emacs 24.4, it is no longer necessary to have
|
|
|
|
|
explicit 'coding' cookies in *.el files if they are encoded in UTF-8,
|
|
|
|
|
but other files need them even if encoded in UTF-8. However, if
|
|
|
|
|
an *.el file is intended for use with older Emacs versions (e.g. if
|
|
|
|
|
it's also distributed via ELPA), having an explicit encoding
|
|
|
|
|
specification is still a good idea.
|
|
|
|
|
|
|
|
|
|
*** Useful files in the admin/ directory
|
|
|
|
|
|
|
|
|
|
See all the files in admin/notes/* . In particular, see
|
|
|
|
|
admin/notes/newfile, see admin/notes/repo.
|
|
|
|
|
|
|
|
|
|
The file admin/MAINTAINERS records the areas of interest of frequent
|
|
|
|
|
Emacs contributors. If you are making changes in one of the files
|
|
|
|
|
mentioned there, it is a good idea to consult the person who expressed
|
|
|
|
|
an interest in that file, and/or get his/her feedback for the changes.
|
|
|
|
|
If you are a frequent contributor and have interest in maintaining
|
|
|
|
|
specific files, please record those interests in that file, so that
|
|
|
|
|
others could be aware of that.
|
|
|
|
|
|
|
|
|
|
*** git vs rename
|
|
|
|
|
|
|
|
|
|
Git does not explicitly represent a file renaming; it uses a percent
|
|
|
|
|
changed heuristic to deduce that a file was renamed. So if you are
|
|
|
|
|
planning to make extensive changes to a file after renaming it (or
|
|
|
|
|
moving it to another directory), you should:
|
|
|
|
|
|
|
|
|
|
- create a feature branch
|
|
|
|
|
|
|
|
|
|
- commit the rename without any changes
|
|
|
|
|
|
|
|
|
|
- make other changes
|
|
|
|
|
|
|
|
|
|
- merge the feature branch to trunk, _not_ squashing the commits into
|
|
|
|
|
one. The commit message on this merge should summarize the renames
|
|
|
|
|
and all the changes.
|
|
|
|
|
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This file is part of GNU Emacs.
|
|
|
|
|
|
2008-05-15 07:32:14 +00:00
|
|
|
|
GNU Emacs is free software: you can redistribute it and/or modify
|
2007-09-09 11:48:59 +00:00
|
|
|
|
it under the terms of the GNU General Public License as published by
|
2008-05-15 07:32:14 +00:00
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
(at your option) any later version.
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
|
|
|
|
GNU Emacs is distributed in the hope that it will be useful,
|
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
2008-05-15 07:32:14 +00:00
|
|
|
|
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
2007-09-09 11:48:59 +00:00
|
|
|
|
|
|
|
|
|
Local variables:
|
|
|
|
|
mode: outline
|
|
|
|
|
paragraph-separate: "[ ]*$"
|
|
|
|
|
end:
|