Mercurial > emacs
view CONTRIBUTE @ 72873:b42e98d06749
* allout.el (allout-regexp, allout-line-boundary-regexp)
(allout-bob-regexp): Correct grouping and boundaries to fix
backwards traversal.
(allout-depth-specific-regexp, allout-depth-one-regexp): New
versions that exploit \\{M\\} regexp syntax, to avoid geometric or
worse time in allout-ascend.
(allout-doublecheck-at-and-shallower): Identify depth threshold
below which topics are checked for and disqualified by containment
discontinuities.
(allout-hotspot-key-handler): Correctly handle multiple-key
strokes. Remove some unused variables.
(allout-mode-leaders): Clarify that mode-specific comment-start
will be used
(set-allout-regexp): Correctly regexp-quote allout regexps to
properly accept alternative header-leads and primary bullets with
regexp-specific characters (eg, C "/*", mathematica "(*").
Include new regular expressions among those configured.
(allout-infer-header-lead-and-primary-bullet): Rename
allout-infer-header-lead.
(allout-recent-depth): Manifest as a variable as well as a function.
(allout-prefix-data): Simplify into an inline instead of a macro,
assuming current match data rather than being explicitly passed it.
Establish allout-recent-depth value as well as
allout-recent-prefix-beginning and allout-recent-prefix-end.
(allout-aberrant-container-p): True when an item's immediate
offspring discontinuously contained. Useful for disqualifying
unintended topic prefixes, likely at low depths.
(allout-goto-prefix-doublechecked): Elaborated version of
allout-goto-prefix which disqualifies aberrant pseudo-items.
(allout-end-of-prefix, allout-pre-next-prefix)
(allout-end-of-subtree): Disqualify aberrant containers.
(allout-beginning-of-current-entry): Position at start of buffer
when in container (depth 0) entry.
(nullify-allout-prefix-data): Invalidate allout-recent-* prefix data.
(allout-current-bullet): Strip text properties.
(allout-get-prefix-bullet): Use right match groups.
(allout-beginning-of-line, allout-next-heading): Disqualify
aberrant containers.
(allout-previous-heading): Disqualify aberrant containers.
(allout-get-invisibility-overlay): Increment so progress is made
when the first overlay is not the sought one.
(allout-end-of-prefix): Disqualify aberrant containers.
(allout-end-of-line): Cycle something like allout-beginning-of-line.
(allout-mode): Make allout-old-style-prefixes (ie, enabling use with
outline.el outlines) functional again. Change the primary bullet
along with the header-lead - level 1 new-style bullets now work.
Engage allout-before-change-handler in mainline emacs, not just
xemacs, to do undo handling.
(allout-before-change-handler): Expose undo changes occurring in
hidden regions. Use allout-get-invisibility-overlay instead of
reimplementing it inline.
(allout-chart-subtree): Use start rather than end of prefix in
charts. Use allout-recent-depth variable.
(allout-chart-siblings): Disqualify aberrant topics.
(allout-beginning-of-current-entry): Position correctly.
(allout-ascend): Use new allout-depth-specific-regexp and
allout-depth-one-regexp for linear instead of O(N^2) or worse behavior.
(allout-ascend-to-depth, allout-up-current-level): Depend on
allout-ascend, rather than reimplementing an algorithm.
(allout-descend-to-depth): Use allout-recent-depth var instead of fun.
(allout-next-sibling): On traversal of numerous intervening
topics, resort to economical allout-next-sibling-leap.
(allout-next-sibling-leap): Specialized version of
allout-next-sibling that uses allout-ascend cleverly, to depend on
a regexp search to leap large numbers of contained topics, rather
than arbitrarily many one-by-one traversals.
(allout-next-visible-heading): Disqualify aberrant topics.
(allout-previous-visible-heading): Position consistently when interactive.
(allout-forward-current-level): Base on allout-previous-sibling
rather than reimplmenting the algorithm. Remove unused vars.
(allout-solicit-alternate-bullet): Present default choice stripped
of text properties.
(allout-rebullet-heading): Use bullet stripped of text properties.
Register changes using allout-exposure-change-hook. Disregard
aberrant topics.
(allout-shift-in): With universal-argument, make topic a peer of
it's former offspring. Simplify the code by separating out
allout-shift-out functionality.
(allout-shift-out): With universal-argument, make offspring peers
of their former container, and its siblings. Implement the
functionality here, rather than inappropriately muddling the
implementation of allout-shift-in.
(allout-rebullet-topic): Respect additional argument for new
parent-child separation function.
(allout-yank-processing): Use allout-ascend directly.
(allout-show-entry): Disqualify aberrant topics.
(allout-show-children): Handle discontinuous children gracefully,
extending the depth being revealed to expose them and posting a
message indicating the situation.
(allout-show-to-offshoot): Remove obsolete and incorrect comment.
Leave cursor in correct position.
(allout-hide-current-subtree): Use allout-ascend directly.
Disqualify aberrant topics.
(allout-kill-line, allout-kill-topic): Preserve exposure layout in
a way that the yanks can restore it, as used to happen.
(allout-yank-processing): Restore exposure layout as recorded by
allout-kill-*, as used to happen.
(allout-annotate-hidden, allout-hide-by-annotation): New routines
for preseving and restoring exposure layout across kills.
(allout-toggle-subtree-encryption): Run allout-exposure-change-hook.
(allout-encrypt-string): Strip text properties.
Rearranged order and outline-headings for some of the
miscellaneous functions.
(allout-resolve-xref): No need to quote the error name in the
condition-case handler section.
(allout-flatten): Classic recursive (and recursively intensive,
without tail-recursion) list-flattener, needed by allout-shift-out
when confronted with discontinuous children.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Thu, 14 Sep 2006 17:52:07 +0000 |
parents | caa0a3ee1f41 |
children | 68cfc1db0d26 |
line wrap: on
line source
Contributing to Emacs Emacs is a collaborative project and we encourage contributions from anyone and everyone. If you want to contribute in the way that will help us most, we recommend (1) fixing reported bugs and (2) implementing the feature ideas in etc/TODO. However, if you think of new features to add, please suggest them too -- we might like your idea. Porting to new platforms is also useful, when there is a new platform, but that is not common nowadays. For documentation on how to develop Emacs changes, refer to the Emacs Manual and the Emacs Lisp Reference Manual (both included in the Emacs distribution). The web pages in http://www.gnu.org/software/emacs contain additional information. You may also want to submit your change so that can be considered for inclusion in a future version of Emacs (see below). If you don't feel up to hacking Emacs, there are many other ways to help. You can answer questions on the mailing lists, write documentation, find and report bugs, contribute to the Emacs web pages, or develop a package that works with Emacs. Here are some style and legal conventions for contributors to Emacs: * Coding Standards Contributed code should follow the GNU Coding Standard. If it doesn't, we'll need to find someone to fix the code before we can use it. Emacs has certain additional style and coding conventions. Ref: http://www.gnu.org/prep/standards_toc.html Ref: GNU Coding Standards Info Manual Ref: The "Tips" Appendix in the Emacs Lisp Reference. * Copyright Assignment We can accept small changes without legal papers, and for medium-size changes a copyright disclaimer is ok too. To accept substantial contributions from you, we need a copyright assignment form filled out and filed with the FSF. Contact us at emacs-devel@gnu.org to obtain the relevant forms. * Getting the Source Code The latest version of Emacs can be downloaded using CVS or Arch from the Savannah web site. It is important to write your patch based on this version; if you start from an older version, your patch may be outdated when you write it, and maintainers will have hard time applying it. After you have downloaded the CVS source, you should read the file INSTALL.CVS for build instructions (they differ to some extent from a normal build). Ref: http://savannah.gnu.org/projects/emacs * Submitting Patches Every patch must have several pieces of information before we can properly evaluate it. When you have all these pieces, bundle them up in a mail message and send it to emacs-pretest-bug@gnu.org or emacs-devel@gnu.org. All subsequent discussion should also be sent to the mailing list. ** Description For bug fixes, a description of the bug and how your patch fixes this bug. For new features, a description of the feature and your implementation. ** ChangeLog A ChangeLog entry as plaintext (separate from the patch). See the various ChangeLog files for format and content. Note that, unlike some other projects, we do require ChangeLogs also for documentation, i.e. Texinfo files. Ref: "Change Log Concepts" node of the GNU Coding Standards Info Manual, for how to write good log entries. ** The patch itself. Please use "Context Diff" format. If you are accessing the CVS repository use cvs update; cvs diff -cp else, use diff -cp OLD NEW If your version of diff does not support these options, then get the latest version of GNU Diff. ** Mail format. We prefer to get the patches as inline plain text. Please be aware of line wrapping which will make the patch unreadable and useless for us. To avoid that, you can use MIME attachments or, as a last resort, uuencoded gzipped text. ** Please reread your patch before submitting it. ** Do not mix changes. If you send several unrelated changes together, we will ask you to separate them so we can consider each of the changes by itself. * Coding style and conventions. ** Mandatory reading: The "Tips and Conventions" Appendix of the Emacs Lisp Reference. ** Avoid using `defadvice' or `eval-after-load' for Lisp code to be included in Emacs. ** Remove all trailing whitespace in all source and text files. ** Use ?\s instead of ? in Lisp code for a space character. * Supplemental information for Emacs Developers. ** Write access to Emacs' CVS repository. Once you become a frequent contributor to Emacs, we can consider giving you write access to the CVS repository. ** Emacs Mailing lists. Discussion about Emacs development takes place on emacs-devel@gnu.org. Bug reports for released versions are sent to bug-gnu-emacs@gnu.org. Bug reports for development versions are sent to emacs-pretest-bug@gnu.org. You can subscribe to the mailing lists at savannah.gnu.org/projects/emacs. You can find the mailing lists archives at lists.gnu.org or gmane.org. ** Document your changes. Think carefully about whether your change requires updating the documentation. If it does, you can either do this yourself or add an item to the NEWS file. If you document your change in NEWS, please mark the NEWS entry with the documentation status of the change: if you submit the changes for the manuals, mark it with "+++"; if it doesn't need to be documented, mark it with "---"; if it needs to be documented, but you didn't submit documentation changes, leave the NEWS entry unmarked. (These marks are checked by the Emacs maintainers to make sure every change was reflected in the manuals.) ** 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 of the Emacs Lisp Reference Manual may also help. The file etc/DEBUG describes how to debug Emacs bugs. * How to Maintain Copyright Years for GNU Emacs ** Our lawyer says it is ok if we add, to each file that has been in Emacs since Emacs 21 came out in 2001, all the subsequent years. We don't need to check whether *that file* was changed in those years. It's sufficient that *Emacs* was changed in those years (and it was!). ** For those files that have been added since then, we should add the year it was added to Emacs, and all subsequent years. ** For the refcards under etc/, it's ok to simply use the latest year (typically in a `\def\year{YEAR}' expression) for the rendered copyright notice, while maintaining the full list of years in the copyright notice in the comments. Local variables: mode: outline paragraph-separate: "[ ]*$" end: