Merge from emacs-24; up to 2014-06-15T04:52:34Z!eli@barzilay.org
This commit is contained in:
commit
2d3c9015c7
46 changed files with 373 additions and 130 deletions
|
@ -1,3 +1,9 @@
|
|||
2014-07-03 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* help.texi (Misc Help):
|
||||
* trouble.texi (Checklist): "Online" help doesn't mean what it
|
||||
used to any more.
|
||||
|
||||
2014-06-23 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* Makefile.in (%.texi): Disable implicit rules.
|
||||
|
|
|
@ -490,8 +490,7 @@ currently in use. @xref{Coding Systems}.
|
|||
@kindex C-h i
|
||||
@findex info
|
||||
@cindex Info
|
||||
@cindex manuals, on-line
|
||||
@cindex on-line manuals
|
||||
@cindex manuals, included
|
||||
@kbd{C-h i} (@code{info}) runs the Info program, which browses
|
||||
structured documentation files. The entire Emacs manual is available
|
||||
within Info, along with many other manuals for the GNU system. Type
|
||||
|
|
|
@ -847,7 +847,7 @@ conclusion from our observations.
|
|||
@item
|
||||
If the bug is that the Emacs Manual or the Emacs Lisp Reference Manual
|
||||
fails to describe the actual behavior of Emacs, or that the text is
|
||||
confusing, copy in the text from the online manual which you think is
|
||||
confusing, copy in the text from the manual which you think is
|
||||
at fault. If the section is small, just the section name is enough.
|
||||
|
||||
@item
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2014-07-03 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* emacs-lisp-intro.texi (Note for Novices, Finding More, Conclusion):
|
||||
"Online" help doesn't mean what it used to any more.
|
||||
|
||||
2014-06-23 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* Makefile.in (%.texi): Disable implicit rules.
|
||||
|
|
|
@ -903,7 +903,7 @@ file, @file{cl.el}, that adds many Common Lisp features to Emacs Lisp.)
|
|||
If you don't know GNU Emacs, you can still read this document
|
||||
profitably. However, I recommend you learn Emacs, if only to learn to
|
||||
move around your computer screen. You can teach yourself how to use
|
||||
Emacs with the on-line tutorial. To use it, type @kbd{C-h t}. (This
|
||||
Emacs with the built-in tutorial. To use it, type @kbd{C-h t}. (This
|
||||
means you press and release the @key{CTRL} key and the @kbd{h} at the
|
||||
same time, and then press and release @kbd{t}.)
|
||||
|
||||
|
@ -4657,7 +4657,7 @@ specialized library, such as a law library or an engineering library,
|
|||
rather than a general library. Each library, or file, contains
|
||||
functions that relate to a particular topic or activity, such as
|
||||
@file{abbrev.el} for handling abbreviations and other typing
|
||||
shortcuts, and @file{help.el} for on-line help. (Sometimes several
|
||||
shortcuts, and @file{help.el} for help. (Sometimes several
|
||||
libraries provide code for a single activity, as the various
|
||||
@file{rmail@dots{}} files provide code for reading electronic mail.)
|
||||
In @cite{The GNU Emacs Manual}, you will see sentences such as ``The
|
||||
|
@ -18685,9 +18685,9 @@ easy-to-read description of Emacs Lisp. It is written not only for
|
|||
experts, but for people who know what you know. (The @cite{Reference
|
||||
Manual} comes with the standard GNU Emacs distribution. Like this
|
||||
introduction, it comes as a Texinfo source file, so you can read it
|
||||
on-line and as a typeset, printed book.)
|
||||
on your computer and as a typeset, printed book.)
|
||||
|
||||
Go to the other on-line help that is part of GNU Emacs: the on-line
|
||||
Go to the other built-in help that is part of GNU Emacs: the built-in
|
||||
documentation for all functions and variables, and @code{find-tag},
|
||||
the program that takes you to sources.
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2014-07-03 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* help.texi (Help Functions): "Online" help doesn't mean what it
|
||||
used to any more.
|
||||
|
||||
2014-07-02 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* keymaps.texi (Key Lookup): Remove mention of indirect entries.
|
||||
|
|
|
@ -508,7 +508,7 @@ non-@code{nil}, the return value is always a vector.
|
|||
@node Help Functions
|
||||
@section Help Functions
|
||||
|
||||
Emacs provides a variety of on-line help functions, all accessible to
|
||||
Emacs provides a variety of built-in help functions, all accessible to
|
||||
the user as subcommands of the prefix @kbd{C-h}. For more information
|
||||
about them, see @ref{Help, , Help, emacs, The GNU Emacs Manual}. Here
|
||||
we describe some program-level interfaces to the same information.
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
2014-07-03 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* info.texi, mh-e.texi: "Online help" doesn't mean what it
|
||||
used to any more.
|
||||
|
||||
* idlwave.texi (Introduction): Comment out dead http screenshot links.
|
||||
|
||||
2014-06-24 Leo Liu <sdl.web@gmail.com>
|
||||
|
||||
* dired-x.texi (Omitting Files in Dired, Omitting Variables):
|
||||
|
|
|
@ -239,24 +239,27 @@ Examining variables and expressions with a mouse click.
|
|||
And much, much more...
|
||||
@end itemize
|
||||
|
||||
@c Dead links, 2014/06.
|
||||
@ignore
|
||||
@ifnottex
|
||||
@cindex Screenshots
|
||||
Here are a number of screenshots showing IDLWAVE in action:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
@uref{http://idlwave.org/screenshots/emacs_21_nav.gif,An IDLWAVE buffer}
|
||||
@uref{http://github.com/jdtsmith/idlwave/screenshots/emacs_21_nav.gif,An IDLWAVE buffer}
|
||||
@item
|
||||
@uref{http://idlwave.org/screenshots/emacs_21_keys.gif,A keyword being completed}
|
||||
@uref{http://github.com/jdtsmith/idlwave/screenshots/emacs_21_keys.gif,A keyword being completed}
|
||||
@item
|
||||
@uref{http://idlwave.org/screenshots/emacs_21_help.gif,Online help text.}
|
||||
@uref{http://github.com/jdtsmith/idlwave/screenshots/emacs_21_help.gif,Online help text.}
|
||||
@item
|
||||
@uref{http://idlwave.org/screenshots/emacs_21_ri.gif,Routine information displayed}
|
||||
@uref{http://github.com/jdtsmith/idlwave/screenshots/emacs_21_ri.gif,Routine information displayed}
|
||||
@item
|
||||
@uref{http://idlwave.org/screenshots/emacs_21_bp.gif,Debugging code
|
||||
@uref{http://github.com/jdtsmith/idlwave/screenshots/emacs_21_bp.gif,Debugging code
|
||||
stopped at a breakpoint}
|
||||
@end itemize
|
||||
@end ifnottex
|
||||
@end ignore
|
||||
|
||||
IDLWAVE is the distant successor to the @file{idl.el} and
|
||||
@file{idl-shell.el} files written by Chris Chase. The modes and files
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
@comment %**end of header
|
||||
|
||||
@copying
|
||||
This file describes how to use Info, the on-line, menu-driven GNU
|
||||
This file describes how to use Info, the menu-driven GNU
|
||||
documentation system.
|
||||
|
||||
Copyright @copyright{} 1989, 1992, 1996--2014 Free Software Foundation, Inc.
|
||||
|
@ -51,7 +51,7 @@ modify this GNU manual.''
|
|||
@node Top
|
||||
@top Info: An Introduction
|
||||
|
||||
The GNU Project distributes most of its on-line manuals in the
|
||||
The GNU Project distributes most of its manuals in the
|
||||
@dfn{Info format}, which you read using an @dfn{Info reader}. You are
|
||||
probably using an Info reader to read this now.
|
||||
|
||||
|
@ -98,7 +98,7 @@ program on a computer, so that you can try Info commands while reading
|
|||
about them. Reading it on paper or with an HTML browser is less
|
||||
effective, since you must take it on faith that the commands described
|
||||
really do what the manual says. By all means go through this manual
|
||||
now that you have it; but please try going through the on-line version
|
||||
now that you have it; but please try going through the Info version
|
||||
as well.
|
||||
|
||||
@cindex Info reader, how to invoke
|
||||
|
|
|
@ -227,7 +227,7 @@ have, see @ref{Getting Started}.
|
|||
@kindex C-h t
|
||||
|
||||
If you don't already use GNU Emacs but want to learn more, you can
|
||||
read an online tutorial by starting GNU Emacs and typing @kbd{C-h t}
|
||||
read a built-in tutorial by starting GNU Emacs and typing @kbd{C-h t}
|
||||
(@code{help-with-tutorial}). (To learn about this notation, see
|
||||
@ref{Conventions}.) If you want to take the plunge, consult the
|
||||
@iftex
|
||||
|
@ -1066,9 +1066,9 @@ This chapter begins the meat of the manual which goes into more detail
|
|||
about every MH-E command and option.
|
||||
|
||||
@cindex Emacs, info
|
||||
@cindex Emacs, online help
|
||||
@cindex Emacs, built-in help
|
||||
@cindex info
|
||||
@cindex online help
|
||||
@cindex built-in help
|
||||
@findex describe-mode
|
||||
@findex mh-help
|
||||
@kindex ?
|
||||
|
@ -1083,12 +1083,12 @@ summaries at the beginning of each chapter. In case you have or would
|
|||
like to rebind the keys, the command summaries also list the
|
||||
associated Emacs Lisp function. Furthermore, even if you're stranded
|
||||
on a desert island with a laptop and are without your manuals, you can
|
||||
get a summary of all these commands with GNU Emacs online help: use
|
||||
get a summary of all these commands with GNU Emacs built-in help: use
|
||||
@kbd{C-h m} (@code{describe-mode}) for a brief summary of commands,
|
||||
@kbd{?} (@code{mh-help}) for an even briefer summary@footnote{This
|
||||
help appears in a buffer called @file{*MH-E Help*}
|
||||
(@pxref{Miscellaneous}).} (@kbd{C-c ?} in MH-Letter mode), or @kbd{C-h
|
||||
i} to read this manual via Info. The online help is quite good; try
|
||||
i} to read this manual via Info. The built-in help is quite good; try
|
||||
running @kbd{C-h C-h}. This brings up a list of available help topics,
|
||||
one of which displays the documentation for a given key (like @kbd{C-h
|
||||
k C-n}). Another useful help feature is to view the manual section
|
||||
|
@ -1120,21 +1120,21 @@ exist,
|
|||
@c Yes, some of the stuff in the following sections is redundant, but
|
||||
@c TeX barfs if the @ifs are inside the @footnote.
|
||||
@iftex
|
||||
@footnote{The @cite{GNU Emacs Lisp Reference Manual} may be available
|
||||
online in the Info system by typing @kbd{C-h i m Emacs Lisp
|
||||
@footnote{The @cite{GNU Emacs Lisp Reference Manual} should be available
|
||||
via the Info system by typing @kbd{C-h i m Emacs Lisp
|
||||
@key{RET}}. It is also available online at @*
|
||||
@uref{http://www.gnu.org/software/emacs/manual/elisp.html}.}
|
||||
@end iftex
|
||||
@ifinfo
|
||||
@footnote{@xref{Top, The GNU Emacs Lisp Reference Manual, , elisp, GNU
|
||||
Emacs Lisp Reference Manual}, which may be available online in the
|
||||
Emacs Lisp Reference Manual}, which should be available via the
|
||||
Info system. It is also available online at
|
||||
@uref{http://www.gnu.org/software/emacs/manual/elisp.html}.}
|
||||
@end ifinfo
|
||||
@ifhtml
|
||||
@footnote{The
|
||||
@uref{http://www.gnu.org/software/emacs/manual/elisp.html,
|
||||
The GNU Emacs Lisp Reference Manual} may also be available online in
|
||||
The GNU Emacs Lisp Reference Manual} should be available via
|
||||
the Info system by typing @kbd{C-h i m Emacs Lisp @key{RET}}.}
|
||||
@end ifhtml
|
||||
and you can look at the code itself for examples. Look in the Emacs
|
||||
|
@ -1142,7 +1142,7 @@ Lisp directory on your system (such as
|
|||
@file{/usr/local/share/emacs/lisp/mh-e}) and find all the @file{mh-*.el}
|
||||
files there. When calling MH-E and other Emacs Lisp functions directly
|
||||
from Emacs Lisp code, you'll need to know the correct arguments. Use
|
||||
the online help for this. For example, try @kbd{C-h f
|
||||
the built-in help for this. For example, try @kbd{C-h f
|
||||
mh-execute-commands @key{RET}}. If you write your own functions,
|
||||
please do not prefix your symbols (variables and functions) with
|
||||
@samp{mh-}. This prefix is reserved for the MH-E package. To avoid
|
||||
|
@ -6405,7 +6405,7 @@ see the section
|
|||
The Menu Bar} in @cite{The GNU Emacs Manual}.
|
||||
@end ifhtml
|
||||
|
||||
The Emacs manual describes how to get online help for a particular
|
||||
The Emacs manual describes how to get help for a particular
|
||||
menu item. You can also look up a menu item in the index of this
|
||||
manual in two ways: all of the menu items are listed alphabetically,
|
||||
and you can also browse all of the items under the index entry
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2014-07-03 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* refcards/calccard.tex (section{Getting Help}):
|
||||
Meaning of "on-line" has changed.
|
||||
|
||||
2014-06-28 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* publicsuffix.txt: Update from source.
|
||||
|
|
|
@ -297,7 +297,7 @@ \section{Getting Help}
|
|||
\key{describe key briefly}{h c}
|
||||
\key{describe key fully}{h k}
|
||||
\key{describe function or command}{h f}
|
||||
\key{read on-line manual}{h i{\rm\enskip or\enskip}\calcprefix i}
|
||||
\key{read Info manual}{h i{\rm\enskip or\enskip}\calcprefix i}
|
||||
\key{read full Calc summary}{h s{\rm\enskip or\enskip}\calcprefix s}
|
||||
|
||||
\section{Error Recovery}
|
||||
|
|
|
@ -1,3 +1,56 @@
|
|||
2014-07-03 Juri Linkov <juri@jurta.org>
|
||||
|
||||
* desktop.el (desktop-save): Rename arg `auto-save' to
|
||||
`only-if-changed'. Doc fix. (Bug#17873)
|
||||
|
||||
2014-07-03 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* mouse.el (mouse-yank-primary, mouse-yank-secondary):
|
||||
Use insert-for-yank (bug#17271).
|
||||
|
||||
2014-07-03 Leo Liu <sdl.web@gmail.com>
|
||||
|
||||
* emacs-lisp/pp.el (pp-eval-expression, pp-eval-last-sexp):
|
||||
Support lexical-binding.
|
||||
|
||||
2014-07-03 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* vc/log-edit.el (log-edit-goto-eoh): New function.
|
||||
(log-edit--match-first-line): Use it (bug#17861).
|
||||
|
||||
2014-07-03 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* vc/log-edit.el (log-edit-hook): Add missing :version.
|
||||
|
||||
2014-07-03 Fabián Ezequiel Gallina <fgallina@gnu.org>
|
||||
|
||||
* progmodes/python.el (python-indent-post-self-insert-function):
|
||||
Enhancements to electric indentation behavior inside
|
||||
parens. (Bug#17658)
|
||||
|
||||
2014-07-03 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* ps-def.el (ps-generate-postscript-with-faces1): Don't mess with
|
||||
buffer-invisibility-spec (bug#17867).
|
||||
|
||||
2014-07-03 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* vc/vc-git.el (vc-git-checkin): When operating on the whole tree
|
||||
pass "-a".
|
||||
|
||||
2014-07-03 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* cus-edit.el (help):
|
||||
* finder.el (finder-known-keywords):
|
||||
* help.el (help-for-help-internal):
|
||||
* vc/ediff-mult.el (ediff-meta-buffer-verbose-message)
|
||||
(ediff-redraw-registry-buffer):
|
||||
* vc/ediff-ptch.el (ediff-patch-file-internal):
|
||||
Doc fixes re "online" help. (Bug#17803)
|
||||
|
||||
* progmodes/idlwave.el (idlwave): Update url-link for custom group.
|
||||
(idlwave-mode): Doc URL update.
|
||||
|
||||
2014-07-01 Juri Linkov <juri@jurta.org>
|
||||
|
||||
* man.el: Display man pages immediately and use process-filter
|
||||
|
|
|
@ -324,7 +324,7 @@
|
|||
:group 'emacs)
|
||||
|
||||
(defgroup help nil
|
||||
"Support for on-line help systems."
|
||||
"Support for Emacs help systems."
|
||||
:group 'emacs)
|
||||
|
||||
(defgroup multimedia nil
|
||||
|
|
|
@ -942,12 +942,13 @@ Frames with a non-nil `desktop-dont-save' parameter are not saved."
|
|||
:predicate #'desktop--check-dont-save))))
|
||||
|
||||
;;;###autoload
|
||||
(defun desktop-save (dirname &optional release auto-save)
|
||||
(defun desktop-save (dirname &optional release only-if-changed)
|
||||
"Save the desktop in a desktop file.
|
||||
Parameter DIRNAME specifies where to save the desktop file.
|
||||
Optional parameter RELEASE says whether we're done with this desktop.
|
||||
If AUTO-SAVE is non-nil, compare the saved contents to the one last saved,
|
||||
and don't save the buffer if they are the same."
|
||||
If ONLY-IF-CHANGED is non-nil, compare the current desktop information
|
||||
to that in the desktop file, and if the desktop information has not
|
||||
changed since it was last saved then do not rewrite the file."
|
||||
(interactive (list
|
||||
;; Or should we just use (car desktop-path)?
|
||||
(let ((default (if (member "." desktop-path)
|
||||
|
@ -1020,7 +1021,7 @@ and don't save the buffer if they are the same."
|
|||
|
||||
(setq default-directory desktop-dirname)
|
||||
;; When auto-saving, avoid writing if nothing has changed since the last write.
|
||||
(let* ((beg (and auto-save
|
||||
(let* ((beg (and only-if-changed
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
;; Don't check the header with changing timestamp
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
;;; Commentary:
|
||||
|
||||
;; This package provides a pre-packaged `Electric Help Mode' for
|
||||
;; browsing on-line help screens. There is one entry point,
|
||||
;; browsing Emacs help screens. There is one entry point,
|
||||
;; `with-electric-help'; all you have to give it is a no-argument
|
||||
;; function that generates the actual text of the help into the current
|
||||
;; buffer.
|
||||
|
|
|
@ -129,7 +129,7 @@ Also add the value to the front of the list in the variable `values'."
|
|||
(interactive
|
||||
(list (read--expression "Eval: ")))
|
||||
(message "Evaluating...")
|
||||
(setq values (cons (eval expression) values))
|
||||
(setq values (cons (eval expression lexical-binding) values))
|
||||
(pp-display-expression (car values) "*Pp Eval Output*"))
|
||||
|
||||
;;;###autoload
|
||||
|
@ -165,7 +165,7 @@ With argument, pretty-print output into current buffer.
|
|||
Ignores leading comment characters."
|
||||
(interactive "P")
|
||||
(if arg
|
||||
(insert (pp-to-string (eval (pp-last-sexp))))
|
||||
(insert (pp-to-string (eval (pp-last-sexp) lexical-binding)))
|
||||
(pp-eval-expression (pp-last-sexp))))
|
||||
|
||||
;;;###autoload
|
||||
|
|
|
@ -107,7 +107,7 @@
|
|||
;; ----------------
|
||||
;; Bug reports and ideas contributed by many users have helped
|
||||
;; improve Viper and the various versions of VIP.
|
||||
;; See the on-line manual for a complete list of contributors.
|
||||
;; See the manual for a complete list of contributors.
|
||||
;;
|
||||
;;
|
||||
;;; Notes:
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
(frames . "Emacs frames and window systems")
|
||||
(games . "games, jokes and amusements")
|
||||
(hardware . "interfacing with system hardware")
|
||||
(help . "on-line help systems")
|
||||
(help . "Emacs help systems")
|
||||
(hypermedia . "links between text or other media types")
|
||||
(i18n . "internationalization and character-set support")
|
||||
(internal . "code for Emacs internals, build process, defaults")
|
||||
|
|
10
lisp/help.el
10
lisp/help.el
|
@ -23,7 +23,7 @@
|
|||
|
||||
;;; Commentary:
|
||||
|
||||
;; This code implements GNU Emacs's on-line help system, the one invoked by
|
||||
;; This code implements GNU Emacs's built-in help system, the one invoked by
|
||||
;; `M-x help-for-help'.
|
||||
|
||||
;;; Code:
|
||||
|
@ -198,13 +198,13 @@ d PATTERN Show a list of functions, variables, and other items whose
|
|||
documentation matches the PATTERN (a list of words or a regexp).
|
||||
e Go to the *Messages* buffer which logs echo-area messages.
|
||||
f FUNCTION Display documentation for the given function.
|
||||
F COMMAND Show the on-line manual's section that describes the command.
|
||||
F COMMAND Show the Emacs manual's section that describes the command.
|
||||
g Display information about the GNU project.
|
||||
h Display the HELLO file which illustrates various scripts.
|
||||
i Start the Info documentation reader: read on-line manuals.
|
||||
i Start the Info documentation reader: read included manuals.
|
||||
I METHOD Describe a specific input method, or RET for current.
|
||||
k KEYS Display the full documentation for the key sequence.
|
||||
K KEYS Show the on-line manual's section for the command bound to KEYS.
|
||||
K KEYS Show the Emacs manual's section for the command bound to KEYS.
|
||||
l Show last 300 input keystrokes (lossage).
|
||||
L LANG-ENV Describes a specific language environment, or RET for current.
|
||||
m Display documentation of current minor modes and current major mode,
|
||||
|
@ -214,7 +214,7 @@ p TOPIC Find packages matching a given topic keyword.
|
|||
P PACKAGE Describe the given Emacs Lisp package.
|
||||
r Display the Emacs manual in Info mode.
|
||||
s Display contents of current syntax table, plus explanations.
|
||||
S SYMBOL Show the section for the given symbol in the on-line manual
|
||||
S SYMBOL Show the section for the given symbol in the Info manual
|
||||
for the programming language used in this buffer.
|
||||
t Start the Emacs learn-by-doing tutorial.
|
||||
v VARIABLE Display the given variable's documentation and value.
|
||||
|
|
|
@ -1079,7 +1079,7 @@ regardless of where you click."
|
|||
(unless primary
|
||||
(error "No selection is available"))
|
||||
(push-mark (point))
|
||||
(insert primary)))
|
||||
(insert-for-yank primary)))
|
||||
|
||||
(defun mouse-kill-ring-save (click)
|
||||
"Copy the region between point and the mouse click in the kill ring.
|
||||
|
@ -1361,7 +1361,7 @@ regardless of where you click."
|
|||
(or mouse-yank-at-point (mouse-set-point click))
|
||||
(let ((secondary (x-get-selection 'SECONDARY)))
|
||||
(if secondary
|
||||
(insert secondary)
|
||||
(insert-for-yank secondary)
|
||||
(error "No secondary selection"))))
|
||||
|
||||
(defun mouse-kill-secondary ()
|
||||
|
|
|
@ -71,8 +71,8 @@
|
|||
;; For example:
|
||||
;; (add-to-list 'auto-mode-alist '("\\.f\\'" . f90-mode))
|
||||
|
||||
;; Once you have entered f90-mode, you may get more info by using
|
||||
;; the command describe-mode (C-h m). For online help use
|
||||
;; Once you have entered f90-mode, you can get more info by using
|
||||
;; the command describe-mode (C-h m). For help use
|
||||
;; C-h f <Name of function you want described>, or
|
||||
;; C-h v <Name of variable you want described>.
|
||||
|
||||
|
|
|
@ -49,14 +49,14 @@
|
|||
;;
|
||||
;; New versions of IDLWAVE, documentation, and more information available
|
||||
;; from:
|
||||
;; http://idlwave.org
|
||||
;; http://github.com/jdtsmith/idlwave
|
||||
;;
|
||||
;; INSTALLATION
|
||||
;; ============
|
||||
;; Put this file on the emacs load path and load it with the following
|
||||
;; line in your init file:
|
||||
;;
|
||||
;; (add-hook 'idlwave-load-hook
|
||||
;; (add-hook 'idlwave-load-hook
|
||||
;; (lambda () (require 'idlw-complete-structtag)))
|
||||
;;
|
||||
;; DESCRIPTION
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
;; along with new versions of IDLWAVE, documentation, and more
|
||||
;; information, at:
|
||||
;;
|
||||
;; http://idlwave.org
|
||||
;; http://github.com/jdtsmith/idlwave
|
||||
;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
;;
|
||||
;; New versions of IDLWAVE, documentation, and more information
|
||||
;; available from:
|
||||
;; http://idlwave.org
|
||||
;; http://github.com/jdtsmith/idlwave
|
||||
;;
|
||||
;; INSTALLATION:
|
||||
;; =============
|
||||
|
@ -58,7 +58,7 @@
|
|||
;; The newest version of this file can be found on the maintainers
|
||||
;; web site.
|
||||
;;
|
||||
;; http://idlwave.org
|
||||
;; http://github.com/jdtsmith/idlwave
|
||||
;;
|
||||
;; DOCUMENTATION
|
||||
;; =============
|
||||
|
@ -923,7 +923,7 @@ IDL has currently stepped.")
|
|||
Info documentation for this package is available. Use \\[idlwave-info]
|
||||
to display (complain to your sysadmin if that does not work).
|
||||
For PostScript and HTML versions of the documentation, check IDLWAVE's
|
||||
homepage at URL `http://idlwave.org'.
|
||||
homepage at URL `http://github.com/jdtsmith/idlwave'.
|
||||
IDLWAVE has customize support - see the group `idlwave'.
|
||||
|
||||
8. Keybindings
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
;; New versions of IDLWAVE, documentation, and more information
|
||||
;; available from:
|
||||
;; http://idlwave.org
|
||||
;; http://github.com/jdtsmith/idlwave
|
||||
|
||||
|
||||
;;; Code:
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
;;
|
||||
;; New versions of IDLWAVE, documentation, and more information
|
||||
;; available from:
|
||||
;; http://idlwave.org
|
||||
;; http://github.com/jdtsmith/idlwave
|
||||
;;
|
||||
;; INSTALLATION
|
||||
;; ============
|
||||
|
@ -64,7 +64,7 @@
|
|||
;; The newest version of this file is available from the maintainer's
|
||||
;; Webpage:
|
||||
;;
|
||||
;; http://idlwave.org
|
||||
;; http://github.com/jdtsmith/idlwave
|
||||
;;
|
||||
;; DOCUMENTATION
|
||||
;; =============
|
||||
|
@ -179,7 +179,7 @@
|
|||
"Major mode for editing IDL .pro files."
|
||||
:tag "IDLWAVE"
|
||||
:link '(url-link :tag "Home Page"
|
||||
"http://idlwave.org")
|
||||
"http://github.com/jdtsmith/idlwave")
|
||||
:link '(emacs-commentary-link :tag "Commentary in idlw-shell.el"
|
||||
"idlw-shell.el")
|
||||
:link '(emacs-commentary-link :tag "Commentary in idlwave.el" "idlwave.el")
|
||||
|
@ -1878,7 +1878,8 @@ The main features of this mode are
|
|||
Info documentation for this package is available. Use
|
||||
\\[idlwave-info] to display (complain to your sysadmin if that does
|
||||
not work). For Postscript, PDF, and HTML versions of the
|
||||
documentation, check IDLWAVE's homepage at URL `http://idlwave.org'.
|
||||
documentation, check IDLWAVE's homepage at URL
|
||||
`http://github.com/jdtsmith/idlwave'.
|
||||
IDLWAVE has customize support - see the group `idlwave'.
|
||||
|
||||
10.Keybindings
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
;; =====
|
||||
|
||||
;; Emacs should enter Pascal mode when you find a Pascal source file.
|
||||
;; When you have entered Pascal mode, you may get more info by pressing
|
||||
;; C-h m. You may also get online help describing various functions by:
|
||||
;; When you have entered Pascal mode, you can get more info by pressing
|
||||
;; C-h m. You can also get help describing various functions by:
|
||||
;; C-h f <Name of function you want described>
|
||||
|
||||
;; If you want to customize Pascal mode to fit you better, you may add
|
||||
|
|
|
@ -1096,16 +1096,28 @@ the line will be re-indented automatically if needed."
|
|||
(when (and electric-indent-mode
|
||||
(eq (char-before) last-command-event))
|
||||
(cond
|
||||
((and (not (bolp))
|
||||
(memq (char-after) '(?\) ?\] ?\})))
|
||||
;; Electric indent inside parens
|
||||
((and
|
||||
(not (bolp))
|
||||
(let ((paren-start (python-syntax-context 'paren)))
|
||||
;; Check that point is inside parens.
|
||||
(when paren-start
|
||||
(not
|
||||
;; Filter the case where input is happening in the same
|
||||
;; line where the open paren is.
|
||||
(= (line-number-at-pos)
|
||||
(line-number-at-pos paren-start)))))
|
||||
;; When content has been added before the closing paren or a
|
||||
;; comma has been inserted, it's ok to do the trick.
|
||||
(or
|
||||
(memq (char-after) '(?\) ?\] ?\}))
|
||||
(eq (char-before) ?,)))
|
||||
(save-excursion
|
||||
(goto-char (line-beginning-position))
|
||||
;; If after going to the beginning of line the point
|
||||
;; is still inside a paren it's ok to do the trick
|
||||
(when (python-syntax-context 'paren)
|
||||
(let ((indentation (python-indent-calculate-indentation)))
|
||||
(when (< (current-indentation) indentation)
|
||||
(indent-line-to indentation))))))
|
||||
(let ((indentation (python-indent-calculate-indentation)))
|
||||
(when (< (current-indentation) indentation)
|
||||
(indent-line-to indentation)))))
|
||||
;; Electric colon
|
||||
((and (eq ?: last-command-event)
|
||||
(memq ?: electric-indent-chars)
|
||||
(not current-prefix-arg)
|
||||
|
|
|
@ -325,8 +325,6 @@
|
|||
;; Emacs
|
||||
(property-change from)
|
||||
(overlay-change from)
|
||||
(save-buffer-invisibility-spec buffer-invisibility-spec)
|
||||
(buffer-invisibility-spec nil)
|
||||
before-string after-string)
|
||||
(while (< from to)
|
||||
(and (< property-change to) ; Don't search for property change
|
||||
|
|
|
@ -140,7 +140,7 @@ Useful commands (type ? to hide them and free up screen):
|
|||
uh/um:\tunmark all sessions marked for hiding/operation
|
||||
n,SPC:\tnext session
|
||||
p,DEL:\tprevious session
|
||||
E:\tbrowse Ediff on-line manual
|
||||
E:\tbrowse Ediff manual
|
||||
T:\ttoggle truncation of long file names
|
||||
q:\tquit this session group
|
||||
")
|
||||
|
@ -1464,7 +1464,7 @@ Useful commands:
|
|||
R in any Ediff session: display session registry
|
||||
n,SPC: next session
|
||||
p,DEL: previous session
|
||||
E: browse Ediff on-line manual
|
||||
E: browse Ediff manual
|
||||
q: bury registry
|
||||
|
||||
|
||||
|
|
|
@ -735,7 +735,7 @@ The second problem might be due to an incompatibility among these settings:
|
|||
ediff-patch-program = %S ediff-patch-options = %S
|
||||
ediff-backup-extension = %S ediff-backup-specs = %S
|
||||
|
||||
See Ediff on-line manual for more details on these variables.
|
||||
See Ediff manual for more details on these variables.
|
||||
In particular, check the documentation for `ediff-backup-specs'.
|
||||
|
||||
In any of the above cases, Ediff doesn't compare files automatically.
|
||||
|
|
|
@ -64,7 +64,7 @@
|
|||
;; compressed files. Details are given below.
|
||||
|
||||
;; Finally, Ediff supports directory-level comparison, merging and patching.
|
||||
;; See the on-line manual for details.
|
||||
;; See the Ediff manual for details.
|
||||
|
||||
;; This package builds upon the ideas borrowed from emerge.el and several
|
||||
;; Ediff's functions are adaptations from emerge.el. Much of the functionality
|
||||
|
|
|
@ -132,6 +132,8 @@ This applies when its SETUP argument is non-nil."
|
|||
log-edit-insert-changelog
|
||||
log-edit-show-files)
|
||||
"Hook run at the end of `log-edit'."
|
||||
;; Added log-edit-insert-message-template, moved log-edit-show-files.
|
||||
:version "24.4"
|
||||
:group 'log-edit
|
||||
:type '(hook :options (log-edit-insert-message-template
|
||||
log-edit-insert-cvs-rcstemplate
|
||||
|
@ -355,9 +357,15 @@ The first subexpression is the actual text of the field.")
|
|||
(set-match-data (list start (point)))
|
||||
(point))))
|
||||
|
||||
(defun log-edit-goto-eoh () ;FIXME: Almost rfc822-goto-eoh!
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward
|
||||
"^\\([^[:alpha:]]\\|[[:alnum:]-]+[^[:alnum:]-:]\\)" nil 'move)
|
||||
(goto-char (match-beginning 0))))
|
||||
|
||||
(defun log-edit--match-first-line (limit)
|
||||
(let ((start (point)))
|
||||
(rfc822-goto-eoh)
|
||||
(log-edit-goto-eoh)
|
||||
(skip-chars-forward "\n")
|
||||
(and (< start (line-end-position))
|
||||
(< (point) limit)
|
||||
|
|
|
@ -674,7 +674,7 @@ It is based on `log-edit-mode', and has Git-specific extensions.")
|
|||
(cl-flet ((boolean-arg-fn
|
||||
(argument)
|
||||
(lambda (value) (when (equal value "yes") (list argument)))))
|
||||
;; When operating on the whole tree, better pass nil than ".", since "."
|
||||
;; When operating on the whole tree, better pass "-a" than ".", since "."
|
||||
;; fails when we're committing a merge.
|
||||
(apply 'vc-git-command nil 0 (if only files)
|
||||
(nconc (list "commit" "-m")
|
||||
|
@ -684,7 +684,7 @@ It is based on `log-edit-mode', and has Git-specific extensions.")
|
|||
("Amend" . ,(boolean-arg-fn "--amend"))
|
||||
("Sign-Off" . ,(boolean-arg-fn "--signoff")))
|
||||
comment)
|
||||
(if only (list "--only" "--")))))))
|
||||
(if only (list "--only" "--") '("-a")))))))
|
||||
|
||||
(defun vc-git-find-revision (file rev buffer)
|
||||
(let* (process-file-side-effects
|
||||
|
|
|
@ -1,3 +1,28 @@
|
|||
2014-07-03 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* dispnew.c (prepare_desired_row): Accept 2 additional arguments:
|
||||
the window whose glyph row is being prepared and a flag whether it
|
||||
is for mode/header line. Make sure the glyph row's marginal areas
|
||||
are in sync with what the window wants.
|
||||
(Bug#17892)
|
||||
|
||||
* xdisp.c (display_line, display_mode_line): Call
|
||||
prepare_desired_row with additional arguments, as appropriate.
|
||||
|
||||
* dispextern.h (prepare_desired_row): Adjust prototype.
|
||||
|
||||
2014-07-03 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
* xfaces.c (init_frame_faces): Always realize basic faces (Bug#17889).
|
||||
* menu.c (Fx_popup_dialog): Set Vmenu_updating_frame to avoid crash
|
||||
caused by xw_popup_dialog in daemon mode (Bug#17891).
|
||||
|
||||
2014-07-03 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* frame.c (do_switch_frame): When switching to another TTY frame,
|
||||
make sure FrameCols and FrameRows are in sync with the new frame's
|
||||
data. (Bug#17875)
|
||||
|
||||
2014-07-02 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
Shrink Lisp_Sub_Char_Table by preferring C integers to Lisp_Objects.
|
||||
|
|
|
@ -3460,7 +3460,7 @@ void increment_matrix_positions (struct glyph_matrix *,
|
|||
void blank_row (struct window *, struct glyph_row *, int);
|
||||
void clear_glyph_matrix_rows (struct glyph_matrix *, int, int);
|
||||
void clear_glyph_row (struct glyph_row *);
|
||||
void prepare_desired_row (struct glyph_row *);
|
||||
void prepare_desired_row (struct window *, struct glyph_row *, bool);
|
||||
void update_single_window (struct window *, bool);
|
||||
void do_pending_window_change (bool);
|
||||
void change_frame_size (struct frame *, int, int, bool, bool, bool, bool);
|
||||
|
|
|
@ -449,7 +449,8 @@ adjust_glyph_matrix (struct window *w, struct glyph_matrix *matrix, int x, int y
|
|||
+ x);
|
||||
|
||||
if (w == NULL
|
||||
|| row == matrix->rows + dim.height - 1
|
||||
|| (row == matrix->rows + dim.height - 1
|
||||
&& WINDOW_WANTS_MODELINE_P (w))
|
||||
|| (row == matrix->rows && matrix->header_line_p))
|
||||
{
|
||||
row->glyphs[TEXT_AREA]
|
||||
|
@ -492,8 +493,9 @@ adjust_glyph_matrix (struct window *w, struct glyph_matrix *matrix, int x, int y
|
|||
= xnrealloc (row->glyphs[LEFT_MARGIN_AREA],
|
||||
dim.width, sizeof (struct glyph));
|
||||
|
||||
/* The mode line never has marginal areas. */
|
||||
if (row == matrix->rows + dim.height - 1
|
||||
/* The mode line, if displayed, never has marginal areas. */
|
||||
if ((row == matrix->rows + dim.height - 1
|
||||
&& !(w && WINDOW_WANTS_MODELINE_P (w)))
|
||||
|| (row == matrix->rows && matrix->header_line_p))
|
||||
{
|
||||
row->glyphs[TEXT_AREA]
|
||||
|
@ -1049,13 +1051,16 @@ find_glyph_row_slice (struct glyph_matrix *window_matrix,
|
|||
|
||||
#endif /* 0 */
|
||||
|
||||
/* Prepare ROW for display. Desired rows are cleared lazily,
|
||||
i.e. they are only marked as to be cleared by setting their
|
||||
/* Prepare ROW for display in windows W. Desired rows are cleared
|
||||
lazily, i.e. they are only marked as to be cleared by setting their
|
||||
enabled_p flag to zero. When a row is to be displayed, a prior
|
||||
call to this function really clears it. */
|
||||
call to this function really clears it. In addition, this function
|
||||
makes sure the marginal areas of ROW are in sync with the window's
|
||||
display margins. MODE_LINE_P non-zero means we are preparing a
|
||||
glyph row for header line or mode line. */
|
||||
|
||||
void
|
||||
prepare_desired_row (struct glyph_row *row)
|
||||
prepare_desired_row (struct window *w, struct glyph_row *row, bool mode_line_p)
|
||||
{
|
||||
if (!row->enabled_p)
|
||||
{
|
||||
|
@ -1065,6 +1070,39 @@ prepare_desired_row (struct glyph_row *row)
|
|||
row->enabled_p = true;
|
||||
row->reversed_p = rp;
|
||||
}
|
||||
if (mode_line_p)
|
||||
{
|
||||
/* Mode and header lines, if displayed, never have marginal
|
||||
areas. If we are called with MODE_LINE_P non-zero, we are
|
||||
displaying the mode/header line in this window, and so the
|
||||
marginal areas of this glyph row should be eliminated. This
|
||||
is needed when the mode/header line is switched on in a
|
||||
window that has display margins. */
|
||||
if (w->left_margin_cols > 0)
|
||||
row->glyphs[TEXT_AREA] = row->glyphs[LEFT_MARGIN_AREA];
|
||||
if (w->right_margin_cols > 0)
|
||||
row->glyphs[RIGHT_MARGIN_AREA] = row->glyphs[LAST_AREA];
|
||||
}
|
||||
else if (row == MATRIX_MODE_LINE_ROW (w->desired_matrix)
|
||||
|| row == MATRIX_HEADER_LINE_ROW (w->desired_matrix))
|
||||
{
|
||||
/* The real number of glyphs reserved for the margins is
|
||||
recorded in the glyph matrix, and can be different from
|
||||
window's left_margin_cols and right_margin_cols; see
|
||||
margin_glyphs_to_reserve for when that happens. */
|
||||
int left = w->desired_matrix->left_margin_glyphs;
|
||||
int right = w->desired_matrix->right_margin_glyphs;
|
||||
|
||||
/* Make sure the marginal areas of this row are in sync with
|
||||
what the window wants, when the 1st/last row of the matrix
|
||||
actually displays text and not header/mode line. */
|
||||
if (w->left_margin_cols > 0
|
||||
&& (left != row->glyphs[TEXT_AREA] - row->glyphs[LEFT_MARGIN_AREA]))
|
||||
row->glyphs[TEXT_AREA] = row->glyphs[LEFT_MARGIN_AREA] + left;
|
||||
if (w->right_margin_cols > 0
|
||||
&& (right != row->glyphs[LAST_AREA] - row->glyphs[RIGHT_MARGIN_AREA]))
|
||||
row->glyphs[RIGHT_MARGIN_AREA] = row->glyphs[LAST_AREA] - right;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
16
src/frame.c
16
src/frame.c
|
@ -46,6 +46,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
#include "fontset.h"
|
||||
#endif
|
||||
#include "cm.h"
|
||||
#ifdef MSDOS
|
||||
#include "msdos.h"
|
||||
#include "dosfns.h"
|
||||
|
@ -854,7 +855,9 @@ do_switch_frame (Lisp_Object frame, int track, int for_deletion, Lisp_Object nor
|
|||
|
||||
if (FRAME_TERMCAP_P (XFRAME (frame)) || FRAME_MSDOS_P (XFRAME (frame)))
|
||||
{
|
||||
Lisp_Object top_frame = FRAME_TTY (XFRAME (frame))->top_frame;
|
||||
struct frame *f = XFRAME (frame);
|
||||
struct tty_display_info *tty = FRAME_TTY (f);
|
||||
Lisp_Object top_frame = tty->top_frame;
|
||||
|
||||
/* Don't mark the frame garbaged and/or obscured if we are
|
||||
switching to the frame that is already the top frame of that
|
||||
|
@ -864,9 +867,16 @@ do_switch_frame (Lisp_Object frame, int track, int for_deletion, Lisp_Object nor
|
|||
if (FRAMEP (top_frame))
|
||||
/* Mark previously displayed frame as now obscured. */
|
||||
SET_FRAME_VISIBLE (XFRAME (top_frame), 2);
|
||||
SET_FRAME_VISIBLE (XFRAME (frame), 1);
|
||||
SET_FRAME_VISIBLE (f, 1);
|
||||
/* If the new TTY frame changed dimensions, we need to
|
||||
resync term.c's idea of the frame size with the new
|
||||
frame's data. */
|
||||
if (FRAME_COLS (f) != FrameCols (tty))
|
||||
FrameCols (tty) = FRAME_COLS (f);
|
||||
if (FRAME_LINES (f) != FrameRows (tty))
|
||||
FrameRows (tty) = FRAME_LINES (f);
|
||||
}
|
||||
FRAME_TTY (XFRAME (frame))->top_frame = frame;
|
||||
tty->top_frame = frame;
|
||||
}
|
||||
|
||||
selected_frame = frame;
|
||||
|
|
|
@ -1529,6 +1529,11 @@ for instance using the window manager, then this produces a quit and
|
|||
but I don't want to make one now. */
|
||||
CHECK_WINDOW (window);
|
||||
|
||||
/* Note that xw_popup_dialog can call menu code, so
|
||||
Vmenu_updating_frame should be set (Bug#17891). */
|
||||
eassert (f && FRAME_LIVE_P (f));
|
||||
XSETFRAME (Vmenu_updating_frame, f);
|
||||
|
||||
/* Force a redisplay before showing the dialog. If a frame is created
|
||||
just before showing the dialog, its contents may not have been fully
|
||||
drawn, as this depends on timing of events from the X server. Redisplay
|
||||
|
|
|
@ -271,8 +271,10 @@ struct window
|
|||
int left_fringe_width;
|
||||
int right_fringe_width;
|
||||
|
||||
/* Width of left and right marginal areas in columns.
|
||||
A value of 0 means no margin. */
|
||||
/* Requested width of left and right marginal areas in columns. A
|
||||
value of 0 means no margin. The actual values are recorded in
|
||||
the window's glyph matrix, in the left_margin_glyphs and
|
||||
right_margin_glyphs members. */
|
||||
int left_margin_cols;
|
||||
int right_margin_cols;
|
||||
|
||||
|
|
|
@ -19878,7 +19878,7 @@ display_line (struct it *it)
|
|||
}
|
||||
|
||||
/* Clear the result glyph row and enable it. */
|
||||
prepare_desired_row (row);
|
||||
prepare_desired_row (it->w, row, false);
|
||||
|
||||
row->y = it->current_y;
|
||||
row->start = it->start;
|
||||
|
@ -21517,7 +21517,7 @@ display_mode_line (struct window *w, enum face_id face_id, Lisp_Object format)
|
|||
/* Don't extend on a previously drawn mode-line.
|
||||
This may happen if called from pos_visible_p. */
|
||||
it.glyph_row->enabled_p = false;
|
||||
prepare_desired_row (it.glyph_row);
|
||||
prepare_desired_row (w, it.glyph_row, true);
|
||||
|
||||
it.glyph_row->mode_line_p = 1;
|
||||
|
||||
|
|
16
src/xfaces.c
16
src/xfaces.c
|
@ -676,19 +676,9 @@ init_frame_faces (struct frame *f)
|
|||
}
|
||||
#endif /* HAVE_WINDOW_SYSTEM */
|
||||
|
||||
/* Realize basic faces. Must have enough information in frame
|
||||
parameters to realize basic faces at this point. */
|
||||
#ifdef HAVE_X_WINDOWS
|
||||
if (!FRAME_X_P (f) || FRAME_X_WINDOW (f))
|
||||
#endif
|
||||
#ifdef HAVE_NTGUI
|
||||
if (!FRAME_WINDOW_P (f) || FRAME_W32_WINDOW (f))
|
||||
#endif
|
||||
#ifdef HAVE_NS
|
||||
if (!FRAME_NS_P (f) || FRAME_NS_WINDOW (f))
|
||||
#endif
|
||||
if (!realize_basic_faces (f))
|
||||
emacs_abort ();
|
||||
/* Realize faces early (Bug#17889). */
|
||||
if (!realize_basic_faces (f))
|
||||
emacs_abort ();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2014-07-03 Fabián Ezequiel Gallina <fgallina@gnu.org>
|
||||
|
||||
* automated/python-tests.el (python-tests-self-insert): New function.
|
||||
(python-triple-quote-pairing): Use it.
|
||||
(python-util-forward-comment-1): New test. (Bug#17658)
|
||||
|
||||
2014-06-30 Fabián Ezequiel Gallina <fgallina@gnu.org>
|
||||
|
||||
* automated/subr-x-tests.el: New file.
|
||||
|
|
|
@ -86,6 +86,24 @@ STRING, it is skipped so the next STRING occurrence is selected."
|
|||
found-point
|
||||
(and restore-point (goto-char starting-point)))))
|
||||
|
||||
(defun python-tests-self-insert (char-or-str)
|
||||
"Call `self-insert-command' for chars in CHAR-OR-STR."
|
||||
(let ((chars
|
||||
(cond
|
||||
((characterp char-or-str)
|
||||
(list char-or-str))
|
||||
((stringp char-or-str)
|
||||
(string-to-list char-or-str))
|
||||
((not
|
||||
(cl-remove-if #'characterp char-or-str))
|
||||
char-or-str)
|
||||
(t (error "CHAR-OR-STR must be a char, string, or list of char")))))
|
||||
(mapc
|
||||
(lambda (char)
|
||||
(let ((last-command-event char))
|
||||
(call-interactively 'self-insert-command)))
|
||||
chars)))
|
||||
|
||||
|
||||
;;; Tests for your tests, so you can test while you test.
|
||||
|
||||
|
@ -2715,9 +2733,6 @@ def foo(a, b, c):
|
|||
(should (string= (python-util-strip-string "\n \t \n\r ") ""))
|
||||
(should (string= (python-util-strip-string "") "")))
|
||||
|
||||
|
||||
;;; Electricity
|
||||
|
||||
(ert-deftest python-util-forward-comment-1 ()
|
||||
(python-tests-with-temp-buffer
|
||||
(concat
|
||||
|
@ -2730,36 +2745,85 @@ def foo(a, b, c):
|
|||
(python-util-forward-comment -1)
|
||||
(should (= (point) (point-min)))))
|
||||
|
||||
|
||||
;;; Electricity
|
||||
|
||||
(ert-deftest python-parens-electric-indent-1 ()
|
||||
(require 'electric)
|
||||
(let ((eim electric-indent-mode))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(python-tests-with-temp-buffer
|
||||
"
|
||||
from django.conf.urls import patterns, include, url
|
||||
|
||||
from django.contrib import admin
|
||||
|
||||
from myapp import views
|
||||
|
||||
|
||||
urlpatterns = patterns('',
|
||||
url(r'^$', views.index
|
||||
)
|
||||
"
|
||||
(electric-indent-mode 1)
|
||||
(python-tests-look-at "views.index")
|
||||
(end-of-line)
|
||||
|
||||
;; Inserting commas within the same line should leave
|
||||
;; indentation unchanged.
|
||||
(python-tests-self-insert ",")
|
||||
(should (= (current-indentation) 4))
|
||||
|
||||
;; As well as any other input happening within the same
|
||||
;; set of parens.
|
||||
(python-tests-self-insert " name='index')")
|
||||
(should (= (current-indentation) 4))
|
||||
|
||||
;; But a comma outside it, should trigger indentation.
|
||||
(python-tests-self-insert ",")
|
||||
(should (= (current-indentation) 23))
|
||||
|
||||
;; Newline indents to the first argument column
|
||||
(python-tests-self-insert "\n")
|
||||
(should (= (current-indentation) 23))
|
||||
|
||||
;; All this input must not change indentation
|
||||
(indent-line-to 4)
|
||||
(python-tests-self-insert "url(r'^/login$', views.login)")
|
||||
(should (= (current-indentation) 4))
|
||||
|
||||
;; But this comma does
|
||||
(python-tests-self-insert ",")
|
||||
(should (= (current-indentation) 23))))
|
||||
(or eim (electric-indent-mode -1)))))
|
||||
|
||||
(ert-deftest python-triple-quote-pairing ()
|
||||
(require 'electric)
|
||||
(let ((epm electric-pair-mode))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(python-tests-with-temp-buffer
|
||||
"\"\"\n"
|
||||
(or epm (electric-pair-mode 1))
|
||||
(goto-char (1- (point-max)))
|
||||
(let ((last-command-event ?\"))
|
||||
(call-interactively 'self-insert-command))
|
||||
(should (string= (buffer-string)
|
||||
"\"\"\"\"\"\"\n"))
|
||||
(should (= (point) 4)))
|
||||
"\"\"\n"
|
||||
(or epm (electric-pair-mode 1))
|
||||
(goto-char (1- (point-max)))
|
||||
(python-tests-self-insert ?\")
|
||||
(should (string= (buffer-string)
|
||||
"\"\"\"\"\"\"\n"))
|
||||
(should (= (point) 4)))
|
||||
(python-tests-with-temp-buffer
|
||||
"\n"
|
||||
(let ((last-command-event ?\"))
|
||||
(dotimes (i 3)
|
||||
(call-interactively 'self-insert-command)))
|
||||
(should (string= (buffer-string)
|
||||
"\"\"\"\"\"\"\n"))
|
||||
(should (= (point) 4)))
|
||||
"\n"
|
||||
(python-tests-self-insert (list ?\" ?\" ?\"))
|
||||
(should (string= (buffer-string)
|
||||
"\"\"\"\"\"\"\n"))
|
||||
(should (= (point) 4)))
|
||||
(python-tests-with-temp-buffer
|
||||
"\"\n\"\"\n"
|
||||
(goto-char (1- (point-max)))
|
||||
(let ((last-command-event ?\"))
|
||||
(call-interactively 'self-insert-command))
|
||||
(should (= (point) (1- (point-max))))
|
||||
(should (string= (buffer-string)
|
||||
"\"\n\"\"\"\n"))))
|
||||
"\"\n\"\"\n"
|
||||
(goto-char (1- (point-max)))
|
||||
(python-tests-self-insert ?\")
|
||||
(should (= (point) (1- (point-max))))
|
||||
(should (string= (buffer-string)
|
||||
"\"\n\"\"\"\n"))))
|
||||
(or epm (electric-pair-mode -1)))))
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue