Using saved parent location: http://bzr.savannah.gnu.org/r/emacs/trunk/ Now on revision 101119. ------------------------------------------------------------ revno: 101119 committer: Glenn Morris branch nick: trunk timestamp: Tue 2010-08-17 23:54:26 -0700 message: Add bug ref to placeholder NEWS entry. diff: === modified file 'etc/NEWS' --- etc/NEWS 2010-08-18 02:48:28 +0000 +++ etc/NEWS 2010-08-18 06:54:26 +0000 @@ -214,7 +214,7 @@ * Changes in Specialized Modes and Packages in Emacs 24.1 -** FIXME: xdg-open for browse-url and reportbug, 2010/08. +** FIXME: xdg-open for browse-url and reportbug, 2010/08. (Close bug#4546?) ** Archive Mode has basic support to browse 7z archives. ------------------------------------------------------------ revno: 101118 committer: Jan D branch nick: trunk timestamp: Wed 2010-08-18 08:30:54 +0200 message: * gtkutil.c (update_frame_tool_bar): Literal stings are const char*. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-18 06:16:55 +0000 +++ src/ChangeLog 2010-08-18 06:30:54 +0000 @@ -1,3 +1,7 @@ +2010-08-18 Jan Djärv + + * gtkutil.c (update_frame_tool_bar): Literal stings are const char*. + 2010-08-18 David De La Harpe Golden * nsselect.m (QCLIPBOARD, NXPrimaryPboard): Define. === modified file 'src/gtkutil.c' --- src/gtkutil.c 2010-08-17 21:43:47 +0000 +++ src/gtkutil.c 2010-08-18 06:30:54 +0000 @@ -4292,8 +4292,8 @@ GtkWidget *wbutton = NULL; GtkWidget *weventbox; Lisp_Object specified_file; - char *label = (STRINGP (PROP (TOOL_BAR_ITEM_LABEL)) - ? SSDATA (PROP (TOOL_BAR_ITEM_LABEL)) : ""); + const char *label = (STRINGP (PROP (TOOL_BAR_ITEM_LABEL)) + ? SSDATA (PROP (TOOL_BAR_ITEM_LABEL)) : ""); ti = gtk_toolbar_get_nth_item (GTK_TOOLBAR (wtoolbar), i); ------------------------------------------------------------ revno: 101117 committer: Jan D branch nick: trunk timestamp: Wed 2010-08-18 08:16:55 +0200 message: Use CLIPBOARD and PRIMARY on NS (Bug#6677). * lisp/term/ns-win.el (ns-get-pasteboard, ns-set-pasteboard): Use QCLIPBOARD instead of QPRIMARY (Bug#6677). * src/nsselect.m (QCLIPBOARD, NXPrimaryPboard): Define. (symbol_to_nsstring): Map QCLIPBOARD => NSGeneralPboard, QPRIMARY => NXPrimaryPboard. (ns_string_to_symbol): NSGeneralPboard => QCLIPBOARD, NXPrimaryPboard => QPRIMARY. (nxatoms_of_nsselect): NXPrimaryPboard = PrimarySelection, NXSecondaryPboard = SecondarySelection. (syms_of_nsselect): Intern QCLIPBOARD (Bug#6677). diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-17 20:18:40 +0000 +++ lisp/ChangeLog 2010-08-18 06:16:55 +0000 @@ -1,3 +1,8 @@ +2010-08-18 Jan Djärv + + * term/ns-win.el (ns-get-pasteboard, ns-set-pasteboard): Use + QCLIPBOARD instead of QPRIMARY (Bug#6677). + 2010-08-17 Stefan Monnier * emacs-lisp/lisp.el (up-list): Obey forward-sexp-function if set. === modified file 'lisp/term/ns-win.el' --- lisp/term/ns-win.el 2010-07-13 10:41:49 +0000 +++ lisp/term/ns-win.el 2010-08-18 06:16:55 +0000 @@ -1003,7 +1003,7 @@ (defun ns-get-pasteboard () "Returns the value of the pasteboard." - (ns-get-cut-buffer-internal 'PRIMARY)) + (ns-get-cut-buffer-internal 'CLIPBOARD)) (declare-function ns-store-cut-buffer-internal "nsselect.m" (buffer string)) @@ -1011,7 +1011,7 @@ "Store STRING into the pasteboard of the Nextstep display server." ;; Check the data type of STRING. (if (not (stringp string)) (error "Nonstring given to pasteboard")) - (ns-store-cut-buffer-internal 'PRIMARY string)) + (ns-store-cut-buffer-internal 'CLIPBOARD string)) ;; We keep track of the last text selected here, so we can check the ;; current selection against it, and avoid passing back our own text === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-17 21:43:47 +0000 +++ src/ChangeLog 2010-08-18 06:16:55 +0000 @@ -1,3 +1,14 @@ +2010-08-18 David De La Harpe Golden + + * nsselect.m (QCLIPBOARD, NXPrimaryPboard): Define. + (symbol_to_nsstring): Map QCLIPBOARD => NSGeneralPboard, + QPRIMARY => NXPrimaryPboard. + (ns_string_to_symbol): NSGeneralPboard => QCLIPBOARD, + NXPrimaryPboard => QPRIMARY. + (nxatoms_of_nsselect): NXPrimaryPboard = PrimarySelection, + NXSecondaryPboard = SecondarySelection. + (syms_of_nsselect): Intern QCLIPBOARD (Bug#6677). + 2010-08-17 Stefan Monnier * gtkutil.c (update_frame_tool_bar): Don't assume TOOL_BAR_ITEM_LABEL === modified file 'src/nsselect.m' --- src/nsselect.m 2010-08-16 08:17:02 +0000 +++ src/nsselect.m 2010-08-18 06:16:55 +0000 @@ -37,7 +37,7 @@ #define CUT_BUFFER_SUPPORT -Lisp_Object QSECONDARY, QTEXT, QFILE_NAME; +Lisp_Object QCLIPBOARD, QSECONDARY, QTEXT, QFILE_NAME; static Lisp_Object Vns_sent_selection_hooks; static Lisp_Object Vns_lost_selection_hooks; @@ -46,6 +46,8 @@ static Lisp_Object Qforeign_selection; +/* NSGeneralPboard is pretty much analogous to X11 CLIPBOARD */ +NSString *NXPrimaryPboard; NSString *NXSecondaryPboard; @@ -61,7 +63,8 @@ symbol_to_nsstring (Lisp_Object sym) { CHECK_SYMBOL (sym); - if (EQ (sym, QPRIMARY)) return NSGeneralPboard; + if (EQ (sym, QCLIPBOARD)) return NSGeneralPboard; + if (EQ (sym, QPRIMARY)) return NXPrimaryPboard; if (EQ (sym, QSECONDARY)) return NXSecondaryPboard; if (EQ (sym, QTEXT)) return NSStringPboardType; return [NSString stringWithUTF8String: SDATA (XSYMBOL (sym)->xname)]; @@ -72,6 +75,8 @@ ns_string_to_symbol (NSString *t) { if ([t isEqualToString: NSGeneralPboard]) + return QCLIPBOARD; + if ([t isEqualToString: NXPrimaryPboard]) return QPRIMARY; if ([t isEqualToString: NXSecondaryPboard]) return QSECONDARY; @@ -537,12 +542,14 @@ void nxatoms_of_nsselect (void) { - NXSecondaryPboard = @"Selection"; + NXPrimaryPboard = @"PrimarySelection"; + NXSecondaryPboard = @"SecondarySelection"; } void syms_of_nsselect (void) { + QCLIPBOARD = intern ("CLIPBOARD"); staticpro (&QCLIPBOARD); QSECONDARY = intern ("SECONDARY"); staticpro (&QSECONDARY); QTEXT = intern ("TEXT"); staticpro (&QTEXT); QFILE_NAME = intern ("FILE_NAME"); staticpro (&QFILE_NAME); ------------------------------------------------------------ revno: 101116 committer: Glenn Morris branch nick: trunk timestamp: Tue 2010-08-17 19:48:28 -0700 message: Add NEWS placeholder. diff: === modified file 'etc/NEWS' --- etc/NEWS 2010-08-16 02:33:17 +0000 +++ etc/NEWS 2010-08-18 02:48:28 +0000 @@ -214,6 +214,8 @@ * Changes in Specialized Modes and Packages in Emacs 24.1 +** FIXME: xdg-open for browse-url and reportbug, 2010/08. + ** Archive Mode has basic support to browse 7z archives. ** ERC changes ------------------------------------------------------------ revno: 101115 committer: Glenn Morris branch nick: trunk timestamp: Tue 2010-08-17 19:44:25 -0700 message: Fix some more Org `check-declare' issues. * ob.el: Require org when compiling. (org-save-outline-visibility): Remove macro declaration. * ob-emacs-lisp.el: Require ob-comint when compiling, for macros. Remove unnecessary/macro declarations. * org-docview.el: Require doc-view when compiling. (doc-view-goto-page): Autoload rather than declaring. (doc-view-current-page): Remove macro declaration. diff: === modified file 'lisp/org/ChangeLog' --- lisp/org/ChangeLog 2010-08-17 07:29:26 +0000 +++ lisp/org/ChangeLog 2010-08-18 02:44:25 +0000 @@ -1,3 +1,13 @@ +2010-08-18 Glenn Morris + + * ob.el: Require org when compiling. + (org-save-outline-visibility): Remove macro declaration. + * ob-emacs-lisp.el: Require ob-comint when compiling, for macros. + Remove unnecessary/macro declarations. + * org-docview.el: Require doc-view when compiling. + (doc-view-goto-page): Autoload rather than declaring. + (doc-view-current-page): Remove macro declaration. + 2010-08-17 Glenn Morris * ob.el (tramp-compat-make-temp-file, org-edit-src-code) === modified file 'lisp/org/ob-emacs-lisp.el' --- lisp/org/ob-emacs-lisp.el 2010-07-19 09:47:27 +0000 +++ lisp/org/ob-emacs-lisp.el 2010-08-18 02:44:25 +0000 @@ -28,15 +28,12 @@ ;;; Code: (require 'ob) +(eval-when-compile (require 'ob-comint)) (defvar org-babel-default-header-args:emacs-lisp '((:hlines . "yes") (:colnames . "no")) "Default arguments for evaluating an emacs-lisp source block.") -(declare-function org-babel-comint-with-output "ob-comint" (&rest body)) -(declare-function org-babel-comint-buffer-livep "ob-comint" (buffer)) -(declare-function org-babel-comint-wait-for-output "ob-comint" (buffer)) -(declare-function org-babel-comint-in-buffer "ob-comint" (buffer &rest body)) (declare-function orgtbl-to-generic "org-table" (table params)) (defun org-babel-expand-body:emacs-lisp (body params &optional processed-params) === modified file 'lisp/org/ob.el' --- lisp/org/ob.el 2010-08-17 07:29:26 +0000 +++ lisp/org/ob.el 2010-08-18 02:44:25 +0000 @@ -29,7 +29,9 @@ ;; http://orgmode.org/worg/org-contrib/babel/ ;;; Code: -(eval-when-compile (require 'cl)) +(eval-when-compile + (require 'cl) + (require 'org)) ; org-save-outline-visibility macro (require 'org-macs) (defvar org-babel-call-process-region-original) @@ -40,10 +42,9 @@ (declare-function tramp-file-name-user "tramp" (vec)) (declare-function tramp-file-name-host "tramp" (vec)) (declare-function org-icompleting-read "org" (&rest args)) -(declare-function org-edit-src-code "org-src" +(declare-function org-edit-src-code "org-src" (&optional context code edit-buffer-name)) (declare-function org-open-at-point "org" (&optional in-emacs reference-buffer)) -(declare-function org-save-outline-visibility "org" (use-markers &rest body)) (declare-function org-narrow-to-subtree "org" ()) (declare-function org-entry-get "org" (pom property &optional inherit literal-nil)) (declare-function org-make-options-regexp "org" (kwds &optional extra)) === modified file 'lisp/org/org-docview.el' --- lisp/org/org-docview.el 2010-07-19 09:47:27 +0000 +++ lisp/org/org-docview.el 2010-08-18 02:44:25 +0000 @@ -45,9 +45,9 @@ (require 'org) +(eval-when-compile (require 'doc-view)) ; doc-view-current-page macro -(declare-function doc-view-goto-page "doc-view" (page)) -(declare-function doc-view-current-page "doc-view" (&optional win)) +(autoload 'doc-view-goto-page "doc-view") (org-add-link-type "docview" 'org-docview-open) (add-hook 'org-store-link-functions 'org-docview-store-link) ------------------------------------------------------------ revno: 101114 committer: Glenn Morris branch nick: trunk timestamp: Tue 2010-08-17 19:38:44 -0700 message: Fix typo in previous gnus-sum.el change. diff: === modified file 'lisp/gnus/gnus-sum.el' --- lisp/gnus/gnus-sum.el 2010-08-17 07:00:16 +0000 +++ lisp/gnus/gnus-sum.el 2010-08-18 02:38:44 +0000 @@ -12627,7 +12627,7 @@ (declare-function bookmark-default-handler "bookmark" (bmk)) (declare-function bookmark-get-bookmark-record "bookmark" (bmk)) (defvar bookmark-yank-point) -(defvar bookmark-current-bookmark) +(defvar bookmark-current-buffer) (defun gnus-summary-bookmark-make-record () "Make a bookmark entry for a Gnus summary buffer." ------------------------------------------------------------ revno: 101113 committer: Stefan Monnier branch nick: trunk timestamp: Tue 2010-08-17 23:43:47 +0200 message: * src/gtkutil.c (update_frame_tool_bar): Don't assume TOOL_BAR_ITEM_LABEL is a string. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-17 21:05:26 +0000 +++ src/ChangeLog 2010-08-17 21:43:47 +0000 @@ -1,3 +1,8 @@ +2010-08-17 Stefan Monnier + + * gtkutil.c (update_frame_tool_bar): Don't assume TOOL_BAR_ITEM_LABEL + is a string. + 2010-08-17 Jan Djärv * nsfns.m (ns_frame_parm_handlers): Add a slot for the @@ -41,8 +46,9 @@ 2010-08-15 Jan Djärv - * keyboard.c (parse_tool_bar_item): malloc buf. Set TOOL_BAR_ITEM_LABEL - to empty string if not set to new_lbl (Bug#6855). + * keyboard.c (parse_tool_bar_item): malloc buf. + Set TOOL_BAR_ITEM_LABEL to empty string if not set to + new_lbl (Bug#6855). 2010-08-14 Eli Zaretskii @@ -50,8 +56,8 @@ * w32term.c (x_draw_stretch_glyph_string): In R2L rows, display the cursor on the right edge of the stretch glyph. - * xdisp.c (window_box_right_offset, window_box_right): Fix - commentary. + * xdisp.c (window_box_right_offset, window_box_right): + Fix commentary. * xdisp.c (Fcurrent_bidi_paragraph_direction): Fix paragraph direction when point is inside a run of whitespace characters. === modified file 'src/gtkutil.c' --- src/gtkutil.c 2010-08-11 18:28:10 +0000 +++ src/gtkutil.c 2010-08-17 21:43:47 +0000 @@ -4292,7 +4292,8 @@ GtkWidget *wbutton = NULL; GtkWidget *weventbox; Lisp_Object specified_file; - char *label = SSDATA (PROP (TOOL_BAR_ITEM_LABEL)); + char *label = (STRINGP (PROP (TOOL_BAR_ITEM_LABEL)) + ? SSDATA (PROP (TOOL_BAR_ITEM_LABEL)) : ""); ti = gtk_toolbar_get_nth_item (GTK_TOOLBAR (wtoolbar), i); ------------------------------------------------------------ revno: 101112 committer: Jan D branch nick: trunk timestamp: Tue 2010-08-17 23:05:26 +0200 message: * nsfns.m (ns_frame_parm_handlers): Add a slot for the x_set_tool_bar_position handler. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-17 20:05:50 +0000 +++ src/ChangeLog 2010-08-17 21:05:26 +0000 @@ -1,3 +1,8 @@ +2010-08-17 Jan Djärv + + * nsfns.m (ns_frame_parm_handlers): Add a slot for the + x_set_tool_bar_position handler. + 2010-08-17 Eli Zaretskii * w32fns.c : Add a slot for the === modified file 'src/nsfns.m' --- src/nsfns.m 2010-08-06 10:12:41 +0000 +++ src/nsfns.m 2010-08-17 21:05:26 +0000 @@ -1041,6 +1041,7 @@ x_set_font_backend, /* generic OK */ x_set_alpha, 0, /* x_set_sticky */ + 0, /* x_set_tool_bar_position */ }; ------------------------------------------------------------ revno: 101111 committer: Stefan Monnier branch nick: trunk timestamp: Tue 2010-08-17 22:18:40 +0200 message: * lisp/emacs-lisp/lisp.el (up-list): Obey forward-sexp-function if set. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-17 16:32:08 +0000 +++ lisp/ChangeLog 2010-08-17 20:18:40 +0000 @@ -1,5 +1,7 @@ 2010-08-17 Stefan Monnier + * emacs-lisp/lisp.el (up-list): Obey forward-sexp-function if set. + Font-lock '...' strings, plus various simplifications and fixes. * progmodes/octave-mod.el (octave-font-lock-keywords): Use regexp-opt. (octave-font-lock-close-quotes): New function. === modified file 'lisp/emacs-lisp/lisp.el' --- lisp/emacs-lisp/lisp.el 2010-05-08 18:47:07 +0000 +++ lisp/emacs-lisp/lisp.el 2010-08-17 20:18:40 +0000 @@ -142,7 +142,13 @@ (or arg (setq arg 1)) (let ((inc (if (> arg 0) 1 -1))) (while (/= arg 0) - (goto-char (or (scan-lists (point) inc 1) (buffer-end arg))) + (if forward-sexp-function + (condition-case err + (while (let ((pos (point))) + (forward-sexp inc) + (/= (point) pos))) + (scan-error (goto-char (nth 2 err)))) + (goto-char (or (scan-lists (point) inc 1) (buffer-end arg)))) (setq arg (- arg inc))))) (defun kill-sexp (&optional arg) ------------------------------------------------------------ revno: 101110 committer: Eli Zaretskii branch nick: trunk timestamp: Tue 2010-08-17 23:05:50 +0300 message: Fix bug #6796. w32fns.c : Add a slot for the x_set_tool_bar_position handler, needed to support changes from 2010-07-29 (revno 100939) for positioning the tool bar. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-16 08:17:02 +0000 +++ src/ChangeLog 2010-08-17 20:05:50 +0000 @@ -1,3 +1,9 @@ +2010-08-17 Eli Zaretskii + + * w32fns.c : Add a slot for the + x_set_tool_bar_position handler, needed to support changes from + 2010-07-29 (revno 100939) for positioning the tool bar. (Bug#6796) + 2010-08-16 Jan Djärv * nsselect.m: include keyboard.h for QPRIMARY, remove its === modified file 'src/w32fns.c' --- src/w32fns.c 2010-08-08 21:12:29 +0000 +++ src/w32fns.c 2010-08-17 20:05:50 +0000 @@ -6812,6 +6812,7 @@ x_set_font_backend, x_set_alpha, 0, /* x_set_sticky */ + 0, /* x_set_tool_bar_position */ }; void ------------------------------------------------------------ revno: 101109 committer: Stefan Monnier branch nick: trunk timestamp: Tue 2010-08-17 21:38:30 +0200 message: * lisp/newcomment.el (comment-add): Move comment to docstring. diff: === modified file 'lisp/newcomment.el' --- lisp/newcomment.el 2010-01-13 08:35:10 +0000 +++ lisp/newcomment.el 2010-08-17 19:38:30 +0000 @@ -945,12 +945,12 @@ (delete-char n) (setq ,bindent (- ,bindent n))))))))))) -;; Compute the number of extra comment starter characters -;; (extra semicolons in Lisp mode, extra stars in C mode, etc.) -;; If ARG is non-nil, just follow ARG. -;; If the comment-starter is multi-char, just follow ARG. -;; Otherwise obey comment-add, and double it if EXTRA is non-nil. (defun comment-add (arg) + "Compute the number of extra comment starter characters +\(extra semicolons in Lisp mode, extra stars in C mode, etc.) +If ARG is non-nil, just follow ARG. +If the comment starter is multi-char, just follow ARG. +Otherwise obey `comment-add'." (if (and (null arg) (= (string-match "[ \t]*\\'" comment-start) 1)) (* comment-add 1) (1- (prefix-numeric-value arg)))) ------------------------------------------------------------ revno: 101108 committer: Glenn Morris branch nick: trunk timestamp: Tue 2010-08-17 09:32:08 -0700 message: Restore lisp/ChangeLog entries clobbered in r101106. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-17 15:49:30 +0000 +++ lisp/ChangeLog 2010-08-17 16:32:08 +0000 @@ -30,6 +30,20 @@ \C-cm to report-emacs-bug-insert-to-mailer and add help text about it. + * net/browse-url.el (browse-url-default-browser): Add cond + for browse-url-xdg-open. + (browse-url-can-use-xdg-open, browse-url-xdg-open): New functions. + +2010-08-17 Glenn Morris + + * progmodes/cc-engine.el (c-new-BEG, c-new-END) + (c-fontify-recorded-types-and-refs): Define for compiler. + * progmodes/cc-mode.el (c-new-BEG, c-new-END): Move definitions + before use. + + * calendar/icalendar.el (icalendar--convert-recurring-to-diary): + Fix format call. + 2010-08-17 Michael Albinus * net/tramp.el (tramp-handle-make-symbolic-link): Flush file ------------------------------------------------------------ revno: 101107 committer: Stefan Monnier branch nick: trunk timestamp: Tue 2010-08-17 17:49:30 +0200 message: Font-lock '...' strings, plus various simplifications and fixes. * lisp/progmodes/octave-mod.el (octave-font-lock-keywords): Use regexp-opt. (octave-font-lock-close-quotes): New function. (octave-font-lock-syntactic-keywords): New var. (octave-mode): Use it. Set beginning-of-defun-function. (octave-mode-map): Don't override the -defun commands. (octave-mode-menu): Pass it directly to easy-menu-define; remove (now generic) -defun commands; use info-lookup-symbol. (octave-block-match-alist): Fix up last change so that octave-close-block uses the more specific keyword. (info-lookup-mode): Silence byte-compiler. (octave-beginning-of-defun): Not interactive any more. Optimize slightly. (octave-end-of-defun, octave-mark-defun, octave-in-defun-p): Remove. (octave-indent-defun, octave-send-defun): Use mark-defun instead. (octave-completion-at-point-function): Make sure point is within beg..end. (octave-reindent-then-newline-and-indent): Use reindent-then-newline-and-indent. (octave-add-octave-menu): Remove. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-17 10:07:41 +0000 +++ lisp/ChangeLog 2010-08-17 15:49:30 +0000 @@ -1,3 +1,26 @@ +2010-08-17 Stefan Monnier + + Font-lock '...' strings, plus various simplifications and fixes. + * progmodes/octave-mod.el (octave-font-lock-keywords): Use regexp-opt. + (octave-font-lock-close-quotes): New function. + (octave-font-lock-syntactic-keywords): New var. + (octave-mode): Use it. Set beginning-of-defun-function. + (octave-mode-map): Don't override the -defun commands. + (octave-mode-menu): Pass it directly to easy-menu-define; + remove (now generic) -defun commands; use info-lookup-symbol. + (octave-block-match-alist): Fix up last change so that + octave-close-block uses the more specific keyword. + (info-lookup-mode): Silence byte-compiler. + (octave-beginning-of-defun): Not interactive any more. + Optimize slightly. + (octave-end-of-defun, octave-mark-defun, octave-in-defun-p): Remove. + (octave-indent-defun, octave-send-defun): Use mark-defun instead. + (octave-completion-at-point-function): Make sure point is within + beg..end. + (octave-reindent-then-newline-and-indent): + Use reindent-then-newline-and-indent. + (octave-add-octave-menu): Remove. + 2010-08-17 Jan Djärv * mail/emacsbug.el (report-emacs-bug-insert-to-mailer) @@ -34,8 +57,8 @@ 2010-08-15 Chong Yidong * mouse.el (mouse--drag-set-mark-and-point): New function. - (mouse-drag-track): Use LOCATION arg to push-mark. Use - mouse--drag-set-mark-and-point to take click-count into + (mouse-drag-track): Use LOCATION arg to push-mark. + Use mouse--drag-set-mark-and-point to take click-count into consideration when updating point and mark (Bug#6840). 2010-08-15 Chong Yidong @@ -45,8 +68,8 @@ 2010-08-14 Štěpán Němec (tiny change) - * font-lock.el (lisp-font-lock-keywords-2): Add - combine-after-change-calls, condition-case-no-debug, + * font-lock.el (lisp-font-lock-keywords-2): + Add combine-after-change-calls, condition-case-no-debug, with-demoted-errors, and with-silent-modifications (Bug#6025). 2010-08-14 Kevin Ryde @@ -71,8 +94,8 @@ (menu-bar-showhide-tool-bar-menu-customize-enable-left) (menu-bar-showhide-tool-bar-menu-customize-enable-right) (menu-bar-showhide-tool-bar-menu-customize-enable-top) - (menu-bar-showhide-tool-bar-menu-customize-enable-bottom): Call - menu-bar-set-tool-bar-position. + (menu-bar-showhide-tool-bar-menu-customize-enable-bottom): + Call menu-bar-set-tool-bar-position. 2010-08-12 Stefan Monnier === modified file 'lisp/progmodes/octave-mod.el' --- lisp/progmodes/octave-mod.el 2010-08-12 14:44:16 +0000 +++ lisp/progmodes/octave-mod.el 2010-08-17 15:49:30 +0000 @@ -171,9 +171,7 @@ 'font-lock-builtin-face 'font-lock-preprocessor-face)) ;; Fontify all builtin variables. - (cons (concat "\\<\\(" - (mapconcat 'identity octave-variables "\\|") - "\\)\\>") + (cons (concat "\\<" (regexp-opt octave-variables) "\\>") 'font-lock-variable-name-face) ;; Fontify all function declarations. (list octave-function-header-regexp @@ -181,6 +179,30 @@ '(3 font-lock-function-name-face nil t))) "Additional Octave expressions to highlight.") +(defvar octave-font-lock-syntactic-keywords + ;; Try to distinguish the string-quotes from the transpose-quotes. + '(("[[({,; ]\\('\\)" (1 "\"'")) + (octave-font-lock-close-quotes))) + +(defun octave-font-lock-close-quotes (limit) + "Fix the syntax-table of the closing quotes of single-quote strings." + ;; Freely inspired from perl-font-lock-special-syntactic-constructs. + (let ((state (syntax-ppss))) + (while (< (point) limit) + (cond + ((eq (nth 3 state) ?\') + ;; A '..' string. + (save-excursion + (when (and (or (looking-at "\\('\\)") + (re-search-forward "[^\\]\\(?:\\\\\\\\\\)*\\('\\)" + nil t)) + (not (eobp))) + (put-text-property (match-beginning 1) (match-end 1) + 'syntax-table (string-to-syntax "\"'")))))) + + (setq state (parse-partial-sexp (point) limit nil nil state + 'syntax-table))))) + (defcustom inferior-octave-buffer "*Inferior Octave*" "Name of buffer for running an inferior Octave process." :type 'string @@ -195,9 +217,6 @@ (define-key map " " 'octave-electric-space) (define-key map "\n" 'octave-reindent-then-newline-and-indent) (define-key map "\e\n" 'octave-indent-new-comment-line) - (define-key map "\M-\C-a" 'octave-beginning-of-defun) - (define-key map "\M-\C-e" 'octave-end-of-defun) - (define-key map "\M-\C-h" 'octave-mark-defun) (define-key map "\M-\C-q" 'octave-indent-defun) (define-key map "\C-c\C-b" 'octave-submit-bug-report) (define-key map "\C-c\C-p" 'octave-previous-code-line) @@ -231,7 +250,9 @@ "Keymap used in Octave mode.") -(defvar octave-mode-menu + +(easy-menu-define octave-mode-menu octave-mode-map + "Menu for Octave mode." '("Octave" ("Lines" ["Previous Code Line" octave-previous-code-line t] @@ -247,9 +268,6 @@ ["Mark Block" octave-mark-block t] ["Close Block" octave-close-block t]) ("Functions" - ["Begin of Function" octave-beginning-of-defun t] - ["End of Function" octave-end-of-defun t] - ["Mark Function" octave-mark-defun t] ["Indent Function" octave-indent-defun t] ["Insert Function" octave-insert-defun t]) "-" @@ -265,14 +283,14 @@ ["Indent Line" indent-according-to-mode t] ["Complete Symbol" completion-at-point t] "-" + ;; FIXME: Make them toggle-buttons. ["Toggle Abbrev Mode" abbrev-mode t] ["Toggle Auto-Fill Mode" auto-fill-mode t] "-" ["Submit Bug Report" octave-submit-bug-report t] "-" ["Describe Octave Mode" describe-mode t] - ["Lookup Octave Index" octave-help t]) - "Menu for Octave mode.") + ["Lookup Octave Index" info-lookup-symbol t])) (defvar octave-mode-syntax-table (let ((table (make-syntax-table))) @@ -324,6 +342,7 @@ newline or semicolon after an else or end keyword." :type 'boolean :group 'octave) + (defcustom octave-block-offset 2 "Extra indentation applied to statements in Octave block structures." :type 'integer @@ -347,13 +366,13 @@ (concat octave-block-else-regexp "\\|" octave-block-end-regexp)) (defvar octave-block-match-alist '(("do" . ("until")) - ("for" . ("endfor" "end")) - ("function" . ("endfunction")) - ("if" . ("else" "elseif" "endif" "end")) - ("switch" . ("case" "otherwise" "endswitch" "end")) - ("try" . ("catch" "end_try_catch")) - ("unwind_protect" . ("unwind_protect_cleanup" "end_unwind_protect")) - ("while" . ("endwhile" "end"))) + ("for" . ("end" "endfor")) + ("function" . ("end" "endfunction")) + ("if" . ("else" "elseif" "end" "endif")) + ("switch" . ("case" "otherwise" "end" "endswitch")) + ("try" . ("catch" "end" "end_try_catch")) + ("unwind_protect" . ("unwind_protect_cleanup" "end" "end_unwind_protect")) + ("while" . ("end" "endwhile"))) "Alist with Octave's matching block keywords. Has Octave's begin keywords as keys and a list of the matching else or end keywords as associated values.") @@ -514,7 +533,9 @@ (set (make-local-variable 'normal-auto-fill-function) 'octave-auto-fill) (set (make-local-variable 'font-lock-defaults) - '(octave-font-lock-keywords nil nil)) + '(octave-font-lock-keywords nil nil nil nil + (font-lock-syntactic-keywords . octave-font-lock-syntactic-keywords) + (parse-sexp-lookup-properties . t))) (set (make-local-variable 'imenu-generic-expression) octave-mode-imenu-generic-expression) @@ -522,11 +543,15 @@ (add-hook 'completion-at-point-functions 'octave-completion-at-point-function nil t) + (set (make-local-variable 'beginning-of-defun-function) + 'octave-beginning-of-defun) - (octave-add-octave-menu) + (easy-menu-add octave-mode-menu) (octave-initialize-completions) (run-mode-hooks 'octave-mode-hook)) +(defvar info-lookup-mode) + (defun octave-help () "Get help on Octave symbols from the Octave info files. Look up symbol in the function, operator and variable indices of the info files." @@ -583,22 +608,6 @@ (let ((case-fold-search nil)) (re-search-backward regexp nil 'move count))) -(defun octave-in-defun-p () - "Return t if point is inside an Octave function declaration. -The function is taken to start at the `f' of `function' and to end after -the end keyword." - (let ((pos (point))) - (save-excursion - (or (and (octave-looking-at-kw "\\") - (octave-not-in-string-or-comment-p)) - (and (octave-beginning-of-defun) - (condition-case nil - (progn - (octave-forward-block) - t) - (error nil)) - (< pos (point))))))) - (defun octave-maybe-insert-continuation-string () (if (or (octave-in-comment-p) (save-excursion @@ -733,7 +742,7 @@ "Properly indent the Octave function which contains point." (interactive) (save-excursion - (octave-mark-defun) + (mark-defun) (message "Indenting function...") (indent-region (point) (mark) nil)) (message "Indenting function...done.")) @@ -990,16 +999,16 @@ With positive ARG, do it that many times. Negative argument -N means move forward to Nth following beginning of a function. Returns t unless search stops at the beginning or end of the buffer." - (interactive "p") (let* ((arg (or arg 1)) (inc (if (> arg 0) 1 -1)) - (found)) + (found nil) + (case-fold-search nil)) (and (not (eobp)) - (not (and (> arg 0) (octave-looking-at-kw "\\"))) + (not (and (> arg 0) (looking-at "\\"))) (skip-syntax-forward "w")) (while (and (/= arg 0) (setq found - (octave-re-search-backward-kw "\\" inc))) + (re-search-backward "\\" inc))) (if (octave-not-in-string-or-comment-p) (setq arg (- arg inc)))) (if found @@ -1007,40 +1016,6 @@ (and (< inc 0) (goto-char (match-beginning 0))) t)))) -(defun octave-end-of-defun (&optional arg) - "Move forward to the end of an Octave function. -With positive ARG, do it that many times. Negative argument -N means -move back to Nth preceding end of a function. - -An end of a function occurs right after the end keyword matching the -`function' keyword that starts the function." - (interactive "p") - (or arg (setq arg 1)) - (and (< arg 0) (skip-syntax-backward "w")) - (and (> arg 0) (skip-syntax-forward "w")) - (if (octave-in-defun-p) - (setq arg (- arg 1))) - (if (= arg 0) (setq arg -1)) - (if (octave-beginning-of-defun (- arg)) - (octave-forward-block))) - -(defun octave-mark-defun () - "Put point at the beginning of this Octave function, mark at its end. -The function marked is the one containing point or following point." - (interactive) - (let ((pos (point))) - (if (or (octave-in-defun-p) - (and (octave-beginning-of-defun -1) - (octave-in-defun-p))) - (progn - (skip-syntax-forward "w") - (octave-beginning-of-defun) - (push-mark (point)) - (octave-end-of-defun) - (exchange-point-and-mark)) - (goto-char pos) - (message "No function to mark found")))) - ;;; Filling (defun octave-auto-fill () @@ -1195,9 +1170,11 @@ (defun octave-completion-at-point-function () "Find the text to complete and the corresponding table." (let* ((beg (save-excursion (backward-sexp 1) (point))) - (end (if (< beg (point)) - (save-excursion (goto-char beg) (forward-sexp 1) (point)) - (point)))) + (end (point))) + (if (< beg (point)) + ;; Extend region past point, if applicable. + (save-excursion (goto-char beg) (forward-sexp 1) + (setq end (max end (point))))) (list beg end octave-completion-alist))) (defun octave-complete-symbol () @@ -1211,15 +1188,12 @@ (defun octave-reindent-then-newline-and-indent () "Reindent current Octave line, insert newline, and indent the new line. If Abbrev mode is on, expand abbrevs first." + ;; FIXME: None of this is Octave-specific. (interactive) (if abbrev-mode (expand-abbrev)) (if octave-blink-matching-block (octave-blink-matching-block-open)) - (save-excursion - (delete-region (point) (progn (skip-chars-backward " \t") (point))) - (indent-according-to-mode)) - (insert "\n") - (indent-according-to-mode)) + (reindent-then-newline-and-indent)) (defun octave-electric-semi () "Insert a semicolon in Octave mode. @@ -1301,15 +1275,6 @@ \n _ \n "endfunction" > \n) -;;; Menu -(defun octave-add-octave-menu () - "Add the `Octave' menu to the menu bar in Octave mode." - (require 'easymenu) - (easy-menu-define octave-mode-menu-map octave-mode-map - "Menu keymap for Octave mode." octave-mode-menu) - (easy-menu-add octave-mode-menu-map octave-mode-map)) - - ;;; Communication with the inferior Octave process (defun octave-kill-process () "Kill inferior Octave process and its buffer." @@ -1375,7 +1340,7 @@ "Send current Octave function to the inferior Octave process." (interactive) (save-excursion - (octave-mark-defun) + (mark-defun) (octave-send-region (point) (mark)))) (defun octave-send-line (&optional arg) ------------------------------------------------------------ revno: 101106 committer: Jan D. branch nick: trunk timestamp: Tue 2010-08-17 12:07:41 +0200 message: Add command C-c m in report-emacs-bug that puts the bug into preferred mailer. Depends on xdg-email being available. * lisp/mail/emacsbug.el (report-emacs-bug-insert-to-mailer) (report-emacs-bug-can-use-xdg-email): New functions. (report-emacs-bug): Set can-xdg-email to result of report-emacs-bug-can-use-xdg-email. If can-xdg-email bind \C-cm to report-emacs-bug-insert-to-mailer and add help text about it. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-17 08:01:10 +0000 +++ lisp/ChangeLog 2010-08-17 10:07:41 +0000 @@ -1,18 +1,11 @@ 2010-08-17 Jan Djärv - * net/browse-url.el (browse-url-default-browser): Add cond - for browse-url-xdg-open - (browse-url-can-use-xdg-open, browse-url-xdg-open): New functions - -2010-08-17 Glenn Morris - - * progmodes/cc-engine.el (c-new-BEG, c-new-END) - (c-fontify-recorded-types-and-refs): Define for compiler. - * progmodes/cc-mode.el (c-new-BEG, c-new-END): Move definitions - before use. - - * calendar/icalendar.el (icalendar--convert-recurring-to-diary): - Fix format call. + * mail/emacsbug.el (report-emacs-bug-insert-to-mailer) + (report-emacs-bug-can-use-xdg-email): New functions. + (report-emacs-bug): Set can-xdg-email to result of + report-emacs-bug-can-use-xdg-email. If can-xdg-email bind + \C-cm to report-emacs-bug-insert-to-mailer and add help text + about it. 2010-08-17 Michael Albinus === modified file 'lisp/mail/emacsbug.el' --- lisp/mail/emacsbug.el 2010-03-18 06:18:47 +0000 +++ lisp/mail/emacsbug.el 2010-08-17 10:07:41 +0000 @@ -74,6 +74,52 @@ (declare-function message-sort-headers "message" ()) (defvar message-strip-special-text-properties) +(defun report-emacs-bug-can-use-xdg-email () + "Check if xdg-email can be used, i.e. we are on Gnome, KDE or xfce4." + (and (getenv "DISPLAY") + (executable-find "xdg-email") + (or (getenv "GNOME_DESKTOP_SESSION_ID") + ;; GNOME_DESKTOP_SESSION_ID is deprecated, check on Dbus also. + (condition-case nil + (eq 0 (call-process + "dbus-send" nil nil nil + "--dest=org.gnome.SessionManager" + "--print-reply" + "/org/gnome/SessionManager" + "org.gnome.SessionManager.CanShutdown")) + (error nil)) + (equal (getenv "KDE_FULL_SESSION") "true") + (condition-case nil + (eq 0 (call-process + "/bin/sh" nil nil nil + "-c" + "xprop -root _DT_SAVE_MODE|grep xfce4")) + (error nil))))) + +(defun report-emacs-bug-insert-to-mailer () + (interactive) + (save-excursion + (let* ((to (progn + (goto-char (point-min)) + (forward-line) + (and (looking-at "^To: \\(.*\\)") + (match-string-no-properties 1)))) + (subject (progn + (forward-line) + (and (looking-at "^Subject: \\(.*\\)") + (match-string-no-properties 1)))) + (body (progn + (forward-line 2) + (if (> (point-max) (point)) + (buffer-substring-no-properties (point) (point-max)))))) + (if (and to subject body) + (start-process "xdg-email" nil "xdg-email" + "--subject" subject + "--body" body + (concat "mailto:" to)) + (error "Subject, To or body not found"))))) + + ;;;###autoload (defun report-emacs-bug (topic &optional recent-keys) "Report a bug in GNU Emacs. @@ -93,6 +139,7 @@ (prompt-properties '(field emacsbug-prompt intangible but-helpful rear-nonsticky t)) + (can-xdg-email (report-emacs-bug-can-use-xdg-email)) user-point message-end-point) (setq message-end-point (with-current-buffer (get-buffer-create "*Messages*") @@ -226,6 +273,9 @@ ;; This is so the user has to type something in order to send easily. (use-local-map (nconc (make-sparse-keymap) (current-local-map))) (define-key (current-local-map) "\C-c\C-i" 'report-emacs-bug-info) + (if can-xdg-email + (define-key (current-local-map) "\C-cm" + 'report-emacs-bug-insert-to-mailer)) ;; Could test major-mode instead. (cond ((memq mail-user-agent '(message-user-agent gnus-user-agent)) (setq report-emacs-bug-send-command "message-send-and-exit" @@ -245,6 +295,9 @@ report-emacs-bug-send-command)))) (princ (substitute-command-keys " Type \\[kill-buffer] RET to cancel (don't send it).\n")) + (if can-xdg-email + (princ (substitute-command-keys + " Type \\[report-emacs-bug-insert-to-mailer] to insert text to you preferred mail program.\n"))) (terpri) (princ (substitute-command-keys " Type \\[report-emacs-bug-info] to visit in Info the Emacs Manual section ------------------------------------------------------------ revno: 101105 committer: Jan D. branch nick: trunk timestamp: Tue 2010-08-17 10:01:10 +0200 message: Add ability to use xdg-open, i.e. your desktop default browser. * net/browse-url.el (browse-url-default-browser): Add cond for browse-url-xdg-open (browse-url-can-use-xdg-open, browse-url-xdg-open): New functions diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-17 06:54:03 +0000 +++ lisp/ChangeLog 2010-08-17 08:01:10 +0000 @@ -1,3 +1,9 @@ +2010-08-17 Jan Djärv + + * net/browse-url.el (browse-url-default-browser): Add cond + for browse-url-xdg-open + (browse-url-can-use-xdg-open, browse-url-xdg-open): New functions + 2010-08-17 Glenn Morris * progmodes/cc-engine.el (c-new-BEG, c-new-END) === modified file 'lisp/net/browse-url.el' --- lisp/net/browse-url.el 2010-04-29 14:04:33 +0000 +++ lisp/net/browse-url.el 2010-08-17 08:01:10 +0000 @@ -892,6 +892,7 @@ Galeon, Konqueror, Netscape, Mosaic, Lynx in an xterm, and then W3." (apply (cond + ((browse-url-can-use-xdg-open) 'browse-url-xdg-open) ((executable-find browse-url-gnome-moz-program) 'browse-url-gnome-moz) ((executable-find browse-url-mozilla-program) 'browse-url-mozilla) ((executable-find browse-url-firefox-program) 'browse-url-firefox) @@ -905,6 +906,41 @@ (lambda (&rest ignore) (error "No usable browser found")))) url args)) +(defun browse-url-can-use-xdg-open () + "Check if xdg-open can be used, i.e. we are on Gnome, KDE or xfce4." + (and (getenv "DISPLAY") + (executable-find "xdg-open") + ;; xdg-open may call gnome-open and that does not wait for its child + ;; to finish. This child may then be killed when the parent dies. + ;; Use nohup to work around. + (executable-find "nohup") + (or (getenv "GNOME_DESKTOP_SESSION_ID") + ;; GNOME_DESKTOP_SESSION_ID is deprecated, check on Dbus also. + (condition-case nil + (eq 0 (call-process + "dbus-send" nil nil nil + "--dest=org.gnome.SessionManager" + "--print-reply" + "/org/gnome/SessionManager" + "org.gnome.SessionManager.CanShutdown")) + (error nil)) + (equal (getenv "KDE_FULL_SESSION") "true") + (condition-case nil + (eq 0 (call-process + "/bin/sh" nil nil nil + "-c" + "xprop -root _DT_SAVE_MODE|grep xfce4")) + (error nil))))) + + +;;;###autoload +(defun browse-url-xdg-open (url &optional new-window) + (interactive (browse-url-interactive-arg "URL: ")) + (call-process "/bin/sh" nil nil nil + "-c" + (concat "nohup xdg-open " url + ">/dev/null 2>&1 branch nick: trunk timestamp: Tue 2010-08-17 00:29:26 -0700 message: Fix some Org errors revealed by `make check-declare'. * ob.el (tramp-compat-make-temp-file, org-edit-src-code) (org-entry-get, org-table-import): Fix declarations. (org-match-string-no-properties): Remove declaration. * ob-sh.el (org-babel-comint-in-buffer) (org-babel-comint-wait-for-output, org-babel-comint-buffer-livep) (org-babel-comint-with-output): Remove unnecessary declarations. * ob-R.el (orgtbl-to-tsv): Fix declaration. * org-list.el (org-entry-get): Fix declaration. diff: === modified file 'lisp/org/ChangeLog' --- lisp/org/ChangeLog 2010-07-24 11:53:19 +0000 +++ lisp/org/ChangeLog 2010-08-17 07:29:26 +0000 @@ -1,3 +1,14 @@ +2010-08-17 Glenn Morris + + * ob.el (tramp-compat-make-temp-file, org-edit-src-code) + (org-entry-get, org-table-import): Fix declarations. + (org-match-string-no-properties): Remove unnecessary declaration. + * ob-sh.el (org-babel-comint-in-buffer) + (org-babel-comint-wait-for-output, org-babel-comint-buffer-livep) + (org-babel-comint-with-output): Remove unnecessary declarations. + * ob-R.el (orgtbl-to-tsv): Fix declaration. + * org-list.el (org-entry-get): Fix declaration. + 2010-07-19 Eric Schulte * ob-C.el: New file. === modified file 'lisp/org/ob-R.el' --- lisp/org/ob-R.el 2010-07-19 09:47:27 +0000 +++ lisp/org/ob-R.el 2010-08-17 07:29:26 +0000 @@ -33,7 +33,7 @@ (require 'ob-eval) (eval-when-compile (require 'cl)) -(declare-function orgtbl-to-tsv "ob-table" (table params)) +(declare-function orgtbl-to-tsv "org-table" (table params)) (declare-function R "ext:essd-r" (&optional start-args)) (declare-function inferior-ess-send-input "ext:ess-inf" ()) === modified file 'lisp/org/ob-sh.el' --- lisp/org/ob-sh.el 2010-07-19 09:47:27 +0000 +++ lisp/org/ob-sh.el 2010-08-17 07:29:26 +0000 @@ -34,10 +34,6 @@ (eval-when-compile (require 'cl)) (declare-function org-babel-ref-variables "ob-ref" (params)) -(declare-function org-babel-comint-in-buffer "ob-comint" (buffer &rest body)) -(declare-function org-babel-comint-wait-for-output "ob-comint" (buffer)) -(declare-function org-babel-comint-buffer-livep "ob-comint" (buffer)) -(declare-function org-babel-comint-with-output "ob-comint" (meta &rest body)) (declare-function orgtbl-to-generic "org-table" (table params)) (defvar org-babel-default-header-args:sh '()) === modified file 'lisp/org/ob.el' --- lisp/org/ob.el 2010-07-19 09:47:27 +0000 +++ lisp/org/ob.el 2010-08-17 07:29:26 +0000 @@ -25,7 +25,7 @@ ;;; Commentary: ;; See the online documentation for more information -;; +;; ;; http://orgmode.org/worg/org-contrib/babel/ ;;; Code: @@ -34,24 +34,25 @@ (defvar org-babel-call-process-region-original) (declare-function show-all "outline" ()) -(declare-function tramp-compat-make-temp-file "tramp" (filename &optional dir-flag)) +(declare-function tramp-compat-make-temp-file "tramp-compat" + (filename &optional dir-flag)) (declare-function tramp-dissect-file-name "tramp" (name &optional nodefault)) (declare-function tramp-file-name-user "tramp" (vec)) (declare-function tramp-file-name-host "tramp" (vec)) (declare-function org-icompleting-read "org" (&rest args)) -(declare-function org-edit-src-code "org" (context code edit-buffer-name)) +(declare-function org-edit-src-code "org-src" + (&optional context code edit-buffer-name)) (declare-function org-open-at-point "org" (&optional in-emacs reference-buffer)) (declare-function org-save-outline-visibility "org" (use-markers &rest body)) (declare-function org-narrow-to-subtree "org" ()) -(declare-function org-entry-get "org" (pom property &optional inherit)) +(declare-function org-entry-get "org" (pom property &optional inherit literal-nil)) (declare-function org-make-options-regexp "org" (kwds &optional extra)) -(declare-function org-match-string-no-properties "org" (num &optional string)) (declare-function org-do-remove-indentation "org" (&optional n)) (declare-function org-show-context "org" (&optional key)) (declare-function org-at-table-p "org" (&optional table-type)) (declare-function org-cycle "org" (&optional arg)) (declare-function org-uniquify "org" (list)) -(declare-function org-table-import "org" (file arg)) +(declare-function org-table-import "org-table" (file arg)) (declare-function org-add-hook "org-compat" (hook function &optional append local)) (declare-function org-table-align "org-table" ()) (declare-function org-table-end "org-table" (&optional table-type)) === modified file 'lisp/org/org-list.el' --- lisp/org/org-list.el 2010-07-19 09:47:27 +0000 +++ lisp/org/org-list.el 2010-08-17 07:29:26 +0000 @@ -51,7 +51,8 @@ (declare-function org-get-indentation "org" (&optional line)) (declare-function org-timer-item "org-timer" (&optional arg)) (declare-function org-combine-plists "org" (&rest plists)) -(declare-function org-entry-get "org" (pom property &optional inherit)) +(declare-function org-entry-get "org" + (pom property &optional inherit literal-nil)) (declare-function org-narrow-to-subtree "org" ()) (declare-function org-show-subtree "org" ()) ------------------------------------------------------------ revno: 101103 committer: Glenn Morris branch nick: trunk timestamp: Tue 2010-08-17 00:04:35 -0700 message: Silence more Gnus compiler warnings. * lisp/gnus/gnus-sync.el: Require Gnus components whose functions are used. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2010-08-17 07:00:16 +0000 +++ lisp/gnus/ChangeLog 2010-08-17 07:04:35 +0000 @@ -1,5 +1,7 @@ 2010-08-17 Glenn Morris + * gnus-sync.el: Require gnus components whose functions are used. + * gnus-art.el (bookmark-make-record-function): * gnus-sum.el (bookmark-yank-point, bookmark-current-bookmark): Declare for compiler. === modified file 'lisp/gnus/gnus-sync.el' --- lisp/gnus/gnus-sync.el 2010-08-14 22:14:02 +0000 +++ lisp/gnus/gnus-sync.el 2010-08-17 07:04:35 +0000 @@ -43,6 +43,8 @@ ;;; Code: (eval-when-compile (require 'cl)) +(require 'gnus) +(require 'gnus-start) (require 'gnus-util) (defgroup gnus-sync nil ------------------------------------------------------------ revno: 101102 committer: Glenn Morris branch nick: trunk timestamp: Tue 2010-08-17 00:00:16 -0700 message: Silence some Gnus compiler warnings. * lisp/gnus/gnus-art.el (bookmark-make-record-function): * lisp/gnus/gnus-sum.el (bookmark-yank-point, bookmark-current-bookmark): Declare for compiler. * lisp/gnus/mm-url.el (mml-compute-boundary): Autoload. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2010-08-15 23:30:04 +0000 +++ lisp/gnus/ChangeLog 2010-08-17 07:00:16 +0000 @@ -1,3 +1,11 @@ +2010-08-17 Glenn Morris + + * gnus-art.el (bookmark-make-record-function): + * gnus-sum.el (bookmark-yank-point, bookmark-current-bookmark): + Declare for compiler. + + * mm-url.el (mml-compute-boundary): Autoload. + 2010-08-15 Katsumi Yamaoka * gnus-start.el (gnus-start-draft-setup): Move doc string forward. === modified file 'lisp/gnus/gnus-art.el' --- lisp/gnus/gnus-art.el 2010-07-14 16:02:53 +0000 +++ lisp/gnus/gnus-art.el 2010-08-17 07:00:16 +0000 @@ -4414,6 +4414,8 @@ (gnus-run-hooks 'gnus-article-menu-hook))) +(defvar bookmark-make-record-function) + (defun gnus-article-mode () "Major mode for displaying an article. === modified file 'lisp/gnus/gnus-sum.el' --- lisp/gnus/gnus-sum.el 2010-08-13 10:44:22 +0000 +++ lisp/gnus/gnus-sum.el 2010-08-17 07:00:16 +0000 @@ -12626,6 +12626,8 @@ (declare-function bookmark-prop-get "bookmark" (bookmark prop)) (declare-function bookmark-default-handler "bookmark" (bmk)) (declare-function bookmark-get-bookmark-record "bookmark" (bmk)) +(defvar bookmark-yank-point) +(defvar bookmark-current-bookmark) (defun gnus-summary-bookmark-make-record () "Make a bookmark entry for a Gnus summary buffer." === modified file 'lisp/gnus/mm-url.el' --- lisp/gnus/mm-url.el 2010-06-22 16:48:53 +0000 +++ lisp/gnus/mm-url.el 2010-08-17 07:00:16 +0000 @@ -418,6 +418,8 @@ (mm-url-form-encode-xwfu (cdr data)))) pairs "&")) +(autoload 'mml-compute-boundary "mml") + (defun mm-url-encode-multipart-form-data (pairs &optional boundary) "Return PAIRS encoded in multipart/form-data." ;; RFC1867 ------------------------------------------------------------ revno: 101101 committer: Glenn Morris branch nick: trunk timestamp: Mon 2010-08-16 23:54:03 -0700 message: Silence some cc-mode compiler warnings. * lisp/progmodes/cc-engine.el (c-new-BEG, c-new-END) (c-fontify-recorded-types-and-refs): Define for compiler. * lisp/progmodes/cc-mode.el (c-new-BEG, c-new-END): Move definitions before use. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-17 06:48:37 +0000 +++ lisp/ChangeLog 2010-08-17 06:54:03 +0000 @@ -1,5 +1,10 @@ 2010-08-17 Glenn Morris + * progmodes/cc-engine.el (c-new-BEG, c-new-END) + (c-fontify-recorded-types-and-refs): Define for compiler. + * progmodes/cc-mode.el (c-new-BEG, c-new-END): Move definitions + before use. + * calendar/icalendar.el (icalendar--convert-recurring-to-diary): Fix format call. === modified file 'lisp/progmodes/cc-engine.el' --- lisp/progmodes/cc-engine.el 2010-07-31 20:01:08 +0000 +++ lisp/progmodes/cc-engine.el 2010-08-17 06:54:03 +0000 @@ -1,8 +1,8 @@ ;;; cc-engine.el --- core syntax guessing engine for CC mode ;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -;; Free Software Foundation, Inc. +;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, +;; 2010 Free Software Foundation, Inc. ;; Authors: 2001- Alan Mackenzie ;; 1998- Martin Stjernholm @@ -5023,6 +5023,10 @@ (c-unmark-<->-as-paren pos)) t))) +;; Set by c-common-init in cc-mode.el. +(defvar c-new-BEG) +(defvar c-new-END) + (defun c-before-change-check-<>-operators (beg end) ;; Unmark certain pairs of "< .... >" which are currently marked as ;; template/generic delimiters. (This marking is via syntax-table @@ -5366,6 +5370,9 @@ (goto-char safe-pos) t))) +;; cc-mode requires cc-fonts. +(declare-function c-fontify-recorded-types-and-refs "cc-fonts" ()) + (defun c-forward-<>-arglist (all-types) ;; The point is assumed to be at a "<". Try to treat it as the open ;; paren of an angle bracket arglist and move forward to the === modified file 'lisp/progmodes/cc-mode.el' --- lisp/progmodes/cc-mode.el 2010-07-31 20:01:08 +0000 +++ lisp/progmodes/cc-mode.el 2010-08-17 06:54:03 +0000 @@ -1,8 +1,8 @@ ;;; cc-mode.el --- major mode for editing C and similar languages ;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -;; Free Software Foundation, Inc. +;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, +;; 2010 Free Software Foundation, Inc. ;; Authors: 2003- Alan Mackenzie ;; 1998- Martin Stjernholm @@ -616,6 +616,15 @@ (font-lock-mode 0) (font-lock-mode 1))) +;; Buffer local variables defining the region to be fontified by a font lock +;; after-change function. They are set in c-after-change to +;; after-change-function's BEG and END, and may be modified by a +;; `c-before-font-lock-function'. +(defvar c-new-BEG 0) +(make-variable-buffer-local 'c-new-BEG) +(defvar c-new-END 0) +(make-variable-buffer-local 'c-new-END) + (defun c-common-init (&optional mode) "Common initialization for all CC Mode modes. In addition to the work done by `c-basic-common-init' and @@ -811,15 +820,6 @@ ;;; Change hooks, linking with Font Lock. -;; Buffer local variables defining the region to be fontified by a font lock -;; after-change function. They are set in c-after-change to -;; after-change-function's BEG and END, and may be modified by a -;; `c-before-font-lock-function'. -(defvar c-new-BEG 0) -(make-variable-buffer-local 'c-new-BEG) -(defvar c-new-END 0) -(make-variable-buffer-local 'c-new-END) - ;; Buffer local variables recording Beginning/End-of-Macro position before a ;; change, when a macro straddles, respectively, the BEG or END (or both) of ;; the change region. Otherwise these have the values BEG/END. ------------------------------------------------------------ revno: 101100 committer: Glenn Morris branch nick: trunk timestamp: Mon 2010-08-16 23:48:37 -0700 message: Minor icalendar fix. * lisp/calendar/icalendar.el (icalendar--convert-recurring-to-diary): Fix format call. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-17 04:52:16 +0000 +++ lisp/ChangeLog 2010-08-17 06:48:37 +0000 @@ -1,3 +1,8 @@ +2010-08-17 Glenn Morris + + * calendar/icalendar.el (icalendar--convert-recurring-to-diary): + Fix format call. + 2010-08-17 Michael Albinus * net/tramp.el (tramp-handle-make-symbolic-link): Flush file === modified file 'lisp/calendar/icalendar.el' --- lisp/calendar/icalendar.el 2010-08-08 17:42:47 +0000 +++ lisp/calendar/icalendar.el 2010-08-17 06:48:37 +0000 @@ -2092,6 +2092,7 @@ (format "(diary-cyclic %d %s) " (* interval 7) dtstart-conv)) + dtstart-conv (if count until-1-conv until-conv) )) (setq result ------------------------------------------------------------ revno: 101099 committer: Michael Albinus branch nick: trunk timestamp: Tue 2010-08-17 06:52:16 +0200 message: * net/tramp.el (tramp-handle-make-symbolic-link): Flush file properties. (tramp-handle-process-file): Call the program in a subshell, in order to preserve working directory. (tramp-action-password): Hide password prompt before next run. (tramp-process-actions): Widen connection buffer for the trace. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-16 03:34:10 +0000 +++ lisp/ChangeLog 2010-08-17 04:52:16 +0000 @@ -1,3 +1,12 @@ +2010-08-17 Michael Albinus + + * net/tramp.el (tramp-handle-make-symbolic-link): Flush file + properties. + (tramp-handle-process-file): Call the program in a subshell, in + order to preserve working directory. + (tramp-action-password): Hide password prompt before next run. + (tramp-process-actions): Widen connection buffer for the trace. + 2010-08-16 Deniz Dogan * net/rcirc.el (rcirc-log-process-buffers): New option. === modified file 'lisp/net/tramp.el' --- lisp/net/tramp.el 2010-08-10 09:58:15 +0000 +++ lisp/net/tramp.el 2010-08-17 04:52:16 +0000 @@ -2552,7 +2552,7 @@ (unless ln (tramp-error l 'file-error - "Making a symbolic link. ln(1) does not exist on the remote host.")) + "Making a symbolic link. ln(1) does not exist on the remote host.")) ;; Do the 'confirm if exists' thing. (when (file-exists-p linkname) @@ -2573,6 +2573,9 @@ (tramp-file-name-localname (tramp-dissect-file-name (expand-file-name filename))))) + (tramp-flush-file-property l (file-name-directory l-localname)) + (tramp-flush-file-property l l-localname) + ;; Right, they are on the same host, regardless of user, method, etc. ;; We now make the link on the remote machine. This will occur as the user ;; that FILENAME belongs to. @@ -4638,7 +4641,9 @@ (setq outbuf (current-buffer)))) (when stderr (setq command (format "%s 2>%s" command stderr))) - ;; Send the command. It might not return in time, so we protect it. + ;; Send the command. It might not return in time, so we protect + ;; it. Call it in a subshell, in order to preserve working + ;; directory. (condition-case nil (unwind-protect (setq ret @@ -4646,7 +4651,7 @@ v (format "\\cd %s; %s" (tramp-shell-quote-argument localname) command) - nil t)) + t t)) ;; We should show the output anyway. (when outbuf (with-current-buffer outbuf @@ -6698,8 +6703,10 @@ "Query the user for a password." (with-current-buffer (process-buffer proc) (tramp-check-for-regexp proc tramp-password-prompt-regexp) - (tramp-message vec 3 "Sending %s" (match-string 1))) - (tramp-enter-password proc)) + (tramp-message vec 3 "Sending %s" (match-string 1)) + (tramp-enter-password proc) + ;; Hide password prompt. + (narrow-to-region (point-max) (point-max)))) (defun tramp-action-succeed (proc vec) "Signal success in finding shell prompt." @@ -6810,6 +6817,7 @@ (tramp-process-one-action proc vec actions)) (tramp-process-one-action proc vec actions))))) (with-current-buffer (tramp-get-connection-buffer vec) + (widen) (tramp-message vec 6 "\n%s" (buffer-string))) (unless (eq exit 'ok) (tramp-clear-passwd vec) ------------------------------------------------------------ revno: 101098 committer: Jan D branch nick: trunk timestamp: Mon 2010-08-16 10:17:02 +0200 message: * nsselect.m (syms_of_nsselect): Don't intern QPRIMARY. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-16 08:03:27 +0000 +++ src/ChangeLog 2010-08-16 08:17:02 +0000 @@ -2,6 +2,7 @@ * nsselect.m: include keyboard.h for QPRIMARY, remove its declaration (Bug#6863). + (syms_of_nsselect): Don't intern QPRIMARY. * xselect.c: Remove declaration of QPRIMARY (Bug#6864). === modified file 'src/nsselect.m' --- src/nsselect.m 2010-08-16 08:03:27 +0000 +++ src/nsselect.m 2010-08-16 08:17:02 +0000 @@ -543,7 +543,6 @@ void syms_of_nsselect (void) { - QPRIMARY = intern ("PRIMARY"); staticpro (&QPRIMARY); QSECONDARY = intern ("SECONDARY"); staticpro (&QSECONDARY); QTEXT = intern ("TEXT"); staticpro (&QTEXT); QFILE_NAME = intern ("FILE_NAME"); staticpro (&QFILE_NAME); ------------------------------------------------------------ revno: 101097 committer: Jan D branch nick: trunk timestamp: Mon 2010-08-16 10:03:27 +0200 message: nsselect.m: include keyboard.h for QPRIMARY, remove its declaration (Bug#6863). diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-16 07:52:32 +0000 +++ src/ChangeLog 2010-08-16 08:03:27 +0000 @@ -1,5 +1,8 @@ 2010-08-16 Jan Djärv + * nsselect.m: include keyboard.h for QPRIMARY, remove its + declaration (Bug#6863). + * xselect.c: Remove declaration of QPRIMARY (Bug#6864). * keyboard.h (QPRIMARY): Declare (Bug#6864). === modified file 'src/nsselect.m' --- src/nsselect.m 2010-07-08 21:25:08 +0000 +++ src/nsselect.m 2010-08-16 08:03:27 +0000 @@ -33,10 +33,11 @@ #include "lisp.h" #include "nsterm.h" #include "termhooks.h" +#include "keyboard.h" #define CUT_BUFFER_SUPPORT -Lisp_Object QPRIMARY, QSECONDARY, QTEXT, QFILE_NAME; +Lisp_Object QSECONDARY, QTEXT, QFILE_NAME; static Lisp_Object Vns_sent_selection_hooks; static Lisp_Object Vns_lost_selection_hooks; ------------------------------------------------------------ revno: 101096 committer: Jan D. branch nick: trunk timestamp: Mon 2010-08-16 09:52:32 +0200 message: Don't define QPRIMARY twice. * keyboard.h (QPRIMARY): Declare (Bug#6864). * xselect.c: Remove declaration of QPRIMARY (Bug#6864). diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-16 02:33:17 +0000 +++ src/ChangeLog 2010-08-16 07:52:32 +0000 @@ -1,3 +1,9 @@ +2010-08-16 Jan Djärv + + * xselect.c: Remove declaration of QPRIMARY (Bug#6864). + + * keyboard.h (QPRIMARY): Declare (Bug#6864). + 2010-08-16 Chong Yidong * keyboard.c (command_loop_1): Avoid setting selection twice, === modified file 'src/keyboard.h' --- src/keyboard.h 2010-08-11 12:34:46 +0000 +++ src/keyboard.h 2010-08-16 07:52:32 +0000 @@ -440,6 +440,9 @@ extern Lisp_Object Vdouble_click_time; +/* The primary selection. */ +extern Lisp_Object QPRIMARY; + /* Forward declaration for prototypes. */ struct input_event; === modified file 'src/xselect.c' --- src/xselect.c 2010-08-11 12:34:46 +0000 +++ src/xselect.c 2010-08-16 07:52:32 +0000 @@ -107,7 +107,7 @@ #define CUT_BUFFER_SUPPORT -Lisp_Object QPRIMARY, QSECONDARY, QSTRING, QINTEGER, QCLIPBOARD, QTIMESTAMP, +Lisp_Object QSECONDARY, QSTRING, QINTEGER, QCLIPBOARD, QTIMESTAMP, QTEXT, QDELETE, QMULTIPLE, QINCR, QEMACS_TMP, QTARGETS, QATOM, QNULL, QATOM_PAIR; ------------------------------------------------------------ revno: 101095 author: Deniz Dogan committer: Chong Yidong branch nick: trunk timestamp: Sun 2010-08-15 23:34:10 -0400 message: Don't always log RCIRC process buffers to disk (Bug#6828). * lisp/net/rcirc.el (rcirc-log-process-buffers): New option. (rcirc-print): Use it. (rcirc-generate-log-filename): New function. (rcirc-log-filename-function): Change default to rcirc-generate-log-filename (Bug#6828). diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-16 02:33:17 +0000 +++ lisp/ChangeLog 2010-08-16 03:34:10 +0000 @@ -1,3 +1,11 @@ +2010-08-16 Deniz Dogan + + * net/rcirc.el (rcirc-log-process-buffers): New option. + (rcirc-print): Use it. + (rcirc-generate-log-filename): New function. + (rcirc-log-filename-function): Change default to + rcirc-generate-log-filename (Bug#6828). + 2010-08-16 Chong Yidong * simple.el (deactivate-mark): If select-active-regions is `only', === modified file 'lisp/net/rcirc.el' --- lisp/net/rcirc.el 2010-06-10 01:10:04 +0000 +++ lisp/net/rcirc.el 2010-08-16 03:34:10 +0000 @@ -1342,6 +1342,12 @@ :type 'integer :group 'rcirc) +(defcustom rcirc-log-process-buffers nil + "Non-nil if rcirc process buffers should be logged to disk." + :group 'rcirc + :type 'boolean + :version "24.1") + (defun rcirc-last-quit-line (process nick target) "Return the line number where NICK left TARGET. Returns nil if the information is not recorded." @@ -1507,14 +1513,21 @@ (when (not (rcirc-channel-p rcirc-target)) 'nick))) - (when rcirc-log-flag + (when (and rcirc-log-flag + (or target + rcirc-log-process-buffers)) (rcirc-log process sender response target text)) (sit-for 0) ; displayed text before hook (run-hook-with-args 'rcirc-print-hooks process sender response target text))))) -(defcustom rcirc-log-filename-function 'rcirc-generate-new-buffer-name +(defun rcirc-generate-log-filename (process target) + (if target + (rcirc-generate-new-buffer-name process target) + (process-name process))) + +(defcustom rcirc-log-filename-function 'rcirc-generate-log-filename "A function to generate the filename used by rcirc's logging facility. It is called with two arguments, PROCESS and TARGET (see ------------------------------------------------------------ revno: 101094 committer: Chong Yidong branch nick: trunk timestamp: Sun 2010-08-15 22:33:17 -0400 message: Let all active regions set the primary selection. This includes both temporarily active regions (mouse drag and shift-select) and those made with C-SPC and cursor motion. * lisp/cus-start.el: Change defcustom for select-active-regions. * lisp/simple.el (deactivate-mark): If select-active-regions is `only', only set selection for temporarily active regions. * src/insdel.c (prepare_to_modify_buffer): Handle `only' value of select-active-regions. * src/keyboard.c (command_loop_1): Avoid setting selection twice, since it's done in deactivate-mark as well. (Vselect_active_regions): Replace `lazy' value with `only', meaning to only set PRIMARY for temporarily active regions. diff: === modified file 'etc/NEWS' --- etc/NEWS 2010-08-14 22:58:10 +0000 +++ etc/NEWS 2010-08-16 02:33:17 +0000 @@ -191,23 +191,26 @@ ** Selection changes. -The way Emacs interacts with the clipboard and primary selection, by -default, is now similar to other X applications. In particular, kill -and yank use the clipboard, in addition to the primary selection. - -*** `select-active-regions' now defaults to `lazy'. -This means that any active region made with shift-selection or mouse -dragging, or acted on by Emacs (e.g. with M-w or C-w), is -automatically added to the primary window selection. +The default handling of clipboard and primary selections has been +changed to conform with other X applications. + +*** `select-active-regions' now defaults to t, so active regions set +the primary selection. + +It also accepts a new value, `lazy', which means to only set the +primary selection for temporarily active regions (usually made by +mouse-dragging or shift-selection). + +*** `mouse-2' is now bound to `mouse-yank-primary'. *** `x-select-enable-clipboard' now defaults to t. +Thus, killing and yanking now use the clipboard (in addition to the +kill ring). *** `x-select-enable-primary' now defaults to nil. *** `mouse-drag-copy-region' now defaults to nil. -*** `mouse-2' is now bound to `mouse-yank-primary'. - * Changes in Specialized Modes and Packages in Emacs 24.1 === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-16 02:08:01 +0000 +++ lisp/ChangeLog 2010-08-16 02:33:17 +0000 @@ -1,3 +1,10 @@ +2010-08-16 Chong Yidong + + * simple.el (deactivate-mark): If select-active-regions is `only', + only set selection for temporarily active regions. + + * cus-start.el: Change defcustom for select-active-regions. + 2010-08-15 Chong Yidong * mouse.el (mouse--drag-set-mark-and-point): New function. === modified file 'lisp/cus-start.el' --- lisp/cus-start.el 2010-08-07 19:39:04 +0000 +++ lisp/cus-start.el 2010-08-16 02:33:17 +0000 @@ -198,8 +198,8 @@ (help-event-list keyboard (repeat (sexp :format "%v"))) (menu-prompting menu boolean) (select-active-regions killing - (choice (const :tag "lazy" lazy) - (const :tag "always" t) + (choice (const :tag "always" t) + (const :tag "only shift-selection or mouse-drag" only) (const :tag "off" nil)) "24.1") (suggest-key-bindings keyboard (choice (const :tag "off" nil) === modified file 'lisp/simple.el' --- lisp/simple.el 2010-08-08 21:12:29 +0000 +++ lisp/simple.el 2010-08-16 02:33:17 +0000 @@ -3674,7 +3674,9 @@ Mark mode is disabled. This function also runs `deactivate-mark-hook'." (when (or transient-mark-mode force) - (when (and select-active-regions + (when (and (if (eq select-active-regions 'only) + (eq (car-safe transient-mark-mode) 'only) + select-active-regions) (region-active-p) (display-selections-p)) ;; The var `saved-region-selection', if non-nil, is the text in === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-15 13:18:14 +0000 +++ src/ChangeLog 2010-08-16 02:33:17 +0000 @@ -1,3 +1,14 @@ +2010-08-16 Chong Yidong + + * keyboard.c (command_loop_1): Avoid setting selection twice, + since it's done in deactivate-mark as well. + (Vselect_active_regions): Change default to t. Replace `lazy' + with non-default value `only', meaning only set PRIMARY for + temporarily active regions. + + * insdel.c (prepare_to_modify_buffer): Handle `only' value of + select-active-regions. + 2010-08-15 Jan Djärv * keyboard.c (parse_tool_bar_item): Put in a bad label if :label === modified file 'src/insdel.c' --- src/insdel.c 2010-08-07 20:26:55 +0000 +++ src/insdel.c 2010-08-16 02:33:17 +0000 @@ -74,7 +74,7 @@ Lisp_Object Qinhibit_modification_hooks; -extern Lisp_Object Vselect_active_regions, Vsaved_region_selection; +extern Lisp_Object Vselect_active_regions, Vsaved_region_selection, Qonly; /* Check all markers in the current buffer, looking for something invalid. */ @@ -2050,10 +2050,12 @@ #endif /* not CLASH_DETECTION */ /* If `select-active-regions' is non-nil, save the region text. */ - if (!NILP (Vselect_active_regions) - && !NILP (current_buffer->mark_active) - && !NILP (Vtransient_mark_mode) - && NILP (Vsaved_region_selection)) + if (!NILP (current_buffer->mark_active) + && NILP (Vsaved_region_selection) + && (EQ (Vselect_active_regions, Qonly) + ? EQ (CAR_SAFE (Vtransient_mark_mode), Qonly) + : (!NILP (Vselect_active_regions) + && !NILP (Vtransient_mark_mode)))) { int b = XINT (Fmarker_position (current_buffer->mark)); int e = XINT (make_number (PT)); === modified file 'src/keyboard.c' --- src/keyboard.c 2010-08-15 13:18:14 +0000 +++ src/keyboard.c 2010-08-16 02:33:17 +0000 @@ -368,7 +368,7 @@ Used by the `select-active-regions' feature. */ Lisp_Object Vsaved_region_selection; -Lisp_Object Qx_set_selection, QPRIMARY, Qlazy; +Lisp_Object Qx_set_selection, QPRIMARY; Lisp_Object Qself_insert_command; Lisp_Object Qforward_char; @@ -1790,27 +1790,34 @@ Vtransient_mark_mode = Qnil; else if (EQ (Vtransient_mark_mode, Qonly)) Vtransient_mark_mode = Qidentity; - else if (EQ (Vselect_active_regions, Qlazy) - ? EQ (CAR_SAFE (Vtransient_mark_mode), Qonly) - : (!NILP (Vselect_active_regions) - && !NILP (Vtransient_mark_mode))) - { - /* Set window selection. If `select-active-regions' is - `lazy', only do it for temporarily active regions. */ - int beg = XINT (Fmarker_position (current_buffer->mark)); - int end = XINT (make_number (PT)); - if (beg < end) - call2 (Qx_set_selection, QPRIMARY, - make_buffer_string (beg, end, 0)); - else if (beg > end) - call2 (Qx_set_selection, QPRIMARY, - make_buffer_string (end, beg, 0)); - } if (!NILP (Vdeactivate_mark)) + /* If `select-active-regions' is non-nil, this call to + `deactivate-mark' also sets the PRIMARY selection. */ call0 (Qdeactivate_mark); - else if (current_buffer != prev_buffer || MODIFF != prev_modiff) - call1 (Vrun_hooks, intern ("activate-mark-hook")); + else + { + /* Even if not deactivating the mark, set PRIMARY if + `select-active-regions' is non-nil. */ + if (EQ (Vselect_active_regions, Qonly) + ? EQ (CAR_SAFE (Vtransient_mark_mode), Qonly) + : (!NILP (Vselect_active_regions) + && !NILP (Vtransient_mark_mode))) + { + int beg = XINT (Fmarker_position (current_buffer->mark)); + int end = XINT (make_number (PT)); + if (beg < end) + call2 (Qx_set_selection, QPRIMARY, + make_buffer_string (beg, end, 0)); + else if (beg > end) + call2 (Qx_set_selection, QPRIMARY, + make_buffer_string (end, beg, 0)); + /* Don't set empty selections. */ + } + + if (current_buffer != prev_buffer || MODIFF != prev_modiff) + call1 (Vrun_hooks, intern ("activate-mark-hook")); + } Vsaved_region_selection = Qnil; } @@ -11718,8 +11725,6 @@ staticpro (&Qx_set_selection); QPRIMARY = intern_c_string ("PRIMARY"); staticpro (&QPRIMARY); - Qlazy = intern_c_string ("lazy"); - staticpro (&Qlazy); Qinput_method_exit_on_first_char = intern_c_string ("input-method-exit-on-first-char"); staticpro (&Qinput_method_exit_on_first_char); @@ -12331,16 +12336,11 @@ DEFVAR_LISP ("select-active-regions", &Vselect_active_regions, doc: /* If non-nil, an active region automatically becomes the window selection. -This takes effect only when Transient Mark mode is enabled. - -If the value is `lazy', Emacs only sets the window selection during -`deactivate-mark'; unless the region is temporarily active -(e.g. mouse-drags or shift-selection), in which case it sets the -window selection after each command. - -For other non-nil value, Emacs sets the window selection after every -command. */); - Vselect_active_regions = Qlazy; +If the value is `only', only temporarily active regions (usually made +by mouse-dragging or shift-selection) set the window selection. + +This takes effect only when Transient Mark mode is enabled. */); + Vselect_active_regions = Qt; DEFVAR_LISP ("saved-region-selection", &Vsaved_region_selection, ------------------------------------------------------------ revno: 101093 committer: Chong Yidong branch nick: trunk timestamp: Sun 2010-08-15 22:08:01 -0400 message: Fix mouse dragging of words and lines (Bug#6840). * mouse.el (mouse--drag-set-mark-and-point): New function. (mouse-drag-track): Use LOCATION arg to push-mark. Use mouse--drag-set-mark-and-point to take click-count into consideration when updating point and mark (Bug#6840). diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-15 00:04:53 +0000 +++ lisp/ChangeLog 2010-08-16 02:08:01 +0000 @@ -1,5 +1,12 @@ 2010-08-15 Chong Yidong + * mouse.el (mouse--drag-set-mark-and-point): New function. + (mouse-drag-track): Use LOCATION arg to push-mark. Use + mouse--drag-set-mark-and-point to take click-count into + consideration when updating point and mark (Bug#6840). + +2010-08-15 Chong Yidong + * progmodes/compile.el (compilation-error-regexp-alist-alist): Give the Ruby rule a lower priority than Gnu (Bug#6778). === modified file 'lisp/mouse.el' --- lisp/mouse.el 2010-08-14 15:41:22 +0000 +++ lisp/mouse.el 2010-08-16 02:08:01 +0000 @@ -954,8 +954,7 @@ '(only) (cons 'only transient-mark-mode))) (let ((range (mouse-start-end start-point start-point click-count))) - (goto-char (nth 0 range)) - (push-mark nil t t) + (push-mark (nth 0 range) t t) (goto-char (nth 1 range))) ;; Track the mouse until we get a non-movement event. @@ -974,14 +973,8 @@ end-point (posn-point end)) (if (and (eq (posn-window end) start-window) (integer-or-marker-p end-point)) - ;; If moving in the original window, move point by going - ;; to start first, so that if end is in intangible text, - ;; point jumps away from start. Don't do it if - ;; start=end, or a single click would select a region if - ;; it's on intangible text. - (unless (= start-point end-point) - (goto-char start-point) - (goto-char end-point)) + (mouse--drag-set-mark-and-point start-point + end-point click-count) (let ((mouse-row (cdr (cdr (mouse-position))))) (cond ((null mouse-row)) @@ -999,8 +992,9 @@ (eq (posn-window end) start-window) (integer-or-marker-p end-point) (/= start-point end-point)) - (goto-char start-point) - (goto-char end-point)) + (mouse--drag-set-mark-and-point start-point + end-point click-count)) + ;; Find its binding. (let* ((fun (key-binding (vector (car event)))) (do-multi-click (and (> (event-click-count event) 0) @@ -1051,6 +1045,21 @@ (put 'mouse-2 'event-kind 'mouse-click))) (push event unread-command-events))))))) +(defun mouse--drag-set-mark-and-point (start click click-count) + (let* ((range (mouse-start-end start click click-count)) + (beg (nth 0 range)) + (end (nth 1 range))) + (cond ((eq (mark) beg) + (goto-char end)) + ((eq (mark) end) + (goto-char beg)) + ((< click (mark)) + (set-mark end) + (goto-char beg)) + (t + (set-mark beg) + (goto-char end))))) + (defun mouse--remap-link-click-p (start-event end-event) (or (and (eq mouse-1-click-follows-link 'double) (= (event-click-count start-event) 2)) @@ -1166,8 +1175,7 @@ ((= mode 2) (list (save-excursion (goto-char start) - (beginning-of-line 1) - (point)) + (line-beginning-position 1)) (save-excursion (goto-char end) (forward-line 1) ------------------------------------------------------------ revno: 101092 [merge] committer: Katsumi Yamaoka branch nick: trunk timestamp: Sun 2010-08-15 23:31:07 +0000 message: gnus-start-draft-setup: Move doc string forward. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2010-08-14 22:14:02 +0000 +++ lisp/gnus/ChangeLog 2010-08-15 23:30:04 +0000 @@ -1,3 +1,7 @@ +2010-08-15 Katsumi Yamaoka + + * gnus-start.el (gnus-start-draft-setup): Move doc string forward. + 2010-08-14 Teodor Zlatanov Typo fix "hoo4a" -> "hook". === modified file 'lisp/gnus/gnus-start.el' --- lisp/gnus/gnus-start.el 2010-08-13 10:32:35 +0000 +++ lisp/gnus/gnus-start.el 2010-08-15 23:30:04 +0000 @@ -813,8 +813,8 @@ (gnus-run-hooks 'gnus-started-hook)))))) (defun gnus-start-draft-setup () - (interactive) "Make sure the draft group exists." + (interactive) (gnus-request-create-group "drafts" '(nndraft "")) (unless (gnus-group-entry "nndraft:drafts") (let ((gnus-level-default-subscribed 1)) ------------------------------------------------------------ revno: 101091 committer: Jan D branch nick: trunk timestamp: Sun 2010-08-15 15:18:14 +0200 message: * keyboard.c (parse_tool_bar_item): Put in a bad label if :label isn't a string. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-15 09:30:06 +0000 +++ src/ChangeLog 2010-08-15 13:18:14 +0000 @@ -1,3 +1,8 @@ +2010-08-15 Jan Djärv + + * keyboard.c (parse_tool_bar_item): Put in a bad label if :label + isn't a string. + 2010-08-15 Andreas Schwab * keyboard.c (parse_tool_bar_item): Avoid excessive use of strlen. === modified file 'src/keyboard.c' --- src/keyboard.c 2010-08-15 09:30:06 +0000 +++ src/keyboard.c 2010-08-15 13:18:14 +0000 @@ -8285,12 +8285,15 @@ return 0; } else if (EQ (key, QChelp)) - /* `:help HELP-STRING'. */ - PROP (TOOL_BAR_ITEM_HELP) = value; + /* `:help HELP-STRING'. */ + PROP (TOOL_BAR_ITEM_HELP) = value; else if (EQ (key, QClabel)) { + const char *bad_label = "!!?GARBLED ITEM?!!"; /* `:label LABEL-STRING'. */ - PROP (TOOL_BAR_ITEM_LABEL) = value; + PROP (TOOL_BAR_ITEM_HELP) = STRINGP (value) + ? value + : make_string (bad_label, strlen (bad_label)); have_label = 1; } else if (EQ (key, QCfilter)) ------------------------------------------------------------ revno: 101090 committer: Andreas Schwab branch nick: emacs timestamp: Sun 2010-08-15 11:30:06 +0200 message: * keyboard.c (parse_tool_bar_item): Avoid excessive use of strlen. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-15 08:13:02 +0000 +++ src/ChangeLog 2010-08-15 09:30:06 +0000 @@ -1,3 +1,7 @@ +2010-08-15 Andreas Schwab + + * keyboard.c (parse_tool_bar_item): Avoid excessive use of strlen. + 2010-08-15 Jan Djärv * keyboard.c (parse_tool_bar_item): malloc buf. Set TOOL_BAR_ITEM_LABEL === modified file 'src/keyboard.c' --- src/keyboard.c 2010-08-15 08:13:02 +0000 +++ src/keyboard.c 2010-08-15 09:30:06 +0000 @@ -8328,35 +8328,34 @@ Lisp_Object capt = PROP (TOOL_BAR_ITEM_CAPTION); const char *label = SYMBOLP (key) ? (char *) SDATA (SYMBOL_NAME (key)) : ""; const char *caption = STRINGP (capt) ? (char *) SDATA (capt) : ""; - EMACS_INT max_lbl = 2*tool_bar_max_label_size; - char *buf = (char *) xmalloc (max_lbl+1); + EMACS_INT max_lbl = 2 * tool_bar_max_label_size; + char *buf = (char *) xmalloc (max_lbl + 1); Lisp_Object new_lbl; + size_t caption_len = strlen (caption); - if (strlen (caption) < max_lbl && caption[0] != '\0') + if (caption_len <= max_lbl && caption[0] != '\0') { strcpy (buf, caption); - while (buf[0] != '\0' && buf[strlen (buf) -1] == '.') - buf[strlen (buf)-1] = '\0'; - if (strlen (buf) <= max_lbl) - caption = buf; + while (caption_len > 0 && buf[caption_len - 1] == '.') + caption_len--; + buf[caption_len] = '\0'; + label = caption = buf; } - if (strlen (caption) <= max_lbl) - label = caption; - if (strlen (label) <= max_lbl && label[0] != '\0') { int i; - if (label != buf) strcpy (buf, label); + if (label != buf) + strcpy (buf, label); - for (i = 0; i < strlen (buf); ++i) - { - if (buf[i] == '-') buf[i] = ' '; - } + for (i = 0; buf[i] != '\0'; ++i) + if (buf[i] == '-') + buf[i] = ' '; label = buf; } - else label = ""; + else + label = ""; new_lbl = Fupcase_initials (make_string (label, strlen (label))); if (SCHARS (new_lbl) <= tool_bar_max_label_size) ------------------------------------------------------------ revno: 101089 committer: Jan D branch nick: trunk timestamp: Sun 2010-08-15 10:13:02 +0200 message: Potential buffer overrun and uninit variable fixed, bug 6855. * keyboard.c (parse_tool_bar_item): malloc buf. Set TOOL_BAR_ITEM_LABEL to empty string if not set to new_lbl (Bug#6855). diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-14 12:55:04 +0000 +++ src/ChangeLog 2010-08-15 08:13:02 +0000 @@ -1,3 +1,8 @@ +2010-08-15 Jan Djärv + + * keyboard.c (parse_tool_bar_item): malloc buf. Set TOOL_BAR_ITEM_LABEL + to empty string if not set to new_lbl (Bug#6855). + 2010-08-14 Eli Zaretskii * xterm.c (x_draw_stretch_glyph_string): === modified file 'src/keyboard.c' --- src/keyboard.c 2010-08-14 07:35:24 +0000 +++ src/keyboard.c 2010-08-15 08:13:02 +0000 @@ -8328,14 +8328,14 @@ Lisp_Object capt = PROP (TOOL_BAR_ITEM_CAPTION); const char *label = SYMBOLP (key) ? (char *) SDATA (SYMBOL_NAME (key)) : ""; const char *caption = STRINGP (capt) ? (char *) SDATA (capt) : ""; - char buf[64]; EMACS_INT max_lbl = 2*tool_bar_max_label_size; + char *buf = (char *) xmalloc (max_lbl+1); Lisp_Object new_lbl; if (strlen (caption) < max_lbl && caption[0] != '\0') { strcpy (buf, caption); - while (buf[0] != '\0' && buf[strlen (buf) -1] == '.') + while (buf[0] != '\0' && buf[strlen (buf) -1] == '.') buf[strlen (buf)-1] = '\0'; if (strlen (buf) <= max_lbl) caption = buf; @@ -8361,6 +8361,9 @@ new_lbl = Fupcase_initials (make_string (label, strlen (label))); if (SCHARS (new_lbl) <= tool_bar_max_label_size) PROP (TOOL_BAR_ITEM_LABEL) = new_lbl; + else + PROP (TOOL_BAR_ITEM_LABEL) = make_string ("", 0); + free (buf); } /* If got a filter apply it on binding. */ ------------------------------------------------------------ revno: 101088 committer: Chong Yidong branch nick: trunk timestamp: Sat 2010-08-14 20:04:53 -0400 message: Give Ruby compilation rule a lower priority than Gnu (Bug#6778). * progmodes/compile.el (compilation-error-regexp-alist-alist): Give the Ruby rule a lower priority than Gnu (Bug#6778). * etc/compilation.txt: Make Cucumber test less verbose. diff: === modified file 'etc/compilation.txt' --- etc/compilation.txt 2010-07-13 21:33:02 +0000 +++ etc/compilation.txt 2010-08-15 00:04:53 +0000 @@ -102,42 +102,30 @@ Scenario: undefined step # features/cucumber.feature:3 Given this is undefined # features/cucumber.feature:4 - Scenario: assertion false (Test::Unit) # features/cucumber.feature:6 - Given this will generate 'assert false' # features/step_definitions/default_steps.rb:1 + Scenario: assertion false (Test::Unit) # foo/bar.feature:6 + Given this will generate 'assert false' # foo/bar.rb:1 is not true. (Test::Unit::AssertionFailedError) - /home/gusev/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/1.8/test/unit/assertions.rb:48:in `assert_block' - /home/gusev/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/1.8/test/unit/assertions.rb:500:in `_wrap_assertion' - /home/gusev/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/1.8/test/unit/assertions.rb:46:in `assert_block' - /home/gusev/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/1.8/test/unit/assertions.rb:63:in `assert' - /home/gusev/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/1.8/test/unit/assertions.rb:495:in `_wrap_assertion' - /home/gusev/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/1.8/test/unit/assertions.rb:61:in `assert' - ./features/step_definitions/default_steps.rb:2:in `/^this will generate 'assert false'$/' + /home/gusev/.rvm/foo/bar.rb:48:in `assert_block' + /home/gusev/.rvm/foo/bar.rb:500:in `_wrap_assertion' features/cucumber.feature:7:in `Given this will generate 'assert false'' - Scenario: assertion false (RSpec) # features/cucumber.feature:9 - Given this will generate 'should be_true' # features/step_definitions/default_steps.rb:5 + Scenario: assertion false (RSpec) # foo/bar.feature:9 + Given this will generate 'should be_true' # foo/bar.rb:5 expected true to be false (Spec::Expectations::ExpectationNotMetError) - ./features/step_definitions/default_steps.rb:6:in `/^this will generate 'should be_true'$/' - features/cucumber.feature:10:in `Given this will generate 'should be_true'' - - Scenario: backtrace in step definition # features/cucumber.feature:12 - Given this will generate backtrace # features/step_definitions/default_steps.rb:9 - (RuntimeError) - ./features/step_definitions/default_steps.rb:10:in `/^this will generate backtrace$/' - features/cucumber.feature:13:in `Given this will generate backtrace' - - Scenario: deeep backtrace in step definition # features/cucumber.feature:15 - Given this will generate deep backtrace # features/step_definitions/default_steps.rb:13 - (RuntimeError) - ./features/step_definitions/default_steps.rb:18:in `deep' - ./features/step_definitions/default_steps.rb:14:in `/^this will generate deep backtrace$/' - features/cucumber.feature:16:in `Given this will generate deep backtrace' + ./foo/bar/baz.rb:6:in `/^this will generate 'should be_true'$/' + foo/bar.feature:10:in `Given this will generate 'should be_true'' + + Scenario: backtrace in step definition # foo/bar.feature:12 + Given this will generate backtrace # foo/sbar.rb:9 + (RuntimeError) + ./foo/bar.rb:10:in `/^this will generate backtrace$/' + foo/bar.feature:13:in `Given this will generate backtrace' Failing Scenarios: -cucumber features/cucumber.feature:6 # Scenario: assertion false (Test::Unit) -cucumber features/cucumber.feature:9 # Scenario: assertion false (RSpec) -cucumber features/cucumber.feature:12 # Scenario: backtrace in step definition -cucumber features/cucumber.feature:15 # Scenario: deeep backtrace in step definition +cucumber foo/cucumber.feature:6 # Scenario: assertion false (Test::Unit) +cucumber foo/cucumber.feature:9 # Scenario: assertion false (RSpec) +cucumber foo/cucumber.feature:12 # Scenario: backtrace in step definition +cucumber foo/cucumber.feature:15 # Scenario: deeep backtrace in step definition 5 scenarios (4 failed, 1 undefined) 5 steps (4 failed, 1 undefined) === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-14 23:42:07 +0000 +++ lisp/ChangeLog 2010-08-15 00:04:53 +0000 @@ -1,3 +1,8 @@ +2010-08-15 Chong Yidong + + * progmodes/compile.el (compilation-error-regexp-alist-alist): + Give the Ruby rule a lower priority than Gnu (Bug#6778). + 2010-08-14 Štěpán Němec (tiny change) * font-lock.el (lisp-font-lock-keywords-2): Add === modified file 'lisp/progmodes/compile.el' --- lisp/progmodes/compile.el 2010-07-27 02:10:05 +0000 +++ lisp/progmodes/compile.el 2010-08-15 00:04:53 +0000 @@ -227,6 +227,10 @@ "^[-[:alnum:]_/ ]+: \\(?:\\(?:[sS]evere\\|[eE]rror\\|[wW]arnin\\(g\\)\\|[iI]nf\\(o\\)\\)[0-9 ]*: \\)?\ \\([^,\" \n\t]+\\)\\(?:, line\\|:\\) \\([0-9]+\\):" 3 4 nil (1 . 2)) + (ruby + "^[\t ]*\\(?:from \\)?\ +\\([^\(\n][^[:space:]\n]*\\):\\([1-9][0-9]*\\)\\(:in `.*'\\)?.*$" 1 2) + (java "^\\(?:[ \t]+at \\|==[0-9]+== +\\(?:at\\|b\\(y\\)\\)\\).+(\\([^()\n]+\\):\\([0-9]+\\))$" 2 3 nil (1)) @@ -329,10 +333,6 @@ "\\(?:Parse\\|Fatal\\) error: \\(.*\\) in \\(.*\\) on line \\([0-9]+\\)" 2 3 nil nil) - (ruby - "^[\t ]*\\(?:from \\)?\ -\\([^\(\n][^[:space:]\n]*\\):\\([1-9][0-9]*\\)\\(:in `.*'\\)?.*$" 1 2) - (ruby-Test::Unit "[\t ]*\\[\\([^\(].*\\):\\([1-9][0-9]*\\)\\(\\]\\)?:$" 1 2) ------------------------------------------------------------ revno: 101087 author: Štěpán Němec committer: Chong Yidong branch nick: trunk timestamp: Sat 2010-08-14 19:42:07 -0400 message: Add four macros to lisp-font-lock-keywords-2 (Bug#6025). * font-lock.el (lisp-font-lock-keywords-2): Add combine-after-change-calls, condition-case-no-debug, with-demoted-errors, and with-silent-modifications (Bug#6025). diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-14 23:32:25 +0000 +++ lisp/ChangeLog 2010-08-14 23:42:07 +0000 @@ -1,3 +1,9 @@ +2010-08-14 Štěpán Němec (tiny change) + + * font-lock.el (lisp-font-lock-keywords-2): Add + combine-after-change-calls, condition-case-no-debug, + with-demoted-errors, and with-silent-modifications (Bug#6025). + 2010-08-14 Kevin Ryde * emacs-lisp/copyright.el (copyright-update-year) === modified file 'lisp/font-lock.el' --- lisp/font-lock.el 2010-06-16 20:08:41 +0000 +++ lisp/font-lock.el 2010-08-14 23:42:07 +0000 @@ -2283,14 +2283,17 @@ "inline" "lambda" "save-restriction" "save-excursion" "save-selected-window" "save-window-excursion" "save-match-data" "save-current-buffer" - "unwind-protect" "condition-case" "track-mouse" - "eval-after-load" "eval-and-compile" "eval-when-compile" - "eval-when" "eval-next-after-load" + "combine-after-change-calls" "unwind-protect" + "condition-case" "condition-case-no-debug" + "track-mouse" "eval-after-load" "eval-and-compile" + "eval-when-compile" "eval-when" "eval-next-after-load" "with-case-table" "with-category-table" - "with-current-buffer" "with-electric-help" + "with-current-buffer" "with-demoted-errors" + "with-electric-help" "with-local-quit" "with-no-warnings" "with-output-to-string" "with-output-to-temp-buffer" - "with-selected-window" "with-selected-frame" "with-syntax-table" + "with-selected-window" "with-selected-frame" + "with-silent-modifications" "with-syntax-table" "with-temp-buffer" "with-temp-file" "with-temp-message" "with-timeout" "with-timeout-handler") t) "\\>") ------------------------------------------------------------ revno: 101086 committer: Chong Yidong branch nick: trunk timestamp: Sat 2010-08-14 19:32:25 -0400 message: Fix ChangeLog entry in last commit. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-14 23:30:51 +0000 +++ lisp/ChangeLog 2010-08-14 23:32:25 +0000 @@ -1,7 +1,8 @@ 2010-08-14 Kevin Ryde * emacs-lisp/copyright.el (copyright-update-year) - (copyright-update): Use save-window-excursion (Bug#5394). + (copyright-update): Temporary switch-to-buffer to ensure the + buffer change being queried is visible (Bug#5394). 2010-08-14 Tom Tromey ------------------------------------------------------------ revno: 101085 author: Kevin Ryde committer: Chong Yidong branch nick: trunk timestamp: Sat 2010-08-14 19:30:51 -0400 message: Save window excursion before prompting in copyright-update-* (Bug#5394). * emacs-lisp/copyright.el (copyright-update-year) (copyright-update): Use save-window-excursion (Bug#5394). diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-14 23:01:42 +0000 +++ lisp/ChangeLog 2010-08-14 23:30:51 +0000 @@ -1,3 +1,8 @@ +2010-08-14 Kevin Ryde + + * emacs-lisp/copyright.el (copyright-update-year) + (copyright-update): Use save-window-excursion (Bug#5394). + 2010-08-14 Tom Tromey * progmodes/etags.el (tags-file-name): Mark safe if stringp === modified file 'lisp/emacs-lisp/copyright.el' --- lisp/emacs-lisp/copyright.el 2010-01-13 08:35:10 +0000 +++ lisp/emacs-lisp/copyright.el 2010-08-14 23:30:51 +0000 @@ -158,13 +158,15 @@ (unless (string= (buffer-substring (- (match-end 3) 2) (match-end 3)) (substring copyright-current-year -2)) (if (or noquery - ;; Fixes some point-moving oddness (bug#2209). - (save-excursion - (y-or-n-p (if replace - (concat "Replace copyright year(s) by " - copyright-current-year "? ") - (concat "Add " copyright-current-year - " to copyright? "))))) + (save-window-excursion + (switch-to-buffer (current-buffer)) + ;; Fixes some point-moving oddness (bug#2209). + (save-excursion + (y-or-n-p (if replace + (concat "Replace copyright year(s) by " + copyright-current-year "? ") + (concat "Add " copyright-current-year + " to copyright? ")))))) (if replace (replace-match copyright-current-year t t nil 3) (let ((size (save-excursion (skip-chars-backward "0-9")))) @@ -224,8 +226,10 @@ (string-to-number copyright-current-gpl-version)) (or noquery (save-match-data - (y-or-n-p (format "Replace GPL version by %s? " - copyright-current-gpl-version)))) + (save-window-excursion + (switch-to-buffer (current-buffer)) + (y-or-n-p (format "Replace GPL version by %s? " + copyright-current-gpl-version))))) (progn (if (match-end 2) ;; Esperanto bilingual comment in two-column.el ------------------------------------------------------------ revno: 101084 author: Tom Tromey committer: Chong Yidong branch nick: trunk timestamp: Sat 2010-08-14 19:01:42 -0400 message: * lisp/progmodes/etags.el (tags-file-name): Mark safe if stringp (Bug#6733). diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-14 15:41:22 +0000 +++ lisp/ChangeLog 2010-08-14 23:01:42 +0000 @@ -1,3 +1,8 @@ +2010-08-14 Tom Tromey + + * progmodes/etags.el (tags-file-name): Mark safe if stringp + (Bug#6733). + 2010-08-14 Eli Zaretskii * mouse.el (mouse-yank-primary): Fix mouse-2 on MS-Windows and === modified file 'lisp/progmodes/etags.el' --- lisp/progmodes/etags.el 2010-05-01 01:08:43 +0000 +++ lisp/progmodes/etags.el 2010-08-14 23:01:42 +0000 @@ -40,6 +40,7 @@ Use the `etags' program to make a tags table file.") ;; Make M-x set-variable tags-file-name like M-x visit-tags-table. ;;;###autoload (put 'tags-file-name 'variable-interactive (purecopy "fVisit tags table: ")) +;;;###autoload (put 'tags-file-name 'safe-local-variable 'stringp) (defgroup etags nil "Tags tables." :group 'tools) ------------------------------------------------------------ revno: 101083 author: Vivek Dasmohapatra committer: Chong Yidong branch nick: trunk timestamp: Sat 2010-08-14 18:58:10 -0400 message: Allow delayed autojoin in ERC (Bug#5521). * erc/erc-join.el (erc-autojoin-timing, erc-autojoin-delay): New vars. (erc-autojoin-channels-delayed, erc-autojoin-after-ident): New functions. (erc-autojoin-channels): Allow autojoining after ident (Bug#5521). diff: === modified file 'etc/NEWS' --- etc/NEWS 2010-08-13 06:57:12 +0000 +++ etc/NEWS 2010-08-14 22:58:10 +0000 @@ -213,6 +213,14 @@ ** Archive Mode has basic support to browse 7z archives. +** ERC changes + +*** New vars `erc-autojoin-timing' and `erc-autojoin-delay'. +If the value of `erc-autojoin-timing' is 'ident, ERC autojoins after a +successful NickServ identification, or after `erc-autojoin-delay' +seconds. The default value, 'ident, means to autojoin immediately +after connecting. + ** In ido-mode, C-v is no longer bound to ido-toggle-vc. The reason is that this interferes with cua-mode. === modified file 'lisp/erc/ChangeLog' --- lisp/erc/ChangeLog 2010-08-08 22:13:53 +0000 +++ lisp/erc/ChangeLog 2010-08-14 22:58:10 +0000 @@ -1,3 +1,10 @@ +2010-08-14 Vivek Dasmohapatra + + * erc-join.el (erc-autojoin-timing, erc-autojoin-delay): New vars. + (erc-autojoin-channels-delayed, erc-autojoin-after-ident): New + functions. + (erc-autojoin-channels): Allow autojoining after ident (Bug#5521). + 2010-08-08 Fran Litterio * erc-backend.el (erc-server-filter-function): Call === modified file 'lisp/erc/erc-join.el' --- lisp/erc/erc-join.el 2010-01-13 08:35:10 +0000 +++ lisp/erc/erc-join.el 2010-08-14 22:58:10 +0000 @@ -42,9 +42,11 @@ (define-erc-module autojoin nil "Makes ERC autojoin on connects and reconnects." ((add-hook 'erc-after-connect 'erc-autojoin-channels) + (add-hook 'erc-nickserv-identified-hook 'erc-autojoin-after-ident) (add-hook 'erc-server-JOIN-functions 'erc-autojoin-add) (add-hook 'erc-server-PART-functions 'erc-autojoin-remove)) ((remove-hook 'erc-after-connect 'erc-autojoin-channels) + (remove-hook 'erc-nickserv-identified-hook 'erc-autojoin-after-ident) (remove-hook 'erc-server-JOIN-functions 'erc-autojoin-add) (remove-hook 'erc-server-PART-functions 'erc-autojoin-remove))) @@ -66,6 +68,24 @@ (repeat :tag "Channels" (string :tag "Name"))))) +(defcustom erc-autojoin-timing 'connect + "When ERC should attempt to autojoin a channel. +If the value is `connect', autojoin immediately on connecting. +If the value is `ident', autojoin after successful NickServ +identification, or after `erc-autojoin-delay' seconds. +Any other value means the same as `connect'." + :group 'erc-autojoin + :type '(choice (const :tag "On Connection" 'connect) + (const :tag "When Identified" 'ident))) + +(defcustom erc-autojoin-delay 30 + "Number of seconds to wait before attempting to autojoin channels. +This only takes effect if `erc-autojoin-timing' is `ident'. +If NickServ identification occurs before this delay expires, ERC +autojoins immediately at that time." + :group 'erc-autojoin + :type 'integer) + (defcustom erc-autojoin-domain-only t "Truncate host name to the domain name when joining a server. If non-nil, and a channel on the server a.b.c is joined, then @@ -75,12 +95,60 @@ :group 'erc-autojoin :type 'boolean) +(defvar erc--autojoin-timer nil) +(make-variable-buffer-local 'erc--autojoin-timer) + +(defun erc-autojoin-channels-delayed (server nick buffer) + "Attempt to autojoin channels. +This is called from a timer set up by `erc-autojoin-channels'." + (if erc--autojoin-timer + (setq erc--autojoin-timer + (erc-cancel-timer erc--autojoin-timer))) + (with-current-buffer buffer + ;; Don't kick of another delayed autojoin or try to wait for + ;; another ident response: + (let ((erc-autojoin-delay -1) + (erc-autojoin-timing 'connect)) + (erc-log "Delayed autojoin started (no ident success detected yet)") + (erc-autojoin-channels server nick)))) + +(defun erc-autojoin-after-ident (network nick) + "Autojoin channels in `erc-autojoin-channels-alist'. +This function is run from `erc-nickserv-identified-hook'." + (if erc--autojoin-timer + (setq erc--autojoin-timer + (erc-cancel-timer erc--autojoin-timer))) + (when (eq erc-autojoin-timing 'ident) + (let ((server (or erc-server-announced-name erc-session-server)) + (joined (mapcar (lambda (buf) + (with-current-buffer buf (erc-default-target))) + (erc-channel-list erc-server-process)))) + ;; We may already be in these channels, e.g. because the + ;; autojoin timer went off. + (dolist (l erc-autojoin-channels-alist) + (when (string-match (car l) server) + (dolist (chan (cdr l)) + (unless (erc-member-ignore-case chan joined) + (erc-server-send (concat "join " chan)))))))) + nil) + (defun erc-autojoin-channels (server nick) "Autojoin channels in `erc-autojoin-channels-alist'." - (dolist (l erc-autojoin-channels-alist) - (when (string-match (car l) server) - (dolist (chan (cdr l)) - (erc-server-send (concat "join " chan)))))) + (if (eq erc-autojoin-timing 'ident) + ;; Prepare the delayed autojoin timer, in case ident doesn't + ;; happen within the allotted time limit: + (when (> erc-autojoin-delay 0) + (setq erc--autojoin-timer + (run-with-timer erc-autojoin-delay nil + 'erc-autojoin-channels-delayed + server nick (current-buffer)))) + ;; `erc-autojoin-timing' is `connect': + (dolist (l erc-autojoin-channels-alist) + (when (string-match (car l) server) + (dolist (chan (cdr l)) + (erc-server-send (concat "join " chan)))))) + ;; Return nil to avoid stomping on any other hook funcs. + nil) (defun erc-autojoin-add (proc parsed) "Add the channel being joined to `erc-autojoin-channels-alist'." ------------------------------------------------------------ revno: 101082 committer: Katsumi Yamaoka branch nick: trunk timestamp: Sat 2010-08-14 22:14:02 +0000 message: Typo fix "hoo4a" -> "hook". From Ted Zlatanov . * gnus-sync.el (gnus-sync-install-hooks): Typo fix. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2010-08-14 10:50:20 +0000 +++ lisp/gnus/ChangeLog 2010-08-14 22:14:02 +0000 @@ -1,3 +1,9 @@ +2010-08-14 Teodor Zlatanov + + Typo fix "hoo4a" -> "hook". + + * gnus-sync.el (gnus-sync-install-hooks): Typo fix. + 2010-08-14 Glenn Morris * gnus-sync.el (gnus-sync): Fix defgroup version. === modified file 'lisp/gnus/gnus-sync.el' --- lisp/gnus/gnus-sync.el 2010-08-14 10:50:20 +0000 +++ lisp/gnus/gnus-sync.el 2010-08-14 22:14:02 +0000 @@ -95,20 +95,16 @@ ;; populate gnus-sync-newsrc-loader from all but the first dummy ;; entry in gnus-newsrc-alist whose group matches any of the ;; gnus-sync-newsrc-groups - (let* ((loader - (loop for entry in (cdr gnus-newsrc-alist) - when (gnus-grep-in-list - (car entry) ;the group name - gnus-sync-newsrc-groups) - collect (cons (car entry) - (mapcar (lambda (offset) - (cons offset (nth offset entry))) - gnus-sync-newsrc-offsets)))) - (gnus-sync-newsrc-loader - (nunion loader - (set-difference gnus-sync-newsrc-loader loader :key 'car) - :key 'car))) - + ;; TODO: keep the old contents for groups we don't have! + (let ((gnus-sync-newsrc-loader + (loop for entry in (cdr gnus-newsrc-alist) + when (gnus-grep-in-list + (car entry) ;the group name + gnus-sync-newsrc-groups) + collect (cons (car entry) + (mapcar (lambda (offset) + (cons offset (nth offset entry))) + gnus-sync-newsrc-offsets))))) (with-temp-file gnus-sync-backend (progn (let ((coding-system-for-write gnus-ding-file-coding-system) @@ -216,7 +212,7 @@ (interactive) ;; (add-hook 'gnus-get-new-news-hook 'gnus-sync-read) (add-hook 'gnus-save-newsrc-hook 'gnus-sync-save) - (add-hook 'gnus-read-newsrc-el-hoo4a 'gnus-sync-read)) + (add-hook 'gnus-read-newsrc-el-hook 'gnus-sync-read)) (defun gnus-sync-unload-hook () "Uninstall the sync hooks." ------------------------------------------------------------ revno: 101081 committer: Chong Yidong branch nick: trunk timestamp: Sat 2010-08-14 17:13:49 -0400 message: Minor doc fix. diff: === modified file 'src/fns.c' --- src/fns.c 2010-08-14 00:39:08 +0000 +++ src/fns.c 2010-08-14 21:13:49 +0000 @@ -4425,7 +4425,7 @@ :rehash-threshold THRESHOLD -- THRESHOLD must a float > 0, and <= 1.0. Resize the hash table when the ratio (number of entries / table size) -is greater or equal than THRESHOLD. Default is 0.8. +is greater than or equal to THRESHOLD. Default is 0.8. :weakness WEAK -- WEAK must be one of nil, t, `key', `value', `key-or-value', or `key-and-value'. If WEAK is not nil, the table ------------------------------------------------------------ revno: 101080 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2010-08-14 18:41:22 +0300 message: Fix bug #6689 with mouse-2 pasting on Windows. mouse.el (mouse-yank-primary): On MS-Windows and MS-DOS, call x-get-selection-value in preference to x-get-selection. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-08-13 13:26:13 +0000 +++ lisp/ChangeLog 2010-08-14 15:41:22 +0000 @@ -1,3 +1,8 @@ +2010-08-14 Eli Zaretskii + + * mouse.el (mouse-yank-primary): Fix mouse-2 on MS-Windows and + MS-DOS. (Bug#6689) + 2010-08-13 Jan Djärv * menu-bar.el (menu-bar-set-tool-bar-position): New function. === modified file 'lisp/mouse.el' --- lisp/mouse.el 2010-08-08 21:57:34 +0000 +++ lisp/mouse.el 2010-08-14 15:41:22 +0000 @@ -1265,10 +1265,17 @@ ;; the middle of an active region. (deactivate-mark)) (or mouse-yank-at-point (mouse-set-point click)) - (let ((primary (x-get-selection 'PRIMARY))) + (let ((primary + (cond + ((fboundp 'x-get-selection-value) ; MS-DOS and MS-Windows + (or (x-get-selection-value) + (x-get-selection 'PRIMARY))) + ;; FIXME: What about xterm-mouse-mode etc.? + (t + (x-get-selection 'PRIMARY))))) (if primary (insert primary) - (error "No primary selection")))) + (error "No selection is available")))) (defun mouse-kill-ring-save (click) "Copy the region between point and the mouse click in the kill ring. ------------------------------------------------------------ revno: 101079 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2010-08-14 15:55:04 +0300 message: Fix cursor drawing on stretch glyphs in R2L lines. xterm.c (x_draw_stretch_glyph_string): w32term.c (x_draw_stretch_glyph_string): In R2L rows, display the cursor on the right edge of the stretch glyph. xdisp.c (window_box_right_offset, window_box_right): Fix commentary. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-14 10:59:55 +0000 +++ src/ChangeLog 2010-08-14 12:55:04 +0000 @@ -1,5 +1,12 @@ 2010-08-14 Eli Zaretskii + * xterm.c (x_draw_stretch_glyph_string): + * w32term.c (x_draw_stretch_glyph_string): In R2L rows, display + the cursor on the right edge of the stretch glyph. + + * xdisp.c (window_box_right_offset, window_box_right): Fix + commentary. + * xdisp.c (Fcurrent_bidi_paragraph_direction): Fix paragraph direction when point is inside a run of whitespace characters. === modified file 'src/w32term.c' --- src/w32term.c 2010-07-25 00:20:51 +0000 +++ src/w32term.c 2010-08-14 12:55:04 +0000 @@ -2106,17 +2106,34 @@ if (s->hl == DRAW_CURSOR && !x_stretch_cursor_p) { - /* If `x-stretch-block-cursor' is nil, don't draw a block cursor - as wide as the stretch glyph. */ + /* If `x-stretch-cursor' is nil, don't draw a block cursor as + wide as the stretch glyph. */ int width, background_width = s->background_width; - int x = s->x, left_x = window_box_left_offset (s->w, TEXT_AREA); - - if (x < left_x) - { - background_width -= left_x - x; - x = left_x; + int x = s->x; + + if (!s->row->reversed_p) + { + int left_x = window_box_left_offset (s->w, TEXT_AREA); + + if (x < left_x) + { + background_width -= left_x - x; + x = left_x; + } + } + else + { + /* In R2L rows, draw the cursor on the right edge of the + stretch glyph. */ + int right_x = window_box_right_offset (s->w, TEXT_AREA); + + if (x + background_width > right_x) + background_width -= x - right_x; + x += background_width; } width = min (FRAME_COLUMN_WIDTH (s->f), background_width); + if (s->row->reversed_p) + x -= width; /* Draw cursor. */ x_draw_glyph_string_bg_rect (s, x, s->y, width, s->height); @@ -2130,7 +2147,10 @@ RECT r; HDC hdc = s->hdc; - x += width; + if (!s->row->reversed_p) + x += width; + else + x = s->x; if (s->row->mouse_face_p && cursor_in_mouse_face_p (s->w)) { === modified file 'src/xdisp.c' --- src/xdisp.c 2010-08-14 10:59:55 +0000 +++ src/xdisp.c 2010-08-14 12:55:04 +0000 @@ -1208,7 +1208,7 @@ /* Return the window-relative coordinate of the right edge of display - area AREA of window W. AREA < 0 means return the left edge of the + area AREA of window W. AREA < 0 means return the right edge of the whole window, to the left of the right fringe of W. */ INLINE int @@ -1238,7 +1238,7 @@ /* Return the frame-relative coordinate of the right edge of display - area AREA of window W. AREA < 0 means return the left edge of the + area AREA of window W. AREA < 0 means return the right edge of the whole window, to the left of the right fringe of W. */ INLINE int === modified file 'src/xterm.c' --- src/xterm.c 2010-08-11 12:34:46 +0000 +++ src/xterm.c 2010-08-14 12:55:04 +0000 @@ -2435,17 +2435,34 @@ if (s->hl == DRAW_CURSOR && !x_stretch_cursor_p) { - /* If `x-stretch-block-cursor' is nil, don't draw a block cursor - as wide as the stretch glyph. */ + /* If `x-stretch-cursor' is nil, don't draw a block cursor as + wide as the stretch glyph. */ int width, background_width = s->background_width; - int x = s->x, left_x = window_box_left_offset (s->w, TEXT_AREA); - - if (x < left_x) - { - background_width -= left_x - x; - x = left_x; + int x = s->x; + + if (!s->row->reversed_p) + { + int left_x = window_box_left_offset (s->w, TEXT_AREA); + + if (x < left_x) + { + background_width -= left_x - x; + x = left_x; + } + } + else + { + /* In R2L rows, draw the cursor on the right edge of the + stretch glyph. */ + int right_x = window_box_right_offset (s->w, TEXT_AREA); + + if (x + background_width > right_x) + background_width -= x - right_x; + x += background_width; } width = min (FRAME_COLUMN_WIDTH (s->f), background_width); + if (s->row->reversed_p) + x -= width; /* Draw cursor. */ x_draw_glyph_string_bg_rect (s, x, s->y, width, s->height); @@ -2458,7 +2475,10 @@ XRectangle r; GC gc; - x += width; + if (!s->row->reversed_p) + x += width; + else + x = s->x; if (s->row->mouse_face_p && cursor_in_mouse_face_p (s->w)) { ------------------------------------------------------------ revno: 101078 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2010-08-14 13:59:55 +0300 message: Fix current-bidi-paragraph-direction within whitespace chars. xdisp.c (Fcurrent_bidi_paragraph_direction): Fix paragraph direction when point is inside a run of whitespace characters. bidi.c (bidi_at_paragraph_end): Remove obsolete comment. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-14 07:35:24 +0000 +++ src/ChangeLog 2010-08-14 10:59:55 +0000 @@ -1,3 +1,10 @@ +2010-08-14 Eli Zaretskii + + * xdisp.c (Fcurrent_bidi_paragraph_direction): Fix paragraph + direction when point is inside a run of whitespace characters. + + * bidi.c (bidi_at_paragraph_end): Remove obsolete comment. + 2010-08-14 Jason Rumney * keyboard.c (lispy_function_keys): Do not define VK_PACKET (bug#4836) === modified file 'src/bidi.c' --- src/bidi.c 2010-08-06 10:12:41 +0000 +++ src/bidi.c 2010-08-14 10:59:55 +0000 @@ -497,7 +497,6 @@ static EMACS_INT bidi_at_paragraph_end (EMACS_INT charpos, EMACS_INT bytepos) { - /* FIXME: Why Fbuffer_local_value rather than just Fsymbol_value? */ Lisp_Object sep_re; Lisp_Object start_re; EMACS_INT val; === modified file 'src/xdisp.c' --- src/xdisp.c 2010-08-08 21:03:45 +0000 +++ src/xdisp.c 2010-08-14 10:59:55 +0000 @@ -17962,16 +17962,22 @@ struct bidi_it itb; EMACS_INT pos = BUF_PT (buf); EMACS_INT bytepos = BUF_PT_BYTE (buf); + int c; if (buf != current_buffer) set_buffer_temp (buf); - /* Find previous non-empty line. */ + /* bidi_paragraph_init finds the base direction of the paragraph + by searching forward from paragraph start. We need the base + direction of the current or _previous_ paragraph, so we need + to make sure we are within that paragraph. To that end, find + the previous non-empty line. */ if (pos >= ZV && pos > BEGV) { pos--; bytepos = CHAR_TO_BYTE (pos); } - while (FETCH_BYTE (bytepos) == '\n') + while ((c = FETCH_BYTE (bytepos)) == '\n' + || c == ' ' || c == '\t' || c == '\f') { if (bytepos <= BEGV_BYTE) break; @@ -17983,6 +17989,7 @@ itb.charpos = pos; itb.bytepos = bytepos; itb.first_elt = 1; + itb.separator_limit = -1; bidi_paragraph_init (NEUTRAL_DIR, &itb); if (buf != current_buffer) ------------------------------------------------------------ revno: 101077 committer: Katsumi Yamaoka branch nick: trunk timestamp: Sat 2010-08-14 10:50:20 +0000 message: Ammended for bug fix on the loader nunion. From Ted Zlatanov . * (gnus-sync-save): Keep unknown groups in `gnus-sync-newsrc-loader'. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2010-08-14 10:45:32 +0000 +++ lisp/gnus/ChangeLog 2010-08-14 10:50:20 +0000 @@ -4,7 +4,7 @@ 2010-08-13 Teodor Zlatanov - Doc fixes and keep unknown groups. + Doc fixes and keep unknown groups (ammended for nunion bug fix). * gnus-sync.el: Fix docs. (gnus-sync-save): Keep unknown groups in `gnus-sync-newsrc-loader'. === modified file 'lisp/gnus/gnus-sync.el' --- lisp/gnus/gnus-sync.el 2010-08-14 10:45:32 +0000 +++ lisp/gnus/gnus-sync.el 2010-08-14 10:50:20 +0000 @@ -105,7 +105,7 @@ (cons offset (nth offset entry))) gnus-sync-newsrc-offsets)))) (gnus-sync-newsrc-loader - (nunion gnus-sync-newsrc-loader + (nunion loader (set-difference gnus-sync-newsrc-loader loader :key 'car) :key 'car))) @@ -128,13 +128,16 @@ gnus-sync-global-vars)) variable) (while variables - (when (and (boundp (setq variable (pop variables))) + (if (and (boundp (setq variable (pop variables))) (symbol-value variable)) - (princ "\n(setq ") - (princ (symbol-name variable)) - (princ " '") - (prin1 (symbol-value variable)) - (princ ")\n")))) + (progn + (princ "\n(setq ") + (princ (symbol-name variable)) + (princ " '") + (prin1 (symbol-value variable)) + (princ ")\n")) + (princ "\n;;; skipping empty variable ") + (princ (symbol-name variable))))) (gnus-message 7 "gnus-sync: stored variables %s and %d groups in %s" ------------------------------------------------------------ revno: 101076 committer: Katsumi Yamaoka branch nick: trunk timestamp: Sat 2010-08-14 10:45:32 +0000 message: Doc fixes and keep unknown groups. From Ted Zlatanov . * gnus-sync.el: Fix docs. (gnus-sync-save): Keep unknown groups in `gnus-sync-newsrc-loader'. (gnus-sync-read): Don't wipe `gnus-sync-newsrc-loader' after reading. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2010-08-14 02:02:31 +0000 +++ lisp/gnus/ChangeLog 2010-08-14 10:45:32 +0000 @@ -2,6 +2,14 @@ * gnus-sync.el (gnus-sync): Fix defgroup version. +2010-08-13 Teodor Zlatanov + + Doc fixes and keep unknown groups. + + * gnus-sync.el: Fix docs. + (gnus-sync-save): Keep unknown groups in `gnus-sync-newsrc-loader'. + (gnus-sync-read): Don't wipe `gnus-sync-newsrc-loader' after reading. + 2010-08-12 Teodor Zlatanov Optimizations for gnus-sync.el. === modified file 'lisp/gnus/gnus-sync.el' --- lisp/gnus/gnus-sync.el 2010-08-14 02:02:31 +0000 +++ lisp/gnus/gnus-sync.el 2010-08-14 10:45:32 +0000 @@ -31,10 +31,10 @@ ;; Tramp over IMAP: /imaps:user@yourhosthere.com:/INBOX.test/filename ;; ...or any other file Tramp and Emacs can handle... -;; (setq gnus-sync-backend `("/remote:/path.gpg") ; will use Tramp+EPA if loaded +;; (setq gnus-sync-backend "/remote:/path.gpg" ; will use Tramp+EPA if loaded ;; gnus-sync-global-vars `(gnus-newsrc-last-checked-date) ;; gnus-sync-newsrc-groups `("nntp" "nnrss") -;; gnus-sync-newsrc-vars `(read marks)) +;; gnus-sync-newsrc-offsets `(2 3)) ;; TODO: @@ -95,15 +95,19 @@ ;; populate gnus-sync-newsrc-loader from all but the first dummy ;; entry in gnus-newsrc-alist whose group matches any of the ;; gnus-sync-newsrc-groups - (let ((gnus-sync-newsrc-loader - (loop for entry in (cdr gnus-newsrc-alist) - when (gnus-grep-in-list - (car entry) ;the group name - gnus-sync-newsrc-groups) - collect (cons (car entry) - (mapcar (lambda (offset) - (cons offset (nth offset entry))) - gnus-sync-newsrc-offsets))))) + (let* ((loader + (loop for entry in (cdr gnus-newsrc-alist) + when (gnus-grep-in-list + (car entry) ;the group name + gnus-sync-newsrc-groups) + collect (cons (car entry) + (mapcar (lambda (offset) + (cons offset (nth offset entry))) + gnus-sync-newsrc-offsets)))) + (gnus-sync-newsrc-loader + (nunion gnus-sync-newsrc-loader + (set-difference gnus-sync-newsrc-loader loader :key 'car) + :key 'car))) (with-temp-file gnus-sync-backend (progn @@ -189,8 +193,7 @@ (length gnus-sync-newsrc-loader) gnus-sync-backend) (gnus-message 9 "gnus-sync: skipped groups: %s" - (mapconcat 'identity invalid-groups ", "))) - (setq gnus-sync-newsrc-loader nil))) + (mapconcat 'identity invalid-groups ", "))))) (nil)) ;; make the hashtable again because the newsrc-alist may have been modified (when gnus-sync-newsrc-offsets ------------------------------------------------------------ revno: 101075 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2010-08-14 11:46:48 +0300 message: Minor fixes in TUTORIAL.he. tutorials/TUTORIAL.he: Use MAQAF instead of hyphen where appropriate. Fix a few typos. diff: === modified file 'etc/ChangeLog' --- etc/ChangeLog 2010-08-08 21:12:29 +0000 +++ etc/ChangeLog 2010-08-14 08:46:48 +0000 @@ -1,3 +1,8 @@ +2010-08-14 Eli Zaretskii + + * tutorials/TUTORIAL.he: Use MAQAF instead of hyphen where appropriate. + Fix a few typos. + 2010-08-08 Ken Brown * PROBLEMS: Mention problem with Cygwin 1.5.19. === modified file 'etc/tutorials/TUTORIAL.he' --- etc/tutorials/TUTORIAL.he 2010-08-07 09:50:08 +0000 +++ etc/tutorials/TUTORIAL.he 2010-08-14 08:46:48 +0000 @@ -1,6 +1,6 @@ -שיעור ראשון בשימוש ב-Emacs. זכויות שימוש ראה בסוף המסמך. +שיעור ראשון בשימוש ב־Emacs. זכויות שימוש ראה בסוף המסמך. -פקודות רבות של Emacs משתמשות במקש CONTROL (לפעמים הוא מסומן ב-CTRL או CTL) +פקודות רבות של Emacs משתמשות במקש CONTROL (לפעמים הוא מסומן ב־CTRL או CTL) או במקש META (לפעמים מסומן EDIT או ALT). במקום לציין את כל השמות האפשריים בכל פעם, נשתמש בקיצורים הבאים: @@ -10,13 +10,13 @@ אם במקלדת אין אף אחד ממקשי META או EDIT או ALT, אפשר להקיש ולשחרר מקש ESC ואז להקיש <תו>. אנו נכתוב עבור מקש ESC. -הערה חשובה: כדי לצאת מ-Emacs יש להקיש C-x C-c (שני תוים, משמאל לימין). +הערה חשובה: כדי לצאת מ־Emacs יש להקיש C-x C-c (שני תוים, משמאל לימין). כדי להפסיק פקודה באמצע ההקשה, יש להקיש C-g. המחרוזת ">>" בקצה הימני מסמנת הוראות עבורכם כדי לנסות להשתמש בפקודה כלשהי. לדוגמה: <<שורות ריקות תתווספנה סביב השורה הבאה ע"י help-with-tutorial>> [אמצע העמוד הושאר ריק למטרות לימודיות. הטקסט ממשיך להלן] ->> הקישו עתה C-v (הצג העמוד הבא) על-מנת להתקדם לעמוד הבא. (קדימה, נסו +>> הקישו עתה C-v (הצג העמוד הבא) על־מנת להתקדם לעמוד הבא. (קדימה, נסו זאת ע"י לחיצה והחזקה של מקש CONTROL והקשה על v.) מעתה והלאה, עליכם לעשות זאת בכל פעם שתסיימו לקרוא את המוצג על המסך. @@ -28,7 +28,7 @@ (החזיקו מקש META והקישו v או הקישו ‭v‬ אם אין במקלדת מקש META או EDIT או ALT). ->> נסו עתה כמה פעמים להקיש M-v ואחר-כך C-v. +>> נסו עתה כמה פעמים להקיש M-v ואחר־כך C-v. * סיכום עד כאן @@ -42,24 +42,24 @@ כך שהטקסט ליד הסמן יימצא במרכז התצוגה (שימו לב: CONTROL-L ולא CONTROL-1.) ->> מצאו את הסמן על-גבי התצוגה וזכרו את הטקסט לידו. לאחר מכן הקישו C-l. +>> מצאו את הסמן על־גבי התצוגה וזכרו את הטקסט לידו. לאחר מכן הקישו C-l. מצאו את הסמן שנית ושימו לב שהוא עדיין ליד אותו הטקסט, אבל עכשיו הוא במרכז התצוגה. אם תקישו C-l שוב, קטע הטקסט הזה יזוז לקצה העליון של התצוגה. הקישו C-l שוב והוא יזוז לתחתית התצוגה. -גם מקשי PageUp ו-PageDn, אם הם קיימים במקלדת שלכם, יכולים לשמש לתנועה -בעמודים שלמים, אולם השימוש ב-C-v ו-M-v יעיל יותר. +גם מקשי PageUp ו־PageDn, אם הם קיימים במקלדת שלכם, יכולים לשמש לתנועה +בעמודים שלמים, אולם השימוש ב־C-v ו־M-v יעיל יותר. * תנועת סמן בסיסית ------------------ תנועה בעמודים שלמים הינה שימושית, אבל כיצד ניתן להגיע למקום ספציפי -בתוך הטקסט שעל-גבי התצוגה? +בתוך הטקסט שעל־גבי התצוגה? ניתן לעשות זאת בכמה דרכים. אפשר למשל להשתמש במקשי החצים, אולם יהיה זה יעיל יותר אם תחזיקו את הידיים מעל החלק הסטנדרטי של המקלדת ותשתמשו -בפקודות C-p, C-b, C-f ו-C-n. פקודות אלו שוות ערך לארבעת מקשי החצים, +בפקודות C-p, C-b, C-f ו־C-n. פקודות אלו שוות ערך לארבעת מקשי החצים, כדלקמן: שורה קודמת, C-p @@ -70,58 +70,58 @@ : השורה הבאה, C-n ->> השתמשו במקשי C-n ו-C-p על-מנת להגיע לשורה האמצעית של הדיאגרמה. - הקישו C-l כדי למרכז את הדיאגרמה על-גבי התצוגה. +>> השתמשו במקשי C-n ו־C-p על־מנת להגיע לשורה האמצעית של הדיאגרמה. + הקישו C-l כדי למרכז את הדיאגרמה על־גבי התצוגה. קל יותר לזכור את המקשים הללו באמצעות המלים שהם מייצגים: -P מ-previous (קודם), N מ-Next (הבא), B מ-Backward (אחורה) -ו-F מ-Forward (קדימה). מקשי התנועה הבסיסיים הללו ישמשו אתכם כל הזמן. +P מ־previous (קודם), N מ־Next (הבא), B מ־Backward (אחורה) +ו־F מ־Forward (קדימה). מקשי התנועה הבסיסיים הללו ישמשו אתכם כל הזמן. >> הקישו C-n כמה פעמים כדי למקם את הסמן בשורה זו. ->> הניעו את הסמן בתוך השורה עם C-f ואחר-כך למעלה עם C-p. +>> הניעו את הסמן בתוך השורה עם C-f ואחר־כך למעלה עם C-p. שימו לב מה עושה C-p כאשר הסמן נמצא באמצע השורה. כל שורה של טקטס מסתיימת בתו מיוחד הנקרא Newline. תו זה מפריד בין השורה לזו שאחריה. (בדרך כלל, השורה האחרונה בקובץ תסתיים אף היא -ב-Newline, אך Emacs אינו זקוק לכך.) +ב־Newline, אך Emacs אינו זקוק לכך.) >> נסו C-b בתחילת שורה. הוא יגרום לסמן לנוע לסוף השורה הקודמת. זאת, - משום שהוא נע אחורה וחולף על-פני תו ה-Newline. + משום שהוא נע אחורה וחולף על־פני תו ה־Newline. -גם C-f יכול לחלוף על-פני Newline, בדיוק כמו C-b. +גם C-f יכול לחלוף על־פני Newline, בדיוק כמו C-b. >> הקישו C-b עוד כמה פעמים כדי לקבל הרגשה היכן נמצא הסמן. עתה הקישו C-f מספר פעמים הדרוש לשוב לסוף השורה. ואז הקישו C-f עוד פעם אחת כדי לנוע לתחילת השורה הבאה. כשהסמן יוצא מגבולות הטקסט המוצג, חלקי הטקסט מעבר לחלק המוצג נכנסים -לתצוגה. לזה קוראים "גלילה". גלילה מאפשרת ל-Emacs להניע את הסמן למקום +לתצוגה. לזה קוראים "גלילה". גלילה מאפשרת ל־Emacs להניע את הסמן למקום כלשהו בטקסט מבלי שהסמן ייעלם מהתצוגה. >> נסו להניע את הסמן אל מחוץ לתצוגה ע"י הקשת C-n ושימו לב למה שקורה. -אם תנועה תו-תו איטית מדי, תוכלו לנוע מילים שלמות. M-f ‏(META-f) מזיז +אם תנועה תו־תו איטית מדי, תוכלו לנוע מילים שלמות. M-f ‏(META-f) מזיז את הסמן מילה אחת קדימה ואילו M-b זז מילה אחורה. ->> הקישו M-f ו-M-b מספר פעמים. +>> הקישו M-f ו־M-b מספר פעמים. אם הסמן נמצא באמצע מילה, M-f זז לסוף המילה. אם הסמן נמצא בין שתי מלים, M-f עובר את המילה הבאה ונעצר בסופה. M-b פועל באופן דומה בכיוון הפוך. ->> הקישו עתה M-f ו-M-b פעמים אחדות, וגם C-f ו-C-b פה ושם כדי שתוכלו - להתרשם מהתוצאה של M-f ו-M-b במקומות שונים בתוך ובין המלים. +>> הקישו עתה M-f ו־M-b פעמים אחדות, וגם C-f ו־C-b פה ושם כדי שתוכלו + להתרשם מהתוצאה של M-f ו־M-b במקומות שונים בתוך ובין המלים. -שימו לב להקבלה שבין C-f ו-C-b מצד אחד ו-M-f ו-M-b מהצד השני. לעתים +שימו לב להקבלה שבין C-f ו־C-b מצד אחד ו־M-f ו־M-b מהצד השני. לעתים קרובות מאד מקשים עם META משמשים לפעולות הקשורות ליחידות של שפה (מלים, משפטים, פסקאות) ואילו מקשים עם CONTROL פועלים על יחידות בסיסיות שאינן תלויות בסוג הטקסט שהינכך עורכים (תוים, שורות, וכד'). -ההקבלה הזאת קיימת גם לגבי שורות ומשפטים: C-a ו-C-e נעים לתחילת השורה -וסופה, בהתאמה, ואילו M-a ו-M-e נעים לתחילת המשפט וסופו. +ההקבלה הזאת קיימת גם לגבי שורות ומשפטים: C-a ו־C-e נעים לתחילת השורה +וסופה, בהתאמה, ואילו M-a ו־M-e נעים לתחילת המשפט וסופו. ->> נסו עתה שתי הקשות על C-a ואחר-כך שתי הקשות על C-e. - נסו שני M-a ואחר-כך שני M-e. +>> נסו עתה שתי הקשות על C-a ואחר־כך שתי הקשות על C-e. + נסו שני M-a ואחר־כך שני M-e. שימו לב שחזרה על C-a אינה עושה דבר, ואילו כל הקשה חוזרת על M-a מניעה את הסמן במשפט נוסף. אמנם אין כאן אנלוגיה מושלמת, אבל התוצאה נראית @@ -152,20 +152,20 @@ אלו הן הפקודות הנפוצות ביותר. שתי פקודות תנועה חשובות אחרת הן ‭M-<‬ ‏(META פחות), אשר נעה לתחילת -הטקסט, ו-‭M->‬ ‏(META יותר), אשר נעה לסוף הטקסט. +הטקסט, ו־‭M->‬ ‏(META יותר), אשר נעה לסוף הטקסט. ברוב המקלדות המקש ">" נמצא מעל הפסיק, לכן כדי להקישו יש צורך ללחוץ ולהחזיק מקש Shift. באופן דומה יש ללחוץ על Shift כדי להקיש ‭M-<‬כי אחרת היה יוצא M-פסיק. >> נסו עתה ‭M-<‬ כדי להגיע לתחילת השיעור. - אחר-כך הקישו C-v מספר פעמים, עד שתגיעו לכאן. + אחר־כך הקישו C-v מספר פעמים, עד שתגיעו לכאן. >> עכשיו נסו ‭M->‬ כדי להגיע לסוף השיעור. לאחר מכן הקישו M-v כמה פעמים כדי לחזור לכאן. ניתן להזיז את הסמן גם בעזרת מקשי החצים, אם הם קיימים במקלדת שלכם. -אבל אנחנו ממליצים ללמוד להשתמש ב-C-b, C-f, C-n ו-C-p משלוש סיבות. +אבל אנחנו ממליצים ללמוד להשתמש ב־C-b, C-f, C-n ו־C-p משלוש סיבות. קודם כל, הם יעבדו עם כל מקלדת. שנית, כשתתרגלו לעבוד עם Emacs, תראו כי השימוש במקשים אלו מהיר יותר מהשימוש בחצים (מכיון שאין צורך להזיז את היד מהחלק העיקרי של המקלדת). ושלישית, כשהמקשים הללו יהפכו להרגל, @@ -173,7 +173,7 @@ רוב הפקודות של Emacs מקבלות ארגומנט נומרי; עבור רוב הפקודות הארגומנט משמש כמונה של מספר החזרות על הפקודה. כדי לספק ארגומנט לפקודה, יש להקיש -C-u ואחר-כך ספרות, וזאת לפני שמקישים את הפקודה עצמה. עם במקלדת קיים +C-u ואחר־כך ספרות, וזאת לפני שמקישים את הפקודה עצמה. עם במקלדת קיים מקש META (או EDIT או ALT), יש גם אפשרות אחרת לציין ארגומנט נומרי: הקישו את הספרות תוך כדי החזקת מקש META. אנו ממליצים על C-u משום שהוא יעבוד עם כל מקלדת. הארגומנט הנומרי נקרא גם "ארגומנט קידומת" (prefix @@ -189,16 +189,16 @@ משתמשות בו כדגלון -- נוכחותו של הארגומנט, ללא קשר לערכו המספרי, גורמת לפקודה להתנהג קצת אחרת. -‏C-v ו-M-v יוצאים מהכלל הזה באופן אחר. כשפקודות אלו מקבלות ארגומנט, +‏C-v ו־M-v יוצאים מהכלל הזה באופן אחר. כשפקודות אלו מקבלות ארגומנט, הן גוללים את התצוגה כמספר הזה של שורות, ולא בדפים. למשל, C-u 8 C-v -יגלול את התצוגה ב-8 שורות. +יגלול את התצוגה ב־8 שורות. >> נסו עתה להקיש C-u 8 C-v. -כתוצאה, התצוגה היתה צריכה לזוז ב-8 שורות. אם ברצונכם לגלול בחזרה, -אפשר להשיג זאת ע"י מתן ארגומנט ל-M-v. +כתוצאה, התצוגה היתה צריכה לזוז ב־8 שורות. אם ברצונכם לגלול בחזרה, +אפשר להשיג זאת ע"י מתן ארגומנט ל־M-v. -אם הפעלתם את Emacs על-גבי מערכת חלונאית כגון X או MS-Windows, אתם +אם הפעלתם את Emacs על־גבי מערכת חלונאית כגון X או MS-Windows, אתם צריכים לראות פס צר וגבוה, ששמו פס גלילה (scroll bar) בצידו של החלון של Emacs. (שימו לב שבשני צידי החלון קיימים פסים נוספים. אלה נקראים "השוליים" -- "fringes" -- ומשמשים להצגת סימני המשך שורה וסימונים @@ -231,7 +231,7 @@ * פקודות מנוטרלות ----------------- -מספר פקודות ב-Emacs מנוטרלות בכוונה כדי שמשתמשים מתחילים לא יפעילו +מספר פקודות ב־Emacs מנוטרלות בכוונה כדי שמשתמשים מתחילים לא יפעילו אותן בדרך מקרה. אם תקישו את אחת הפקודות הללו, Emacs יציג הודעה המתארת את הפקודה וישאל @@ -262,13 +262,13 @@ >> הקישו C-x 1 ושימו לב שהחלון עם ההסבר על C-f נעלם. פקודה זו שונה מכל שאר הפקודות שלמדנו עד כה בכך שהיא מכילה שני תוים. -היא מתחילה עם התו CONTROL-x. פקודות רבות מאד מתחילות ב-CONTROL-x; חלק +היא מתחילה עם התו CONTROL-x. פקודות רבות מאד מתחילות ב־CONTROL-x; חלק גדול מהן עוסקות בחלונות, קבצים, חוצצים ונושאים דומים אחרים. פקודות אלו מכילות שנים, שלושה ואפילו ארבעה תוים. * הכנסה ומחיקה -------------- +-------------- אם ברצונכם להכניס טקסט, פשוט הקישו על המקשים המתאימים. תוים רגילים, כגון A, א, 7, * וכד' מתפרשים ע"י Emacs כטקסט ומיד מתווספים לטקסט @@ -278,15 +278,15 @@ למחיקת התו האחרון שהקשתם הקישו . המקש שאנו קוראים לו יכול להתקרא בשמות שונים -- "Delete", "DEL" או "Backspace". בדרך כלל זהו מקש גדול ובולט שנמצא לא הרחק ממקש , והוא משמש אתכם למחיקת -התו אחרון גם בתוכניות אחרות, לא רק ב-Emacs. +התו אחרון גם בתוכניות אחרות, לא רק ב־Emacs. אם קיים במקלדת שלכם מקש גדול שעליו רשום , אז זהון המקש אשר -ישמש כ-. גם אם יהיה מקש אחר המסומן ב-"Delete" במקום אחרת זה -אינו ה- שלכם. +ישמש כ־. גם אם יהיה מקש אחר המסומן ב־"Delete" במקום אחרת זה +אינו ה־ שלכם. באופן כללי יותר, מוחק את התו שקודם למיקום הסמן. ->> הקישו עתה מספר תוים, ואחר-כך מחקו אותם ע"י הקשות אחדות +>> הקישו עתה מספר תוים, ואחר־כך מחקו אותם ע"י הקשות אחדות על . אל תחששו לשנות את הקובץ הזה -- העותק המקורי של השיעור יישאר ללא שינוי. אתם עובדים על העותק האישי שלכם. @@ -297,24 +297,24 @@ >> הקישו טקסט עד שתגיעו לקצה השורה, ואז תמשיכו להקיש עוד טקסט. כתוצאה, תראו שמופיעה שורת המשך. ->> עתה הקישו על-מנת למחוק טקסט עד שהשורה תיעשה קצרה מספיק - ותתאים לשורה בודדת על-גבי התצוגה. שורת ההמשך תיעלם. +>> עתה הקישו על־מנת למחוק טקסט עד שהשורה תיעשה קצרה מספיק + ותתאים לשורה בודדת על־גבי התצוגה. שורת ההמשך תיעלם. -ניתן למחוק את תו ה-Newline כמו כל תו אחר. מחיקת ה-Newline בין שתי +ניתן למחוק את תו ה־Newline כמו כל תו אחר. מחיקת ה־Newline בין שתי שורות תמזג את השורות לשורה אחת. אם השורה המשולבת תהיה ארוכה מרוחב התצוגה, היא תוצג עם שורת המשך. >> הניעו את הסמן לתחילת השורה והקישו . כתוצאה, השורה תתמזג אם קודמתה. ->> עתה הקישו כדי להחזיר את ה-Newline שמחקתם. +>> עתה הקישו כדי להחזיר את ה־Newline שמחקתם. -זכרו כי לרוב הפקודות ב-Emacs אפשר לציין מספר חזרות. גם תוי טקסט +זכרו כי לרוב הפקודות ב־Emacs אפשר לציין מספר חזרות. גם תוי טקסט שייכים לקבוצת פקודות זו. חזרה על תו טקסט מכניסה אותו מספר פעמים. ->> נסו זאת עכשיו -- הקישו ‪C-u 8 *‬ על-מנת להכניס ********. +>> נסו זאת עכשיו -- הקישו ‪C-u 8 *‬ על־מנת להכניס ********. -ובכן, למדתם את האופן הבסיסי ביותר להדפיס משהו ב-Emacs ולתקן שגיאות. +ובכן, למדתם את האופן הבסיסי ביותר להדפיס משהו ב־Emacs ולתקן שגיאות. אפשר למחוק גם מלים ואף שורות שלמות. להלן סיכום פקודות המחיקה: ‏ מחק תו שלפני הסמן @@ -326,9 +326,9 @@ ‏C-k גזור טקסט מהסמן ועד סוף השורה ‏M-k גזור טקסט עד סוף המשפט הנוכחי. -שימו לב שהיחס בין ו-C-d לעומת M-‎ ו-M-d ממשיכים את -ההקבלה שבין C-f ו-M-f (אמנם איננו תו בקרה, בוא נזניח את -הנקודה הזו לעת-עתה). C-k ו-M-k דומים ל-C-e ו-M-e, אם נקביל שורות +שימו לב שהיחס בין ו־C-d לעומת M-‎ ו־M-d ממשיכים את +ההקבלה שבין C-f ו־M-f (אמנם איננו תו בקרה, בוא נזניח את +הנקודה הזו לעת־עתה). C-k ו־M-k דומים ל־C-e ו־M-e, אם נקביל שורות למשפטים. בנוסף, קיימת שיטה אחידה שמאפשרת לגזור קטע כלשהו של טקסט. לשם כך, תגיעו @@ -340,25 +340,25 @@ >> הקישו C-‎. ‏Emacs צריך להציג הודעה האומרת "Mark set" בתחתית התצוגה. >> הניעו את הסמן אל האות צ בשורה השניה של הפיסקה. ->> הקישו C-w. בכך תגזרו את חלק הטקסט שמתחיל ב-ב ומסתיים לפני ה-צ. +>> הקישו C-w. בכך תגזרו את חלק הטקסט שמתחיל ב־ב ומסתיים לפני ה־צ. -ההבדל בין "מחיקה" ("deletion") ו-"גזירה" ("killing") הוא שהטקסט +ההבדל בין "מחיקה" ("deletion") ו־"גזירה" ("killing") הוא שהטקסט "הגזור" ניתן לאחזור ולהכנסה (במקום כלשהוא בטקסט), ואילו טקסט "מחוק" לא ניתן להכניס מחדש בשיטה זו. (אבל ניתן לבטל את מחיקה -- ראה להלן.) אחזור הטקסט הגזור נקרא "הדבקה" ("yanking"). באופן כללי, פקודות אשר עלולות להעלים כמויות גדולות של טקסט תמיד גוזרות את הטקסט (כך שניתן יהיה בקלות לשחזרו) בעוד הפקודות שמורידות תו בודד או שורות ריקות ותוי רווח -- -מוחקות (כך שלא ניתן להדביק את הטקסט שנמחק). כך, ו-C-d מוחקים +מוחקות (כך שלא ניתן להדביק את הטקסט שנמחק). כך, ו־C-d מוחקים כאשר מפעילים אותם ללא ארגומנט, אבל גוזרים כאשר מפעילים אותם עם ארגומנט. ->> הניעו את הסמן לתחילת שורה שאינה ריקה. אחר-כך הקישו C-k כדי לגזור +>> הניעו את הסמן לתחילת שורה שאינה ריקה. אחר־כך הקישו C-k כדי לגזור את כל הטקסט של אותה שורה. ->> הקישו C-k פעם נוספת. שימו לב שהוא גוזר את ה-Newline שבסוף השורה. +>> הקישו C-k פעם נוספת. שימו לב שהוא גוזר את ה־Newline שבסוף השורה. -שימו לב ש-C-k בודד גוזר את תכולת השורה, ו-C-k נוסף גוזר גם את השורה +שימו לב ש־C-k בודד גוזר את תכולת השורה, ו־C-k נוסף גוזר גם את השורה עצמה וגורם לשאר השורות לנוע כלפי מעלה. C-k מפרש את הארגומנט הנומרי -באופן מיוחד: הוא גוזר כמספר הזה שורות, כולל ה-Newlines שלהן. זה שונה -מסתם הפעלה חוזרת: C-u 2 C-k גוזר שתי שורות כולל ה-Newlines שלהן, +באופן מיוחד: הוא גוזר כמספר הזה שורות, כולל ה־Newlines שלהן. זה שונה +מסתם הפעלה חוזרת: C-u 2 C-k גוזר שתי שורות כולל ה־Newlines שלהן, ואילו הקשה על C-k פעמיים לא עושה כן. אחזור הטקסט שגזרנו נקרא "הדבקה" ("yanking"). (תחשבו על זה כעל שליפה @@ -366,21 +366,21 @@ באותו מקום ממנו נגזר או במקום אחר כלשהו בתוך הטקסט שאתם עורכים, או אפילו בקובץ אחר. ניתן להדביק את אותו הטקסט מספר פעמים ובכך ליצור עותקים מרובים ממנו. תוכניות עריכה אחרות משתמשות במונחים "cutting" -ו-"pasting" במקום "killing" ו-"yanking" (ראה את מילון המונחים בפרק -ה-"Glossary" של מדריך למשתמשי Emacs). +ו־"pasting" במקום "killing" ו־"yanking" (ראה את מילון המונחים בפרק +ה־"Glossary" של מדריך למשתמשי Emacs). הפקודה להדבקה היא C-y. היא מכניסה את הטקסט הגזור במקום הנוכחי של הסמן. >> נסו זאת: הקישו C-y כדי לאחזר טקסט שגזרתם קודם לכן. אם תקישו C-k מספר פעמים ברצף, כל הטקסט שגזרתם בדרך זו נשמר ביחד, כך -ש-C-y בודד ידביק את כולו בבת אחת. +ש־C-y בודד ידביק את כולו בבת אחת. >> עשו זאת עתה: הקישו C-k כמה פעמים. עכשיו לאחזור הטקסט שגזרתם: ->> הקישו C-y. אחר-כך הניעו את הסמן כמה שורות כלפי מטה והקישו C-y שוב. +>> הקישו C-y. אחר־כך הניעו את הסמן כמה שורות כלפי מטה והקישו C-y שוב. כפי שראיתם, כך תוכלו להעתיק חלק מהטקסט ממקום למקום. מה לעשות אם יש לכם טקסט להדבקה, אבל בינתיים גזרתם טקסט אחר? C-y ידביק @@ -394,7 +394,7 @@ אם תקישו M-y מספיק פעמים בזו אחר זו, תגיעו חזרה לנקודת ההתחלה (טקסט שגזרתם לאחרונה). ->> גזרו שורה, אחר-כך תניעו את הסמן אנה ואנה, ולבסוף גזרו שורה נוספת. +>> גזרו שורה, אחר־כך תניעו את הסמן אנה ואנה, ולבסוף גזרו שורה נוספת. הקישו C-y כדי לאחזר את השורה השניה שגזרתם. עתה הקישו M-y והשורה שאחזרתם תוחלף בשורה הראשונה שגזרתם. הקישו M-y מספר פעמים נוספות ושימו לב לתוצאות. המשיכו להקיש M-y @@ -415,14 +415,14 @@ ופקודות גלילה) אינן נספרות ותוים שמכניסים את עצמם מקובצים בקבוצות של עד 20, כדי להקטין את מספר הפעמים שיש להקיש C-x u כדי לבטל הכנסת טקסט. ->> גזרו שורה זו עם C-k, אחר-כך הקישו C-x u והיא תופיע שוב. +>> גזרו שורה זו עם C-k, אחר־כך הקישו C-x u והיא תופיע שוב. ‏C-_‎ הינה דרך חלופית להפעיל את פקודת הביטול. היא פועלת בדיוק כמו C-x u, אבל קלה יותר להקשה מספר פעמים בזו אחר זו. החסרון של C-_‎ הוא שבכמה מקלדות לא ברור מאליו כיצד להקיש זאת. זו הסיבה לקיומו של C-x u. במקלדות אחדות ניתן להקיש C-_‎ ע"י החזקת CONTROL והקשת לוכסן /. -ארגומנט נומרי ל-C-_‎ או ל-C-x u משמש כמספר החזרות על הפקודה. +ארגומנט נומרי ל־C-_‎ או ל־C-x u משמש כמספר החזרות על הפקודה. ניתן לבטל מחיקה של טקסט בדיוק כמו שניתן לבטל גזירה. ההבדלים בין מחיקה וגזירה משפיעים על יכולתכם להדביק את הטקסט הגזור עם C-y; הם אינם חשובים @@ -432,8 +432,8 @@ * קבצים ------- -על-מנת שהטקסט שערכתם יישמר, יש לשים אותו בקובץ. אחרת, הוא ייעלם ברגע -שתצאו מ-Emacs. כדי לשים את הטקס בקובץ, יש "לפתוח" ("find") את הקובץ +על־מנת שהטקסט שערכתם יישמר, יש לשים אותו בקובץ. אחרת, הוא ייעלם ברגע +שתצאו מ־Emacs. כדי לשים את הטקס בקובץ, יש "לפתוח" ("find") את הקובץ לפני שמתחילים להקיש טקסט. (שם אחר לכך הוא "לפקוד" את הקובץ - "visit".) פתיחת הקובץ משמעותה שתוכן הקובץ מוצג בתוך Emacs. מבחינות רבות הדבר @@ -445,8 +445,8 @@ אם תביטו בחלק התחתון של התצוגה, תראו שם שורה בולטת שמתחילה ומסתיימת במקפים וליד הקצה השמאלי שלה כתוב "TUTORIAL.he". חלק זה של התצוגה בדרך כלל מציג את שם הקובץ אותו אתם פוקדים. כרגע אתם פוקדים קובץ בשם -"TUTORIAL.he" שהוא עותק הטיוטה האישי שלכם של שיעור השימוש ב-Emacs. -פתיחת קובץ כלשהו ב-Emacs תציג את שמו של הקובץ במקום זה. +"TUTORIAL.he" שהוא עותק הטיוטה האישי שלכם של שיעור השימוש ב־Emacs. +פתיחת קובץ כלשהו ב־Emacs תציג את שמו של הקובץ במקום זה. היבט אחד מיוחד של פתיחת קובץ הוא שיש לציין את שם הקובץ אשר ברצונכם לפתוח. אנו אומרים שהפקודה "קוראת ארגומנט מהמסוף" (במקרה זה הארגומנט @@ -455,21 +455,21 @@ ‏C-x C-f פתח קובץ ‏Emacs מבקש שתקישו את שם הקובץ. שם הקובץ שתקישו מופיע בשורה התחתונה של -התצוגה. שורה זו נקראת "מיני-חוצץ" ("minibuffer") כשהיא משמשת לסוג זה +התצוגה. שורה זו נקראת "מיני־חוצץ" ("minibuffer") כשהיא משמשת לסוג זה של קלט. ניתן להשתמש בכל פקודות העריכה הרגילות של Emacs כשמקישים את שם הקובץ בחוצץ זה. -אם טרם סיימתם להקיש את שם הקובץ (או כל סוג אחר של קלט במיני-חוצץ), +אם טרם סיימתם להקיש את שם הקובץ (או כל סוג אחר של קלט במיני־חוצץ), ניתן לבטל את הפקודה בעזרת C-g. ->> הקישו C-x C-f ואחר-כך הקישו C-g. זה מבטל את המיני-חוצץ וגם מבטל - את הפקודה C-x C-f שהשתמשה במיני-חוצץ. התוצאה היא שאף קובץ לא נפתח. - -משסיימתם להקיש את שם הקובץ, הקישו לסיים את הקלט. או-אז תיגש -C-x C-f לעבודה ותמצא ותפתח את הקובץ שבחרתם. המיני-חוצץ נעלם כאשר -פקודת ה-C-x C-f תסיים את עבודתה. - -זמן קצר אחר-כך תוכן הקובץ יופיע על-גבי התצוגה ותוכלו לבצע בו שינויים. +>> הקישו C-x C-f ואחר־כך הקישו C-g. זה מבטל את המיני־חוצץ וגם מבטל + את הפקודה C-x C-f שהשתמשה במיני־חוצץ. התוצאה היא שאף קובץ לא נפתח. + +משסיימתם להקיש את שם הקובץ, הקישו לסיים את הקלט. או־אז תיגש +C-x C-f לעבודה ותמצא ותפתח את הקובץ שבחרתם. המיני־חוצץ נעלם כאשר +פקודת ה־C-x C-f תסיים את עבודתה. + +זמן קצר אחר־כך תוכן הקובץ יופיע על־גבי התצוגה ותוכלו לבצע בו שינויים. כשתחליטו לשמור את השינויים, הקישו את הפקודה הבאה: ‏C-x C-s שמור את הקובץ @@ -479,13 +479,13 @@ לאיבוד. השם החדש נוצר ע"י הוספת "~" בסוף השם המקורי של הקובץ. כשהשמירה מסתיימת, Emacs מציג בשורה התחתונה את שם הקובץ שנשמר. נסו -לשמור לעתים מזומנות על-מנת להימנע מלאבד יותר מדי מהעבודה שלכם אם המחשב +לשמור לעתים מזומנות על־מנת להימנע מלאבד יותר מדי מהעבודה שלכם אם המחשב ייפול (ראה להלן פיסקה על שמירה אוטומטית). >> הקישו C-x C-s כדי לשמור את העותק שלכם של השיעור. כתוצאה, תופיע ההודעה "Wrote ... TUTORIAL.he" בתחתית התצוגה. -ניתן לפתוח קובץ קיים על-מנת לצפות בו או לערוך אותו. ניתן גם לפתוח קובץ +ניתן לפתוח קובץ קיים על־מנת לצפות בו או לערוך אותו. ניתן גם לפתוח קובץ שאינו קיים. זו הדרך ליצור קבצים חדשים בעזרת Emacs: פתחו את הקובץ שיהיה תחילה ריק ואז התחילו להקיש טקסט לתוכו. כשתפעילו את פקודת השמירה, Emacs ייצור את הקובץ עם הטקסט שהקשתם. מאותו רגע ואילך, תוכלו לחשוב @@ -495,11 +495,11 @@ * חוצצים -------- -אם תפתחו קובץ נוסף עם C-x C-f, הקובץ הראשון עדיין נשאר פתוח ב-Emacs. +אם תפתחו קובץ נוסף עם C-x C-f, הקובץ הראשון עדיין נשאר פתוח ב־Emacs. תוכלו לחזור אליו ע"י C-x C-f. כך תוכלו לפתוח מספר רב של קבצים. >> ניצור עתה קובץ בשם "foo" ע"י הקשת C-x C-f foo ‎. - אחר-כך הכניסו קצת טקסט, ערכו אותו ולבסוף שמרו בקובץ "foo" + אחר־כך הכניסו קצת טקסט, ערכו אותו ולבסוף שמרו בקובץ "foo" ע"י C-x C-s. עתה חזרו לשיעור בעזרת C-x C-f TUTORIAL.he ‎. ‏Emacs מחזיק כל קובץ בתוך יישות בשם "חוצץ" ("buffer"). פתיחת קובץ יוצרת @@ -523,12 +523,12 @@ בפקודה C-x b. פקודה זו תחייב אותכם להקיש את שם החוצץ. >> הקישו C-x b foo ‎ כדי לחזור לחוצץ "foo" אשר מחזיק טקסט של - הקובץ "foo". אחר-כך הקישו C-x b TUTORIAL.he ‎ כדי לשוב + הקובץ "foo". אחר־כך הקישו C-x b TUTORIAL.he ‎ כדי לשוב לשיעור זה. ברוב המקרים שם החוצץ זהה לשם הקובץ (ללא שם התיקיה שלו). אבל אין זה תמיד כך. רשימת החוצצים שנוצרת ע"י C-x C-b תמיד תציג את שמות כל החוצצים -הקיימים ב-Emacs. +הקיימים ב־Emacs. כל טקסט שמוצג בחלון של Emacs הינו תמיד חלק של חוצץ כלשהו. קיימים חוצצים שאינם קשורים לשום קובץ. לדוגמא, החוצץ בשם "*Buffer List*" אינו @@ -537,9 +537,9 @@ שהופיעו בשורה התחתונה במהלך עבודתכם בתוך Emacs. >> הקישו C-x b *Messages* ‎ כדי לצפות בחוצץ של הודעות. - אחר-כך הקישו C-x b TUTORIAL.he ‎ על-מנת לחזור לשיעור זה. + אחר־כך הקישו C-x b TUTORIAL.he ‎ על־מנת לחזור לשיעור זה. -אם עשיתם שינויים בטקסט של קובץ ואחר-כך פתחתם קובץ אחר, אין הדבר שומר +אם עשיתם שינויים בטקסט של קובץ ואחר־כך פתחתם קובץ אחר, אין הדבר שומר את השינויים שעשיתם לקובץ הראשון. השינויים הללו נשארים בתוך Emacs, בתוך החוצץ של אותו קובץ. יצירתו ועריכתו של הקובץ הנוסף אינם משפיעים על החוצץ של הקובץ הראשון. דבר זה הוא שימושי, אך משמעותו היא שיש צורך @@ -552,7 +552,7 @@ ‏C-x s עובר על כל החוצצים אשר מכילים שינויים שטרם נשמרו. לגבי כל חוצץ כזה הוא שואל אתכם האם לשמור אותו או לא. ->> הכניסו שורה של טקסט ואחר-כך הקישו C-x s. +>> הכניסו שורה של טקסט ואחר־כך הקישו C-x s. הוא צריך לשאול האם לשמור חוצץ בשם TUTORIAL.he. השיבו בחיוב ע"י הקשה על "y". @@ -560,8 +560,8 @@ * הרחבת אוסף הפקודות -------------------- -מספר הפקודות ב-Emacs גדול בהרבה ממה שניתן להפעיל ע"י כל תוי ה-control -וה-meta. כדי להתגבר על בעיה זו, Emacs משתמש בפקודות X המרחיבות (eXtend) +מספר הפקודות ב־Emacs גדול בהרבה ממה שניתן להפעיל ע"י כל תוי ה־control +וה־meta. כדי להתגבר על בעיה זו, Emacs משתמש בפקודות X המרחיבות (eXtend) את אוסף הפקודות הרגיל. פקודות הרחבה אלו הן שתים: ‏C-x הרחבת תו. תו בודד שבא אחריו משלים את הפקודה. @@ -569,24 +569,24 @@ בעזרת שתי אלו ניתן להפעיל פקודות שימושיות שבהן משתמשים לעתים רחוקות יותר מאשר פקודות שלמדתם עד עכשיו. כמה מהן כבר ראיתם: C-x C-f לפתיחת -קובץ, ו-C-x C-s לשמירת קובץ, לדוגמא. דוגמא נוספת היא פקודה לצאת -מ-Emacs -- ‏C-x C-c. (כשאתם מפעילים C-x C-c, אל תדאגו לשינויים שטרם +קובץ, ו־C-x C-s לשמירת קובץ, לדוגמא. דוגמא נוספת היא פקודה לצאת +מ־Emacs -- ‏C-x C-c. (כשאתם מפעילים C-x C-c, אל תדאגו לשינויים שטרם נשמרו; C-x C-c מציע לשמור כל קובץ ששיניתם לפני שהוא מסיים את Emacs.) אם אתם משתמשים בצג גרפי אשר תומך במספר תוכניות במקביל, אינכם זקוקים -לפקודה מיוחדת כדי לעבור מ-Emacs לתוכנית אחרת. אפשר לעשות זאת בעזרת +לפקודה מיוחדת כדי לעבור מ־Emacs לתוכנית אחרת. אפשר לעשות זאת בעזרת העכבר או פקודות של מנהל החלונות. אולם, כאשר אתם משתמשים בתצוגה -טקסטואלית שמסוגלת להציג רק תוכנית אחת בו-זמנית, תצטרכו "להשעות" -("suspend") את Emacs על-מנת לעבור לתוכנית אחרת. +טקסטואלית שמסוגלת להציג רק תוכנית אחת בו־זמנית, תצטרכו "להשעות" +("suspend") את Emacs על־מנת לעבור לתוכנית אחרת. -הפקודה C-z יוצאת מ-Emacs *באופן זמני* -- כך שתוכלו לשוב אליו מאוחר +הפקודה C-z יוצאת מ־Emacs *באופן זמני* -- כך שתוכלו לשוב אליו מאוחר יותר ולהמשיך מאותה נקודה. כאשר Emacs רץ על תצוגת טקסט, C-z "משעה" את Emacs: הוא מחזיר אתכם לשורת הפקודות הבסיסית של מערכת ההפעלה ("shell"), -אבל אינו מסיים את Emacs. ברוב המערכות, כדי להמשיך בעבודתכם ב-Emacs, +אבל אינו מסיים את Emacs. ברוב המערכות, כדי להמשיך בעבודתכם ב־Emacs, תצטרכו להקיש את הפקודה "fg" או ‭"%emacs"‬. -הרגע הנכון להשתמש ב-C-x C-c הוא כאשר אתם עומדים להתנתק (log out). -כמו-כן, תצטרכו להשתמש בו כדי לצאת מ-Emacs שהופעל ע"י תוכניות אחרות +הרגע הנכון להשתמש ב־C-x C-c הוא כאשר אתם עומדים להתנתק (log out). +כמו־כן, תצטרכו להשתמש בו כדי לצאת מ־Emacs שהופעל ע"י תוכניות אחרות כגון קריאת דואר אלקטרוני -- תוכניות אלו לא תמיד יודעות להסתדר עם השעיית Emacs. @@ -597,7 +597,7 @@ ‏C-x s שמור חוצצים אחדים ‏C-x C-b הצג רשימת חוצצים ‏C-x b החלף חוצץ - ‏C-x C-c צא מ-Emacs + ‏C-x C-c צא מ־Emacs ‏C-x 1 השאר רק חלון אחד ומחק כל השאר ‏C-x u בטל פקודה אחרונה @@ -605,9 +605,9 @@ ספציפיות רק לאופני פעולה (modes) מיוחדים. דוגמא לכך היא פקודה replace-string (החלף מחרוזת) אשר מחליפה מחרוזת אחת במשנה בכל החוצץ. אחרי שתקישו M-x, ‏Emacs מציג M-x בתחתית התצוגה ומחכה שתקישו את שם -הפקודה, במקרה זה "replace-string". מספיק שתקישו "repl s‎" ו-Emacs +הפקודה, במקרה זה "replace-string". מספיק שתקישו "repl s‎" ו־Emacs ישלים את השם המלא. ( הוא מקש Tab, בדרך כלל תמצאו אותו מעל מקש -ה-CapsLock או Shift, ליד הקצה השמאלי של המקלדת.) סיימו את שם הפקודה +ה־CapsLock או Shift, ליד הקצה השמאלי של המקלדת.) סיימו את שם הפקודה ע"י הקשת . הפקודה להחלפת מחרוזת זקוקה לשני ארגומנטים -- המחרוזת שתוחלף וזו שתחליף @@ -625,7 +625,7 @@ ---------------- שינויים שערכתם בקובץ אבל טרם שמרתם עלולים ללכת לאיבוד אם המחשב שלכם -נתקע. על-מנת להגן עליכם מפני סכנה זו, Emacs שומר לעתים מזומנות כל קובץ +נתקע. על־מנת להגן עליכם מפני סכנה זו, Emacs שומר לעתים מזומנות כל קובץ שנמצא בעריכה. השמירה האוטומטית הזאת נעשית לקובץ נפרד ששמו מתחיל ומסתיים בתו #. לדוגמא, אם הינכם עורכים קובץ בשם "hello.c", קובץ השמירה האוטומטית שיווצר עבורו ייקרא "#hello.c#". שמירה רגילה של הקובץ על ידכם @@ -633,8 +633,8 @@ אם המחשב אכן נתקע, תוכלו לנציל את השינויים שלא הספקתם לשמור. לשם כך, יש לפתוח את הקובץ כרגיל (את הקובץ בשמו המקורי, לא את קובץ השמירה -האוטומטית), ואחר-כך להקיש M-x recover-file ‎. כש-Emacs יבקש -אישור, הקישו yes‎ כדי ש-Emacs ישחזר את הקובץ כפי שנשמר +האוטומטית), ואחר־כך להקיש M-x recover-file ‎. כש־Emacs יבקש +אישור, הקישו yes‎ כדי ש־Emacs ישחזר את הקובץ כפי שנשמר אוטומטית. @@ -659,7 +659,7 @@ את מיקומכם הנוכחי בתוך הטקסט, לאמור כי NN אחוזים מהטקסט קודמים לטקסט המוצג כרגע בחלון. אם המוצג בחלון כולל את תחילת הטקסט, תראו שם "Top" במקום "0% ". אם המוצג בחלון כולל את סוף הטקסט, תראו שם "Bot" ‏(bottom). -אם הטקסט כל-כך קצר שכולו מוצג בחלון, שורת הסטטוס תציג "All". +אם הטקסט כל־כך קצר שכולו מוצג בחלון, שורת הסטטוס תציג "All". האות L והמספר שאחריה מציינים את המיקום הנוכחי בדרך אחרת: הם מראים את מספר השורה שבה נמצא הסמן. @@ -672,7 +672,7 @@ כעת. ברירת המחדל היא Fundamental, האופן הבסיס, שבו אתם משתמשים כעת. זוהי דוגמא של "אופן עריכה ראשי" (major mode). -ל-Emacs אופני עריכה ראשיים רבים ומגוונים. חלק מהם נועדו לעריכה של שפת +ל־Emacs אופני עריכה ראשיים רבים ומגוונים. חלק מהם נועדו לעריכה של שפת תכנות מסוימת ו/או סוג מסוים של טקסט, כגון Lisp mode, Text mode וכד'. בכל רגע נתון רק אופן עיקרי אחד יכול להיות פעיל ושמו תמיד מצויין בשורת הסטטוס באותו מקום בו כרגע אתם רואים "Fundamental". @@ -684,31 +684,31 @@ למשל הפקודה להפעיל את האופן Fundamental הינה M-x fundamental-mode. אם בכוונתכם לערוך טקסט בשפה אנושית כלשהי, כמו הקובץ הזה, כדאי לכם -להשתמש ב-Text mode. +להשתמש ב־Text mode. >> הקישו M-x text-mode ‎. אל דאגה: אף אחת מפקודות Emacs שלמדתם עד כה משנה את התנהגותה באופן -מהותי. עם זאת, שימו לב ש-M-f ו-M-b מתייחסים עכשיו ל-'גרש' כחלק מהמילה. -לפני-כן, ב-Fundamental mode, ‏M-f ו-M-b התנהגו עם הגרש כמפריד בין +מהותי. עם זאת, שימו לב ש־M-f ו־M-b מתייחסים עכשיו ל־'גרש' כחלק מהמילה. +לפני־כן, ב־Fundamental mode, ‏M-f ו־M-b התנהגו עם הגרש כמפריד בין מילים. -אופנים ראשיים בדרך-כלל משנים קלות את התנהגות הפקודות: רוב הפקודות +אופנים ראשיים בדרך־כלל משנים קלות את התנהגות הפקודות: רוב הפקודות עדיין "עושות אותה עבודה" בכל האופנים הראשיים, אבל עושות אותה קצת אחרת. לצפיה בתיעוד של האופן הראשי הנוכחי יש להקיש C-h m. ->> השתמשו ב-C-u C-v פעם אחת או יותר כדי להביא שורה זו לראשית התצוגה. ->> עתה הקישו C-h m כדי לראות במה Text mode שונה מה-Fundamental mode. +>> השתמשו ב־C-u C-v פעם אחת או יותר כדי להביא שורה זו לראשית התצוגה. +>> עתה הקישו C-h m כדי לראות במה Text mode שונה מה־Fundamental mode. >> לבסוף, הקישו C-x 1 כדי לסלק את התיעוד מהתצוגה. -אופנים ראשיים נקראים כך משום שקיימים גם אופני-משנה (minor modes). +אופנים ראשיים נקראים כך משום שקיימים גם אופני־משנה (minor modes). אופני משנה אינם מהווים חלופה לאופנים הראשיים, הם רק משנים אותם במקצת. -כל אופן-משנה ניתן להפעלה או ביטול ללא תלות בכל שאר אופני המשנה וללא -תלות באופן הראשי הנוכחי. לכן תוכלו להפעיל אופן-משנה אחד או יותר, או אף -אופן-משנה. +כל אופן־משנה ניתן להפעלה או ביטול ללא תלות בכל שאר אופני המשנה וללא +תלות באופן הראשי הנוכחי. לכן תוכלו להפעיל אופן־משנה אחד או יותר, או אף +אופן־משנה. -אחד מאופני-המשנה השימושיים ביותר, במיוחד לשם עריכת טקס בשפת-אנוש, הוא +אחד מאופני־המשנה השימושיים ביותר, במיוחד לשם עריכת טקס בשפת־אנוש, הוא Auto Fill mode. כאשר אופן זה מופעל, Emacs אוטומטית פותח שורה חדשה בסיום מילה אם הטקסט שהקשתם ארוך מדי בשביל שורה אחת. @@ -717,17 +717,17 @@ זו מפעילה את האופן כשאינו פעיל ומבטלת אותו כשהוא פעיל. לפעולה זו קוראים "מיתוג" -- הפקודה "ממתגת" את האופן. ->> הקישו עתה M-x auto-fill-mode ‎. אחר-כך הקישו "שדגכ " (עם +>> הקישו עתה M-x auto-fill-mode ‎. אחר־כך הקישו "שדגכ " (עם הרווח בסוף) שוב ושוב עד שתיפתח שורה חדשה. הרווחים חשובים משום - ש-Auto Fill mode שובר שורות אך ורק ברווח שבין המלים. + ש־Auto Fill mode שובר שורות אך ורק ברווח שבין המלים. -השוליים (margin) ש-Emacs שומר בדרך-כלל מתחילים אחרי 70 תווים, אבל ניתן +השוליים (margin) ש־Emacs שומר בדרך־כלל מתחילים אחרי 70 תווים, אבל ניתן לשנות הגדרה זו בעזרת הפקודה C-x f. פקודה זו מקבלת את ההגדרה החדשה של השוליים כארגומנט נומרי. ->> הקישו C-x f עם ארגומנט של 20. (C-u 2 0 C-x f). אחר-כך הקישו טקסט - כלשהו ושימו לב ש-Emacs פותח שורות חדשות אחרי 20 תווים לכל היותר. - לבסוף, החזירו את הגדרת השוליים ל-70 ע"י שימוש חוזר ב-C-x f. +>> הקישו C-x f עם ארגומנט של 20. (C-u 2 0 C-x f). אחר־כך הקישו טקסט + כלשהו ושימו לב ש־Emacs פותח שורות חדשות אחרי 20 תווים לכל היותר. + לבסוף, החזירו את הגדרת השוליים ל־70 ע"י שימוש חוזר ב־C-x f. אם ערכתם שינויים באמצע פסקה, Auto Fill mode לא ימלא שורות מחדש באופן אוטומטי. @@ -747,15 +747,15 @@ החיפוש של Emacs הינו "מצטבר" ("incremental"). פירוש הדבר הוא שהחיפוש מתבצע במקביל להקשתכם את המחרוזת אותה ברצונכם למצוא. -הפקודה להתחיל בחיפוש היא C-s לחיפוש קדימה ו-C-r לחיפוש אחורה. חכו! אל +הפקודה להתחיל בחיפוש היא C-s לחיפוש קדימה ו־C-r לחיפוש אחורה. חכו! אל תפעילו אותן עדיין. כשתקישו C-s, תראו שבאזור תצוגת ההד יופיע הטקסט "I-search". זה אומר -ש-Emacs נמצא במצב "חיפוש מצטבר" ("incremental search") והוא ממתין +ש־Emacs נמצא במצב "חיפוש מצטבר" ("incremental search") והוא ממתין להקשתכם את המחרוזת אותה ברצונכם למצוא. הקשה על מסיימת את החיפוש. ->> הקישו עתה C-s כדי להתחיל בחיפוש. לאט-לאט, אות-אות, הקישו את המילה +>> הקישו עתה C-s כדי להתחיל בחיפוש. לאט־לאט, אות־אות, הקישו את המילה "סמן", עם הפסקה אחרי כל אות, ושימו לב להתנהגות הסמן. זה עתה מצאתם את המילה "סמן" פעם אחת. >> הקישו C-s שוב, כדי למצוא את "סמן" במקומות נוספים בטקסט. @@ -770,18 +770,18 @@ (הערה: במערכות אחדות הקשה על C-s מקפיעה את תצוגת המסך, כך שלא תראו יותר שום פלט של Emacs. משמעות הדבר שתכונת מערכת ההפעלה ששמה "flow -control" מופעלת ע"י C-s ואינה מעבירה את C-s ל-Emacs. לביטול הקפאת +control" מופעלת ע"י C-s ואינה מעבירה את C-s ל־Emacs. לביטול הקפאת התצוגה במערכות אלו יש להקיש C-q.) אם במהלך החיפוש תקישו על , תראו שהתו האחרון של המחרוזת המבוקשת נמחק והחיפוש חוזר למקום הקודם בו נמצאה המחרוזת ללא התו האחרון. -למשל, נניח שהקשתם "ס" על-מנת למצוא את המקום הבא בו מופיעה האות "ס". אם +למשל, נניח שהקשתם "ס" על־מנת למצוא את המקום הבא בו מופיעה האות "ס". אם עכשיו תקישו "מ", הסמן יזוז למקום בו נמצא "סמ". עתה הקישו . -ה-"מ" נמחק מהמחרוזת והסמן חוזר למקום בו הוא מצא את "ס" לראשונה. +ה־"מ" נמחק מהמחרוזת והסמן חוזר למקום בו הוא מצא את "ס" לראשונה. אם במהלך החיפוש תפעילו פקודה כלשהי ע"י הקשה על מקש תוך לחיצה על CONTROL או META, החיפוש יסתיים. (כמה תווים יוצאים מכלל זה -- אלו תווים -מיוחדים בעת חיפוש, כדוגמת C-s ו-C-r.) +מיוחדים בעת חיפוש, כדוגמת C-s ו־C-r.) הקשה על C-s מתחילה חיפוש שמנסה למצוא את המחרוזת _אחרי_ הסמן. אם ברצונכם למצוא משהו בטקסט הקודם למקום הנוכחי, הקישו C-r במקום C-s. כל @@ -792,7 +792,7 @@ --------------- אחת התכונות הנוחות של Emacs היא כי ניתן להציג יותר מחלון אחד על המסך -בו-זמנית. (הערה: Emacs משתמש במונח "frame" -- "תבנית" -- בשביל מה +בו־זמנית. (הערה: Emacs משתמש במונח "frame" -- "תבנית" -- בשביל מה שתוכניות אחרות מכנות "חלון". תבניות מתוארות בפסקה הבאה. תוכלו למצוא את רשימת המונחים של Emacs בפרק "Glossary" של מדריך משתמש.) @@ -804,15 +804,15 @@ >> הקישו C-M-v כדי לגלול את החלון התחתון. (אם במקלדת שלכם אין מקש META אמיתי, הקישו ‎ C-v כתחליף.) ->> הקישו C-x o ‏("o" הוא רמז ל-"other", "אחר") על-מנת להעביר את הסמן +>> הקישו C-x o ‏("o" הוא רמז ל־"other", "אחר") על־מנת להעביר את הסמן לחלון התחתון. ->> הקישו C-v ו-M-v בחלון התחתון כדי לגלול אותו. +>> הקישו C-v ו־M-v בחלון התחתון כדי לגלול אותו. המשיכו לקרוא הוראות אלו בחלון העליון. >> הקישו C-x o שוב לחזור לחלון העליון. - הסמן בחלון העליון יישאר במקום בו הוא היה לפני-כן. + הסמן בחלון העליון יישאר במקום בו הוא היה לפני־כן. -תוכלו להמשיך להשתמש ב-C-x o כדי לדלג בין שני החלונות. לכל חלון מיקום +תוכלו להמשיך להשתמש ב־C-x o כדי לדלג בין שני החלונות. לכל חלון מיקום סמן משלו, אבל רק חלון אחד מציג את הסמן בכל רגע. כל פקודות העריכה הרגילות פועלות על החלון שבו מוצג הסמן. אנו קוראים לחלון זה "החלון הנבחר". @@ -823,30 +823,30 @@ ‏C-M-v היא דוגמא אחת של פקודת CONTROL-META. אם במקלדת שלכם קיים מקש META אמיתי, תוכלו להקיש את הפקודה ע"י לחיצה והחזקה של מקשי CONTROL -ו-META גם יחד ואז להקיש v. הסדר שבו תלחצו על CONTROL ו-META אינו משנה +ו־META גם יחד ואז להקיש v. הסדר שבו תלחצו על CONTROL ו־META אינו משנה כי שני המקשים הללו פועלים ע"י שינוי התו המוקש יחד איתם. -אם אין במקלדת מקש META אמיתי ואתם משתמשים ב- כתחליף, הסדר כן +אם אין במקלדת מקש META אמיתי ואתם משתמשים ב־ כתחליף, הסדר כן משנה: חייבים להקיש ורק לאחר מכן CONTROL-v, וזאת משום -ש-CONTROL- v לא יעבוד. הוא תו בזכות עצמו, שלא כמו CONTROL +ש־CONTROL- v לא יעבוד. הוא תו בזכות עצמו, שלא כמו CONTROL או META. >> הקישו C-x 1 (בחלון העליון) כדי לסלק את החלון התחתון. (אילו הקשתם C-x 1 בחלון התחתון, הייתם מסלקים את החלון העליון. תוכלו -לחשוב על פקודה זו כ-"השאר רק חלון אחד -- החלון בו אני נמצא עתה".) +לחשוב על פקודה זו כ־"השאר רק חלון אחד -- החלון בו אני נמצא עתה".) -אין חובה להציג את אותו החוצץ בשני החלונות. תוכלו להשתמש ב-C-x C-f +אין חובה להציג את אותו החוצץ בשני החלונות. תוכלו להשתמש ב־C-x C-f לפתיחת קובץ באחד החלונות -- דבר זה אינו משפיע על החלון השני. אפשר גם -לפתוח קבצים שונים בכל אחד משני החלונות באופן בלתי-תלוי. +לפתוח קבצים שונים בכל אחד משני החלונות באופן בלתי־תלוי. הנה עוד שיטה להשתמש בשני חלונות להצגה של שני דברים שונים: ->> הקישו C-x 4 C-f ואחר-כך הקישו שם של אחד הקבצים שלכם. +>> הקישו C-x 4 C-f ואחר־כך הקישו שם של אחד הקבצים שלכם. סיימו עם . שימו לב שהקובץ המבוקש מוצג בחלון התחתון. הסמן מדלג לשם אף הוא. ->> הקישו C-x o לעבור לחלון העליון ואחר-כך הקישו C-x 1 כדי לסלק את +>> הקישו C-x o לעבור לחלון העליון ואחר־כך הקישו C-x 1 כדי לסלק את החלון התחתון. @@ -866,8 +866,8 @@ >> הקישו M-x delete-frame ‎. התבנית שבה הקשתם את הפקודה תיסגר ותיעלם מהמסך. -כמו-כן, ניתן לסגור תבנית בדרך הרגילה הנתמכת ע"י מנהל החלונות של המערכת -שלכם (בדרך-כלל, ע"י הקלקה על הכפתור המסומן ב-"X" בפינה עליונה של +כמו־כן, ניתן לסגור תבנית בדרך הרגילה הנתמכת ע"י מנהל החלונות של המערכת +שלכם (בדרך־כלל, ע"י הקלקה על הכפתור המסומן ב־"X" בפינה עליונה של התבנית.) שום מידע אינו הולך לעיבוד כאשר סוגרים תבנית (או חלון). המידע הזה פשוט יורד מהתצוגה, אבל ניתן לאחזרו מאוחר יותר. @@ -881,12 +881,12 @@ כדי להחלץ מרמת עריכה רקורסיבית יש להקיש . זוהי פקודה כללית של "הימלטות". ניתן להשתמש בה גם כדי לסלק חלונות מיותרים וליציאה -מתוך מיני-חוצץ. +מתוך מיני־חוצץ. ->> הקישו M-x כדי להיכנס למיני-חוצץ; אחר-כך הקישו כדי +>> הקישו M-x כדי להיכנס למיני־חוצץ; אחר־כך הקישו כדי להיחלץ משם. -הקשה על C-g לא תחלץ אתכם מרמות עריכה רקורסיביות. זאת, משום ש-C-g מבטל +הקשה על C-g לא תחלץ אתכם מרמות עריכה רקורסיביות. זאת, משום ש־C-g מבטל פקודות וארגומנטים _במסגרת_ הרמה הרקורסיבית, מבלי לצאת ממנה. @@ -894,14 +894,14 @@ ------------------ בשיעור הראשון הזה השתדלנו לתת בידיכם מידע שאך יספיק להתחלת השימוש שלכם -ב-Emacs. ‏Emacs מכיל כל-כך הרבה שאין שום אפשרות לתאר ולהסביר כאן את +ב־Emacs. ‏Emacs מכיל כל־כך הרבה שאין שום אפשרות לתאר ולהסביר כאן את הכל. אולם, סביר שתרצו ללמוד יותר על Emacs שכן יש בו עוד הרבה תכונות שימושיות. Emacs כולל פקודות לשם קריאת תיעוד על הפקודות של Emacs. -הפעלת פקודות "עזרה" אלו תמיד מתחילה במקש CONTROL-h שעל-כן נקרא "מקש +הפעלת פקודות "עזרה" אלו תמיד מתחילה במקש CONTROL-h שעל־כן נקרא "מקש עזרה" ("help"). -להפעלת פקודות עזרה יש להקיש את C-h ואחר-כך עוד תו שמבקש עזרה מסוג -מסויים. אם אתם _באמת_ אבודים, הקישו C-h ?‎ ו-Emacs יציג את סוגי העזרה +להפעלת פקודות עזרה יש להקיש את C-h ואחר־כך עוד תו שמבקש עזרה מסוג +מסויים. אם אתם _באמת_ אבודים, הקישו C-h ?‎ ו־Emacs יציג את סוגי העזרה שהוא מעמיד לרשותכם. אם הקשתם C-h ובסופו של דבר החלטתם שאין צורך בשום עזרה, פשוט הקישו C-g לבטל את הפקודה. @@ -931,7 +931,7 @@ כתוצאה, יוצגו השם והתיעוד של הפונקציה בחלון Emacs נפרד. כשתסיימו לקרוא את התיעוד, הקישו C-x 1 כדי לסלק את חלון העזרה. לא חייבים לעשות זאת -מיד. אפשר לבצע קצת עריכה תוך שימוש בתיעוד המוצג ורק אחר-כך להקיש C-x 1. +מיד. אפשר לבצע קצת עריכה תוך שימוש בתיעוד המוצג ורק אחר־כך להקיש C-x 1. הנה עוד כמה פקודות עזרה שימושיות: @@ -939,12 +939,12 @@ >> נסו להקיש C-h f previous-line ‎. כתוצאה, יוצג תיעוד מלא של הפונקציה המממשת את הפקודה C-p כפי שהוא - ידוע ל-Emacs. + ידוע ל־Emacs. פקודה דומה C-h v מציגה תיעוד של משתנה, כולל אלו שאת הערכים שלהם ניתן לשנות כדי לקסטם את Emacs. יש להקיש את שם המשתנה כאשר Emacs יבקש זאת. - ‏C-h a פקודות בנוגע לנושא מסויים. הקישו מילת מפתח ו-Emacs + ‏C-h a פקודות בנוגע לנושא מסויים. הקישו מילת מפתח ו־Emacs יציג את רשימת הפקודות ששמותיהן מכילות את מילת המפתח. כל הפקודות הללו ניתנות להפעלה ע"י META-x. עבור חלק מהפקודות תוצג גם סדרת מקשים שמפעילה את הפקודה. @@ -963,7 +963,7 @@ ידועה גם בשם "Info".) פקודה זאת פותחת חוצץ מיוחד הקרוי "*info*" שבו תוכלו לקרוא מדריכים המותקנים במערכת שלכם. הקישו m emacs ‎ כדי לקרוא במדריך למשתמשי Emacs. - אם אינכם מכירים את Info, הקישו ? ו-Emacs יקח אתכם + אם אינכם מכירים את Info, הקישו ? ו־Emacs יקח אתכם לשיעור על התכונות של Info mode. כשתסיימו עם השיעור הזה, אנו בהחלט ממליצים להשתמש במדריך Emacs בתור התיעוד העיקרי שלכם. @@ -972,13 +972,13 @@ * עוד תכונות ------------ -תוכלו ללמוד עוד על-אודות Emacs ע"י קריאה במדריך למשתמש שלו, אם כספר +תוכלו ללמוד עוד על־אודות Emacs ע"י קריאה במדריך למשתמש שלו, אם כספר מודפס או בגירסה מקוונת בתוך Emacs עצמו. (תוכלו להגיע אל המדריך דרך תפריט Help או ע"י הקשה על C-h r.) אולם שתי תכונות שבוודאי ימצאו חן -בעיניכם הן השלמה אשר חוסכת הקשות, ו-dired שמאפשרת טיפול נוח בקבצים. +בעיניכם הן השלמה אשר חוסכת הקשות, ו־dired שמאפשרת טיפול נוח בקבצים. השלמה היא דרך להימנע מהקשות מיותרות. למשל, אם ברצונכם לעבור לחוצץ -*Messages*, תוכלו להקיש C-x b *M‎ ו-Emacs ישלים את שאר האותיות של +*Messages*, תוכלו להקיש C-x b *M‎ ו־Emacs ישלים את שאר האותיות של שם החוצץ ככל שניתן להסיק ממה שהקשתם. השלמה פועלת גם על שמות הפקודות ושמות קבצים. תכונת ההשלמה מתוארת במלואה במדריך למשתמש Emacs בצומת (node) בשם "Completion". @@ -993,7 +993,7 @@ * לסיום ------- -כדי לצאת מ-Emacs יש להקיש C-x C-c. +כדי לצאת מ־Emacs יש להקיש C-x C-c. שיעור זה נכתב כדי להיות מובן לכל המשתמשים החדשים, לכן אם מצאתם שמשהו כאן אינו ברור, אל תשבו ותאשימו את עצמכם -- תתלוננו! @@ -1002,8 +1002,8 @@ * זכויות שימוש -------------- -שיעור זה הינו צאצא של שורה ארוכה של שיעורים בשימוש ב-Emacs, החל מהגרסה -הראשונה שנכתבה ע"י Stuart Cracraft עבור גירסת ה-Emacs המקורית. +שיעור זה הינו צאצא של שורה ארוכה של שיעורים בשימוש ב־Emacs, החל מהגרסה +הראשונה שנכתבה ע"י Stuart Cracraft עבור גירסת ה־Emacs המקורית. גירסה זו של השיעור הינה חלק מחבילת GNU Emacs. היא מוגנת בזכויות יוצרים וניתנת להעתקה והפצת עותקים בתנאים מסויימים כדלקמן: @@ -1016,11 +1016,11 @@ בכל גרסא מאוחרת יותר. ‏GNU Emacs מופץ מתוך תקווה שהוא יביא תועלת, אולם ללא כל כתב אחריות; -אפילו לא אחריות-במשתמע של סחירות או התאמה לאיזו תכלית מסוימת. לפרטים, -אנא עיינו ב-GNU General Public License. +אפילו לא אחריות־במשתמע של סחירות או התאמה לאיזו תכלית מסוימת. לפרטים, +אנא עיינו ב־GNU General Public License. ‏GNU Emacs אמור להיות מלווה בעותק של GNU General Public License; אם לא -קיבלתם אותו, תוכלו למצוא אותו ב-‭‬. +קיבלתם אותו, תוכלו למצוא אותו ב־‭‬. הנכם מוזמנים לקרוא את הקובץ COPYING ואז אכן לחלק עותקים של GNU Emacs לחבריכם. עזרו לנו לחסל את "הבעלות" על תוכנה שאינה אלא חבלה בתוכנה, ------------------------------------------------------------ revno: 101074 committer: Jason Rumney branch nick: trunk timestamp: Sat 2010-08-14 15:35:24 +0800 message: (lispy_function_keys): Do not define VK_PACKET (bug#4836) diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-14 00:39:08 +0000 +++ src/ChangeLog 2010-08-14 07:35:24 +0000 @@ -1,3 +1,7 @@ +2010-08-14 Jason Rumney + + * keyboard.c (lispy_function_keys): Do not define VK_PACKET (bug#4836) + 2010-08-14 Chong Yidong * fns.c (Fmake_hash_table): Doc fix (Bug#6851). === modified file 'src/keyboard.c' --- src/keyboard.c 2010-08-09 09:35:21 +0000 +++ src/keyboard.c 2010-08-14 07:35:24 +0000 @@ -4941,9 +4941,9 @@ 0, /* VK_OEM_102 0xE2 */ "ico-help", /* VK_ICO_HELP 0xE3 */ "ico-00", /* VK_ICO_00 0xE4 */ - 0, /* VK_PROCESSKEY 0xE5 */ + 0, /* VK_PROCESSKEY 0xE5 - used by IME */ "ico-clear", /* VK_ICO_CLEAR 0xE6 */ - "packet", /* VK_PACKET 0xE7 */ + 0, /* VK_PACKET 0xE7 - used to pass unicode chars */ 0, /* 0xE8 */ "reset", /* VK_OEM_RESET 0xE9 */ "jump", /* VK_OEM_JUMP 0xEA */ ------------------------------------------------------------ revno: 101073 committer: Glenn Morris branch nick: trunk timestamp: Fri 2010-08-13 19:02:31 -0700 message: * lisp/gnus/gnus-sync.el (gnus-sync): Fix defgroup version. diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2010-08-13 11:03:19 +0000 +++ lisp/gnus/ChangeLog 2010-08-14 02:02:31 +0000 @@ -1,3 +1,7 @@ +2010-08-14 Glenn Morris + + * gnus-sync.el (gnus-sync): Fix defgroup version. + 2010-08-12 Teodor Zlatanov Optimizations for gnus-sync.el. === modified file 'lisp/gnus/gnus-sync.el' --- lisp/gnus/gnus-sync.el 2010-08-13 11:03:19 +0000 +++ lisp/gnus/gnus-sync.el 2010-08-14 02:02:31 +0000 @@ -1,7 +1,6 @@ ;;; gnus-sync.el --- synchronization facility for Gnus -;;; Copyright (C) 2010 -;;; Free Software Foundation, Inc. +;; Copyright (C) 2010 Free Software Foundation, Inc. ;; Author: Ted Zlatanov ;; Keywords: news synchronization nntp nnrss @@ -48,7 +47,7 @@ (defgroup gnus-sync nil "The Gnus synchronization facility." - :version "23.1" + :version "24.1" :group 'gnus) (defcustom gnus-sync-newsrc-groups `("nntp" "nnrss") ------------------------------------------------------------ Use --include-merges or -n0 to see merged revisions.