Now on revision 107551. ------------------------------------------------------------ revno: 107551 fixes bug(s): http://debbugs.gnu.org/10275 author: Martin Rudalics committer: Chong Yidong branch nick: trunk timestamp: Sat 2012-03-10 15:58:54 +0800 message: Fix speedbar highlighting bug. * lisp/speedbar.el (speedbar-unhighlight-one-tag-line): Avoid unhighlighting due to frame switching. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-03-10 07:08:51 +0000 +++ lisp/ChangeLog 2012-03-10 07:58:54 +0000 @@ -1,3 +1,8 @@ +2012-03-10 Martin Rudalics + + * speedbar.el (speedbar-unhighlight-one-tag-line): Avoid + unhighlighting due to frame switching (Bug#10275). + 2012-03-10 Chong Yidong * minibuffer.el (completion-in-region, completion-help-at-point): === modified file 'lisp/speedbar.el' --- lisp/speedbar.el 2012-01-19 07:21:25 +0000 +++ lisp/speedbar.el 2012-03-10 07:58:54 +0000 @@ -3987,11 +3987,11 @@ (defun speedbar-unhighlight-one-tag-line () "Unhighlight the currently highlighted line." - (if speedbar-highlight-one-tag-line - (progn - (speedbar-delete-overlay speedbar-highlight-one-tag-line) - (setq speedbar-highlight-one-tag-line nil))) - (remove-hook 'pre-command-hook 'speedbar-unhighlight-one-tag-line)) + (when (and speedbar-highlight-one-tag-line + (not (eq this-command 'handle-switch-frame))) + (speedbar-delete-overlay speedbar-highlight-one-tag-line) + (setq speedbar-highlight-one-tag-line nil) + (remove-hook 'pre-command-hook 'speedbar-unhighlight-one-tag-line))) (defun speedbar-recenter-to-top () "Recenter the current buffer so point is on the top of the window." ------------------------------------------------------------ revno: 107550 fixes bug(s): http://debbugs.gnu.org/10955 committer: Chong Yidong branch nick: trunk timestamp: Sat 2012-03-10 15:46:07 +0800 message: * frame.c (other_visible_frames): Don't assume selected frame is visible. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-03-09 16:46:25 +0000 +++ src/ChangeLog 2012-03-10 07:46:07 +0000 @@ -1,3 +1,8 @@ +2012-03-10 Chong Yidong + + * frame.c (other_visible_frames): Don't assume the selected frame + is visible (Bug#10955). + 2012-03-09 Stefan Monnier * buffer.c (compare_overlays): Avoid qsort's instability (bug#6830). === modified file 'src/frame.c' --- src/frame.c 2012-01-19 07:21:25 +0000 +++ src/frame.c 2012-03-10 07:46:07 +0000 @@ -1118,41 +1118,32 @@ static int other_visible_frames (FRAME_PTR f) { - /* We know the selected frame is visible, - so if F is some other frame, it can't be the sole visible one. */ - if (f == SELECTED_FRAME ()) + Lisp_Object frames; + + for (frames = Vframe_list; CONSP (frames); frames = XCDR (frames)) { - Lisp_Object frames; - int count = 0; + Lisp_Object this = XCAR (frames); + if (f == XFRAME (this)) + continue; - for (frames = Vframe_list; - CONSP (frames); - frames = XCDR (frames)) + /* Verify that we can still talk to the frame's X window, + and note any recent change in visibility. */ +#ifdef HAVE_WINDOW_SYSTEM + if (FRAME_WINDOW_P (XFRAME (this))) { - Lisp_Object this; - - this = XCAR (frames); - /* Verify that the frame's window still exists - and we can still talk to it. And note any recent change - in visibility. */ -#ifdef HAVE_WINDOW_SYSTEM - if (FRAME_WINDOW_P (XFRAME (this))) - { - x_sync (XFRAME (this)); - FRAME_SAMPLE_VISIBILITY (XFRAME (this)); - } + x_sync (XFRAME (this)); + FRAME_SAMPLE_VISIBILITY (XFRAME (this)); + } #endif - if (FRAME_VISIBLE_P (XFRAME (this)) - || FRAME_ICONIFIED_P (XFRAME (this)) - /* Allow deleting the terminal frame when at least - one X frame exists! */ - || (FRAME_WINDOW_P (XFRAME (this)) && !FRAME_WINDOW_P (f))) - count++; - } - return count > 1; + if (FRAME_VISIBLE_P (XFRAME (this)) + || FRAME_ICONIFIED_P (XFRAME (this)) + /* Allow deleting the terminal frame when at least one X + frame exists. */ + || (FRAME_WINDOW_P (XFRAME (this)) && !FRAME_WINDOW_P (f))) + return 1; } - return 1; + return 0; } /* Delete FRAME. When FORCE equals Qnoelisp, delete FRAME ------------------------------------------------------------ revno: 107549 fixes bug(s): http://debbugs.gnu.org/6830 committer: Chong Yidong branch nick: trunk timestamp: Sat 2012-03-10 15:08:51 +0800 message: Give completion field overlays high priority. * lisp/minibuffer.el (completion-in-region, completion-help-at-point): Give the completion field overlay a high priority. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-03-10 05:20:58 +0000 +++ lisp/ChangeLog 2012-03-10 07:08:51 +0000 @@ -1,5 +1,8 @@ 2012-03-10 Chong Yidong + * minibuffer.el (completion-in-region, completion-help-at-point): + Give the completion field overlay a high priority (Bug#6830). + * dired.el (dired-goto-file): Recognize absolute file name listings (Bug#7126). (dired-goto-file-1): New helper function. === modified file 'lisp/minibuffer.el' --- lisp/minibuffer.el 2012-02-23 15:41:12 +0000 +++ lisp/minibuffer.el 2012-03-10 07:08:51 +0000 @@ -1483,10 +1483,13 @@ (minibuffer-completion-predicate predicate) (ol (make-overlay start end nil nil t))) (overlay-put ol 'field 'completion) + ;; HACK: if the text we are completing is already in a field, we + ;; want the completion field to take priority (e.g. Bug#6830). + (overlay-put ol 'priority 100) (when completion-in-region-mode-predicate (completion-in-region-mode 1) (setq completion-in-region--data - (list (current-buffer) start end collection))) + (list (current-buffer) start end collection))) (unwind-protect (call-interactively 'minibuffer-complete) (delete-overlay ol))))) @@ -1653,9 +1656,10 @@ ;; introduce a corresponding hook (plus another for word-completion, ;; and another for force-completion, maybe?). (overlay-put ol 'field 'completion) + (overlay-put ol 'priority 100) (completion-in-region-mode 1) (setq completion-in-region--data - (list (current-buffer) start end collection)) + (list (current-buffer) start end collection)) (unwind-protect (call-interactively 'minibuffer-completion-help) (delete-overlay ol)))) ------------------------------------------------------------ revno: 107548 fixes bug(s): http://debbugs.gnu.org/7126 committer: Chong Yidong branch nick: trunk timestamp: Sat 2012-03-10 13:20:58 +0800 message: * dired.el (dired-goto-file): Recognize absolute file name listings. (dired-goto-file-1): New helper function. (dired-toggle-read-only): Inhibit warnings. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-03-09 22:06:09 +0000 +++ lisp/ChangeLog 2012-03-10 05:20:58 +0000 @@ -1,3 +1,10 @@ +2012-03-10 Chong Yidong + + * dired.el (dired-goto-file): Recognize absolute file name + listings (Bug#7126). + (dired-goto-file-1): New helper function. + (dired-toggle-read-only): Inhibit warnings. + 2012-03-09 Michael Albinus * net/dbus.el: (dbus-property-handler): Return empty array if === modified file 'lisp/dired.el' --- lisp/dired.el 2012-02-25 03:01:11 +0000 +++ lisp/dired.el 2012-03-10 05:20:58 +0000 @@ -1964,7 +1964,8 @@ (interactive) (if (eq major-mode 'dired-mode) (wdired-change-to-wdired-mode) - (toggle-read-only))) + (with-no-warnings + (toggle-read-only)))) (defun dired-next-line (arg) "Move down lines then position at filename. @@ -2622,58 +2623,61 @@ (read-file-name "Goto file: " (dired-current-directory)))) (push-mark))) - (setq file (directory-file-name file)) ; does no harm if no directory - (let (found case-fold-search dir) - (setq dir (or (file-name-directory file) - (error "File name `%s' is not absolute" file))) - (save-excursion - ;; The hair here is to get the result of dired-goto-subdir - ;; without really calling it if we don't have any subdirs. - (if (if (string= dir (expand-file-name default-directory)) - (goto-char (point-min)) - (and (cdr dired-subdir-alist) - (dired-goto-subdir dir))) - (let ((base (file-name-nondirectory file)) - search-string - (boundary (dired-subdir-max))) - (setq search-string - (replace-regexp-in-string "\^m" "\\^m" base nil t)) - (setq search-string - (replace-regexp-in-string "\\\\" "\\\\" search-string nil t)) - (and (dired-switches-escape-p dired-actual-switches) - (string-match "[ \t\n]" search-string) - ;; FIXME to fix this for all possible file names - ;; (embedded control characters etc), we need to - ;; escape everything that `ls -b' does. - (setq search-string - (replace-regexp-in-string " " "\\ " - search-string nil t) - search-string - (replace-regexp-in-string "\t" "\\t" - search-string nil t) - search-string - (replace-regexp-in-string "\n" "\\n" - search-string nil t))) - (while (and (not found) - ;; filenames are preceded by SPC, this makes - ;; the search faster (e.g. for the filename "-"!). - (search-forward (concat " " search-string) - boundary 'move)) - ;; Match could have BASE just as initial substring or - ;; or in permission bits or date or - ;; not be a proper filename at all: - (if (equal base (dired-get-filename 'no-dir t)) - ;; Must move to filename since an (actually - ;; correct) match could have been elsewhere on the - ;; ;; line (e.g. "-" would match somewhere in the - ;; permission bits). - (setq found (dired-move-to-filename)) - ;; If this isn't the right line, move forward to avoid - ;; trying this line again. - (forward-line 1)))))) - (and found - ;; return value of point (i.e., FOUND): - (goto-char found)))) + (unless (file-name-absolute-p file) + (error "File name `%s' is not absolute" file)) + (setq file (directory-file-name file)) ; does no harm if not a directory + (let* ((case-fold-search nil) + (dir (file-name-directory file)) + (found (or + ;; First, look for a listing under the absolute name. + (save-excursion + (goto-char (point-min)) + (dired-goto-file-1 file file (point-max))) + ;; Otherwise, look for it as a relative name. The + ;; hair is to get the result of `dired-goto-subdir' + ;; without calling it if we don't have any subdirs. + (save-excursion + (when (if (string= dir (expand-file-name default-directory)) + (goto-char (point-min)) + (and (cdr dired-subdir-alist) + (dired-goto-subdir dir))) + (dired-goto-file-1 (file-name-nondirectory file) + file + (dired-subdir-max))))))) + ;; Return buffer position, if found. + (if found + (goto-char found)))) + +(defun dired-goto-file-1 (file full-name limit) + "Advance to the Dired listing labeled by FILE; return its position. +Return nil if the listing is not found. If FILE contains +characters that would not appear in a Dired buffer, search using +the quoted forms of those characters. + +FULL-NAME specifies the actual file name the listing must have, +as returned by `dired-get-filename'. LIMIT is the search limit." + (let (str) + (setq str (replace-regexp-in-string "\^m" "\\^m" file nil t)) + (setq str (replace-regexp-in-string "\\\\" "\\\\" str nil t)) + (and (dired-switches-escape-p dired-actual-switches) + (string-match "[ \t\n]" str) + ;; FIXME: to fix this for embedded control characters etc, we + ;; should escape everything that `ls -b' does. + (setq str (replace-regexp-in-string " " "\\ " str nil t) + str (replace-regexp-in-string "\t" "\\t" str nil t) + str (replace-regexp-in-string "\n" "\\n" str nil t))) + (let ((found nil) + ;; filenames are preceded by SPC, this makes the search faster + ;; (e.g. for the filename "-"). + (search-string (concat " " str))) + (while (and (not found) + (search-forward search-string limit 'move)) + ;; Check that we are in the right place. Match could have + ;; BASE just as initial substring or in permission bits etc. + (if (equal full-name (dired-get-filename nil t)) + (setq found (dired-move-to-filename)) + (forward-line 1))) + found))) (defvar dired-find-subdir) ------------------------------------------------------------ revno: 107547 fixes bug(s): http://debbugs.gnu.org/8715 committer: Chong Yidong branch nick: trunk timestamp: Sat 2012-03-10 12:10:21 +0800 message: * doc/misc/flymake.texi: Mention the Automake COMPILE variable. diff: === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2012-03-10 02:20:41 +0000 +++ doc/misc/ChangeLog 2012-03-10 04:10:21 +0000 @@ -1,5 +1,8 @@ 2012-03-10 Chong Yidong + * flymake.texi (Example -- Configuring a tool called via make): + Mention the Automake COMPILE variable (Bug#8715). + * info.texi (Getting Started): Add an index entry (Bug#10450). 2012-03-02 Michael Albinus === modified file 'doc/misc/flymake.texi' --- doc/misc/flymake.texi 2012-01-19 07:21:25 +0000 +++ doc/misc/flymake.texi 2012-03-10 04:10:21 +0000 @@ -449,10 +449,10 @@ @cindex Adding support for C (gcc+make) In this example we will add support for C files syntax checked by -@code{gcc} called via @code{make}. +@command{gcc} called via @command{make}. We're not required to write any new functions, as Flymake already has -functions for @code{make}. We just add a new entry to the +functions for @command{make}. We just add a new entry to the @code{flymake-allowed-file-name-masks}: @lisp @@ -464,7 +464,7 @@ flymake-allowed-file-name-masks)) @end lisp -@code{flymake-simple-make-init} builds the following @code{make} +@code{flymake-simple-make-init} builds the following @command{make} command line: @lisp @@ -486,9 +486,17 @@ gcc -o /dev/null -S ${CHK_SOURCES} @end verbatim -The format of error messages reported by @code{gcc} is already +@noindent +The format of error messages reported by @command{gcc} is already supported by Flymake, so we don't have to add a new entry to -@code{flymake-err-line-patterns}. +@code{flymake-err-line-patterns}. Note that if you are using +Automake, you may want to replace @code{gcc} with the standard +Automake variable @code{COMPILE}: + +@verbatim +check-syntax: + $(COMPILE) -o /dev/null -S ${CHK_SOURCES} +@end verbatim @node Flymake Implementation @chapter Flymake Implementation @@ -548,9 +556,9 @@ @ref{Adding support for a new syntax check tool}. Flymake contains implementations of all functionality required to -support different syntax check modes described above (making -temporary copies, finding master files, etc.), as well as some -tool-specific (routines for @code{make}, @code{Ant}, etc.) code. +support different syntax check modes described above (making temporary +copies, finding master files, etc.), as well as some tool-specific +(routines for Make, Ant, etc.) code. @node Making a temporary copy @@ -626,8 +634,8 @@ way to implement the desired behavior. The default implementation, @code{flymake-get-project-include-dirs-imp}, -uses a @code{make} call. This requires a correct base directory, that is, a -directory containing a correct @code{Makefile}, to be determined. +uses a @command{make} call. This requires a correct base directory, that is, a +directory containing a correct @file{Makefile}, to be determined. As obtaining the project include directories might be a costly operation, its return value is cached in the hash table. The cache is cleared in the beginning @@ -641,16 +649,16 @@ Flymake can be configured to use different tools for performing syntax checks. For example, it can use direct compiler call to syntax check a perl -script or a call to @code{make} for a more complicated case of a +script or a call to @command{make} for a more complicated case of a @code{C/C++} source. The general idea is that simple files, like perl scripts and html pages, can be checked by directly invoking a corresponding tool. Files that are usually more complex and generally used as part of larger projects, might require non-trivial options to be passed to the syntax check tool, like include directories for C++. The latter files are syntax checked using some build tool, like -@code{make} or @code{Ant}. +Make or Ant. -All @code{make} configuration data is usually stored in a file called +All Make configuration data is usually stored in a file called @code{Makefile}. To allow for future extensions, flymake uses a notion of buildfile to reference the 'project configuration' file. ------------------------------------------------------------ revno: 107546 fixes bug(s): http://debbugs.gnu.org/7783 committer: Chong Yidong branch nick: trunk timestamp: Sat 2012-03-10 12:00:13 +0800 message: * loading.texi (Autoload): Explicitly state which forms are processed specially. diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2012-03-10 03:27:10 +0000 +++ doc/lispref/ChangeLog 2012-03-10 04:00:13 +0000 @@ -1,5 +1,8 @@ 2012-03-10 Chong Yidong + * loading.texi (Autoload): Explicitly state which forms are + processed specially (Bug#7783). + * keymaps.texi (Mouse Menus): Describe non-toolkit behavior as the non-default situation. Describe one-submenu exception (Bug#7695). === modified file 'doc/lispref/loading.texi' --- doc/lispref/loading.texi 2012-02-10 07:57:21 +0000 +++ doc/lispref/loading.texi 2012-03-10 04:00:13 +0000 @@ -500,14 +500,31 @@ autoloads for all files in the current directory. The same magic comment can copy any kind of form into -@file{loaddefs.el}. If the form following the magic comment is not a -function-defining form or a @code{defcustom} form, it is copied -verbatim. ``Function-defining forms'' include @code{define-skeleton}, -@code{define-derived-mode}, @code{define-generic-mode} and -@code{define-minor-mode} as well as @code{defun} and -@code{defmacro}. To save space, a @code{defcustom} form is converted to -a @code{defvar} in @file{loaddefs.el}, with some additional information -if it uses @code{:require}. +@file{loaddefs.el}. The form following the magic comment is copied +verbatim, @emph{except} if it is one of the forms which the autoload +facility handles specially (e.g.@: by conversion into an +@code{autoload} call). The forms which are not copied verbatim are +the following: + +@table @asis +@item Definitions for function or function-like objects: +@code{defun} and @code{defmacro}; also @code{defun*} and +@code{defmacro*} (@pxref{Argument Lists,,,cl,CL Manual}), and +@code{define-overloadable-function} (see the commentary in +@file{mode-local.el}). + +@item Definitions for major or minor modes: +@code{define-derived-mode}, @code{define-minor-mode}, +@code{define-compilation-mode}, @code{define-generic-mode}, +@code{easy-mmode-define-global-mode}, @code{define-global-minor-mode}, +@code{define-globalized-minor-mode}, and +@code{easy-mmode-define-minor-mode}. + +@item Other definition types: +@code{defcustom}, @code{defgroup}, @code{defclass} +(@pxref{Top,EIEIO,,eieio,EIEIO}), and @code{define-skeleton} (see the +commentary in @file{skeleton.el}). +@end table You can also use a magic comment to execute a form at build time @emph{without} executing it when the file itself is loaded. To do this, ------------------------------------------------------------ revno: 107545 fixes bug(s): http://debbugs.gnu.org/7695 committer: Chong Yidong branch nick: trunk timestamp: Sat 2012-03-10 11:27:10 +0800 message: Fixes for Mouse Menu node. * doc/lispref/keymaps.texi (Mouse Menus): Describe non-toolkit behavior as the non-default situation. Describe one-submenu exception. * doc/lispref/nonascii.texi (Character Properties): Copyedits. diff: === modified file 'admin/FOR-RELEASE' --- admin/FOR-RELEASE 2012-03-07 08:38:05 +0000 +++ admin/FOR-RELEASE 2012-03-10 03:27:10 +0000 @@ -214,7 +214,7 @@ markers.texi rgm minibuf.texi modes.texi cyd -nonascii.texi +nonascii.texi cyd numbers.texi cyd objects.texi cyd os.texi @@ -227,7 +227,7 @@ strings.texi cyd symbols.texi cyd syntax.texi cyd -text.texi +text.texi cyd tips.texi rgm variables.texi cyd windows.texi === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2012-03-08 05:27:03 +0000 +++ doc/lispref/ChangeLog 2012-03-10 03:27:10 +0000 @@ -1,3 +1,10 @@ +2012-03-10 Chong Yidong + + * keymaps.texi (Mouse Menus): Describe non-toolkit behavior as the + non-default situation. Describe one-submenu exception (Bug#7695). + + * nonascii.texi (Character Properties): Copyedits. + 2012-03-08 Chong Yidong * text.texi (Mode-Specific Indent): Document new behavior of === modified file 'doc/lispref/keymaps.texi' --- doc/lispref/keymaps.texi 2012-03-01 07:29:48 +0000 +++ doc/lispref/keymaps.texi 2012-03-10 03:27:10 +0000 @@ -2345,24 +2345,25 @@ It's often best to use a button-down event to trigger the menu. Then the user can select a menu item by releasing the button. - A single keymap can appear as multiple menu panes, if you explicitly -arrange for this. The way to do this is to make a keymap for each pane, -then create a binding for each of those maps in the main keymap of the -menu. Give each of these bindings an item string that starts with -@samp{@@}. The rest of the item string becomes the name of the pane. -See the file @file{lisp/mouse.el} for an example of this. Any ordinary -bindings with @samp{@@}-less item strings are grouped into one pane, -which appears along with the other panes explicitly created for the -submaps. - - X toolkit menus don't have panes; instead, they can have submenus. -Every nested keymap becomes a submenu, whether the item string starts -with @samp{@@} or not. In a toolkit version of Emacs, the only thing -special about @samp{@@} at the beginning of an item string is that the -@samp{@@} doesn't appear in the menu item. - - Multiple keymaps that define the same menu prefix key produce -separate panes or separate submenus. +@cindex submenu + If the menu keymap contains a binding to a nested keymap, the nested +keymap specifies a @dfn{submenu}. There will be a menu item, labeled +by the nested keymap's item string, and clicking on this item +automatically pops up the specified submenu. As a special exception, +if the menu keymap contains a single nested keymap and no other menu +items, the menu shows the contents of the nested keymap directly, not +as a submenu. + + However, if Emacs is compiled without X toolkit support, submenus +are not supported. Each nested keymap is shown as a menu item, but +clicking on it does not automatically pop up the submenu. If you wish +to imitate the effect of submenus, you can do that by giving a nested +keymap an item string which starts with @samp{@@}. This causes Emacs +to display the nested keymap using a separate @dfn{menu pane}; the +rest of the item string after the @samp{@@} is the pane label. If +Emacs is compiled without X toolkit support, menu panes are not used; +in that case, a @samp{@@} at the beginning of an item string is +omitted when the menu label is displayed, and has no other effect. @node Keyboard Menus @subsection Menus and the Keyboard === modified file 'doc/lispref/nonascii.texi' --- doc/lispref/nonascii.texi 2012-01-19 07:21:25 +0000 +++ doc/lispref/nonascii.texi 2012-03-10 03:27:10 +0000 @@ -412,14 +412,13 @@ Corresponds to the Unicode @code{Decomposition_Type} and @code{Decomposition_Value} properties. The value is a list, whose first element may be a symbol representing a compatibility formatting -tag, such as @code{small}@footnote{ -Note that the Unicode spec writes these tag names inside -@samp{<..>} brackets. The tag names in Emacs do not include the -brackets; e.g., Unicode specifies @samp{} where Emacs uses -@samp{small}. -}; the other elements are characters that give the compatibility -decomposition sequence of this character. For unassigned codepoints, -the value is the character itself. +tag, such as @code{small}@footnote{The Unicode specification writes +these tag names inside @samp{<..>} brackets, but the tag names in +Emacs do not include the brackets; e.g.@: Unicode specifies +@samp{} where Emacs uses @samp{small}. }; the other elements +are characters that give the compatibility decomposition sequence of +this character. For unassigned codepoints, the value is the character +itself. @item decimal-digit-value Corresponds to the Unicode @code{Numeric_Value} property for ------------------------------------------------------------ revno: 107544 fixes bug(s): http://debbugs.gnu.org/10450 committer: Chong Yidong branch nick: trunk timestamp: Sat 2012-03-10 10:20:41 +0800 message: * doc/misc/info.texi (Getting Started): Add an index entry. diff: === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2012-03-02 09:40:05 +0000 +++ doc/misc/ChangeLog 2012-03-10 02:20:41 +0000 @@ -1,3 +1,7 @@ +2012-03-10 Chong Yidong + + * info.texi (Getting Started): Add an index entry (Bug#10450). + 2012-03-02 Michael Albinus * dbus.texi (Signals): Known names will be mapped onto unique === modified file 'doc/misc/info.texi' --- doc/misc/info.texi 2012-02-28 08:17:21 +0000 +++ doc/misc/info.texi 2012-03-10 02:20:41 +0000 @@ -90,6 +90,7 @@ @node Getting Started, Advanced, Top, Top @comment node-name, next, previous, up @chapter Getting Started +@cindex Texinfo This first part of this Info manual describes how to get around inside of Info. The second part of the manual describes various advanced ------------------------------------------------------------ revno: 107543 author: David Edmondson committer: Katsumi Yamaoka branch nick: trunk timestamp: Sat 2012-03-10 02:02:24 +0000 message: mm-uu.el (mm-uu-forward-extract): Be more liberal when extracting forwards as MIME diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2012-03-04 22:19:10 +0000 +++ lisp/gnus/ChangeLog 2012-03-10 02:02:24 +0000 @@ -1,3 +1,8 @@ +2012-03-10 David Edmondson + + * mm-uu.el (mm-uu-forward-extract): Allow for blank lines between the + 'Forwarded Message' header and the start of the message. + 2012-03-04 Thierry Volpiatto * gnus-msg.el (gnus-msg-mail): Call `message-mail' correctly when Gnus === modified file 'lisp/gnus/mm-uu.el' --- lisp/gnus/mm-uu.el 2012-03-08 02:34:26 +0000 +++ lisp/gnus/mm-uu.el 2012-03-10 02:02:24 +0000 @@ -430,7 +430,11 @@ (defun mm-uu-forward-extract () (mm-make-handle (mm-uu-copy-to-buffer - (progn (goto-char start-point) (forward-line) (point)) + (progn + (goto-char start-point) + (forward-line) + (skip-chars-forward "\n") + (point)) (progn (goto-char end-point) (forward-line -1) (point))) '("message/rfc822" (charset . gnus-decoded)))) ------------------------------------------------------------ revno: 107542 committer: Michael Albinus branch nick: trunk timestamp: Fri 2012-03-09 23:06:09 +0100 message: * net/dbus.el: (dbus-property-handler): Return empty array if there are no properties. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-03-09 18:09:46 +0000 +++ lisp/ChangeLog 2012-03-09 22:06:09 +0000 @@ -1,3 +1,8 @@ +2012-03-09 Michael Albinus + + * net/dbus.el: (dbus-property-handler): Return empty array if + there are no properties. + 2012-03-09 Leo Liu * savehist.el (savehist-printable): Stricter check for string === modified file 'lisp/net/dbus.el' --- lisp/net/dbus.el 2012-01-19 07:21:25 +0000 +++ lisp/net/dbus.el 2012-03-09 22:06:09 +0000 @@ -1039,7 +1039,8 @@ (car (last key)) (list :variant (cdar (last (car val)))))))) dbus-registered-objects-table) - (list result)))))) + ;; Return the result, or an empty array. + (list :array (or result '(:signature "{sv}")))))))) ;; Initialize :system and :session buses. This adds their file ------------------------------------------------------------ revno: 107541 fixes bug(s): http://debbugs.gnu.org/10937 committer: Leo Liu branch nick: trunk timestamp: Sat 2012-03-10 02:09:46 +0800 message: Stricter check for string value in savehist-printable diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-03-09 11:06:44 +0000 +++ lisp/ChangeLog 2012-03-09 18:09:46 +0000 @@ -1,3 +1,8 @@ +2012-03-09 Leo Liu + + * savehist.el (savehist-printable): Stricter check for string + value (Bug#10937). + 2012-03-09 Eli Zaretskii * mail/smtpmail.el (smtpmail-send-it): Bind === modified file 'lisp/savehist.el' --- lisp/savehist.el 2012-01-19 07:21:25 +0000 +++ lisp/savehist.el 2012-03-09 18:09:46 +0000 @@ -369,9 +369,11 @@ "Return non-nil if VALUE is printable." (cond ;; Quick response for oft-encountered types known to be printable. - ((stringp value)) ((numberp value)) ((symbolp value)) + ;; String without properties + ((and (stringp value) + (equal-including-properties value (substring-no-properties value)))) (t ;; For others, check explicitly. (with-temp-buffer ------------------------------------------------------------ revno: 107540 fixes bug(s): http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6830 committer: Stefan Monnier branch nick: trunk timestamp: Fri 2012-03-09 11:46:25 -0500 message: * src/buffer.c (compare_overlays): Avoid qsort's instability. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-03-08 18:49:13 +0000 +++ src/ChangeLog 2012-03-09 16:46:25 +0000 @@ -1,3 +1,7 @@ +2012-03-09 Stefan Monnier + + * buffer.c (compare_overlays): Avoid qsort's instability (bug#6830). + 2012-03-08 Jan Djärv * gtkutil.c (x_wm_set_size_hint): Use one row in call to @@ -201,8 +205,8 @@ 2012-02-04 Eli Zaretskii - * w32.c (get_emacs_configuration_options): Include - --enable-checking, if specified, in the return value. + * w32.c (get_emacs_configuration_options): + Include --enable-checking, if specified, in the return value. 2012-02-04 Martin Rudalics @@ -308,8 +312,8 @@ 2012-01-19 Martin Rudalics * window.c (save_window_save, Fcurrent_window_configuration) - (Vwindow_persistent_parameters): Do not use Qstate. Rewrite - doc-strings. + (Vwindow_persistent_parameters): Do not use Qstate. + Rewrite doc-strings. 2012-01-19 Kenichi Handa @@ -483,9 +487,9 @@ * nsselect.m (CUT_BUFFER_SUPPORT): Remove define. (symbol_to_nsstring): Fix indentation. (ns_symbol_to_pb): New function. - (Fns_get_selection_internal): Renamed from Fns_get_cut_buffer_internal. - (Fns_rotate_cut_buffers_internal): Removed. - (Fns_store_selection_internal): Renamed from + (Fns_get_selection_internal): Rename from Fns_get_cut_buffer_internal. + (Fns_rotate_cut_buffers_internal): Remove. + (Fns_store_selection_internal): Rename from Fns_store_cut_buffer_internal. (ns_get_foreign_selection, Fx_own_selection_internal) (Fx_disown_selection_internal, Fx_selection_exists_p) @@ -626,7 +630,7 @@ (coding_set_destination): Return how many bytes coding->destination was relocated. (CODING_DECODE_CHAR, CODING_ENCODE_CHAR, CODING_CHAR_CHARSET) - (CODING_CHAR_CHARSET_P): Adjusted for the avove changes. + (CODING_CHAR_CHARSET_P): Adjust for the avove changes. 2011-12-05 Kazuhiro Ito (tiny change) === modified file 'src/buffer.c' --- src/buffer.c 2012-03-02 02:57:19 +0000 +++ src/buffer.c 2012-03-09 16:46:25 +0000 @@ -2864,7 +2864,11 @@ return s1->beg < s2->beg ? -1 : 1; if (s1->end != s2->end) return s2->end < s1->end ? -1 : 1; - return 0; + /* Avoid the non-determinism of qsort by choosing an arbitrary ordering + between "equal" overlays. The result can still change between + invocations of Emacs, but it won't change in the middle of + `find_field' (bug#6830). */ + return XHASH (s1->overlay) < XHASH (s2->overlay) ? -1 : 1; } /* Sort an array of overlays by priority. The array is modified in place. ------------------------------------------------------------ revno: 107539 author: committer: Eli Zaretskii branch nick: trunk timestamp: Fri 2012-03-09 14:18:25 +0200 message: Update the Persian input methods. leim/quail/persian.el: Update which includes: (1) full compliance to ISIRI-6219, forbiden characters were eliminated and missing characters were added; (2) layer 3 of ISIRI-9147 is now implemented with a '\' prefix; (3) double entry of characters which were postfixed with 'h' is now supported; (4) lots of comment and additional pointers have been added. diff: === modified file 'leim/ChangeLog' --- leim/ChangeLog 2012-02-09 07:48:22 +0000 +++ leim/ChangeLog 2012-03-09 12:18:25 +0000 @@ -1,3 +1,12 @@ +2012-03-09 Mohsen BANAN + + * quail/persian.el: Update which includes: (1) full compliance to + ISIRI-6219, forbiden characters were eliminated and missing + characters were added; (2) layer 3 of ISIRI-9147 is now + implemented with a '\' prefix; (3) double entry of characters + which were postfixed with 'h' is now supported; (4) lots of + comment and additional pointers have been added. + 2011-12-15 Kenichi Handa * quail/ethiopic.el ("ethiopic"): Do not refer to === modified file 'leim/quail/persian.el' --- leim/quail/persian.el 2012-01-05 09:46:05 +0000 +++ leim/quail/persian.el 2012-03-09 12:18:25 +0000 @@ -2,8 +2,8 @@ ;; Copyright (C) 2011-2012 Free Software Foundation, Inc. -;; Author: Mohsen BANAN -;; http://mohsen.banan.1.byname.net/contact +;; Author: Mohsen BANAN +;; http://mohsen.1.banan.byname.net/contact ;; Keywords: multilingual, input method, Farsi, Persian, keyboard @@ -27,12 +27,15 @@ ;;; Commentary: ;; ;; This file contains a collection of input methods for -;; Persian languages - Farsi, Urdu, Pashto (Afghani), ... +;; Persian languages (Farsi, Urdu, Pashto/Afghanic, ...) ;; ;; At this time, the following input methods are specified: ;; -;; - (farsi) Persian Keyboard based on Islamic Republic of Iran's ISIR-9147 -;; - (farsi-translit) Intuitive transliteration keyboard layout for Persian +;; - (farsi-isiri-9149) Persian Keyboard based on Islamic Republic of Iran's ISIR-9147 +;; - (farsi-transliterate-banan) An intuitive transliteration keyboard for Farsi +;; +;; Additional documentaion for these inpput methods can be found at: +;; http://www.persoarabic.org/PLPC/120036 ;; ;;; Code: @@ -42,42 +45,71 @@ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; -;; farsi +;; farsi-isiri-9147 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; The keyboard mapping defined here is based on: ;; -;; Institute of Standards and Industrial Research of Iran -;; Information Technology – Layout of Persian Letters and Symbols on Computer Keyboards -;; ISIRI 9147 -- 1st edition -;; http://www.isiri.org/UserStd/DownloadStd.aspx?id=9147 -;; -;; Only layers 1 and 2 of ISIRI-9147 are applicable to emacs. -;; -;; This input method was built using the Farsi table in X Keyboard Configuration Data Base. -;; -;; 0) Selected gnome keyboard "USA" -;; 1) Created a list of all keys -;; 2) Selected gnome keyboard "Iran" -;; 3) For each key just press it and get the mapped persian character +;; Institute of Standards and Industrial Research of Iran +;; Information Technology – Layout of Persian Letters and Symbols +;; on Computer Keyboards +;; ISIRI 9147 -- 1st edition +;; http://www.isiri.org/UserStd/DownloadStd.aspx?id=9147 +;; +;; The specification is also republished at +;; http://www.farsiweb.ir/wiki/Image:Isiri-9147.pdf +;; and various other sites. +;; +;; ISIRI-6219 is also relevant. +;; +;; Layers 1, 2 and 3 of ISIRI-9147 are fully implemented with the +;; exception of the Backslash, Alt-Backslash, Shift-Space and +;; Alt-Space keys. +;; +;; The Backslash key is used to replace کلید با دگر ساز راست‌ -- the Alt or +;; Meta key. +;; +;; Layer 3 is then entered with the Backslash key and Layer 3 is +;; implemented as two letter keys as specified in ISIRI-9147. +;; +;; The character corresponding to Backslash is entered with Backslash-Backslash. +;; Alt-Backslash has been moved to Backslash-r. +;; Alt-Space has been moved to Backslash-t. +;; Shift-Space has been moved to Backslash-y. +;; +;; With these modifications, farsi-isiri-9147 is a full implementation +;; of ISIRI-9147. Additionally, these modifications allow for this +;; implementation to be ascii input stream based -- in addition to +;; being a keyboard layout. +;; +;; If a key on Layer 1 was reserved to replace دگر ساز راست‌ (the Alt +;; or Meta key), then farsi-isiri-9147 could have claimed full +;; compliance -- without the need for the above description. Perhaps +;; this can be considered a flaw in the base ISIRI-9147 specification +;; to be addressed in the next revision. ;; (quail-define-package - "farsi" "Farsi" " ف" nil "Farsi input method. + "farsi-isiri-9147" "Farsi" " ف" nil "Farsi input method. -Based on ISIRI-9149 Layout of Persian Letters and Symbols on Computer Keyboards. +Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards. " nil t t t t nil nil nil nil nil t) -;; +----------------------------------------------------------------+ -;; | ۱! | ۲٬ | ۳٫ | ۴﷼ | ۵٪ | ۶× | ۷، | ۸* | ۹) | ۰( | -ـ | =+ | `÷ | -;; +----------------------------------------------------------------+ -;; | ضْ| صٌ| ثٍ| قً| فُ| غِ| عَ| هّ| خ] | ح[ | ج} | چ{ | +;; Note: the rows of keys below are enclosed in Left-To-Right Override +;; embedding, to prevent them from being reordered by the Emacs +;; display engine. + + +;; +----------------------------------------------------------------+ +;; ‭| ۱! | ۲٬ | ۳٫ | ۴﷼ | ۵٪ | ۶× | ۷، | ۸* | ۹( | ۰) | -ـ | =+ | `÷ |‬ +;; +----------------------------------------------------------------+ +;; ‭| ضْ| صٌ| ثٍ| قً| فُ| غِ| عَ| هّ| خ] | ح[ | ج{ | چ} |‬ ;; +------------------------------------------------------------+ -;; | شؤ | سئ | یي | بإ | لأ | اآ | تة | ن» | م« | ک: | گ؛ | \| | +;; ‭| ش‌ؤ | س‌ئ | ی‌ي | ب‌إ | لأ | اآ | ت‌ة | ن« | م» | ک: | گ؛ | \| |‬ ;; +-----------------------------------------------------------+ -;; | ظك | طٓ| زژ | رٰ| ذB | دٔ| پء | و> | .< | /؟ | +;; ‭| ظ‌ك | طٓ| زژ | رٰ| ذB | دٔ| پء | و< | .> | /؟ |‬ ;; +-------------------------------------------+ (quail-define-rules @@ -93,7 +125,7 @@ ("0" ?۰) ("-" ?-) ("=" ?=) - ;;("`" ?‍\)) ;; اتصال مجازى + ("`" ?\u200D) ;; ZWJ -- ZERO WIDTH JOINER اتصال مجازى ("q" ?ض) ("w" ?ص) ("e" ?ث) @@ -117,7 +149,7 @@ ("l" ?م) (";" ?ک) ("'" ?گ) - ("\\" ?\\) ;; خط اريب وارو + ("z" ?ظ) ("x" ?ط) ("c" ?ز) @@ -170,93 +202,204 @@ ("X" ?ٓ) ("C" ?ژ) ("V" ?ٰ) - ;; ("B" ?‌‌) ;; فاصلهً مجازى + ("B" ?\u200C) ;; ZWNJ -- ZERO WIDTH NON-JOINER فاصلهٔ مجازى ("N" ?ٔ) ;; همزه فارسى بالا ("M" ?ء) ;; harf farsi hamzeh ("<" ?>) (">" ?<) ("?" ?؟) + + ;; Level 3 Entered with \ + ;; + ("\\" ?\\) ;; خط اريب وارو + ("\\\\" ?\\) + ("\\~" ?\u007E) + ("\\1" ?\u0060) + ("\\2" ?\u0040) + ("\\3" ?\u0023) + ("\\4" ?\u0024) + ("\\5" ?\u0025) + ("\\6" ?\u005E) + ("\\7" ?\u0026) + ("\\8" ?\u2022) + ("\\9" ?\u200E) + ("\\0" ?\u200F) + ("\\-" ?\u005F) + ("\\+" ?\u2212) + ("\\q" ?\u00B0) + ;;\\w" ?\u0000) + ("\\e" ?\u20AC) + ("\\r" ?\u2010) ;; replacement for Alt-BSL + ("\\t" ?\u00A0) ;; replacement for ALT-SPC + ("\\y" ?\u200C) ;; replacement for SHIFT-SPC + ;;("\\u" ?\u0000) + ("\\i" ?\u202D) + ("\\o" ?\u202E) + ("\\p" ?\u202C) + ("\\[" ?\u202A) + ("\\]" ?\u202B) + ;;("\\a" ?\u0000) + ;;("\\s" ?\u0000) + ("\\d" ?\u0649) + ;;("\\f" ?\u0000) + ;;("\\g" ?\u0000) + ("\\h" ?\u0671) + ;;("\\j" ?\u0000) + ("\\k" ?\uFD3E) + ("\\l" ?\uFD3F) + ("\\;" ?\u003B) + ("\\'" ?\u0022) + ;;("\\z" ?\u0000) + ;;("\\x" ?\u0000) + ;;("\\c" ?\u0000) + ("\\v" ?\u0656) + ("\\b" ?\u200D) + ("\\n" ?\u0655) + ("\\m" ?\u2026) + ("\\," ?\u002C) + ("\\." ?\u0027) + ("\\?" ?\u003F) + ;;("\\\\" ?\u2010) ;; Moved to backslash r to leave room for BSL-BSL ) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; -;; farsi-translit +;; farsi-transliterate-banan +;; +;; Given a Qwerty keyboard, use Persian-to-Latin transliteration knowledge +;; to reverse transliterate in persian ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; -;;; This is a persian/farsi transliteration keyboard designed -;;; for people who: -;;; - Know how to write in farsi -;;; - Are comfortable with the qwerty keyboard -;;; - Are familiar with two letter phonetic mapping to persian characters -;;; (e.g.: gh, kh, ch, sh, zh, hh, lh) -;;; -;;; This translit keyboard is designed to be intuitive such that -;;; mapping are easy and natural to remember for a persian writer. -;;; For some persian characters there are multiple ways of inputting -;;; the same character. -;;; -;;; The letter 'h' is used for a number of two character mappings, -;;; this means that some character sequence inputs need to be repeated -;;; followed by a backspace followed by the 'h'. -;;; For example: سحر = 's' 's' '' 'h' 'h' 'r' -;;; In practice such sequences are rare. -;;; - +;;; See http://www.persoarabic.org/PLPC/120036 document for more complete +;;; documentation of keyboard bindings and usage instructions. +;;; +;; +;; ISIRI-9147 Persian keyboard is generally not well suited for Iranian-Expatriates +;; working/living in the West. +;; +;; The qwetry keyboard is usually second nature to Persian speaking expatriates and they +;; don't want to learn/adapt to ISIRI-9147. They expect software to adapt to them. +;; +;; That is what the ``Banan Multi-Character (Reverse) Transliteration Persian Input Method'' does. +;; +;; The typical profile of the user is assumed to be one who: +;; +;; - can write in farsi (not just speak it). +;; - is fully comfortable with a qwerty latin keyboard. +;; - is not familiar with isir-9147 and does not wish to be trained. +;; - communicatates and writes in a mixed globish/persian -- not pure persian. +;; - is intuitively familiar with transliteration of farsi/persian into latin based on two letter +;; phonetic mapping to persian characters (e.g., gh ق -- kh خ -- sh ش -- ch چ -- zh ژ. +;; +;; This transliteration keyboard is designed to be intuitive such that +;; mapping are easy and natural to remember for a persian writer. +;; It is designed to be equivalent in capability to farsi-isiri-9147 +;; and provide for inputing all characters enumerated in ISIRI-6219. +;; +;; farsi-transliterate-banan is of course phonetic oriented. But it is very different from +;; pinglish. Pinglish is word oriented where you sound out the word with latin letters -- +;; incuding the vowels. farsi-transliterate-banan is letter oriented where you enter the +;; latin letter/letters closest to the persian letter. And usually omit vowels. +;; +;; For some persian characters there are multiple ways of inputing +;; the same character. For example both ``i'' and ``y'' produce ی. +;; For یک ``yk'', ``y'' is more natural and for این ``ain'', ``i'' is more natural. +;; +;; The more frequently used keys are mapped to lower case. The less frequently used letter moves to +;; upper case. For example: ``s'' is س and ``S'' is ص. ``h'' is ح and ``H'' +;; is ه. +;; +;; Multi-character input is based on \, &, and / prefix +;; characters. The letter 'h' is used as a postfix for the following two character mappings: +;; gh ق -- kh خ -- sh ش -- ch چ -- zh ژ -- Th ة -- Yh ى. +;; +;; +;; Prefix letter \ is used for two character inputs when an alternate form of a letter +;; is desired for exampe \% is: ‌÷ when % is: ٪. +;; +;; Prefix letter & is used for multi-character inputs when special characters are +;; desired based on their abbreviate name. For example you can enter ‎ to enter the +;; ``LEFT-TO-RIGHT MARK'' character. +;; +;; Prefix letter / is used to provide two characters. / is: ``ZERO WIDTH NON-JOINER'' +;; and // is /. +;; +;; The letter 'h' is used in a number of two character postfix mappings, +;; for example ``sh'' ش. So if you need the sequence of ``s'' and ``h'' you +;; need to repeat the ``s''. For example: سحر = 's' 's' 'h' 'r'. +;; (quail-define-package - "farsi-translit" "Farsi" "پ" t + "farsi-transliterate-banan" "Farsi" "ب" t "Intuitive transliteration keyboard layout for persian/farsi. " nil t t t t nil nil nil nil nil t) (quail-define-rules - ("a" ?ا) - ("A" ?آ) ;; alef madde - ("b" ?ب) - ("p" ?پ) +;;;;;;;;;;; isiri-6219 Table 5 -- جدول ۵ - حروِفِ اصلیِ فارسی + ("W" ?ء) ;; hamzeh + ("A" ?آ) ;; U+0622 & ARABIC LETTER ALEF WITH MADDA ABOVE & الف با کلاه + ("a" ?ا) ;; U+0627 & ARABIC LETTER ALEF & الف + ("\\a" ?أ) + ("b" ?ب) ;; U+0628 & ARABIC LETTER BEH & + ("p" ?پ) ;; U+067e & ARABIC LETTER PEH & ("t" ?ت) + ("tt" ?ت) ("c" ?ث) + ("cc" ?ث) ("j" ?ج) ("ch" ?چ) - ("hh" ?ح) + ("h" ?ح) ("kh" ?خ) ("d" ?د) ("Z" ?ذ) ("r" ?ر) ("z" ?ز) + ("zz" ?ز) ("zh" ?ژ) ("s" ?س) + ("ss" ?س) ("sh" ?ش) ("S" ?ص) ("x" ?ض) ("T" ?ط) + ("TT" ?ط) ("X" ?ظ) ("w" ?ع) - ("Q" ?غ) + ("q" ?غ) ("f" ?ف) - ("q" ?ق) + ("Q" ?ق) ("gh" ?ق) ("k" ?ک) - ("K" ?ك) ;; Arabic kaf + ("kk" ?ک) ("g" ?گ) + ("gg" ?گ) ("l" ?ل) - ("lh" ?ﻻ) ("m" ?م) ("n" ?ن) ("v" ?و) + ("u" ?و) ("V" ?ؤ) - ("u" ?و) ("H" ?ه) - ("h" ?ه) - ("th" ?ة) ;; ta marbuteh - ("yh" ?ۀ) ;; he ye - ("y" ?ى) - ("i" ?ي) + ("y" ?ی) + ("i" ?ی) ("I" ?ئ) + +;;;;;;;;;;; isiri-6219 Table 6 -- جدول ۶ - حروِفِ عربی + ("F" ?إ) + ("D" ?\u0671) ;; (ucs-insert #x0671)ٱ named: حرفِ الفِ وصل + ("K" ?ك) ;; Arabic kaf + ("Th" ?ة) ;; ta marbuteh + ("Y" ?ي) + ("YY" ?ي) + ("Yh" ?ى) + +;;;;;;;;;;; isiri-6219 Table 4 -- جدول ۴ - ارقام و علائم ریاضی + ("0" ?۰) ("1" ?۱) ("2" ?۲) ("3" ?۳) @@ -266,31 +409,106 @@ ("7" ?۷) ("8" ?۸) ("9" ?۹) - ("0" ?۰) - - ("F" ?إ) - ("G" ?أ) - - ("~" ?ّ) ;; tashdid ;; تشديد فارسى - ("`" ?ٓ) - ("e" ?ِ) ;; zir زير فارسى -- فتحه + + ("\\/" ?\u066B) ;; (ucs-insert #x066B)٫ named: ممیزِ فارسی + ("\\," ?\u066C) ;; (ucs-insert #x066C)٬ named: جداکننده‌ی هزارهای فارسی + ("%" ?\u066A) ;; (ucs-insert #x066A)٪ named: درصدِ فارسی + ("+" ?\u002B) ;; (ucs-insert #x002B)+ named: علامتِ به‌اضافه + ("-" ?\u2212) ;; (ucs-insert #x2212)− named: علامتِ منها + ("\\*" ?\u00D7) ;; (ucs-insert #x00D7)× named: علامتِ ضرب + ("\\%" ?\u007F) ;; (ucs-insert #x00F7)÷ named: علامتِ تقسیم + ("<" ?\u003C) ;; (ucs-insert #x003C)< named: علامتِ کوچکتر + ("=" ?\u003D) ;; (ucs-insert #x003D)= named: علامتِ مساوی + (">" ?\u003E) ;; (ucs-insert #x003E)> named: علامتِ بزرگتر + + +;;;;;;;;;;; isiri-6219 Table 2 -- جدول ۲ - علائم نقطه گذاریِ مشترک + ;;; Space + ("." ?.) ;; + (":" ?\u003A) ;; (ucs-insert #x003A): named: + ("!" ?\u0021) ;; (ucs-insert #x0021)! named: + ("\\." ?\u2026) ;; (ucs-insert #x2026)… named: + ("\\-" ?\u2010) ;; (ucs-insert #x2010)‐ named: + ("-" ?\u002D) ;; (ucs-insert #x002D)- named: + ("|" ?|) + ;;("\\\\" ?\) + ("//" ?/) + ("*" ?\u002A) ;; (ucs-insert #x002A)* named: + ("(" ?\u0028) ;; (ucs-insert #x0028)( named: + (")" ?\u0029) ;; (ucs-insert #x0029)) named: + ("[" ?\u005B) ;; (ucs-insert #x005B)[ named: + ("[" ?\u005D) ;; (ucs-insert #x005D)] named: + ("{" ?\u007B) ;; (ucs-insert #x007B){ named: + ("}" ?\u007D) ;; (ucs-insert #x007D)} named: + ("\\<" ?\u00AB) ;; (ucs-insert #x00AB)« named: + ("\\>" ?\u00BB) ;; (ucs-insert #x00BB)» named: + + +;;;;;;;;;;; isiri-6219 Table 3 -- جدول ۳ - علائم نقطه گذاریِ فارسی + ("," ?،) ;; farsi + (";" ?؛) ;; + ("?" ?؟) ;; alamat soal + ("_" ?ـ) ;; + + +;;;;;;;;;;; isiri-6219 Table 1 -- جدول ۱ - نویسه‌های کنترلی + ;; LF + ;; CR + ("‌" ?\u200C) ;; (ucs-insert #x200C)‌ named: فاصله‌ی مجازی + ("/" ?\u200C) ;; + ("‍" ?\u200D) ;; (ucs-insert #x200D)‍ named: اتصالِ مجازی + ("J" ?\u200D) ;; + ("‎" ?\u200E) ;; (ucs-insert #x200E)‎ named: نشانه‌ی چپ‌به‌راست + ("‏" ?\u200F) ;; (ucs-insert #x200F)‏ named: نشانه‌ی راست‌به‌چپ + ("&ls;" ?\u2028) ;; (ucs-insert #x2028)
 named: جداکننده‌ی سطرها + ("&ps;" ?\u2028) ;; (ucs-insert #x2029)
 named: جداکننده‌ی بندها + ("&lre;" ?\u202A) ;; (ucs-insert #x202A)‪ named: زیرمتنِ چپ‌به‌راست + ("&rle;" ?\u202B) ;; (ucs-insert #x202B) named: زیرمتنِ راست‌به‌چپ + ("&pdf;" ?\u202C) ;; (ucs-insert #x202C) named: پایانِ زیرمتن + ("&lro;" ?\u202D) ;; (ucs-insert #x202D) named: زیرمتنِ اکیداً چپ‌به‌راست + ("&rlo;" ?\u202D) ;; (ucs-insert #x202E) named: زیرمتنِ اکیداً راست‌به‌چپ + ("&bom;" ?\uFEFF) ;; (ucs-insert #xFEFF) named: نشانه‌ی ترتیبِ بایت‌ها + + +;;;;;;;;;;; isiri-6219 Table 7 -- جدول ۷ - نشانه‌هایِ فارسی + ("^" ?َ) ;; zbar ;; زبر فارسى + ("e" ?ِ) ;; zir زير فارسى + ("o" ?ُ) ;; peesh ;; پيش فارسى -- ضمه ("E" ?ٍ) ;; eizan ;; دو زير فارسى -- تنوين جر - ("#" ?ً) ;; ً tanvin nasb ;; دو زبر فارسى -- تنوين نصب - ("@" ?ْ) ;; ساکن فارسى - ("^" ?َ) ;; zbar ;; زبر فارسى -- فتحه - ("o" ?ُ) ;; peesh ;; پيش فارسى -- ضمه + ("#" ?ً) ;; دو زبر ("O" ?ٌ) ;; دو پيش فارسى -- تنوين رفع - ("?" ?؟) ;; alamat soal - ("&" ?ٔ) ;; همزه فارسى بالا - ("$" ?ء) ;; hamzeh - ("%" ?÷) ;; - ("*" ?×) ;; - (";" ?؛) ;; - (",h" ?،) ;; farsi - (",h" ?,) ;; latin - ("." ?.) ;; - ("_" ?ـ) ;; + ("~" ?ّ) ;; tashdid ;; تشديد فارسى + ("@" ?ْ) ;; ساکن فارسى + ("U" ?\u0653) ;; (ucs-insert #x0653)ٓ named: مدِ فارسی + ("`" ?ٔ) ;; همزه فارسى بالا + ("C" ?\u0655) ;; (ucs-insert #x0655)ٕ named: همزه فارسى پایین + ("$" ?\u0670) ;; (ucs-insert #x0670)ٰ named: الفِ مقصوره‌ی فارسی + + +;;;;;;;;;;; isiri-6219 Table 8 - Forbiden Characters -- جدول ۸ - نویسه‌هایِ ممنوع +;; ;; he ye (ucs-insert 1728) kills emacs-24.0.90 +;; arabic digits 0-9 + + +;;;;;;; Latin Extensions + ("\\" ?\\) ;; خط اريب وارو + ("\\\\" ?\\) + ("\\~" ?~) + ("\\@" ?@) + ("\\#" ?#) + ("\\$" ?\uFDFC) ;; (ucs-insert #xFDFC)﷼ named: + ("\\^" ?^) + ("\\1" ?1) + ("\\2" ?2) + ("\\3" ?3) + ("\\4" ?4) + ("\\5" ?5) + ("\\6" ?6) + ("\\7" ?7) + ("\\8" ?8) + ("\\9" ?9) + ("\\0" ?0) + ) - ;;; persian.el ends here ------------------------------------------------------------ revno: 107538 committer: Eli Zaretskii branch nick: trunk timestamp: Fri 2012-03-09 13:06:44 +0200 message: Make sure smtpmail produces valid mbox files with Unix EOLs for FCC. lisp/mail/smtpmail.el (smtpmail-send-it): Bind coding-system-for-write to *-unix, so that FCC files are kept in valid mbox format. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-03-09 03:21:49 +0000 +++ lisp/ChangeLog 2012-03-09 11:06:44 +0000 @@ -1,3 +1,9 @@ +2012-03-09 Eli Zaretskii + + * mail/smtpmail.el (smtpmail-send-it): Bind + coding-system-for-write to *-unix, so that FCC files are kept in + valid mbox format. + 2012-03-09 Glenn Morris * files.el (dir-locals-find-file): === modified file 'lisp/mail/smtpmail.el' --- lisp/mail/smtpmail.el 2012-02-15 03:15:26 +0000 +++ lisp/mail/smtpmail.el 2012-03-09 11:06:44 +0000 @@ -324,7 +324,10 @@ (if (re-search-forward "^FCC:" delimline t) ;; Force `mail-do-fcc' to use the encoding of the mail ;; buffer to encode outgoing messages on FCC files. - (let ((coding-system-for-write smtpmail-code-conv-from)) + (let ((coding-system-for-write + ;; mbox files must have Unix EOLs. + (coding-system-change-eol-conversion + smtpmail-code-conv-from 'unix))) (mail-do-fcc delimline))) (if mail-interactive (with-current-buffer errbuf ------------------------------------------------------------ revno: 107537 committer: Glenn Morris branch nick: trunk timestamp: Thu 2012-03-08 22:21:49 -0500 message: Another dir-locals iteration * lisp/files.el (dir-locals-find-file): Don't check result is regular, readable. (dir-locals-read-from-file): Demote errors. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-03-08 18:21:07 +0000 +++ lisp/ChangeLog 2012-03-09 03:21:49 +0000 @@ -1,3 +1,9 @@ +2012-03-09 Glenn Morris + + * files.el (dir-locals-find-file): + Don't check result is regular, readable. + (dir-locals-read-from-file): Demote errors. + 2012-03-08 Eli Zaretskii * international/quail.el (quail-insert-kbd-layout): Insert === modified file 'lisp/files.el' --- lisp/files.el 2012-03-08 06:06:28 +0000 +++ lisp/files.el 2012-03-09 03:21:49 +0000 @@ -3574,13 +3574,14 @@ (dir-elt nil)) ;; `locate-dominating-file' may have abbreviated the name. (and locals-file - (setq locals-file (expand-file-name dir-locals-file-name locals-file)) - ;; FIXME? is it right to silently ignore an unreadable file? - ;; Maybe we'd want to keep searching in that case. - ;; That is a locate-dominating-file issue. - (or (not (file-readable-p locals-file)) - (not (file-regular-p locals-file))) - (setq locals-file nil)) + (setq locals-file (expand-file-name dir-locals-file-name locals-file))) + ;; Let dir-locals-read-from-file inform us via demoted-errors + ;; about unreadable files, etc. + ;; Maybe we'd want to keep searching though - that is + ;; a locate-dominating-file issue. +;;; (or (not (file-readable-p locals-file)) +;;; (not (file-regular-p locals-file))) +;;; (setq locals-file nil)) ;; Find the best cached value in `dir-locals-directory-cache'. (dolist (elt dir-locals-directory-cache) (when (and (eq t (compare-strings file nil (length (car elt)) @@ -3622,15 +3623,19 @@ The new class name is the same as the directory in which FILE is found. Returns the new class name." (with-temp-buffer - (insert-file-contents file) - (let* ((dir-name (file-name-directory file)) - (class-name (intern dir-name)) - (variables (let ((read-circle nil)) - (read (current-buffer))))) - (dir-locals-set-class-variables class-name variables) - (dir-locals-set-directory-class dir-name class-name - (nth 5 (file-attributes file))) - class-name))) + ;; Errors reading the file are not very informative. + ;; Eg just "Error: (end-of-file)" does not give any clue that the + ;; problem is related to dir-locals. + (with-demoted-errors + (insert-file-contents file) + (let* ((dir-name (file-name-directory file)) + (class-name (intern dir-name)) + (variables (let ((read-circle nil)) + (read (current-buffer))))) + (dir-locals-set-class-variables class-name variables) + (dir-locals-set-directory-class dir-name class-name + (nth 5 (file-attributes file))) + class-name)))) (defun hack-dir-local-variables () "Read per-directory local variables for the current buffer.