Now on revision 114493. ------------------------------------------------------------ revno: 114493 fixes bug: http://debbugs.gnu.org/15500 committer: Alp Aker branch nick: trunk timestamp: Tue 2013-10-01 23:26:29 -0400 message: * macfont.m (macfont_draw): Use CGRectMake rather than NSMakeRect (Bug#15500). diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-29 16:27:09 +0000 +++ src/ChangeLog 2013-10-02 03:26:29 +0000 @@ -1,3 +1,8 @@ +2013-10-01 Alp Aker + + * macfont.m (macfont_draw): Use CGRectMake rather than NSMakeRect + (Bug#15500). + 2013-09-29 Eli Zaretskii * xdisp.c (get_next_display_element): Don't call face_for_font in === modified file 'src/macfont.m' --- src/macfont.m 2013-09-22 09:31:55 +0000 +++ src/macfont.m 2013-10-02 03:26:29 +0000 @@ -2708,7 +2708,7 @@ { CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, s); CGContextFillRect (context, - NSMakeRect (x, y, + CGRectMake (x, y, s->width, FONT_HEIGHT (s->font))); } ------------------------------------------------------------ revno: 114492 author: Fabrice Niessen committer: Dmitry Gutov branch nick: trunk timestamp: Wed 2013-10-02 06:09:31 +0300 message: * themes/leuven-theme.el: Add Commentary and some headers, update face definitions, add autoload block which is used when distributed separately from Emacs. diff: === modified file 'etc/ChangeLog' --- etc/ChangeLog 2013-09-28 01:48:06 +0000 +++ etc/ChangeLog 2013-10-02 03:09:31 +0000 @@ -1,3 +1,9 @@ +2013-10-02 Fabrice Niessen + + * themes/leuven-theme.el: Add Commentary and some headers, update + face definitions, add autoload block which is used when + distributed separately from Emacs. + 2013-09-22 Daniel Colascione * NEWS: Mention new bool-vector functionality. === modified file 'etc/themes/leuven-theme.el' --- etc/themes/leuven-theme.el 2013-05-24 13:37:15 +0000 +++ etc/themes/leuven-theme.el 2013-10-02 03:09:31 +0000 @@ -1,9 +1,11 @@ -;;; leuven-theme.el --- Emacs custom theme +;;; leuven-theme.el --- Awesome Emacs color theme on white background ;; Copyright (C) 2003-2013 Free Software Foundation, Inc. -;; Time-stamp: <2013-05-24 Fri 10:33> ;; Author: Fabrice Niessen <(concat "fniessen" at-sign "pirilampo.org")> +;; URL: https://github.com/fniessen/emacs-leuven-theme +;; Version: 20130918.1010 +;; Keywords: color theme ;; This file is part of GNU Emacs. @@ -20,6 +22,17 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see . +;;; Commentary: + +;; This Org-enhancing color theme "leuven" ROCKS! +;; ... and not just for Org mode. +;; +;; To use it, put the following in your Emacs configuration file: +;; +;; (load-theme 'leuven t) +;; +;; Requirements: Emacs 24. + ;;; Code: (deftheme leuven @@ -28,33 +41,34 @@ Semantic, and Ansi-Color faces are included -- and much more...") (let ((class '((class color) (min-colors 89))) + ;; Leuven generic colors (cancel '(:slant italic :strike-through t :foreground "gray55")) (clock-line '(:box (:line-width 1 :color "#335EA8") :foreground "black" :background "#EEC900")) - (code-block '(:foreground "#000088" :background "#FBF9EA")) + (code-block '(:foreground "#000088" :background "#FFFFE0")) (code-inline '(:box (:line-width 1 :color "#DDDDDD") :foreground "#000088" :background "#FFFFE0")) (column '(:height 1.0 :weight normal :slant normal :underline nil :strike-through nil :foreground "#E6AD4F" :background "#FFF2DE")) (diff-added '(:foreground "#008000" :background "#DDFFDD")) - (diff-hunk-header '(:box (:line-width 1 :color "#FFE0FF") :foreground "#990099" :background "#FFEEFF")) + (diff-hunk-header '(:foreground "#990099" :background "#FFEEFF")) (diff-none '(:foreground "gray33")) (diff-removed '(:foreground "#A60000" :background "#FFDDDD")) (directory '(:weight bold :foreground "blue" :background "#FFFFD2")) - (highlight-line '(:background "#CCDEED")) + (highlight-line '(:background "#FEFCAE")) ;; #F5F5F5 or #CCDEED (link '(:underline t :foreground "#006DAF")) (mail-header-name '(:weight bold :foreground "black")) (marked-line '(:weight bold :foreground "white" :background "red")) (match '(:background "#FBE448")) (ol1 '(:height 1.3 :weight bold :overline "#A7A7A7" :foreground "#3C3C3C" :background "#F0F0F0")) (ol2 '(:height 1.0 :weight bold :overline "#123555" :foreground "#123555" :background "#E5F4FB")) - (ol3 '(:height 1.0 :weight bold :overline "#005522" :foreground "#005522" :background "#EFFFEF")) + (ol3 '(:height 1.0 :weight bold :foreground "#005522" :background "#EFFFEF")) (ol4 '(:height 1.0 :weight bold :slant normal :foreground "#EA6300")) (ol5 '(:height 1.0 :weight bold :slant normal :foreground "#E3258D")) (ol6 '(:height 1.0 :weight bold :slant italic :foreground "#0077CC")) (ol7 '(:height 1.0 :weight bold :slant italic :foreground "#2EAE2C")) (ol8 '(:height 1.0 :weight bold :slant italic :foreground "#FD8008")) - (region '(:background "#CCDEED")) + (region '(:background "#ADD6FF")) ;; #CCCCCC (shadow '(:foreground "#7F7F7F")) - (string '(:foreground "#FF5500")) ;; D0372D + (string '(:foreground "#FF4700")) ;; #D0372D or #23238E (subject '(:weight bold :foreground "#CF5D60")) (symlink '(:foreground "deep sky blue")) (volatile-highlight '(:background "#FBE448")) @@ -62,12 +76,13 @@ (custom-theme-set-faces 'leuven - `(default ((,class (:background "#FFFFFF" :foreground "#333333")))) + `(default ((,class (:foreground "#333333" :background "#FFFFFF")))) `(bold ((,class (:weight bold :foreground "black")))) `(bold-italic ((,class (:weight bold :slant italic :foreground "black")))) `(italic ((,class (:slant italic :foreground "#1A1A1A")))) `(underline ((,class (:underline t)))) `(cursor ((,class (:background "#15FF00")))) + ;; Highlighting faces `(fringe ((,class (:foreground "#56B556" :background "#E2F9E2")))) `(highlight ((,class ,volatile-highlight))) @@ -82,12 +97,14 @@ `(whitespace-indentation ((,class (:foreground "firebrick" :background "yellow")))) `(whitespace-trailing ((,class (:weight bold :foreground "yellow" :background "red1")))) `(whitespace-hspace ((,class (:background "#CCE8F6")))) + ;; Mode line faces `(mode-line ((,class (:box (:line-width 1 :color "#1A2F54") :foreground "#85CEEB" :background "#335EA8")))) `(mode-line-inactive ((,class (:box (:line-width 1 :color "#4E4E4C") :foreground "#F0F0EF" :background "#9B9C97")))) `(mode-line-buffer-id ((,class (:weight bold :foreground "white")))) `(mode-line-emphasis ((,class (:weight bold :foreground "white")))) `(mode-line-highlight ((,class (:foreground "yellow")))) + ;; Escape and prompt faces `(minibuffer-prompt ((,class (:weight bold :foreground "black" :background "gold")))) `(minibuffer-noticeable-prompt ((,class (:weight bold :foreground "black" :background "gold")))) @@ -95,51 +112,92 @@ `(error ((,class (:foreground "red")))) `(warning ((,class (:foreground "orange")))) `(success ((,class (:foreground "green")))) + ;; Font lock faces `(font-lock-builtin-face ((,class (:foreground "#006FE0")))) - `(font-lock-comment-delimiter-face ((,class (:foreground "#008200")))) - `(font-lock-comment-face ((,class (:slant italic :foreground "#008200")))) + `(font-lock-comment-delimiter-face ((,class (:foreground "#008200")))) ;; #696969 + `(font-lock-comment-face ((,class (:slant italic :foreground "#008200")))) ;; #696969 `(font-lock-constant-face ((,class (:foreground "#6434A3")))) `(font-lock-doc-face ((,class (:foreground "#008000")))) `(font-lock-doc-string-face ((,class (:foreground "#008000")))) `(font-lock-function-name-face ((,class (:foreground "#006699")))) `(font-lock-keyword-face ((,class (:bold nil :foreground "#0000FF")))) ;; #3654DC `(font-lock-preprocessor-face ((,class (:foreground "#808080")))) + `(font-lock-regexp-grouping-backslash ((,class (:weight bold :inherit nil)))) + `(font-lock-regexp-grouping-construct ((,class (:weight bold :inherit nil)))) `(font-lock-string-face ((,class ,string))) - `(font-lock-type-face ((,class (:foreground "#6D6D6D")))) - `(font-lock-variable-name-face ((,class (:foreground "#BA36A5")))) ;; 800080 + `(font-lock-type-face ((,class (:foreground "#666666")))) + `(font-lock-variable-name-face ((,class (:foreground "#BA36A5")))) ;; #800080 `(font-lock-warning-face ((,class (:weight bold :foreground "red")))) + ;; Button and link faces - `(link ((,class (:foreground "#8ac6f2" :underline t)))) - `(link-visited ((,class (:foreground "#e5786d" :underline t)))) + `(link ((,class (:foreground "#8AC6F2" :underline t)))) + `(link-visited ((,class (:foreground "#E5786D" :underline t)))) `(button ((,class (:underline t :foreground "#006DAF")))) - `(header-line ((,class (:weight bold :underline "black" :overline "black" :foreground "black" :background "#FFFF88")))) + `(header-line ((,class (:weight bold :foreground "black" :background "#FFFF88" :underline "black" :overline "black")))) + ;; Gnus faces + `(gnus-cite-attribution-face ((,class (:foreground "#5050B0")))) + `(gnus-cite-face-1 ((,class (:foreground "#5050B0")))) + `(gnus-cite-face-10 ((,class (:foreground "#990000")))) + `(gnus-cite-face-2 ((,class (:foreground "#660066")))) + `(gnus-cite-face-3 ((,class (:foreground "#007777")))) + `(gnus-cite-face-4 ((,class (:foreground "#990000")))) + `(gnus-cite-face-5 ((,class (:foreground "#000099")))) + `(gnus-cite-face-6 ((,class (:foreground "#BB6600")))) + `(gnus-cite-face-7 ((,class (:foreground "#5050B0")))) + `(gnus-cite-face-8 ((,class (:foreground "#660066")))) + `(gnus-cite-face-9 ((,class (:foreground "#007777")))) + `(gnus-emphasis-bold ((,class (:weight bold)))) + `(gnus-emphasis-highlight-words ((,class (:foreground "yellow" :background "black")))) + `(gnus-group-mail-1 ((,class (:weight bold :foreground "#FF50B0")))) + `(gnus-group-mail-1-empty ((,class (:foreground "#5050B0")))) + `(gnus-group-mail-2 ((,class (:weight bold :foreground "#FF0066")))) + `(gnus-group-mail-2-empty ((,class (:foreground "#660066")))) + `(gnus-group-mail-3 ((,class (:weight bold :foreground "black")))) + `(gnus-group-mail-3-empty ((,class (:foreground "#808080")))) + `(gnus-group-mail-low ((,class ,cancel))) + `(gnus-group-mail-low-empty ((,class ,cancel))) + `(gnus-group-news-1 ((,class (:weight bold :foreground "#FF50B0")))) `(gnus-group-news-1-empty ((,class (:foreground "#5050B0")))) - `(gnus-group-news-1 ((,class (:weight bold :foreground "#FF50B0")))) + `(gnus-group-news-2 ((,class (:weight bold :foreground "#FF0066")))) `(gnus-group-news-2-empty ((,class (:foreground "#660066")))) - `(gnus-group-news-2 ((,class (:weight bold :foreground "#FF0066")))) + `(gnus-group-news-3 ((,class (:weight bold :foreground "black")))) `(gnus-group-news-3-empty ((,class (:foreground "#808080")))) - `(gnus-group-news-3 ((,class (:weight bold :foreground "black")))) + `(gnus-group-news-4 ((,class (:weight bold :foreground "#FF0000")))) `(gnus-group-news-4-empty ((,class (:foreground "#990000")))) - `(gnus-group-news-4 ((,class (:weight bold :foreground "#FF0000")))) + `(gnus-group-news-5 ((,class (:weight bold :foreground "#FF0099")))) `(gnus-group-news-5-empty ((,class (:foreground "#000099")))) - `(gnus-group-news-5 ((,class (:weight bold :foreground "#FF0099")))) + `(gnus-group-news-6 ((,class (:weight bold :foreground "gray50")))) `(gnus-group-news-6-empty ((,class (:foreground "#808080")))) - `(gnus-group-news-6 ((,class (:weight bold :foreground "gray50")))) - `(gnus-group-mail-1-empty ((,class (:foreground "#5050B0")))) - `(gnus-group-mail-1 ((,class (:weight bold :foreground "#FF50B0")))) - `(gnus-group-mail-2-empty ((,class (:foreground "#660066")))) - `(gnus-group-mail-2 ((,class (:weight bold :foreground "#FF0066")))) - `(gnus-group-mail-3-empty ((,class (:foreground "#808080")))) - `(gnus-group-mail-3 ((,class (:weight bold :foreground "black")))) - `(gnus-group-mail-low-empty ((,class ,cancel))) - `(gnus-group-mail-low ((,class ,cancel))) `(gnus-header-content ((,class (:family "Sans Serif" :foreground "#3399CC")))) `(gnus-header-from ((,class (:family "Sans Serif" :foreground "blue")))) - `(gnus-header-subject ((,class ,subject))) `(gnus-header-name ((,class ,mail-header-name))) `(gnus-header-newsgroups ((,class (:family "Sans Serif" :foreground "#3399CC")))) + `(gnus-header-subject ((,class ,subject))) + `(gnus-picon ((,class (:foreground "yellow" :background "white")))) + `(gnus-picon-xbm ((,class (:foreground "yellow" :background "white")))) + `(gnus-server-closed ((,class (:slant italic :foreground "blue" :background "white")))) + `(gnus-server-denied ((,class (:weight bold :foreground "red" :background "white")))) + `(gnus-server-opened ((,class (:foreground "white" :background "#83B869")))) + `(gnus-signature ((,class (:slant italic :foreground "#7F7F7F")))) + `(gnus-splash ((,class (:foreground "#FF8C00")))) + `(gnus-summary-cancelled ((,class ,cancel))) + `(gnus-summary-high-ancient ((,class (:weight normal :foreground "#808080" :background "#FFFFE6")))) + `(gnus-summary-high-read ((,class (:weight normal :foreground "#808080" :background "#FFFFE6")))) + `(gnus-summary-high-ticked ((,class (:weight normal :foreground "black" :background "#E7AEB0")))) + `(gnus-summary-high-unread ((,class (:weight normal :foreground "black" :background "#FFFFCC")))) + `(gnus-summary-low-ancient ((,class (:slant italic :foreground "gray55")))) + `(gnus-summary-low-read ((,class (:slant italic :foreground "gray55" :background "#E0E0E0")))) + `(gnus-summary-low-ticked ((,class (:slant italic :foreground "black" :background "#E7AEB0")))) + `(gnus-summary-low-unread ((,class (:slant italic :foreground "black")))) + `(gnus-summary-normal-ancient ((,class (:foreground "#808080")))) + `(gnus-summary-normal-read ((,class (:foreground "#808080")))) + `(gnus-summary-normal-ticked ((,class (:foreground "black" :background "#E7AEB0")))) + `(gnus-summary-normal-unread ((,class (:foreground "black")))) + `(gnus-summary-selected ((,class (:foreground "black" :background "#FFD0D0" :underline t)))) + `(gnus-x-face ((,class (:foreground "black" :background "white")))) + ;; Message faces `(message-header-name ((,class ,mail-header-name))) `(message-header-cc ((,class (:family "Sans Serif" :foreground "blue")))) @@ -151,6 +209,7 @@ `(message-header-newsgroups ((,class (:family "Sans Serif" :foreground "#3399CC")))) `(message-header-xheader ((,class (:family "Sans Serif" :foreground "#3399CC")))) `(message-mml ((,class (:foreground "forest green")))) + ;; Diff `(diff-added ((,class ,diff-added))) `(diff-changed ((,class (:foreground "blue" :background "#DDDDFF")))) @@ -166,8 +225,10 @@ `(diff-indicator-removed ((,class (:foreground "#A60000" :background "#FFAAAA")))) `(diff-refine-change ((,class (:background "#DDDDFF")))) `(diff-removed ((,class ,diff-removed))) + ;; SMerge `(smerge-refined-change ((,class (:background "#AAAAFF")))) + ;; Ediff `(ediff-current-diff-A ((,class (:foreground "gray33" :background "#FFDDDD")))) `(ediff-current-diff-B ((,class (:foreground "gray33" :background "#DDFFDD")))) @@ -178,9 +239,11 @@ `(ediff-fine-diff-B ((,class (:foreground "#008000" :background "#55FF55")))) `(ediff-odd-diff-A ((,class (:foreground "black" :background "light grey")))) `(ediff-odd-diff-B ((,class (:foreground "black" :background "light grey")))) + ;; Flyspell `(flyspell-duplicate ((,class (:underline "#008000" :inherit nil)))) `(flyspell-incorrect ((,class (:underline "red" :inherit nil)))) + ;; ;; Semantic faces ;; `(semantic-decoration-on-includes ((,class (:underline ,cham-4)))) ;; `(semantic-decoration-on-private-members-face ((,class (:background ,alum-2)))) @@ -189,6 +252,7 @@ ;; `(semantic-decoration-on-unparsed-includes ((,class (:underline ,orange-3)))) ;; `(semantic-tag-boundary-face ((,class (:overline ,blue-1)))) ;; `(semantic-unmatched-syntax-face ((,class (:underline ,red-1)))) + `(Info-title-1-face ((,class ,ol1))) `(Info-title-2-face ((,class ,ol2))) `(Info-title-3-face ((,class ,ol3))) @@ -196,7 +260,7 @@ `(bbdb-company ((,class (:slant italic :foreground "steel blue")))) `(bbdb-field-name ((,class (:weight bold :foreground "steel blue")))) `(bbdb-field-value ((,class (:foreground "steel blue")))) - `(bbdb-name ((,class (:underline t :foreground "#FF6633")))) + `(bbdb-name ((,class (:foreground "#FF6633" :underline t)))) `(browse-kill-ring-separator-face ((,class (:weight bold :foreground "slate gray")))) `(calendar-today ((,class (:weight bold :foreground "#4F4A3D" :background "#FFFABE")))) `(cfw:face-annotation ((,class (:foreground "green" :background "red")))) @@ -207,11 +271,11 @@ `(cfw:face-grid ((,class (:foreground "#DDDDDD")))) `(cfw:face-header ((,class (:foreground "#1662AF" :background "white" :weight bold)))) `(cfw:face-holiday ((,class (:foreground "#777777" :background "#E4EBFE")))) - `(cfw:face-periods ((,class (:background "#668CD9" :foreground "white" :slant italic)))) + `(cfw:face-periods ((,class (:foreground "white" :background "#668CD9" :slant italic)))) `(cfw:face-saturday ((,class (:foreground "#4E4E4E" :background "white" :weight bold)))) `(cfw:face-select ((,class (:foreground "#4A95EB" :background "#EDF1FA")))) `(cfw:face-sunday ((,class (:foreground "#4E4E4E" :background "white" :weight bold)))) - `(cfw:face-title ((,class (:foreground "#676767" :weight bold :height 2.0 :inherit variable-pitch)))) + `(cfw:face-title ((,class (:height 2.0 :foreground "#676767" :weight bold :inherit variable-pitch)))) `(cfw:face-today ((,class (:foreground "#4F4A3D" :background "#FFFABE")))) `(cfw:face-today-title ((,class (:foreground "#4A95EB" :background "#FFFABE")))) `(cfw:face-toolbar ((,class (:background "white")))) @@ -230,32 +294,32 @@ `(compare-windows ((,class (:background "#FFFF00")))) `(compilation-error ((,class (:weight bold :foreground "red")))) `(compilation-info ((,class (:weight bold :foreground "#2A489E")))) ;; used for grep - `(compilation-line-number ((,class (:bold t :foreground "#A535AE")))) + `(compilation-line-number ((,class (:weight bold :foreground "#A535AE")))) `(compilation-warning ((,class (:weight bold :foreground "orange")))) `(css-property ((,class (:foreground "#00AA00")))) `(css-selector ((,class (:weight bold :foreground "blue")))) - `(custom-button ((,class (:background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button))))) - `(custom-button-mouse ((,class (:background "grey90" :foreground "black" :box (:line-width 2 :style released-button))))) - `(custom-button-pressed ((,class (:foreground "black" :background "light grey" :box (:line-width 2 :style pressed-button))))) - `(custom-button-pressed-unraised ((,class (:underline t :foreground "magenta4")))) + `(custom-button ((,class (:box (:line-width 2 :style released-button) :foreground "black" :background "lightgrey")))) + `(custom-button-mouse ((,class (:box (:line-width 2 :style released-button) :foreground "black" :background "grey90")))) + `(custom-button-pressed ((,class (:box (:line-width 2 :style pressed-button) :foreground "black" :background "light grey")))) + `(custom-button-pressed-unraised ((,class (:foreground "magenta4" :underline t)))) `(custom-button-unraised ((,class (:underline t)))) `(custom-changed ((,class (:foreground "white" :background "blue")))) `(custom-comment ((,class (:background "gray85")))) `(custom-comment-tag ((,class (:foreground "blue4")))) `(custom-documentation ((,class (nil)))) - `(custom-face-tag ((,class (:family "Sans Serif" :weight bold :height 1.2)))) - `(custom-group-tag ((,class (:bold t :foreground "blue1" :weight bold :height 1.2)))) - `(custom-group-tag-1 ((,class (:bold t :family "Sans Serif" :foreground "red1" :weight bold :height 1.2)))) + `(custom-face-tag ((,class (:family "Sans Serif" :height 1.2 :weight bold)))) + `(custom-group-tag ((,class (:height 1.2 :weight bold :foreground "blue1")))) + `(custom-group-tag-1 ((,class (:family "Sans Serif" :height 1.2 :weight bold :foreground "red1")))) `(custom-invalid ((,class (:foreground "yellow" :background "red")))) - `(custom-link ((,class (:underline t :foreground "blue1")))) + `(custom-link ((,class (:foreground "blue1" :underline t)))) `(custom-modified ((,class (:foreground "white" :background "blue")))) `(custom-rogue ((,class (:foreground "pink" :background "black")))) `(custom-saved ((,class (:underline t)))) `(custom-set ((,class (:foreground "blue" :background "white")))) `(custom-state ((,class (:foreground "green4")))) - `(custom-themed ((,class (:background "blue1" :foreground "white")))) + `(custom-themed ((,class (:foreground "white" :background "blue1")))) `(custom-variable-button ((,class (:weight bold :underline t)))) - `(custom-variable-tag ((,class (:bold t :family "Sans Serif" :foreground "blue1" :weight bold :height 1.2)))) + `(custom-variable-tag ((,class (:family "Sans Serif" :height 1.2 :weight bold :foreground "blue1")))) `(custom-visibility ((,class ,link))) `(diary-face ((,class (:foreground "#87C9FC")))) `(dircolors-face-asm ((,class (:foreground "black")))) @@ -294,7 +358,7 @@ `(diredp-file-name ((,class (:foreground "black")))) `(diredp-file-suffix ((,class (:foreground "#008000")))) `(diredp-flag-mark-line ((,class ,marked-line))) - `(diredp-ignored-file-name ((,class (:strike-through t :foreground "red")))) + `(diredp-ignored-file-name ((,class ,shadow))) `(diredp-read-priv ((,class (:background "#0A99FF")))) `(diredp-write-priv ((,class (:foreground "white" :background "#FF4040")))) `(file-name-shadow ((,class ,shadow))) @@ -307,40 +371,10 @@ `(font-latex-sectioning-4-face ((,class ,ol3))) `(font-latex-sectioning-5-face ((,class ,ol4))) `(font-latex-sedate-face ((,class (:foreground "#FF5500")))) - `(font-latex-string-face ((,class (:bold t :foreground "#0066FF")))) + `(font-latex-string-face ((,class (:weight bold :foreground "#0066FF")))) `(font-latex-verbatim-face ((,class (:foreground "#000088" :background "#FFFFE0" :inherit nil)))) - `(gnus-cite-attribution-face ((,class (:foreground "#5050B0")))) - `(gnus-cite-face-1 ((,class (:foreground "#5050B0")))) - `(gnus-cite-face-10 ((,class (:foreground "#990000")))) - `(gnus-cite-face-2 ((,class (:foreground "#660066")))) - `(gnus-cite-face-3 ((,class (:foreground "#007777")))) - `(gnus-cite-face-4 ((,class (:foreground "#990000")))) - `(gnus-cite-face-5 ((,class (:foreground "#000099")))) - `(gnus-cite-face-6 ((,class (:foreground "#BB6600")))) - `(gnus-cite-face-7 ((,class (:foreground "#5050B0")))) - `(gnus-cite-face-8 ((,class (:foreground "#660066")))) - `(gnus-cite-face-9 ((,class (:foreground "#007777")))) - `(gnus-emphasis-bold ((,class (:weight bold)))) - `(gnus-emphasis-highlight-words ((,class (:foreground "yellow" :background "black")))) - `(gnus-picon ((,class (:foreground "yellow" :background "white")))) - `(gnus-picon-xbm ((,class (:foreground "yellow" :background "white")))) - `(gnus-signature ((,class (:foreground "#7F7F7F")))) - `(gnus-splash ((,class (:foreground "#FF8C00")))) - `(gnus-summary-cancelled ((,class ,cancel))) - `(gnus-summary-high-ancient ((,class (:weight normal :foreground "#808080" :background "#FFFFE6")))) - `(gnus-summary-high-read ((,class (:weight normal :foreground "#808080" :background "#FFFFE6")))) - `(gnus-summary-high-ticked ((,class (:weight normal :foreground "black" :background "#E7AEB0")))) - `(gnus-summary-high-unread ((,class (:weight normal :foreground "black" :background "#FFFFCC")))) - `(gnus-summary-low-ancient ((,class (:slant italic :foreground "gray55")))) - `(gnus-summary-low-read ((,class (:slant italic :foreground "gray55" :background "#E0E0E0")))) - `(gnus-summary-low-ticked ((,class (:slant italic :foreground "black" :background "#E7AEB0")))) - `(gnus-summary-low-unread ((,class (:slant italic :foreground "black")))) - `(gnus-summary-normal-ancient ((,class (:foreground "#808080")))) - `(gnus-summary-normal-read ((,class (:foreground "#808080")))) - `(gnus-summary-normal-ticked ((,class (:foreground "black" :background "#E7AEB0")))) - `(gnus-summary-normal-unread ((,class (:foreground "black")))) - `(gnus-summary-selected ((,class (:foreground "black" :background "#FFD0D0" :underline t)))) - `(gnus-x-face ((,class (:foreground "black" :background "white")))) + `(git-commit-summary-face ((,class (:foreground "#000000")))) + `(git-commit-comment-face ((,class (:slant italic :foreground "#696969")))) `(helm-action ((,class (:foreground "#335EA8")))) `(helm-bookmarks-su-face ((,class (:foreground "red")))) `(helm-candidate-number ((,class (:foreground "black" :background "#FFFF66")))) @@ -360,24 +394,30 @@ `(helm-selection-line ((,class ,volatile-highlight))) `(helm-source-header ((,class (:family "Sans Serif" :height 1.3 :weight bold :foreground "white" :background "#2F69BF")))) `(helm-visible-mark ((,class ,marked-line))) - `(helm-w3m-bookmarks-face ((,class (:underline t :foreground "cyan1")))) + `(helm-w3m-bookmarks-face ((,class (:foreground "cyan1" :underline t)))) `(highlight-symbol-face ((,class (:background "#FFFFA0")))) `(hl-line ((,class ,highlight-line))) + `(hl-tags-face ((,class (:background "#FEFCAE")))) `(holiday-face ((,class (:foreground "#777777" :background "#E4EBFE")))) `(html-helper-bold-face ((,class (:weight bold :foreground "black")))) `(html-helper-italic-face ((,class (:slant italic :foreground "black")))) - `(html-helper-underline-face ((,class (:underline t :foreground "black")))) + `(html-helper-underline-face ((,class (:foreground "black" :underline t)))) `(html-tag-face ((,class (:foreground "blue")))) + `(ilog-non-change-face ((,class (:height 2.0 :foreground "#6434A3")))) + `(ilog-change-face ((,class (:height 2.0 :foreground "#008200")))) + `(ilog-echo-face ((,class (:height 2.0 :foreground "#006FE0")))) + `(ilog-load-face ((,class (:foreground "#BA36A5")))) + `(ilog-message-face ((,class (:foreground "#808080")))) `(info-file ((,class (:family "Sans Serif" :height 1.8 :weight bold :box (:line-width 1 :color "#0000CC") :foreground "cornflower blue" :background "LightSteelBlue1")))) - `(info-header-node ((,class (:underline t :foreground "orange")))) ;; nodes in header - `(info-header-xref ((,class (:underline t :foreground "dodger blue")))) ;; cross references in header - `(info-menu-header ((,class (:family "Sans Serif" :height 1.6 :weight bold :underline t :foreground "#00CC00")))) ;; menu titles (headers) -- major topics + `(info-header-node ((,class (:foreground "orange" :underline t)))) ;; nodes in header + `(info-header-xref ((,class (:foreground "dodger blue" :underline t)))) ;; cross references in header + `(info-menu-header ((,class (:family "Sans Serif" :height 1.6 :weight bold :foreground "#00CC00" :underline t)))) ;; menu titles (headers) -- major topics `(info-menu-star ((,class (:foreground "black")))) ;; every 3rd menu item - `(info-node ((,class (:underline t :foreground "blue")))) ;; node names + `(info-node ((,class (:foreground "blue" :underline t)))) ;; node names `(info-quoted-name ((,class ,code-inline))) `(info-string ((,class ,string))) `(info-title-1 ((,class ,ol1))) - `(info-xref ((,class (:weight bold :underline t :foreground "blue")))) ;; unvisited cross-references + `(info-xref ((,class (:weight bold :foreground "blue" :underline t)))) ;; unvisited cross-references `(info-xref-visited ((,class (:weight bold :foreground "magenta4")))) ;; previously visited cross-references `(light-symbol-face ((,class (:background "#FFFFA0")))) `(linum ((,class (:foreground "#AFAFAF" :background "white")))) @@ -401,24 +441,26 @@ `(makefile-targets ((,class (:weight bold :foreground "blue")))) `(match ((,class ,match))) `(mm-uu-extract ((,class ,code-block))) - `(moccur-current-line-face ((,class (:background "#FFFFCC" :foreground "black")))) - `(moccur-face ((,class (:background "#FFFF99" :foreground "black")))) + `(moccur-current-line-face ((,class (:foreground "black" :background "#FFFFCC")))) + `(moccur-face ((,class (:foreground "black" :background "#FFFF99")))) + `(next-error ((,class ,volatile-highlight))) `(nobreak-space ((,class (:background "#CCE8F6")))) `(nxml-attribute-local-name-face ((,class (:foreground "magenta")))) `(nxml-attribute-value-delimiter-face ((,class (:foreground "green4")))) `(nxml-attribute-value-face ((,class (:foreground "green4")))) `(nxml-comment-content-face ((,class (:slant italic :foreground "red")))) `(nxml-comment-delimiter-face ((,class (:foreground "red")))) - `(nxml-element-local-name ((,class (:box (:line-width 1 :color "#999999") :background "#DEDEDE" :foreground "#000088")))) + `(nxml-element-local-name ((,class (:box (:line-width 1 :color "#999999") :foreground "#000088" :background "#DEDEDE")))) `(nxml-element-local-name-face ((,class (:foreground "blue")))) `(nxml-processing-instruction-target-face ((,class (:foreground "purple1")))) `(nxml-tag-delimiter-face ((,class (:foreground "blue")))) `(nxml-tag-slash-face ((,class (:foreground "blue")))) + `(org-agenda-block-count ((,class (:weight bold :foreground "blue")))) `(org-agenda-calendar-event ((,class (:weight bold :foreground "#3774CC" :background "#A8C5EF")))) `(org-agenda-calendar-sexp ((,class (:foreground "#777777" :background "#E4EBFE")))) `(org-agenda-clocking ((,class ,clock-line))) `(org-agenda-column-dateline ((,class ,column))) - `(org-agenda-current-time ((,class (:underline t :foreground "#1662AF")))) + `(org-agenda-current-time ((,class (:foreground "#1662AF" :underline t)))) `(org-agenda-date ((,class (:height 1.6 :weight bold :foreground "#1662AF")))) `(org-agenda-date-today ((,class (:height 1.6 :weight bold :foreground "#4F4A3D" :background "#FFFABE")))) `(org-agenda-date-weekend ((,class (:height 1.6 :weight bold :foreground "#4E4E4E")))) @@ -427,20 +469,20 @@ `(org-agenda-done ((,class (:foreground "#555555" :background "#EEEEEE")))) `(org-agenda-filter-category ((,class (:weight bold :foreground "orange")))) `(org-agenda-filter-tags ((,class (:weight bold :foreground "orange")))) - `(org-agenda-restriction-lock ((,class (:weight bold :foreground "white" :background "orange")))) + `(org-agenda-restriction-lock ((,class (:background "#E77D63")))) `(org-agenda-structure ((,class (:height 1.6 :weight bold :box (:line-width 1 :color "#999999") :foreground "#666666" :background "#CCCCCC")))) `(org-archived ((,class (:foreground "gray70")))) `(org-beamer-tag ((,class (:box (:line-width 1 :color "#FABC18") :foreground "#2C2C2C" :background "#FFF8D0")))) `(org-block ((,class ,code-block))) `(org-block-background ((,class (:background "#FFFFE0")))) - `(org-block-begin-line ((,class (:underline "#A7A6AA" :foreground "#555555" :background "#E2E1D5")))) + `(org-block-begin-line ((,class (:foreground "#555555" :background "#E2E1D5" :underline "#A7A6AA")))) `(org-block-end-line ((,class (:overline "#A7A6AA" :foreground "#555555" :background "#E2E1D5")))) - `(org-checkbox ((,class (:weight bold :foreground "white" :background "#777777" :box (:line-width 1 :style pressed-button))))) + `(org-checkbox ((,class (:weight bold :box (:line-width 1 :style pressed-button) :foreground "white" :background "#777777")))) `(org-clock-overlay ((,class (:foreground "white" :background "SkyBlue4")))) `(org-code ((,class (:foreground "#007300" :background "#EBF5EB")))) `(org-column ((,class ,column))) `(org-column-title ((,class ,column))) - `(org-date ((,class (:underline t :foreground "#00459E")))) + `(org-date ((,class (:foreground "#00459E" :underline t)))) `(org-default ((,class (:foreground "#333333")))) `(org-dim ((,class (:foreground "#AAAAAA")))) `(org-document-info ((,class (:foreground "#484848")))) @@ -448,14 +490,14 @@ `(org-document-title ((,class (:family "Sans Serif" :height 1.8 :weight bold :foreground "black")))) `(org-done ((,class (:weight bold :box (:line-width 1 :color "#BBBBBB") :foreground "#BBBBBB" :background "#F0F0F0")))) `(org-drawer ((,class (:foreground "light sky blue")))) - `(org-ellipsis ((,class (:underline "#B0EEB0" :foreground "#00BB00")))) + `(org-ellipsis ((,class (:box (:line-width 1 :color "#999999") :foreground "#999999" :background "#FFF8C0" :underline nil)))) ;; #FFEE62 `(org-example ((,class (:foreground "blue" :background "#EAFFEA")))) - `(org-footnote ((,class (:underline t :foreground "#008ED1")))) + `(org-footnote ((,class (:foreground "#008ED1" :underline t)))) `(org-formula ((,class (:foreground "chocolate1")))) - `(org-headline-done ((,class (:height 1.0 :weight bold :strike-through "#BEBEBE" :foreground "#C5C5C5")))) + `(org-headline-done ((,class (:height 1.0 :weight normal :foreground "#999999")))) `(org-hide ((,class (:foreground "#E2E2E2")))) `(org-inlinetask ((,class (:box (:line-width 1 :color "#EBEBEB") :foreground "#777777" :background "#FFFFD6")))) - `(org-latex-and-export-specials ((,class (:foreground "blue")))) + `(org-latex-and-related ((,class ,code-block))) `(org-level-1 ((,class ,ol1))) `(org-level-2 ((,class ,ol2))) `(org-level-3 ((,class ,ol3))) @@ -475,10 +517,10 @@ `(org-scheduled ((,class (:foreground "#333333")))) `(org-scheduled-previously ((,class (:weight bold :foreground "#373737")))) `(org-scheduled-today ((,class (:weight bold :foreground "#4F4A3D" :background "#FFFABE")))) - `(org-sexp-date ((,class (:foreground "purple")))) + `(org-sexp-date ((,class (:foreground "#3774CC")))) `(org-special-keyword ((,class (:weight bold :foreground "#00BB00" :background "#EAFFEA")))) `(org-table ((,class (:foreground "dark green" :background "#EAFFEA")))) - `(org-tag ((,class (:weight normal :slant italic :foreground "#3E6D8E" :background "#E0EAF1")))) + `(org-tag ((,class (:weight normal :slant italic :foreground "#80A0BC")))) `(org-target ((,class ,link))) `(org-time-grid ((,class (:foreground "#CFCFCF")))) `(org-todo ((,class (:weight bold :box (:line-width 1 :color "#D8ABA7") :foreground "#D8ABA7" :background "#FFE6E4")))) @@ -500,8 +542,8 @@ `(paren-face-match ((,class (:foreground "#E2464C" :background "#FFE182")))) `(paren-face-mismatch ((,class (:weight bold :foreground "white" :background "#FF3F3F")))) `(paren-face-no-match ((,class (:weight bold :foreground "white" :background "#FF3F3F")))) - `(pp^L-highlight ((,class (:strike-through t)))) - `(recover-this-file ((,class (:background "white" :background "#FF3F3F")))) + `(recover-this-file ((,class (:weight bold :background "#FF3F3F")))) + `(rng-error ((,class (:weight bold :foreground "red" :background "#FBE3E4")))) `(sh-heredoc ((,class (:foreground "blue" :background "#EEF5FE")))) `(sh-quoted-exec ((,class (:foreground "#FF1493")))) `(shadow ((,class ,shadow))) @@ -510,13 +552,13 @@ `(shell-output-3-face ((,class (:foreground "purple")))) `(shell-output-face ((,class (:foreground "black")))) `(shell-prompt-face ((,class (:weight bold :foreground "yellow")))) - `(show-paren-match ((,class (:foreground "#E2464C" :background "#FFE182")))) + `(show-paren-match ((,class (:foreground "#E2464C" :background "#FFFF00")))) `(show-paren-mismatch ((,class (:weight bold :foreground "white" :background "#FF3F3F")))) `(speedbar-button-face ((,class (:foreground "green4")))) `(speedbar-directory-face ((,class (:foreground "blue4")))) `(speedbar-file-face ((,class (:foreground "cyan4")))) `(speedbar-highlight-face ((,class ,volatile-highlight))) - `(speedbar-selected-face ((,class (:underline t :foreground "red")))) + `(speedbar-selected-face ((,class (:foreground "red" :underline t)))) `(speedbar-tag-face ((,class (:foreground "brown")))) `(svn-status-directory-face ((,class ,directory))) `(svn-status-filename-face ((,class (:weight bold :foreground "#4183C4")))) @@ -552,12 +594,12 @@ `(w3m-anchor ((,class ,link))) `(w3m-arrived-anchor ((,class (:foreground "purple1")))) `(w3m-bitmap-image-face ((,class (:foreground "gray4" :background "green")))) - `(w3m-bold ((,class (:weight bold :foreground "medium sea green")))) - `(w3m-current-anchor ((,class (:weight bold :underline t :foreground "blue")))) - `(w3m-form ((,class (:underline t :foreground "tan1")))) - `(w3m-form-button-face ((,class (:weight bold :underline t :foreground "gray4" :background "light grey")))) - `(w3m-form-button-mouse-face ((,class (:underline t :foreground "light grey" :background "#2B7E2A")))) - `(w3m-form-button-pressed-face ((,class (:weight bold :underline t :foreground "gray4" :background "light grey")))) + `(w3m-bold ((,class (:weight bold :foreground "black")))) + `(w3m-current-anchor ((,class (:weight bold :foreground "blue" :underline t)))) + `(w3m-form ((,class (:foreground "tan1" :underline t)))) + `(w3m-form-button-face ((,class (:weight bold :foreground "gray4" :background "light grey" :underline t)))) + `(w3m-form-button-mouse-face ((,class (:foreground "light grey" :background "#2B7E2A" :underline t)))) + `(w3m-form-button-pressed-face ((,class (:weight bold :foreground "gray4" :background "light grey" :underline t)))) `(w3m-header-line-location-content-face ((,class (:foreground "#7F7F7F":background "#F7F7F7")))) `(w3m-header-line-location-title-face ((,class (:foreground "#2C55B1" :background "#F7F7F7")))) `(w3m-history-current-url-face ((,class (:foreground "lemon chiffon")))) @@ -586,9 +628,19 @@ '(ansi-color-names-vector ["#242424" "#E5786D" "#95E454" "#CAE682" "#8AC6F2" "#333366" "#CCAA8F" "#F6F3E8"])) +;;;###autoload +(when (and (boundp 'custom-theme-load-path) + load-file-name) + ;; add theme folder to `custom-theme-load-path' when installing over MELPA + (add-to-list 'custom-theme-load-path + (file-name-as-directory (file-name-directory load-file-name)))) + (provide-theme 'leuven) ;; Local Variables: +;; time-stamp-format: "%:y%02m%02d.%02H%02M" +;; time-stamp-start: "Version: " +;; time-stamp-end: "$" ;; no-byte-compile: t ;; End: ------------------------------------------------------------ revno: 114491 committer: Jan D. branch nick: trunk timestamp: Tue 2013-10-01 20:22:48 +0200 message: * lisp/term/ns-win.el (ns-initialize-window-system): Set locale-coding-system and default-process-coding-system for darwin only. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-10-01 15:52:53 +0000 +++ lisp/ChangeLog 2013-10-01 18:22:48 +0000 @@ -1,3 +1,8 @@ +2013-10-01 Jan Djärv + + * term/ns-win.el (ns-initialize-window-system): Set locale-coding-system + and default-process-coding-system for darwin only. + 2013-10-01 Stefan Monnier * emacs-lisp/package.el (package-desc): Simplify (bug#15495). === modified file 'lisp/term/ns-win.el' --- lisp/term/ns-win.el 2013-09-29 17:09:39 +0000 +++ lisp/term/ns-win.el 2013-10-01 18:22:48 +0000 @@ -912,12 +912,13 @@ ;; FIXME: This will surely lead to "MODIFIED OUTSIDE CUSTOM" warnings. (menu-bar-mode (if (get-lisp-resource nil "Menus") 1 -1)) - ;; For NS nothing except UTF-8 makes sense. - (add-hook 'before-init-hook - #'(lambda () - (setq locale-coding-system 'utf-8-unix) - (setq default-process-coding-system - '(utf-8-unix . utf-8-unix)))) + ;; For Darwin nothing except UTF-8 makes sense. + (when (eq system-type 'darwin) + (add-hook 'before-init-hook + #'(lambda () + (setq locale-coding-system 'utf-8-unix) + (setq default-process-coding-system + '(utf-8-unix . utf-8-unix))))) ;; OS X Lion introduces PressAndHold, which is unsupported by this port. ;; See this thread for more details: ------------------------------------------------------------ revno: 114490 fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15495 committer: Stefan Monnier branch nick: trunk timestamp: Tue 2013-10-01 11:52:53 -0400 message: * lisp/emacs-lisp/package.el (package-desc): Simplify. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-10-01 15:34:14 +0000 +++ lisp/ChangeLog 2013-10-01 15:52:53 +0000 @@ -1,3 +1,7 @@ +2013-10-01 Stefan Monnier + + * emacs-lisp/package.el (package-desc): Simplify (bug#15495). + 2013-10-01 Mitchel Humpherys (tiny change) * vc/vc-git.el (vc-git-grep): Disable pager. === modified file 'lisp/emacs-lisp/package.el' --- lisp/emacs-lisp/package.el 2013-10-01 01:38:37 +0000 +++ lisp/emacs-lisp/package.el 2013-10-01 15:52:53 +0000 @@ -309,13 +309,12 @@ (kind (plist-get rest-plist :kind)) (archive (plist-get rest-plist :archive)) (extras (let (alist) - (cl-remf rest-plist :kind) - (cl-remf rest-plist :archive) (while rest-plist - (let ((value (cadr rest-plist))) - (when value - (push (cons (car rest-plist) value) - alist))) + (unless (memq (car rest-plist) '(:kind :archive)) + (let ((value (cadr rest-plist))) + (when value + (push (cons (car rest-plist) value) + alist)))) (setq rest-plist (cddr rest-plist))) alist))))) "Structure containing information about an individual package. ------------------------------------------------------------ revno: 114489 author: Mitchel Humpherys committer: Stefan Monnier branch nick: trunk timestamp: Tue 2013-10-01 11:34:14 -0400 message: * lisp/vc/vc-git.el (vc-git-grep): Disable pager. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-10-01 01:38:37 +0000 +++ lisp/ChangeLog 2013-10-01 15:34:14 +0000 @@ -1,3 +1,7 @@ +2013-10-01 Mitchel Humpherys (tiny change) + + * vc/vc-git.el (vc-git-grep): Disable pager. + 2013-10-01 Dmitry Gutov * emacs-lisp/package.el (package-buffer-info, describe-package-1): @@ -9,14 +13,14 @@ 2013-09-30 Rüdiger Sonderfeld - * progmodes/octave.el (inferior-octave-startup-file): Prefer - ~/.emacs.d/init_octave.m. + * progmodes/octave.el (inferior-octave-startup-file): + Prefer ~/.emacs.d/init_octave.m. 2013-09-29 Dmitry Gutov - * emacs-lisp/package.el (package-desc-from-define): Accept - additional arguments as plist, convert it to an alist and store it - in the `extras' slot. + * emacs-lisp/package.el (package-desc-from-define): + Accept additional arguments as plist, convert them to an alist and store + them in the `extras' slot. (package-generate-description-file): Convert extras alist back to plist and append to the `define-package' form arguments. (package--alist-to-plist): New function. @@ -28,8 +32,8 @@ to `package-desc-from-define'. (describe-package-1): Render the homepage button (Bug#13291). - * emacs-lisp/package-x.el (package-upload-buffer-internal): Pass - `extras' slot from `package-desc' to `package-make-ac-desc'. + * emacs-lisp/package-x.el (package-upload-buffer-internal): + Pass `extras' slot from `package-desc' to `package-make-ac-desc'. 2013-09-29 Jan Djärv @@ -181,8 +185,8 @@ 2013-09-20 Xue Fuqiao * vc/pcvs.el (cvs-mode-ignore): - * vc/vc-cvs.el (vc-cvs-ignore, vc-cvs-append-to-ignore): Rename - cvs-append-to-ignore to vc-cvs-append-to-ignore. + * vc/vc-cvs.el (vc-cvs-ignore, vc-cvs-append-to-ignore): + Rename cvs-append-to-ignore to vc-cvs-append-to-ignore. 2013-09-19 Stefan Monnier === modified file 'lisp/vc/vc-git.el' --- lisp/vc/vc-git.el 2013-09-12 05:45:42 +0000 +++ lisp/vc/vc-git.el 2013-10-01 15:34:14 +0000 @@ -1082,7 +1082,7 @@ (setq command nil)) (setq dir (file-name-as-directory (expand-file-name dir))) (setq command - (grep-expand-template "git grep -n -e -- " + (grep-expand-template "git --no-pager grep -n -e -- " regexp files)) (when command (if (equal current-prefix-arg '(4)) ------------------------------------------------------------ revno: 114488 committer: Glenn Morris branch nick: trunk timestamp: Tue 2013-10-01 06:17:41 -0400 message: Auto-commit of loaddefs files. diff: === modified file 'lisp/ldefs-boot.el' --- lisp/ldefs-boot.el 2013-09-01 10:25:27 +0000 +++ lisp/ldefs-boot.el 2013-10-01 10:17:41 +0000 @@ -3,7 +3,7 @@ ;;; Code: -;;;### (autoloads nil "5x5" "play/5x5.el" (20709 26818 907104 0)) +;;;### (autoloads nil "5x5" "play/5x5.el" (21040 17194 398147 0)) ;;; Generated autoloads from play/5x5.el (autoload '5x5 "5x5" "\ @@ -238,8 +238,8 @@ ;;;*** -;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (20991 31656 -;;;;;; 363459 0)) +;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (21032 23080 +;;;;;; 765139 0)) ;;; Generated autoloads from emacs-lisp/advice.el (defvar ad-redefinition-action 'warn "\ @@ -373,6 +373,8 @@ (put 'defadvice 'doc-string-elt '3) +(put 'defadvice 'lisp-indent-function '2) + ;;;*** ;;;### (autoloads nil "align" "align.el" (21012 37798 962028 0)) @@ -897,7 +899,7 @@ ;;;*** -;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (21005 64551 555603 +;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (21032 23080 765139 ;;;;;; 0)) ;;; Generated autoloads from net/ange-ftp.el @@ -1152,7 +1154,7 @@ ;;;*** -;;;### (autoloads nil "arc-mode" "arc-mode.el" (20932 10282 564846 +;;;### (autoloads nil "arc-mode" "arc-mode.el" (21040 17194 398147 ;;;;;; 0)) ;;; Generated autoloads from arc-mode.el @@ -1173,7 +1175,7 @@ ;;;*** -;;;### (autoloads nil "array" "array.el" (20709 26818 907104 0)) +;;;### (autoloads nil "array" "array.el" (21040 17194 398147 0)) ;;; Generated autoloads from array.el (autoload 'array-mode "array" "\ @@ -1491,8 +1493,7 @@ ;;;*** -;;;### (autoloads nil "autoarg" "autoarg.el" (20709 26818 907104 -;;;;;; 0)) +;;;### (autoloads nil "autoarg" "autoarg.el" (21056 5418 85093 0)) ;;; Generated autoloads from autoarg.el (defvar autoarg-mode nil "\ @@ -1563,7 +1564,7 @@ ;;;*** -;;;### (autoloads nil "autoinsert" "autoinsert.el" (20950 40231 187426 +;;;### (autoloads nil "autoinsert" "autoinsert.el" (21056 5418 85093 ;;;;;; 0)) ;;; Generated autoloads from autoinsert.el @@ -1652,7 +1653,7 @@ ;;;*** -;;;### (autoloads nil "autorevert" "autorevert.el" (20987 34598 970563 +;;;### (autoloads nil "autorevert" "autorevert.el" (21041 38058 75002 ;;;;;; 0)) ;;; Generated autoloads from autorevert.el @@ -1741,7 +1742,7 @@ ;;;*** -;;;### (autoloads nil "avoid" "avoid.el" (21024 28968 738399 0)) +;;;### (autoloads nil "avoid" "avoid.el" (21028 26023 305371 0)) ;;; Generated autoloads from avoid.el (defvar mouse-avoidance-mode nil "\ @@ -1872,8 +1873,8 @@ ;;;*** -;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (20937 28198 -;;;;;; 475168 0)) +;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (21036 20141 +;;;;;; 396718 0)) ;;; Generated autoloads from textmodes/bibtex.el (autoload 'bibtex-initialize "bibtex" "\ @@ -2000,8 +2001,8 @@ ;;;*** -;;;### (autoloads nil "blackbox" "play/blackbox.el" (20709 26818 -;;;;;; 907104 0)) +;;;### (autoloads nil "blackbox" "play/blackbox.el" (21040 17194 +;;;;;; 398147 0)) ;;; Generated autoloads from play/blackbox.el (autoload 'blackbox "blackbox" "\ @@ -2120,7 +2121,7 @@ ;;;*** -;;;### (autoloads nil "bookmark" "bookmark.el" (20998 4934 952905 +;;;### (autoloads nil "bookmark" "bookmark.el" (21040 17194 398147 ;;;;;; 0)) ;;; Generated autoloads from bookmark.el (define-key ctl-x-r-map "b" 'bookmark-jump) @@ -2314,8 +2315,8 @@ ;;;*** -;;;### (autoloads nil "browse-url" "net/browse-url.el" (20984 58408 -;;;;;; 354075 0)) +;;;### (autoloads nil "browse-url" "net/browse-url.el" (21032 23080 +;;;;;; 765139 0)) ;;; Generated autoloads from net/browse-url.el (defvar browse-url-browser-function 'browse-url-default-browser "\ @@ -2670,7 +2671,7 @@ ;;;*** -;;;### (autoloads nil "bubbles" "play/bubbles.el" (20791 9657 561026 +;;;### (autoloads nil "bubbles" "play/bubbles.el" (21041 38058 75002 ;;;;;; 0)) ;;; Generated autoloads from play/bubbles.el @@ -2871,7 +2872,7 @@ ;;;*** -;;;### (autoloads nil "calc" "calc/calc.el" (20998 4934 952905 0)) +;;;### (autoloads nil "calc" "calc/calc.el" (21040 17194 398147 0)) ;;; Generated autoloads from calc/calc.el (define-key ctl-x-map "*" 'calc-dispatch) @@ -2966,7 +2967,7 @@ ;;;*** -;;;### (autoloads nil "calculator" "calculator.el" (21024 28968 738399 +;;;### (autoloads nil "calculator" "calculator.el" (21031 2230 839140 ;;;;;; 0)) ;;; Generated autoloads from calculator.el @@ -3087,8 +3088,8 @@ ;;;*** -;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (21023 -;;;;;; 33771 640838 743000)) +;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (21063 +;;;;;; 65063 266334 0)) ;;; Generated autoloads from progmodes/cc-engine.el (autoload 'c-guess-basic-syntax "cc-engine" "\ @@ -3197,8 +3198,8 @@ ;;;*** -;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (21022 34805 -;;;;;; 23711 194000)) +;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (21040 17194 +;;;;;; 398147 0)) ;;; Generated autoloads from progmodes/cc-mode.el (autoload 'c-initialize-cc-mode "cc-mode" "\ @@ -3335,7 +3336,6 @@ (add-to-list 'interpreter-mode-alist '("mawk" . awk-mode)) (add-to-list 'interpreter-mode-alist '("nawk" . awk-mode)) (add-to-list 'interpreter-mode-alist '("gawk" . awk-mode)) - (autoload 'awk-mode "cc-mode" "Major mode for editing AWK code." t) (autoload 'awk-mode "cc-mode" "\ Major mode for editing AWK code. @@ -3678,8 +3678,8 @@ ;;;*** -;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (21021 52778 -;;;;;; 175609 0)) +;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (21032 23080 +;;;;;; 765139 0)) ;;; Generated autoloads from emacs-lisp/cconv.el (autoload 'cconv-closure-convert "cconv" "\ @@ -3734,8 +3734,8 @@ ;;;*** -;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (20895 15912 -;;;;;; 444844 0)) +;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (21049 14338 +;;;;;; 391345 0)) ;;; Generated autoloads from emacs-lisp/chart.el (push (purecopy '(chart 0 2)) package--builtin-versions) ;;;*** @@ -3996,7 +3996,7 @@ ;;;*** -;;;### (autoloads nil "chistory" "chistory.el" (20709 26818 907104 +;;;### (autoloads nil "chistory" "chistory.el" (21040 17194 398147 ;;;;;; 0)) ;;; Generated autoloads from chistory.el @@ -4206,7 +4206,7 @@ ;;;*** -;;;### (autoloads nil "comint" "comint.el" (21024 28968 738399 0)) +;;;### (autoloads nil "comint" "comint.el" (21040 17194 398147 0)) ;;; Generated autoloads from comint.el (defvar comint-output-filter-functions '(ansi-color-process-output comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\ @@ -4729,8 +4729,8 @@ ;;;*** -;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (20709 -;;;;;; 26818 907104 0)) +;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (21041 +;;;;;; 38058 75002 0)) ;;; Generated autoloads from emacs-lisp/copyright.el (put 'copyright-at-end-flag 'safe-local-variable 'booleanp) (put 'copyright-names-regexp 'safe-local-variable 'stringp) @@ -4768,8 +4768,8 @@ ;;;*** -;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (20929 -;;;;;; 34089 117790 0)) +;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (21041 +;;;;;; 38058 75002 0)) ;;; Generated autoloads from progmodes/cperl-mode.el (put 'cperl-indent-level 'safe-local-variable 'integerp) (put 'cperl-brace-offset 'safe-local-variable 'integerp) @@ -5012,7 +5012,7 @@ ;;;*** -;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (20825 24233 991089 +;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (21034 64808 616539 ;;;;;; 0)) ;;; Generated autoloads from emacs-lisp/crm.el @@ -5588,8 +5588,8 @@ ;;;*** -;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (20938 49065 -;;;;;; 383398 0)) +;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (21040 17194 +;;;;;; 398147 0)) ;;; Generated autoloads from cedet/data-debug.el (autoload 'data-debug-new-buffer "data-debug" "\ @@ -5599,7 +5599,7 @@ ;;;*** -;;;### (autoloads nil "dbus" "net/dbus.el" (20900 33838 319219 0)) +;;;### (autoloads nil "dbus" "net/dbus.el" (21032 23080 765139 0)) ;;; Generated autoloads from net/dbus.el (autoload 'dbus-handle-event "dbus" "\ @@ -5739,8 +5739,8 @@ ;;;*** -;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (21005 64551 -;;;;;; 555603 0)) +;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (21040 17194 +;;;;;; 398147 0)) ;;; Generated autoloads from emacs-lisp/debug.el (setq debugger 'debug) @@ -6327,7 +6327,7 @@ ;;;*** -;;;### (autoloads nil "dired" "dired.el" (20999 25770 522517 0)) +;;;### (autoloads nil "dired" "dired.el" (21044 14392 310114 433000)) ;;; Generated autoloads from dired.el (defvar dired-listing-switches (purecopy "-al") "\ @@ -6681,7 +6681,7 @@ ;;;*** -;;;### (autoloads nil "doc-view" "doc-view.el" (20992 52525 458637 +;;;### (autoloads nil "doc-view" "doc-view.el" (21061 23341 46416 ;;;;;; 0)) ;;; Generated autoloads from doc-view.el @@ -7492,8 +7492,8 @@ ;;;*** -;;;### (autoloads nil "echistory" "echistory.el" (20709 26818 907104 -;;;;;; 0)) +;;;### (autoloads nil "echistory" "echistory.el" (21040 46773 613700 +;;;;;; 854000)) ;;; Generated autoloads from echistory.el (autoload 'Electric-command-history-redo-expression "echistory" "\ @@ -7617,7 +7617,7 @@ ;;;*** -;;;### (autoloads nil "ediff" "vc/ediff.el" (20992 52525 458637 0)) +;;;### (autoloads nil "ediff" "vc/ediff.el" (21041 38058 75002 0)) ;;; Generated autoloads from vc/ediff.el (push (purecopy '(ediff 2 81 4)) package--builtin-versions) (autoload 'ediff-files "ediff" "\ @@ -7899,8 +7899,8 @@ ;;;*** -;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (20893 60586 -;;;;;; 188550 0)) +;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (21032 23080 +;;;;;; 765139 0)) ;;; Generated autoloads from vc/ediff-mult.el (autoload 'ediff-show-registry "ediff-mult" "\ @@ -7912,8 +7912,8 @@ ;;;*** -;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (20992 52525 -;;;;;; 458637 0)) +;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (21032 23080 +;;;;;; 765139 0)) ;;; Generated autoloads from vc/ediff-util.el (autoload 'ediff-toggle-multiframe "ediff-util" "\ @@ -8035,8 +8035,8 @@ ;;;*** -;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (20930 5097 423575 -;;;;;; 701000)) +;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (21051 23094 +;;;;;; 730130 282000)) ;;; Generated autoloads from emacs-lisp/eieio.el (push (purecopy '(eieio 1 4)) package--builtin-versions) ;;;*** @@ -8103,8 +8103,8 @@ ;;;*** -;;;### (autoloads nil "eldoc" "emacs-lisp/eldoc.el" (21024 28968 -;;;;;; 738399 0)) +;;;### (autoloads nil "eldoc" "emacs-lisp/eldoc.el" (21041 38058 +;;;;;; 75002 0)) ;;; Generated autoloads from emacs-lisp/eldoc.el (defvar eldoc-minor-mode-string (purecopy " ElDoc") "\ @@ -8159,7 +8159,7 @@ ;;;*** -;;;### (autoloads nil "electric" "electric.el" (20929 34089 117790 +;;;### (autoloads nil "electric" "electric.el" (21056 5418 85093 ;;;;;; 0)) ;;; Generated autoloads from electric.el @@ -8345,8 +8345,8 @@ ;;;*** -;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (20759 33211 -;;;;;; 414988 0)) +;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (21048 11307 +;;;;;; 937592 0)) ;;; Generated autoloads from mail/emacsbug.el (autoload 'report-emacs-bug "emacsbug" "\ @@ -8357,7 +8357,7 @@ ;;;*** -;;;### (autoloads nil "emerge" "vc/emerge.el" (20992 52525 458637 +;;;### (autoloads nil "emerge" "vc/emerge.el" (21032 23080 765139 ;;;;;; 0)) ;;; Generated autoloads from vc/emerge.el @@ -8454,7 +8454,7 @@ ;;;*** -;;;### (autoloads nil "epa" "epa.el" (20978 19624 657047 0)) +;;;### (autoloads nil "epa" "epa.el" (21034 64808 616539 0)) ;;; Generated autoloads from epa.el (autoload 'epa-list-keys "epa" "\ @@ -8757,7 +8757,7 @@ ;;;*** -;;;### (autoloads nil "epg" "epg.el" (21022 27213 317995 0)) +;;;### (autoloads nil "epg" "epg.el" (21034 64808 616539 0)) ;;; Generated autoloads from epg.el (push (purecopy '(epg 1 0 0)) package--builtin-versions) (autoload 'epg-make-context "epg" "\ @@ -8788,7 +8788,7 @@ ;;;*** -;;;### (autoloads nil "erc" "erc/erc.el" (21013 58662 278539 0)) +;;;### (autoloads nil "erc" "erc/erc.el" (21053 29224 547064 0)) ;;; Generated autoloads from erc/erc.el (push (purecopy '(erc 5 3)) package--builtin-versions) (autoload 'erc-select-read-args "erc" "\ @@ -8843,8 +8843,8 @@ ;;;*** -;;;### (autoloads nil "erc-button" "erc/erc-button.el" (21013 58662 -;;;;;; 278539 0)) +;;;### (autoloads nil "erc-button" "erc/erc-button.el" (21050 53033 +;;;;;; 774595 0)) ;;; Generated autoloads from erc/erc-button.el (autoload 'erc-button-mode "erc-button" nil t) @@ -8895,7 +8895,7 @@ ;;;*** ;;;### (autoloads nil "erc-desktop-notifications" "erc/erc-desktop-notifications.el" -;;;;;; (20874 65006 176325 548000)) +;;;;;; (21042 58928 39127 0)) ;;; Generated autoloads from erc/erc-desktop-notifications.el (autoload 'erc-notifications-mode "erc-desktop-notifications" "" t) @@ -9023,7 +9023,7 @@ (push (purecopy '(erc-lang 1 0 0)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "erc-list" "erc/erc-list.el" (21013 58662 278539 +;;;### (autoloads nil "erc-list" "erc/erc-list.el" (21050 53033 774595 ;;;;;; 0)) ;;; Generated autoloads from erc/erc-list.el (push (purecopy '(erc-list 0 1)) package--builtin-versions) (autoload 'erc-list-mode "erc-list") @@ -9300,7 +9300,7 @@ ;;;*** -;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (20998 4934 952905 +;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (21048 11307 937592 ;;;;;; 0)) ;;; Generated autoloads from emacs-lisp/ert.el @@ -9379,20 +9379,18 @@ ;;;*** -;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (20992 52525 -;;;;;; 458637 0)) +;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (21048 47760 +;;;;;; 436258 0)) ;;; Generated autoloads from eshell/esh-mode.el (autoload 'eshell-mode "esh-mode" "\ Emacs shell interactive mode. -\\{eshell-mode-map} - -\(fn)" nil nil) +\(fn)" t nil) ;;;*** -;;;### (autoloads nil "eshell" "eshell/eshell.el" (20893 60586 188550 +;;;### (autoloads nil "eshell" "eshell/eshell.el" (21042 9718 407372 ;;;;;; 0)) ;;; Generated autoloads from eshell/eshell.el (push (purecopy '(eshell 2 4 2)) package--builtin-versions) @@ -9905,7 +9903,7 @@ ;;;*** -;;;### (autoloads nil "eudc" "net/eudc.el" (20791 9657 561026 0)) +;;;### (autoloads nil "eudc" "net/eudc.el" (21040 17194 398147 0)) ;;; Generated autoloads from net/eudc.el (autoload 'eudc-set-server "eudc" "\ @@ -10012,8 +10010,8 @@ ;;;*** -;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (20791 -;;;;;; 9657 561026 0)) +;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (21040 +;;;;;; 17194 398147 0)) ;;; Generated autoloads from net/eudc-hotlist.el (autoload 'eudc-edit-hotlist "eudc-hotlist" "\ @@ -10050,7 +10048,7 @@ ;;;*** -;;;### (autoloads nil "eww" "net/eww.el" (21022 41153 91581 355000)) +;;;### (autoloads nil "eww" "net/eww.el" (21049 14338 391345 0)) ;;; Generated autoloads from net/eww.el (autoload 'eww "eww" "\ @@ -10072,8 +10070,8 @@ ;;;*** -;;;### (autoloads nil "executable" "progmodes/executable.el" (20709 -;;;;;; 26818 907104 0)) +;;;### (autoloads nil "executable" "progmodes/executable.el" (21041 +;;;;;; 38058 75002 0)) ;;; Generated autoloads from progmodes/executable.el (autoload 'executable-command-find-posix-p "executable" "\ @@ -10989,7 +10987,7 @@ ;;;*** -;;;### (autoloads nil "finder" "finder.el" (20925 37032 237257 0)) +;;;### (autoloads nil "finder" "finder.el" (21031 2230 839140 0)) ;;; Generated autoloads from finder.el (push (purecopy '(finder 1 0)) package--builtin-versions) (autoload 'finder-list-keywords "finder" "\ @@ -11154,7 +11152,7 @@ (push (purecopy '(foldout 1 10)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "follow" "follow.el" (21005 64551 555603 0)) +;;;### (autoloads nil "follow" "follow.el" (21049 14338 391345 0)) ;;; Generated autoloads from follow.el (autoload 'turn-on-follow-mode "follow" "\ @@ -11571,8 +11569,8 @@ (push (purecopy '(gamegrid 1 2)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (20992 52525 -;;;;;; 458637 0)) +;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (21042 58928 +;;;;;; 39127 0)) ;;; Generated autoloads from progmodes/gdb-mi.el (defvar gdb-enable-debug nil "\ @@ -11849,8 +11847,8 @@ ;;;*** -;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (20709 26818 -;;;;;; 907104 0)) +;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (21048 47760 +;;;;;; 436258 0)) ;;; Generated autoloads from gnus/gnus-agent.el (autoload 'gnus-unplugged "gnus-agent" "\ @@ -11934,14 +11932,14 @@ (autoload 'gnus-agent-regenerate "gnus-agent" "\ Regenerate all agent covered files. -If CLEAN, obsolete (ignore). +CLEAN is obsolete and ignored. \(fn &optional CLEAN REREAD)" t nil) ;;;*** -;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (20977 54298 -;;;;;; 858063 0)) +;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (21040 17194 +;;;;;; 398147 0)) ;;; Generated autoloads from gnus/gnus-art.el (autoload 'gnus-article-prepare-display "gnus-art" "\ @@ -11951,8 +11949,8 @@ ;;;*** -;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (20709 -;;;;;; 26818 907104 0)) +;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (21040 +;;;;;; 17194 398147 0)) ;;; Generated autoloads from gnus/gnus-bookmark.el (autoload 'gnus-bookmark-set "gnus-bookmark" "\ @@ -12154,8 +12152,8 @@ ;;;*** -;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (20988 22031 -;;;;;; 837044 0)) +;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (21040 17194 +;;;;;; 398147 0)) ;;; Generated autoloads from gnus/gnus-group.el (autoload 'gnus-fetch-group "gnus-group" "\ @@ -12172,8 +12170,8 @@ ;;;*** -;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (20874 65006 -;;;;;; 672942 217000)) +;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (21042 58928 +;;;;;; 39127 0)) ;;; Generated autoloads from gnus/gnus-html.el (autoload 'gnus-article-html "gnus-html" "\ @@ -12188,8 +12186,8 @@ ;;;*** -;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (20709 26818 -;;;;;; 907104 0)) +;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (21040 17194 +;;;;;; 398147 0)) ;;; Generated autoloads from gnus/gnus-kill.el (defalias 'gnus-batch-kill 'gnus-batch-score) @@ -12507,8 +12505,8 @@ ;;;*** -;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (20893 60586 -;;;;;; 188550 0)) +;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (21042 58928 +;;;;;; 39127 0)) ;;; Generated autoloads from gnus/gnus-spec.el (autoload 'gnus-update-format "gnus-spec" "\ @@ -12529,8 +12527,8 @@ ;;;*** -;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (20984 58408 -;;;;;; 354075 0)) +;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (21048 47760 +;;;;;; 436258 0)) ;;; Generated autoloads from gnus/gnus-sum.el (autoload 'gnus-summary-bookmark-jump "gnus-sum" "\ @@ -12568,7 +12566,7 @@ ;;;*** -;;;### (autoloads nil "gnutls" "net/gnutls.el" (20998 4934 952905 +;;;### (autoloads nil "gnutls" "net/gnutls.el" (21049 14338 391345 ;;;;;; 0)) ;;; Generated autoloads from net/gnutls.el @@ -12848,7 +12846,7 @@ ;;;*** -;;;### (autoloads nil "gud" "progmodes/gud.el" (20895 15912 444844 +;;;### (autoloads nil "gud" "progmodes/gud.el" (21049 14338 391345 ;;;;;; 0)) ;;; Generated autoloads from progmodes/gud.el @@ -12937,7 +12935,7 @@ ;;;*** -;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (21002 1963 769129 +;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (21031 51082 798722 ;;;;;; 0)) ;;; Generated autoloads from emacs-lisp/gv.el @@ -13349,7 +13347,7 @@ ;;;*** -;;;### (autoloads nil "help-mode" "help-mode.el" (20999 25770 522517 +;;;### (autoloads nil "help-mode" "help-mode.el" (21048 47760 436258 ;;;;;; 0)) ;;; Generated autoloads from help-mode.el @@ -14333,8 +14331,8 @@ ;;;*** -;;;### (autoloads nil "ibuffer" "ibuffer.el" (20999 25770 522517 -;;;;;; 0)) +;;;### (autoloads nil "ibuffer" "ibuffer.el" (21045 35440 130128 +;;;;;; 609000)) ;;; Generated autoloads from ibuffer.el (autoload 'ibuffer-list-buffers "ibuffer" "\ @@ -14426,7 +14424,7 @@ ;;;*** -;;;### (autoloads nil "icomplete" "icomplete.el" (20992 52525 458637 +;;;### (autoloads nil "icomplete" "icomplete.el" (21047 23047 743647 ;;;;;; 0)) ;;; Generated autoloads from icomplete.el @@ -14930,7 +14928,7 @@ ;;;*** -;;;### (autoloads nil "image" "image.el" (21005 64551 555603 0)) +;;;### (autoloads nil "image" "image.el" (21049 14338 391345 0)) ;;; Generated autoloads from image.el (autoload 'image-type-from-data "image" "\ @@ -15559,7 +15557,7 @@ ;;;*** -;;;### (autoloads nil "info" "info.el" (20992 52525 458637 0)) +;;;### (autoloads nil "info" "info.el" (21040 17194 398147 0)) ;;; Generated autoloads from info.el (defcustom Info-default-directory-list (let* ((config-dir (file-name-as-directory (or (and (featurep 'ns) (let ((dir (expand-file-name "../info" data-directory))) (if (file-directory-p dir) dir))) configure-info-directory))) (prefixes (prune-directory-list '("/usr/local/" "/usr/" "/opt/" "/"))) (suffixes '("share/" "" "gnu/" "gnu/lib/" "gnu/lib/emacs/" "emacs/" "lib/" "lib/emacs/")) (standard-info-dirs (apply #'nconc (mapcar (lambda (pfx) (let ((dirs (mapcar (lambda (sfx) (concat pfx sfx "info/")) suffixes))) (prune-directory-list dirs))) prefixes))) (dirs (if (member config-dir standard-info-dirs) (nconc standard-info-dirs (list config-dir)) (cons config-dir standard-info-dirs)))) (if (not (eq system-type 'windows-nt)) dirs (let* ((instdir (file-name-directory invocation-directory)) (dir1 (expand-file-name "../info/" instdir)) (dir2 (expand-file-name "../../../info/" instdir))) (cond ((file-exists-p dir1) (append dirs (list dir1))) ((file-exists-p dir2) (append dirs (list dir2))) (t dirs))))) "\ @@ -16093,8 +16091,8 @@ ;;;*** -;;;### (autoloads nil "ispell" "textmodes/ispell.el" (20992 52525 -;;;;;; 458637 0)) +;;;### (autoloads nil "ispell" "textmodes/ispell.el" (21062 44200 +;;;;;; 584479 0)) ;;; Generated autoloads from textmodes/ispell.el (put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive)))) @@ -16259,7 +16257,7 @@ \(fn)" t nil) (autoload 'ispell-complete-word "ispell" "\ -Try to complete the word before or under point (see `lookup-words'). +Try to complete the word before or under point. If optional INTERIOR-FRAG is non-nil then the word may be a character sequence inside of a word. @@ -16572,7 +16570,7 @@ ;;;*** -;;;### (autoloads nil "kmacro" "kmacro.el" (20830 42150 757296 0)) +;;;### (autoloads nil "kmacro" "kmacro.el" (21056 5418 85093 0)) ;;; Generated autoloads from kmacro.el (global-set-key "\C-x(" 'kmacro-start-macro) (global-set-key "\C-x)" 'kmacro-end-macro) @@ -16698,8 +16696,8 @@ ;;;*** -;;;### (autoloads nil "landmark" "play/landmark.el" (20992 52525 -;;;;;; 458637 0)) +;;;### (autoloads nil "landmark" "play/landmark.el" (21040 47148 +;;;;;; 604043 521000)) ;;; Generated autoloads from play/landmark.el (defalias 'landmark-repeat 'landmark-test-run) @@ -16852,7 +16850,7 @@ ;;;*** -;;;### (autoloads nil "life" "play/life.el" (20998 4934 952905 0)) +;;;### (autoloads nil "life" "play/life.el" (21048 47760 436258 0)) ;;; Generated autoloads from play/life.el (autoload 'life "life" "\ @@ -16933,7 +16931,7 @@ ;;;*** -;;;### (autoloads nil "locate" "locate.el" (20763 30266 231060 0)) +;;;### (autoloads nil "locate" "locate.el" (21040 17194 398147 0)) ;;; Generated autoloads from locate.el (defvar locate-ls-subdir-switches (purecopy "-al") "\ @@ -17123,7 +17121,7 @@ ;;;*** -;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (20870 12718 549931 +;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (21048 11307 937592 ;;;;;; 0)) ;;; Generated autoloads from ls-lisp.el @@ -17632,7 +17630,7 @@ ;;;*** -;;;### (autoloads nil "man" "man.el" (20888 42662 256824 0)) +;;;### (autoloads nil "man" "man.el" (21040 17194 398147 0)) ;;; Generated autoloads from man.el (defalias 'manual-entry 'man) @@ -17741,7 +17739,7 @@ (push (purecopy '(md4 1 0)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "message" "gnus/message.el" (20986 60038 720063 +;;;### (autoloads nil "message" "gnus/message.el" (21048 11307 937592 ;;;;;; 0)) ;;; Generated autoloads from gnus/message.el @@ -18156,7 +18154,7 @@ ;;;*** -;;;### (autoloads nil "midnight" "midnight.el" (20709 26818 907104 +;;;### (autoloads nil "midnight" "midnight.el" (21058 47149 742317 ;;;;;; 0)) ;;; Generated autoloads from midnight.el @@ -18456,7 +18454,7 @@ ;;;*** -;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (20986 60038 720063 +;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (21042 58928 39127 ;;;;;; 0)) ;;; Generated autoloads from gnus/mml2015.el @@ -18613,7 +18611,7 @@ ;;;*** -;;;### (autoloads nil "mpc" "mpc.el" (20998 4934 952905 0)) +;;;### (autoloads nil "mpc" "mpc.el" (21049 14338 391345 0)) ;;; Generated autoloads from mpc.el (autoload 'mpc "mpc" "\ @@ -18623,7 +18621,7 @@ ;;;*** -;;;### (autoloads nil "mpuz" "play/mpuz.el" (20709 26818 907104 0)) +;;;### (autoloads nil "mpuz" "play/mpuz.el" (21040 17194 398147 0)) ;;; Generated autoloads from play/mpuz.el (autoload 'mpuz "mpuz" "\ @@ -19190,8 +19188,8 @@ ;;;*** -;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (20709 -;;;;;; 26818 907104 0)) +;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (21040 +;;;;;; 17194 398147 0)) ;;; Generated autoloads from net/newst-treeview.el (autoload 'newsticker-treeview "newst-treeview" "\ @@ -19401,8 +19399,8 @@ ;;;*** -;;;### (autoloads nil "octave" "progmodes/octave.el" (20932 10282 -;;;;;; 564846 0)) +;;;### (autoloads nil "octave" "progmodes/octave.el" (21065 20391 +;;;;;; 959557 0)) ;;; Generated autoloads from progmodes/octave.el (autoload 'octave-mode "octave" "\ @@ -20155,8 +20153,8 @@ ;;;*** -;;;### (autoloads nil "package" "emacs-lisp/package.el" (21022 27213 -;;;;;; 317995 0)) +;;;### (autoloads nil "package" "emacs-lisp/package.el" (21066 41257 +;;;;;; 365840 0)) ;;; Generated autoloads from emacs-lisp/package.el (push (purecopy '(package 1 0 1)) package--builtin-versions) (defvar package-enable-at-startup t "\ @@ -20604,7 +20602,7 @@ ;;;*** -;;;### (autoloads nil "pcvs" "vc/pcvs.el" (20983 37555 279226 0)) +;;;### (autoloads nil "pcvs" "vc/pcvs.el" (21052 8364 417872 0)) ;;; Generated autoloads from vc/pcvs.el (autoload 'cvs-checkout "pcvs" "\ @@ -20936,7 +20934,7 @@ ;;;*** -;;;### (autoloads nil "printing" "printing.el" (20975 43430 521692 +;;;### (autoloads nil "printing" "printing.el" (21032 23080 765139 ;;;;;; 0)) ;;; Generated autoloads from printing.el (push (purecopy '(printing 6 9 3)) package--builtin-versions) @@ -21542,7 +21540,7 @@ ;;;*** -;;;### (autoloads nil "profiler" "profiler.el" (20932 10282 564846 +;;;### (autoloads nil "profiler" "profiler.el" (21040 17194 398147 ;;;;;; 0)) ;;; Generated autoloads from profiler.el @@ -21868,13 +21866,13 @@ (push (purecopy '(pulse 1 0)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "python" "progmodes/python.el" (21020 31917 -;;;;;; 145164 0)) +;;;### (autoloads nil "python" "progmodes/python.el" (21040 17194 +;;;;;; 398147 0)) ;;; Generated autoloads from progmodes/python.el (push (purecopy '(python 0 24 2)) package--builtin-versions) (add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode)) -(add-to-list 'interpreter-mode-alist (cons (purecopy "python") 'python-mode)) +(add-to-list 'interpreter-mode-alist (cons (purecopy "python[0-9.]*") 'python-mode)) (autoload 'run-python "python" "\ Run an inferior Python process. @@ -21923,8 +21921,8 @@ ;;;*** -;;;### (autoloads nil "quail" "international/quail.el" (20998 4934 -;;;;;; 952905 0)) +;;;### (autoloads nil "quail" "international/quail.el" (21061 23341 +;;;;;; 46416 0)) ;;; Generated autoloads from international/quail.el (autoload 'quail-title "quail" "\ @@ -22153,7 +22151,7 @@ ;;;*** -;;;### (autoloads nil "quickurl" "net/quickurl.el" (20799 169 640767 +;;;### (autoloads nil "quickurl" "net/quickurl.el" (21040 17194 398147 ;;;;;; 0)) ;;; Generated autoloads from net/quickurl.el @@ -22805,7 +22803,7 @@ ;;;*** -;;;### (autoloads nil "reveal" "reveal.el" (20709 26818 907104 0)) +;;;### (autoloads nil "reveal" "reveal.el" (21041 38058 75002 0)) ;;; Generated autoloads from reveal.el (autoload 'reveal-mode "reveal" "\ @@ -22901,8 +22899,8 @@ ;;;*** -;;;### (autoloads nil "rmail" "mail/rmail.el" (20992 52525 458637 -;;;;;; 0)) +;;;### (autoloads nil "rmail" "mail/rmail.el" (21049 32304 81561 +;;;;;; 723000)) ;;; Generated autoloads from mail/rmail.el (defvar rmail-file-name (purecopy "~/RMAIL") "\ @@ -23349,8 +23347,8 @@ ;;;*** -;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (21024 -;;;;;; 28968 738399 0)) +;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (21046 +;;;;;; 55978 585230 0)) ;;; Generated autoloads from progmodes/ruby-mode.el (push (purecopy '(ruby-mode 1 2)) package--builtin-versions) (autoload 'ruby-mode "ruby-mode" "\ @@ -23707,8 +23705,8 @@ (push (purecopy '(sasl 1 0)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "savehist" "savehist.el" (20709 26818 907104 -;;;;;; 0)) +;;;### (autoloads nil "savehist" "savehist.el" (21040 42923 330142 +;;;;;; 838000)) ;;; Generated autoloads from savehist.el (push (purecopy '(savehist 24)) package--builtin-versions) (defvar savehist-mode nil "\ @@ -23781,8 +23779,8 @@ ;;;*** -;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (20709 26818 -;;;;;; 907104 0)) +;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (21040 17194 +;;;;;; 398147 0)) ;;; Generated autoloads from gnus/score-mode.el (autoload 'gnus-score-mode "score-mode" "\ @@ -23846,8 +23844,8 @@ ;;;*** -;;;### (autoloads nil "semantic" "cedet/semantic.el" (20908 27948 -;;;;;; 216644 0)) +;;;### (autoloads nil "semantic" "cedet/semantic.el" (21052 33668 +;;;;;; 690120 156000)) ;;; Generated autoloads from cedet/semantic.el (push (purecopy '(semantic 2 2)) package--builtin-versions) (defvar semantic-default-submodes '(global-semantic-idle-scheduler-mode global-semanticdb-minor-mode) "\ @@ -24358,8 +24356,8 @@ ;;;*** -;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (21022 -;;;;;; 40320 762131 34000)) +;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (21039 +;;;;;; 31945 0 0)) ;;; Generated autoloads from progmodes/sh-script.el (push (purecopy '(sh-script 2 0 6)) package--builtin-versions)(put 'sh-shell 'safe-local-variable 'symbolp) @@ -24511,7 +24509,7 @@ ;;;*** -;;;### (autoloads nil "shell" "shell.el" (20992 52525 458637 0)) +;;;### (autoloads nil "shell" "shell.el" (21041 38058 75002 0)) ;;; Generated autoloads from shell.el (defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\ @@ -24559,7 +24557,7 @@ ;;;*** -;;;### (autoloads nil "shr" "net/shr.el" (21007 19880 17663 0)) +;;;### (autoloads nil "shr" "net/shr.el" (21049 14338 391345 0)) ;;; Generated autoloads from net/shr.el (autoload 'shr-insert-document "shr" "\ @@ -24836,7 +24834,7 @@ ;;;*** -;;;### (autoloads nil "snake" "play/snake.el" (20709 26818 907104 +;;;### (autoloads nil "snake" "play/snake.el" (21040 17194 398147 ;;;;;; 0)) ;;; Generated autoloads from play/snake.el @@ -25241,7 +25239,7 @@ ;;;*** -;;;### (autoloads nil "spook" "play/spook.el" (20709 26818 907104 +;;;### (autoloads nil "spook" "play/spook.el" (21041 38058 75002 ;;;;;; 0)) ;;; Generated autoloads from play/spook.el @@ -25727,7 +25725,7 @@ ;;;*** ;;;### (autoloads nil "srecode/srt-mode" "cedet/srecode/srt-mode.el" -;;;;;; (20813 33065 721081 0)) +;;;;;; (21048 47760 436258 0)) ;;; Generated autoloads from cedet/srecode/srt-mode.el (autoload 'srecode-template-mode "srecode/srt-mode" "\ @@ -26790,7 +26788,7 @@ ;;;*** -;;;### (autoloads nil "term" "term.el" (20921 39978 248467 0)) +;;;### (autoloads nil "term" "term.el" (21049 14338 391345 0)) ;;; Generated autoloads from term.el (autoload 'make-term "term" "\ @@ -28023,8 +28021,8 @@ ;;;*** -;;;### (autoloads nil "tpu-edt" "emulation/tpu-edt.el" (20884 7264 -;;;;;; 412929 442000)) +;;;### (autoloads nil "tpu-edt" "emulation/tpu-edt.el" (21041 38058 +;;;;;; 75002 0)) ;;; Generated autoloads from emulation/tpu-edt.el (push (purecopy '(tpu-edt 4 5)) package--builtin-versions) (defvar tpu-edt-mode nil "\ @@ -28141,8 +28139,7 @@ ;;;*** -;;;### (autoloads nil "tramp" "net/tramp.el" (21024 28968 738399 -;;;;;; 0)) +;;;### (autoloads nil "tramp" "net/tramp.el" (21042 58928 39127 0)) ;;; Generated autoloads from net/tramp.el (defvar tramp-mode t "\ @@ -28157,8 +28154,7 @@ It can have the following values: 'ftp -- Ange-FTP respective EFS like syntax (GNU Emacs default) - 'sep -- Syntax as defined for XEmacs (not available yet for GNU Emacs) - 'url -- URL-like syntax.") + 'sep -- Syntax as defined for XEmacs.") (custom-autoload 'tramp-syntax "tramp" t) @@ -28174,11 +28170,7 @@ XEmacs uses a separate filename syntax for Tramp and EFS. See `tramp-file-name-structure' for more explanations.") -(defconst tramp-file-name-regexp-url "\\`/[^/|:]+://" "\ -Value for `tramp-file-name-regexp' for URL-like remoting. -See `tramp-file-name-structure' for more explanations.") - -(defconst tramp-file-name-regexp (cond ((equal tramp-syntax 'ftp) tramp-file-name-regexp-unified) ((equal tramp-syntax 'sep) tramp-file-name-regexp-separate) ((equal tramp-syntax 'url) tramp-file-name-regexp-url) (t (error "Wrong `tramp-syntax' defined"))) "\ +(defconst tramp-file-name-regexp (cond ((equal tramp-syntax 'ftp) tramp-file-name-regexp-unified) ((equal tramp-syntax 'sep) tramp-file-name-regexp-separate) (t (error "Wrong `tramp-syntax' defined"))) "\ Regular expression matching file names handled by Tramp. This regexp should match Tramp file names but no other file names. When tramp.el is loaded, this regular expression is prepended to @@ -28206,11 +28198,7 @@ XEmacs uses a separate filename syntax for Tramp and EFS. See `tramp-file-name-structure' for more explanations.") -(defconst tramp-completion-file-name-regexp-url "\\`/[^/:]+\\(:\\(/\\(/[^/]*\\)?\\)?\\)?\\'" "\ -Value for `tramp-completion-file-name-regexp' for URL-like remoting. -See `tramp-file-name-structure' for more explanations.") - -(defconst tramp-completion-file-name-regexp (cond ((equal tramp-syntax 'ftp) tramp-completion-file-name-regexp-unified) ((equal tramp-syntax 'sep) tramp-completion-file-name-regexp-separate) ((equal tramp-syntax 'url) tramp-completion-file-name-regexp-url) (t (error "Wrong `tramp-syntax' defined"))) "\ +(defconst tramp-completion-file-name-regexp (cond ((equal tramp-syntax 'ftp) tramp-completion-file-name-regexp-unified) ((equal tramp-syntax 'sep) tramp-completion-file-name-regexp-separate) (t (error "Wrong `tramp-syntax' defined"))) "\ Regular expression matching file names handled by Tramp completion. This regexp should match partial Tramp file names only. @@ -28321,8 +28309,8 @@ ;;;*** -;;;### (autoloads nil "two-column" "textmodes/two-column.el" (20763 -;;;;;; 30266 231060 0)) +;;;### (autoloads nil "two-column" "textmodes/two-column.el" (21049 +;;;;;; 1191 520844 232000)) ;;; Generated autoloads from textmodes/two-column.el (autoload '2C-command "two-column" () t 'keymap) (global-set-key "\C-x6" '2C-command) @@ -28878,7 +28866,7 @@ ;;;*** -;;;### (autoloads nil "url-http" "url/url-http.el" (21004 43695 993272 +;;;### (autoloads nil "url-http" "url/url-http.el" (21063 65063 266334 ;;;;;; 0)) ;;; Generated autoloads from url/url-http.el (autoload 'url-default-expander "url-expand") @@ -28932,8 +28920,8 @@ ;;;*** -;;;### (autoloads nil "url-misc" "url/url-misc.el" (20709 26818 907104 -;;;;;; 0)) +;;;### (autoloads nil "url-misc" "url/url-misc.el" (21047 30582 575560 +;;;;;; 699000)) ;;; Generated autoloads from url/url-misc.el (autoload 'url-man "url-misc" "\ @@ -29099,7 +29087,7 @@ ;;;*** -;;;### (autoloads nil "url-util" "url/url-util.el" (20709 26818 907104 +;;;### (autoloads nil "url-util" "url/url-util.el" (21063 65063 266334 ;;;;;; 0)) ;;; Generated autoloads from url/url-util.el @@ -29162,11 +29150,6 @@ \(fn X)" nil nil) -(autoload 'url-pretty-length "url-util" "\ - - -\(fn N)" nil nil) - (autoload 'url-display-percentage "url-util" "\ @@ -29363,7 +29346,7 @@ ;;;*** -;;;### (autoloads nil "vc" "vc/vc.el" (20992 52525 458637 0)) +;;;### (autoloads nil "vc" "vc/vc.el" (21053 29224 547064 0)) ;;; Generated autoloads from vc/vc.el (defvar vc-checkout-hook nil "\ @@ -29542,7 +29525,7 @@ (autoload 'vc-log-incoming "vc" "\ Show a log of changes that will be received with a pull operation from REMOTE-LOCATION. -When called interactively with a prefix argument, prompt for REMOTE-LOCATION.. +When called interactively with a prefix argument, prompt for REMOTE-LOCATION. \(fn &optional REMOTE-LOCATION)" t nil) @@ -29644,8 +29627,8 @@ ;;;*** -;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (20709 26818 -;;;;;; 907104 0)) +;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (21031 51082 +;;;;;; 798722 0)) ;;; Generated autoloads from vc/vc-annotate.el (autoload 'vc-annotate "vc-annotate" "\ @@ -29682,7 +29665,7 @@ ;;;*** -;;;### (autoloads nil "vc-arch" "vc/vc-arch.el" (20900 33838 319219 +;;;### (autoloads nil "vc-arch" "vc/vc-arch.el" (21031 51082 798722 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-arch.el (defun vc-arch-registered (file) @@ -29693,7 +29676,7 @@ ;;;*** -;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (20990 10793 424093 +;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (21041 38058 75002 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-bzr.el @@ -29710,7 +29693,7 @@ ;;;*** -;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (20983 37555 279226 +;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (21052 8364 417872 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-cvs.el (defun vc-cvs-registered (f) @@ -29722,7 +29705,7 @@ ;;;*** -;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (20990 10793 424093 +;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (21053 29224 547064 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-dir.el @@ -29747,8 +29730,8 @@ ;;;*** -;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (20924 -;;;;;; 16196 967284 0)) +;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (21041 +;;;;;; 38058 75002 0)) ;;; Generated autoloads from vc/vc-dispatcher.el (autoload 'vc-do-command "vc-dispatcher" "\ @@ -29771,7 +29754,7 @@ ;;;*** -;;;### (autoloads nil "vc-git" "vc/vc-git.el" (20990 10793 424093 +;;;### (autoloads nil "vc-git" "vc/vc-git.el" (21041 38058 75002 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-git.el (defun vc-git-registered (file) @@ -29783,7 +29766,7 @@ ;;;*** -;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (20990 10793 424093 0)) +;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (21031 51082 798722 0)) ;;; Generated autoloads from vc/vc-hg.el (defun vc-hg-registered (file) "Return non-nil if FILE is registered with hg." @@ -29794,7 +29777,7 @@ ;;;*** -;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (20900 33838 319219 +;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (21031 51082 798722 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-mtn.el @@ -29811,7 +29794,7 @@ ;;;*** -;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (20900 33838 319219 +;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (21031 51082 798722 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-rcs.el @@ -29825,7 +29808,7 @@ ;;;*** -;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (20900 33838 319219 +;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (21056 5418 85093 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-sccs.el @@ -29837,14 +29820,14 @@ (defun vc-sccs-registered (f) (vc-default-registered 'SCCS f)) -(defun vc-sccs-search-project-dir (dirname basename) "\ +(defun vc-sccs-search-project-dir (_dirname basename) "\ Return the name of a master file in the SCCS project directory. Does not check whether the file exists but returns nil if it does not find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir) (when project-dir (if (file-name-absolute-p project-dir) (setq dirs (quote ("SCCS" ""))) (setq dirs (quote ("src/SCCS" "src" "source/SCCS" "source"))) (setq project-dir (expand-file-name (concat "~" project-dir)))) (while (and (not dir) dirs) (setq dir (expand-file-name (car dirs) project-dir)) (unless (file-directory-p dir) (setq dir nil) (setq dirs (cdr dirs)))) (and dir (expand-file-name (concat "s." basename) dir))))) ;;;*** -;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (20990 10793 424093 +;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (21041 38058 75002 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-svn.el (defun vc-svn-registered (f) @@ -31087,7 +31070,7 @@ ;;;*** -;;;### (autoloads nil "wdired" "wdired.el" (20992 52525 458637 0)) +;;;### (autoloads nil "wdired" "wdired.el" (21049 14338 391345 0)) ;;; Generated autoloads from wdired.el (push (purecopy '(wdired 2 0)) package--builtin-versions) (autoload 'wdired-change-to-wdired-mode "wdired" "\ @@ -31747,8 +31730,8 @@ ;;;*** -;;;### (autoloads nil "ws-mode" "emulation/ws-mode.el" (20709 26818 -;;;;;; 907104 0)) +;;;### (autoloads nil "ws-mode" "emulation/ws-mode.el" (21040 17194 +;;;;;; 398147 0)) ;;; Generated autoloads from emulation/ws-mode.el (push (purecopy '(ws-mode 0 7)) package--builtin-versions) (autoload 'wordstar-mode "ws-mode" "\ @@ -31764,98 +31747,6 @@ No key bindings beginning with ESC are installed, they will work Emacs-like. -The key bindings are: - - C-a backward-word - C-b fill-paragraph - C-c scroll-up-line - C-d forward-char - C-e previous-line - C-f forward-word - C-g delete-char - C-h backward-char - C-i indent-for-tab-command - C-j help-for-help - C-k ordstar-C-k-map - C-l ws-repeat-search - C-n open-line - C-p quoted-insert - C-r scroll-down-line - C-s backward-char - C-t kill-word - C-u keyboard-quit - C-v overwrite-mode - C-w scroll-down - C-x next-line - C-y kill-complete-line - C-z scroll-up - - C-k 0 ws-set-marker-0 - C-k 1 ws-set-marker-1 - C-k 2 ws-set-marker-2 - C-k 3 ws-set-marker-3 - C-k 4 ws-set-marker-4 - C-k 5 ws-set-marker-5 - C-k 6 ws-set-marker-6 - C-k 7 ws-set-marker-7 - C-k 8 ws-set-marker-8 - C-k 9 ws-set-marker-9 - C-k b ws-begin-block - C-k c ws-copy-block - C-k d save-buffers-kill-emacs - C-k f find-file - C-k h ws-show-markers - C-k i ws-indent-block - C-k k ws-end-block - C-k p ws-print-block - C-k q kill-emacs - C-k r insert-file - C-k s save-some-buffers - C-k t ws-mark-word - C-k u ws-exdent-block - C-k C-u keyboard-quit - C-k v ws-move-block - C-k w ws-write-block - C-k x kill-emacs - C-k y ws-delete-block - - C-o c wordstar-center-line - C-o b switch-to-buffer - C-o j justify-current-line - C-o k kill-buffer - C-o l list-buffers - C-o m auto-fill-mode - C-o r set-fill-column - C-o C-u keyboard-quit - C-o wd delete-other-windows - C-o wh split-window-right - C-o wo other-window - C-o wv split-window-below - - C-q 0 ws-find-marker-0 - C-q 1 ws-find-marker-1 - C-q 2 ws-find-marker-2 - C-q 3 ws-find-marker-3 - C-q 4 ws-find-marker-4 - C-q 5 ws-find-marker-5 - C-q 6 ws-find-marker-6 - C-q 7 ws-find-marker-7 - C-q 8 ws-find-marker-8 - C-q 9 ws-find-marker-9 - C-q a ws-query-replace - C-q b ws-to-block-begin - C-q c end-of-buffer - C-q d end-of-line - C-q f ws-search - C-q k ws-to-block-end - C-q l ws-undo - C-q p ws-last-cursorp - C-q r beginning-of-buffer - C-q C-u keyboard-quit - C-q w ws-last-error - C-q y ws-kill-eol - C-q DEL ws-kill-bol - \(fn)" t nil) ;;;*** @@ -31996,44 +31887,45 @@ ;;;;;; "calc/calc-fin.el" "calc/calc-forms.el" "calc/calc-frac.el" ;;;;;; "calc/calc-funcs.el" "calc/calc-graph.el" "calc/calc-help.el" ;;;;;; "calc/calc-incom.el" "calc/calc-keypd.el" "calc/calc-lang.el" -;;;;;; "calc/calc-macs.el" "calc/calc-map.el" "calc/calc-math.el" -;;;;;; "calc/calc-menu.el" "calc/calc-misc.el" "calc/calc-mode.el" -;;;;;; "calc/calc-mtx.el" "calc/calc-nlfit.el" "calc/calc-poly.el" -;;;;;; "calc/calc-prog.el" "calc/calc-rewr.el" "calc/calc-rules.el" -;;;;;; "calc/calc-sel.el" "calc/calc-stat.el" "calc/calc-store.el" -;;;;;; "calc/calc-stuff.el" "calc/calc-trail.el" "calc/calc-units.el" -;;;;;; "calc/calc-vec.el" "calc/calc-yank.el" "calc/calcalg2.el" -;;;;;; "calc/calcalg3.el" "calc/calccomp.el" "calc/calcsel2.el" -;;;;;; "calendar/cal-bahai.el" "calendar/cal-coptic.el" "calendar/cal-french.el" -;;;;;; "calendar/cal-html.el" "calendar/cal-islam.el" "calendar/cal-iso.el" -;;;;;; "calendar/cal-julian.el" "calendar/cal-loaddefs.el" "calendar/cal-mayan.el" -;;;;;; "calendar/cal-menu.el" "calendar/cal-move.el" "calendar/cal-persia.el" -;;;;;; "calendar/cal-tex.el" "calendar/cal-x.el" "calendar/diary-loaddefs.el" -;;;;;; "calendar/hol-loaddefs.el" "cdl.el" "cedet/cedet-cscope.el" -;;;;;; "cedet/cedet-files.el" "cedet/cedet-global.el" "cedet/cedet-idutils.el" -;;;;;; "cedet/ede/auto.el" "cedet/ede/autoconf-edit.el" "cedet/ede/base.el" -;;;;;; "cedet/ede/cpp-root.el" "cedet/ede/custom.el" "cedet/ede/emacs.el" -;;;;;; "cedet/ede/files.el" "cedet/ede/generic.el" "cedet/ede/linux.el" -;;;;;; "cedet/ede/locate.el" "cedet/ede/make.el" "cedet/ede/makefile-edit.el" -;;;;;; "cedet/ede/pconf.el" "cedet/ede/pmake.el" "cedet/ede/proj-archive.el" -;;;;;; "cedet/ede/proj-aux.el" "cedet/ede/proj-comp.el" "cedet/ede/proj-elisp.el" -;;;;;; "cedet/ede/proj-info.el" "cedet/ede/proj-misc.el" "cedet/ede/proj-obj.el" -;;;;;; "cedet/ede/proj-prog.el" "cedet/ede/proj-scheme.el" "cedet/ede/proj-shared.el" -;;;;;; "cedet/ede/proj.el" "cedet/ede/shell.el" "cedet/ede/simple.el" -;;;;;; "cedet/ede/source.el" "cedet/ede/speedbar.el" "cedet/ede/srecode.el" -;;;;;; "cedet/ede/system.el" "cedet/ede/util.el" "cedet/semantic/analyze.el" -;;;;;; "cedet/semantic/analyze/complete.el" "cedet/semantic/analyze/debug.el" -;;;;;; "cedet/semantic/analyze/fcn.el" "cedet/semantic/analyze/refs.el" -;;;;;; "cedet/semantic/bovine.el" "cedet/semantic/bovine/c-by.el" -;;;;;; "cedet/semantic/bovine/c.el" "cedet/semantic/bovine/debug.el" -;;;;;; "cedet/semantic/bovine/el.el" "cedet/semantic/bovine/gcc.el" -;;;;;; "cedet/semantic/bovine/make-by.el" "cedet/semantic/bovine/make.el" -;;;;;; "cedet/semantic/bovine/scm-by.el" "cedet/semantic/bovine/scm.el" -;;;;;; "cedet/semantic/chart.el" "cedet/semantic/complete.el" "cedet/semantic/ctxt.el" -;;;;;; "cedet/semantic/db-debug.el" "cedet/semantic/db-ebrowse.el" -;;;;;; "cedet/semantic/db-el.el" "cedet/semantic/db-file.el" "cedet/semantic/db-find.el" -;;;;;; "cedet/semantic/db-global.el" "cedet/semantic/db-javascript.el" -;;;;;; "cedet/semantic/db-mode.el" "cedet/semantic/db-ref.el" "cedet/semantic/db-typecache.el" +;;;;;; "calc/calc-loaddefs.el" "calc/calc-macs.el" "calc/calc-map.el" +;;;;;; "calc/calc-math.el" "calc/calc-menu.el" "calc/calc-misc.el" +;;;;;; "calc/calc-mode.el" "calc/calc-mtx.el" "calc/calc-nlfit.el" +;;;;;; "calc/calc-poly.el" "calc/calc-prog.el" "calc/calc-rewr.el" +;;;;;; "calc/calc-rules.el" "calc/calc-sel.el" "calc/calc-stat.el" +;;;;;; "calc/calc-store.el" "calc/calc-stuff.el" "calc/calc-trail.el" +;;;;;; "calc/calc-units.el" "calc/calc-vec.el" "calc/calc-yank.el" +;;;;;; "calc/calcalg2.el" "calc/calcalg3.el" "calc/calccomp.el" +;;;;;; "calc/calcsel2.el" "calendar/cal-bahai.el" "calendar/cal-coptic.el" +;;;;;; "calendar/cal-french.el" "calendar/cal-html.el" "calendar/cal-islam.el" +;;;;;; "calendar/cal-iso.el" "calendar/cal-julian.el" "calendar/cal-loaddefs.el" +;;;;;; "calendar/cal-mayan.el" "calendar/cal-menu.el" "calendar/cal-move.el" +;;;;;; "calendar/cal-persia.el" "calendar/cal-tex.el" "calendar/cal-x.el" +;;;;;; "calendar/diary-loaddefs.el" "calendar/hol-loaddefs.el" "cdl.el" +;;;;;; "cedet/cedet-cscope.el" "cedet/cedet-files.el" "cedet/cedet-global.el" +;;;;;; "cedet/cedet-idutils.el" "cedet/ede/auto.el" "cedet/ede/autoconf-edit.el" +;;;;;; "cedet/ede/base.el" "cedet/ede/cpp-root.el" "cedet/ede/custom.el" +;;;;;; "cedet/ede/emacs.el" "cedet/ede/files.el" "cedet/ede/generic.el" +;;;;;; "cedet/ede/linux.el" "cedet/ede/loaddefs.el" "cedet/ede/locate.el" +;;;;;; "cedet/ede/make.el" "cedet/ede/makefile-edit.el" "cedet/ede/pconf.el" +;;;;;; "cedet/ede/pmake.el" "cedet/ede/proj-archive.el" "cedet/ede/proj-aux.el" +;;;;;; "cedet/ede/proj-comp.el" "cedet/ede/proj-elisp.el" "cedet/ede/proj-info.el" +;;;;;; "cedet/ede/proj-misc.el" "cedet/ede/proj-obj.el" "cedet/ede/proj-prog.el" +;;;;;; "cedet/ede/proj-scheme.el" "cedet/ede/proj-shared.el" "cedet/ede/proj.el" +;;;;;; "cedet/ede/shell.el" "cedet/ede/simple.el" "cedet/ede/source.el" +;;;;;; "cedet/ede/speedbar.el" "cedet/ede/srecode.el" "cedet/ede/system.el" +;;;;;; "cedet/ede/util.el" "cedet/semantic/analyze.el" "cedet/semantic/analyze/complete.el" +;;;;;; "cedet/semantic/analyze/debug.el" "cedet/semantic/analyze/fcn.el" +;;;;;; "cedet/semantic/analyze/refs.el" "cedet/semantic/bovine.el" +;;;;;; "cedet/semantic/bovine/c-by.el" "cedet/semantic/bovine/c.el" +;;;;;; "cedet/semantic/bovine/debug.el" "cedet/semantic/bovine/el.el" +;;;;;; "cedet/semantic/bovine/gcc.el" "cedet/semantic/bovine/make-by.el" +;;;;;; "cedet/semantic/bovine/make.el" "cedet/semantic/bovine/scm-by.el" +;;;;;; "cedet/semantic/bovine/scm.el" "cedet/semantic/chart.el" +;;;;;; "cedet/semantic/complete.el" "cedet/semantic/ctxt.el" "cedet/semantic/db-debug.el" +;;;;;; "cedet/semantic/db-ebrowse.el" "cedet/semantic/db-el.el" +;;;;;; "cedet/semantic/db-file.el" "cedet/semantic/db-find.el" "cedet/semantic/db-global.el" +;;;;;; "cedet/semantic/db-javascript.el" "cedet/semantic/db-mode.el" +;;;;;; "cedet/semantic/db-ref.el" "cedet/semantic/db-typecache.el" ;;;;;; "cedet/semantic/db.el" "cedet/semantic/debug.el" "cedet/semantic/decorate.el" ;;;;;; "cedet/semantic/decorate/include.el" "cedet/semantic/decorate/mode.el" ;;;;;; "cedet/semantic/dep.el" "cedet/semantic/doc.el" "cedet/semantic/ede-grammar.el" @@ -32041,13 +31933,13 @@ ;;;;;; "cedet/semantic/fw.el" "cedet/semantic/grammar-wy.el" "cedet/semantic/grammar.el" ;;;;;; "cedet/semantic/html.el" "cedet/semantic/ia-sb.el" "cedet/semantic/ia.el" ;;;;;; "cedet/semantic/idle.el" "cedet/semantic/imenu.el" "cedet/semantic/java.el" -;;;;;; "cedet/semantic/lex-spp.el" "cedet/semantic/lex.el" "cedet/semantic/mru-bookmark.el" -;;;;;; "cedet/semantic/sb.el" "cedet/semantic/scope.el" "cedet/semantic/senator.el" -;;;;;; "cedet/semantic/sort.el" "cedet/semantic/symref.el" "cedet/semantic/symref/cscope.el" -;;;;;; "cedet/semantic/symref/filter.el" "cedet/semantic/symref/global.el" -;;;;;; "cedet/semantic/symref/grep.el" "cedet/semantic/symref/idutils.el" -;;;;;; "cedet/semantic/symref/list.el" "cedet/semantic/tag-file.el" -;;;;;; "cedet/semantic/tag-ls.el" "cedet/semantic/tag-write.el" +;;;;;; "cedet/semantic/lex-spp.el" "cedet/semantic/lex.el" "cedet/semantic/loaddefs.el" +;;;;;; "cedet/semantic/mru-bookmark.el" "cedet/semantic/sb.el" "cedet/semantic/scope.el" +;;;;;; "cedet/semantic/senator.el" "cedet/semantic/sort.el" "cedet/semantic/symref.el" +;;;;;; "cedet/semantic/symref/cscope.el" "cedet/semantic/symref/filter.el" +;;;;;; "cedet/semantic/symref/global.el" "cedet/semantic/symref/grep.el" +;;;;;; "cedet/semantic/symref/idutils.el" "cedet/semantic/symref/list.el" +;;;;;; "cedet/semantic/tag-file.el" "cedet/semantic/tag-ls.el" "cedet/semantic/tag-write.el" ;;;;;; "cedet/semantic/tag.el" "cedet/semantic/texi.el" "cedet/semantic/util-modes.el" ;;;;;; "cedet/semantic/util.el" "cedet/semantic/wisent.el" "cedet/semantic/wisent/comp.el" ;;;;;; "cedet/semantic/wisent/java-tags.el" "cedet/semantic/wisent/javascript.el" @@ -32059,33 +31951,34 @@ ;;;;;; "cedet/srecode/el.el" "cedet/srecode/expandproto.el" "cedet/srecode/extract.el" ;;;;;; "cedet/srecode/fields.el" "cedet/srecode/filters.el" "cedet/srecode/find.el" ;;;;;; "cedet/srecode/getset.el" "cedet/srecode/insert.el" "cedet/srecode/java.el" -;;;;;; "cedet/srecode/map.el" "cedet/srecode/mode.el" "cedet/srecode/semantic.el" -;;;;;; "cedet/srecode/srt-wy.el" "cedet/srecode/srt.el" "cedet/srecode/table.el" -;;;;;; "cedet/srecode/template.el" "cedet/srecode/texi.el" "cus-dep.el" -;;;;;; "dframe.el" "dired-aux.el" "dired-x.el" "dos-fns.el" "dos-vars.el" -;;;;;; "dos-w32.el" "dynamic-setting.el" "emacs-lisp/authors.el" +;;;;;; "cedet/srecode/loaddefs.el" "cedet/srecode/map.el" "cedet/srecode/mode.el" +;;;;;; "cedet/srecode/semantic.el" "cedet/srecode/srt-wy.el" "cedet/srecode/srt.el" +;;;;;; "cedet/srecode/table.el" "cedet/srecode/template.el" "cedet/srecode/texi.el" +;;;;;; "cus-dep.el" "dframe.el" "dired-aux.el" "dired-x.el" "dos-fns.el" +;;;;;; "dos-vars.el" "dos-w32.el" "dynamic-setting.el" "emacs-lisp/authors.el" ;;;;;; "emacs-lisp/avl-tree.el" "emacs-lisp/bindat.el" "emacs-lisp/byte-opt.el" -;;;;;; "emacs-lisp/cl-extra.el" "emacs-lisp/cl-macs.el" "emacs-lisp/cl-seq.el" -;;;;;; "emacs-lisp/cl.el" "emacs-lisp/eieio-base.el" "emacs-lisp/eieio-datadebug.el" -;;;;;; "emacs-lisp/eieio-speedbar.el" "emacs-lisp/find-gc.el" "emacs-lisp/gulp.el" -;;;;;; "emacs-lisp/lisp-mnt.el" "emacs-lisp/package-x.el" "emacs-lisp/smie.el" -;;;;;; "emacs-lisp/tcover-ses.el" "emacs-lisp/tcover-unsafep.el" -;;;;;; "emulation/cua-gmrk.el" "emulation/cua-rect.el" "emulation/edt-lk201.el" -;;;;;; "emulation/edt-mapper.el" "emulation/edt-pc.el" "emulation/edt-vt100.el" -;;;;;; "emulation/tpu-extras.el" "emulation/viper-cmd.el" "emulation/viper-ex.el" -;;;;;; "emulation/viper-init.el" "emulation/viper-keym.el" "emulation/viper-macs.el" -;;;;;; "emulation/viper-mous.el" "emulation/viper-util.el" "erc/erc-backend.el" -;;;;;; "erc/erc-goodies.el" "erc/erc-ibuffer.el" "eshell/em-alias.el" -;;;;;; "eshell/em-banner.el" "eshell/em-basic.el" "eshell/em-cmpl.el" -;;;;;; "eshell/em-dirs.el" "eshell/em-glob.el" "eshell/em-hist.el" -;;;;;; "eshell/em-ls.el" "eshell/em-pred.el" "eshell/em-prompt.el" -;;;;;; "eshell/em-rebind.el" "eshell/em-script.el" "eshell/em-smart.el" -;;;;;; "eshell/em-term.el" "eshell/em-tramp.el" "eshell/em-unix.el" -;;;;;; "eshell/em-xtra.el" "eshell/esh-arg.el" "eshell/esh-cmd.el" -;;;;;; "eshell/esh-ext.el" "eshell/esh-io.el" "eshell/esh-module.el" -;;;;;; "eshell/esh-opt.el" "eshell/esh-proc.el" "eshell/esh-util.el" -;;;;;; "eshell/esh-var.el" "ezimage.el" "format-spec.el" "fringe.el" -;;;;;; "generic-x.el" "gnus/compface.el" "gnus/gnus-async.el" "gnus/gnus-bcklg.el" +;;;;;; "emacs-lisp/cl-extra.el" "emacs-lisp/cl-loaddefs.el" "emacs-lisp/cl-macs.el" +;;;;;; "emacs-lisp/cl-seq.el" "emacs-lisp/cl.el" "emacs-lisp/eieio-base.el" +;;;;;; "emacs-lisp/eieio-datadebug.el" "emacs-lisp/eieio-speedbar.el" +;;;;;; "emacs-lisp/find-gc.el" "emacs-lisp/gulp.el" "emacs-lisp/lisp-mnt.el" +;;;;;; "emacs-lisp/package-x.el" "emacs-lisp/smie.el" "emacs-lisp/tcover-ses.el" +;;;;;; "emacs-lisp/tcover-unsafep.el" "emulation/cua-gmrk.el" "emulation/cua-rect.el" +;;;;;; "emulation/edt-lk201.el" "emulation/edt-mapper.el" "emulation/edt-pc.el" +;;;;;; "emulation/edt-vt100.el" "emulation/tpu-extras.el" "emulation/viper-cmd.el" +;;;;;; "emulation/viper-ex.el" "emulation/viper-init.el" "emulation/viper-keym.el" +;;;;;; "emulation/viper-macs.el" "emulation/viper-mous.el" "emulation/viper-util.el" +;;;;;; "erc/erc-backend.el" "erc/erc-goodies.el" "erc/erc-ibuffer.el" +;;;;;; "eshell/em-alias.el" "eshell/em-banner.el" "eshell/em-basic.el" +;;;;;; "eshell/em-cmpl.el" "eshell/em-dirs.el" "eshell/em-glob.el" +;;;;;; "eshell/em-hist.el" "eshell/em-ls.el" "eshell/em-pred.el" +;;;;;; "eshell/em-prompt.el" "eshell/em-rebind.el" "eshell/em-script.el" +;;;;;; "eshell/em-smart.el" "eshell/em-term.el" "eshell/em-tramp.el" +;;;;;; "eshell/em-unix.el" "eshell/em-xtra.el" "eshell/esh-arg.el" +;;;;;; "eshell/esh-cmd.el" "eshell/esh-ext.el" "eshell/esh-groups.el" +;;;;;; "eshell/esh-io.el" "eshell/esh-module.el" "eshell/esh-opt.el" +;;;;;; "eshell/esh-proc.el" "eshell/esh-util.el" "eshell/esh-var.el" +;;;;;; "ezimage.el" "format-spec.el" "fringe.el" "generic-x.el" +;;;;;; "gnus/compface.el" "gnus/gnus-async.el" "gnus/gnus-bcklg.el" ;;;;;; "gnus/gnus-cite.el" "gnus/gnus-cus.el" "gnus/gnus-demon.el" ;;;;;; "gnus/gnus-dup.el" "gnus/gnus-eform.el" "gnus/gnus-ems.el" ;;;;;; "gnus/gnus-icalendar.el" "gnus/gnus-int.el" "gnus/gnus-logic.el" @@ -32194,7 +32087,7 @@ ;;;;;; "vc/ediff-vers.el" "vc/ediff-wind.el" "vc/pcvs-info.el" "vc/pcvs-parse.el" ;;;;;; "vc/pcvs-util.el" "vc/vc-dav.el" "vcursor.el" "vt-control.el" ;;;;;; "vt100-led.el" "w32-common-fns.el" "w32-fns.el" "w32-vars.el" -;;;;;; "x-dnd.el") (21027 5557 48411 587000)) +;;;;;; "x-dnd.el") (21066 41280 469799 289000)) ;;;*** ------------------------------------------------------------ revno: 114487 committer: Dmitry Gutov branch nick: trunk timestamp: Tue 2013-10-01 04:38:37 +0300 message: * lisp/emacs-lisp/package.el (package-buffer-info, describe-package-1): Use :url instead of :homepage, as per http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00622.html * test/automated/package-test.el: Update all cases to use :url instead of :homepage. * test/automated/package-x-test.el (package-x-test--single-archive-entry-1-3): Same. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-10-01 01:13:48 +0000 +++ lisp/ChangeLog 2013-10-01 01:38:37 +0000 @@ -1,5 +1,9 @@ 2013-10-01 Dmitry Gutov + * emacs-lisp/package.el (package-buffer-info, describe-package-1): + Use :url instead of :homepage, as per + http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00622.html + * newcomment.el (comment-beginning): When `comment-use-syntax' is non-nil, use `syntax-ppss' (Bug#15251). === modified file 'lisp/emacs-lisp/package.el' --- lisp/emacs-lisp/package.el 2013-09-29 19:41:00 +0000 +++ lisp/emacs-lisp/package.el 2013-10-01 01:38:37 +0000 @@ -1038,7 +1038,7 @@ file-name pkg-version desc (if requires-str (package-read-from-string requires-str)) :kind 'single - :homepage homepage)))) + :url homepage)))) (declare-function tar-get-file-descriptor "tar-mode" (file)) (declare-function tar--extract "tar-mode" (descriptor)) @@ -1207,8 +1207,7 @@ (reqs (if desc (package-desc-reqs desc))) (version (if desc (package-desc-version desc))) (archive (if desc (package-desc-archive desc))) - (homepage (if desc (cdr (assoc :homepage - (package-desc-extras desc))))) + (homepage (if desc (cdr (assoc :url (package-desc-extras desc))))) (built-in (eq pkg-dir 'builtin)) (installable (and archive (not built-in))) (status (if desc (package-desc-status desc) "orphan"))) === modified file 'test/ChangeLog' --- test/ChangeLog 2013-09-29 19:41:00 +0000 +++ test/ChangeLog 2013-10-01 01:38:37 +0000 @@ -1,3 +1,11 @@ +2013-10-01 Dmitry Gutov + + * automated/package-test.el: Update all cases to use :url instead + of :homepage. + + * automated/package-x-test.el + (package-x-test--single-archive-entry-1-3): Same. + 2013-09-29 Dmitry Gutov * automated/package-test.el (simple-single-desc-1-4): Remove, it === modified file 'test/automated/data/package/archive-contents' --- test/automated/data/package/archive-contents 2013-09-29 19:41:00 +0000 +++ test/automated/data/package/archive-contents 2013-10-01 01:38:37 +0000 @@ -2,11 +2,11 @@ (simple-single . [(1 3) nil "A single-file package with no dependencies" single - ((:homepage . "http://doodles.au"))]) + ((:url . "http://doodles.au"))]) (simple-depend . [(1 0) ((simple-single (1 3))) "A single-file package with a dependency." single]) (multi-file . [(0 2 3) nil "Example of a multi-file tar package" tar - ((:homepage . "http://puddles.li"))])) + ((:url . "http://puddles.li"))])) === modified file 'test/automated/data/package/multi-file-0.2.3.tar' Binary files test/automated/data/package/multi-file-0.2.3.tar 2013-09-29 19:41:00 +0000 and test/automated/data/package/multi-file-0.2.3.tar 2013-10-01 01:38:37 +0000 differ === modified file 'test/automated/package-test.el' --- test/automated/package-test.el 2013-09-29 19:41:00 +0000 +++ test/automated/package-test.el 2013-10-01 01:38:37 +0000 @@ -48,7 +48,7 @@ :version '(1 3) :summary "A single-file package with no dependencies" :kind 'single - :extras '((:homepage . "http://doodles.au"))) + :extras '((:url . "http://doodles.au"))) "Expected `package-desc' parsed from simple-single-1.3.el.") (defvar simple-depend-desc @@ -64,7 +64,7 @@ :version '(0 2 3) :summary "Example of a multi-file tar package" :kind 'tar - :extras '((:homepage . "http://puddles.li"))) + :extras '((:url . "http://puddles.li"))) "Expected `package-desc' from \"multi-file-0.2.3.tar\".") (defvar new-pkg-desc @@ -189,7 +189,7 @@ (concat "(define-package \"simple-single\" \"1.3\" " "\"A single-file package " "with no dependencies\" 'nil " - ":homepage \"http://doodles.au\"" + ":url \"http://doodles.au\"" ")\n")))) (should (file-exists-p autoloads-file)) (should-not (get-file-buffer autoloads-file))))) === modified file 'test/automated/package-x-test.el' --- test/automated/package-x-test.el 2013-09-29 19:41:00 +0000 +++ test/automated/package-x-test.el 2013-10-01 01:38:37 +0000 @@ -49,7 +49,7 @@ (package-make-ac-desc '(1 3) nil "A single-file package with no dependencies" 'single - '((:homepage . "http://doodles.au")))) + '((:url . "http://doodles.au")))) "Expected contents of the archive entry from the \"simple-single\" package.") (defvar package-x-test--single-archive-entry-1-4 ------------------------------------------------------------ revno: 114486 fixes bug: http://debbugs.gnu.org/15251 committer: Dmitry Gutov branch nick: trunk timestamp: Tue 2013-10-01 04:13:48 +0300 message: * lisp/newcomment.el (comment-beginning): When `comment-use-syntax' is non-nil, use `syntax-ppss'. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-30 01:13:19 +0000 +++ lisp/ChangeLog 2013-10-01 01:13:48 +0000 @@ -1,3 +1,8 @@ +2013-10-01 Dmitry Gutov + + * newcomment.el (comment-beginning): When `comment-use-syntax' is + non-nil, use `syntax-ppss' (Bug#15251). + 2013-09-30 Rüdiger Sonderfeld * progmodes/octave.el (inferior-octave-startup-file): Prefer === modified file 'lisp/newcomment.el' --- lisp/newcomment.el 2013-06-18 17:57:56 +0000 +++ lisp/newcomment.el 2013-10-01 01:13:48 +0000 @@ -515,30 +515,36 @@ "Find the beginning of the enclosing comment. Returns nil if not inside a comment, else moves point and returns the same as `comment-search-backward'." - ;; HACK ATTACK! - ;; We should really test `in-string-p' but that can be expensive. - (unless (eq (get-text-property (point) 'face) 'font-lock-string-face) - (let ((pt (point)) - (cs (comment-search-backward nil t))) - (when cs - (if (save-excursion - (goto-char cs) - (and - ;; For modes where comment-start and comment-end are the same, - ;; the search above may have found a `ce' rather than a `cs'. - (or (if comment-end-skip (not (looking-at comment-end-skip))) - ;; Maybe font-lock knows that it's a `cs'? - (eq (get-text-property (match-end 0) 'face) - 'font-lock-comment-face) - (unless (eq (get-text-property (point) 'face) - 'font-lock-comment-face) - ;; Let's assume it's a `cs' if we're on the same line. - (>= (line-end-position) pt))) - ;; Make sure that PT is not past the end of the comment. - (if (comment-forward 1) (> (point) pt) (eobp)))) - cs - (goto-char pt) - nil))))) + (if comment-use-syntax + (let ((state (syntax-ppss))) + (when (nth 4 state) + (goto-char (nth 8 state)) + (prog1 (point) + (when (looking-at comment-start-skip) + (goto-char (match-end 0)))))) + ;; Can't rely on the syntax table, let's guess based on font-lock. + (unless (eq (get-text-property (point) 'face) 'font-lock-string-face) + (let ((pt (point)) + (cs (comment-search-backward nil t))) + (when cs + (if (save-excursion + (goto-char cs) + (and + ;; For modes where comment-start and comment-end are the same, + ;; the search above may have found a `ce' rather than a `cs'. + (or (if comment-end-skip (not (looking-at comment-end-skip))) + ;; Maybe font-lock knows that it's a `cs'? + (eq (get-text-property (match-end 0) 'face) + 'font-lock-comment-face) + (unless (eq (get-text-property (point) 'face) + 'font-lock-comment-face) + ;; Let's assume it's a `cs' if we're on the same line. + (>= (line-end-position) pt))) + ;; Make sure that PT is not past the end of the comment. + (if (comment-forward 1) (> (point) pt) (eobp)))) + cs + (goto-char pt) + nil)))))) (defun comment-forward (&optional n) "Skip forward over N comments. ------------------------------------------------------------ revno: 114485 author: Rüdiger Sonderfeld committer: Leo Liu branch nick: trunk timestamp: Mon 2013-09-30 09:13:19 +0800 message: * progmodes/octave.el (inferior-octave-startup-file): Prefer ~/.emacs.d/init_octave.m. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-29 19:41:00 +0000 +++ lisp/ChangeLog 2013-09-30 01:13:19 +0000 @@ -1,3 +1,8 @@ +2013-09-30 Rüdiger Sonderfeld + + * progmodes/octave.el (inferior-octave-startup-file): Prefer + ~/.emacs.d/init_octave.m. + 2013-09-29 Dmitry Gutov * emacs-lisp/package.el (package-desc-from-define): Accept === modified file 'lisp/progmodes/octave.el' --- lisp/progmodes/octave.el 2013-09-28 03:15:56 +0000 +++ lisp/progmodes/octave.el 2013-09-30 01:13:19 +0000 @@ -609,8 +609,8 @@ :version "24.4") (defcustom inferior-octave-startup-file - (convert-standard-filename - (concat "~/.emacs-" (file-name-nondirectory inferior-octave-program))) + (let ((n (file-name-nondirectory inferior-octave-program))) + (locate-user-emacs-file (format "init_%s.m" n) (format ".emacs-%s" n))) "Name of the inferior Octave startup file. The contents of this file are sent to the inferior Octave process on startup." ------------------------------------------------------------ revno: 114484 fixes bug: http://debbugs.gnu.org/13291 committer: Dmitry Gutov branch nick: trunk timestamp: Sun 2013-09-29 22:41:00 +0300 message: * lisp/emacs-lisp/package-x.el (package-upload-buffer-internal): Pass `extras' slot from `package-desc' to `package-make-ac-desc'. * lisp/emacs-lisp/package.el (package-desc-from-define): Accept additional arguments as plist, convert it to an alist and store it in the `extras' slot. (package-generate-description-file): Convert extras alist back to plist and append to the `define-package' form arguments. (package--alist-to-plist): New function. (package--ac-desc): Add `extras' slot. (package--add-to-archive-contents): Check if the archive-contents vector is long enough, and if it is, pass its `extras' slot value to `package-desc-create'. (package-buffer-info): Call `lm-homepage', pass the returned value to `package-desc-from-define'. (describe-package-1): Render the homepage button. * test/automated/package-test.el (simple-single-desc-1-4): Remove, it was unused. (simple-single-desc): Expect :homepage property. (multi-file-desc): Same. (with-package-test): Do not save previous `default-directory' value, let-bind the var instead. (package-test-install-single): Expect :homepage property in the generated pkg file. (package-test-describe-package): Expect Homepage button. (package-test-describe-non-installed-package) (package-test-describe-non-installed-multi-file-package): Same. (package-test-describe-not-installed-package): Remove, it was a duplicate. * test/automated/package-x-test.el (package-x-test--single-archive-entry-1-3): Expect :homepage property. (package-x-test--single-archive-entry-1-4): Expect nil extras slot. * test/automated/data/package/archive-contents: Add :homepage properties to `simple-single' and `multi-file'. * test/automated/data/package/simple-single-1.3.el: Add URL header. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-29 17:09:39 +0000 +++ lisp/ChangeLog 2013-09-29 19:41:00 +0000 @@ -1,3 +1,22 @@ +2013-09-29 Dmitry Gutov + + * emacs-lisp/package.el (package-desc-from-define): Accept + additional arguments as plist, convert it to an alist and store it + in the `extras' slot. + (package-generate-description-file): Convert extras alist back to + plist and append to the `define-package' form arguments. + (package--alist-to-plist): New function. + (package--ac-desc): Add `extras' slot. + (package--add-to-archive-contents): Check if the archive-contents + vector is long enough, and if it is, pass its `extras' slot value + to `package-desc-create'. + (package-buffer-info): Call `lm-homepage', pass the returned value + to `package-desc-from-define'. + (describe-package-1): Render the homepage button (Bug#13291). + + * emacs-lisp/package-x.el (package-upload-buffer-internal): Pass + `extras' slot from `package-desc' to `package-make-ac-desc'. + 2013-09-29 Jan Djärv * term/ns-win.el (ns-initialize-window-system): Set locale-coding-system === modified file 'lisp/emacs-lisp/package-x.el' --- lisp/emacs-lisp/package-x.el 2013-06-27 09:26:54 +0000 +++ lisp/emacs-lisp/package-x.el 2013-09-29 19:41:00 +0000 @@ -209,6 +209,7 @@ (pcase file-type (`single (lm-commentary)) (`tar nil))) ;; FIXME: Get it from the README file. + (extras (package-desc-extras pkg-desc)) (pkg-version (package-version-join split-version)) (pkg-buffer (current-buffer))) @@ -217,7 +218,7 @@ (let ((contents (or (package--archive-contents-from-url archive-url) (package--archive-contents-from-file))) (new-desc (package-make-ac-desc - split-version requires desc file-type))) + split-version requires desc file-type extras))) (if (> (car contents) package-archive-version) (error "Unrecognized archive version %d" (car contents))) (let ((elt (assq pkg-name (cdr contents)))) === modified file 'lisp/emacs-lisp/package.el' --- lisp/emacs-lisp/package.el 2013-09-17 15:52:31 +0000 +++ lisp/emacs-lisp/package.el 2013-09-29 19:41:00 +0000 @@ -296,7 +296,7 @@ (:constructor package-desc-from-define (name-string version-string &optional summary requirements - &key kind archive &allow-other-keys + &rest rest-plist &aux (name (intern name-string)) (version (version-to-list version-string)) @@ -305,7 +305,19 @@ (version-to-list (cadr elt)))) (if (eq 'quote (car requirements)) (nth 1 requirements) - requirements)))))) + requirements))) + (kind (plist-get rest-plist :kind)) + (archive (plist-get rest-plist :archive)) + (extras (let (alist) + (cl-remf rest-plist :kind) + (cl-remf rest-plist :archive) + (while rest-plist + (let ((value (cadr rest-plist))) + (when value + (push (cons (car rest-plist) value) + alist))) + (setq rest-plist (cddr rest-plist))) + alist))))) "Structure containing information about an individual package. Slots: @@ -327,14 +339,17 @@ package came. `dir' The directory where the package is installed (if installed), - `builtin' if it is built-in, or nil otherwise." + `builtin' if it is built-in, or nil otherwise. + +`extras' Optional alist of additional keyword-value pairs." name version (summary package--default-summary) reqs kind archive - dir) + dir + extras) ;; Pseudo fields. (defun package-desc-full-name (pkg-desc) @@ -642,22 +657,28 @@ (write-region (concat (prin1-to-string - (list 'define-package - (symbol-name name) - (package-version-join (package-desc-version pkg-desc)) - (package-desc-summary pkg-desc) - (let ((requires (package-desc-reqs pkg-desc))) - (list 'quote - ;; Turn version lists into string form. - (mapcar - (lambda (elt) - (list (car elt) - (package-version-join (cadr elt)))) - requires))))) + (nconc + (list 'define-package + (symbol-name name) + (package-version-join (package-desc-version pkg-desc)) + (package-desc-summary pkg-desc) + (let ((requires (package-desc-reqs pkg-desc))) + (list 'quote + ;; Turn version lists into string form. + (mapcar + (lambda (elt) + (list (car elt) + (package-version-join (cadr elt)))) + requires)))) + (package--alist-to-plist + (package-desc-extras pkg-desc)))) "\n") nil pkg-file)))) +(defun package--alist-to-plist (alist) + (apply #'nconc (mapcar (lambda (pair) (list (car pair) (cdr pair))) alist))) + (defun package-unpack (pkg-desc) "Install the contents of the current buffer as a package." (let* ((name (package-desc-name pkg-desc)) @@ -893,10 +914,10 @@ ;; Changing this defstruct implies changing the format of the ;; "archive-contents" files. (cl-defstruct (package--ac-desc - (:constructor package-make-ac-desc (version reqs summary kind)) + (:constructor package-make-ac-desc (version reqs summary kind extras)) (:copier nil) (:type vector)) - version reqs summary kind) + version reqs summary kind extras) (defun package--add-to-archive-contents (package archive) "Add the PACKAGE from the given ARCHIVE if necessary. @@ -911,7 +932,11 @@ :reqs (package--ac-desc-reqs (cdr package)) :summary (package--ac-desc-summary (cdr package)) :kind (package--ac-desc-kind (cdr package)) - :archive archive)) + :archive archive + :extras (and (> (length (cdr package)) 4) + ;; Older archive-contents files have only 4 + ;; elements here. + (package--ac-desc-extras (cdr package))))) (existing-packages (assq name package-archive-contents)) (pinned-to-archive (assoc name package-pinned-packages))) (cond @@ -1004,14 +1029,16 @@ ;; probably wants us to use it. Otherwise try Version. (pkg-version (or (package-strip-rcs-id (lm-header "package-version")) - (package-strip-rcs-id (lm-header "version"))))) + (package-strip-rcs-id (lm-header "version")))) + (homepage (lm-homepage))) (unless pkg-version (error "Package lacks a \"Version\" or \"Package-Version\" header")) (package-desc-from-define file-name pkg-version desc (if requires-str (package-read-from-string requires-str)) - :kind 'single)))) + :kind 'single + :homepage homepage)))) (declare-function tar-get-file-descriptor "tar-mode" (file)) (declare-function tar--extract "tar-mode" (descriptor)) @@ -1180,6 +1207,8 @@ (reqs (if desc (package-desc-reqs desc))) (version (if desc (package-desc-version desc))) (archive (if desc (package-desc-archive desc))) + (homepage (if desc (cdr (assoc :homepage + (package-desc-extras desc))))) (built-in (eq pkg-dir 'builtin)) (installable (and archive (not built-in))) (status (if desc (package-desc-status desc) "orphan"))) @@ -1248,7 +1277,10 @@ (insert "\n"))) (insert " " (propertize "Summary" 'font-lock-face 'bold) ": " (if desc (package-desc-summary desc)) "\n") - + (when homepage + (insert " " (propertize "Homepage" 'font-lock-face 'bold) ": ") + (help-insert-xref-button homepage 'help-url homepage) + (insert "\n")) (let* ((all-pkgs (append (cdr (assq name package-alist)) (cdr (assq name package-archive-contents)) (let ((bi (assq name package--builtins))) === modified file 'test/ChangeLog' --- test/ChangeLog 2013-09-22 09:31:55 +0000 +++ test/ChangeLog 2013-09-29 19:41:00 +0000 @@ -1,3 +1,29 @@ +2013-09-29 Dmitry Gutov + + * automated/package-test.el (simple-single-desc-1-4): Remove, it + was unused. + (simple-single-desc): Expect :homepage property. + (multi-file-desc): Same. + (with-package-test): Do not save previous `default-directory' + value, let-bind the var instead. + (package-test-install-single): Expect :homepage property in the + generated pkg file. + (package-test-describe-package): Expect Homepage button. + (package-test-describe-non-installed-package) + (package-test-describe-non-installed-multi-file-package): Same. + (package-test-describe-not-installed-package): Remove, it was a + duplicate. + + * automated/package-x-test.el + (package-x-test--single-archive-entry-1-3): Expect :homepage + property. + (package-x-test--single-archive-entry-1-4): Expect nil extras slot. + + * automated/data/package/simple-single-1.3.el: Add URL header. + + * automated/data/package/archive-contents: Add :homepage + properties to `simple-single' and `multi-file'. + 2013-09-22 Daniel Colascione * automated/data-test.el: === modified file 'test/automated/data/package/archive-contents' --- test/automated/data/package/archive-contents 2013-06-27 09:26:54 +0000 +++ test/automated/data/package/archive-contents 2013-09-29 19:41:00 +0000 @@ -1,10 +1,12 @@ (1 (simple-single . [(1 3) - nil "A single-file package with no dependencies" single]) + nil "A single-file package with no dependencies" single + ((:homepage . "http://doodles.au"))]) (simple-depend . [(1 0) ((simple-single (1 3))) "A single-file package with a dependency." single]) (multi-file . [(0 2 3) - nil "Example of a multi-file tar package" tar])) + nil "Example of a multi-file tar package" tar + ((:homepage . "http://puddles.li"))])) === modified file 'test/automated/data/package/multi-file-0.2.3.tar' Binary files test/automated/data/package/multi-file-0.2.3.tar 2013-06-27 09:26:54 +0000 and test/automated/data/package/multi-file-0.2.3.tar 2013-09-29 19:41:00 +0000 differ === modified file 'test/automated/data/package/simple-single-1.3.el' --- test/automated/data/package/simple-single-1.3.el 2013-06-27 09:26:54 +0000 +++ test/automated/data/package/simple-single-1.3.el 2013-09-29 19:41:00 +0000 @@ -3,6 +3,7 @@ ;; Author: J. R. Hacker ;; Version: 1.3 ;; Keywords: frobnicate +;; URL: http://doodles.au ;;; Commentary: === modified file 'test/automated/package-test.el' --- test/automated/package-test.el 2013-08-20 06:39:17 +0000 +++ test/automated/package-test.el 2013-09-29 19:41:00 +0000 @@ -47,16 +47,10 @@ (package-desc-create :name 'simple-single :version '(1 3) :summary "A single-file package with no dependencies" - :kind 'single) + :kind 'single + :extras '((:homepage . "http://doodles.au"))) "Expected `package-desc' parsed from simple-single-1.3.el.") -(defvar simple-single-desc-1-4 - (package-desc-create :name 'simple-single - :version '(1 4) - :summary "A single-file package with no dependencies" - :kind 'single) - "Expected `package-desc' parsed from simple-single-1.4.el.") - (defvar simple-depend-desc (package-desc-create :name 'simple-depend :version '(1 0) @@ -69,7 +63,8 @@ (package-desc-create :name 'multi-file :version '(0 2 3) :summary "Example of a multi-file tar package" - :kind 'tar) + :kind 'tar + :extras '((:homepage . "http://puddles.li"))) "Expected `package-desc' from \"multi-file-0.2.3.tar\".") (defvar new-pkg-desc @@ -97,7 +92,7 @@ (package-user-dir package-test-user-dir) (package-archives `(("gnu" . ,package-test-data-dir))) (old-yes-no-defn (symbol-function 'yes-or-no-p)) - (old-pwd default-directory) + (default-directory package-test-file-dir) package--initialized package-alist ,@(if update-news @@ -128,8 +123,7 @@ (when (and (boundp 'package-test-archive-upload-base) (file-directory-p package-test-archive-upload-base)) (delete-directory package-test-archive-upload-base t)) - (setf (symbol-function 'yes-or-no-p) old-yes-no-defn) - (cd old-pwd)))) + (setf (symbol-function 'yes-or-no-p) old-yes-no-defn)))) (defmacro with-fake-help-buffer (&rest body) "Execute BODY in a temp buffer which is treated as the \"*Help*\" buffer." @@ -194,7 +188,9 @@ (should (string= (buffer-string) (concat "(define-package \"simple-single\" \"1.3\" " "\"A single-file package " - "with no dependencies\" 'nil)\n")))) + "with no dependencies\" 'nil " + ":homepage \"http://doodles.au\"" + ")\n")))) (should (file-exists-p autoloads-file)) (should-not (get-file-buffer autoloads-file))))) @@ -319,23 +315,12 @@ (should (search-forward "Version: 1.3" nil t)) (should (search-forward "Summary: A single-file package with no dependencies" nil t)) + (should (search-forward "Homepage: http://doodles.au" nil t)) ;; No description, though. Because at this point we don't know ;; what archive the package originated from, and we don't have ;; its readme file saved. ))) -(ert-deftest package-test-describe-not-installed-package () - "Test displaying of the readme for not-installed package." - - (with-package-test () - (package-initialize) - (package-refresh-contents) - (with-fake-help-buffer - (describe-package 'simple-single) - (goto-char (point-min)) - (should (search-forward "This package provides a minor mode to frobnicate" - nil t))))) - (ert-deftest package-test-describe-non-installed-package () "Test displaying of the readme for non-installed package." @@ -345,6 +330,7 @@ (with-fake-help-buffer (describe-package 'simple-single) (goto-char (point-min)) + (should (search-forward "Homepage: http://doodles.au" nil t)) (should (search-forward "This package provides a minor mode to frobnicate" nil t))))) @@ -357,6 +343,7 @@ (with-fake-help-buffer (describe-package 'multi-file) (goto-char (point-min)) + (should (search-forward "Homepage: http://puddles.li" nil t)) (should (search-forward "This is a bare-bones readme file for the multi-file" nil t))))) === modified file 'test/automated/package-x-test.el' --- test/automated/package-x-test.el 2013-08-20 06:39:17 +0000 +++ test/automated/package-x-test.el 2013-09-29 19:41:00 +0000 @@ -48,14 +48,16 @@ (cons 'simple-single (package-make-ac-desc '(1 3) nil "A single-file package with no dependencies" - 'single)) + 'single + '((:homepage . "http://doodles.au")))) "Expected contents of the archive entry from the \"simple-single\" package.") (defvar package-x-test--single-archive-entry-1-4 (cons 'simple-single (package-make-ac-desc '(1 4) nil "A single-file package with no dependencies" - 'single)) + 'single + nil)) "Expected contents of the archive entry from the updated \"simple-single\" package.") (ert-deftest package-x-test-upload-buffer () ------------------------------------------------------------ revno: 114483 fixes bug: http://debbugs.gnu.org/15402 committer: Jan D. branch nick: trunk timestamp: Sun 2013-09-29 19:09:39 +0200 message: * term/ns-win.el (ns-initialize-window-system): Set locale-coding-system and default-process-coding-system to utf-8-unix. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-29 06:16:45 +0000 +++ lisp/ChangeLog 2013-09-29 17:09:39 +0000 @@ -1,3 +1,8 @@ +2013-09-29 Jan Djärv + + * term/ns-win.el (ns-initialize-window-system): Set locale-coding-system + and default-process-coding-system to utf-8-unix (Bug#15402). + 2013-09-29 Xue Fuqiao * subr.el (looking-back): Do not recommend using looking-back. === modified file 'lisp/term/ns-win.el' --- lisp/term/ns-win.el 2013-09-18 04:36:34 +0000 +++ lisp/term/ns-win.el 2013-09-29 17:09:39 +0000 @@ -912,6 +912,13 @@ ;; FIXME: This will surely lead to "MODIFIED OUTSIDE CUSTOM" warnings. (menu-bar-mode (if (get-lisp-resource nil "Menus") 1 -1)) + ;; For NS nothing except UTF-8 makes sense. + (add-hook 'before-init-hook + #'(lambda () + (setq locale-coding-system 'utf-8-unix) + (setq default-process-coding-system + '(utf-8-unix . utf-8-unix)))) + ;; OS X Lion introduces PressAndHold, which is unsupported by this port. ;; See this thread for more details: ;; http://lists.gnu.org/archive/html/emacs-devel/2011-06/msg00505.html ------------------------------------------------------------ revno: 114482 fixes bug: http://debbugs.gnu.org/15484 committer: Eli Zaretskii branch nick: trunk timestamp: Sun 2013-09-29 19:27:09 +0300 message: Fix bug #15484 with link error in the --without-x configuration. src/xdisp.c (get_next_display_element): Don't call face_for_font in a build configured --without-x. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-29 16:18:55 +0000 +++ src/ChangeLog 2013-09-29 16:27:09 +0000 @@ -1,3 +1,8 @@ +2013-09-29 Eli Zaretskii + + * xdisp.c (get_next_display_element): Don't call face_for_font in + a build configured --without-x. (Bug#15484) + 2013-09-29 Jan Djärv * window.c (calc_absolute_offset): #elif should be #elif defined. === modified file 'src/xdisp.c' --- src/xdisp.c 2013-09-28 08:19:33 +0000 +++ src/xdisp.c 2013-09-29 16:27:09 +0000 @@ -6955,6 +6955,7 @@ } } +#ifdef HAVE_WINDOW_SYSTEM /* Adjust face id for a multibyte character. There are no multibyte character in unibyte text. */ if ((it->what == IT_CHARACTER || it->what == IT_COMPOSITION) @@ -6995,6 +6996,7 @@ it->face_id = FACE_FOR_CHAR (it->f, face, c, pos, it->string); } } +#endif /* HAVE_WINDOW_SYSTEM */ done: /* Is this character the last one of a run of characters with ------------------------------------------------------------ revno: 114481 committer: Jan D. branch nick: trunk timestamp: Sun 2013-09-29 18:18:55 +0200 message: * window.c (calc_absolute_offset): #elif should be #elif defined. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-29 10:21:58 +0000 +++ src/ChangeLog 2013-09-29 16:18:55 +0000 @@ -1,5 +1,7 @@ 2013-09-29 Jan Djärv + * window.c (calc_absolute_offset): #elif should be #elif defined. + * frame.c (delete_frame): Block/unblock input to overcome race condition (Bug#15475). === modified file 'src/window.c' --- src/window.c 2013-09-24 06:43:20 +0000 +++ src/window.c 2013-09-29 16:18:55 +0000 @@ -945,7 +945,7 @@ #endif #ifdef FRAME_TOOLBAR_TOP_HEIGHT *add_y += FRAME_TOOLBAR_TOP_HEIGHT (f); -#elif FRAME_TOOLBAR_HEIGHT +#elif defined (FRAME_TOOLBAR_HEIGHT) *add_y += FRAME_TOOLBAR_HEIGHT (f); #endif #ifdef FRAME_NS_TITLEBAR_HEIGHT ------------------------------------------------------------ revno: 114480 fixes bug: http://debbugs.gnu.org/15475 committer: Jan D. branch nick: trunk timestamp: Sun 2013-09-29 12:21:58 +0200 message: * frame.c (delete_frame): Block/unblock input to overcome race condition. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-29 08:33:23 +0000 +++ src/ChangeLog 2013-09-29 10:21:58 +0000 @@ -1,3 +1,8 @@ +2013-09-29 Jan Djärv + + * frame.c (delete_frame): Block/unblock input to overcome race + condition (Bug#15475). + 2013-09-29 Andreas Politz (tiny change) * frame.c (delete_frame): Record selected frame only after === modified file 'src/frame.c' --- src/frame.c 2013-09-29 08:33:23 +0000 +++ src/frame.c 2013-09-29 10:21:58 +0000 @@ -1373,13 +1373,15 @@ have called the window-system-dependent frame destruction routine. */ - if (FRAME_TERMINAL (f)->delete_frame_hook) - (*FRAME_TERMINAL (f)->delete_frame_hook) (f); { + block_input (); + if (FRAME_TERMINAL (f)->delete_frame_hook) + (*FRAME_TERMINAL (f)->delete_frame_hook) (f); struct terminal *terminal = FRAME_TERMINAL (f); f->output_data.nothing = 0; f->terminal = 0; /* Now the frame is dead. */ + unblock_input (); /* If needed, delete the terminal that this frame was on. (This must be done after the frame is killed.) */ ------------------------------------------------------------ revno: 114479 author: Andreas Politz committer: martin rudalics branch nick: trunk timestamp: Sun 2013-09-29 10:33:23 +0200 message: In delete_frame record selected frame only after calling Qdelete_frame_functions (Bug#15477). * frame.c (delete_frame): Record selected frame only after calling Qdelete_frame_functions (Bug#15477). diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-28 10:01:50 +0000 +++ src/ChangeLog 2013-09-29 08:33:23 +0000 @@ -1,3 +1,8 @@ +2013-09-29 Andreas Politz (tiny change) + + * frame.c (delete_frame): Record selected frame only after + calling Qdelete_frame_functions (Bug#15477). + 2013-09-28 Jan Djärv * nsterm.m (ns_selection_color): Remove. === modified file 'src/frame.c' --- src/frame.c 2013-09-23 09:50:47 +0000 +++ src/frame.c 2013-09-29 08:33:23 +0000 @@ -1190,7 +1190,7 @@ delete_frame (Lisp_Object frame, Lisp_Object force) { struct frame *f = decode_any_frame (frame); - struct frame *sf = SELECTED_FRAME (); + struct frame *sf; struct kboard *kb; int minibuffer_selected, is_tooltip_frame; @@ -1265,7 +1265,7 @@ There is no more chance for errors to prevent it. */ minibuffer_selected = EQ (minibuf_window, selected_window); - + sf = SELECTED_FRAME (); /* Don't let the frame remain selected. */ if (f == sf) { ------------------------------------------------------------ revno: 114478 committer: Xue Fuqiao branch nick: trunk timestamp: Sun 2013-09-29 14:16:45 +0800 message: Refine documentation of `looking-back'. * lisp/subr.el (looking-back): Do not recommend using looking-back. (bug#5689) * doc/lispref/searching.texi (Regexp Search): Refine. diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2013-09-22 12:49:53 +0000 +++ doc/lispref/ChangeLog 2013-09-29 06:16:45 +0000 @@ -1,3 +1,7 @@ +2013-09-29 Xue Fuqiao + + * searching.texi (Regexp Search): Refine. + 2013-09-22 Xue Fuqiao * nonascii.texi (Default Coding Systems): Typo fix. === modified file 'doc/lispref/searching.texi' --- doc/lispref/searching.texi 2013-04-21 03:27:51 +0000 +++ doc/lispref/searching.texi 2013-09-29 06:16:45 +0000 @@ -1146,7 +1146,21 @@ point. That can be quite slow if it has to search a long distance. You can bound the time required by specifying @var{limit}, which says not to search before @var{limit}. In this case, the match that is -found must begin at or after @var{limit}. +found must begin at or after @var{limit}. Here's an example: + +@example +@group +---------- Buffer: foo ---------- +I read "@point{}The cat in the hat +comes back" twice. +---------- Buffer: foo ---------- + +(looking-back "read \"" 3) + @result{} t +(looking-back "read \"" 4) + @result{} nil +@end group +@end example If @var{greedy} is non-@code{nil}, this function extends the match backwards as far as possible, stopping when a single additional @@ -1154,20 +1168,6 @@ match is extended, its starting position is allowed to occur before @var{limit}. -@example -@group ----------- Buffer: foo ---------- -I read "@point{}The cat in the hat -comes back" twice. ----------- Buffer: foo ---------- - -(looking-back "read \"" 3) - @result{} t -(looking-back "read \"" 4) - @result{} nil -@end group -@end example - @c http://debbugs.gnu.org/5689 As a general recommendation, try to avoid using @code{looking-back} wherever possible, since it is slow. For this reason, there are no === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-28 17:17:01 +0000 +++ lisp/ChangeLog 2013-09-29 06:16:45 +0000 @@ -1,3 +1,7 @@ +2013-09-29 Xue Fuqiao + + * subr.el (looking-back): Do not recommend using looking-back. + 2013-09-28 Alan Mackenzie Fix indentation/fontification of Java enum with "implements". === modified file 'lisp/subr.el' --- lisp/subr.el 2013-09-20 19:59:42 +0000 +++ lisp/subr.el 2013-09-29 06:16:45 +0000 @@ -3482,7 +3482,10 @@ possible, stopping when a single additional previous character cannot be part of a match for REGEXP. When the match is extended, its starting position is allowed to occur before -LIMIT." +LIMIT. + +As a general recommendation, try to avoid using `looking-back' +wherever possible, since it is slow." (let ((start (point)) (pos (save-excursion ------------------------------------------------------------ revno: 114477 committer: Xue Fuqiao branch nick: trunk timestamp: Sun 2013-09-29 12:30:11 +0800 message: Remove unnecessary @refill. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2013-09-26 14:22:49 +0000 +++ doc/emacs/ChangeLog 2013-09-29 04:30:11 +0000 @@ -1,3 +1,7 @@ +2013-09-29 Xue Fuqiao + + * fortran-xtra.texi (Fortran Abbrev): Remove @refill. + 2013-09-26 Xue Fuqiao * dired.texi (Flagging Many Files): Use @emph instead of @strong. === modified file 'doc/emacs/fortran-xtra.texi' --- doc/emacs/fortran-xtra.texi 2013-01-01 09:11:05 +0000 +++ doc/emacs/fortran-xtra.texi 2013-09-29 04:30:11 +0000 @@ -575,7 +575,7 @@ semicolon. For example, one built-in Fortran abbrev is @samp{;c} for @samp{continue}. If you insert @samp{;c} and then insert a punctuation character such as a space or a newline, the @samp{;c} expands automatically -to @samp{continue}, provided Abbrev mode is enabled.@refill +to @samp{continue}, provided Abbrev mode is enabled. Type @samp{;?} or @samp{;C-h} to display a list of all the built-in Fortran abbrevs and what they stand for. ------------------------------------------------------------ revno: 114476 committer: Leo Liu branch nick: trunk timestamp: Sun 2013-09-29 09:37:03 +0800 message: * url/url-util.el (url-pretty-length): Make obsolete and all uses changed to file-size-human-readable. diff: === modified file 'lisp/url/ChangeLog' --- lisp/url/ChangeLog 2013-09-18 01:44:44 +0000 +++ lisp/url/ChangeLog 2013-09-29 01:37:03 +0000 @@ -1,3 +1,8 @@ +2013-09-29 Leo Liu + + * url-util.el (url-pretty-length): Make obsolete and all uses + changed to file-size-human-readable. + 2013-09-18 Glenn Morris * url-http.el (zlib-decompress-region): Declare. === modified file 'lisp/url/url-http.el' --- lisp/url/url-http.el 2013-09-18 05:10:21 +0000 +++ lisp/url/url-http.el 2013-09-29 01:37:03 +0000 @@ -51,7 +51,6 @@ (defvar url-show-status) (require 'url-gw) -(require 'url-util) (require 'url-parse) (require 'url-cookie) (require 'mail-parse) @@ -919,7 +918,7 @@ (defun url-http-simple-after-change-function (st nd length) ;; Function used when we do NOT know how long the document is going to be ;; Just _very_ simple 'downloaded %d' type of info. - (url-lazy-message "Reading %s..." (url-pretty-length nd))) + (url-lazy-message "Reading %s..." (file-size-human-readable nd))) (defun url-http-content-length-after-change-function (st nd length) "Function used when we DO know how long the document is going to be. @@ -932,16 +931,16 @@ (url-percentage (- nd url-http-end-of-headers) url-http-content-length) url-http-content-type - (url-pretty-length (- nd url-http-end-of-headers)) - (url-pretty-length url-http-content-length) + (file-size-human-readable (- nd url-http-end-of-headers)) + (file-size-human-readable url-http-content-length) (url-percentage (- nd url-http-end-of-headers) url-http-content-length)) (url-display-percentage "Reading... %s of %s (%d%%)" (url-percentage (- nd url-http-end-of-headers) url-http-content-length) - (url-pretty-length (- nd url-http-end-of-headers)) - (url-pretty-length url-http-content-length) + (file-size-human-readable (- nd url-http-end-of-headers)) + (file-size-human-readable url-http-content-length) (url-percentage (- nd url-http-end-of-headers) url-http-content-length))) === modified file 'lisp/url/url-util.el' --- lisp/url/url-util.el 2013-01-01 09:11:05 +0000 +++ lisp/url/url-util.el 2013-09-29 01:37:03 +0000 @@ -211,15 +211,9 @@ (setq z (1+ z))) (substring x z nil))) -;;;###autoload -(defun url-pretty-length (n) - (cond - ((< n 1024) - (format "%d bytes" n)) - ((< n (* 1024 1024)) - (format "%dk" (/ n 1024.0))) - (t - (format "%2.2fM" (/ n (* 1024 1024.0)))))) + +(define-obsolete-function-alias 'url-pretty-length + 'file-size-human-readable "24.4") ;;;###autoload (defun url-display-percentage (fmt perc &rest args) ------------------------------------------------------------ revno: 114475 committer: Xue Fuqiao branch nick: trunk timestamp: Sun 2013-09-29 06:26:29 +0800 message: Remove an unnecessary FIXME. diff: === modified file 'doc/lispref/sequences.texi' --- doc/lispref/sequences.texi 2013-09-28 01:52:23 +0000 +++ doc/lispref/sequences.texi 2013-09-28 22:26:29 +0000 @@ -713,16 +713,6 @@ and @code{nil} otherwise. @end defun -@c FIXME: Document these functions: -@c `bool-vector-exclusive-or' -@c `bool-vector-union' -@c `bool-vector-intersection' -@c `bool-vector-set-difference' -@c `bool-vector-not' -@c `bool-vector-subsetp' -@c `bool-vector-count-matches' -@c `bool-vector-count-matches-at' - Here is an example of creating, examining, and updating a bool-vector. Note that the printed form represents up to 8 boolean values as a single character. ------------------------------------------------------------ revno: 114474 committer: Alan Mackenzie branch nick: trunk timestamp: Sat 2013-09-28 17:17:01 +0000 message: Fix indentation/fontification of Java enum with "implements". * progmodes/cc-langs.el (c-postfix-decl-spec-key): New variable, a regexp which matches "implements", etc., in Java. * progmodes/cc-engine.el (c-inside-bracelist-p): Check for extra specifier clauses coming after "enum". * progmodes/cc-fonts.el (c-font-lock-declarations) (c-font-lock-enum-tail): Check for extra specifier clauses coming after "enum". diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-28 10:01:50 +0000 +++ lisp/ChangeLog 2013-09-28 17:17:01 +0000 @@ -1,3 +1,15 @@ +2013-09-28 Alan Mackenzie + + Fix indentation/fontification of Java enum with "implements". + + * progmodes/cc-langs.el (c-postfix-decl-spec-key): New variable, a + regexp which matches "implements", etc., in Java. + * progmodes/cc-engine.el (c-inside-bracelist-p): Check for extra + specifier clauses coming after "enum". + * progmodes/cc-fonts.el (c-font-lock-declarations) + (c-font-lock-enum-tail): Check for extra specifier clauses coming + after "enum". + 2013-09-28 Jan Djärv * faces.el (region): Change ns_selection_color to === modified file 'lisp/progmodes/cc-engine.el' --- lisp/progmodes/cc-engine.el 2013-09-21 17:21:29 +0000 +++ lisp/progmodes/cc-engine.el 2013-09-28 17:17:01 +0000 @@ -8486,17 +8486,21 @@ (or ;; This will pick up brace list declarations. (c-safe - (save-excursion - (goto-char containing-sexp) - (c-forward-sexp -1) - (let (bracepos) - (if (and (or (looking-at c-brace-list-key) - (progn (c-forward-sexp -1) - (looking-at c-brace-list-key))) - (setq bracepos (c-down-list-forward (point))) - (not (c-crosses-statement-barrier-p (point) - (- bracepos 2)))) - (point))))) + (save-excursion + (goto-char containing-sexp) + (let (before-identifier) + (while + (progn + (c-forward-sexp -1) + (cond + ((c-on-identifier) (setq before-identifier t)) + ((and before-identifier + (looking-at c-postfix-decl-spec-key)) + (setq before-identifier nil) + t) + ((looking-at c-brace-list-key) nil) + (t nil)))) + (looking-at c-brace-list-key)))) ;; this will pick up array/aggregate init lists, even if they are nested. (save-excursion (let ((class-key === modified file 'lisp/progmodes/cc-fonts.el' --- lisp/progmodes/cc-fonts.el 2013-07-27 12:07:43 +0000 +++ lisp/progmodes/cc-fonts.el 2013-09-28 17:17:01 +0000 @@ -1471,13 +1471,22 @@ (let ((paren-state (c-parse-state))) (and (numberp (car paren-state)) - (save-excursion - (goto-char (car paren-state)) - (c-backward-token-2) - (or (looking-at c-brace-list-key) - (progn - (c-backward-token-2) - (looking-at c-brace-list-key))))))) + (c-safe + (save-excursion + (goto-char (car paren-state)) + (let (before-identifier) + (while + (progn + (c-forward-sexp -1) + (cond + ((c-on-identifier) (setq before-identifier t)) + ((and before-identifier + (looking-at c-postfix-decl-spec-key)) + (setq before-identifier nil) + t) + ((looking-at c-brace-list-key) nil) ; "enum" + (t nil)))) + (looking-at c-brace-list-key))))))) (c-forward-token-2) nil) @@ -1565,14 +1574,22 @@ (when (and encl-pos (eq (char-after encl-pos) ?\{) - (save-excursion - (goto-char encl-pos) - (c-backward-syntactic-ws) - (c-simple-skip-symbol-backward) - (or (looking-at c-brace-list-key) ; "enum" - (progn (c-backward-syntactic-ws) - (c-simple-skip-symbol-backward) - (looking-at c-brace-list-key))))) + (c-safe + (save-excursion + (goto-char encl-pos) + (let (before-identifier) + (while + (progn + (c-forward-sexp -1) + (cond + ((c-on-identifier) (setq before-identifier t)) + ((and before-identifier + (looking-at c-postfix-decl-spec-key)) + (setq before-identifier nil) + t) + ((looking-at c-brace-list-key) nil) ; "enum" + (t nil)))) + (looking-at c-brace-list-key))))) (c-syntactic-skip-backward "^{," nil t) (c-put-char-property (1- (point)) 'c-type 'c-decl-id-start) === modified file 'lisp/progmodes/cc-langs.el' --- lisp/progmodes/cc-langs.el 2013-09-21 17:21:29 +0000 +++ lisp/progmodes/cc-langs.el 2013-09-28 17:17:01 +0000 @@ -2040,6 +2040,12 @@ ;; In CORBA PSDL: "as" "const" "implements" "of" "ref")) +(c-lang-defconst c-postfix-decl-spec-key + ;; Regexp matching the keywords in `c-postfix-decl-spec-kwds'. + t (c-make-keywords-re t (c-lang-const c-postfix-decl-spec-kwds))) +(c-lang-defvar c-postfix-decl-spec-key + (c-lang-const c-postfix-decl-spec-key)) + (c-lang-defconst c-nonsymbol-sexp-kwds "Keywords that may be followed by a nonsymbol sexp before whatever construct it's part of continues." ------------------------------------------------------------ revno: 114473 committer: Jan D. branch nick: trunk timestamp: Sat 2013-09-28 12:01:50 +0200 message: Pick up default selection color on OSX when user defaults are not set. * lisp/faces.el (region): Change ns_selection_color to ns_selection_fg_color, add ns_selection_bg_color. * src/nsterm.h (NS_SELECTION_BG_COLOR_DEFAULT): Renamed from NS_SELECTION_COLOR_DEFAULT. (NS_SELECTION_FG_COLOR_DEFAULT): New. * src/nsterm.m (ns_selection_color): Remove. (ns_get_color): Check for ns_selection_(fg|bg)_color using NSColor selectedText(Background)Color. Only for COCOA. (ns_term_init): Remove assignment of ns_selection_color, logic moved to ns_get_color. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-28 03:15:56 +0000 +++ lisp/ChangeLog 2013-09-28 10:01:50 +0000 @@ -1,3 +1,8 @@ +2013-09-28 Jan Djärv + + * faces.el (region): Change ns_selection_color to + ns_selection_fg_color, add ns_selection_bg_color. + 2013-09-28 Leo Liu * progmodes/octave.el (inferior-octave-completion-table) === modified file 'lisp/faces.el' --- lisp/faces.el 2013-09-18 03:53:10 +0000 +++ lisp/faces.el 2013-09-28 10:01:50 +0000 @@ -2259,7 +2259,8 @@ :foreground "gtk_selection_fg_color" :background "gtk_selection_bg_color") (((class color) (min-colors 88) (background light) (type ns)) - :background "ns_selection_color") + :foreground "ns_selection_fg_color" + :background "ns_selection_bg_color") (((class color) (min-colors 88) (background light)) :background "lightgoldenrod2") (((class color) (min-colors 16) (background dark)) === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-28 08:19:33 +0000 +++ src/ChangeLog 2013-09-28 10:01:50 +0000 @@ -1,3 +1,15 @@ +2013-09-28 Jan Djärv + + * nsterm.m (ns_selection_color): Remove. + (ns_get_color): Check for ns_selection_(fg|bg)_color using + NSColor selectedText(Background)Color. Only for COCOA. + (ns_term_init): Remove assignment of ns_selection_color, logic + moved to ns_get_color. + + * nsterm.h (NS_SELECTION_BG_COLOR_DEFAULT): Renamed from + NS_SELECTION_COLOR_DEFAULT. + (NS_SELECTION_FG_COLOR_DEFAULT): New. + 2013-09-28 Eli Zaretskii * xdisp.c (Fdump_tool_bar_row): Ifdef away the body if 'struct === modified file 'src/nsterm.h' --- src/nsterm.h 2013-09-19 07:48:53 +0000 +++ src/nsterm.h 2013-09-28 10:01:50 +0000 @@ -911,7 +911,8 @@ #define NS_SCROLL_BAR_WIDTH_DEFAULT [EmacsScroller scrollerWidth] /* This is to match emacs on other platforms, ugly though it is. */ -#define NS_SELECTION_COLOR_DEFAULT @"LightGoldenrod2"; +#define NS_SELECTION_BG_COLOR_DEFAULT @"LightGoldenrod2"; +#define NS_SELECTION_FG_COLOR_DEFAULT @"Black"; #define RESIZE_HANDLE_SIZE 12 /* Little utility macros */ === modified file 'src/nsterm.m' --- src/nsterm.m 2013-09-22 14:26:10 +0000 +++ src/nsterm.m 2013-09-28 10:01:50 +0000 @@ -179,9 +179,6 @@ no way to control this behavior. */ float ns_antialias_threshold; -/* Used to pick up AppleHighlightColor on OS X */ -NSString *ns_selection_color; - NSArray *ns_send_types =0, *ns_return_types =0, *ns_drag_types =0; NSString *ns_app_name = @"Emacs"; /* default changed later */ @@ -1454,11 +1451,41 @@ /*fprintf (stderr, "ns_get_color: '%s'\n", name); */ block_input (); - if ([nsname isEqualToString: @"ns_selection_color"]) - { - nsname = ns_selection_color; - name = [ns_selection_color UTF8String]; - } +#ifdef NS_IMPL_COCOA + if ([nsname isEqualToString: @"ns_selection_bg_color"]) + { + NSString *defname = [[NSUserDefaults standardUserDefaults] + stringForKey: @"AppleHighlightColor"]; + + if (defname != nil) + nsname = defname; + else if ((new = [NSColor selectedTextBackgroundColor]) != nil) + { + *col = [new colorUsingColorSpaceName: NSCalibratedRGBColorSpace]; + unblock_input (); + return 0; + } + else + nsname = NS_SELECTION_BG_COLOR_DEFAULT; + + name = [nsname UTF8String]; + } + else if ([nsname isEqualToString: @"ns_selection_fg_color"]) + { + /* NOTE: OSX applications normally don't set foreground selection, but + text may be unreadable if we don't. + */ + if ((new = [NSColor selectedTextColor]) != nil) + { + *col = [new colorUsingColorSpaceName: NSCalibratedRGBColorSpace]; + unblock_input (); + return 0; + } + + nsname = NS_SELECTION_FG_COLOR_DEFAULT; + name = [nsname UTF8String]; + } +#endif // NS_IMPL_COCOA /* First, check for some sort of numeric specification. */ hex[0] = '\0'; @@ -4168,11 +4195,6 @@ ns_antialias_threshold = NILP (tmp) ? 10.0 : XFLOATINT (tmp); } - ns_selection_color = [[NSUserDefaults standardUserDefaults] - stringForKey: @"AppleHighlightColor"]; - if (ns_selection_color == nil) - ns_selection_color = NS_SELECTION_COLOR_DEFAULT; - { NSColorList *cl = [NSColorList colorListNamed: @"Emacs"]; ------------------------------------------------------------ revno: 114472 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2013-09-28 11:19:33 +0300 message: Fix compilation under GLYPH_DEBUG, broken by conditional tool_bar_window. src/xdisp.c (Fdump_tool_bar_row): Ifdef away the body if 'struct frame' does not have the tool_bar_window member. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-26 03:46:47 +0000 +++ src/ChangeLog 2013-09-28 08:19:33 +0000 @@ -1,3 +1,8 @@ +2013-09-28 Eli Zaretskii + + * xdisp.c (Fdump_tool_bar_row): Ifdef away the body if 'struct + frame' does not have the tool_bar_window member. + 2013-09-26 Barry O'Reilly Signal error when reading an empty byte-code object (Bug#15405) === modified file 'src/xdisp.c' --- src/xdisp.c 2013-09-24 06:43:20 +0000 +++ src/xdisp.c 2013-09-28 08:19:33 +0000 @@ -18109,9 +18109,13 @@ doc: /* Dump glyph row ROW of the tool-bar of the current frame to stderr. GLYPH 0 means don't dump glyphs. GLYPH 1 means dump glyphs in short form. -GLYPH > 1 or omitted means dump glyphs in long form. */) +GLYPH > 1 or omitted means dump glyphs in long form. + +If there's no tool-bar, or if the tool-bar is not drawn by Emacs, +do nothing. */) (Lisp_Object row, Lisp_Object glyphs) { +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) struct frame *sf = SELECTED_FRAME (); struct glyph_matrix *m = XWINDOW (sf->tool_bar_window)->current_matrix; EMACS_INT vpos; @@ -18121,6 +18125,7 @@ if (vpos >= 0 && vpos < m->nrows) dump_glyph_row (MATRIX_ROW (m, vpos), vpos, TYPE_RANGED_INTEGERP (int, glyphs) ? XINT (glyphs) : 2); +#endif return Qnil; } ------------------------------------------------------------ revno: 114471 committer: Leo Liu branch nick: trunk timestamp: Sat 2013-09-28 11:15:56 +0800 message: * progmodes/octave.el (inferior-octave-completion-table) (inferior-octave-completion-at-point): Minor tweaks. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-28 02:54:27 +0000 +++ lisp/ChangeLog 2013-09-28 03:15:56 +0000 @@ -1,5 +1,8 @@ 2013-09-28 Leo Liu + * progmodes/octave.el (inferior-octave-completion-table) + (inferior-octave-completion-at-point): Minor tweaks. + * textmodes/ispell.el (ispell-lookup-words): Rename from lookup-words. (Bug#15460) (lookup-words): Obsolete. === modified file 'lisp/progmodes/octave.el' --- lisp/progmodes/octave.el 2013-09-28 02:41:48 +0000 +++ lisp/progmodes/octave.el 2013-09-28 03:15:56 +0000 @@ -1,4 +1,4 @@ -;;; octave.el --- editing octave source files under emacs -*- lexical-binding: t; -*- +;;; octave.el --- editing octave source files under emacs -*- lexical-binding: t; -*- ;; Copyright (C) 1997, 2001-2013 Free Software Foundation, Inc. @@ -804,34 +804,30 @@ ;; ;; Use cache to avoid repetitive computation of completions due to ;; bug#11906 - http://debbugs.gnu.org/11906 - which may cause - ;; noticeable delay. CACHE: (CMD TIME VALUE). + ;; noticeable delay. CACHE: (CMD . VALUE). (let ((cache)) (completion-table-dynamic (lambda (command) - (unless (and (equal (car cache) command) - (< (float-time) (+ 5 (cadr cache)))) + (unless (equal (car cache) command) (inferior-octave-send-list-and-digest (list (format "completion_matches ('%s');\n" command))) - (setq cache (list command (float-time) + (setq cache (cons command (delete-consecutive-dups (sort inferior-octave-output-list 'string-lessp))))) - (car (cddr cache)))))) + (cdr cache))))) (defun inferior-octave-completion-at-point () "Return the data to complete the Octave symbol at point." ;; http://debbugs.gnu.org/14300 - (let* ((filecomp (string-match-p - "/" (or (comint--match-partial-filename) ""))) - (end (point)) - (start - (unless filecomp - (save-excursion - (skip-syntax-backward "w_" (comint-line-beginning-position)) - (point))))) - (when (and start (> end start)) - (list start end (completion-table-in-turn + (unless (string-match-p "/" (or (comint--match-partial-filename) "")) + (let ((beg (save-excursion + (skip-syntax-backward "w_" (comint-line-beginning-position)) + (point))) + (end (point))) + (when (and beg (> end beg)) + (list beg end (completion-table-in-turn inferior-octave-completion-table - 'comint-completion-file-name-table))))) + 'comint-completion-file-name-table)))))) (define-obsolete-function-alias 'inferior-octave-complete 'completion-at-point "24.1") ------------------------------------------------------------ revno: 114470 fixes bug: http://debbugs.gnu.org/15460 committer: Leo Liu branch nick: trunk timestamp: Sat 2013-09-28 10:54:27 +0800 message: Rename lookup-words to ispell-lookup-words (ispell-complete-word, ispell-command-loop): All uses changed. * cedet/semantic/texi.el (semantic-analyze-possible-completions): Use ispell-lookup-words instead. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-28 02:41:48 +0000 +++ lisp/ChangeLog 2013-09-28 02:54:27 +0000 @@ -1,3 +1,10 @@ +2013-09-28 Leo Liu + + * textmodes/ispell.el (ispell-lookup-words): Rename from + lookup-words. (Bug#15460) + (lookup-words): Obsolete. + (ispell-complete-word, ispell-command-loop): All uses changed. + 2013-09-28 Rüdiger Sonderfeld * lisp/progmodes/octave.el (octave-mode-map): Bind octave-send-buffer. === modified file 'lisp/cedet/ChangeLog' --- lisp/cedet/ChangeLog 2013-09-20 17:21:28 +0000 +++ lisp/cedet/ChangeLog 2013-09-28 02:54:27 +0000 @@ -1,3 +1,8 @@ +2013-09-28 Leo Liu + + * semantic/texi.el (semantic-analyze-possible-completions): Use + ispell-lookup-words instead. (Bug#15460) + 2013-09-20 Glenn Morris * semantic.el (semantic-new-buffer-fcn-was-run, semantic-active-p): === modified file 'lisp/cedet/semantic/texi.el' --- lisp/cedet/semantic/texi.el 2013-01-01 09:11:05 +0000 +++ lisp/cedet/semantic/texi.el 2013-09-28 02:54:27 +0000 @@ -32,7 +32,7 @@ (require 'texinfo) (defvar ede-minor-mode) -(declare-function lookup-words "ispell") +(declare-function ispell-lookup-words "ispell") (declare-function ede-current-project "ede") (defvar semantic-texi-super-regex @@ -431,7 +431,7 @@ ((member 'word (oref context :prefixclass)) ;; Do completion for words via ispell. (require 'ispell) - (let ((word-list (lookup-words prefix))) + (let ((word-list (ispell-lookup-words prefix))) (mapcar (lambda (f) (semantic-tag f 'word)) word-list)) ) (t nil)) === modified file 'lisp/textmodes/ispell.el' --- lisp/textmodes/ispell.el 2013-08-05 14:26:57 +0000 +++ lisp/textmodes/ispell.el 2013-09-28 02:54:27 +0000 @@ -2407,7 +2407,7 @@ " -- word-list: " (or ispell-complete-word-dict ispell-alternate-dictionary)) - miss (lookup-words new-word) + miss (ispell-lookup-words new-word) choices miss line ispell-choices-win-default-height) (while (and choices ; adjust choices window. @@ -2613,8 +2613,9 @@ (sit-for 5)) (erase-buffer))))))) +(define-obsolete-function-alias 'lookup-words 'ispell-lookup-words "24.4") -(defun lookup-words (word &optional lookup-dict) +(defun ispell-lookup-words (word &optional lookup-dict) "Look up WORD in optional word-list dictionary LOOKUP-DICT. A `*' serves as a wild card. If no wild cards, `look' is used if it exists. Otherwise the variable `ispell-grep-command' contains the command used to @@ -3766,7 +3767,7 @@ ;;;###autoload (defun ispell-complete-word (&optional interior-frag) - "Try to complete the word before or under point (see `lookup-words'). + "Try to complete the word before or under point. If optional INTERIOR-FRAG is non-nil then the word may be a character sequence inside of a word. @@ -3782,11 +3783,12 @@ word (car word) possibilities (or (string= word "") ; Will give you every word - (lookup-words (concat (and interior-frag "*") word - (if (or interior-frag (null ispell-look-p)) - "*")) - (or ispell-complete-word-dict - ispell-alternate-dictionary)))) + (ispell-lookup-words + (concat (and interior-frag "*") word + (if (or interior-frag (null ispell-look-p)) + "*")) + (or ispell-complete-word-dict + ispell-alternate-dictionary)))) (cond ((eq possibilities t) (message "No word to complete")) ((null possibilities) ------------------------------------------------------------ revno: 114469 author: Rüdiger Sonderfeld committer: Leo Liu branch nick: trunk timestamp: Sat 2013-09-28 10:41:48 +0800 message: * lisp/progmodes/octave.el (octave-mode-map): Bind octave-send-buffer. (octave-mode-menu): Add octave-send-buffer. (octave-send-buffer): New function. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-28 02:30:37 +0000 +++ lisp/ChangeLog 2013-09-28 02:41:48 +0000 @@ -1,5 +1,11 @@ 2013-09-28 Rüdiger Sonderfeld + * lisp/progmodes/octave.el (octave-mode-map): Bind octave-send-buffer. + (octave-mode-menu): Add octave-send-buffer. + (octave-send-buffer): New function. + +2013-09-28 Rüdiger Sonderfeld + * lisp/progmodes/octave.el (octave-mode-map): Add key binding for octave-lookfor. (octave-mode-menu): Add octave-lookfor. === modified file 'lisp/progmodes/octave.el' --- lisp/progmodes/octave.el 2013-09-28 02:30:37 +0000 +++ lisp/progmodes/octave.el 2013-09-28 02:41:48 +0000 @@ -24,7 +24,7 @@ ;;; Commentary: -;; This package provides emacs support for Octave. It defines a major +;; This package provides Emacs support for Octave. It defines a major ;; mode for editing Octave code and contains code for interacting with ;; an inferior Octave process using comint. @@ -115,6 +115,7 @@ (define-key map "\C-c\C-ib" 'octave-send-block) (define-key map "\C-c\C-if" 'octave-send-defun) (define-key map "\C-c\C-ir" 'octave-send-region) + (define-key map "\C-c\C-ia" 'octave-send-buffer) (define-key map "\C-c\C-is" 'octave-show-process-buffer) (define-key map "\C-c\C-iq" 'octave-hide-process-buffer) (define-key map "\C-c\C-ik" 'octave-kill-process) @@ -122,6 +123,7 @@ (define-key map "\C-c\C-i\C-b" 'octave-send-block) (define-key map "\C-c\C-i\C-f" 'octave-send-defun) (define-key map "\C-c\C-i\C-r" 'octave-send-region) + (define-key map "\C-c\C-i\C-a" 'octave-send-buffer) (define-key map "\C-c\C-i\C-s" 'octave-show-process-buffer) (define-key map "\C-c\C-i\C-q" 'octave-hide-process-buffer) (define-key map "\C-c\C-i\C-k" 'octave-kill-process) @@ -171,6 +173,7 @@ ["Send Current Block" octave-send-block t] ["Send Current Function" octave-send-defun t] ["Send Region" octave-send-region t] + ["Send Buffer" octave-send-buffer t] ["Show Process Buffer" octave-show-process-buffer t] ["Hide Process Buffer" octave-hide-process-buffer t] ["Kill Process" octave-kill-process t]) @@ -648,7 +651,7 @@ (defvar inferior-octave-mode-syntax-table (let ((table (make-syntax-table octave-mode-syntax-table))) table) - "Syntax table in use in inferior-octave-mode buffers.") + "Syntax table in use in `inferior-octave-mode' buffers.") (defvar inferior-octave-font-lock-keywords (list @@ -1465,6 +1468,11 @@ (if octave-send-show-buffer (display-buffer inferior-octave-buffer))) +(defun octave-send-buffer () + "Send current buffer to the inferior Octave process." + (interactive) + (octave-send-region (point-min) (point-max))) + (defun octave-send-block () "Send current Octave block to the inferior Octave process." (interactive) @@ -1752,7 +1760,7 @@ (defun octave-find-definition (fn) "Find the definition of FN. Functions implemented in C++ can be found if -`octave-source-directories' is set correctly." +variable `octave-source-directories' is set correctly." (interactive (list (octave-completing-read))) (require 'etags) (let ((orig (point))) ------------------------------------------------------------ revno: 114468 author: Rüdiger Sonderfeld committer: Leo Liu branch nick: trunk timestamp: Sat 2013-09-28 10:30:37 +0800 message: * lisp/progmodes/octave.el (octave-mode-map): Add key binding for octave-lookfor. (octave-mode-menu): Add octave-lookfor. (inferior-octave-mode-map, octave-help-mode-map): Bind C-ha to octave-lookfor. (octave-lookfor): New function. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-28 01:07:18 +0000 +++ lisp/ChangeLog 2013-09-28 02:30:37 +0000 @@ -1,3 +1,12 @@ +2013-09-28 Rüdiger Sonderfeld + + * lisp/progmodes/octave.el (octave-mode-map): Add key binding for + octave-lookfor. + (octave-mode-menu): Add octave-lookfor. + (inferior-octave-mode-map, octave-help-mode-map): Bind C-ha to + octave-lookfor. + (octave-lookfor): New function. + 2013-09-28 Stefan Monnier * emacs-lisp/cl-macs.el: === modified file 'lisp/progmodes/octave.el' --- lisp/progmodes/octave.el 2013-09-12 05:43:23 +0000 +++ lisp/progmodes/octave.el 2013-09-28 02:30:37 +0000 @@ -109,6 +109,7 @@ (define-key map "\C-c/" 'smie-close-block) (define-key map "\C-c;" 'octave-update-function-file-comment) (define-key map "\C-hd" 'octave-help) + (define-key map "\C-ha" 'octave-lookfor) (define-key map "\C-c\C-f" 'octave-insert-defun) (define-key map "\C-c\C-il" 'octave-send-line) (define-key map "\C-c\C-ib" 'octave-send-block) @@ -143,6 +144,7 @@ ["Start Octave Process" run-octave t] ["Documentation Lookup" info-lookup-symbol t] ["Help on Function" octave-help t] + ["Search help" octave-lookfor t] ["Find Function Definition" octave-find-definition t] ["Insert Function" octave-insert-defun t] ["Update Function File Comment" octave-update-function-file-comment t] @@ -634,6 +636,7 @@ (define-key map "\M-." 'octave-find-definition) (define-key map "\t" 'completion-at-point) (define-key map "\C-hd" 'octave-help) + (define-key map "\C-ha" 'octave-lookfor) ;; Same as in `shell-mode'. (define-key map "\M-?" 'comint-dynamic-list-filename-completions) (define-key map "\C-c\C-l" 'inferior-octave-dynamic-list-input-ring) @@ -1599,6 +1602,7 @@ (let ((map (make-sparse-keymap))) (define-key map "\M-." 'octave-find-definition) (define-key map "\C-hd" 'octave-help) + (define-key map "\C-ha" 'octave-lookfor) map)) (define-derived-mode octave-help-mode help-mode "OctHelp" @@ -1677,6 +1681,32 @@ :type 'octave-help-function))))) (octave-help-mode))))) +(defun octave-lookfor (str &optional all) + "Search for the string STR in all function help strings. +If ALL is non-nil search the entire help string else only search the first +sentence." + (interactive "sSearch for: \nP") + (inferior-octave-send-list-and-digest + (list (format "lookfor (%s'%s');\n" + (if all "'-all', " "") + str))) + (let ((lines inferior-octave-output-list)) + (when (string-match "error: \\(.*\\)$" (car lines)) + (error "%s" (match-string 1 (car lines)))) + (with-help-window octave-help-buffer + (princ (mapconcat 'identity lines "\n")) + (with-current-buffer octave-help-buffer + ;; Bound to t so that `help-buffer' returns current buffer for + ;; `help-setup-xref'. + (let ((help-xref-following t)) + (help-setup-xref (list 'octave-lookfor str all) + (called-interactively-p 'interactive))) + (goto-char (point-min)) + (while (re-search-forward "^\\([^[:blank:]]+\\) " nil 'noerror) + (make-text-button (match-beginning 1) (match-end 1) + :type 'octave-help-function)) + (octave-help-mode))))) + (defcustom octave-source-directories nil "A list of directories for Octave sources. If the environment variable OCTAVE_SRCDIR is set, it is searched first." ------------------------------------------------------------ revno: 114467 committer: Xue Fuqiao branch nick: trunk timestamp: Sat 2013-09-28 09:52:23 +0800 message: Fix typo. diff: === modified file 'doc/lispref/sequences.texi' --- doc/lispref/sequences.texi 2013-09-28 01:48:06 +0000 +++ doc/lispref/sequences.texi 2013-09-28 01:52:23 +0000 @@ -719,7 +719,7 @@ @c `bool-vector-intersection' @c `bool-vector-set-difference' @c `bool-vector-not' -@c `bool-vector-subset' +@c `bool-vector-subsetp' @c `bool-vector-count-matches' @c `bool-vector-count-matches-at' === modified file 'etc/NEWS' --- etc/NEWS 2013-09-26 13:46:50 +0000 +++ etc/NEWS 2013-09-28 01:52:23 +0000 @@ -647,7 +647,7 @@ *** `bool-vector-intersection' *** `bool-vector-set-difference' *** `bool-vector-not' -*** `bool-vector-subset' +*** `bool-vector-subsetp' *** `bool-vector-count-matches' *** `bool-vector-count-matches-at' ------------------------------------------------------------ revno: 114466 committer: Xue Fuqiao branch nick: trunk timestamp: Sat 2013-09-28 09:48:06 +0800 message: Comment. diff: === modified file 'doc/lispref/sequences.texi' --- doc/lispref/sequences.texi 2013-01-01 09:11:05 +0000 +++ doc/lispref/sequences.texi 2013-09-28 01:48:06 +0000 @@ -713,6 +713,16 @@ and @code{nil} otherwise. @end defun +@c FIXME: Document these functions: +@c `bool-vector-exclusive-or' +@c `bool-vector-union' +@c `bool-vector-intersection' +@c `bool-vector-set-difference' +@c `bool-vector-not' +@c `bool-vector-subset' +@c `bool-vector-count-matches' +@c `bool-vector-count-matches-at' + Here is an example of creating, examining, and updating a bool-vector. Note that the printed form represents up to 8 boolean values as a single character. === modified file 'etc/ChangeLog' --- etc/ChangeLog 2013-09-22 09:31:55 +0000 +++ etc/ChangeLog 2013-09-28 01:48:06 +0000 @@ -2,7 +2,7 @@ * NEWS: Mention new bool-vector functionality. -aaaa2013-09-15 Jan Djärv +2013-09-15 Jan Djärv * NEWS: Mention the macfont backend. ------------------------------------------------------------ revno: 114465 fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15326 committer: Stefan Monnier branch nick: trunk timestamp: Fri 2013-09-27 21:07:18 -0400 message: * lisp/emacs-lisp/cl-macs.el: (cl--loop-destr-temps): Remove. (cl--loop-iterator-function): Rename from cl--loop-map-form and change its convention. (cl--loop-set-iterator-function): New function. (cl-loop): Adjust accordingly, so as not to use cl-subst. (cl--parse-loop-clause): Adjust all uses of cl--loop-map-form. Bind `it' with `let' instead of substituting it with `cl-subst'. (cl--unused-var-p): New function. (cl--loop-let): Don't use the cl--loop-destr-temps hack any more. Eliminate some unused variable warnings. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-27 06:46:49 +0000 +++ lisp/ChangeLog 2013-09-28 01:07:18 +0000 @@ -1,3 +1,17 @@ +2013-09-28 Stefan Monnier + + * emacs-lisp/cl-macs.el: + (cl--loop-destr-temps): Remove. + (cl--loop-iterator-function): Rename from cl--loop-map-form and change + its convention. + (cl--loop-set-iterator-function): New function. + (cl-loop): Adjust accordingly, so as not to use cl-subst. + (cl--parse-loop-clause): Adjust all uses of cl--loop-map-form. + Bind `it' with `let' instead of substituting it with `cl-subst'. + (cl--unused-var-p): New function. + (cl--loop-let): Don't use the cl--loop-destr-temps hack any more. + Eliminate some unused variable warnings (bug#15326). + 2013-09-27 Tassilo Horn * doc-view.el (doc-view-scale-reset): Rename from === modified file 'lisp/emacs-lisp/cl-macs.el' --- lisp/emacs-lisp/cl-macs.el 2013-09-25 22:39:53 +0000 +++ lisp/emacs-lisp/cl-macs.el 2013-09-28 01:07:18 +0000 @@ -756,14 +756,22 @@ ;;; The "cl-loop" macro. (defvar cl--loop-args) (defvar cl--loop-accum-var) (defvar cl--loop-accum-vars) -(defvar cl--loop-bindings) (defvar cl--loop-body) (defvar cl--loop-destr-temps) -(defvar cl--loop-finally) (defvar cl--loop-finish-flag) +(defvar cl--loop-bindings) (defvar cl--loop-body) +(defvar cl--loop-finally) +(defvar cl--loop-finish-flag) ;Symbol set to nil to exit the loop? (defvar cl--loop-first-flag) -(defvar cl--loop-initially) (defvar cl--loop-map-form) (defvar cl--loop-name) +(defvar cl--loop-initially) (defvar cl--loop-iterator-function) +(defvar cl--loop-name) (defvar cl--loop-result) (defvar cl--loop-result-explicit) (defvar cl--loop-result-var) (defvar cl--loop-steps) (defvar cl--loop-symbol-macs) +(defun cl--loop-set-iterator-function (kind iterator) + (if cl--loop-iterator-function + ;; FIXME: Of course, we could make it work, but why bother. + (error "Iteration on %S does not support this combination" kind) + (setq cl--loop-iterator-function iterator))) + ;;;###autoload (defmacro cl-loop (&rest loop-args) "The Common Lisp `loop' macro. @@ -817,13 +825,35 @@ (delq nil (delq t (cl-copy-list loop-args)))))) `(cl-block nil (while t ,@loop-args)) (let ((cl--loop-args loop-args) (cl--loop-name nil) (cl--loop-bindings nil) - (cl--loop-body nil) (cl--loop-steps nil) - (cl--loop-result nil) (cl--loop-result-explicit nil) - (cl--loop-result-var nil) (cl--loop-finish-flag nil) + (cl--loop-body nil) (cl--loop-steps nil) + (cl--loop-result nil) (cl--loop-result-explicit nil) + (cl--loop-result-var nil) (cl--loop-finish-flag nil) (cl--loop-accum-var nil) (cl--loop-accum-vars nil) (cl--loop-initially nil) (cl--loop-finally nil) - (cl--loop-map-form nil) (cl--loop-first-flag nil) - (cl--loop-destr-temps nil) (cl--loop-symbol-macs nil)) + (cl--loop-iterator-function nil) (cl--loop-first-flag nil) + (cl--loop-symbol-macs nil)) + ;; Here is more or less how those dynbind vars are used after looping + ;; over cl--parse-loop-clause: + ;; + ;; (cl-block ,cl--loop-name + ;; (cl-symbol-macrolet ,cl--loop-symbol-macs + ;; (foldl #'cl--loop-let + ;; `((,cl--loop-result-var) + ;; ((,cl--loop-first-flag t)) + ;; ((,cl--loop-finish-flag t)) + ;; ,@cl--loop-bindings) + ;; ,@(nreverse cl--loop-initially) + ;; (while ;(well: cl--loop-iterator-function) + ;; ,(car (cl--loop-build-ands (nreverse cl--loop-body))) + ;; ,@(cadr (cl--loop-build-ands (nreverse cl--loop-body))) + ;; ,@(nreverse cl--loop-steps) + ;; (setq ,cl--loop-first-flag nil)) + ;; (if (not ,cl--loop-finish-flag) ;FIXME: Why `if' vs `progn'? + ;; ,cl--loop-result-var + ;; ,@(nreverse cl--loop-finally) + ;; ,(or cl--loop-result-explicit + ;; cl--loop-result))))) + ;; (setq cl--loop-args (append cl--loop-args '(cl-end-loop))) (while (not (eq (car cl--loop-args) 'cl-end-loop)) (cl--parse-loop-clause)) @@ -839,15 +869,15 @@ (while-body (nconc (cadr ands) (nreverse cl--loop-steps))) (body (append (nreverse cl--loop-initially) - (list (if cl--loop-map-form + (list (if cl--loop-iterator-function `(cl-block --cl-finish-- - ,(cl-subst - (if (eq (car ands) t) while-body - (cons `(or ,(car ands) - (cl-return-from --cl-finish-- - nil)) - while-body)) - '--cl-map cl--loop-map-form)) + ,(funcall cl--loop-iterator-function + (if (eq (car ands) t) while-body + (cons `(or ,(car ands) + (cl-return-from + --cl-finish-- + nil)) + while-body)))) `(while ,(car ands) ,@while-body))) (if cl--loop-finish-flag (if (equal epilogue '(nil)) (list cl--loop-result-var) @@ -1216,15 +1246,18 @@ (make-symbol "--cl-var--")))) (if (memq word '(hash-value hash-values)) (setq var (prog1 other (setq other var)))) - (setq cl--loop-map-form - `(maphash (lambda (,var ,other) . --cl-map) ,table)))) + (cl--loop-set-iterator-function + 'hash-tables (lambda (body) + `(maphash (lambda (,var ,other) . ,body) + ,table))))) ((memq word '(symbol present-symbol external-symbol symbols present-symbols external-symbols)) (let ((ob (and (memq (car cl--loop-args) '(in of)) (cl--pop2 cl--loop-args)))) - (setq cl--loop-map-form - `(mapatoms (lambda (,var) . --cl-map) ,ob)))) + (cl--loop-set-iterator-function + 'symbols (lambda (body) + `(mapatoms (lambda (,var) . ,body) ,ob))))) ((memq word '(overlay overlays extent extents)) (let ((buf nil) (from nil) (to nil)) @@ -1234,11 +1267,12 @@ ((eq (car cl--loop-args) 'to) (setq to (cl--pop2 cl--loop-args))) (t (setq buf (cl--pop2 cl--loop-args))))) - (setq cl--loop-map-form - `(cl--map-overlays - (lambda (,var ,(make-symbol "--cl-var--")) - (progn . --cl-map) nil) - ,buf ,from ,to)))) + (cl--loop-set-iterator-function + 'overlays (lambda (body) + `(cl--map-overlays + (lambda (,var ,(make-symbol "--cl-var--")) + (progn . ,body) nil) + ,buf ,from ,to))))) ((memq word '(interval intervals)) (let ((buf nil) (prop nil) (from nil) (to nil) @@ -1255,10 +1289,11 @@ (if (and (consp var) (symbolp (car var)) (symbolp (cdr var))) (setq var1 (car var) var2 (cdr var)) (push (list var `(cons ,var1 ,var2)) loop-for-sets)) - (setq cl--loop-map-form - `(cl--map-intervals - (lambda (,var1 ,var2) . --cl-map) - ,buf ,prop ,from ,to)))) + (cl--loop-set-iterator-function + 'intervals (lambda (body) + `(cl--map-intervals + (lambda (,var1 ,var2) . ,body) + ,buf ,prop ,from ,to))))) ((memq word key-types) (or (memq (car cl--loop-args) '(in of)) @@ -1274,10 +1309,11 @@ (make-symbol "--cl-var--")))) (if (memq word '(key-binding key-bindings)) (setq var (prog1 other (setq other var)))) - (setq cl--loop-map-form - `(,(if (memq word '(key-seq key-seqs)) - 'cl--map-keymap-recursively 'map-keymap) - (lambda (,var ,other) . --cl-map) ,cl-map)))) + (cl--loop-set-iterator-function + 'keys (lambda (body) + `(,(if (memq word '(key-seq key-seqs)) + 'cl--map-keymap-recursively 'map-keymap) + (lambda (,var ,other) . ,body) ,cl-map))))) ((memq word '(frame frames screen screens)) (let ((temp (make-symbol "--cl-var--"))) @@ -1448,12 +1484,9 @@ (if (eq word 'unless) (setq then (prog1 else (setq else then)))) (let ((form (cons (if simple (cons 'progn (nth 1 then)) (nth 2 then)) (if simple (nth 1 else) (list (nth 2 else)))))) - (if (cl--expr-contains form 'it) - (let ((temp (make-symbol "--cl-var--"))) - (push (list temp) cl--loop-bindings) - (setq form `(if (setq ,temp ,cond) - ,@(cl-subst temp 'it form)))) - (setq form `(if ,cond ,@form))) + (setq form (if (cl--expr-contains form 'it) + `(let ((it ,cond)) (if it ,@form)) + `(if ,cond ,@form))) (push (if simple `(progn ,form t) form) cl--loop-body)))) ((memq word '(do doing)) @@ -1478,36 +1511,50 @@ (if (eq (car cl--loop-args) 'and) (progn (pop cl--loop-args) (cl--parse-loop-clause))))) -(defun cl--loop-let (specs body par) ; uses loop-* - (let ((p specs) (temps nil) (new nil)) - (while (and p (or (symbolp (car-safe (car p))) (null (cl-cadar p)))) - (setq p (cdr p))) - (and par p - (progn - (setq par nil p specs) - (while p - (or (macroexp-const-p (cl-cadar p)) - (let ((temp (make-symbol "--cl-var--"))) - (push (list temp (cl-cadar p)) temps) - (setcar (cdar p) temp))) - (setq p (cdr p))))) +(defun cl--unused-var-p (sym) + (or (null sym) (eq ?_ (aref (symbol-name sym) 0)))) + +(defun cl--loop-let (specs body par) ; modifies cl--loop-bindings + "Build an expression equivalent to (let SPECS BODY). +SPECS can include bindings using `cl-loop's destructuring (not to be +confused with the patterns of `cl-destructuring-bind'). +If PAR is nil, do the bindings step by step, like `let*'. +If BODY is `setq', then use SPECS for assignments rather than for bindings." + (let ((temps nil) (new nil)) + (when par + (let ((p specs)) + (while (and p (or (symbolp (car-safe (car p))) (null (cl-cadar p)))) + (setq p (cdr p))) + (when p + (setq par nil) + (dolist (spec specs) + (or (macroexp-const-p (cadr spec)) + (let ((temp (make-symbol "--cl-var--"))) + (push (list temp (cadr spec)) temps) + (setcar (cdr spec) temp))))))) (while specs - (if (and (consp (car specs)) (listp (caar specs))) - (let* ((spec (caar specs)) (nspecs nil) - (expr (cadr (pop specs))) - (temp - (cdr (or (assq spec cl--loop-destr-temps) - (car (push (cons spec - (or (last spec 0) - (make-symbol "--cl-var--"))) - cl--loop-destr-temps)))))) - (push (list temp expr) new) - (while (consp spec) - (push (list (pop spec) - (and expr (list (if spec 'pop 'car) temp))) - nspecs)) - (setq specs (nconc (nreverse nspecs) specs))) - (push (pop specs) new))) + (let* ((binding (pop specs)) + (spec (car-safe binding))) + (if (and (consp binding) (or (consp spec) (cl--unused-var-p spec))) + (let* ((nspecs nil) + (expr (car (cdr-safe binding))) + (temp (last spec 0))) + (if (and (cl--unused-var-p temp) (null expr)) + nil ;; Don't bother declaring/setting `temp' since it won't + ;; be used when `expr' is nil, anyway. + (when (and (eq body 'setq) (cl--unused-var-p temp)) + ;; Prefer a fresh uninterned symbol over "_to", to avoid + ;; warnings that we set an unused variable. + (setq temp (make-symbol "--cl-var--")) + ;; Make sure this temp variable is locally declared. + (push (list (list temp)) cl--loop-bindings)) + (push (list temp expr) new)) + (while (consp spec) + (push (list (pop spec) + (and expr (list (if spec 'pop 'car) temp))) + nspecs)) + (setq specs (nconc (nreverse nspecs) specs))) + (push binding new)))) (if (eq body 'setq) (let ((set (cons (if par 'cl-psetq 'setq) (apply 'nconc (nreverse new))))) ------------------------------------------------------------ revno: 114464 committer: Tassilo Horn branch nick: trunk timestamp: Fri 2013-09-27 08:46:49 +0200 message: * doc-view.el (doc-view-scale-reset): Rename from `doc-view-reset-zoom-level'. (doc-view-scale-adjust): New command. (doc-view-mode-map): Remap `text-scale-adjust' bindings to `doc-view-scale-adjust'. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-26 19:05:50 +0000 +++ lisp/ChangeLog 2013-09-27 06:46:49 +0000 @@ -1,3 +1,11 @@ +2013-09-27 Tassilo Horn + + * doc-view.el (doc-view-scale-reset): Rename from + `doc-view-reset-zoom-level'. + (doc-view-scale-adjust): New command. + (doc-view-mode-map): Remap `text-scale-adjust' bindings to + `doc-view-scale-adjust'. + 2013-09-26 Tassilo Horn * doc-view.el (doc-view-reset-zoom-level): New command. === modified file 'lisp/doc-view.el' --- lisp/doc-view.el 2013-09-26 19:05:50 +0000 +++ lisp/doc-view.el 2013-09-27 06:46:49 +0000 @@ -407,9 +407,8 @@ (define-key map "+" 'doc-view-enlarge) (define-key map "=" 'doc-view-enlarge) (define-key map "-" 'doc-view-shrink) - (define-key map [remap text-scale-adjust] 'doc-view-enlarge) - (define-key map (kbd "C-x C--") 'doc-view-shrink) - (define-key map (kbd "C-x C-0") 'doc-view-reset-zoom-level) + (define-key map "0" 'doc-view-scale-reset) + (define-key map [remap text-scale-adjust] 'doc-view-scale-adjust) ;; Fit the image to the window (define-key map "W" 'doc-view-fit-width-to-window) (define-key map "H" 'doc-view-fit-height-to-window) @@ -757,7 +756,7 @@ (interactive (list doc-view-shrink-factor)) (doc-view-enlarge (/ 1.0 factor))) -(defun doc-view-reset-zoom-level () +(defun doc-view-scale-reset () "Reset the document size/zoom level to the initial one." (interactive) (if (and doc-view-scale-internally @@ -771,6 +770,24 @@ (kill-local-variable 'doc-view-resolution) (doc-view-reconvert-doc))) +(defun doc-view-scale-adjust (factor) + "Adjust the scale of the DocView page images by FACTOR. +FACTOR defaults to `doc-view-shrink-factor'. + +The actual adjustment made depends on the final component of the +key-binding used to invoke the command, with all modifiers removed: + + +, = Increase the image scale by FACTOR + - Decrease the image scale by FACTOR + 0 Reset the image scale to the initial scale" + (interactive (list doc-view-shrink-factor)) + (let ((ev last-command-event) + (echo-keystrokes nil)) + (pcase (event-basic-type ev) + ((or ?+ ?=) (doc-view-enlarge factor)) + (?- (doc-view-shrink factor)) + (?0 (doc-view-scale-reset))))) + (defun doc-view-fit-width-to-window () "Fit the image width to the window width." (interactive) ------------------------------------------------------------ revno: 114463 committer: Tassilo Horn branch nick: trunk timestamp: Thu 2013-09-26 21:05:50 +0200 message: * doc-view.el (doc-view-reset-zoom-level): New command. (doc-view-mode-map): Remap text-scale-adjust bindings to doc-view zoom commands (bug#15466). diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-26 13:46:50 +0000 +++ lisp/ChangeLog 2013-09-26 19:05:50 +0000 @@ -1,3 +1,9 @@ +2013-09-26 Tassilo Horn + + * doc-view.el (doc-view-reset-zoom-level): New command. + (doc-view-mode-map): Remap text-scale-adjust bindings to doc-view + zoom commands (bug#15466). + 2013-09-26 Kenichi Handa * international/quail.el (quail-help): Make it not a command. === modified file 'lisp/doc-view.el' --- lisp/doc-view.el 2013-09-18 04:38:49 +0000 +++ lisp/doc-view.el 2013-09-26 19:05:50 +0000 @@ -405,7 +405,11 @@ (define-key map (kbd "RET") 'image-next-line) ;; Zoom in/out. (define-key map "+" 'doc-view-enlarge) + (define-key map "=" 'doc-view-enlarge) (define-key map "-" 'doc-view-shrink) + (define-key map [remap text-scale-adjust] 'doc-view-enlarge) + (define-key map (kbd "C-x C--") 'doc-view-shrink) + (define-key map (kbd "C-x C-0") 'doc-view-reset-zoom-level) ;; Fit the image to the window (define-key map "W" 'doc-view-fit-width-to-window) (define-key map "H" 'doc-view-fit-height-to-window) @@ -753,6 +757,20 @@ (interactive (list doc-view-shrink-factor)) (doc-view-enlarge (/ 1.0 factor))) +(defun doc-view-reset-zoom-level () + "Reset the document size/zoom level to the initial one." + (interactive) + (if (and doc-view-scale-internally + (eq (plist-get (cdr (doc-view-current-image)) :type) + 'imagemagick)) + (progn + (kill-local-variable 'doc-view-image-width) + (doc-view-insert-image + (plist-get (cdr (doc-view-current-image)) :file) + :width doc-view-image-width)) + (kill-local-variable 'doc-view-resolution) + (doc-view-reconvert-doc))) + (defun doc-view-fit-width-to-window () "Fit the image width to the window width." (interactive) ------------------------------------------------------------ revno: 114462 committer: Xue Fuqiao branch nick: trunk timestamp: Thu 2013-09-26 22:22:49 +0800 message: * doc/emacs/dired.texi (Flagging Many Files): Use @emph instead of @strong. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2013-09-26 13:42:29 +0000 +++ doc/emacs/ChangeLog 2013-09-26 14:22:49 +0000 @@ -1,5 +1,7 @@ 2013-09-26 Xue Fuqiao + * dired.texi (Flagging Many Files): Use @emph instead of @strong. + * emacs.texi (Intro): Minor cleanup. 2013-09-22 Xue Fuqiao === modified file 'doc/emacs/dired.texi' --- doc/emacs/dired.texi 2013-01-01 09:11:05 +0000 +++ doc/emacs/dired.texi 2013-09-26 14:22:49 +0000 @@ -281,9 +281,9 @@ the backup files for deletion: all but the oldest few and newest few backups of any one file. Normally, the number of newest versions kept for each file is given by the variable @code{dired-kept-versions} -(@strong{not} @code{kept-new-versions}; that applies only when -saving). The number of oldest versions to keep is given by the -variable @code{kept-old-versions}. +(@emph{not} @code{kept-new-versions}; that applies only when saving). +The number of oldest versions to keep is given by the variable +@code{kept-old-versions}. Period with a positive numeric argument, as in @kbd{C-u 3 .}, specifies the number of newest versions to keep, overriding ------------------------------------------------------------ revno: 114461 [merge] committer: K. Handa branch nick: trunk timestamp: Thu 2013-09-26 22:51:34 +0900 message: international/quail.el (quail-help): Make it not a command. diff: === modified file 'etc/NEWS' --- etc/NEWS 2013-09-22 09:31:55 +0000 +++ etc/NEWS 2013-09-26 13:46:50 +0000 @@ -154,6 +154,9 @@ some enhancements, like the ability to restore deleted frames. Command `frame-configuration-to-register' is still available, but unbound. +** The command `quail-help' is deleted. Use `C-h C-\' +(`describe-input-method') instead. + * Editing Changes in Emacs 24.4 === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-26 00:46:29 +0000 +++ lisp/ChangeLog 2013-09-26 13:46:50 +0000 @@ -1,3 +1,7 @@ +2013-09-26 Kenichi Handa + + * international/quail.el (quail-help): Make it not a command. + 2013-09-26 Leo Liu * minibuffer.el (completion-all-sorted-completions): Make args === modified file 'lisp/international/quail.el' --- lisp/international/quail.el 2013-08-09 21:22:44 +0000 +++ lisp/international/quail.el 2013-09-26 13:46:50 +0000 @@ -2486,7 +2486,6 @@ "Show brief description of the current Quail package. Optional arg PACKAGE specifies the name of alternative Quail package to describe." - (interactive) (require 'help-mode) (let ((help-xref-mule-regexp help-xref-mule-regexp-template) (mb enable-multibyte-characters) ------------------------------------------------------------ revno: 114460 committer: Xue Fuqiao branch nick: trunk timestamp: Thu 2013-09-26 21:42:29 +0800 message: * doc/emacs/emacs.texi (Intro): Minor cleanup. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2013-09-22 02:13:44 +0000 +++ doc/emacs/ChangeLog 2013-09-26 13:42:29 +0000 @@ -1,3 +1,7 @@ +2013-09-26 Xue Fuqiao + + * emacs.texi (Intro): Minor cleanup. + 2013-09-22 Xue Fuqiao * fixit.texi (Transpose): === modified file 'doc/emacs/emacs.texi' --- doc/emacs/emacs.texi 2013-08-31 19:49:52 +0000 +++ doc/emacs/emacs.texi 2013-09-26 13:42:29 +0000 @@ -1469,7 +1469,7 @@ You are reading about GNU Emacs, the GNU incarnation of the advanced, self-documenting, customizable, extensible editor Emacs. -(The `G' in `GNU' is not silent.) +(The @samp{G} in @acronym{GNU, @acronym{GNU}'s Not Unix} is not silent.) We call Emacs @dfn{advanced} because it can do much more than simple insertion and deletion of text. It can control subprocesses, indent ------------------------------------------------------------ revno: 114459 committer: Barry O'Reilly branch nick: trunk timestamp: Wed 2013-09-25 23:46:47 -0400 message: Signal error when reading an empty byte-code object (Bug#15405) * lread.c (read1): signal error * alloc.c (make_byte_code): eassert header size (sweep_vectors): change an int to size_t diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-24 15:29:27 +0000 +++ src/ChangeLog 2013-09-26 03:46:47 +0000 @@ -1,3 +1,10 @@ +2013-09-26 Barry O'Reilly + + Signal error when reading an empty byte-code object (Bug#15405) + * lread.c (read1): signal error + * alloc.c (make_byte_code): eassert header size + (sweep_vectors): change an int to size_t + 2013-09-24 Paul Eggert * dispnew.c (clear_glyph_row, copy_row_except_pointers): Use enums === modified file 'src/alloc.c' --- src/alloc.c 2013-09-24 06:43:20 +0000 +++ src/alloc.c 2013-09-26 03:46:47 +0000 @@ -2889,7 +2889,7 @@ free_this_block = 1; else { - int tmp; + size_t tmp; SETUP_ON_FREE_LIST (vector, total_bytes, tmp); } } @@ -3132,6 +3132,8 @@ void make_byte_code (struct Lisp_Vector *v) { + /* Don't allow the global zero_vector to become a byte code object. */ + eassert(0 < v->header.size); if (v->header.size > 1 && STRINGP (v->u.contents[1]) && STRING_MULTIBYTE (v->u.contents[1])) /* BYTECODE-STRING must have been produced by Emacs 20.2 or the === modified file 'src/lread.c' --- src/lread.c 2013-09-24 06:43:20 +0000 +++ src/lread.c 2013-09-26 03:46:47 +0000 @@ -2597,7 +2597,10 @@ build them using function calls. */ Lisp_Object tmp; tmp = read_vector (readcharfun, 1); - make_byte_code (XVECTOR (tmp)); + struct Lisp_Vector* vec = XVECTOR (tmp); + if (vec->header.size==0) + invalid_syntax ("Empty byte-code object"); + make_byte_code (vec); return tmp; } if (c == '(') ------------------------------------------------------------ revno: 114458 committer: Leo Liu branch nick: trunk timestamp: Thu 2013-09-26 08:46:29 +0800 message: * minibuffer.el (completion-all-sorted-completions): Make args optional as they are. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-25 22:39:53 +0000 +++ lisp/ChangeLog 2013-09-26 00:46:29 +0000 @@ -1,3 +1,8 @@ +2013-09-26 Leo Liu + + * minibuffer.el (completion-all-sorted-completions): Make args + optional as they are. + 2013-09-25 Daniel Colascione * emacs-lisp/cl-macs.el (cl-type-spec): Tell edebug what type === modified file 'lisp/minibuffer.el' --- lisp/minibuffer.el 2013-09-16 19:09:24 +0000 +++ lisp/minibuffer.el 2013-09-26 00:46:29 +0000 @@ -1100,7 +1100,7 @@ (if (eq (car bounds) base) md-at-point (completion-metadata (substring string 0 base) table pred)))) -(defun completion-all-sorted-completions (start end) +(defun completion-all-sorted-completions (&optional start end) (or completion-all-sorted-completions (let* ((start (or start (minibuffer-prompt-end))) (end (or end (point-max))) ------------------------------------------------------------ revno: 114457 committer: Daniel Colascione branch nick: trunk timestamp: Wed 2013-09-25 14:39:53 -0800 message: * emacs-lisp/cl-macs.el (cl-type-spec): Tell edebug what type specs are and that they're not evaluated. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-24 17:34:51 +0000 +++ lisp/ChangeLog 2013-09-25 22:39:53 +0000 @@ -1,3 +1,8 @@ +2013-09-25 Daniel Colascione + + * emacs-lisp/cl-macs.el (cl-type-spec): Tell edebug what type + specs are and that they're not evaluated. + 2013-09-24 Sam Steingold * midnight.el (clean-buffer-list-kill-regexps) === modified file 'lisp/emacs-lisp/cl-macs.el' --- lisp/emacs-lisp/cl-macs.el 2013-09-19 20:31:54 +0000 +++ lisp/emacs-lisp/cl-macs.el 2013-09-25 22:39:53 +0000 @@ -209,6 +209,8 @@ (def-edebug-spec cl-&key-arg (&or ([&or (symbolp arg) arg] &optional def-form arg) arg)) +(def-edebug-spec cl-type-spec sexp) + (defconst cl--lambda-list-keywords '(&optional &rest &key &allow-other-keys &aux &whole &body &environment)) ------------------------------------------------------------ revno: 114456 committer: Glenn Morris branch nick: trunk timestamp: Wed 2013-09-25 06:17:46 -0400 message: Auto-commit of generated files. diff: === modified file 'autogen/configure' --- autogen/configure 2013-09-23 10:17:40 +0000 +++ autogen/configure 2013-09-25 10:17:46 +0000 @@ -7602,12 +7602,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Werror__Wunknown_warning_option=yes else gl_cv_warn_c__Werror__Wunknown_warning_option=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -7639,12 +7640,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_switch=yes else gl_cv_warn_c__Wno_switch=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -7675,12 +7677,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_tautological_constant_out_of_range_compare=yes else gl_cv_warn_c__Wno_tautological_constant_out_of_range_compare=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -7711,12 +7714,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_pointer_sign=yes else gl_cv_warn_c__Wno_pointer_sign=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -7760,12 +7764,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Werror=yes else gl_cv_warn_c__Werror=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -8035,6 +8040,8 @@ -Wvla \ -Wvolatile-register-var \ -Wwrite-strings \ + -fdiagnostics-show-option \ + -funit-at-a-time \ \ ; do gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item" @@ -8092,12 +8099,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : eval "$as_gl_Warn=yes" else eval "$as_gl_Warn=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -8131,12 +8139,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_missing_field_initializers=yes else gl_cv_warn_c__Wno_missing_field_initializers=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -8167,12 +8176,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_sign_compare=yes else gl_cv_warn_c__Wno_sign_compare=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -8203,12 +8213,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_type_limits=yes else gl_cv_warn_c__Wno_type_limits=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -8239,12 +8250,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_switch=yes else gl_cv_warn_c__Wno_switch=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -8275,12 +8287,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_unused_parameter=yes else gl_cv_warn_c__Wno_unused_parameter=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -8311,12 +8324,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_format_nonliteral=yes else gl_cv_warn_c__Wno_format_nonliteral=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -8350,12 +8364,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_logical_op=yes else gl_cv_warn_c__Wno_logical_op=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -8389,12 +8404,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_format_extra_args=yes else gl_cv_warn_c__Wno_format_extra_args=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -8425,12 +8441,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_tautological_constant_out_of_range_compare=yes else gl_cv_warn_c__Wno_tautological_constant_out_of_range_compare=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -8461,12 +8478,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_unused_command_line_argument=yes else gl_cv_warn_c__Wno_unused_command_line_argument=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -8497,12 +8515,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_unused_value=yes else gl_cv_warn_c__Wno_unused_value=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -8516,79 +8535,6 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -fdiagnostics-show-option" >&5 -$as_echo_n "checking whether C compiler handles -fdiagnostics-show-option... " >&6; } -if test "${gl_cv_warn_c__fdiagnostics_show_option+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - - gl_save_compiler_FLAGS="$CFLAGS" - as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -fdiagnostics-show-option" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_warn_c__fdiagnostics_show_option=yes -else - gl_cv_warn_c__fdiagnostics_show_option=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$gl_save_compiler_FLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__fdiagnostics_show_option" >&5 -$as_echo "$gl_cv_warn_c__fdiagnostics_show_option" >&6; } -if test "x$gl_cv_warn_c__fdiagnostics_show_option" = x""yes; then : - as_fn_append WARN_CFLAGS " -fdiagnostics-show-option" -fi - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -funit-at-a-time" >&5 -$as_echo_n "checking whether C compiler handles -funit-at-a-time... " >&6; } -if test "${gl_cv_warn_c__funit_at_a_time+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - - gl_save_compiler_FLAGS="$CFLAGS" - as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -funit-at-a-time" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_warn_c__funit_at_a_time=yes -else - gl_cv_warn_c__funit_at_a_time=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$gl_save_compiler_FLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__funit_at_a_time" >&5 -$as_echo "$gl_cv_warn_c__funit_at_a_time" >&6; } -if test "x$gl_cv_warn_c__funit_at_a_time" = x""yes; then : - as_fn_append WARN_CFLAGS " -funit-at-a-time" -fi - - - - $as_echo "#define lint 1" >>confdefs.h @@ -10554,12 +10500,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_unused_variable=yes else gl_cv_warn_c__Wno_unused_variable=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -10590,12 +10537,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_unused_but_set_variable=yes else gl_cv_warn_c__Wno_unused_but_set_variable=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi @@ -10626,12 +10574,13 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : gl_cv_warn_c__Wno_unused_but_set_parameter=yes else gl_cv_warn_c__Wno_unused_but_set_parameter=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi ------------------------------------------------------------ revno: 114455 committer: Paul Eggert branch nick: trunk timestamp: Tue 2013-09-24 20:44:34 -0700 message: Merge from gnulib. This incorporates: 2013-09-24 manywarnings: enable nicer gcc warning messages 2013-09-23 warnings: port --enable-gcc-warnings to Solaris Studio 12.3 2013-09-21 timespec: use the new TIMESPEC_RESOLUTION elsewhere * configure.ac (WERROR_CFLAGS): Omit -fdiagnostics-show-option and -funit-at-a-time, since manywarnings does that for us now. diff: === modified file 'ChangeLog' --- ChangeLog 2013-09-23 07:12:01 +0000 +++ ChangeLog 2013-09-25 03:44:34 +0000 @@ -1,3 +1,12 @@ +2013-09-25 Paul Eggert + + Merge from gnulib, incorporating: + 2013-09-24 manywarnings: enable nicer gcc warning messages + 2013-09-23 warnings: port --enable-gcc-warnings to Solaris Studio 12.3 + 2013-09-21 timespec: use the new TIMESPEC_RESOLUTION elsewhere + * configure.ac (WERROR_CFLAGS): Omit -fdiagnostics-show-option + and -funit-at-a-time, since manywarnings does that for us now. + 2013-09-23 Jan Djärv * configure.ac: With clang, check for and use -Wno-switch, === modified file 'configure.ac' --- configure.ac 2013-09-23 07:12:01 +0000 +++ configure.ac 2013-09-25 03:44:34 +0000 @@ -886,9 +886,6 @@ gl_WARN_ADD([-Wno-unused-value]) fi - gl_WARN_ADD([-fdiagnostics-show-option]) - gl_WARN_ADD([-funit-at-a-time]) - AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.]) AH_VERBATIM([FORTIFY_SOURCE], [/* Enable compile-time and run-time bounds-checking, and some warnings, === modified file 'lib/timespec-add.c' --- lib/timespec-add.c 2013-09-19 21:40:08 +0000 +++ lib/timespec-add.c 2013-09-25 03:44:34 +0000 @@ -18,7 +18,7 @@ /* Written by Paul Eggert. */ /* Return the sum of two timespec values A and B. On overflow, return - an extremal value. This assumes 0 <= tv_nsec <= 999999999. */ + an extremal value. This assumes 0 <= tv_nsec < TIMESPEC_RESOLUTION. */ #include #include "timespec.h" @@ -58,7 +58,7 @@ { high_overflow: rs = TYPE_MAXIMUM (time_t); - rns = 999999999; + rns = TIMESPEC_RESOLUTION - 1; } } else === modified file 'lib/timespec-sub.c' --- lib/timespec-sub.c 2013-09-19 21:40:08 +0000 +++ lib/timespec-sub.c 2013-09-25 03:44:34 +0000 @@ -18,8 +18,8 @@ /* Written by Paul Eggert. */ /* Return the difference between two timespec values A and B. On - overflow, return an extremal value. This assumes 0 <= tv_nsec <= - 999999999. */ + overflow, return an extremal value. This assumes 0 <= tv_nsec < + TIMESPEC_RESOLUTION. */ #include #include "timespec.h" @@ -58,7 +58,7 @@ else { rs = TYPE_MAXIMUM (time_t); - rns = 999999999; + rns = TIMESPEC_RESOLUTION - 1; } } else === modified file 'm4/manywarnings.m4' --- m4/manywarnings.m4 2013-05-16 07:10:39 +0000 +++ m4/manywarnings.m4 2013-09-25 03:44:34 +0000 @@ -1,4 +1,4 @@ -# manywarnings.m4 serial 5 +# manywarnings.m4 serial 6 dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -204,6 +204,8 @@ -Wvla \ -Wvolatile-register-var \ -Wwrite-strings \ + -fdiagnostics-show-option \ + -funit-at-a-time \ \ ; do gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item" === modified file 'm4/warnings.m4' --- m4/warnings.m4 2013-08-19 05:23:05 +0000 +++ m4/warnings.m4 2013-09-25 03:44:34 +0000 @@ -1,4 +1,4 @@ -# warnings.m4 serial 10 +# warnings.m4 serial 11 dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -36,9 +36,9 @@ gl_save_compiler_FLAGS="$gl_Flags" gl_AS_VAR_APPEND(m4_defn([gl_Flags]), [" $gl_unknown_warnings_are_errors ]m4_defn([gl_Positive])["]) - AC_COMPILE_IFELSE([m4_default([$4], [AC_LANG_PROGRAM([])])], - [AS_VAR_SET(gl_Warn, [yes])], - [AS_VAR_SET(gl_Warn, [no])]) + AC_LINK_IFELSE([m4_default([$4], [AC_LANG_PROGRAM([])])], + [AS_VAR_SET(gl_Warn, [yes])], + [AS_VAR_SET(gl_Warn, [no])]) gl_Flags="$gl_save_compiler_FLAGS" ]) AS_VAR_IF(gl_Warn, [yes], [$2], [$3]) ------------------------------------------------------------ revno: 114454 committer: Sam Steingold branch nick: trunk timestamp: Tue 2013-09-24 13:34:51 -0400 message: * lisp/midnight.el (clean-buffer-list-kill-regexps) (clean-buffer-list-kill-buffer-names): Update for the new Man buffer naming which includes the object name. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-23 23:23:32 +0000 +++ lisp/ChangeLog 2013-09-24 17:34:51 +0000 @@ -1,3 +1,9 @@ +2013-09-24 Sam Steingold + + * midnight.el (clean-buffer-list-kill-regexps) + (clean-buffer-list-kill-buffer-names): Update for the new Man + buffer naming which includes the object name. + 2013-09-23 Stefan Monnier * eshell/esh-cmd.el (eshell--sep-terms): New var. === modified file 'lisp/midnight.el' --- lisp/midnight.el 2013-01-01 09:11:05 +0000 +++ lisp/midnight.el 2013-09-24 17:34:51 +0000 @@ -87,7 +87,7 @@ :type 'integer :group 'midnight) -(defcustom clean-buffer-list-kill-regexps nil +(defcustom clean-buffer-list-kill-regexps '("^\\*Man ") "List of regexps saying which buffers will be killed at midnight. If buffer name matches a regexp in the list and the buffer was not displayed in the last `clean-buffer-list-delay-special' seconds, it is killed by @@ -101,7 +101,7 @@ :group 'midnight) (defcustom clean-buffer-list-kill-buffer-names - '("*Help*" "*Apropos*" "*Man " "*Buffer List*" "*Compile-Log*" "*info*" + '("*Help*" "*Apropos*" "*Buffer List*" "*Compile-Log*" "*info*" "*vc*" "*vc-diff*" "*diff*") "List of strings saying which buffers will be killed at midnight. Buffers with names in this list, which were not displayed in the last ------------------------------------------------------------ revno: 114453 author: Paul Eggert committer: Paul Eggert branch nick: trunk timestamp: Tue 2013-09-24 08:29:27 -0700 message: * dispnew.c (clear_glyph_row, copy_row_except_pointers): Use enums instead of ints, as it's the usual style for offsetof constants. See: http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00478.html diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-24 14:53:49 +0000 +++ src/ChangeLog 2013-09-24 15:29:27 +0000 @@ -1,5 +1,9 @@ 2013-09-24 Paul Eggert + * dispnew.c (clear_glyph_row, copy_row_except_pointers): Use enums + instead of ints, as it's the usual style for offsetof constants. See: + http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00478.html + * data.c (POPCOUNT_STATIC_INLINE): New macro, as a hack for popcount. This is ugly, but it should fix the performance problem for older GCC versions in the short run. I'll look into integrating the === modified file 'src/dispnew.c' --- src/dispnew.c 2013-09-24 07:16:38 +0000 +++ src/dispnew.c 2013-09-24 15:29:27 +0000 @@ -838,7 +838,7 @@ void clear_glyph_row (struct glyph_row *row) { - int off = offsetof (struct glyph_row, used); + enum { off = offsetof (struct glyph_row, used) }; /* Zero everything except pointers in `glyphs'. */ memset (row->used, 0, sizeof *row - off); @@ -988,7 +988,7 @@ static void copy_row_except_pointers (struct glyph_row *to, struct glyph_row *from) { - int off = offsetof (struct glyph_row, x); + enum { off = offsetof (struct glyph_row, x) }; memcpy (&to->x, &from->x, sizeof *to - off); } ------------------------------------------------------------ revno: 114452 committer: Paul Eggert branch nick: trunk timestamp: Tue 2013-09-24 07:53:49 -0700 message: * data.c (POPCOUNT_STATIC_INLINE): New macro, as a hack for popcount. This is ugly, but it should fix the performance problem for older GCC versions in the short run. I'll look into integrating the Gnulib module for popcount, as a better fix. See the thread starting in: http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00474.html (popcount_size_t_generic) [NEED_GENERIC_POPCOUNT]: (popcount_size_t_msc) [USE_MSC_POPCOUNT]: (popcount_size_t_gcc) [USE_GCC_POPCOUNT]: (popcount_size_t): Use it. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-24 11:48:53 +0000 +++ src/ChangeLog 2013-09-24 14:53:49 +0000 @@ -1,3 +1,16 @@ +2013-09-24 Paul Eggert + + * data.c (POPCOUNT_STATIC_INLINE): New macro, as a hack for popcount. + This is ugly, but it should fix the performance problem for older + GCC versions in the short run. I'll look into integrating the + Gnulib module for popcount, as a better fix. + See the thread starting in: + http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00474.html + (popcount_size_t_generic) [NEED_GENERIC_POPCOUNT]: + (popcount_size_t_msc) [USE_MSC_POPCOUNT]: + (popcount_size_t_gcc) [USE_GCC_POPCOUNT]: + (popcount_size_t): Use it. + 2013-09-24 Daniel Colascione * process.c (Fnetwork_interface_info): Fix build break due to === modified file 'src/data.c' --- src/data.c 2013-09-24 04:28:06 +0000 +++ src/data.c 2013-09-24 14:53:49 +0000 @@ -2972,18 +2972,25 @@ #if _MSC_VER >= 1500 && (defined _M_IX86 || defined _M_X64) # define USE_MSC_POPCOUNT +# define POPCOUNT_STATIC_INLINE static inline #elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) # define USE_GCC_POPCOUNT +# if 199901L <= __STDC_VERSION__ || !__STRICT_ANSI__ +# define POPCOUNT_STATIC_INLINE static inline +# endif #else # define NEED_GENERIC_POPCOUNT #endif +#ifndef POPCOUNT_STATIC_INLINE +# define POPCOUNT_STATIC_INLINE static +#endif #ifdef USE_MSC_POPCOUNT -#define NEED_GENERIC_POPCOUNT +# define NEED_GENERIC_POPCOUNT #endif #ifdef NEED_GENERIC_POPCOUNT -static unsigned int +POPCOUNT_STATIC_INLINE unsigned int popcount_size_t_generic (size_t val) { unsigned short j; @@ -2997,7 +3004,7 @@ #endif #ifdef USE_MSC_POPCOUNT -static unsigned int +POPCOUNT_STATIC_INLINE unsigned int popcount_size_t_msc (size_t val) { unsigned int count; @@ -3042,7 +3049,7 @@ #endif /* USE_MSC_POPCOUNT */ #ifdef USE_GCC_POPCOUNT -static unsigned int +POPCOUNT_STATIC_INLINE unsigned int popcount_size_t_gcc (size_t val) { # if BITS_PER_SIZE_T == 64 @@ -3053,7 +3060,7 @@ } #endif /* USE_GCC_POPCOUNT */ -static unsigned int +POPCOUNT_STATIC_INLINE unsigned int popcount_size_t (size_t val) { #if defined USE_MSC_POPCOUNT ------------------------------------------------------------ revno: 114451 committer: Daniel Colascione branch nick: trunk timestamp: Tue 2013-09-24 03:48:53 -0800 message: Fix build break due to vector changes diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-24 07:16:38 +0000 +++ src/ChangeLog 2013-09-24 11:48:53 +0000 @@ -1,3 +1,8 @@ +2013-09-24 Daniel Colascione + + * process.c (Fnetwork_interface_info): Fix build break due to + vector changes. + 2013-09-24 Paul Eggert * dispnew.c (clear_glyph_row, copy_row_except_pointers): === modified file 'src/process.c' --- src/process.c 2013-09-24 06:43:20 +0000 +++ src/process.c 2013-09-24 11:48:53 +0000 @@ -3752,7 +3752,7 @@ memcpy (linkaddr, LLADDR (sdl), sdl->sdl_alen); for (n = 0; n < 6; n++) - p->contents[n] = make_number (linkaddr[n]); + p->u.contents[n] = make_number (linkaddr[n]); elt = Fcons (make_number (it->ifa_addr->sa_family), hwaddr); break; ------------------------------------------------------------ revno: 114450 committer: Paul Eggert branch nick: trunk timestamp: Tue 2013-09-24 00:16:38 -0700 message: * dispnew.c (clear_glyph_row, copy_row_except_pointers): Prefer signed to unsigned integers where either will do. No need for 'const' on locals that do not escape. Omit easserts with unnecessary and unportable assumptions about alignment. Avoid unnecessary casts to char *. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-24 06:43:20 +0000 +++ src/ChangeLog 2013-09-24 07:16:38 +0000 @@ -1,3 +1,11 @@ +2013-09-24 Paul Eggert + + * dispnew.c (clear_glyph_row, copy_row_except_pointers): + Prefer signed to unsigned integers where either will do. + No need for 'const' on locals that do not escape. + Omit easserts with unnecessary and unportable assumptions about + alignment. Avoid unnecessary casts to char *. + 2013-09-24 Dmitry Antipov Use union for the payload of struct Lisp_Vector. === modified file 'src/dispnew.c' --- src/dispnew.c 2013-09-24 05:42:30 +0000 +++ src/dispnew.c 2013-09-24 07:16:38 +0000 @@ -838,11 +838,10 @@ void clear_glyph_row (struct glyph_row *row) { - const size_t off = offsetof (struct glyph_row, used); + int off = offsetof (struct glyph_row, used); - eassert (off == sizeof row->glyphs); /* Zero everything except pointers in `glyphs'. */ - memset ((char *) row + off, 0, sizeof *row - off); + memset (row->used, 0, sizeof *row - off); } @@ -989,10 +988,9 @@ static void copy_row_except_pointers (struct glyph_row *to, struct glyph_row *from) { - const size_t off = offsetof (struct glyph_row, x); + int off = offsetof (struct glyph_row, x); - eassert (off == sizeof to->glyphs + sizeof to->used + sizeof to->hash); - memcpy ((char *) to + off, (char *) from + off, sizeof *to - off); + memcpy (&to->x, &from->x, sizeof *to - off); } ------------------------------------------------------------ revno: 114449 committer: Dmitry Antipov branch nick: trunk timestamp: Tue 2013-09-24 10:43:20 +0400 message: Use union for the payload of struct Lisp_Vector. This helps to avoid a few glitches dictated by C's aliasing rules. * lisp.h (struct Lisp_Vector): Use union for next and contents member. Adjust comment. Change related users. * alloc.c (next_in_free_list, set_next_in_free_list): Remove. Related users changed. * buffer.c, bytecode.c, ccl.c, character.h, chartab.c, composite.c: * composite.h, disptab.h, fns.c, fontset.c, indent.c, keyboard.c: * lread.c, msdos.c, process.c, w32menu.c, window.c, xdisp.c: * xfaces.c, xfont.c, xmenu.c: Related users changed. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-24 05:42:30 +0000 +++ src/ChangeLog 2013-09-24 06:43:20 +0000 @@ -1,5 +1,18 @@ 2013-09-24 Dmitry Antipov + Use union for the payload of struct Lisp_Vector. + This helps to avoid a few glitches dictated by C's aliasing rules. + * lisp.h (struct Lisp_Vector): Use union for next and + contents member. Adjust comment. Change related users. + * alloc.c (next_in_free_list, set_next_in_free_list): Remove. + Related users changed. + * buffer.c, bytecode.c, ccl.c, character.h, chartab.c, composite.c: + * composite.h, disptab.h, fns.c, fontset.c, indent.c, keyboard.c: + * lread.c, msdos.c, process.c, w32menu.c, window.c, xdisp.c: + * xfaces.c, xfont.c, xmenu.c: Related users changed. + +2013-09-24 Dmitry Antipov + Optimize glyph row clearing and copying routines. * dispextern.h (struct glyph_row): Change layout of struct glyph_row to help copy_row_except_pointers. Adjust comment. === modified file 'src/alloc.c' --- src/alloc.c 2013-09-24 04:28:06 +0000 +++ src/alloc.c 2013-09-24 06:43:20 +0000 @@ -2647,22 +2647,6 @@ #define VINDEX(nbytes) (((nbytes) - VBLOCK_BYTES_MIN) / roundup_size) -/* Get and set the next field in block-allocated vectorlike objects on - the free list. Doing it this way respects C's aliasing rules. - We could instead make 'contents' a union, but that would mean - changes everywhere that the code uses 'contents'. */ -static struct Lisp_Vector * -next_in_free_list (struct Lisp_Vector *v) -{ - intptr_t i = XLI (v->contents[0]); - return (struct Lisp_Vector *) i; -} -static void -set_next_in_free_list (struct Lisp_Vector *v, struct Lisp_Vector *next) -{ - v->contents[0] = XIL ((intptr_t) next); -} - /* Common shortcut to setup vector on a free list. */ #define SETUP_ON_FREE_LIST(v, nbytes, tmp) \ @@ -2672,7 +2656,7 @@ eassert ((nbytes) % roundup_size == 0); \ (tmp) = VINDEX (nbytes); \ eassert ((tmp) < VECTOR_MAX_FREE_LIST_INDEX); \ - set_next_in_free_list (v, vector_free_lists[tmp]); \ + v->u.next = vector_free_lists[tmp]; \ vector_free_lists[tmp] = (v); \ total_free_vector_slots += (nbytes) / word_size; \ } while (0) @@ -2769,7 +2753,7 @@ if (vector_free_lists[index]) { vector = vector_free_lists[index]; - vector_free_lists[index] = next_in_free_list (vector); + vector_free_lists[index] = vector->u.next; total_free_vector_slots -= nbytes / word_size; return vector; } @@ -2783,7 +2767,7 @@ { /* This vector is larger than requested. */ vector = vector_free_lists[index]; - vector_free_lists[index] = next_in_free_list (vector); + vector_free_lists[index] = vector->u.next; total_free_vector_slots -= nbytes / word_size; /* Excess bytes are used for the smaller vector, @@ -2981,7 +2965,7 @@ else { struct large_vector *lv - = lisp_malloc ((offsetof (struct large_vector, v.contents) + = lisp_malloc ((offsetof (struct large_vector, v.u.contents) + len * word_size), MEM_TYPE_VECTORLIKE); lv->next.vector = large_vectors; @@ -3035,7 +3019,7 @@ /* Only the first lisplen slots will be traced normally by the GC. */ for (i = 0; i < lisplen; ++i) - v->contents[i] = Qnil; + v->u.contents[i] = Qnil; XSETPVECTYPESIZE (v, tag, lisplen, memlen - lisplen); return v; @@ -3123,7 +3107,7 @@ p = allocate_vector (XFASTINT (length)); sizei = XFASTINT (length); for (i = 0; i < sizei; i++) - p->contents[i] = init; + p->u.contents[i] = init; XSETVECTOR (vector, p); return vector; @@ -3141,21 +3125,21 @@ register struct Lisp_Vector *p = XVECTOR (val); for (i = 0; i < nargs; i++) - p->contents[i] = args[i]; + p->u.contents[i] = args[i]; return val; } void make_byte_code (struct Lisp_Vector *v) { - if (v->header.size > 1 && STRINGP (v->contents[1]) - && STRING_MULTIBYTE (v->contents[1])) + if (v->header.size > 1 && STRINGP (v->u.contents[1]) + && STRING_MULTIBYTE (v->u.contents[1])) /* BYTECODE-STRING must have been produced by Emacs 20.2 or the earlier because they produced a raw 8-bit string for byte-code and now such a byte-code string is loaded as multibyte while raw 8-bit characters converted to multibyte form. Thus, now we must convert them back to the original unibyte form. */ - v->contents[1] = Fstring_as_unibyte (v->contents[1]); + v->u.contents[1] = Fstring_as_unibyte (v->u.contents[1]); XSETPVECTYPE (v, PVEC_COMPILED); } @@ -3190,7 +3174,7 @@ to be setcar'd). */ for (i = 0; i < nargs; i++) - p->contents[i] = args[i]; + p->u.contents[i] = args[i]; make_byte_code (p); XSETCOMPILED (val, p); return val; @@ -5183,7 +5167,7 @@ size &= PSEUDOVECTOR_SIZE_MASK; vec = XVECTOR (make_pure_vector (size)); for (i = 0; i < size; i++) - vec->contents[i] = Fpurecopy (AREF (obj, i)); + vec->u.contents[i] = Fpurecopy (AREF (obj, i)); if (COMPILEDP (obj)) { XSETPVECTYPE (vec, PVEC_COMPILED); @@ -5674,7 +5658,7 @@ The distinction is used e.g. by Lisp_Process which places extra non-Lisp_Object fields at the end of the structure... */ for (i = 0; i < size; i++) /* ...and then mark its elements. */ - mark_object (ptr->contents[i]); + mark_object (ptr->u.contents[i]); } /* Like mark_vectorlike but optimized for char-tables (and @@ -5691,7 +5675,7 @@ VECTOR_MARK (ptr); for (i = 0; i < size; i++) { - Lisp_Object val = ptr->contents[i]; + Lisp_Object val = ptr->u.contents[i]; if (INTEGERP (val) || (SYMBOLP (val) && XSYMBOL (val)->gcmarkbit)) continue; @@ -5896,10 +5880,10 @@ VECTOR_MARK (ptr); for (i = 0; i < size; i++) if (i != COMPILED_CONSTANTS) - mark_object (ptr->contents[i]); + mark_object (ptr->u.contents[i]); if (size > COMPILED_CONSTANTS) { - obj = ptr->contents[COMPILED_CONSTANTS]; + obj = ptr->u.contents[COMPILED_CONSTANTS]; goto loop; } } === modified file 'src/buffer.c' --- src/buffer.c 2013-09-20 15:34:36 +0000 +++ src/buffer.c 2013-09-24 06:43:20 +0000 @@ -4534,7 +4534,7 @@ Lisp_Object *copy = alloca (size * sizeof *copy); ptrdiff_t i; - memcpy (copy, XVECTOR (last_overlay_modification_hooks)->contents, + memcpy (copy, XVECTOR (last_overlay_modification_hooks)->u.contents, size * word_size); gcpro1.var = copy; gcpro1.nvars = size; === modified file 'src/bytecode.c' --- src/bytecode.c 2013-09-11 05:03:23 +0000 +++ src/bytecode.c 2013-09-24 06:43:20 +0000 @@ -536,7 +536,7 @@ #ifdef BYTE_CODE_SAFE bytestr_length = SBYTES (bytestr); #endif - vectorp = XVECTOR (vector)->contents; + vectorp = XVECTOR (vector)->u.contents; stack.byte_string = bytestr; stack.pc = stack.byte_string_start = SDATA (bytestr); === modified file 'src/ccl.c' --- src/ccl.c 2013-04-02 01:54:56 +0000 +++ src/ccl.c 2013-09-24 06:43:20 +0000 @@ -1094,7 +1094,7 @@ ccl_prog_stack_struct[stack_idx].ic = ic; ccl_prog_stack_struct[stack_idx].eof_ic = eof_ic; stack_idx++; - ccl_prog = XVECTOR (AREF (slot, 1))->contents; + ccl_prog = XVECTOR (AREF (slot, 1))->u.contents; ic = CCL_HEADER_MAIN; eof_ic = XFASTINT (ccl_prog[CCL_HEADER_EOF]); } @@ -1936,9 +1936,9 @@ return -1; vp = XVECTOR (ccl_prog); ccl->size = vp->header.size; - ccl->prog = vp->contents; - ccl->eof_ic = XINT (vp->contents[CCL_HEADER_EOF]); - ccl->buf_magnification = XINT (vp->contents[CCL_HEADER_BUF_MAG]); + ccl->prog = vp->u.contents; + ccl->eof_ic = XINT (vp->u.contents[CCL_HEADER_EOF]); + ccl->buf_magnification = XINT (vp->u.contents[CCL_HEADER_BUF_MAG]); if (ccl->idx >= 0) { Lisp_Object slot; === modified file 'src/character.h' --- src/character.h 2013-09-20 15:34:36 +0000 +++ src/character.h 2013-09-24 06:43:20 +0000 @@ -677,7 +677,7 @@ /* Return a translation table of id number ID. */ #define GET_TRANSLATION_TABLE(id) \ - (XCDR(XVECTOR(Vtranslation_table_vector)->contents[(id)])) + (XCDR (XVECTOR (Vtranslation_table_vector)->u.contents[(id)])) INLINE_HEADER_END === modified file 'src/chartab.c' --- src/chartab.c 2013-06-21 20:11:44 +0000 +++ src/chartab.c 2013-09-24 06:43:20 +0000 @@ -1258,7 +1258,7 @@ static Lisp_Object uniprop_encode_value_run_length (Lisp_Object table, Lisp_Object value) { - Lisp_Object *value_table = XVECTOR (XCHAR_TABLE (table)->extras[4])->contents; + Lisp_Object *value_table = XVECTOR (XCHAR_TABLE (table)->extras[4])->u.contents; int i, size = ASIZE (XCHAR_TABLE (table)->extras[4]); for (i = 0; i < size; i++) @@ -1276,7 +1276,7 @@ static Lisp_Object uniprop_encode_value_numeric (Lisp_Object table, Lisp_Object value) { - Lisp_Object *value_table = XVECTOR (XCHAR_TABLE (table)->extras[4])->contents; + Lisp_Object *value_table = XVECTOR (XCHAR_TABLE (table)->extras[4])->u.contents; int i, size = ASIZE (XCHAR_TABLE (table)->extras[4]); CHECK_NUMBER (value); === modified file 'src/composite.c' --- src/composite.c 2013-09-22 09:31:55 +0000 +++ src/composite.c 2013-09-24 06:43:20 +0000 @@ -266,7 +266,7 @@ composition_table = xpalloc (composition_table, &composition_table_size, 1, -1, sizeof *composition_table); - key_contents = XVECTOR (key)->contents; + key_contents = XVECTOR (key)->u.contents; /* Check if the contents of COMPONENTS are valid if COMPONENTS is a vector or a list. It should be a sequence of: === modified file 'src/composite.h' --- src/composite.h 2013-09-20 15:34:36 +0000 +++ src/composite.h 2013-09-24 06:43:20 +0000 @@ -88,8 +88,8 @@ #define COMPOSITION_GLYPH(cmp, n) \ XINT (XVECTOR (XVECTOR (XHASH_TABLE (composition_hash_table) \ ->key_and_value) \ - ->contents[cmp->hash_index * 2]) \ - ->contents[cmp->method == COMPOSITION_WITH_RULE_ALTCHARS \ + ->u.contents[cmp->hash_index * 2]) \ + ->u.contents[cmp->method == COMPOSITION_WITH_RULE_ALTCHARS \ ? (n) * 2 : (n)]) /* Return the encoded composition rule to compose the Nth glyph of @@ -98,8 +98,8 @@ #define COMPOSITION_RULE(cmp, n) \ XINT (XVECTOR (XVECTOR (XHASH_TABLE (composition_hash_table) \ ->key_and_value) \ - ->contents[cmp->hash_index * 2]) \ - ->contents[(n) * 2 - 1]) + ->u.contents[cmp->hash_index * 2]) \ + ->u.contents[(n) * 2 - 1]) /* Decode encoded composition rule RULE_CODE into GREF (global reference point code), NREF (new ref. point code). Don't check RULE_CODE; === modified file 'src/disptab.h' --- src/disptab.h 2013-01-01 09:11:05 +0000 +++ src/disptab.h 2013-09-24 06:43:20 +0000 @@ -59,7 +59,7 @@ /* Return the current base (for indexing) of the GLYPH table, or 0 if the table isn't currently valid. */ #define GLYPH_TABLE_BASE \ - ((VECTORP (Vglyph_table)) ? XVECTOR (Vglyph_table)->contents : 0) + ((VECTORP (Vglyph_table)) ? XVECTOR (Vglyph_table)->u.contents : 0) /* Given BASE and LEN returned by the two previous macros, return nonzero if the GLYPH code G should be output as a single === modified file 'src/fns.c' --- src/fns.c 2013-08-01 22:24:02 +0000 +++ src/fns.c 2013-09-24 06:43:20 +0000 @@ -1604,7 +1604,7 @@ for (i = n = 0; i < ASIZE (seq); ++i) if (NILP (Fequal (AREF (seq, i), elt))) - p->contents[n++] = AREF (seq, i); + p->u.contents[n++] = AREF (seq, i); XSETVECTOR (seq, p); } @@ -3450,7 +3450,7 @@ { struct Lisp_Vector *v; ptrdiff_t i, incr, incr_max, old_size, new_size; - ptrdiff_t C_language_max = min (PTRDIFF_MAX, SIZE_MAX) / sizeof *v->contents; + ptrdiff_t C_language_max = min (PTRDIFF_MAX, SIZE_MAX) / sizeof *v->u.contents; ptrdiff_t n_max = (0 <= nitems_max && nitems_max < C_language_max ? nitems_max : C_language_max); eassert (VECTORP (vec)); @@ -3462,9 +3462,9 @@ memory_full (SIZE_MAX); new_size = old_size + incr; v = allocate_vector (new_size); - memcpy (v->contents, XVECTOR (vec)->contents, old_size * sizeof *v->contents); + memcpy (v->u.contents, XVECTOR (vec)->u.contents, old_size * sizeof *v->u.contents); for (i = old_size; i < new_size; ++i) - v->contents[i] = Qnil; + v->u.contents[i] = Qnil; XSETVECTOR (vec, v); return vec; } === modified file 'src/fontset.c' --- src/fontset.c 2013-09-05 12:08:50 +0000 +++ src/fontset.c 2013-09-24 06:43:20 +0000 @@ -453,7 +453,7 @@ } if (score_changed) - qsort (XVECTOR (vec)->contents, size, word_size, + qsort (XVECTOR (vec)->u.contents, size, word_size, fontset_compare_rfontdef); XSETCAR (font_group, make_number (charset_ordered_list_tick)); } === modified file 'src/indent.c' --- src/indent.c 2013-08-29 07:03:18 +0000 +++ src/indent.c 2013-09-24 06:43:20 +0000 @@ -118,7 +118,7 @@ for (i = 0; i < 256; i++) if (character_width (i, disptab) - != XFASTINT (widthtab->contents[i])) + != XFASTINT (widthtab->u.contents[i])) return 0; return 1; @@ -138,7 +138,7 @@ eassert (widthtab->header.size == 256); for (i = 0; i < 256; i++) - XSETFASTINT (widthtab->contents[i], character_width (i, disptab)); + XSETFASTINT (widthtab->u.contents[i], character_width (i, disptab)); } /* Allocate or free the width run cache, as requested by the @@ -1136,7 +1136,7 @@ width_run_cache_on_off (); if (dp == buffer_display_table ()) width_table = (VECTORP (BVAR (current_buffer, width_table)) - ? XVECTOR (BVAR (current_buffer, width_table))->contents + ? XVECTOR (BVAR (current_buffer, width_table))->u.contents : 0); else /* If the window has its own display table, we can't use the width === modified file 'src/keyboard.c' --- src/keyboard.c 2013-09-20 15:34:36 +0000 +++ src/keyboard.c 2013-09-24 06:43:20 +0000 @@ -4341,7 +4341,7 @@ if (! (VECTORP (timer) && ASIZE (timer) == 9)) return 0; - vector = XVECTOR (timer)->contents; + vector = XVECTOR (timer)->u.contents; if (! NILP (vector[0])) return 0; @@ -7998,7 +7998,7 @@ discard any previously made item. */ for (i = 0; i < ntool_bar_items; i += TOOL_BAR_ITEM_NSLOTS) { - Lisp_Object *v = XVECTOR (tool_bar_items_vector)->contents + i; + Lisp_Object *v = XVECTOR (tool_bar_items_vector)->u.contents + i; if (EQ (key, v[TOOL_BAR_ITEM_KEY])) { @@ -8322,7 +8322,7 @@ /* Append entries from tool_bar_item_properties to the end of tool_bar_items_vector. */ vcopy (tool_bar_items_vector, ntool_bar_items, - XVECTOR (tool_bar_item_properties)->contents, TOOL_BAR_ITEM_NSLOTS); + XVECTOR (tool_bar_item_properties)->u.contents, TOOL_BAR_ITEM_NSLOTS); ntool_bar_items += TOOL_BAR_ITEM_NSLOTS; } @@ -9919,7 +9919,7 @@ doc: /* Return vector of last 300 events, not counting those from keyboard macros. */) (void) { - Lisp_Object *keys = XVECTOR (recent_keys)->contents; + Lisp_Object *keys = XVECTOR (recent_keys)->u.contents; Lisp_Object val; if (total_keys < NUM_RECENT_KEYS) @@ -9945,7 +9945,7 @@ (void) { return make_event_array (this_command_key_count, - XVECTOR (this_command_keys)->contents); + XVECTOR (this_command_keys)->u.contents); } DEFUN ("this-command-keys-vector", Fthis_command_keys_vector, Sthis_command_keys_vector, 0, 0, 0, @@ -9957,7 +9957,7 @@ (void) { return Fvector (this_command_key_count, - XVECTOR (this_command_keys)->contents); + XVECTOR (this_command_keys)->u.contents); } DEFUN ("this-single-command-keys", Fthis_single_command_keys, @@ -9972,7 +9972,7 @@ { return Fvector (this_command_key_count - this_single_command_key_start, - (XVECTOR (this_command_keys)->contents + (XVECTOR (this_command_keys)->u.contents + this_single_command_key_start)); } @@ -9986,8 +9986,7 @@ The value is always a vector. */) (void) { - return Fvector (raw_keybuf_count, - (XVECTOR (raw_keybuf)->contents)); + return Fvector (raw_keybuf_count, XVECTOR (raw_keybuf)->u.contents); } DEFUN ("reset-this-command-lengths", Freset_this_command_lengths, === modified file 'src/lisp.h' --- src/lisp.h 2013-09-24 04:28:06 +0000 +++ src/lisp.h 2013-09-24 06:43:20 +0000 @@ -1136,12 +1136,19 @@ ptrdiff_t size; }; -/* Regular vector is just a header plus array of Lisp_Objects. */ +/* Regular vector is just a header plus array of Lisp_Objects... */ struct Lisp_Vector { struct vectorlike_header header; - Lisp_Object contents[FLEXIBLE_ARRAY_MEMBER]; + union { + /* ...but sometimes there is also a pointer internally used in + vector allocation code. Usually you don't want to touch this. */ + struct Lisp_Vector *next; + + /* We can't use FLEXIBLE_ARRAY_MEMBER here. */ + Lisp_Object contents[1]; + } u; }; /* A boolvector is a kind of vectorlike, with contents are like a string. */ @@ -1162,7 +1169,7 @@ enum { - header_size = offsetof (struct Lisp_Vector, contents), + header_size = offsetof (struct Lisp_Vector, u.contents), bool_header_size = offsetof (struct Lisp_Bool_Vector, data), word_size = sizeof (Lisp_Object) }; @@ -1172,13 +1179,13 @@ INLINE Lisp_Object AREF (Lisp_Object array, ptrdiff_t idx) { - return XVECTOR (array)->contents[idx]; + return XVECTOR (array)->u.contents[idx]; } INLINE Lisp_Object * aref_addr (Lisp_Object array, ptrdiff_t idx) { - return & XVECTOR (array)->contents[idx]; + return & XVECTOR (array)->u.contents[idx]; } INLINE ptrdiff_t @@ -1191,7 +1198,7 @@ ASET (Lisp_Object array, ptrdiff_t idx, Lisp_Object val) { eassert (0 <= idx && idx < ASIZE (array)); - XVECTOR (array)->contents[idx] = val; + XVECTOR (array)->u.contents[idx] = val; } INLINE void @@ -1200,7 +1207,7 @@ /* Like ASET, but also can be used in the garbage collector: sweep_weak_table calls set_hash_key etc. while the table is marked. */ eassert (0 <= idx && idx < (ASIZE (array) & ~ARRAY_MARK_FLAG)); - XVECTOR (array)->contents[idx] = val; + XVECTOR (array)->u.contents[idx] = val; } /* If a struct is made to look like a vector, this macro returns the length @@ -3028,7 +3035,7 @@ vcopy (Lisp_Object v, ptrdiff_t offset, Lisp_Object *args, ptrdiff_t count) { eassert (0 <= offset && 0 <= count && offset + count <= ASIZE (v)); - memcpy (XVECTOR (v)->contents + offset, args, count * sizeof *args); + memcpy (XVECTOR (v)->u.contents + offset, args, count * sizeof *args); } /* Functions to modify hash tables. */ === modified file 'src/lread.c' --- src/lread.c 2013-08-27 18:47:55 +0000 +++ src/lread.c 2013-09-24 06:43:20 +0000 @@ -3459,7 +3459,7 @@ vector = Fmake_vector (len, Qnil); size = ASIZE (vector); - ptr = XVECTOR (vector)->contents; + ptr = XVECTOR (vector)->u.contents; for (i = 0; i < size; i++) { item = Fcar (tem); === modified file 'src/msdos.c' --- src/msdos.c 2013-09-23 09:50:47 +0000 +++ src/msdos.c 2013-09-24 06:43:20 +0000 @@ -2394,7 +2394,7 @@ and then the scan code. */) (void) { - Lisp_Object val, *keys = XVECTOR (recent_doskeys)->contents; + Lisp_Object val, *keys = XVECTOR (recent_doskeys)->u.contents; if (total_doskeys < NUM_RECENT_DOSKEYS) return Fvector (total_doskeys, keys); === modified file 'src/process.c' --- src/process.c 2013-09-22 14:26:10 +0000 +++ src/process.c 2013-09-24 06:43:20 +0000 @@ -1333,15 +1333,15 @@ for (i = 0; i < nargs; i++) { - if (! RANGED_INTEGERP (0, p->contents[i], 65535)) + if (! RANGED_INTEGERP (0, p->u.contents[i], 65535)) return Qnil; if (nargs <= 5 /* IPv4 */ && i < 4 /* host, not port */ - && XINT (p->contents[i]) > 255) + && XINT (p->u.contents[i]) > 255) return Qnil; - args[i+1] = p->contents[i]; + args[i+1] = p->u.contents[i]; } return Fformat (nargs+1, args); @@ -1980,7 +1980,7 @@ len = sizeof (sin->sin_addr) + 1; address = Fmake_vector (make_number (len), Qnil); p = XVECTOR (address); - p->contents[--len] = make_number (ntohs (sin->sin_port)); + p->u.contents[--len] = make_number (ntohs (sin->sin_port)); cp = (unsigned char *) &sin->sin_addr; break; } @@ -1992,9 +1992,9 @@ len = sizeof (sin6->sin6_addr)/2 + 1; address = Fmake_vector (make_number (len), Qnil); p = XVECTOR (address); - p->contents[--len] = make_number (ntohs (sin6->sin6_port)); + p->u.contents[--len] = make_number (ntohs (sin6->sin6_port)); for (i = 0; i < len; i++) - p->contents[i] = make_number (ntohs (ip6[i])); + p->u.contents[i] = make_number (ntohs (ip6[i])); return address; } #endif @@ -2019,7 +2019,7 @@ i = 0; while (i < len) - p->contents[i++] = make_number (*cp++); + p->u.contents[i++] = make_number (*cp++); return address; } @@ -2090,7 +2090,7 @@ { struct sockaddr_in *sin = (struct sockaddr_in *) sa; len = sizeof (sin->sin_addr) + 1; - hostport = XINT (p->contents[--len]); + hostport = XINT (p->u.contents[--len]); sin->sin_port = htons (hostport); cp = (unsigned char *)&sin->sin_addr; sa->sa_family = family; @@ -2101,12 +2101,12 @@ struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) sa; uint16_t *ip6 = (uint16_t *)&sin6->sin6_addr; len = sizeof (sin6->sin6_addr) + 1; - hostport = XINT (p->contents[--len]); + hostport = XINT (p->u.contents[--len]); sin6->sin6_port = htons (hostport); for (i = 0; i < len; i++) - if (INTEGERP (p->contents[i])) + if (INTEGERP (p->u.contents[i])) { - int j = XFASTINT (p->contents[i]) & 0xffff; + int j = XFASTINT (p->u.contents[i]) & 0xffff; ip6[i] = ntohs (j); } sa->sa_family = family; @@ -2137,8 +2137,8 @@ } for (i = 0; i < len; i++) - if (INTEGERP (p->contents[i])) - *cp++ = XFASTINT (p->contents[i]) & 0xff; + if (INTEGERP (p->u.contents[i])) + *cp++ = XFASTINT (p->u.contents[i]) & 0xff; } #ifdef DATAGRAM_SOCKETS @@ -3729,7 +3729,7 @@ any = 1; for (n = 0; n < 6; n++) - p->contents[n] = make_number (((unsigned char *)&rq.ifr_hwaddr.sa_data[0])[n]); + p->u.contents[n] = make_number (((unsigned char *)&rq.ifr_hwaddr.sa_data[0])[n]); elt = Fcons (make_number (rq.ifr_hwaddr.sa_family), hwaddr); } #elif defined (HAVE_GETIFADDRS) && defined (LLADDR) === modified file 'src/w32menu.c' --- src/w32menu.c 2013-09-13 15:03:51 +0000 +++ src/w32menu.c 2013-09-24 06:43:20 +0000 @@ -421,7 +421,7 @@ /* Save the frame's previous menu bar contents data. */ if (previous_menu_items_used) - memcpy (previous_items, XVECTOR (f->menu_bar_vector)->contents, + memcpy (previous_items, XVECTOR (f->menu_bar_vector)->u.contents, previous_menu_items_used * word_size); /* Fill in menu_items with the current menu bar contents. === modified file 'src/window.c' --- src/window.c 2013-09-23 09:50:47 +0000 +++ src/window.c 2013-09-24 06:43:20 +0000 @@ -5401,7 +5401,7 @@ }; #define SAVED_WINDOW_N(swv,n) \ - ((struct saved_window *) (XVECTOR ((swv)->contents[(n)]))) + ((struct saved_window *) (XVECTOR ((swv)->u.contents[(n)]))) DEFUN ("window-configuration-p", Fwindow_configuration_p, Swindow_configuration_p, 1, 1, 0, doc: /* Return t if OBJECT is a window-configuration object. */) === modified file 'src/xdisp.c' --- src/xdisp.c 2013-09-24 04:28:06 +0000 +++ src/xdisp.c 2013-09-24 06:43:20 +0000 @@ -4473,8 +4473,8 @@ if (it->dp && VECTORP (DISP_INVIS_VECTOR (it->dp))) { struct Lisp_Vector *v = XVECTOR (DISP_INVIS_VECTOR (it->dp)); - it->dpvec = v->contents; - it->dpend = v->contents + v->header.size; + it->dpvec = v->u.contents; + it->dpend = v->u.contents + v->header.size; } else { @@ -6778,8 +6778,8 @@ if (v->header.size) { it->dpvec_char_len = it->len; - it->dpvec = v->contents; - it->dpend = v->contents + v->header.size; + it->dpvec = v->u.contents; + it->dpend = v->u.contents + v->header.size; it->current.dpvec_index = 0; it->dpvec_face_id = -1; it->saved_face_id = it->face_id; @@ -27555,7 +27555,7 @@ if (VECTORP (XCDR (hot_spot))) { struct Lisp_Vector *v = XVECTOR (XCDR (hot_spot)); - Lisp_Object *poly = v->contents; + Lisp_Object *poly = v->u.contents; ptrdiff_t n = v->header.size; ptrdiff_t i; int inside = 0; === modified file 'src/xfaces.c' --- src/xfaces.c 2013-09-13 15:03:51 +0000 +++ src/xfaces.c 2013-09-24 06:43:20 +0000 @@ -1565,7 +1565,7 @@ vec = Fvconcat (ndrivers, drivers); nfonts = ASIZE (vec); - qsort (XVECTOR (vec)->contents, nfonts, word_size, + qsort (XVECTOR (vec)->u.contents, nfonts, word_size, compare_fonts_by_sort_order); result = Qnil; @@ -1830,7 +1830,7 @@ if (!NILP (lface)) { eassert (LFACEP (lface)); - check_lface_attrs (XVECTOR (lface)->contents); + check_lface_attrs (XVECTOR (lface)->u.contents); } } @@ -2007,7 +2007,7 @@ lface = lface_from_face_name_no_resolve (f, face_name, signal_p); if (! NILP (lface)) - memcpy (attrs, XVECTOR (lface)->contents, + memcpy (attrs, XVECTOR (lface)->u.contents, LFACE_VECTOR_SIZE * sizeof *attrs); return !NILP (lface); @@ -2690,7 +2690,7 @@ copy = Finternal_make_lisp_face (to, new_frame); } - vcopy (copy, 0, XVECTOR (lface)->contents, LFACE_VECTOR_SIZE); + vcopy (copy, 0, XVECTOR (lface)->u.contents, LFACE_VECTOR_SIZE); /* Changing a named face means that all realized faces depending on that face are invalid. Since we cannot tell which realized faces @@ -3093,7 +3093,7 @@ f = XFRAME (frame); if (! FONT_OBJECT_P (value)) { - Lisp_Object *attrs = XVECTOR (lface)->contents; + Lisp_Object *attrs = XVECTOR (lface)->u.contents; Lisp_Object font_object; font_object = font_load_for_lface (f, attrs, value); @@ -3161,7 +3161,7 @@ the font to nil so that the font selector doesn't think that the attribute is mandatory. Also, clear the average width. */ - font_clear_prop (XVECTOR (lface)->contents, prop_index); + font_clear_prop (XVECTOR (lface)->u.contents, prop_index); } /* Changing a named face means that all realized faces depending on @@ -3191,7 +3191,7 @@ reflected in changed `font' frame parameters. */ if (FRAMEP (frame) && (prop_index || EQ (attr, QCfont)) - && lface_fully_specified_p (XVECTOR (lface)->contents)) + && lface_fully_specified_p (XVECTOR (lface)->u.contents)) set_font_frame_param (frame, lface); else #endif /* HAVE_WINDOW_SYSTEM */ @@ -3371,7 +3371,7 @@ { if (FONT_SPEC_P (font)) { - font = font_load_for_lface (f, XVECTOR (lface)->contents, font); + font = font_load_for_lface (f, XVECTOR (lface)->u.contents, font); if (NILP (font)) return; ASET (lface, LFACE_FONT_INDEX, font); @@ -3728,8 +3728,8 @@ the local frame is defined from default specs in `face-defface-spec' and those should be overridden by global settings. Hence the strange "global before local" priority. */ - lvec = XVECTOR (local_lface)->contents; - gvec = XVECTOR (global_lface)->contents; + lvec = XVECTOR (local_lface)->u.contents; + gvec = XVECTOR (global_lface)->u.contents; for (i = 1; i < LFACE_VECTOR_SIZE; ++i) if (IGNORE_DEFFACE_P (gvec[i])) ASET (local_lface, i, Qunspecified); @@ -3913,8 +3913,8 @@ lface1 = lface_from_face_name (f, face1, 1); lface2 = lface_from_face_name (f, face2, 1); - equal_p = lface_equal_p (XVECTOR (lface1)->contents, - XVECTOR (lface2)->contents); + equal_p = lface_equal_p (XVECTOR (lface1)->u.contents, + XVECTOR (lface2)->u.contents); return equal_p ? Qt : Qnil; } @@ -4651,7 +4651,7 @@ Lisp_Object lface; lface = Fmake_vector (make_number (LFACE_VECTOR_SIZE), Qunspecified); - merge_face_ref (XFRAME (selected_frame), plist, XVECTOR (lface)->contents, + merge_face_ref (XFRAME (selected_frame), plist, XVECTOR (lface)->u.contents, 1, 0); return lface; } @@ -5331,9 +5331,9 @@ ASET (lface, LFACE_STIPPLE_INDEX, Qnil); /* Realize the face; it must be fully-specified now. */ - eassert (lface_fully_specified_p (XVECTOR (lface)->contents)); + eassert (lface_fully_specified_p (XVECTOR (lface)->u.contents)); check_lface (lface); - memcpy (attrs, XVECTOR (lface)->contents, sizeof attrs); + memcpy (attrs, XVECTOR (lface)->u.contents, sizeof attrs); face = realize_face (c, attrs, DEFAULT_FACE_ID); #ifdef HAVE_WINDOW_SYSTEM === modified file 'src/xfont.c' --- src/xfont.c 2013-09-13 15:03:51 +0000 +++ src/xfont.c 2013-09-24 06:43:20 +0000 @@ -384,7 +384,7 @@ if (num_fonts > 0) { char **indices = alloca (sizeof (char *) * num_fonts); - Lisp_Object *props = XVECTOR (xfont_scratch_props)->contents; + Lisp_Object *props = XVECTOR (xfont_scratch_props)->u.contents; Lisp_Object scripts = Qnil; for (i = 0; i < ASIZE (xfont_scratch_props); i++) === modified file 'src/xmenu.c' --- src/xmenu.c 2013-09-13 15:03:51 +0000 +++ src/xmenu.c 2013-09-24 06:43:20 +0000 @@ -990,7 +990,7 @@ /* Save the frame's previous menu bar contents data. */ if (previous_menu_items_used) - memcpy (previous_items, XVECTOR (f->menu_bar_vector)->contents, + memcpy (previous_items, XVECTOR (f->menu_bar_vector)->u.contents, previous_menu_items_used * word_size); /* Fill in menu_items with the current menu bar contents. @@ -2187,7 +2187,7 @@ Lisp_Object pane_name; Lisp_Object menu_object; - first_item = XVECTOR (menu_items)->contents; + first_item = XVECTOR (menu_items)->u.contents; if (EQ (first_item[0], Qt)) pane_name = first_item[MENU_ITEMS_PANE_NAME]; else if (EQ (first_item[0], Qquote)) ------------------------------------------------------------ revno: 114448 committer: Dmitry Antipov branch nick: trunk timestamp: Tue 2013-09-24 09:42:30 +0400 message: Optimize glyph row clearing and copying routines. * dispextern.h (struct glyph_row): Change layout of struct glyph_row to help copy_row_except_pointers. Adjust comment. * dispnew.c (null_row): Remove. (clear_glyph_row): Use offsetof and memset to find and clear just the members that need clearing. Adjust comment. (copy_row_except_pointers): Likewise for copying. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-24 04:28:06 +0000 +++ src/ChangeLog 2013-09-24 05:42:30 +0000 @@ -1,3 +1,13 @@ +2013-09-24 Dmitry Antipov + + Optimize glyph row clearing and copying routines. + * dispextern.h (struct glyph_row): Change layout of struct + glyph_row to help copy_row_except_pointers. Adjust comment. + * dispnew.c (null_row): Remove. + (clear_glyph_row): Use offsetof and memset to find and clear + just the members that need clearing. Adjust comment. + (copy_row_except_pointers): Likewise for copying. + 2013-09-24 Paul Eggert Some minor cleanups of recently-added bool vector code. === modified file 'src/dispextern.h' --- src/dispextern.h 2013-09-23 13:46:20 +0000 +++ src/dispextern.h 2013-09-24 05:42:30 +0000 @@ -792,7 +792,10 @@ Rows in window matrices on frames having no frame matrices point to glyphs allocated from the heap via xmalloc; glyphs[LEFT_MARGIN_AREA] is the start address of the allocated - glyph structure array. */ + glyph structure array. + + NOTE: layout of first four members of this structure is important, + see clear_glyph_row and copy_row_except_pointers to check why. */ struct glyph_row { @@ -812,8 +815,13 @@ removed some day, so don't use it in new code. */ struct glyph *glyphs[1 + LAST_AREA]; - /* Number of glyphs actually filled in areas. */ - short used[LAST_AREA]; + /* Number of glyphs actually filled in areas. This could have size + LAST_AREA, but it's 1 + LAST_AREA to simplify offset calculations. */ + short used[1 + LAST_AREA]; + + /* Hash code. This hash code is available as soon as the row + is constructed, i.e. after a call to display_line. */ + unsigned hash; /* Window-relative x and y-position of the top-left corner of this row. If y < 0, this means that eabs (y) pixels of the row are @@ -846,10 +854,6 @@ in last row when checking if row is fully visible. */ int extra_line_spacing; - /* Hash code. This hash code is available as soon as the row - is constructed, i.e. after a call to display_line. */ - unsigned hash; - /* First position in this row. This is the text position, including overlay position information etc, where the display of this row started, and can thus be less than the position of the first === modified file 'src/dispnew.c' --- src/dispnew.c 2013-09-23 09:50:47 +0000 +++ src/dispnew.c 2013-09-24 05:42:30 +0000 @@ -832,41 +832,17 @@ See dispextern.h for an overall explanation of glyph rows. ***********************************************************************/ -/* Clear glyph row ROW. Do it in a way that makes it robust against - changes in the glyph_row structure, i.e. addition or removal of - structure members. */ - -static struct glyph_row null_row; +/* Clear glyph row ROW. NOTE: this code relies on the current + layout of `glyphs' and `used' fields of `struct glyph_row'. */ void clear_glyph_row (struct glyph_row *row) { - struct glyph *p[1 + LAST_AREA]; - - /* Save pointers. */ - p[LEFT_MARGIN_AREA] = row->glyphs[LEFT_MARGIN_AREA]; - p[TEXT_AREA] = row->glyphs[TEXT_AREA]; - p[RIGHT_MARGIN_AREA] = row->glyphs[RIGHT_MARGIN_AREA]; - p[LAST_AREA] = row->glyphs[LAST_AREA]; - - /* Clear. */ - *row = null_row; - - /* Restore pointers. */ - row->glyphs[LEFT_MARGIN_AREA] = p[LEFT_MARGIN_AREA]; - row->glyphs[TEXT_AREA] = p[TEXT_AREA]; - row->glyphs[RIGHT_MARGIN_AREA] = p[RIGHT_MARGIN_AREA]; - row->glyphs[LAST_AREA] = p[LAST_AREA]; - -#if 0 /* At some point, some bit-fields of struct glyph were not set, - which made glyphs unequal when compared with GLYPH_EQUAL_P. - Redisplay outputs such glyphs, and flickering effects were - the result. This also depended on the contents of memory - returned by xmalloc. If flickering happens again, activate - the code below. If the flickering is gone with that, chances - are that the flickering has the same reason as here. */ - memset (p[0], 0, (char *) p[LAST_AREA] - (char *) p[0]); -#endif + const size_t off = offsetof (struct glyph_row, used); + + eassert (off == sizeof row->glyphs); + /* Zero everything except pointers in `glyphs'. */ + memset ((char *) row + off, 0, sizeof *row - off); } @@ -1005,29 +981,18 @@ } -/* Copy glyph row structure FROM to glyph row structure TO, except - that glyph pointers, the `used' counts, and the hash values in the - structures are left unchanged. */ +/* Copy glyph row structure FROM to glyph row structure TO, except that + glyph pointers, the `used' counts, and the hash values in the structures + are left unchanged. NOTE: this code relies on the current layout of + `glyphs', `used', `hash' and `x' fields of `struct glyph_row'. */ static void copy_row_except_pointers (struct glyph_row *to, struct glyph_row *from) { - struct glyph *pointers[1 + LAST_AREA]; - short used[LAST_AREA]; - unsigned hashval; - - /* Save glyph pointers of TO. */ - memcpy (pointers, to->glyphs, sizeof to->glyphs); - memcpy (used, to->used, sizeof to->used); - hashval = to->hash; - - /* Do a structure assignment. */ - *to = *from; - - /* Restore original pointers of TO. */ - memcpy (to->glyphs, pointers, sizeof to->glyphs); - memcpy (to->used, used, sizeof to->used); - to->hash = hashval; + const size_t off = offsetof (struct glyph_row, x); + + eassert (off == sizeof to->glyphs + sizeof to->used + sizeof to->hash); + memcpy ((char *) to + off, (char *) from + off, sizeof *to - off); } ------------------------------------------------------------ revno: 114447 committer: Paul Eggert branch nick: trunk timestamp: Mon 2013-09-23 21:28:06 -0700 message: Some minor cleanups of recently-added bool vector code. * conf_post.h (assume): Always return void. Use lint version only if GCC and MSC versions don't apply. * conf_post.h (assume): * data.c (USC_MSC_POPCOUNT, count_trailing_zero_bits): Depend on _MSC_VER, not __MSC_VER, for consistency with the rest of Emacs. * data.c (bool_vector_spare_mask, popcount_size_t_generic) (popcount_size_t_msc, popcount_size_t_gcc, popcount_size_t) (bool_vector_binop_driver, count_trailing_zero_bits) (size_t_to_host_endian): Now static, not static inline; the latter isn't needed with modern compilers and doesn't work with older compilers anyway. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-24 03:44:58 +0000 +++ src/ChangeLog 2013-09-24 04:28:06 +0000 @@ -1,5 +1,19 @@ 2013-09-24 Paul Eggert + Some minor cleanups of recently-added bool vector code. + * conf_post.h (assume): Always return void. Use lint version + only if GCC and MSC versions don't apply. + * conf_post.h (assume): + * data.c (USC_MSC_POPCOUNT, count_trailing_zero_bits): + Depend on _MSC_VER, not __MSC_VER, for consistency with + the rest of Emacs. + * data.c (bool_vector_spare_mask, popcount_size_t_generic) + (popcount_size_t_msc, popcount_size_t_gcc, popcount_size_t) + (bool_vector_binop_driver, count_trailing_zero_bits) + (size_t_to_host_endian): Now static, not static inline; + the latter isn't needed with modern compilers and doesn't + work with older compilers anyway. + * alloc.c (valgrind_p): Use bool for boolean. 2013-09-23 Dmitry Antipov === modified file 'src/alloc.c' --- src/alloc.c 2013-09-24 03:44:58 +0000 +++ src/alloc.c 2013-09-24 04:28:06 +0000 @@ -981,7 +981,7 @@ #define ABLOCKS_BASE(abase) (abase) #else #define ABLOCKS_BASE(abase) \ - (1 & (intptr_t) ABLOCKS_BUSY (abase) ? abase : ((void**)abase)[-1]) + (1 & (intptr_t) ABLOCKS_BUSY (abase) ? abase : ((void **)abase)[-1]) #endif /* The list of free ablock. */ @@ -1036,7 +1036,7 @@ aligned = (base == abase); if (!aligned) - ((void**)abase)[-1] = base; + ((void **) abase)[-1] = base; #ifdef DOUG_LEA_MALLOC /* Back to a reasonable maximum of mmap'ed areas. */ @@ -2016,10 +2016,9 @@ verify (sizeof (size_t) * CHAR_BIT == BITS_PER_SIZE_T); verify ((BITS_PER_SIZE_T & (BITS_PER_SIZE_T - 1)) == 0); -static -ptrdiff_t +static ptrdiff_t bool_vector_payload_bytes (ptrdiff_t nr_bits, - ptrdiff_t* exact_needed_bytes_out) + ptrdiff_t *exact_needed_bytes_out) { ptrdiff_t exact_needed_bytes; ptrdiff_t needed_bytes; @@ -2068,7 +2067,7 @@ + total_payload_bytes), word_size) / word_size; - p = (struct Lisp_Bool_Vector* ) allocate_vector (needed_elements); + p = (struct Lisp_Bool_Vector *) allocate_vector (needed_elements); XSETVECTOR (val, p); XSETPVECTYPESIZE (XVECTOR (val), PVEC_BOOL_VECTOR, 0, 0); @@ -2617,9 +2616,9 @@ verify (VECTOR_BLOCK_SIZE <= (1 << PSEUDOVECTOR_SIZE_BITS)); /* Round up X to nearest mult-of-ROUNDUP_SIZE --- use at compile time. */ -#define vroundup_ct(x) ROUNDUP((size_t)(x), roundup_size) +#define vroundup_ct(x) ROUNDUP ((size_t) (x), roundup_size) /* Round up X to nearest mult-of-ROUNDUP_SIZE --- use at runtime. */ -#define vroundup(x) (assume((x) >= 0), vroundup_ct(x)) +#define vroundup(x) (assume ((x) >= 0), vroundup_ct (x)) /* Rounding helps to maintain alignment constraints if USE_LSB_TAG. */ === modified file 'src/conf_post.h' --- src/conf_post.h 2013-09-23 08:25:48 +0000 +++ src/conf_post.h 2013-09-24 04:28:06 +0000 @@ -252,18 +252,17 @@ # define __has_builtin(x) 0 #endif -/* assume(cond) tells the compiler (and lint) that a certain condition - * will always hold, and that it should optimize (or check) accordingly. */ -#if defined lint +/* Tell the compiler (and lint) that COND will always hold, and that + it should optimize (or check) accordingly. */ +#if (__has_builtin (__builtin_unreachable) \ + || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) || __GNUC__ > 4) +# define assume(cond) ((cond) ? (void) 0 : __builtin_unreachable ()) +#elif defined _MSC_VER +# define assume(cond) __assume (cond) +#elif defined lint # define assume(cond) ((cond) ? (void) 0 : abort ()) -#elif (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) || __GNUC__ > 4 -# define assume(cond) ((cond) || (__builtin_unreachable(), 0)) -#elif defined (__clang__) && __has_builtin (__builtin_unreachable) -# define assume(cond) ((cond) || (__builtin_unreachable(), 0)) -#elif defined __MSC_VER -# define assume(cond) __assume ((cond)) #else -# define assume(cond) (0 && (cond)) +# define assume(cond) ((void) (0 && (cond))) #endif /* Use this to suppress gcc's `...may be used before initialized' warnings. */ === modified file 'src/data.c' --- src/data.c 2013-09-22 09:31:55 +0000 +++ src/data.c 2013-09-24 04:28:06 +0000 @@ -617,7 +617,7 @@ struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (sym); if (blv->fwd) /* In set_internal, we un-forward vars when their value is - set to Qunbound. */ + set to Qunbound. */ return Qt; else { @@ -628,7 +628,7 @@ } case SYMBOL_FORWARDED: /* In set_internal, we un-forward vars when their value is - set to Qunbound. */ + set to Qunbound. */ return Qt; default: emacs_abort (); } @@ -1996,7 +1996,7 @@ } /* This code is disabled now that we use the selected frame to return - keyboard-local-values. */ + keyboard-local-values. */ #if 0 extern struct terminal *get_terminal (Lisp_Object display, int); @@ -2963,15 +2963,14 @@ always allocate bool vectors with at least one size_t of storage so that we don't have to special-case empty bit vectors. */ -static inline -size_t +static size_t bool_vector_spare_mask (ptrdiff_t nr_bits) { eassert_and_assume (nr_bits > 0); return (((size_t) 1) << (nr_bits % BITS_PER_SIZE_T)) - 1; } -#if __MSC_VER >= 1500 && (defined _M_IX86 || defined _M_X64) +#if _MSC_VER >= 1500 && (defined _M_IX86 || defined _M_X64) # define USE_MSC_POPCOUNT #elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) # define USE_GCC_POPCOUNT @@ -2984,8 +2983,7 @@ #endif #ifdef NEED_GENERIC_POPCOUNT -static inline -unsigned int +static unsigned int popcount_size_t_generic (size_t val) { unsigned short j; @@ -2999,8 +2997,7 @@ #endif #ifdef USE_MSC_POPCOUNT -static inline -unsigned int +static unsigned int popcount_size_t_msc (size_t val) { unsigned int count; @@ -3045,8 +3042,7 @@ #endif /* USE_MSC_POPCOUNT */ #ifdef USE_GCC_POPCOUNT -static inline -unsigned int +static unsigned int popcount_size_t_gcc (size_t val) { # if BITS_PER_SIZE_T == 64 @@ -3057,9 +3053,8 @@ } #endif /* USE_GCC_POPCOUNT */ -static inline -unsigned int -popcount_size_t(size_t val) +static unsigned int +popcount_size_t (size_t val) { #if defined USE_MSC_POPCOUNT return popcount_size_t_msc (val); @@ -3067,7 +3062,7 @@ return popcount_size_t_gcc (val); #else return popcount_size_t_generic (val); - #endif +#endif } enum bool_vector_op { bool_vector_exclusive_or, @@ -3076,8 +3071,7 @@ bool_vector_set_difference, bool_vector_subsetp }; -static inline -Lisp_Object +static Lisp_Object bool_vector_binop_driver (Lisp_Object op1, Lisp_Object op2, Lisp_Object dest, @@ -3108,11 +3102,11 @@ } eassert_and_assume (nr_bits >= 0); - nr_words = ROUNDUP(nr_bits, BITS_PER_SIZE_T) / BITS_PER_SIZE_T; - - adata = (size_t*) XBOOL_VECTOR (dest)->data; - bdata = (size_t*) XBOOL_VECTOR (op1)->data; - cdata = (size_t*) XBOOL_VECTOR (op2)->data; + nr_words = ROUNDUP (nr_bits, BITS_PER_SIZE_T) / BITS_PER_SIZE_T; + + adata = (size_t *) XBOOL_VECTOR (dest)->data; + bdata = (size_t *) XBOOL_VECTOR (op1)->data; + cdata = (size_t *) XBOOL_VECTOR (op2)->data; i = 0; do { @@ -3132,16 +3126,16 @@ if (op != bool_vector_subsetp) adata[i] = mword; - i += 1; + i++; } while (i < nr_words); + return changed ? dest : Qnil; } /* Compute the number of trailing zero bits in val. If val is zero, return the number of bits in val. */ -static inline -unsigned int +static unsigned int count_trailing_zero_bits (size_t val) { if (val == 0) @@ -3151,7 +3145,7 @@ return __builtin_ctzll (val); #elif defined USE_GCC_POPCOUNT && BITS_PER_SIZE_T == 32 return __builtin_ctz (val); -#elif __MSC_VER && BITS_PER_SIZE_T == 64 +#elif _MSC_VER && BITS_PER_SIZE_T == 64 # pragma intrinsic _BitScanForward64 { /* No support test needed: support since 386. */ @@ -3159,7 +3153,7 @@ _BitScanForward64 (&result, val); return (unsigned int) result; } -#elif __MSC_VER && BITS_PER_SIZE_T == 32 +#elif _MSC_VER && BITS_PER_SIZE_T == 32 # pragma intrinsic _BitScanForward { /* No support test needed: support since 386. */ @@ -3171,7 +3165,7 @@ { unsigned int count; count = 0; - for(val = ~val; val & 1; val >>= 1) + for (val = ~val; val & 1; val >>= 1) ++count; return count; @@ -3179,8 +3173,7 @@ #endif } -static inline -size_t +static size_t size_t_to_host_endian (size_t val) { #ifdef WORDS_BIGENDIAN @@ -3272,17 +3265,13 @@ nr_bits = min (nr_bits, XBOOL_VECTOR (b)->size); } - bdata = (size_t*) XBOOL_VECTOR (b)->data; - adata = (size_t*) XBOOL_VECTOR (a)->data; - i = 0; + bdata = (size_t *) XBOOL_VECTOR (b)->data; + adata = (size_t *) XBOOL_VECTOR (a)->data; eassert_and_assume (nr_bits >= 0); - while (i < nr_bits / BITS_PER_SIZE_T) - { - bdata[i] = ~adata[i]; - i += 1; - } + for (i = 0; i < nr_bits / BITS_PER_SIZE_T; i++) + bdata[i] = ~adata[i]; if (nr_bits % BITS_PER_SIZE_T) { @@ -3298,7 +3287,7 @@ DEFUN ("bool-vector-count-matches", Fbool_vector_count_matches, Sbool_vector_count_matches, 2, 2, 0, doc: /* Count how many elements in A equal B. -A must be a bool vector. B is a generalized bool. */) +A must be a bool vector. B is a generalized bool. */) (Lisp_Object a, Lisp_Object b) { ptrdiff_t count; @@ -3312,11 +3301,11 @@ nr_bits = XBOOL_VECTOR (a)->size; count = 0; match = NILP (b) ? (size_t) -1 : 0; - adata = (size_t*) XBOOL_VECTOR (a)->data; + adata = (size_t *) XBOOL_VECTOR (a)->data; eassert_and_assume (nr_bits >= 0); - for(i = 0; i < nr_bits / BITS_PER_SIZE_T; ++i) + for (i = 0; i < nr_bits / BITS_PER_SIZE_T; ++i) count += popcount_size_t (adata[i] ^ match); /* Mask out trailing parts of final mword. */ @@ -3335,7 +3324,7 @@ Sbool_vector_count_matches_at, 3, 3, 0, doc: /* Count how many consecutive elements in A equal B at i. A must be a bool vector. B is a generalized boolean. i is an -index into the vector.*/) +index into the vector. */) (Lisp_Object a, Lisp_Object b, Lisp_Object i) { ptrdiff_t count; @@ -3354,11 +3343,11 @@ if (XFASTINT (i) > nr_bits) /* Allow one past the end for convenience */ args_out_of_range (a, i); - adata = (size_t*) XBOOL_VECTOR (a)->data; + adata = (size_t *) XBOOL_VECTOR (a)->data; assume (nr_bits >= 0); nr_words = ROUNDUP (nr_bits, BITS_PER_SIZE_T) / BITS_PER_SIZE_T; - + pos = XFASTINT (i) / BITS_PER_SIZE_T; offset = XFASTINT (i) % BITS_PER_SIZE_T; count = 0; @@ -3376,7 +3365,7 @@ mword >>= offset; count = count_trailing_zero_bits (mword); count = min (count, BITS_PER_SIZE_T - offset); - pos += 1; + pos++; if (count + offset < BITS_PER_SIZE_T) return make_number (count); } === modified file 'src/lisp.h' --- src/lisp.h 2013-09-23 13:25:19 +0000 +++ src/lisp.h 2013-09-24 04:28:06 +0000 @@ -4359,15 +4359,13 @@ return 0; } -INLINE -uint16_t +INLINE uint16_t swap16 (uint16_t val) { return (val << 8) | (val & 0xFF); } -INLINE -uint32_t +INLINE uint32_t swap32 (uint32_t val) { uint32_t low = swap16 (val & 0xFFFF); @@ -4376,8 +4374,7 @@ } #ifdef UINT64_MAX -INLINE -uint64_t +INLINE uint64_t swap64 (uint64_t val) { uint64_t low = swap32 (val & 0xFFFFFFFF); === modified file 'src/xdisp.c' --- src/xdisp.c 2013-09-23 13:25:19 +0000 +++ src/xdisp.c 2013-09-24 04:28:06 +0000 @@ -1882,8 +1882,7 @@ text, or we can't tell because W's current matrix is not up to date. */ -static -struct glyph * +static struct glyph * x_y_to_hpos_vpos (struct window *w, int x, int y, int *hpos, int *vpos, int *dx, int *dy, int *area) { ------------------------------------------------------------ revno: 114446 committer: Paul Eggert branch nick: trunk timestamp: Mon 2013-09-23 20:44:58 -0700 message: * alloc.c (valgrind_p): Use bool for boolean. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-23 13:46:20 +0000 +++ src/ChangeLog 2013-09-24 03:44:58 +0000 @@ -1,3 +1,7 @@ +2013-09-24 Paul Eggert + + * alloc.c (valgrind_p): Use bool for boolean. + 2013-09-23 Dmitry Antipov * xdisp.c (noninteractive_need_newline, message_log_need_newline) === modified file 'src/alloc.c' --- src/alloc.c 2013-09-23 02:34:52 +0000 +++ src/alloc.c 2013-09-24 03:44:58 +0000 @@ -45,16 +45,16 @@ #include -#if (defined ENABLE_CHECKING && \ - defined HAVE_VALGRIND_VALGRIND_H && \ - !defined USE_VALGRIND) +#if (defined ENABLE_CHECKING \ + && defined HAVE_VALGRIND_VALGRIND_H \ + && !defined USE_VALGRIND) # define USE_VALGRIND 1 #endif #if USE_VALGRIND #include #include -static int valgrind_p; +static bool valgrind_p; #endif /* GC_CHECK_MARKED_OBJECTS means do sanity checks on allocated objects. @@ -6667,7 +6667,7 @@ gcs_done = 0; #if USE_VALGRIND - valgrind_p = RUNNING_ON_VALGRIND; + valgrind_p = RUNNING_ON_VALGRIND != 0; #endif } ------------------------------------------------------------ revno: 114445 committer: Stefan Monnier branch nick: trunk timestamp: Mon 2013-09-23 19:23:32 -0400 message: * lisp/eshell/esh-cmd.el (eshell--sep-terms): New var. (eshell-parse-command, eshell-parse-pipeline): Use it since eshell-separate-commands requires a dynamic scoped var. Reported by Jan Moringen . diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-23 04:21:41 +0000 +++ lisp/ChangeLog 2013-09-23 23:23:32 +0000 @@ -1,3 +1,10 @@ +2013-09-23 Stefan Monnier + + * eshell/esh-cmd.el (eshell--sep-terms): New var. + (eshell-parse-command, eshell-parse-pipeline): Use it since + eshell-separate-commands requires a dynamic scoped var. + Reported by Jan Moringen . + 2013-09-23 Leo Liu * autoinsert.el (auto-insert-alist): Make the value of === modified file 'lisp/eshell/esh-cmd.el' --- lisp/eshell/esh-cmd.el 2013-09-17 15:19:12 +0000 +++ lisp/eshell/esh-cmd.el 2013-09-23 23:23:32 +0000 @@ -339,13 +339,15 @@ ;; Command parsing +(defvar eshell--sep-terms) + (defun eshell-parse-command (command &optional args toplevel) "Parse the COMMAND, adding ARGS if given. COMMAND can either be a string, or a cons cell demarcating a buffer region. TOPLEVEL, if non-nil, means that the outermost command (the user's input command) is being parsed, and that pre and post command hooks should be run before and after the command." - (let* (sep-terms + (let* (eshell--sep-terms (terms (append (if (consp command) @@ -365,16 +367,16 @@ (function (lambda (cmd) (setq cmd - (if (or (not (car sep-terms)) - (string= (car sep-terms) ";")) + (if (or (not (car eshell--sep-terms)) + (string= (car eshell--sep-terms) ";")) (eshell-parse-pipeline cmd) `(eshell-do-subjob (list ,(eshell-parse-pipeline cmd))))) - (setq sep-terms (cdr sep-terms)) + (setq eshell--sep-terms (cdr eshell--sep-terms)) (if eshell-in-pipeline-p cmd `(eshell-trap-errors ,cmd)))) - (eshell-separate-commands terms "[&;]" nil 'sep-terms)))) + (eshell-separate-commands terms "[&;]" nil 'eshell--sep-terms)))) (let ((cmd commands)) (while cmd (if (cdr cmd) @@ -586,9 +588,9 @@ (defun eshell-parse-pipeline (terms) "Parse a pipeline from TERMS, return the appropriate Lisp forms." - (let* (sep-terms + (let* (eshell--sep-terms (bigpieces (eshell-separate-commands terms "\\(&&\\|||\\)" - nil 'sep-terms)) + nil 'eshell--sep-terms)) (bp bigpieces) (results (list t)) final) @@ -620,15 +622,15 @@ results (nreverse results) final (car results) results (cdr results) - sep-terms (nreverse sep-terms)) + eshell--sep-terms (nreverse eshell--sep-terms)) (while results - (cl-assert (car sep-terms)) + (cl-assert (car eshell--sep-terms)) (setq final (eshell-structure-basic-command - 'if (string= (car sep-terms) "&&") "if" + 'if (string= (car eshell--sep-terms) "&&") "if" `(eshell-protect ,(car results)) `(eshell-protect ,final)) results (cdr results) - sep-terms (cdr sep-terms))) + eshell--sep-terms (cdr eshell--sep-terms))) final)) (defun eshell-parse-subcommand-argument () ------------------------------------------------------------ revno: 114444 committer: Dmitry Antipov branch nick: trunk timestamp: Mon 2013-09-23 17:46:20 +0400 message: * dispextern.h (cancel_line, init_desired_glyphs): Remove ancient leftover. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-23 13:25:19 +0000 +++ src/ChangeLog 2013-09-23 13:46:20 +0000 @@ -5,7 +5,9 @@ (display_last_displayed_message_p, message_buf_print) (message_cleared_p, help_echo_showing_p, hourglass_shown_p): Use bool for boolean. - * dispextern.h (help_echo_showing_p, hourglass_shown_p): + * dispextern.h (cancel_line, init_desired_glyphs): + Remove ancient leftover. + (help_echo_showing_p, hourglass_shown_p): * lisp.h (noninteractive_need_newline): Adjust declaration. 2013-09-23 Dmitry Antipov === modified file 'src/dispextern.h' --- src/dispextern.h 2013-09-23 13:25:19 +0000 +++ src/dispextern.h 2013-09-23 13:46:20 +0000 @@ -3437,8 +3437,6 @@ Lisp_Object *, int *, int *, int *, int *); extern void redraw_frame (struct frame *); -extern void cancel_line (int, struct frame *); -extern void init_desired_glyphs (struct frame *); extern bool update_frame (struct frame *, bool, bool); extern void bitch_at_user (void); extern void adjust_frame_glyphs (struct frame *); ------------------------------------------------------------ revno: 114443 committer: Dmitry Antipov branch nick: trunk timestamp: Mon 2013-09-23 17:25:19 +0400 message: * xdisp.c (noninteractive_need_newline, message_log_need_newline) (overlay_arrow_seen, message_enable_multibyte, line_number_displayed) (display_last_displayed_message_p, message_buf_print) (message_cleared_p, help_echo_showing_p, hourglass_shown_p): Use bool for boolean. * dispextern.h (help_echo_showing_p, hourglass_shown_p): * lisp.h (noninteractive_need_newline): Adjust declaration. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-23 09:50:47 +0000 +++ src/ChangeLog 2013-09-23 13:25:19 +0000 @@ -1,5 +1,15 @@ 2013-09-23 Dmitry Antipov + * xdisp.c (noninteractive_need_newline, message_log_need_newline) + (overlay_arrow_seen, message_enable_multibyte, line_number_displayed) + (display_last_displayed_message_p, message_buf_print) + (message_cleared_p, help_echo_showing_p, hourglass_shown_p): + Use bool for boolean. + * dispextern.h (help_echo_showing_p, hourglass_shown_p): + * lisp.h (noninteractive_need_newline): Adjust declaration. + +2013-09-23 Dmitry Antipov + * dispnew.c (frame_garbaged, selected_frame, last_nonminibuf_frame): Move to... * frame.c (frame_garbaged, selected_frame, last_nonminibuf_frame): === modified file 'src/dispextern.h' --- src/dispextern.h 2013-09-20 15:34:36 +0000 +++ src/dispextern.h 2013-09-23 13:25:19 +0000 @@ -3187,7 +3187,7 @@ int frame_mode_line_height (struct frame *); extern Lisp_Object Qtool_bar; extern bool redisplaying_p; -extern int help_echo_showing_p; +extern bool help_echo_showing_p; extern Lisp_Object help_echo_string, help_echo_window; extern Lisp_Object help_echo_object, previous_help_echo_string; extern ptrdiff_t help_echo_pos; @@ -3389,7 +3389,7 @@ extern void start_hourglass (void); extern void cancel_hourglass (void); -extern int hourglass_shown_p; +extern bool hourglass_shown_p; /* If non-null, an asynchronous timer that, when it expires, displays an hourglass cursor on all frames. */ extern struct atimer *hourglass_atimer; === modified file 'src/lisp.h' --- src/lisp.h 2013-09-23 09:50:47 +0000 +++ src/lisp.h 2013-09-23 13:25:19 +0000 @@ -3378,7 +3378,7 @@ extern Lisp_Object QCdata, QCfile; extern Lisp_Object QCmap; extern Lisp_Object Qrisky_local_variable; -extern int noninteractive_need_newline; +extern bool noninteractive_need_newline; extern Lisp_Object echo_area_buffer[2]; extern void add_to_log (const char *, Lisp_Object, Lisp_Object); extern void check_message_stack (void); === modified file 'src/xdisp.c' --- src/xdisp.c 2013-09-23 09:28:57 +0000 +++ src/xdisp.c 2013-09-23 13:25:19 +0000 @@ -415,11 +415,11 @@ /* Non-zero means print newline to stdout before next mini-buffer message. */ -int noninteractive_need_newline; +bool noninteractive_need_newline; /* Non-zero means print newline to message log before next message. */ -static int message_log_need_newline; +static bool message_log_need_newline; /* Three markers that message_dolog uses. It could allocate them itself, but that causes trouble @@ -478,7 +478,7 @@ /* Nonzero if an overlay arrow has been displayed in this window. */ -static int overlay_arrow_seen; +static bool overlay_arrow_seen; /* Vector containing glyphs for an ellipsis `...'. */ @@ -500,7 +500,7 @@ /* Nonzero means multibyte characters were enabled when the echo area message was specified. */ -static int message_enable_multibyte; +static bool message_enable_multibyte; /* Nonzero if we should redraw the mode lines on the next redisplay. */ @@ -514,7 +514,7 @@ /* Nonzero after display_mode_line if %l was used and it displayed a line number. */ -static int line_number_displayed; +static bool line_number_displayed; /* The name of the *Messages* buffer, a string. */ @@ -536,12 +536,12 @@ /* Non-zero means display_echo_area should display the last echo area message again. Set by redisplay_preserve_echo_area. */ -static int display_last_displayed_message_p; +static bool display_last_displayed_message_p; /* Nonzero if echo area is being used by print; zero if being used by message. */ -static int message_buf_print; +static bool message_buf_print; /* The symbol `inhibit-menubar-update' and its DEFVAR_BOOL variable. */ @@ -551,7 +551,7 @@ /* Set to 1 in clear_message to make redisplay_internal aware of an emptied echo area. */ -static int message_cleared_p; +static bool message_cleared_p; /* A scratch glyph row with contents used for generating truncation glyphs. Also used in direct_output_for_insert. */ @@ -566,7 +566,7 @@ /* Non-zero if there's a help-echo in the echo area. */ -int help_echo_showing_p; +bool help_echo_showing_p; /* The maximum distance to look ahead for text properties. Values that are too small let us call compute_char_face and similar @@ -742,7 +742,7 @@ #ifdef HAVE_WINDOW_SYSTEM /* Non-zero means an hourglass cursor is currently shown. */ -int hourglass_shown_p; +bool hourglass_shown_p; /* If non-null, an asynchronous timer that, when it expires, displays an hourglass cursor on all frames. */ ------------------------------------------------------------ revno: 114442 committer: Glenn Morris branch nick: trunk timestamp: Mon 2013-09-23 06:17:40 -0400 message: Auto-commit of generated files. diff: === modified file 'autogen/config.in' --- autogen/config.in 2013-09-20 10:17:44 +0000 +++ autogen/config.in 2013-09-23 10:17:40 +0000 @@ -1102,6 +1102,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_UTMP_H +/* Define to 1 if you have the header file. */ +#undef HAVE_VALGRIND_VALGRIND_H + /* Define to 1 if you have the `vfork' function. */ #undef HAVE_VFORK === modified file 'autogen/configure' --- autogen/configure 2013-09-20 10:17:44 +0000 +++ autogen/configure 2013-09-23 10:17:40 +0000 @@ -1407,8 +1407,8 @@ INSTALL_INFO LN_S_FILEONLY GNULIB_WARN_CFLAGS +WERROR_CFLAGS WARN_CFLAGS -WERROR_CFLAGS RANLIB ARFLAGS AR @@ -7545,23 +7545,45 @@ # Otherwise, run RUN-IF-NOT-FOUND. +# clang is unduly picky about some things. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +$as_echo_n "checking whether the compiler is clang... " >&6; } +if test "${emacs_cv_clang+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifndef __clang__ + #error "not clang" + #endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + emacs_cv_clang=yes +else + emacs_cv_clang=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $emacs_cv_clang" >&5 +$as_echo "$emacs_cv_clang" >&6; } + # When compiling with GCC, prefer -isystem to -I when including system # include files, to avoid generating useless diagnostics for the files. if test "$gl_gcc_warnings" != yes; then isystem='-I' -else - isystem='-isystem ' - - # This, $nw, is the list of warnings we disable. - nw= - - case $with_x_toolkit in - lucid | athena | motif) - # Old toolkits mishandle 'const'. - nw="$nw -Wwrite-strings" - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Werror -Wunknown-warning-option" >&5 + if test "$emacs_cv_clang" = yes + then + # Turn off some warnings if supported. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Werror -Wunknown-warning-option" >&5 $as_echo_n "checking whether C compiler handles -Werror -Wunknown-warning-option... " >&6; } if test "${gl_cv_warn_c__Werror__Wunknown_warning_option+set}" = set; then : $as_echo_n "(cached) " >&6 @@ -7598,6 +7620,127 @@ fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wno-switch" >&5 +$as_echo_n "checking whether C compiler handles -Wno-switch... " >&6; } +if test "${gl_cv_warn_c__Wno_switch+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + gl_save_compiler_FLAGS="$CFLAGS" + as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wswitch" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_warn_c__Wno_switch=yes +else + gl_cv_warn_c__Wno_switch=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$gl_save_compiler_FLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wno_switch" >&5 +$as_echo "$gl_cv_warn_c__Wno_switch" >&6; } +if test "x$gl_cv_warn_c__Wno_switch" = x""yes; then : + as_fn_append WARN_CFLAGS " -Wno-switch" +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wno-tautological-constant-out-of-range-compare" >&5 +$as_echo_n "checking whether C compiler handles -Wno-tautological-constant-out-of-range-compare... " >&6; } +if test "${gl_cv_warn_c__Wno_tautological_constant_out_of_range_compare+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + gl_save_compiler_FLAGS="$CFLAGS" + as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wtautological-constant-out-of-range-compare" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_warn_c__Wno_tautological_constant_out_of_range_compare=yes +else + gl_cv_warn_c__Wno_tautological_constant_out_of_range_compare=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$gl_save_compiler_FLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wno_tautological_constant_out_of_range_compare" >&5 +$as_echo "$gl_cv_warn_c__Wno_tautological_constant_out_of_range_compare" >&6; } +if test "x$gl_cv_warn_c__Wno_tautological_constant_out_of_range_compare" = x""yes; then : + as_fn_append WARN_CFLAGS " -Wno-tautological-constant-out-of-range-compare" +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wno-pointer-sign" >&5 +$as_echo_n "checking whether C compiler handles -Wno-pointer-sign... " >&6; } +if test "${gl_cv_warn_c__Wno_pointer_sign+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + gl_save_compiler_FLAGS="$CFLAGS" + as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wpointer-sign" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_warn_c__Wno_pointer_sign=yes +else + gl_cv_warn_c__Wno_pointer_sign=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$gl_save_compiler_FLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wno_pointer_sign" >&5 +$as_echo "$gl_cv_warn_c__Wno_pointer_sign" >&6; } +if test "x$gl_cv_warn_c__Wno_pointer_sign" = x""yes; then : + as_fn_append WARN_CFLAGS " -Wno-pointer-sign" +fi + + + fi +else + isystem='-isystem ' + + # This, $nw, is the list of warnings we disable. + nw= + + case $with_x_toolkit in + lucid | athena | motif) + # Old toolkits mishandle 'const'. + nw="$nw -Wwrite-strings" + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Werror" >&5 $as_echo_n "checking whether C compiler handles -Werror... " >&6; } if test "${gl_cv_warn_c__Werror+set}" = set; then : @@ -7669,36 +7812,6 @@ nw="$nw -Wtype-limits" nw="$nw -Wunused-parameter" - # clang is unduly picky about some things. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 -$as_echo_n "checking whether the compiler is clang... " >&6; } -if test "${emacs_cv_clang+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #ifndef __clang__ - #error "not clang" - #endif - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - emacs_cv_clang=yes -else - emacs_cv_clang=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $emacs_cv_clang" >&5 -$as_echo "$emacs_cv_clang" >&6; } if test $emacs_cv_clang = yes; then nw="$nw -Wcast-align" fi @@ -16072,6 +16185,19 @@ +for ac_header in valgrind/valgrind.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "valgrind/valgrind.h" "ac_cv_header_valgrind_valgrind_h" "$ac_includes_default" +if test "x$ac_cv_header_valgrind_valgrind_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_VALGRIND_VALGRIND_H 1 +_ACEOF + +fi + +done + + ------------------------------------------------------------ revno: 114441 committer: Dmitry Antipov branch nick: trunk timestamp: Mon 2013-09-23 13:50:47 +0400 message: * dispnew.c (frame_garbaged, selected_frame, last_nonminibuf_frame): Move to... * frame.c (frame_garbaged, selected_frame, last_nonminibuf_frame): ...this file and convert the latter to static. Adjust comment. (make_initial_frame): * window.c (init_window_once): Adjust user. * frame.h (last_nonminibuf_frame): Remove declaration. * lisp.h (selected_frame): Likewise. * msdos.c (the_only_display_info): Adjust comment. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-23 09:28:57 +0000 +++ src/ChangeLog 2013-09-23 09:50:47 +0000 @@ -1,3 +1,15 @@ +2013-09-23 Dmitry Antipov + + * dispnew.c (frame_garbaged, selected_frame, last_nonminibuf_frame): + Move to... + * frame.c (frame_garbaged, selected_frame, last_nonminibuf_frame): + ...this file and convert the latter to static. Adjust comment. + (make_initial_frame): + * window.c (init_window_once): Adjust user. + * frame.h (last_nonminibuf_frame): Remove declaration. + * lisp.h (selected_frame): Likewise. + * msdos.c (the_only_display_info): Adjust comment. + 2013-09-23 Eli Zaretskii * xdisp.c (mouse_face_from_string_pos): Fix off-by-one error in === modified file 'src/dispnew.c' --- src/dispnew.c 2013-09-22 09:31:55 +0000 +++ src/dispnew.c 2013-09-23 09:50:47 +0000 @@ -102,30 +102,12 @@ static void adjust_frame_glyphs_for_window_redisplay (struct frame *); static void adjust_frame_glyphs_for_frame_redisplay (struct frame *); -/* True upon entry to redisplay means do not assume anything about - current contents of actual terminal frame; clear and redraw it. */ - -bool frame_garbaged; - /* True means last display completed. False means it was preempted. */ bool display_completed; Lisp_Object Qdisplay_table, Qredisplay_dont_pause; - -/* The currently selected frame. In a single-frame version, this - variable always equals the_only_frame. */ - -Lisp_Object selected_frame; - -/* A frame which is not just a mini-buffer, or 0 if there are no such - frames. This is usually the most recent such frame that was - selected. In a single-frame version, this variable always holds - the address of the_only_frame. */ - -struct frame *last_nonminibuf_frame; - /* True means SIGWINCH happened when not safe. */ static bool delayed_size_change; === modified file 'src/frame.c' --- src/frame.c 2013-09-20 15:34:36 +0000 +++ src/frame.c 2013-09-23 09:50:47 +0000 @@ -113,6 +113,19 @@ static Lisp_Object Qgeometry, Qworkarea, Qmm_size, Qframes, Qsource; +/* The currently selected frame. */ + +Lisp_Object selected_frame; + +/* A frame which is not just a mini-buffer, or NULL if there are no such + frames. This is usually the most recent such frame that was selected. */ + +static struct frame *last_nonminibuf_frame; + +/* Nonzero means there is at least one garbaged frame. */ + +bool frame_garbaged; + #ifdef HAVE_WINDOW_SYSTEM static void x_report_frame_params (struct frame *, Lisp_Object *); #endif @@ -546,6 +559,8 @@ if (!noninteractive) init_frame_faces (f); + last_nonminibuf_frame = f; + return f; } === modified file 'src/frame.h' --- src/frame.h 2013-09-20 15:34:36 +0000 +++ src/frame.h 2013-09-23 09:50:47 +0000 @@ -925,6 +925,7 @@ #define SET_FRAME_ICONIFIED(f, i) \ (f)->iconified = (eassert (0 <= (i) && (i) <= 1), (i)) +extern Lisp_Object selected_frame; extern Lisp_Object Qframep, Qframe_live_p; extern Lisp_Object Qtty, Qtty_type; extern Lisp_Object Qtty_color_mode; @@ -934,8 +935,6 @@ /* Nonzero means there is at least one garbaged frame. */ extern bool frame_garbaged; -extern struct frame *last_nonminibuf_frame; - extern void set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object); extern struct frame *decode_window_system_frame (Lisp_Object); extern struct frame *decode_live_frame (Lisp_Object); @@ -955,10 +954,6 @@ extern Lisp_Object delete_frame (Lisp_Object, Lisp_Object); extern Lisp_Object Vframe_list; - -/* The currently selected frame. */ - -extern Lisp_Object selected_frame; /* Value is a pointer to the selected frame. If the selected frame isn't live, abort. */ === modified file 'src/lisp.h' --- src/lisp.h 2013-09-22 09:31:55 +0000 +++ src/lisp.h 2013-09-23 09:50:47 +0000 @@ -3359,7 +3359,6 @@ && (defined __FreeBSD__ || defined GNU_LINUX || defined __MINGW32__)) _Noreturn void __executable_start (void); #endif -extern Lisp_Object selected_frame; extern Lisp_Object Vwindow_system; extern Lisp_Object sit_for (Lisp_Object, bool, int); extern void init_display (void); === modified file 'src/msdos.c' --- src/msdos.c 2013-09-13 15:03:51 +0000 +++ src/msdos.c 2013-09-23 09:50:47 +0000 @@ -408,7 +408,7 @@ static unsigned short outside_cursor; -/* Similar to the_only_frame. */ +/* The only display since MS-DOS does not support multiple ones. */ struct tty_display_info the_only_display_info; /* Support for DOS/V (allows Japanese characters to be displayed on === modified file 'src/window.c' --- src/window.c 2013-09-20 15:34:36 +0000 +++ src/window.c 2013-09-23 09:50:47 +0000 @@ -6505,7 +6505,6 @@ Vterminal_frame = selected_frame; minibuf_window = f->minibuffer_window; selected_window = f->selected_window; - last_nonminibuf_frame = f; window_initialized = 1; } ------------------------------------------------------------ revno: 114440 fixes bug: http://debbugs.gnu.org/15437 committer: Eli Zaretskii branch nick: trunk timestamp: Mon 2013-09-23 12:28:57 +0300 message: Fix last commit. src/xdisp.c (note_mouse_highlight): Adapt calculation of last argument to mouse_face_from_string_pos to the previous change. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-23 09:18:38 +0000 +++ src/ChangeLog 2013-09-23 09:28:57 +0000 @@ -3,6 +3,8 @@ * xdisp.c (mouse_face_from_string_pos): Fix off-by-one error in computing the end column of mouse-highlight that comes from display or overlay strings. (Bug#15437) + (note_mouse_highlight): Adapt calculation of last argument to + mouse_face_from_string_pos to the above change. * conf_post.h (__has_builtin): Define to zero, if undefined, on all platforms, not just for clang. === modified file 'src/xdisp.c' --- src/xdisp.c 2013-09-23 09:18:38 +0000 +++ src/xdisp.c 2013-09-23 09:28:57 +0000 @@ -28267,7 +28267,7 @@ if (NILP (s)) s = make_number (0); if (NILP (e)) - e = make_number (SCHARS (object) - 1); + e = make_number (SCHARS (object)); mouse_face_from_string_pos (w, hlinfo, object, XINT (s), XINT (e)); hlinfo->mouse_face_past_end = 0; ------------------------------------------------------------ revno: 114439 fixes bug: http://debbugs.gnu.org/15437 committer: Eli Zaretskii branch nick: trunk timestamp: Mon 2013-09-23 12:18:38 +0300 message: Fix bug #15437 with mouse highlight on overlay strings. src/xdisp.c (mouse_face_from_string_pos): Fix off-by-one error in computing the end column of mouse-highlight that comes from display or overlay strings. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-23 08:25:48 +0000 +++ src/ChangeLog 2013-09-23 09:18:38 +0000 @@ -1,5 +1,9 @@ 2013-09-23 Eli Zaretskii + * xdisp.c (mouse_face_from_string_pos): Fix off-by-one error in + computing the end column of mouse-highlight that comes from + display or overlay strings. (Bug#15437) + * conf_post.h (__has_builtin): Define to zero, if undefined, on all platforms, not just for clang. === modified file 'src/xdisp.c' --- src/xdisp.c 2013-09-22 07:13:14 +0000 +++ src/xdisp.c 2013-09-23 09:18:38 +0000 @@ -27381,7 +27381,7 @@ #endif /* not used */ /* Find the positions of the first and the last glyphs in window W's - current matrix that occlude positions [STARTPOS..ENDPOS] in OBJECT + current matrix that occlude positions [STARTPOS..ENDPOS) in OBJECT (assumed to be a string), and return in HLINFO's mouse_face_* members the pixel and column/row coordinates of those glyphs. */ @@ -27397,7 +27397,7 @@ int found = 0; /* Find the glyph row with at least one position in the range - [STARTPOS..ENDPOS], and the first glyph in that row whose + [STARTPOS..ENDPOS), and the first glyph in that row whose position belongs to that range. */ for (r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); r->enabled_p && r->y < yb; @@ -27409,7 +27409,7 @@ e = g + r->used[TEXT_AREA]; for (gx = r->x; g < e; gx += g->pixel_width, ++g) if (EQ (g->object, object) - && startpos <= g->charpos && g->charpos <= endpos) + && startpos <= g->charpos && g->charpos < endpos) { hlinfo->mouse_face_beg_row = MATRIX_ROW_VPOS (r, w->current_matrix); @@ -27427,7 +27427,7 @@ g = e + r->used[TEXT_AREA]; for ( ; g > e; --g) if (EQ ((g-1)->object, object) - && startpos <= (g-1)->charpos && (g-1)->charpos <= endpos) + && startpos <= (g-1)->charpos && (g-1)->charpos < endpos) { hlinfo->mouse_face_beg_row = MATRIX_ROW_VPOS (r, w->current_matrix); @@ -27455,7 +27455,7 @@ found = 0; for ( ; g < e; ++g) if (EQ (g->object, object) - && startpos <= g->charpos && g->charpos <= endpos) + && startpos <= g->charpos && g->charpos < endpos) { found = 1; break; @@ -27478,7 +27478,7 @@ e = g + r->used[TEXT_AREA]; for ( ; e > g; --e) if (EQ ((e-1)->object, object) - && startpos <= (e-1)->charpos && (e-1)->charpos <= endpos) + && startpos <= (e-1)->charpos && (e-1)->charpos < endpos) break; hlinfo->mouse_face_end_col = e - g; @@ -27493,7 +27493,7 @@ for (gx = r->x ; e < g; ++e) { if (EQ (e->object, object) - && startpos <= e->charpos && e->charpos <= endpos) + && startpos <= e->charpos && e->charpos < endpos) break; gx += e->pixel_width; } ------------------------------------------------------------ revno: 114438 committer: Eli Zaretskii branch nick: trunk timestamp: Mon 2013-09-23 11:25:48 +0300 message: Fix the definition of 'assume' for GCC older than 4.5. src/conf_post.h (__has_builtin): Define to zero, if undefined, on all platforms, not just for clang. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-23 07:12:01 +0000 +++ src/ChangeLog 2013-09-23 08:25:48 +0000 @@ -1,3 +1,8 @@ +2013-09-23 Eli Zaretskii + + * conf_post.h (__has_builtin): Define to zero, if undefined, on + all platforms, not just for clang. + 2013-09-23 Jan Djärv * filelock.c (lock_file_1): Rearrange to remove compiler warning === modified file 'src/conf_post.h' --- src/conf_post.h 2013-09-23 07:12:01 +0000 +++ src/conf_post.h 2013-09-23 08:25:48 +0000 @@ -248,10 +248,8 @@ # define FLEXIBLE_ARRAY_MEMBER 1 #endif -#ifdef __clang__ -# ifndef __has_builtin -# define __has_builtin(x) 0 -# endif +#ifndef __has_builtin +# define __has_builtin(x) 0 #endif /* assume(cond) tells the compiler (and lint) that a certain condition ------------------------------------------------------------ revno: 114437 committer: Jan Djärv branch nick: trunk timestamp: Mon 2013-09-23 09:12:01 +0200 message: Suppress some unhelpful warnings when using clang. * configure.ac: With clang, check for and use -Wno-switch, -Wno-tautological-constant-out-of-range-compare and -Wno-pointer-sign. * conf_post.h(assume): Use __builtin_unreachable for clang. * src/filelock.c (lock_file_1): Rearrange to remove compiler warning about excess arguments to snprintf. diff: === modified file 'ChangeLog' --- ChangeLog 2013-09-23 02:34:52 +0000 +++ ChangeLog 2013-09-23 07:12:01 +0000 @@ -1,3 +1,8 @@ +2013-09-23 Jan Djärv + + * configure.ac: With clang, check for and use -Wno-switch, + -Wno-tautological-constant-out-of-range-compare and -Wno-pointer-sign. + 2013-09-23 Daniel Colascione * configure.ac: Check for valgrind headers. === modified file 'configure.ac' --- configure.ac 2013-09-23 02:34:52 +0000 +++ configure.ac 2013-09-23 07:12:01 +0000 @@ -787,10 +787,28 @@ ] ) +# clang is unduly picky about some things. +AC_CACHE_CHECK([whether the compiler is clang], [emacs_cv_clang], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #ifndef __clang__ + #error "not clang" + #endif + ]])], + [emacs_cv_clang=yes], + [emacs_cv_clang=no])]) + # When compiling with GCC, prefer -isystem to -I when including system # include files, to avoid generating useless diagnostics for the files. if test "$gl_gcc_warnings" != yes; then isystem='-I' + if test "$emacs_cv_clang" = yes + then + # Turn off some warnings if supported. + gl_WARN_ADD([-Wno-switch]) + gl_WARN_ADD([-Wno-tautological-constant-out-of-range-compare]) + gl_WARN_ADD([-Wno-pointer-sign]) + fi else isystem='-isystem ' @@ -840,16 +858,6 @@ nw="$nw -Wtype-limits" nw="$nw -Wunused-parameter" - # clang is unduly picky about some things. - AC_CACHE_CHECK([whether the compiler is clang], [emacs_cv_clang], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([[ - #ifndef __clang__ - #error "not clang" - #endif - ]])], - [emacs_cv_clang=yes], - [emacs_cv_clang=no])]) if test $emacs_cv_clang = yes; then nw="$nw -Wcast-align" fi === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-23 03:30:55 +0000 +++ src/ChangeLog 2013-09-23 07:12:01 +0000 @@ -1,3 +1,10 @@ +2013-09-23 Jan Djärv + + * filelock.c (lock_file_1): Rearrange to remove compiler warning + about excess arguments to snprintf. + + * conf_post.h(assume): Use __builtin_unreachable for clang. + 2013-09-23 Juanma Barranquero * w32console.c (initialize_w32_display): Remove unused variable hlinfo. === modified file 'src/conf_post.h' --- src/conf_post.h 2013-09-22 11:07:17 +0000 +++ src/conf_post.h 2013-09-23 07:12:01 +0000 @@ -248,12 +248,20 @@ # define FLEXIBLE_ARRAY_MEMBER 1 #endif +#ifdef __clang__ +# ifndef __has_builtin +# define __has_builtin(x) 0 +# endif +#endif + /* assume(cond) tells the compiler (and lint) that a certain condition * will always hold, and that it should optimize (or check) accordingly. */ #if defined lint # define assume(cond) ((cond) ? (void) 0 : abort ()) #elif (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) || __GNUC__ > 4 # define assume(cond) ((cond) || (__builtin_unreachable(), 0)) +#elif defined (__clang__) && __has_builtin (__builtin_unreachable) +# define assume(cond) ((cond) || (__builtin_unreachable(), 0)) #elif defined __MSC_VER # define assume(cond) __assume ((cond)) #else === modified file 'src/filelock.c' --- src/filelock.c 2013-08-11 01:30:20 +0000 +++ src/filelock.c 2013-09-23 07:12:01 +0000 @@ -459,10 +459,18 @@ char lock_info_str[MAX_LFINFO + 1]; printmax_t pid = getpid (); - if (sizeof lock_info_str - <= snprintf (lock_info_str, sizeof lock_info_str, - boot ? "%s@%s.%"pMd":%"pMd : "%s@%s.%"pMd, - user_name, host_name, pid, boot)) + if (boot) + { + if (sizeof lock_info_str + <= snprintf (lock_info_str, sizeof lock_info_str, + "%s@%s.%"pMd":%"pMd, + user_name, host_name, pid, boot)) + return ENAMETOOLONG; + } + else if (sizeof lock_info_str + <= snprintf (lock_info_str, sizeof lock_info_str, + "%s@%s.%"pMd, + user_name, host_name, pid)) return ENAMETOOLONG; return create_lock_file (lfname, lock_info_str, force); ------------------------------------------------------------ revno: 114436 committer: Leo Liu branch nick: trunk timestamp: Mon 2013-09-23 12:21:41 +0800 message: * autoinsert.el (auto-insert-alist): Make the value of lexical-binding match its file setting. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-23 02:59:30 +0000 +++ lisp/ChangeLog 2013-09-23 04:21:41 +0000 @@ -1,3 +1,8 @@ +2013-09-23 Leo Liu + + * autoinsert.el (auto-insert-alist): Make the value of + lexical-binding match its file setting. + 2013-09-23 Juanma Barranquero * vc/vc-sccs.el (vc-sccs-search-project-dir): Mark unused argument. === modified file 'lisp/autoinsert.el' --- lisp/autoinsert.el 2013-07-05 02:37:39 +0000 +++ lisp/autoinsert.el 2013-09-23 04:21:41 +0000 @@ -166,7 +166,7 @@ "Short description: " ";;; " (file-name-nondirectory (buffer-file-name)) " --- " str (make-string (max 2 (- 80 (current-column) 27)) ?\s) - "-*- lexical-binding: t; -*-" + "-*- lexical-binding: t; -*-" '(setq lexical-binding t) " ;; Copyright (C) " (format-time-string "%Y") " " ------------------------------------------------------------ revno: 114435 committer: Juanma Barranquero branch nick: trunk timestamp: Mon 2013-09-23 05:30:55 +0200 message: src/w32console.c, src/w32term.c: Remove unused variables. src/w32console.c (initialize_w32_display): Remove unused variable hlinfo. src/w32term.c (w32_scroll_bar_handle_click): Remove unused variable f. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-23 02:34:52 +0000 +++ src/ChangeLog 2013-09-23 03:30:55 +0000 @@ -1,3 +1,8 @@ +2013-09-23 Juanma Barranquero + + * w32console.c (initialize_w32_display): Remove unused variable hlinfo. + * w32term.c (w32_scroll_bar_handle_click): Remove unused variable f. + 2013-09-23 Daniel Colascione * alloc.c (USE_VALGRIND): New macro; on by default === modified file 'src/w32console.c' --- src/w32console.c 2013-09-02 03:39:06 +0000 +++ src/w32console.c 2013-09-23 03:30:55 +0000 @@ -598,7 +598,6 @@ initialize_w32_display (struct terminal *term, int *width, int *height) { CONSOLE_SCREEN_BUFFER_INFO info; - Mouse_HLInfo *hlinfo; term->rif = 0; /* No window based redisplay on the console. */ term->cursor_to_hook = w32con_move_cursor; === modified file 'src/w32term.c' --- src/w32term.c 2013-09-19 07:48:53 +0000 +++ src/w32term.c 2013-09-23 03:30:55 +0000 @@ -3981,7 +3981,6 @@ { int top_range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height)); - struct frame *f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); int y; int dragging = !NILP (bar->dragging); SCROLLINFO si; ------------------------------------------------------------ revno: 114434 committer: Juanma Barranquero branch nick: trunk timestamp: Mon 2013-09-23 04:59:30 +0200 message: lisp/vc/vc-sccs.el (vc-sccs-search-project-dir): Mark unused argument. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-23 02:58:02 +0000 +++ lisp/ChangeLog 2013-09-23 02:59:30 +0000 @@ -1,5 +1,7 @@ 2013-09-23 Juanma Barranquero + * vc/vc-sccs.el (vc-sccs-search-project-dir): Mark unused argument. + * autoarg.el (autoarg-kp-digit-argument): * electric.el (Electric-command-loop): * kmacro.el (kmacro-step-edit-insert): === modified file 'lisp/vc/vc-sccs.el' --- lisp/vc/vc-sccs.el 2013-09-04 21:09:42 +0000 +++ lisp/vc/vc-sccs.el 2013-09-23 02:59:30 +0000 @@ -506,7 +506,7 @@ ;; a (autoload 'vc-sccs-search-project-dir "vc-sccs") which would not ;; help us avoid loading vc-sccs. ;;;###autoload -(progn (defun vc-sccs-search-project-dir (dirname basename) +(progn (defun vc-sccs-search-project-dir (_dirname basename) "Return the name of a master file in the SCCS project directory. Does not check whether the file exists but returns nil if it does not find any project directory." ------------------------------------------------------------ revno: 114433 committer: Juanma Barranquero branch nick: trunk timestamp: Mon 2013-09-23 04:58:02 +0200 message: Remove references to universal-argument-num-events. * lisp/autoarg.el (autoarg-kp-digit-argument): * lisp/electric.el (Electric-command-loop): * lisp/kmacro.el (kmacro-step-edit-insert): Do not set universal-argument-num-events. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-22 12:23:20 +0000 +++ lisp/ChangeLog 2013-09-23 02:58:02 +0000 @@ -1,3 +1,10 @@ +2013-09-23 Juanma Barranquero + + * autoarg.el (autoarg-kp-digit-argument): + * electric.el (Electric-command-loop): + * kmacro.el (kmacro-step-edit-insert): + Do not set universal-argument-num-events. + 2013-09-22 Leo Liu * files.el (interpreter-mode-alist): Add octave. === modified file 'lisp/autoarg.el' --- lisp/autoarg.el 2013-01-01 09:11:05 +0000 +++ lisp/autoarg.el 2013-09-23 02:58:02 +0000 @@ -75,7 +75,6 @@ (setq prefix-arg (if (zerop digit) '- (- digit)))) (t (setq prefix-arg digit)))) - (setq universal-argument-num-events (length (this-command-keys))) (setq overriding-terminal-local-map universal-argument-map)) (defvar autoarg-kp-mode-map === modified file 'lisp/electric.el' --- lisp/electric.el 2013-06-19 04:42:32 +0000 +++ lisp/electric.el 2013-09-23 02:58:02 +0000 @@ -78,8 +78,6 @@ (setq last-command-event (aref cmd (1- (length cmd))) this-command (key-binding cmd t) cmd this-command) - ;; This makes universal-argument-other-key work. - (setq universal-argument-num-events 0) (if (or (prog1 quit-flag (setq quit-flag nil)) (eq last-input-event ?\C-g)) (progn (setq unread-command-events nil === modified file 'lisp/kmacro.el' --- lisp/kmacro.el 2013-04-05 08:38:06 +0000 +++ lisp/kmacro.el 2013-09-23 02:58:02 +0000 @@ -1194,12 +1194,10 @@ (setq cmd 'ignore) nil) ((memq cmd kmacro-step-edit-prefix-commands) - (setq universal-argument-num-events 0) (reset-this-command-lengths) nil) ((eq cmd 'universal-argument-other-key) (setq kmacro-step-edit-action t) - (setq universal-argument-num-events 0) (reset-this-command-lengths) (if (numberp kmacro-step-edit-inserting) (setq kmacro-step-edit-inserting nil)) @@ -1214,7 +1212,6 @@ (setq kmacro-step-edit-prefix-index nil) (reset-this-command-lengths) (setq overriding-terminal-local-map nil) - (setq universal-argument-num-events nil) (setq next-index kmacro-step-edit-key-index) t) (t nil)) ------------------------------------------------------------ revno: 114432 committer: Daniel Colascione branch nick: trunk timestamp: Sun 2013-09-22 18:34:52 -0800 message: Tell valgrind about conservative GC regions and suppress spurious warings. * alloc.c (USE_VALGRIND): New macro; on by default when ENABLE_CHECKING. (mark_maybe_object,mark_maybe_pointer) [USE_VALGRIND]: Mark conservatively-scanned regions valid for valgrind purposes. (valgrind_p) [USE_VALGRIND]: New variable. (init_alloc) [USE_VALGRIND]: Initialize valgrind_p. diff: === modified file 'ChangeLog' --- ChangeLog 2013-09-20 09:19:56 +0000 +++ ChangeLog 2013-09-23 02:34:52 +0000 @@ -1,3 +1,7 @@ +2013-09-23 Daniel Colascione + + * configure.ac: Check for valgrind headers. + 2013-09-20 Xue Fuqiao * INSTALL: New homepage of libtiff. === modified file 'configure.ac' --- configure.ac 2013-09-20 03:41:37 +0000 +++ configure.ac 2013-09-23 02:34:52 +0000 @@ -3696,6 +3696,8 @@ AC_SUBST(DESLIB) AC_SUBST(KRB4LIB) +AC_CHECK_HEADERS(valgrind/valgrind.h) + AC_CHECK_FUNCS_ONCE(tzset) AC_MSG_CHECKING(whether localtime caches TZ) AC_CACHE_VAL(emacs_cv_localtime_cache, === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-22 14:26:10 +0000 +++ src/ChangeLog 2013-09-23 02:34:52 +0000 @@ -1,3 +1,13 @@ +2013-09-23 Daniel Colascione + + * alloc.c (USE_VALGRIND): New macro; on by default + when ENABLE_CHECKING. + (mark_maybe_object,mark_maybe_pointer) + [USE_VALGRIND]: Mark conservatively-scanned regions valid for + valgrind purposes. + (valgrind_p) [USE_VALGRIND]: New variable. + (init_alloc) [USE_VALGRIND]: Initialize valgrind_p. + 2013-09-22 Jan Djärv * process.c (wait_reading_process_output): Change int pnamelen to === modified file 'src/alloc.c' --- src/alloc.c 2013-09-22 09:31:55 +0000 +++ src/alloc.c 2013-09-23 02:34:52 +0000 @@ -45,6 +45,18 @@ #include +#if (defined ENABLE_CHECKING && \ + defined HAVE_VALGRIND_VALGRIND_H && \ + !defined USE_VALGRIND) +# define USE_VALGRIND 1 +#endif + +#if USE_VALGRIND +#include +#include +static int valgrind_p; +#endif + /* GC_CHECK_MARKED_OBJECTS means do sanity checks on allocated objects. Doable only if GC_MARK_STACK. */ #if ! GC_MARK_STACK @@ -4327,6 +4339,11 @@ void *po; struct mem_node *m; +#if USE_VALGRIND + if (valgrind_p) + VALGRIND_MAKE_MEM_DEFINED (&obj, sizeof (obj)); +#endif + if (INTEGERP (obj)) return; @@ -4395,6 +4412,11 @@ { struct mem_node *m; +#if USE_VALGRIND + if (valgrind_p) + VALGRIND_MAKE_MEM_DEFINED (&p, sizeof (p)); +#endif + /* Quickly rule out some values which can't point to Lisp data. USE_LSB_TAG needs Lisp data to be aligned on multiples of GCALIGNMENT. Otherwise, assume that Lisp data is aligned on even addresses. */ @@ -6643,6 +6665,10 @@ #endif Vgc_elapsed = make_float (0.0); gcs_done = 0; + +#if USE_VALGRIND + valgrind_p = RUNNING_ON_VALGRIND; +#endif } void ------------------------------------------------------------ revno: 114431 committer: Jan D. branch nick: trunk timestamp: Sun 2013-09-22 16:26:10 +0200 message: Fix compiler warnings from XCode 5.0 on OSX. * nsterm.m (setMarkedText:selectedRange:): (deleteWorkingText): * nsmenu.m (addDisplayItemWithImage:idx:tag:helpText:enabled:): * nsfont.m (ns_get_covering_families, ns_findfonts): Cast NSLog argument to unsigned long to avoid warning. (nsfont_draw): Use 0.25 instead of Fix2X (kATSItalicQDSkew). * process.c (wait_reading_process_output): Change int pnamelen to socklen_t. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-22 11:07:17 +0000 +++ src/ChangeLog 2013-09-22 14:26:10 +0000 @@ -1,5 +1,15 @@ 2013-09-22 Jan Djärv + * process.c (wait_reading_process_output): Change int pnamelen to + socklen_t. + + * nsterm.m (setMarkedText:selectedRange:): + (deleteWorkingText): + * nsmenu.m (addDisplayItemWithImage:idx:tag:helpText:enabled:): + * nsfont.m (ns_get_covering_families, ns_findfonts): Cast NSLog + argument to unsigned long to avoid warning. + (nsfont_draw): Use 0.25 instead of Fix2X (kATSItalicQDSkew). + * conf_post.h (assume): Fix compiler error: x shall be cond. 2013-09-22 Daniel Colascione === modified file 'src/nsfont.m' --- src/nsfont.m 2013-09-15 17:58:46 +0000 +++ src/nsfont.m 2013-09-22 14:26:10 +0000 @@ -526,7 +526,7 @@ } if (NSFONT_TRACE) - NSLog(@" returning %d families", [families count]); + NSLog(@" returning %lu families", (unsigned long)[families count]); return families; } @@ -564,8 +564,8 @@ matchingDescs = [fdesc matchingFontDescriptorsWithMandatoryKeys: fkeys]; if (NSFONT_TRACE) - NSLog(@"Got desc %@ and found %d matching fonts from it: ", fdesc, - [matchingDescs count]); + NSLog(@"Got desc %@ and found %lu matching fonts from it: ", fdesc, + (unsigned long)[matchingDescs count]); for (dEnum = [matchingDescs objectEnumerator]; (desc = [dEnum nextObject]);) { @@ -1249,7 +1249,9 @@ CGContextSaveGState (gcontext); - fliptf.c = font->synthItal ? Fix2X (kATSItalicQDSkew) : 0.0; + // Used to be Fix2X (kATSItalicQDSkew), but Fix2X is deprecated + // and kATSItalicQDSkew is 0.25. + fliptf.c = font->synthItal ? 0.25 : 0.0; CGContextSetFont (gcontext, font->cgfont); CGContextSetFontSize (gcontext, font->size); === modified file 'src/nsmenu.m' --- src/nsmenu.m 2013-08-27 18:47:55 +0000 +++ src/nsmenu.m 2013-09-22 14:26:10 +0000 @@ -1239,7 +1239,7 @@ { /* 1) come up w/identifier */ NSString *identifier - = [NSString stringWithFormat: @"%u", [img hash]]; + = [NSString stringWithFormat: @"%lu", (unsigned long)[img hash]]; [activeIdentifiers addObject: identifier]; /* 2) create / reuse item */ === modified file 'src/nsterm.m' --- src/nsterm.m 2013-09-19 07:48:53 +0000 +++ src/nsterm.m 2013-09-22 14:26:10 +0000 @@ -5208,8 +5208,10 @@ NSString *str = [aString respondsToSelector: @selector (string)] ? [aString string] : aString; if (NS_KEYLOG) - NSLog (@"setMarkedText '%@' len =%d range %d from %d", str, [str length], - selRange.length, selRange.location); + NSLog (@"setMarkedText '%@' len =%lu range %lu from %lu", + str, (unsigned long)[str length], + (unsigned long)selRange.length, + (unsigned long)selRange.location); if (workingText != nil) [self deleteWorkingText]; @@ -5235,7 +5237,7 @@ if (workingText == nil) return; if (NS_KEYLOG) - NSLog(@"deleteWorkingText len =%d\n", [workingText length]); + NSLog(@"deleteWorkingText len =%lu\n", (unsigned long)[workingText length]); [workingText release]; workingText = nil; processingCompose = NO; === modified file 'src/process.c' --- src/process.c 2013-09-20 15:34:36 +0000 +++ src/process.c 2013-09-22 14:26:10 +0000 @@ -4847,7 +4847,7 @@ #else { struct sockaddr pname; - int pnamelen = sizeof (pname); + socklen_t pnamelen = sizeof (pname); /* If connection failed, getpeername will fail. */ xerrno = 0; ------------------------------------------------------------ revno: 114430 committer: Xue Fuqiao branch nick: trunk timestamp: Sun 2013-09-22 20:49:53 +0800 message: * doc/lispref/nonascii.texi (Default Coding Systems): Typo fix. diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2013-09-21 10:58:39 +0000 +++ doc/lispref/ChangeLog 2013-09-22 12:49:53 +0000 @@ -1,3 +1,7 @@ +2013-09-22 Xue Fuqiao + + * nonascii.texi (Default Coding Systems): Typo fix. + 2013-09-21 Xue Fuqiao * nonascii.texi (Coding System Basics): Add information about carriage-return. === modified file 'doc/lispref/nonascii.texi' --- doc/lispref/nonascii.texi 2013-09-21 10:58:39 +0000 +++ doc/lispref/nonascii.texi 2013-09-22 12:49:53 +0000 @@ -1572,7 +1572,7 @@ If @var{operation} is @code{insert-file-contents}, the argument corresponding to the target may be a cons cell of the form -@code{(@var{filename} . @var{buffer})}). In that case, @var{filename} +@code{(@var{filename} . @var{buffer})}. In that case, @var{filename} is a file name to look up in @code{file-coding-system-alist}, and @var{buffer} is a buffer that contains the file's contents (not yet decoded). If @code{file-coding-system-alist} specifies a function to ------------------------------------------------------------ revno: 114429 committer: Leo Liu branch nick: trunk timestamp: Sun 2013-09-22 20:23:20 +0800 message: * files.el (interpreter-mode-alist): Add octave. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-21 17:21:29 +0000 +++ lisp/ChangeLog 2013-09-22 12:23:20 +0000 @@ -1,3 +1,7 @@ +2013-09-22 Leo Liu + + * files.el (interpreter-mode-alist): Add octave. + 2013-09-21 Alan Mackenzie C++: fontify identifier in declaration following "public:" correctly. === modified file 'lisp/files.el' --- lisp/files.el 2013-09-21 08:49:31 +0000 +++ lisp/files.el 2013-09-22 12:23:20 +0000 @@ -2455,6 +2455,7 @@ ("wishx?" . tcl-mode) ("tcl\\(sh\\)?" . tcl-mode) ("expect" . tcl-mode) + ("octave" . octave-mode) ("scm" . scheme-mode) ("[acjkwz]sh" . sh-mode) ("r?bash2?" . sh-mode) ------------------------------------------------------------ revno: 114428 committer: Jan D. branch nick: trunk timestamp: Sun 2013-09-22 13:07:17 +0200 message: * conf_post.h (assume): Fix compiler error: x shall be cond. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-22 09:48:21 +0000 +++ src/ChangeLog 2013-09-22 11:07:17 +0000 @@ -1,3 +1,7 @@ +2013-09-22 Jan Djärv + + * conf_post.h (assume): Fix compiler error: x shall be cond. + 2013-09-22 Daniel Colascione * xfns.c (x_get_monitor_attributes): Suppress unused variable === modified file 'src/conf_post.h' --- src/conf_post.h 2013-09-22 09:31:55 +0000 +++ src/conf_post.h 2013-09-22 11:07:17 +0000 @@ -253,7 +253,7 @@ #if defined lint # define assume(cond) ((cond) ? (void) 0 : abort ()) #elif (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) || __GNUC__ > 4 -# define assume(cond) ((x) || (__builtin_unreachable(), 0)) +# define assume(cond) ((cond) || (__builtin_unreachable(), 0)) #elif defined __MSC_VER # define assume(cond) __assume ((cond)) #else ------------------------------------------------------------ revno: 114427 committer: dancol@dancol.org branch nick: trunk timestamp: Sun 2013-09-22 01:48:21 -0800 message: Suppress unused variable warning when compiling without a window system. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-22 09:31:55 +0000 +++ src/ChangeLog 2013-09-22 09:48:21 +0000 @@ -1,5 +1,10 @@ 2013-09-22 Daniel Colascione + * xfns.c (x_get_monitor_attributes): Suppress unused variable + warning when compiling without a window system. + +2013-09-22 Daniel Colascione + * data.c (Qbool_vector_p): New symbol. (bool_vector_spare_mask,popcount_size_t_generic) (popcount_size_t_msc,popcount_size_t_gcc) === modified file 'src/xfns.c' --- src/xfns.c 2013-09-15 08:28:30 +0000 +++ src/xfns.c 2013-09-22 09:48:21 +0000 @@ -3949,6 +3949,8 @@ Lisp_Object attributes_list = Qnil; Display *dpy = dpyinfo->display; + (void) dpy; /* Suppress unused variable warning. */ + #ifdef HAVE_XRANDR int xrr_event_base, xrr_error_base; bool xrr_ok = false; ------------------------------------------------------------ revno: 114426 committer: Daniel Colascione branch nick: trunk timestamp: Sun 2013-09-22 01:31:55 -0800 message: Add set operations for bool-vector. http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00404.html * data.c (Qbool_vector_p): New symbol. (bool_vector_spare_mask,popcount_size_t_generic) (popcount_size_t_msc,popcount_size_t_gcc) (popcount_size_t) (bool_vector_binop_driver) (count_trailing_zero_bits,size_t_to_host_endian) (Fbool_vector_exclusive_or) (Fbool_vector_union) (Fbool_vector_intersection,Fbool_vector_set_difference) (Fbool_vector_subsetp,Fbool_vector_not) (Fbool_vector_count_matches) (Fbool_vector_count_matches_at): New functions. (syms_of_data): Intern new symbol, functions. * alloc.c (bool_vector_payload_bytes): New function. (Fmake_bool_vector): Instead of calling Fmake_vector, which performs redundant initialization and argument checking, just call allocate_vector ourselves. Make sure we clear any terminating padding to zero. (vector_nbytes,sweep_vectors): Use bool_vector_payload_bytes instead of open-coding the size calculation. (vroundup_ct): New macro. (vroundup): Assume argument >= 0; invoke vroundup_ct. * casetab.c (shuffle,set_identity): Change lint_assume to assume. * composite.c (composition_gstring_put_cache): Change lint_assume to assume. * conf_post.h (assume): New macro. (lint_assume): Remove. * dispnew.c (update_frame_1): Change lint_assume to assume. * ftfont.c (ftfont_shape_by_flt): Change lint_assume to assume. * image.c (gif_load): Change lint_assume to assume. * lisp.h (eassert_and_assume): New macro. (Qbool_vector_p): Declare. (CHECK_BOOL_VECTOR,ROUNDUP,BITS_PER_SIZE_T): New macros. (swap16,swap32,swap64): New inline functions. * macfont.c (macfont_shape): Change lint_assume to assume. * ralloc.c: Rename ROUNDUP to PAGE_ROUNDUP throughout. * xsettings.c (parse_settings): Use new swap16 and swap32 from lisp.h instead of file-specific macros. diff: === modified file 'etc/ChangeLog' --- etc/ChangeLog 2013-09-17 07:31:09 +0000 +++ etc/ChangeLog 2013-09-22 09:31:55 +0000 @@ -1,4 +1,8 @@ -2013-09-15 Jan Djärv +2013-09-22 Daniel Colascione + + * NEWS: Mention new bool-vector functionality. + +aaaa2013-09-15 Jan Djärv * NEWS: Mention the macfont backend. === modified file 'etc/NEWS' --- etc/NEWS 2013-09-21 08:16:13 +0000 +++ etc/NEWS 2013-09-22 09:31:55 +0000 @@ -638,6 +638,16 @@ * Lisp Changes in Emacs 24.4 +** New bool-vector set operation functions: +*** `bool-vector-exclusive-or' +*** `bool-vector-union' +*** `bool-vector-intersection' +*** `bool-vector-set-difference' +*** `bool-vector-not' +*** `bool-vector-subset' +*** `bool-vector-count-matches' +*** `bool-vector-count-matches-at' + ** Comparison functions =, <, >, <=, >= now take many arguments. ** The second argument of `eval' can now be a lexical-environment. === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-22 07:13:14 +0000 +++ src/ChangeLog 2013-09-22 09:31:55 +0000 @@ -1,3 +1,45 @@ +2013-09-22 Daniel Colascione + + * data.c (Qbool_vector_p): New symbol. + (bool_vector_spare_mask,popcount_size_t_generic) + (popcount_size_t_msc,popcount_size_t_gcc) + (popcount_size_t) + (bool_vector_binop_driver) + (count_trailing_zero_bits,size_t_to_host_endian) + (Fbool_vector_exclusive_or) + (Fbool_vector_union) + (Fbool_vector_intersection,Fbool_vector_set_difference) + (Fbool_vector_subsetp,Fbool_vector_not) + (Fbool_vector_count_matches) + (Fbool_vector_count_matches_at): New functions. + (syms_of_data): Intern new symbol, functions. + * alloc.c (bool_vector_payload_bytes): New function. + (Fmake_bool_vector): Instead of calling Fmake_vector, + which performs redundant initialization and argument checking, + just call allocate_vector ourselves. Make sure we clear any + terminating padding to zero. + (vector_nbytes,sweep_vectors): Use bool_vector_payload_bytes + instead of open-coding the size calculation. + (vroundup_ct): New macro. + (vroundup): Assume argument >= 0; invoke vroundup_ct. + * casetab.c (shuffle,set_identity): Change lint_assume to assume. + * composite.c (composition_gstring_put_cache): Change + lint_assume to assume. + * conf_post.h (assume): New macro. + (lint_assume): Remove. + * dispnew.c (update_frame_1): Change lint_assume to assume. + * ftfont.c (ftfont_shape_by_flt): Change lint_assume + to assume. + * image.c (gif_load): Change lint_assume to assume. + * lisp.h (eassert_and_assume): New macro. + (Qbool_vector_p): Declare. + (CHECK_BOOL_VECTOR,ROUNDUP,BITS_PER_SIZE_T): New macros. + (swap16,swap32,swap64): New inline functions. + * macfont.c (macfont_shape): Change lint_assume to assume. + * ralloc.c: Rename ROUNDUP to PAGE_ROUNDUP throughout. + * xsettings.c (parse_settings): Use new swap16 and + swap32 from lisp.h instead of file-specific macros. + 2013-09-22 Eli Zaretskii * xdisp.c (try_window_id): Don't abort if cursor row could not be === modified file 'src/alloc.c' --- src/alloc.c 2013-09-20 15:34:36 +0000 +++ src/alloc.c 2013-09-22 09:31:55 +0000 @@ -2001,6 +2001,35 @@ return val; } +verify (sizeof (size_t) * CHAR_BIT == BITS_PER_SIZE_T); +verify ((BITS_PER_SIZE_T & (BITS_PER_SIZE_T - 1)) == 0); + +static +ptrdiff_t +bool_vector_payload_bytes (ptrdiff_t nr_bits, + ptrdiff_t* exact_needed_bytes_out) +{ + ptrdiff_t exact_needed_bytes; + ptrdiff_t needed_bytes; + + eassert_and_assume (nr_bits >= 0); + + exact_needed_bytes = ROUNDUP ((size_t) nr_bits, CHAR_BIT) / CHAR_BIT; + needed_bytes = ROUNDUP ((size_t) nr_bits, BITS_PER_SIZE_T) / CHAR_BIT; + + if (needed_bytes == 0) + { + /* Always allocate at least one machine word of payload so that + bool-vector operations in data.c don't need a special case + for empty vectors. */ + needed_bytes = sizeof (size_t); + } + + if (exact_needed_bytes_out != NULL) + *exact_needed_bytes_out = exact_needed_bytes; + + return needed_bytes; +} DEFUN ("make-bool-vector", Fmake_bool_vector, Smake_bool_vector, 2, 2, 0, doc: /* Return a new bool-vector of length LENGTH, using INIT for each element. @@ -2009,37 +2038,43 @@ { register Lisp_Object val; struct Lisp_Bool_Vector *p; - ptrdiff_t length_in_chars; - EMACS_INT length_in_elts; - int bits_per_value; - int extra_bool_elts = ((bool_header_size - header_size + word_size - 1) - / word_size); + ptrdiff_t exact_payload_bytes; + ptrdiff_t total_payload_bytes; + ptrdiff_t needed_elements; CHECK_NATNUM (length); - - bits_per_value = sizeof (EMACS_INT) * BOOL_VECTOR_BITS_PER_CHAR; - - length_in_elts = (XFASTINT (length) + bits_per_value - 1) / bits_per_value; - - val = Fmake_vector (make_number (length_in_elts + extra_bool_elts), Qnil); - - /* No Lisp_Object to trace in there. */ + if (PTRDIFF_MAX < XFASTINT (length)) + memory_full (SIZE_MAX); + + total_payload_bytes = bool_vector_payload_bytes + (XFASTINT (length), &exact_payload_bytes); + + eassert_and_assume (exact_payload_bytes <= total_payload_bytes); + eassert_and_assume (0 <= exact_payload_bytes); + + needed_elements = ROUNDUP ((size_t) ((bool_header_size - header_size) + + total_payload_bytes), + word_size) / word_size; + + p = (struct Lisp_Bool_Vector* ) allocate_vector (needed_elements); + XSETVECTOR (val, p); XSETPVECTYPESIZE (XVECTOR (val), PVEC_BOOL_VECTOR, 0, 0); - p = XBOOL_VECTOR (val); p->size = XFASTINT (length); - - length_in_chars = ((XFASTINT (length) + BOOL_VECTOR_BITS_PER_CHAR - 1) - / BOOL_VECTOR_BITS_PER_CHAR); - if (length_in_chars) + if (exact_payload_bytes) { - memset (p->data, ! NILP (init) ? -1 : 0, length_in_chars); + memset (p->data, ! NILP (init) ? -1 : 0, exact_payload_bytes); /* Clear any extraneous bits in the last byte. */ - p->data[length_in_chars - 1] + p->data[exact_payload_bytes - 1] &= (1 << ((XFASTINT (length) - 1) % BOOL_VECTOR_BITS_PER_CHAR + 1)) - 1; } + /* Clear padding at the end. */ + memset (p->data + exact_payload_bytes, + 0, + total_payload_bytes - exact_payload_bytes); + return val; } @@ -2565,24 +2600,22 @@ roundup_size = COMMON_MULTIPLE (word_size, USE_LSB_TAG ? GCALIGNMENT : 1) }; -/* ROUNDUP_SIZE must be a power of 2. */ -verify ((roundup_size & (roundup_size - 1)) == 0); - /* Verify assumptions described above. */ verify ((VECTOR_BLOCK_SIZE % roundup_size) == 0); verify (VECTOR_BLOCK_SIZE <= (1 << PSEUDOVECTOR_SIZE_BITS)); -/* Round up X to nearest mult-of-ROUNDUP_SIZE. */ - -#define vroundup(x) (((x) + (roundup_size - 1)) & ~(roundup_size - 1)) +/* Round up X to nearest mult-of-ROUNDUP_SIZE --- use at compile time. */ +#define vroundup_ct(x) ROUNDUP((size_t)(x), roundup_size) +/* Round up X to nearest mult-of-ROUNDUP_SIZE --- use at runtime. */ +#define vroundup(x) (assume((x) >= 0), vroundup_ct(x)) /* Rounding helps to maintain alignment constraints if USE_LSB_TAG. */ -#define VECTOR_BLOCK_BYTES (VECTOR_BLOCK_SIZE - vroundup (sizeof (void *))) +#define VECTOR_BLOCK_BYTES (VECTOR_BLOCK_SIZE - vroundup_ct (sizeof (void *))) /* Size of the minimal vector allocated from block. */ -#define VBLOCK_BYTES_MIN vroundup (header_size + sizeof (Lisp_Object)) +#define VBLOCK_BYTES_MIN vroundup_ct (header_size + sizeof (Lisp_Object)) /* Size of the largest vector allocated from block. */ @@ -2642,7 +2675,7 @@ struct large_vector *vector; #if USE_LSB_TAG /* We need to maintain ROUNDUP_SIZE alignment for the vector member. */ - unsigned char c[vroundup (sizeof (struct large_vector *))]; + unsigned char c[vroundup_ct (sizeof (struct large_vector *))]; #endif } next; struct Lisp_Vector v; @@ -2783,10 +2816,14 @@ if (size & PSEUDOVECTOR_FLAG) { if (PSEUDOVECTOR_TYPEP (&v->header, PVEC_BOOL_VECTOR)) - size = (bool_header_size - + (((struct Lisp_Bool_Vector *) v)->size - + BOOL_VECTOR_BITS_PER_CHAR - 1) - / BOOL_VECTOR_BITS_PER_CHAR); + { + struct Lisp_Bool_Vector *bv = (struct Lisp_Bool_Vector *) v; + ptrdiff_t payload_bytes = + bool_vector_payload_bytes (bv->size, NULL); + + eassert_and_assume (payload_bytes >= 0); + size = bool_header_size + ROUNDUP (payload_bytes, word_size); + } else size = (header_size + ((size & PSEUDOVECTOR_SIZE_MASK) @@ -2886,17 +2923,11 @@ total_vectors++; if (vector->header.size & PSEUDOVECTOR_FLAG) { - struct Lisp_Bool_Vector *b = (struct Lisp_Bool_Vector *) vector; - /* All non-bool pseudovectors are small enough to be allocated from vector blocks. This code should be redesigned if some pseudovector type grows beyond VBLOCK_BYTES_MAX. */ eassert (PSEUDOVECTOR_TYPEP (&vector->header, PVEC_BOOL_VECTOR)); - - total_vector_slots - += (bool_header_size - + ((b->size + BOOL_VECTOR_BITS_PER_CHAR - 1) - / BOOL_VECTOR_BITS_PER_CHAR)) / word_size; + total_vector_slots += vector_nbytes (vector) / word_size; } else total_vector_slots === modified file 'src/casetab.c' --- src/casetab.c 2013-08-26 05:20:59 +0000 +++ src/casetab.c 2013-09-22 09:31:55 +0000 @@ -205,7 +205,7 @@ from = to = XINT (c); to++; - lint_assume (to <= MAX_CHAR + 1); + assume (to <= MAX_CHAR + 1); for (; from < to; from++) CHAR_TABLE_SET (table, from, make_number (from)); } @@ -232,7 +232,7 @@ from = to = XINT (c); to++; - lint_assume (to <= MAX_CHAR + 1); + assume (to <= MAX_CHAR + 1); for (; from < to; from++) { Lisp_Object tem = Faref (table, elt); === modified file 'src/composite.c' --- src/composite.c 2013-09-20 15:34:36 +0000 +++ src/composite.c 2013-09-22 09:31:55 +0000 @@ -674,7 +674,7 @@ len = j; } - lint_assume (len <= TYPE_MAXIMUM (ptrdiff_t) - 2); + assume (len <= TYPE_MAXIMUM (ptrdiff_t) - 2); copy = Fmake_vector (make_number (len + 2), Qnil); LGSTRING_SET_HEADER (copy, Fcopy_sequence (header)); for (i = 0; i < len; i++) === modified file 'src/conf_post.h' --- src/conf_post.h 2013-09-20 15:34:36 +0000 +++ src/conf_post.h 2013-09-22 09:31:55 +0000 @@ -248,16 +248,24 @@ # define FLEXIBLE_ARRAY_MEMBER 1 #endif +/* assume(cond) tells the compiler (and lint) that a certain condition + * will always hold, and that it should optimize (or check) accordingly. */ +#if defined lint +# define assume(cond) ((cond) ? (void) 0 : abort ()) +#elif (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) || __GNUC__ > 4 +# define assume(cond) ((x) || (__builtin_unreachable(), 0)) +#elif defined __MSC_VER +# define assume(cond) __assume ((cond)) +#else +# define assume(cond) (0 && (cond)) +#endif + /* Use this to suppress gcc's `...may be used before initialized' warnings. */ #ifdef lint /* Use CODE only if lint checking is in effect. */ # define IF_LINT(Code) Code -/* Assume that the expression COND is true. This differs in intent - from 'assert', as it is a message from the programmer to the compiler. */ -# define lint_assume(cond) ((cond) ? (void) 0 : abort ()) #else # define IF_LINT(Code) /* empty */ -# define lint_assume(cond) ((void) (0 && (cond))) #endif /* conf_post.h ends here */ === modified file 'src/data.c' --- src/data.c 2013-09-11 07:20:20 +0000 +++ src/data.c 2013-09-22 09:31:55 +0000 @@ -54,6 +54,7 @@ static Lisp_Object Qnatnump; Lisp_Object Qstringp, Qarrayp, Qsequencep, Qbufferp; Lisp_Object Qchar_or_string_p, Qmarkerp, Qinteger_or_marker_p, Qvectorp; +Lisp_Object Qbool_vector_p; Lisp_Object Qbuffer_or_string_p; static Lisp_Object Qkeywordp, Qboundp; Lisp_Object Qfboundp; @@ -2956,6 +2957,457 @@ return make_number (order); } +/* Because we round up the bool vector allocate size to word_size + units, we can safely read past the "end" of the vector in the + operations below. These extra bits are always zero. Also, we + always allocate bool vectors with at least one size_t of storage so + that we don't have to special-case empty bit vectors. */ + +static inline +size_t +bool_vector_spare_mask (ptrdiff_t nr_bits) +{ + eassert_and_assume (nr_bits > 0); + return (((size_t) 1) << (nr_bits % BITS_PER_SIZE_T)) - 1; +} + +#if __MSC_VER >= 1500 && (defined _M_IX86 || defined _M_X64) +# define USE_MSC_POPCOUNT +#elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) +# define USE_GCC_POPCOUNT +#else +# define NEED_GENERIC_POPCOUNT +#endif + +#ifdef USE_MSC_POPCOUNT +#define NEED_GENERIC_POPCOUNT +#endif + +#ifdef NEED_GENERIC_POPCOUNT +static inline +unsigned int +popcount_size_t_generic (size_t val) +{ + unsigned short j; + unsigned int count = 0; + + for (j = 0; j < BITS_PER_SIZE_T; ++j) + count += !!((((size_t) 1) << j) & val); + + return count; +} +#endif + +#ifdef USE_MSC_POPCOUNT +static inline +unsigned int +popcount_size_t_msc (size_t val) +{ + unsigned int count; + +#pragma intrinsic __cpuid + /* While gcc falls back to its own generic code if the machine on + which it's running doesn't support popcount, we need to perform the + detection and fallback ourselves when compiling with Microsoft's + compiler. */ + + static enum { + popcount_unknown_support, + popcount_use_generic, + popcount_use_intrinsic + } popcount_state; + + if (popcount_state == popcount_unknown_support) + { + int cpu_info[4]; + __cpuid (cpu_info, 1); + if (cpu_info[2] & (1<<23)) /* See MSDN. */ + popcount_state = popcount_use_intrinsic; + else + popcount_state = popcount_use_generic; + } + + if (popcount_state == popcount_use_intrinsic) + { +# if BITS_PER_SIZE_T == 64 +# pragma intrinsic __popcnt64 + count = __popcnt64 (val); +# else +# pragma intrinsic __popcnt + count = __popcnt (val); +# endif + } + else + count = popcount_size_t_generic (val); + + return count; +} +#endif /* USE_MSC_POPCOUNT */ + +#ifdef USE_GCC_POPCOUNT +static inline +unsigned int +popcount_size_t_gcc (size_t val) +{ +# if BITS_PER_SIZE_T == 64 + return __builtin_popcountll (val); +# else + return __builtin_popcount (val); +# endif +} +#endif /* USE_GCC_POPCOUNT */ + +static inline +unsigned int +popcount_size_t(size_t val) +{ +#if defined USE_MSC_POPCOUNT + return popcount_size_t_msc (val); +#elif defined USE_GCC_POPCOUNT + return popcount_size_t_gcc (val); +#else + return popcount_size_t_generic (val); + #endif +} + +enum bool_vector_op { bool_vector_exclusive_or, + bool_vector_union, + bool_vector_intersection, + bool_vector_set_difference, + bool_vector_subsetp }; + +static inline +Lisp_Object +bool_vector_binop_driver (Lisp_Object op1, + Lisp_Object op2, + Lisp_Object dest, + enum bool_vector_op op) +{ + EMACS_INT nr_bits; + size_t *adata, *bdata, *cdata; + ptrdiff_t i; + size_t changed = 0; + size_t mword; + ptrdiff_t nr_words; + + CHECK_BOOL_VECTOR (op1); + CHECK_BOOL_VECTOR (op2); + + nr_bits = min (XBOOL_VECTOR (op1)->size, + XBOOL_VECTOR (op2)->size); + + if (NILP (dest)) + { + dest = Fmake_bool_vector (make_number (nr_bits), Qnil); + changed = 1; + } + else + { + CHECK_BOOL_VECTOR (dest); + nr_bits = min (nr_bits, XBOOL_VECTOR (dest)->size); + } + + eassert_and_assume (nr_bits >= 0); + nr_words = ROUNDUP(nr_bits, BITS_PER_SIZE_T) / BITS_PER_SIZE_T; + + adata = (size_t*) XBOOL_VECTOR (dest)->data; + bdata = (size_t*) XBOOL_VECTOR (op1)->data; + cdata = (size_t*) XBOOL_VECTOR (op2)->data; + i = 0; + do + { + if (op == bool_vector_exclusive_or) + mword = bdata[i] ^ cdata[i]; + else if (op == bool_vector_union || op == bool_vector_subsetp) + mword = bdata[i] | cdata[i]; + else if (op == bool_vector_intersection) + mword = bdata[i] & cdata[i]; + else if (op == bool_vector_set_difference) + mword = bdata[i] &~ cdata[i]; + else + abort (); + + changed |= adata[i] ^ mword; + + if (op != bool_vector_subsetp) + adata[i] = mword; + + i += 1; + } + while (i < nr_words); + return changed ? dest : Qnil; +} + +/* Compute the number of trailing zero bits in val. If val is zero, + return the number of bits in val. */ +static inline +unsigned int +count_trailing_zero_bits (size_t val) +{ + if (val == 0) + return CHAR_BIT * sizeof (val); + +#if defined USE_GCC_POPCOUNT && BITS_PER_SIZE_T == 64 + return __builtin_ctzll (val); +#elif defined USE_GCC_POPCOUNT && BITS_PER_SIZE_T == 32 + return __builtin_ctz (val); +#elif __MSC_VER && BITS_PER_SIZE_T == 64 +# pragma intrinsic _BitScanForward64 + { + /* No support test needed: support since 386. */ + unsigned long result; + _BitScanForward64 (&result, val); + return (unsigned int) result; + } +#elif __MSC_VER && BITS_PER_SIZE_T == 32 +# pragma intrinsic _BitScanForward + { + /* No support test needed: support since 386. */ + unsigned long result; + _BitScanForward (&result, val); + return (unsigned int) result; + } +#else + { + unsigned int count; + count = 0; + for(val = ~val; val & 1; val >>= 1) + ++count; + + return count; + } +#endif +} + +static inline +size_t +size_t_to_host_endian (size_t val) +{ +#ifdef WORDS_BIGENDIAN +# if BITS_PER_SIZE_T == 64 + return swap64 (val); +# else + return swap32 (val); +# endif +#else + return val; +#endif +} + +DEFUN ("bool-vector-exclusive-or", Fbool_vector_exclusive_or, + Sbool_vector_exclusive_or, 2, 3, 0, + doc: /* Compute C = A ^ B, bitwise exclusive or. +A, B, and C must be bool vectors. If C is nil, allocate a new bool +vector in which to store the result. Return the destination vector if +it changed or nil otherwise. */ + ) + (Lisp_Object a, Lisp_Object b, Lisp_Object c) +{ + return bool_vector_binop_driver (a, b, c, bool_vector_exclusive_or); +} + +DEFUN ("bool-vector-union", Fbool_vector_union, + Sbool_vector_union, 2, 3, 0, + doc: /* Compute C = A | B, bitwise or. +A, B, and C must be bool vectors. If C is nil, allocate a new bool +vector in which to store the result. Return the destination vector if +it changed or nil otherwise. */) + (Lisp_Object a, Lisp_Object b, Lisp_Object c) +{ + return bool_vector_binop_driver (a, b, c, bool_vector_union); +} + +DEFUN ("bool-vector-intersection", Fbool_vector_intersection, + Sbool_vector_intersection, 2, 3, 0, + doc: /* Compute C = A & B, bitwise and. +A, B, and C must be bool vectors. If C is nil, allocate a new bool +vector in which to store the result. Return the destination vector if +it changed or nil otherwise. */) + (Lisp_Object a, Lisp_Object b, Lisp_Object c) +{ + return bool_vector_binop_driver (a, b, c, bool_vector_intersection); +} + +DEFUN ("bool-vector-set-difference", Fbool_vector_set_difference, + Sbool_vector_set_difference, 2, 3, 0, + doc: /* Compute C = A &~ B, set difference. +A, B, and C must be bool vectors. If C is nil, allocate a new bool +vector in which to store the result. Return the destination vector if +it changed or nil otherwise. */) + (Lisp_Object a, Lisp_Object b, Lisp_Object c) +{ + return bool_vector_binop_driver (a, b, c, bool_vector_set_difference); +} + +DEFUN ("bool-vector-subsetp", Fbool_vector_subsetp, + Sbool_vector_subsetp, 2, 2, 0, + doc: ) + (Lisp_Object a, Lisp_Object b) +{ + /* Like bool_vector_union, but doesn't modify b. */ + return bool_vector_binop_driver (b, a, b, bool_vector_subsetp); +} + +DEFUN ("bool-vector-not", Fbool_vector_not, + Sbool_vector_not, 1, 2, 0, + doc: /* Compute B = ~A. +B must be a bool vector. A must be a bool vector or nil. +If A is nil, allocate a new bool vector in which to store the result. +Return the destination vector. */) + (Lisp_Object a, Lisp_Object b) +{ + EMACS_INT nr_bits; + size_t *bdata, *adata; + ptrdiff_t i; + size_t mword; + + CHECK_BOOL_VECTOR (a); + nr_bits = XBOOL_VECTOR (a)->size; + + if (NILP (b)) + b = Fmake_bool_vector (make_number (nr_bits), Qnil); + else + { + CHECK_BOOL_VECTOR (b); + nr_bits = min (nr_bits, XBOOL_VECTOR (b)->size); + } + + bdata = (size_t*) XBOOL_VECTOR (b)->data; + adata = (size_t*) XBOOL_VECTOR (a)->data; + i = 0; + + eassert_and_assume (nr_bits >= 0); + + while (i < nr_bits / BITS_PER_SIZE_T) + { + bdata[i] = ~adata[i]; + i += 1; + } + + if (nr_bits % BITS_PER_SIZE_T) + { + mword = size_t_to_host_endian (adata[i]); + mword = ~mword; + mword &= bool_vector_spare_mask (nr_bits); + bdata[i] = size_t_to_host_endian (mword); + } + + return b; +} + +DEFUN ("bool-vector-count-matches", Fbool_vector_count_matches, + Sbool_vector_count_matches, 2, 2, 0, + doc: /* Count how many elements in A equal B. +A must be a bool vector. B is a generalized bool. */) + (Lisp_Object a, Lisp_Object b) +{ + ptrdiff_t count; + EMACS_INT nr_bits; + size_t *adata; + size_t match; + ptrdiff_t i; + + CHECK_BOOL_VECTOR (a); + + nr_bits = XBOOL_VECTOR (a)->size; + count = 0; + match = NILP (b) ? (size_t) -1 : 0; + adata = (size_t*) XBOOL_VECTOR (a)->data; + + eassert_and_assume (nr_bits >= 0); + + for(i = 0; i < nr_bits / BITS_PER_SIZE_T; ++i) + count += popcount_size_t (adata[i] ^ match); + + /* Mask out trailing parts of final mword. */ + if (nr_bits % BITS_PER_SIZE_T) + { + size_t mword = adata[i] ^ match; + mword = size_t_to_host_endian (mword); + count += popcount_size_t (mword & bool_vector_spare_mask (nr_bits)); + } + + return make_number (count); +} + +DEFUN ("bool-vector-count-matches-at", + Fbool_vector_count_matches_at, + Sbool_vector_count_matches_at, 3, 3, 0, + doc: /* Count how many consecutive elements in A equal B at i. +A must be a bool vector. B is a generalized boolean. i is an +index into the vector.*/) + (Lisp_Object a, Lisp_Object b, Lisp_Object i) +{ + ptrdiff_t count; + EMACS_INT nr_bits; + ptrdiff_t offset; + size_t *adata; + size_t twiddle; + size_t mword; /* Machine word. */ + ptrdiff_t pos; + ptrdiff_t nr_words; + + CHECK_BOOL_VECTOR (a); + CHECK_NATNUM (i); + + nr_bits = XBOOL_VECTOR (a)->size; + if (XFASTINT (i) > nr_bits) /* Allow one past the end for convenience */ + args_out_of_range (a, i); + + adata = (size_t*) XBOOL_VECTOR (a)->data; + + assume (nr_bits >= 0); + nr_words = ROUNDUP (nr_bits, BITS_PER_SIZE_T) / BITS_PER_SIZE_T; + + pos = XFASTINT (i) / BITS_PER_SIZE_T; + offset = XFASTINT (i) % BITS_PER_SIZE_T; + count = 0; + + /* By XORing with twiddle, we transform the problem of "count + consecutive equal values" into "count the zero bits". The latter + operation usually has hardware support. */ + twiddle = NILP (b) ? 0 : (size_t) -1; + + /* Scan the remainder of the mword at the current offset. */ + if (pos < nr_words && offset != 0) + { + mword = size_t_to_host_endian (adata[pos]); + mword ^= twiddle; + mword >>= offset; + count = count_trailing_zero_bits (mword); + count = min (count, BITS_PER_SIZE_T - offset); + pos += 1; + if (count + offset < BITS_PER_SIZE_T) + return make_number (count); + } + + /* Scan whole words until we either reach the end of the vector or + find an mword that doesn't completely match. twiddle is + endian-independent. */ + while (pos < nr_words && adata[pos] == twiddle) + { + count += BITS_PER_SIZE_T; + ++pos; + } + + if (pos < nr_words) + { + /* If we stopped because of a mismatch, see how many bits match + in the current mword. */ + mword = size_t_to_host_endian (adata[pos]); + mword ^= twiddle; + count += count_trailing_zero_bits (mword); + } + else if (nr_bits % BITS_PER_SIZE_T != 0) + { + /* If we hit the end, we might have overshot our count. Reduce + the total by the number of spare bits at the end of the + vector. */ + count -= BITS_PER_SIZE_T - nr_bits % BITS_PER_SIZE_T; + } + + return make_number (count); +} void @@ -3005,6 +3457,7 @@ DEFSYM (Qsequencep, "sequencep"); DEFSYM (Qbufferp, "bufferp"); DEFSYM (Qvectorp, "vectorp"); + DEFSYM (Qbool_vector_p, "bool-vector-p"); DEFSYM (Qchar_or_string_p, "char-or-string-p"); DEFSYM (Qmarkerp, "markerp"); DEFSYM (Qbuffer_or_string_p, "buffer-or-string-p"); @@ -3222,6 +3675,15 @@ defsubr (&Ssubr_arity); defsubr (&Ssubr_name); + defsubr (&Sbool_vector_exclusive_or); + defsubr (&Sbool_vector_union); + defsubr (&Sbool_vector_intersection); + defsubr (&Sbool_vector_set_difference); + defsubr (&Sbool_vector_not); + defsubr (&Sbool_vector_subsetp); + defsubr (&Sbool_vector_count_matches); + defsubr (&Sbool_vector_count_matches_at); + set_symbol_function (Qwholenump, XSYMBOL (Qnatnump)->function); DEFVAR_LISP ("most-positive-fixnum", Vmost_positive_fixnum, === modified file 'src/dispnew.c' --- src/dispnew.c 2013-09-20 15:34:36 +0000 +++ src/dispnew.c 2013-09-22 09:31:55 +0000 @@ -4451,7 +4451,7 @@ } } - lint_assume (0 <= FRAME_LINES (f)); + assume (0 <= FRAME_LINES (f)); pause_p = 0 < i && i < FRAME_LINES (f) - 1; /* Now just clean up termcap drivers and set cursor, etc. */ === modified file 'src/ftfont.c' --- src/ftfont.c 2013-08-03 03:29:03 +0000 +++ src/ftfont.c 2013-09-22 09:31:55 +0000 @@ -2425,7 +2425,7 @@ } len = i; - lint_assume (len <= STRING_BYTES_BOUND); + assume (len <= STRING_BYTES_BOUND); if (with_variation_selector) { === modified file 'src/image.c' --- src/image.c 2013-09-17 06:33:24 +0000 +++ src/image.c 2013-09-22 09:31:55 +0000 @@ -7523,7 +7523,7 @@ { while (subimg_height <= row) { - lint_assume (pass < 3); + assume (pass < 3); row = interlace_start[++pass]; } === modified file 'src/intervals.c' --- src/intervals.c 2013-09-20 15:34:36 +0000 +++ src/intervals.c 2013-09-22 09:31:55 +0000 @@ -1405,7 +1405,7 @@ start, length); else { - lint_assume (- TYPE_MAXIMUM (ptrdiff_t) <= length); + assume (- TYPE_MAXIMUM (ptrdiff_t) <= length); adjust_intervals_for_deletion (buffer, start, -length); } } === modified file 'src/lisp.h' --- src/lisp.h 2013-09-20 15:34:36 +0000 +++ src/lisp.h 2013-09-22 09:31:55 +0000 @@ -131,6 +131,13 @@ ? (void) 0 \ : die (# cond, __FILE__, __LINE__)) #endif /* ENABLE_CHECKING */ + +/* When checking is enabled, identical to eassert. When checking is + * disabled, instruct the compiler (when the compiler has such + * capability) to assume that cond is true and optimize + * accordingly. */ +#define eassert_and_assume(cond) (eassert (cond), assume (cond)) + /* Use the configure flag --enable-check-lisp-object-type to make Lisp_Object use a struct type instead of the default int. The flag @@ -730,6 +737,7 @@ extern Lisp_Object Qarrayp, Qbufferp, Qbuffer_or_string_p, Qchar_table_p; extern Lisp_Object Qconsp, Qfloatp, Qintegerp, Qlambda, Qlistp, Qmarkerp, Qnil; extern Lisp_Object Qnumberp, Qstringp, Qsymbolp, Qvectorp; +extern Lisp_Object Qbool_vector_p; extern Lisp_Object Qvector_or_char_table_p, Qwholenump; extern Lisp_Object Qwindow; extern Lisp_Object Ffboundp (Lisp_Object); @@ -2359,6 +2367,11 @@ CHECK_TYPE (VECTORP (x), Qvectorp, x); } INLINE void +CHECK_BOOL_VECTOR (Lisp_Object x) +{ + CHECK_TYPE (BOOL_VECTOR_P (x), Qbool_vector_p, x); +} +INLINE void CHECK_VECTOR_OR_STRING (Lisp_Object x) { CHECK_TYPE (VECTORP (x) || STRINGP (x), Qarrayp, x); @@ -4347,6 +4360,43 @@ return 0; } +INLINE +uint16_t +swap16 (uint16_t val) +{ + return (val << 8) | (val & 0xFF); +} + +INLINE +uint32_t +swap32 (uint32_t val) +{ + uint32_t low = swap16 (val & 0xFFFF); + uint32_t high = swap16 (val >> 16); + return (low << 16) | high; +} + +#ifdef UINT64_MAX +INLINE +uint64_t +swap64 (uint64_t val) +{ + uint64_t low = swap32 (val & 0xFFFFFFFF); + uint64_t high = swap32 (val >> 32); + return (low << 32) | high; +} +#endif + +#if ((SIZE_MAX >> 31) >> 1) & 1 +# define BITS_PER_SIZE_T 64 +#else +# define BITS_PER_SIZE_T 32 +#endif + +/* Round x to the next multiple of y. Does not overflow. Evaluates + arguments repeatedly. */ +#define ROUNDUP(x,y) ((y)*((x)/(y) + ((x)%(y)!=0))) + INLINE_HEADER_END #endif /* EMACS_LISP_H */ === modified file 'src/macfont.m' --- src/macfont.m 2013-09-15 19:36:20 +0000 +++ src/macfont.m 2013-09-22 09:31:55 +0000 @@ -2817,7 +2817,7 @@ } len = i; - lint_assume (len <= TYPE_MAXIMUM (EMACS_INT) - 2); + assume (len <= TYPE_MAXIMUM (EMACS_INT) - 2); if (INT_MAX / 2 < len) memory_full (SIZE_MAX); === modified file 'src/ralloc.c' --- src/ralloc.c 2013-07-05 16:58:01 +0000 +++ src/ralloc.c 2013-09-22 09:31:55 +0000 @@ -85,7 +85,7 @@ /* Macros for rounding. Note that rounding to any value is possible by changing the definition of PAGE. */ #define PAGE (getpagesize ()) -#define ROUNDUP(size) (((size_t) (size) + page_size - 1) \ +#define PAGE_ROUNDUP(size) (((size_t) (size) + page_size - 1) \ & ~((size_t) (page_size - 1))) #define MEM_ALIGN sizeof (double) @@ -281,7 +281,7 @@ Get some extra, so we can come here less often. */ get = size + extra_bytes - already_available; - get = (char *) ROUNDUP ((char *) last_heap->end + get) + get = (char *) PAGE_ROUNDUP ((char *) last_heap->end + get) - (char *) last_heap->end; if (real_morecore (get) != last_heap->end) @@ -344,7 +344,7 @@ else { excess = ((char *) last_heap->end - - (char *) ROUNDUP ((char *) last_heap->end - excess)); + - (char *) PAGE_ROUNDUP ((char *) last_heap->end - excess)); /* If the system doesn't want that much memory back, leave the end of the last heap unchanged to reflect that. This can occur if break_value is still within the original @@ -768,9 +768,9 @@ not always find a space which is contiguous to the previous. */ void *new_bloc_start; heap_ptr h = first_heap; - size_t get = ROUNDUP (size); + size_t get = PAGE_ROUNDUP (size); - address = (void *) ROUNDUP (virtual_break_value); + address = (void *) PAGE_ROUNDUP (virtual_break_value); /* Search the list upward for a heap which is large enough. */ while ((char *) h->end < (char *) MEM_ROUNDUP ((char *) address + get)) @@ -778,7 +778,7 @@ h = h->next; if (h == NIL_HEAP) break; - address = (void *) ROUNDUP (h->start); + address = (void *) PAGE_ROUNDUP (h->start); } /* If not found, obtain more space. */ @@ -790,9 +790,9 @@ return 0; if (first_heap == last_heap) - address = (void *) ROUNDUP (virtual_break_value); + address = (void *) PAGE_ROUNDUP (virtual_break_value); else - address = (void *) ROUNDUP (last_heap->start); + address = (void *) PAGE_ROUNDUP (last_heap->start); h = last_heap; } @@ -1054,7 +1054,7 @@ for (h = first_heap; h; h = h->next) { assert (h->prev == ph); - assert ((void *) ROUNDUP (h->end) == h->end); + assert ((void *) PAGE_ROUNDUP (h->end) == h->end); #if 0 /* ??? The code in ralloc.c does not really try to ensure the heap start has any sort of alignment. Perhaps it should. */ @@ -1190,7 +1190,7 @@ if (break_value == NULL) emacs_abort (); - extra_bytes = ROUNDUP (50000); + extra_bytes = PAGE_ROUNDUP (50000); #endif #ifdef DOUG_LEA_MALLOC @@ -1212,7 +1212,7 @@ #endif #ifndef SYSTEM_MALLOC - first_heap->end = (void *) ROUNDUP (first_heap->start); + first_heap->end = (void *) PAGE_ROUNDUP (first_heap->start); /* The extra call to real_morecore guarantees that the end of the address space is a multiple of page_size, even if page_size is === modified file 'src/xsettings.c' --- src/xsettings.c 2013-09-17 07:06:42 +0000 +++ src/xsettings.c 2013-09-22 09:31:55 +0000 @@ -336,9 +336,6 @@ XUngrabServer (dpy); } -#define SWAP32(nr) (((nr) << 24) | (((nr) << 8) & 0xff0000) \ - | (((nr) >> 8) & 0xff00) | ((nr) >> 24)) -#define SWAP16(nr) (((nr) << 8) | ((nr) >> 8)) #define PAD(nr) (((nr) + 3) & ~3) /* Parse xsettings and extract those that deal with Xft. @@ -408,7 +405,7 @@ if (bytes < 12) return BadLength; memcpy (&n_settings, prop+8, 4); - if (my_bo != that_bo) n_settings = SWAP32 (n_settings); + if (my_bo != that_bo) n_settings = swap32 (n_settings); bytes_parsed = 12; memset (settings, 0, sizeof (*settings)); @@ -430,7 +427,7 @@ memcpy (&nlen, prop+bytes_parsed, 2); bytes_parsed += 2; - if (my_bo != that_bo) nlen = SWAP16 (nlen); + if (my_bo != that_bo) nlen = swap16 (nlen); if (bytes_parsed+nlen > bytes) return BadLength; to_cpy = nlen > 127 ? 127 : nlen; memcpy (name, prop+bytes_parsed, to_cpy); @@ -457,7 +454,7 @@ if (want_this) { memcpy (&ival, prop+bytes_parsed, 4); - if (my_bo != that_bo) ival = SWAP32 (ival); + if (my_bo != that_bo) ival = swap32 (ival); } bytes_parsed += 4; break; @@ -466,7 +463,7 @@ if (bytes_parsed+4 > bytes) return BadLength; memcpy (&vlen, prop+bytes_parsed, 4); bytes_parsed += 4; - if (my_bo != that_bo) vlen = SWAP32 (vlen); + if (my_bo != that_bo) vlen = swap32 (vlen); if (want_this) { to_cpy = vlen > 127 ? 127 : vlen; === modified file 'test/ChangeLog' --- test/ChangeLog 2013-09-20 19:59:42 +0000 +++ test/ChangeLog 2013-09-22 09:31:55 +0000 @@ -1,3 +1,21 @@ +2013-09-22 Daniel Colascione + + * automated/data-test.el: + (bool-vector-count-matches-all-0-nil) + (bool-vector-count-matches-all-0-t) + (bool-vector-count-matches-1-il,bool-vector-count-matches-1-t) + (bool-vector-count-matches-at,bool-vector-intersection-op) + (bool-vector-union-op,bool-vector-xor-op) + (bool-vector-set-difference-op) + (bool-vector-change-detection,bool-vector-not): New tests. + (mock-bool-vector-count-matches-at) + (test-bool-vector-bv-from-hex-string) + (test-bool-vector-to-hex-string) + (test-bool-vector-count-matches-at-tc) + (test-bool-vector-apply-mock-op) + (test-bool-vector-binop): New helper functions. + (bool-vector-test-vectors): New testcase data. + 2013-09-20 Ryan (tiny change) * automated/advice-tests.el (advice-test-called-interactively-p-around) === modified file 'test/automated/data-tests.el' --- test/automated/data-tests.el 2013-09-11 05:03:23 +0000 +++ test/automated/data-tests.el 2013-09-22 09:31:55 +0000 @@ -21,6 +21,9 @@ ;;; Code: +(require 'cl-lib) +(eval-when-compile (require 'cl)) + (ert-deftest data-tests-= () (should-error (=)) (should (= 1)) @@ -71,5 +74,186 @@ ;; Short circuits before getting to bad arg (should-not (>= 8 9 'foo))) -;;; data-tests.el ends here - +;; Bool vector tests. Compactly represent bool vectors as hex +;; strings. + +(ert-deftest bool-vector-count-matches-all-0-nil () + (cl-loop for sz in '(0 45 1 64 9 344) + do (let* ((bv (make-bool-vector sz nil))) + (should + (eql + (bool-vector-count-matches bv nil) + sz))))) + +(ert-deftest bool-vector-count-matches-all-0-t () + (cl-loop for sz in '(0 45 1 64 9 344) + do (let* ((bv (make-bool-vector sz nil))) + (should + (eql + (bool-vector-count-matches bv t) + 0))))) + +(ert-deftest bool-vector-count-matches-1-nil () + (let* ((bv (make-bool-vector 45 nil))) + (aset bv 40 t) + (aset bv 0 t) + (should + (eql + (bool-vector-count-matches bv t) + 2))) + ) + +(ert-deftest bool-vector-count-matches-1-t () + (let* ((bv (make-bool-vector 45 nil))) + (aset bv 40 t) + (aset bv 0 t) + (should + (eql + (bool-vector-count-matches bv nil) + 43)))) + +(defun mock-bool-vector-count-matches-at (a b i) + (loop for i from i below (length a) + while (eq (aref a i) b) + sum 1)) + +(defun test-bool-vector-bv-from-hex-string (desc) + (let (bv nchars nibbles) + (dolist (c (string-to-list desc)) + (push (string-to-number + (char-to-string c) + 16) + nibbles)) + (setf bv (make-bool-vector (* 4 (length nibbles)) nil)) + (let ((i 0)) + (dolist (n (nreverse nibbles)) + (dotimes (_ 4) + (aset bv i (> (logand 1 n) 0)) + (incf i) + (setf n (lsh n -1))))) + bv)) + +(defun test-bool-vector-to-hex-string (bv) + (let (nibbles (v (cl-coerce bv 'list))) + (while v + (push (logior + (lsh (if (nth 0 v) 1 0) 0) + (lsh (if (nth 1 v) 1 0) 1) + (lsh (if (nth 2 v) 1 0) 2) + (lsh (if (nth 3 v) 1 0) 3)) + nibbles) + (setf v (nthcdr 4 v))) + (mapconcat (lambda (n) (format "%X" n)) + (nreverse nibbles) + ""))) + +(defun test-bool-vector-count-matches-at-tc (desc) + "Run a test case for bool-vector-count-matches-at. +DESC is a string describing the test. It is a sequence of +hexadecimal digits describing the bool vector. We exhaustively +test all counts at all possible positions in the vector by +comparing the subr with a much slower lisp implementation." + (let ((bv (test-bool-vector-bv-from-hex-string desc))) + (loop + for lf in '(nil t) + do (loop + for pos from 0 upto (length bv) + for cnt = (mock-bool-vector-count-matches-at bv lf pos) + for rcnt = (bool-vector-count-matches-at bv lf pos) + unless (eql cnt rcnt) + do (error "FAILED testcase %S %3S %3S %3S" + pos lf cnt rcnt))))) + +(defconst bool-vector-test-vectors +'("" + "0" + "F" + "0F" + "F0" + "00000000000000000000000000000FFFFF0000000" + "44a50234053fba3340000023444a50234053fba33400000234" + "12341234123456123412346001234123412345612341234600" + "44a50234053fba33400000234" + "1234123412345612341234600" + "44a50234053fba33400000234" + "1234123412345612341234600" + "44a502340" + "123412341" + "0000000000000000000000000" + "FFFFFFFFFFFFFFFF1")) + +(ert-deftest bool-vector-count-matches-at () + (mapc #'test-bool-vector-count-matches-at-tc + bool-vector-test-vectors)) + +(defun test-bool-vector-apply-mock-op (mock a b c) + "Compute (slowly) the correct result of a bool-vector set operation." + (let (changed nv) + (assert (eql (length b) (length c))) + (if a (setf nv a) + (setf a (make-bool-vector (length b) nil)) + (setf changed t)) + + (loop for i below (length b) + for mockr = (funcall mock + (if (aref b i) 1 0) + (if (aref c i) 1 0)) + for r = (not (= 0 mockr)) + do (progn + (unless (eq (aref a i) r) + (setf changed t)) + (setf (aref a i) r))) + (if changed a))) + +(defun test-bool-vector-binop (mock real) + "Test a binary set operation." + (loop for s1 in bool-vector-test-vectors + for bv1 = (test-bool-vector-bv-from-hex-string s1) + for vecs2 = (cl-remove-if-not + (lambda (x) (eql (length x) (length s1))) + bool-vector-test-vectors) + do (loop for s2 in vecs2 + for bv2 = (test-bool-vector-bv-from-hex-string s2) + for mock-result = (test-bool-vector-apply-mock-op + mock nil bv1 bv2) + for real-result = (funcall real bv1 bv2) + do (progn + (should (equal mock-result real-result)))))) + +(ert-deftest bool-vector-intersection-op () + (test-bool-vector-binop + #'logand + #'bool-vector-intersection)) + +(ert-deftest bool-vector-union-op () + (test-bool-vector-binop + #'logior + #'bool-vector-union)) + +(ert-deftest bool-vector-xor-op () + (test-bool-vector-binop + #'logxor + #'bool-vector-exclusive-or)) + +(ert-deftest bool-vector-set-difference-op () + (test-bool-vector-binop + (lambda (a b) (logand a (lognot b))) + #'bool-vector-set-difference)) + +(ert-deftest bool-vector-change-detection () + (let* ((vc1 (test-bool-vector-bv-from-hex-string "abcdef")) + (vc2 (test-bool-vector-bv-from-hex-string "012345")) + (vc3 (make-bool-vector (length vc1) nil)) + (c1 (bool-vector-union vc1 vc2 vc3)) + (c2 (bool-vector-union vc1 vc2 vc3))) + (should (equal c1 (test-bool-vector-apply-mock-op + #'logior + nil + vc1 vc2))) + (should (not c2)))) + +(ert-deftest bool-vector-not () + (let* ((v1 (test-bool-vector-bv-from-hex-string "FFFF3")) + (v2 (test-bool-vector-bv-from-hex-string "0000C")) + (v3 (bool-vector-not v1))) + (should (equal v2 v3)))) ------------------------------------------------------------ revno: 114425 fixes bug: http://debbugs.gnu.org/15365 committer: Eli Zaretskii branch nick: trunk timestamp: Sun 2013-09-22 10:13:14 +0300 message: Fix bug #15365 with aborts in try_window_id. src/xdisp.c (try_window_id): Don't abort if cursor row could not be found (which can legitimately happen when the glyph row at the window start is disabled in the current_matrix. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-22 06:22:05 +0000 +++ src/ChangeLog 2013-09-22 07:13:14 +0000 @@ -1,3 +1,9 @@ +2013-09-22 Eli Zaretskii + + * xdisp.c (try_window_id): Don't abort if cursor row could not be + found (which can legitimately happen when the glyph row at the + window start is disabled in the current_matrix. (Bug#15365) + 2013-09-22 Paul Eggert Fix syntax.h bug introduced by recent INLINE change. === modified file 'src/xdisp.c' --- src/xdisp.c 2013-09-18 06:48:11 +0000 +++ src/xdisp.c 2013-09-22 07:13:14 +0000 @@ -17291,8 +17291,6 @@ row = row_containing_pos (w, PT, r0, NULL, 0); if (row) set_cursor_from_row (w, row, current_matrix, 0, 0, 0, 0); - else - emacs_abort (); return 1; } } @@ -17333,8 +17331,6 @@ row = row_containing_pos (w, PT, r0, NULL, 0); if (row) set_cursor_from_row (w, row, current_matrix, 0, 0, 0, 0); - else - emacs_abort (); return 2; } } ------------------------------------------------------------ revno: 114424 committer: Paul Eggert branch nick: trunk timestamp: Sat 2013-09-21 23:22:05 -0700 message: Fix syntax.h bug introduced by recent INLINE change. syntax.h defined an extern inline function SYNTAX_ENTRY that was conditionally compiled one way in some modules, and a different way in others. This doesn't work with extern inline functions, which must have the same definition in all modules, because the defining code might be shared across modules, depending on the implementation. Symptoms reported by Martin Rudalics in: http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00414.html * regex.c, syntax.c (SYNTAX_ENTRY_VIA_PROPERTY): Remove. (SYNTAX, SYNTAX_ENTRY, SYNTAX_WITH_FLAGS): New macros, overriding the corresponding functions in syntax.h. * syntax.h (syntax_property_entry, syntax_property_with_flags) (syntax_property): New inline functions. (SYNTAX_ENTRY, SYNTAX_WITH_FLAGS, SYNTAX): Rewrite in terms of these new functions. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-21 11:48:19 +0000 +++ src/ChangeLog 2013-09-22 06:22:05 +0000 @@ -1,3 +1,21 @@ +2013-09-22 Paul Eggert + + Fix syntax.h bug introduced by recent INLINE change. + syntax.h defined an extern inline function SYNTAX_ENTRY that was + conditionally compiled one way in some modules, and a different + way in others. This doesn't work with extern inline functions, + which must have the same definition in all modules, because the + defining code might be shared across modules, depending on the + implementation. Symptoms reported by Martin Rudalics in: + http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00414.html + * regex.c, syntax.c (SYNTAX_ENTRY_VIA_PROPERTY): Remove. + (SYNTAX, SYNTAX_ENTRY, SYNTAX_WITH_FLAGS): New macros, + overriding the corresponding functions in syntax.h. + * syntax.h (syntax_property_entry, syntax_property_with_flags) + (syntax_property): New inline functions. + (SYNTAX_ENTRY, SYNTAX_WITH_FLAGS, SYNTAX): + Rewrite in terms of these new functions. + 2013-09-21 Eli Zaretskii * dired.c (directory_files_internal): Use multibyte_chars_in_text, === modified file 'src/regex.c' --- src/regex.c 2013-08-28 13:50:55 +0000 +++ src/regex.c 2013-09-22 06:22:05 +0000 @@ -131,12 +131,12 @@ # include "character.h" # include "buffer.h" -/* Make syntax table lookup grant data in gl_state. */ -# define SYNTAX_ENTRY_VIA_PROPERTY - # include "syntax.h" # include "category.h" +/* Make syntax table lookup grant data in gl_state. */ +# define SYNTAX(c) syntax_property (c, 1) + # ifdef malloc # undef malloc # endif === modified file 'src/syntax.c' --- src/syntax.c 2013-09-20 15:34:36 +0000 +++ src/syntax.c 2013-09-22 06:22:05 +0000 @@ -29,13 +29,15 @@ #include "keymap.h" #include "regex.h" -/* Make syntax table lookup grant data in gl_state. */ -#define SYNTAX_ENTRY_VIA_PROPERTY - #include "syntax.h" #include "intervals.h" #include "category.h" +/* Make syntax table lookup grant data in gl_state. */ +#define SYNTAX(c) syntax_property (c, 1) +#define SYNTAX_ENTRY(c) syntax_property_entry (c, 1) +#define SYNTAX_WITH_FLAGS(c) syntax_property_with_flags (c, 1) + /* Eight single-bit flags have the following meanings: 1. This character is the first of a two-character comment-start sequence. 2. This character is the second of a two-character comment-start sequence. === modified file 'src/syntax.h' --- src/syntax.h 2013-09-20 15:34:36 +0000 +++ src/syntax.h 2013-09-22 06:22:05 +0000 @@ -83,35 +83,49 @@ extern struct gl_state_s gl_state; /* Fetch the information from the entry for character C - in syntax table TABLE, or from globally kept data (gl_state). + in the current buffer's syntax table, + or (if VIA_PROPERTY) from globally kept data (gl_state). Does inheritance. */ INLINE Lisp_Object +syntax_property_entry (int c, bool via_property) +{ + if (via_property) + return (gl_state.use_global + ? gl_state.global_code + : CHAR_TABLE_REF (gl_state.current_syntax_table, c)); + return CHAR_TABLE_REF (BVAR (current_buffer, syntax_table), c); +} +INLINE Lisp_Object SYNTAX_ENTRY (int c) { -#ifdef SYNTAX_ENTRY_VIA_PROPERTY - return (gl_state.use_global - ? gl_state.global_code - : CHAR_TABLE_REF (gl_state.current_syntax_table, c)); -#else - return CHAR_TABLE_REF (BVAR (current_buffer, syntax_table), c); -#endif + return syntax_property_entry (c, 0); } /* Extract the information from the entry for character C in the current syntax table. */ INLINE int +syntax_property_with_flags (int c, bool via_property) +{ + Lisp_Object ent = syntax_property_entry (c, via_property); + return CONSP (ent) ? XINT (XCAR (ent)) : Swhitespace; +} +INLINE int SYNTAX_WITH_FLAGS (int c) { - Lisp_Object ent = SYNTAX_ENTRY (c); - return CONSP (ent) ? XINT (XCAR (ent)) : Swhitespace; + return syntax_property_with_flags (c, 0); } INLINE enum syntaxcode +syntax_property (int c, bool via_property) +{ + return syntax_property_with_flags (c, via_property) & 0xff; +} +INLINE enum syntaxcode SYNTAX (int c) { - return SYNTAX_WITH_FLAGS (c) & 0xff; + return syntax_property (c, 0); } ------------------------------------------------------------ revno: 114423 committer: Xue Fuqiao branch nick: trunk timestamp: Sun 2013-09-22 10:13:44 +0800 message: @refill is no longer needed. * doc/emacs/fixit.texi (Transpose): (Fixing Case): Remove @refill. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2013-09-21 08:31:45 +0000 +++ doc/emacs/ChangeLog 2013-09-22 02:13:44 +0000 @@ -1,3 +1,8 @@ +2013-09-22 Xue Fuqiao + + * fixit.texi (Transpose): + (Fixing Case): Remove @refill. + 2013-09-21 Xue Fuqiao * maintaining.texi (VC Directory Commands): Add keybinding for === modified file 'doc/emacs/fixit.texi' --- doc/emacs/fixit.texi 2013-01-01 09:11:05 +0000 +++ doc/emacs/fixit.texi 2013-09-22 02:13:44 +0000 @@ -190,7 +190,7 @@ @samp{f@point{}oobar} into @samp{oobf@point{}ar}. This is equivalent to repeating @kbd{C-t} three times. @kbd{C-u - 4 M-t} moves the word before point backward across four words. @kbd{C-u - C-M-t} would cancel -the effect of plain @kbd{C-M-t}.@refill +the effect of plain @kbd{C-M-t}. A numeric argument of zero is assigned a special meaning (because otherwise a command with a repeat count of zero would do nothing): to @@ -216,7 +216,7 @@ the word case-conversion commands @kbd{M-l}, @kbd{M-u} and @kbd{M-c} have a special feature when used with a negative argument: they do not move the cursor. As soon as you see you have mistyped the last word, you can simply -case-convert it and go on typing. @xref{Case}.@refill +case-convert it and go on typing. @xref{Case}. @node Spelling @section Checking and Correcting Spelling ------------------------------------------------------------ revno: 114422 committer: Alan Mackenzie branch nick: trunk timestamp: Sat 2013-09-21 17:21:29 +0000 message: C++: fontify identifier in declaration following "public:" correctly. * progmodes/cc-langs.el (c-decl-start-colon-kwd-re): New lang var to match "public", etc. (c-decl-prefix-re): Add ":" into the C++ value. * progmodes/cc-engine.el (c-find-decl-prefix-search): Refactor a bit. Add a check for a ":" preceded by "public", etc. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-21 08:49:31 +0000 +++ lisp/ChangeLog 2013-09-21 17:21:29 +0000 @@ -1,3 +1,12 @@ +2013-09-21 Alan Mackenzie + + C++: fontify identifier in declaration following "public:" correctly. + * progmodes/cc-langs.el (c-decl-start-colon-kwd-re): New lang var + to match "public", etc. + (c-decl-prefix-re): Add ":" into the C++ value. + * progmodes/cc-engine.el (c-find-decl-prefix-search): Refactor a + bit. Add a check for a ":" preceded by "public", etc. + 2013-09-21 Eli Zaretskii * files.el (auto-mode-alist): Support OBJFILE-gdb.gdb script files === modified file 'lisp/progmodes/cc-engine.el' --- lisp/progmodes/cc-engine.el 2013-09-18 20:47:37 +0000 +++ lisp/progmodes/cc-engine.el 2013-09-21 17:21:29 +0000 @@ -4729,6 +4729,11 @@ ;; inside `c-find-decl-spots'. The point is left at `cfd-match-pos' ;; if there is a match, otherwise at `cfd-limit'. ;; + ;; The macro moves point forward to the next putative start of a declaration + ;; or cfd-limit. This decl start is the next token after a "declaration + ;; prefix". The declaration prefix is the earlier of `cfd-prop-match' and + ;; `cfd-re-match'. `cfd-match-pos' is set to the decl prefix. + ;; ;; This macro might do hidden buffer changes. '(progn @@ -4750,34 +4755,47 @@ (if (> cfd-re-match-end (point)) (goto-char cfd-re-match-end)) - (while (if (setq cfd-re-match-end - (re-search-forward c-decl-prefix-or-start-re - cfd-limit 'move)) - - ;; Match. Check if it's inside a comment or string literal. - (c-got-face-at - (if (setq cfd-re-match (match-end 1)) - ;; Matched the end of a token preceding a decl spot. - (progn - (goto-char cfd-re-match) - (1- cfd-re-match)) - ;; Matched a token that start a decl spot. - (goto-char (match-beginning 0)) - (point)) - c-literal-faces) - - ;; No match. Finish up and exit the loop. - (setq cfd-re-match cfd-limit) - nil) - - ;; Skip out of comments and string literals. - (while (progn - (goto-char (next-single-property-change - (point) 'face nil cfd-limit)) - (and (< (point) cfd-limit) - (c-got-face-at (point) c-literal-faces))))) - - ;; If we matched at the decl start, we have to back up over the + ;; Each time round, the next `while' moves forward over a pseudo match + ;; of `c-decl-prefix-or-start-re' which is either inside a literal, or + ;; is a ":" not preceded by "public", etc.. `cfd-re-match' and + ;; `cfd-re-match-end' get set. + (while + (progn + (setq cfd-re-match-end (re-search-forward c-decl-prefix-or-start-re + cfd-limit 'move)) + (cond + ((null cfd-re-match-end) + ;; No match. Finish up and exit the loop. + (setq cfd-re-match cfd-limit) + nil) + ((c-got-face-at + (if (setq cfd-re-match (match-end 1)) + ;; Matched the end of a token preceding a decl spot. + (progn + (goto-char cfd-re-match) + (1- cfd-re-match)) + ;; Matched a token that start a decl spot. + (goto-char (match-beginning 0)) + (point)) + c-literal-faces) + ;; Pseudo match inside a comment or string literal. Skip out + ;; of comments and string literals. + (while (progn + (goto-char (next-single-property-change + (point) 'face nil cfd-limit)) + (and (< (point) cfd-limit) + (c-got-face-at (point) c-literal-faces)))) + t) ; Continue the loop over pseudo matches. + ((and (match-string 1) + (string= (match-string 1) ":") + (save-excursion + (or (/= (c-backward-token-2 2) 0) ; no search limit. :-( + (not (looking-at c-decl-start-colon-kwd-re))))) + ;; Found a ":" which isn't part of "public:", etc. + t) + (t nil)))) ;; Found a real match. Exit the pseudo-match loop. + + ;; If our match was at the decl start, we have to back up over the ;; preceding syntactic ws to set `cfd-match-pos' and to catch ;; any decl spots in the syntactic ws. (unless cfd-re-match === modified file 'lisp/progmodes/cc-langs.el' --- lisp/progmodes/cc-langs.el 2013-09-07 14:33:50 +0000 +++ lisp/progmodes/cc-langs.el 2013-09-21 17:21:29 +0000 @@ -2587,6 +2587,15 @@ ;;; Additional constants for parser-level constructs. +(c-lang-defconst c-decl-start-colon-kwd-re + "Regexp matching a keyword that is followed by a colon, where + the whole construct can precede a declaration. + E.g. \"public:\" in C++." + t "\\<\\>" + c++ (c-make-keywords-re t (c-lang-const c-protection-kwds))) +(c-lang-defvar c-decl-start-colon-kwd-re + (c-lang-const c-decl-start-colon-kwd-re)) + (c-lang-defconst c-decl-prefix-re "Regexp matching something that might precede a declaration, cast or label, such as the last token of a preceding statement or declaration. @@ -2626,8 +2635,11 @@ java "\\([\{\}\(;,<]+\\)" ;; Match "<" in C++ to get the first argument in a template arglist. ;; In that case there's an additional check in `c-find-decl-spots' - ;; that it got open paren syntax. - c++ "\\([\{\}\(\);,<]+\\)" + ;; that it got open paren syntax. Match ":" to aid in picking up + ;; "public:", etc. This involves additional checks in + ;; `c-find-decl-prefix-search' to prevent a match of identifiers + ;; or labels. + c++ "\\([\{\}\(\);:,<]+\\)" ;; Additionally match the protection directives in Objective-C. ;; Note that this doesn't cope with the longer directives, which we ;; would have to match from start to end since they don't end with ------------------------------------------------------------ revno: 114421 fixes bug: http://debbugs.gnu.org/15426 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2013-09-21 14:48:19 +0300 message: Fix bug #15426 with directory-files invoked from a unibyte buffer. src/dired.c (directory_files_internal): Use multibyte_chars_in_text, not chars_in_text, whose result depends on the multibyteness of the current buffer. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-20 20:23:20 +0000 +++ src/ChangeLog 2013-09-21 11:48:19 +0000 @@ -1,3 +1,9 @@ +2013-09-21 Eli Zaretskii + + * dired.c (directory_files_internal): Use multibyte_chars_in_text, + not chars_in_text, whose result depends on the multibyteness of + the current buffer. (Bug#15426) + 2013-09-20 Paul Eggert Port recent change to hosts where pointers aren't 'long'. === modified file 'src/dired.c' --- src/dired.c 2013-07-16 21:35:45 +0000 +++ src/dired.c 2013-09-21 11:48:19 +0000 @@ -278,7 +278,7 @@ memcpy (SDATA (fullname) + directory_nbytes + needsep, SDATA (name), len); - nchars = chars_in_text (SDATA (fullname), nbytes); + nchars = multibyte_chars_in_text (SDATA (fullname), nbytes); /* Some bug somewhere. */ if (nchars > nbytes) ------------------------------------------------------------ revno: 114420 committer: Xue Fuqiao branch nick: trunk timestamp: Sat 2013-09-21 18:58:39 +0800 message: Add information about carriage-return in lispref. * doc/lispref/nonascii.texi (Coding System Basics): Add information about carriage-return. diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2013-09-14 09:24:34 +0000 +++ doc/lispref/ChangeLog 2013-09-21 10:58:39 +0000 @@ -1,3 +1,7 @@ +2013-09-21 Xue Fuqiao + + * nonascii.texi (Coding System Basics): Add information about carriage-return. + 2013-09-14 Eli Zaretskii * display.texi (Display Margins): State the units of measuring === modified file 'doc/lispref/nonascii.texi' --- doc/lispref/nonascii.texi 2013-09-12 14:21:21 +0000 +++ doc/lispref/nonascii.texi 2013-09-21 10:58:39 +0000 @@ -962,7 +962,8 @@ character (also called newline). The DOS convention, used on MS-Windows and MS-DOS systems, is to use a carriage-return and a linefeed at the end of a line. The Mac convention is to use just -carriage-return. +carriage-return. (This was the convention used on the Macintosh +system prior to OS X.) @cindex base coding system @cindex variant coding system ------------------------------------------------------------ revno: 114419 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2013-09-21 11:49:31 +0300 message: Recognize OBJFILE-gdb.gdb GDB script files. lisp/files.el (auto-mode-alist): Support OBJFILE-gdb.gdb script files recognized by GDB 7.5 and later. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-21 08:16:13 +0000 +++ lisp/ChangeLog 2013-09-21 08:49:31 +0000 @@ -1,3 +1,8 @@ +2013-09-21 Eli Zaretskii + + * files.el (auto-mode-alist): Support OBJFILE-gdb.gdb script files + recognized by GDB 7.5 and later. + 2013-09-21 Xue Fuqiao * vc/vc-dir.el (vc-dir-mode-map): Add keybinding for vc-log-incoming. === modified file 'lisp/files.el' --- lisp/files.el 2013-09-12 05:32:57 +0000 +++ lisp/files.el 2013-09-21 08:49:31 +0000 @@ -2269,6 +2269,10 @@ ;; .PROCESSORNAME-gdbinit so that the host and target gdbinit files ;; don't interfere with each other. ("/\\.[a-z0-9-]*gdbinit" . gdb-script-mode) + ;; GDB 7.5 introduced OBJFILE-gdb.gdb script files; e.g. a file + ;; named 'emacs-gdb.gdb', if it exists, will be automatically + ;; loaded when GDB reads an objfile called 'emacs'. + ("-gdb\\.gdb" . gdb-script-mode) ("[cC]hange\\.?[lL]og?\\'" . change-log-mode) ("[cC]hange[lL]og[-.][0-9]+\\'" . change-log-mode) ("\\$CHANGE_LOG\\$\\.TXT" . change-log-mode) ------------------------------------------------------------ revno: 114418 committer: Xue Fuqiao branch nick: trunk timestamp: Sat 2013-09-21 16:31:45 +0800 message: * doc/emacs/maintaining.texi (Log Buffer): Use @emph instead of @strong. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2013-09-21 08:16:13 +0000 +++ doc/emacs/ChangeLog 2013-09-21 08:31:45 +0000 @@ -2,6 +2,7 @@ * maintaining.texi (VC Directory Commands): Add keybinding for vc-log-incoming in vc-dir. + (Log Buffer): Use @emph instead of @strong. 2013-09-12 Xue Fuqiao === modified file 'doc/emacs/maintaining.texi' --- doc/emacs/maintaining.texi 2013-09-21 08:22:57 +0000 +++ doc/emacs/maintaining.texi 2013-09-21 08:31:45 +0000 @@ -653,7 +653,7 @@ Edit buffer. @end ifnottex - To abort a commit, just @strong{don't} type @kbd{C-c C-c} in that + To abort a commit, just @emph{don't} type @kbd{C-c C-c} in that buffer. You can switch buffers and do other editing. As long as you don't try to make another commit, the entry you were editing remains in the @file{*vc-log*} buffer, and you can go back to that buffer at ------------------------------------------------------------ revno: 114417 committer: Xue Fuqiao branch nick: trunk timestamp: Sat 2013-09-21 16:22:57 +0800 message: Comments. diff: === modified file 'doc/emacs/maintaining.texi' --- doc/emacs/maintaining.texi 2013-09-21 08:16:13 +0000 +++ doc/emacs/maintaining.texi 2013-09-21 08:22:57 +0000 @@ -599,6 +599,7 @@ @cindex Log Edit mode @cindex mode, Log Edit @vindex vc-log-mode-hook +@c FIXME: Mention log-edit-mode-hook here? --xfq The major mode for the @file{*vc-log*} buffer is Log Edit mode, a variant of Text mode (@pxref{Text Mode}). On entering Log Edit mode, Emacs runs the hooks @code{text-mode-hook} and @code{vc-log-mode-hook} ------------------------------------------------------------ revno: 114416 committer: Xue Fuqiao branch nick: trunk timestamp: Sat 2013-09-21 16:16:13 +0800 message: Add keybinding for vc-log-incoming in vc-dir. * doc/emacs/maintaining.texi (VC Directory Commands): Add keybinding for vc-log-incoming in vc-dir. * lisp/vc/vc-dir.el (vc-dir-mode-map): Add keybinding for vc-log-incoming. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2013-09-12 12:04:18 +0000 +++ doc/emacs/ChangeLog 2013-09-21 08:16:13 +0000 @@ -1,3 +1,8 @@ +2013-09-21 Xue Fuqiao + + * maintaining.texi (VC Directory Commands): Add keybinding for + vc-log-incoming in vc-dir. + 2013-09-12 Xue Fuqiao * text.texi (Enriched Justification): Explain values of default-justification. === modified file 'doc/emacs/maintaining.texi' --- doc/emacs/maintaining.texi 2013-09-04 00:31:13 +0000 +++ doc/emacs/maintaining.texi 2013-09-21 08:16:13 +0000 @@ -1242,7 +1242,7 @@ The VC Directory buffer also defines some single-key shortcuts for VC commands with the @kbd{C-x v} prefix: @kbd{=}, @kbd{+}, @kbd{l}, -@kbd{i}, @kbd{D}, @kbd{L}, @kbd{G} and @kbd{v}. +@kbd{i}, @kbd{D}, @kbd{L}, @kbd{G}, @kbd{I} and @kbd{v}. For example, you can commit a set of edited files by opening a VC Directory buffer, where the files are listed with the @samp{edited} === modified file 'etc/NEWS' --- etc/NEWS 2013-09-20 05:39:53 +0000 +++ etc/NEWS 2013-09-21 08:16:13 +0000 @@ -275,6 +275,9 @@ *** In VC directory mode, `L' lists the change log for the current VC controlled tree in a window. +*** In VC directory mode, `I' shows a log of changes that will be +received with a pull operation. + *** `C-x v G' (globally) and `G' (in VC directory mode) ignores a file under current version control system. When called with a prefix argument, you can remove a file from the ignored file list. === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-20 19:59:42 +0000 +++ lisp/ChangeLog 2013-09-21 08:16:13 +0000 @@ -1,3 +1,7 @@ +2013-09-21 Xue Fuqiao + + * vc/vc-dir.el (vc-dir-mode-map): Add keybinding for vc-log-incoming. + 2013-09-20 Stefan Monnier * subr.el (internal--call-interactively): New const. === modified file 'lisp/vc/vc-dir.el' --- lisp/vc/vc-dir.el 2013-08-04 02:59:08 +0000 +++ lisp/vc/vc-dir.el 2013-09-21 08:16:13 +0000 @@ -245,6 +245,7 @@ (define-key map "+" 'vc-update) ;; C-x v + (define-key map "l" 'vc-print-log) ;; C-x v l (define-key map "L" 'vc-print-root-log) ;; C-x v L + (define-key map "I" 'vc-log-incoming) ;; C-x v I ;; More confusing than helpful, probably ;;(define-key map "R" 'vc-revert) ;; u is taken by vc-dir-unmark. ;;(define-key map "A" 'vc-annotate) ;; g is taken by revert-buffer === modified file 'lisp/vc/vc.el' --- lisp/vc/vc.el 2013-09-12 06:10:12 +0000 +++ lisp/vc/vc.el 2013-09-21 08:16:13 +0000 @@ -2336,7 +2336,7 @@ ;;;###autoload (defun vc-log-incoming (&optional remote-location) "Show a log of changes that will be received with a pull operation from REMOTE-LOCATION. -When called interactively with a prefix argument, prompt for REMOTE-LOCATION.." +When called interactively with a prefix argument, prompt for REMOTE-LOCATION." (interactive (when current-prefix-arg (list (read-string "Remote location (empty for default): ")))) ------------------------------------------------------------ revno: 114415 committer: Glenn Morris branch nick: trunk timestamp: Fri 2013-09-20 17:52:07 -0700 message: * erc.el (erc-invite-only-mode, erc-toggle-channel-mode): Remove unused local variable `erc-force-send'. diff: === modified file 'lisp/erc/ChangeLog' --- lisp/erc/ChangeLog 2013-09-19 02:32:27 +0000 +++ lisp/erc/ChangeLog 2013-09-21 00:52:07 +0000 @@ -1,3 +1,8 @@ +2013-09-21 Glenn Morris + + * erc.el (erc-invite-only-mode, erc-toggle-channel-mode): + Remove unused local variable `erc-force-send'. + 2013-09-19 Glenn Morris * erc-button.el (erc-button-click-button, erc-button-press-button): === modified file 'lisp/erc/erc.el' --- lisp/erc/erc.el 2013-09-19 02:21:31 +0000 +++ lisp/erc/erc.el 2013-09-21 00:52:07 +0000 @@ -5541,8 +5541,7 @@ This command is sent even if excess flood is detected." (interactive "P") (erc-set-active-buffer (current-buffer)) - (let ((tgt (erc-default-target)) - (erc-force-send t)) ;FIXME: Not used anywhere! + (let ((tgt (erc-default-target))) (cond ((or (not tgt) (not (erc-channel-p tgt))) (erc-display-message nil 'error (current-buffer) 'no-target)) (arg (erc-load-irc-script-lines (list (concat "/mode " tgt " -i")) @@ -5579,8 +5578,7 @@ `erc-default-target'." (interactive "P") (erc-set-active-buffer (current-buffer)) - (let ((tgt (or channel (erc-default-target))) - (erc-force-send t)) ;FIXME: Not used anywhere! + (let ((tgt (or channel (erc-default-target)))) (cond ((or (null tgt) (null (erc-channel-p tgt))) (erc-display-message nil 'error 'active 'no-target)) ((member mode erc-channel-modes) ------------------------------------------------------------ revno: 114414 author: Paul Eggert committer: Paul Eggert branch nick: trunk timestamp: Fri 2013-09-20 13:23:20 -0700 message: Port recent change to hosts where pointers aren't 'long'. * xterm.c (x_send_scroll_bar_event, x_scroll_bar_to_input_event): Don't assume that pointers are the same width as 'long'. Add a compile-time check that a pointer fits into two X slots. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-20 15:34:36 +0000 +++ src/ChangeLog 2013-09-20 20:23:20 +0000 @@ -1,5 +1,10 @@ 2013-09-20 Paul Eggert + Port recent change to hosts where pointers aren't 'long'. + * xterm.c (x_send_scroll_bar_event, x_scroll_bar_to_input_event): + Don't assume that pointers are the same width as 'long'. + Add a compile-time check that a pointer fits into two X slots. + A simpler, centralized INLINE. * conf_post.h (INLINE): Define only if not already defined. This allows us to use a single INLINE, defined by one file === modified file 'src/xterm.c' --- src/xterm.c 2013-09-20 03:30:50 +0000 +++ src/xterm.c 2013-09-20 20:23:20 +0000 @@ -3967,7 +3967,7 @@ /* From-window. */ root, - + /* To-window. */ FRAME_X_WINDOW (dpyinfo->last_mouse_frame), @@ -4250,6 +4250,10 @@ XClientMessageEvent *ev = &event.xclient; struct window *w = XWINDOW (window); struct frame *f = XFRAME (w->frame); + intptr_t iw = (intptr_t) w; + enum { BITS_PER_INTPTR = CHAR_BIT * sizeof iw }; + verify (BITS_PER_INTPTR <= 64); + int sign_shift = BITS_PER_INTPTR - 32; block_input (); @@ -4260,27 +4264,13 @@ ev->window = FRAME_X_WINDOW (f); ev->format = 32; - /* 32-bit X client on a 64-bit X server can pass window pointer - as is. 64-bit client on a 32-bit X server is in trouble - because pointer does not fit and will be truncated while - passing through the server. So we should use two slots - and hope that X12 will resolve such an issues someday. */ - - if (BITS_PER_LONG > 32) - { - union { - int i[2]; - void *v; - } val; - val.v = w; - ev->data.l[0] = val.i[0]; - ev->data.l[1] = val.i[1]; - } - else - { - ev->data.l[0] = 0; - ev->data.l[1] = (long) w; - } + /* A 32-bit X client on a 64-bit X server can pass a window pointer + as-is. A 64-bit client on a 32-bit X server is in trouble + because a pointer does not fit and would be truncated while + passing through the server. So use two slots and hope that X12 + will resolve such issues someday. */ + ev->data.l[0] = iw >> 31 >> 1; + ev->data.l[1] = sign_shift <= 0 ? iw : iw << sign_shift >> sign_shift; ev->data.l[2] = part; ev->data.l[3] = portion; ev->data.l[4] = whole; @@ -4311,19 +4301,10 @@ struct window *w; /* See the comment in the function above. */ - - if (BITS_PER_LONG > 32) - { - union { - int i[2]; - void *v; - } val; - val.i[0] = ev->data.l[0]; - val.i[1] = ev->data.l[1]; - w = val.v; - } - else - w = (void *) ev->data.l[1]; + intptr_t iw0 = ev->data.l[0]; + intptr_t iw1 = ev->data.l[1]; + intptr_t iw = (iw0 << 31 << 1) + (iw1 & 0xffffffffu); + w = (struct window *) iw; XSETWINDOW (window, w); ------------------------------------------------------------ revno: 114413 fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3984 author: Ryan committer: Stefan Monnier branch nick: trunk timestamp: Fri 2013-09-20 15:59:42 -0400 message: * lisp/subr.el (internal--call-interactively): New const. (called-interactively-p): Use it. * test/automated/advice-tests.el (advice-test-called-interactively-p-around) (advice-test-called-interactively-p-filter-args) (advice-test-called-interactively-p-around): New tests. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-09-20 05:39:53 +0000 +++ lisp/ChangeLog 2013-09-20 19:59:42 +0000 @@ -1,3 +1,8 @@ +2013-09-20 Stefan Monnier + + * subr.el (internal--call-interactively): New const. + (called-interactively-p): Use it (bug#3984). + 2013-09-20 Xue Fuqiao * vc/pcvs.el (cvs-mode-ignore): === modified file 'lisp/subr.el' --- lisp/subr.el 2013-09-18 03:50:18 +0000 +++ lisp/subr.el 2013-09-20 19:59:42 +0000 @@ -4246,6 +4246,8 @@ if those frames don't seem special and otherwise, it should return the number of frames to skip (minus 1).") +(defconst internal--call-interactively (symbol-function 'call-interactively)) + (defun called-interactively-p (&optional kind) "Return t if the containing function was called by `call-interactively'. If KIND is `interactive', then only return t if the call was made @@ -4318,9 +4320,9 @@ (pcase (cons frame nextframe) ;; No subr calls `interactive-p', so we can rule that out. (`((,_ ,(pred (lambda (f) (subrp (indirect-function f)))) . ,_) . ,_) nil) - ;; Somehow, I sometimes got `command-execute' rather than - ;; `call-interactively' on my stacktrace !? - ;;(`(,_ . (t command-execute . ,_)) t) + ;; In case # without going through the + ;; `call-interactively' symbol (bug#3984). + (`(,_ . (t ,(pred (eq internal--call-interactively)) . ,_)) t) (`(,_ . (t call-interactively . ,_)) t))))) (defun interactive-p () === modified file 'test/ChangeLog' --- test/ChangeLog 2013-09-16 20:58:28 +0000 +++ test/ChangeLog 2013-09-20 19:59:42 +0000 @@ -1,3 +1,9 @@ +2013-09-20 Ryan (tiny change) + + * automated/advice-tests.el (advice-test-called-interactively-p-around) + (advice-test-called-interactively-p-filter-args) + (advice-test-called-interactively-p-around): New tests. + 2013-09-16 Glenn Morris * automated/eshell.el (eshell-match-result): === modified file 'test/automated/advice-tests.el' --- test/automated/advice-tests.el 2013-08-04 20:18:11 +0000 +++ test/automated/advice-tests.el 2013-09-20 19:59:42 +0000 @@ -130,6 +130,38 @@ (cons (cons 2 (called-interactively-p)) (apply f args)))) (should (equal (call-interactively 'sm-test7) '((2 . t) (1 . t) 11)))) +(ert-deftest advice-test-called-interactively-p-around () + "Check interaction between around advice and called-interactively-p. + +This tests the currently broken case of the innermost advice to a +function being an around advice." + :expected-result :failed + (defun sm-test7.2 () (interactive) (cons 1 (called-interactively-p))) + (advice-add 'sm-test7.2 :around + (lambda (f &rest args) + (list (cons 1 (called-interactively-p)) (apply f args)))) + (should (equal (sm-test7.2) '((1 . nil) (1 . nil)))) + (should (equal (call-interactively 'sm-test7.2) '((1 . t) (1 . t))))) + +(ert-deftest advice-test-called-interactively-p-filter-args () + "Check interaction between filter-args advice and called-interactively-p." + :expected-result :failed + (defun sm-test7.3 () (interactive) (cons 1 (called-interactively-p))) + (advice-add 'sm-test7.3 :filter-args #'list) + (should (equal (sm-test7.3) '(1 . nil))) + (should (equal (call-interactively 'sm-test7.3) '(1 . t)))) + +(ert-deftest advice-test-call-interactively () + "Check interaction between advice on call-interactively and called-interactively-p." + (defun sm-test7.4 () (interactive) (cons 1 (called-interactively-p))) + (let ((old (symbol-function 'call-interactively))) + (unwind-protect + (progn + (advice-add 'call-interactively :before #'ignore) + (should (equal (sm-test7.4) '(1 . nil))) + (should (equal (call-interactively 'sm-test7.4) '(1 . t)))) + (fset 'call-interactively old)))) + (ert-deftest advice-test-interactive () "Check handling of interactive spec." (defun sm-test8 (a) (interactive "p") a) ------------------------------------------------------------ revno: 114412 committer: Glenn Morris branch nick: trunk timestamp: Fri 2013-09-20 13:21:28 -0400 message: * lisp/cedet/semantic.el (semantic-new-buffer-fcn-was-run, semantic-active-p): Move from here... * lisp/cedet/semantic/fw.el: ...to here. diff: === modified file 'lisp/cedet/ChangeLog' --- lisp/cedet/ChangeLog 2013-09-18 05:00:26 +0000 +++ lisp/cedet/ChangeLog 2013-09-20 17:21:28 +0000 @@ -1,3 +1,9 @@ +2013-09-20 Glenn Morris + + * semantic.el (semantic-new-buffer-fcn-was-run, semantic-active-p): + Move from here... + * semantic/fw.el: ...to here. + 2013-09-18 Glenn Morris * semantic/find.el (semantic-brute-find-first-tag-by-name): === modified file 'lisp/cedet/semantic.el' --- lisp/cedet/semantic.el 2013-06-02 13:33:09 +0000 +++ lisp/cedet/semantic.el 2013-09-20 17:21:28 +0000 @@ -311,14 +311,6 @@ (semantic-varalias-obsolete 'semantic-init-db-hooks 'semantic-init-db-hook "23.2") -(defvar semantic-new-buffer-fcn-was-run nil - "Non-nil after `semantic-new-buffer-fcn' has been executed.") -(make-variable-buffer-local 'semantic-new-buffer-fcn-was-run) - -(defsubst semantic-active-p () - "Return non-nil if the current buffer was set up for parsing." - semantic-new-buffer-fcn-was-run) - (defsubst semantic-error-if-unparsed () "Raise an error if current buffer was not parsed by Semantic." (unless semantic-new-buffer-fcn-was-run === modified file 'lisp/cedet/semantic/fw.el' --- lisp/cedet/semantic/fw.el 2013-09-05 00:22:45 +0000 +++ lisp/cedet/semantic/fw.el 2013-09-20 17:21:28 +0000 @@ -321,6 +321,15 @@ ;;; Misc utilities ;; + +(defvar semantic-new-buffer-fcn-was-run nil + "Non-nil after `semantic-new-buffer-fcn' has been executed.") +(make-variable-buffer-local 'semantic-new-buffer-fcn-was-run) + +(defsubst semantic-active-p () + "Return non-nil if the current buffer was set up for parsing." + semantic-new-buffer-fcn-was-run) + (defsubst semantic-map-buffers (function) "Run FUNCTION for each Semantic enabled buffer found. FUNCTION does not have arguments. When FUNCTION is entered ------------------------------------------------------------ revno: 114411 committer: Glenn Morris branch nick: trunk timestamp: Fri 2013-09-20 09:33:46 -0700 message: * INSTALL: Update m17n details. diff: === modified file 'INSTALL' --- INSTALL 2013-09-20 09:19:56 +0000 +++ INSTALL 2013-09-20 16:33:46 +0000 @@ -117,19 +117,7 @@ for use at compilation time rather than run time, you will need that as well as the corresponding run time package; typically the dev package will contain header files and a library archive. Otherwise, -you can download and build libraries from sources. - -The sources of these libraries are available by anonymous CVS from -cvs.m17n.org. - - % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n login - % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n co m17n-db - % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n co m17n-lib - % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n co libotf - -For m17n-lib, if you have problems with making the whole package -because you lack some other packages on which m17n-lib depends, try to -configure it with the option "--without-gui". +you can download the libraries from . Note that Emacs cannot support complex scripts on a TTY, unless the terminal includes such a support. ------------------------------------------------------------ revno: 114410 committer: Paul Eggert branch nick: trunk timestamp: Fri 2013-09-20 08:34:36 -0700 message: A simpler, centralized INLINE. * lib-src/profile.c (INLINE): New macro. (SYSTIME_INLINE): Remove. * src/conf_post.h (INLINE): Define only if not already defined. This allows us to use a single INLINE, defined by one file per executable. * src/emacs.c (INLINE): Define it. Also, include category.h, charset.h, composite.h, dispextern.h, syntax.h, systime.h, so that their INLINE definitions are expanded properly for Emacs. * src/blockinput.h, src/keyboard.c (BLOCKINPUT_INLINE): * src/buffer.h, src/buffer.c (BUFFER_INLINE): * src/category.h, src/category.c (CATEGORY_INLINE): * src/character.h, src/character.c (CHARACTER_INLINE): * src/charset.h, src/charset.c (CHARSET_INLINE): * src/composite.h, src/composite.c (COMPOSITE_INLINE): * src/dispextern.h, src/dispnew.c (DISPEXTERN_INLINE): * src/frame.h, src/frame.c (FRAME_INLINE): * src/intervals.h, src/intervals.c (INTERVALS_INLINE): * src/keyboard.h, src/keyboard.c (KEYBOARD_INLINE): * src/lisp.h, src/alloc.c (LISP_INLINE): * src/process.h, src/process.c (PROCESS_INLINE): * src/syntax.h, src/syntax.c (SYNTAX_INLINE): * src/systime.h, src/sysdep.c (SYSTIME_INLINE): * src/termhooks.h, src/terminal.h (TERMHOOKS_INLINE): * src/window.h, src/window.c (WINDOW_INLINE): Remove. All uses replaced with INLINE. diff: === modified file 'lib-src/ChangeLog' --- lib-src/ChangeLog 2013-08-28 06:01:52 +0000 +++ lib-src/ChangeLog 2013-09-20 15:34:36 +0000 @@ -1,3 +1,9 @@ +2013-09-20 Paul Eggert + + A simpler, centralized INLINE. + * profile.c (INLINE): New macro. + (SYSTIME_INLINE): Remove. + 2013-08-28 Paul Eggert * Makefile.in (SHELL): Now @SHELL@, not /bin/sh, === modified file 'lib-src/profile.c' --- lib-src/profile.c 2013-08-27 18:47:55 +0000 +++ lib-src/profile.c 2013-09-20 15:34:36 +0000 @@ -29,10 +29,10 @@ ** abstraction : a stopwatch ** operations: reset_watch, get_time */ + +#define INLINE EXTERN_INLINE #include -#define SYSTIME_INLINE EXTERN_INLINE - #include #include === modified file 'src/ChangeLog' --- src/ChangeLog 2013-09-20 03:30:50 +0000 +++ src/ChangeLog 2013-09-20 15:34:36 +0000 @@ -1,3 +1,31 @@ +2013-09-20 Paul Eggert + + A simpler, centralized INLINE. + * conf_post.h (INLINE): Define only if not already defined. + This allows us to use a single INLINE, defined by one file + per executable. + * emacs.c (INLINE): Define it. + Also, include category.h, charset.h, composite.h, dispextern.h, + syntax.h, systime.h, so that their INLINE definitions are expanded + properly for Emacs. + * blockinput.h, keyboard.c (BLOCKINPUT_INLINE): + * buffer.h, buffer.c (BUFFER_INLINE): + * category.h, category.c (CATEGORY_INLINE): + * character.h, character.c (CHARACTER_INLINE): + * charset.h, charset.c (CHARSET_INLINE): + * composite.h, composite.c (COMPOSITE_INLINE): + * dispextern.h, dispnew.c (DISPEXTERN_INLINE): + * frame.h, frame.c (FRAME_INLINE): + * intervals.h, intervals.c (INTERVALS_INLINE): + * keyboard.h, keyboard.c (KEYBOARD_INLINE): + * lisp.h, alloc.c (LISP_INLINE): + * process.h, process.c (PROCESS_INLINE): + * syntax.h, syntax.c (SYNTAX_INLINE): + * systime.h, sysdep.c (SYSTIME_INLINE): + * termhooks.h, terminal.h (TERMHOOKS_INLINE): + * window.h, window.c (WINDOW_INLINE): + Remove. All uses replaced with INLINE. + 2013-09-20 Dmitry Antipov * xterm.c (handle_one_xevent): Revert part of 2013-09-17 change === modified file 'src/alloc.c' --- src/alloc.c 2013-09-04 22:34:04 +0000 +++ src/alloc.c 2013-09-20 15:34:36 +0000 @@ -20,8 +20,6 @@ #include -#define LISP_INLINE EXTERN_INLINE - #include #include /* For CHAR_BIT. */ === modified file 'src/blockinput.h' --- src/blockinput.h 2013-03-24 12:59:45 +0000 +++ src/blockinput.h 2013-09-20 15:34:36 +0000 @@ -20,9 +20,6 @@ #define EMACS_BLOCKINPUT_H INLINE_HEADER_BEGIN -#ifndef BLOCKINPUT_INLINE -# define BLOCKINPUT_INLINE INLINE -#endif /* Emacs should avoid doing anything hairy in a signal handler, because so many system functions are non-reentrant. For example, malloc @@ -52,7 +49,7 @@ /* Begin critical section. */ -BLOCKINPUT_INLINE void +INLINE void block_input (void) { interrupt_input_blocked++; @@ -64,7 +61,7 @@ /* In critical section ? */ -BLOCKINPUT_INLINE bool +INLINE bool input_blocked_p (void) { return interrupt_input_blocked > 0; === modified file 'src/buffer.c' --- src/buffer.c 2013-09-14 09:24:34 +0000 +++ src/buffer.c 2013-09-20 15:34:36 +0000 @@ -20,8 +20,6 @@ #include -#define BUFFER_INLINE EXTERN_INLINE - #include #include #include === modified file 'src/buffer.h' --- src/buffer.h 2013-08-29 16:36:54 +0000 +++ src/buffer.h 2013-09-20 15:34:36 +0000 @@ -22,9 +22,6 @@ #include INLINE_HEADER_BEGIN -#ifndef BUFFER_INLINE -# define BUFFER_INLINE INLINE -#endif /* Accessing the parameters of the current buffer. */ @@ -875,97 +872,97 @@ /* Most code should use these functions to set Lisp fields in struct buffer. */ -BUFFER_INLINE void +INLINE void bset_bidi_paragraph_direction (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (bidi_paragraph_direction) = val; } -BUFFER_INLINE void +INLINE void bset_case_canon_table (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (case_canon_table) = val; } -BUFFER_INLINE void +INLINE void bset_case_eqv_table (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (case_eqv_table) = val; } -BUFFER_INLINE void +INLINE void bset_directory (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (directory) = val; } -BUFFER_INLINE void +INLINE void bset_display_count (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (display_count) = val; } -BUFFER_INLINE void +INLINE void bset_display_time (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (display_time) = val; } -BUFFER_INLINE void +INLINE void bset_downcase_table (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (downcase_table) = val; } -BUFFER_INLINE void +INLINE void bset_enable_multibyte_characters (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (enable_multibyte_characters) = val; } -BUFFER_INLINE void +INLINE void bset_filename (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (filename) = val; } -BUFFER_INLINE void +INLINE void bset_keymap (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (keymap) = val; } -BUFFER_INLINE void +INLINE void bset_last_selected_window (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (last_selected_window) = val; } -BUFFER_INLINE void +INLINE void bset_local_var_alist (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (local_var_alist) = val; } -BUFFER_INLINE void +INLINE void bset_mark_active (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (mark_active) = val; } -BUFFER_INLINE void +INLINE void bset_point_before_scroll (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (point_before_scroll) = val; } -BUFFER_INLINE void +INLINE void bset_read_only (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (read_only) = val; } -BUFFER_INLINE void +INLINE void bset_truncate_lines (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (truncate_lines) = val; } -BUFFER_INLINE void +INLINE void bset_undo_list (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (undo_list) = val; } -BUFFER_INLINE void +INLINE void bset_upcase_table (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (upcase_table) = val; } -BUFFER_INLINE void +INLINE void bset_width_table (struct buffer *b, Lisp_Object val) { b->INTERNAL_FIELD (width_table) = val; @@ -1089,7 +1086,7 @@ windows than the selected one requires a select_window at some time, and that increments windows_or_buffers_changed. */ -BUFFER_INLINE void +INLINE void set_buffer_internal (struct buffer *b) { if (current_buffer != b) @@ -1099,7 +1096,7 @@ /* Arrange to go back to the original buffer after the next call to unbind_to if the original buffer is still alive. */ -BUFFER_INLINE void +INLINE void record_unwind_current_buffer (void) { record_unwind_protect (set_buffer_if_live, Fcurrent_buffer ()); @@ -1138,7 +1135,7 @@ /* Get text properties of B. */ -BUFFER_INLINE INTERVAL +INLINE INTERVAL buffer_intervals (struct buffer *b) { eassert (b->text != NULL); @@ -1147,7 +1144,7 @@ /* Set text properties of B to I. */ -BUFFER_INLINE void +INLINE void set_buffer_intervals (struct buffer *b, INTERVAL i) { eassert (b->text != NULL); @@ -1156,7 +1153,7 @@ /* Non-zero if current buffer has overlays. */ -BUFFER_INLINE bool +INLINE bool buffer_has_overlays (void) { return current_buffer->overlays_before || current_buffer->overlays_after; @@ -1176,7 +1173,7 @@ the buffer to the next character after fetching this one. Instead, use either FETCH_CHAR_ADVANCE or STRING_CHAR_AND_LENGTH. */ -BUFFER_INLINE int +INLINE int FETCH_MULTIBYTE_CHAR (ptrdiff_t pos) { unsigned char *p = ((pos >= GPT_BYTE ? GAP_SIZE : 0) @@ -1188,7 +1185,7 @@ If POS doesn't point the head of valid multi-byte form, only the byte at POS is returned. No range checking. */ -BUFFER_INLINE int +INLINE int BUF_FETCH_MULTIBYTE_CHAR (struct buffer *buf, ptrdiff_t pos) { unsigned char *p @@ -1199,7 +1196,7 @@ /* Return number of windows showing B. */ -BUFFER_INLINE int +INLINE int buffer_window_count (struct buffer *b) { if (b->base_buffer) @@ -1306,13 +1303,13 @@ /* Functions to get and set default value of the per-buffer variable at offset OFFSET in the buffer structure. */ -BUFFER_INLINE Lisp_Object +INLINE Lisp_Object per_buffer_default (int offset) { return *(Lisp_Object *)(offset + (char *) &buffer_defaults); } -BUFFER_INLINE void +INLINE void set_per_buffer_default (int offset, Lisp_Object value) { *(Lisp_Object *)(offset + (char *) &buffer_defaults) = value; @@ -1321,20 +1318,20 @@ /* Functions to get and set buffer-local value of the per-buffer variable at offset OFFSET in the buffer structure. */ -BUFFER_INLINE Lisp_Object +INLINE Lisp_Object per_buffer_value (struct buffer *b, int offset) { return *(Lisp_Object *)(offset + (char *) b); } -BUFFER_INLINE void +INLINE void set_per_buffer_value (struct buffer *b, int offset, Lisp_Object value) { *(Lisp_Object *)(offset + (char *) b) = value; } /* Downcase a character C, or make no change if that cannot be done. */ -BUFFER_INLINE int +INLINE int downcase (int c) { Lisp_Object downcase_table = BVAR (current_buffer, downcase_table); @@ -1343,10 +1340,10 @@ } /* 1 if C is upper case. */ -BUFFER_INLINE bool uppercasep (int c) { return downcase (c) != c; } +INLINE bool uppercasep (int c) { return downcase (c) != c; } /* Upcase a character C known to be not upper case. */ -BUFFER_INLINE int +INLINE int upcase1 (int c) { Lisp_Object upcase_table = BVAR (current_buffer, upcase_table); @@ -1355,13 +1352,13 @@ } /* 1 if C is lower case. */ -BUFFER_INLINE bool +INLINE bool lowercasep (int c) { return !uppercasep (c) && upcase1 (c) != c; } /* Upcase a character C, or make no change if that cannot be done. */ -BUFFER_INLINE int upcase (int c) { return uppercasep (c) ? c : upcase1 (c); } +INLINE int upcase (int c) { return uppercasep (c) ? c : upcase1 (c); } INLINE_HEADER_END === modified file 'src/category.c' --- src/category.c 2013-08-26 05:20:59 +0000 +++ src/category.c 2013-09-20 15:34:36 +0000 @@ -30,8 +30,6 @@ #include -#define CATEGORY_INLINE EXTERN_INLINE - #include "lisp.h" #include "character.h" #include "buffer.h" === modified file 'src/category.h' --- src/category.h 2012-08-25 06:25:00 +0000 +++ src/category.h 2013-09-20 15:34:36 +0000 @@ -54,9 +54,6 @@ But, for the moment, we are not using this slot. */ INLINE_HEADER_BEGIN -#ifndef CATEGORY_INLINE -# define CATEGORY_INLINE INLINE -#endif #define CATEGORYP(x) RANGED_INTEGERP (0x20, x, 0x7E) @@ -84,7 +81,7 @@ >> ((category) % 8)) & 1) /* Return true if category set of CH contains CATEGORY. */ -CATEGORY_INLINE bool +INLINE bool CHAR_HAS_CATEGORY (int ch, int category) { Lisp_Object category_set = CATEGORY_SET (ch); === modified file 'src/character.c' --- src/character.c 2013-08-26 05:20:59 +0000 +++ src/character.c 2013-09-20 15:34:36 +0000 @@ -29,8 +29,6 @@ #include #endif -#define CHARACTER_INLINE EXTERN_INLINE - #include #ifdef emacs === modified file 'src/character.h' --- src/character.h 2012-09-26 20:00:29 +0000 +++ src/character.h 2013-09-20 15:34:36 +0000 @@ -26,9 +26,6 @@ #include INLINE_HEADER_BEGIN -#ifndef CHARACTER_INLINE -# define CHARACTER_INLINE INLINE -#endif /* character code 1st byte byte sequence -------------- -------- ------------- @@ -558,7 +555,7 @@ #define SANE_TAB_WIDTH(buf) \ sanitize_tab_width (XFASTINT (BVAR (buf, tab_width))) -CHARACTER_INLINE int +INLINE int sanitize_tab_width (EMACS_INT width) { return 0 < width && width <= 1000 ? width : 8; @@ -579,7 +576,7 @@ /* Return a non-outlandish value for a character width. */ -CHARACTER_INLINE int +INLINE int sanitize_char_width (EMACS_INT width) { return 0 <= width && width <= 1000 ? width : 1000; === modified file 'src/charset.c' --- src/charset.c 2013-09-12 13:12:39 +0000 +++ src/charset.c 2013-09-20 15:34:36 +0000 @@ -26,8 +26,6 @@ #include -#define CHARSET_INLINE EXTERN_INLINE - #include #include #include === modified file 'src/charset.h' --- src/charset.h 2013-01-01 09:11:05 +0000 +++ src/charset.h 2013-09-20 15:34:36 +0000 @@ -30,9 +30,6 @@ #include INLINE_HEADER_BEGIN -#ifndef CHARSET_INLINE -# define CHARSET_INLINE INLINE -#endif /* Index to arguments of Fdefine_charset_internal. */ @@ -331,7 +328,7 @@ #define CHARSET_DEUNIFIER(charset) \ (CHARSET_ATTR_DEUNIFIER (CHARSET_ATTRIBUTES (charset))) -CHARSET_INLINE void +INLINE void set_charset_attr (struct charset *charset, enum charset_attr_index idx, Lisp_Object val) { === modified file 'src/composite.c' --- src/composite.c 2013-08-03 21:09:57 +0000 +++ src/composite.c 2013-09-20 15:34:36 +0000 @@ -24,8 +24,6 @@ #include -#define COMPOSITE_INLINE EXTERN_INLINE - #include "lisp.h" #include "character.h" #include "buffer.h" === modified file 'src/composite.h' --- src/composite.h 2013-08-30 12:17:44 +0000 +++ src/composite.h 2013-09-20 15:34:36 +0000 @@ -28,9 +28,6 @@ #include "font.h" INLINE_HEADER_BEGIN -#ifndef COMPOSITE_INLINE -# define COMPOSITE_INLINE INLINE -#endif /* Methods to display a sequence of components of a composition. */ enum composition_method { @@ -59,7 +56,7 @@ They don't check validity of PROP. */ /* Return true if PROP is already registered. */ -COMPOSITE_INLINE bool +INLINE bool composition_registered_p (Lisp_Object prop) { return INTEGERP (XCAR (prop)); @@ -207,7 +204,7 @@ /* Return the method of a composition with property PROP. */ -COMPOSITE_INLINE enum composition_method +INLINE enum composition_method composition_method (Lisp_Object prop) { if (composition_registered_p (prop)) @@ -226,7 +223,7 @@ /* Given offsets START and END, return true if PROP is a valid composition property with length END - START. */ -COMPOSITE_INLINE bool +INLINE bool composition_valid_p (ptrdiff_t start, ptrdiff_t end, Lisp_Object prop) { return (CONSP (prop) @@ -262,7 +259,7 @@ #define LGSTRING_GLYPH_LEN(lgs) (ASIZE ((lgs)) - 2) #define LGSTRING_GLYPH(lgs, idx) AREF ((lgs), (idx) + 2) #define LGSTRING_SET_GLYPH(lgs, idx, val) ASET ((lgs), (idx) + 2, (val)) -COMPOSITE_INLINE Lisp_Object * +INLINE Lisp_Object * lgstring_glyph_addr (Lisp_Object lgs, ptrdiff_t idx) { return aref_addr (lgs, idx + 2); === modified file 'src/conf_post.h' --- src/conf_post.h 2013-07-19 14:34:56 +0000 +++ src/conf_post.h 2013-09-20 15:34:36 +0000 @@ -208,11 +208,8 @@ [#include any other .h files first.] ... INLINE_HEADER_BEGIN - #ifndef FOO_INLINE - # define FOO_INLINE INLINE - #endif ... - FOO_INLINE int + INLINE int incr (int i) { return i + 1; @@ -220,19 +217,22 @@ ... INLINE_HEADER_END - The corresponding foo.c file should do this: - - #define FOO_INLINE EXTERN_INLINE - - before including any .h file other than config.h. - Other .c files should not define FOO_INLINE. + For every executable, exactly one file that includes the header + should do this: + + #define INLINE EXTERN_INLINE + + before including config.h or any other .h file. + Other .c files should not define INLINE. C99 compilers compile functions like 'incr' as C99-style extern inline functions. Pre-C99 GCCs do something similar with GNU-specific keywords. Pre-C99 non-GCC compilers use static functions, which bloats the code but is good enough. */ -#define INLINE _GL_INLINE +#ifndef INLINE +# define INLINE _GL_INLINE +#endif #define EXTERN_INLINE _GL_EXTERN_INLINE #define INLINE_HEADER_BEGIN _GL_INLINE_HEADER_BEGIN #define INLINE_HEADER_END _GL_INLINE_HEADER_END === modified file 'src/dispextern.h' --- src/dispextern.h 2013-09-18 09:33:36 +0000 +++ src/dispextern.h 2013-09-20 15:34:36 +0000 @@ -49,12 +49,9 @@ #endif INLINE_HEADER_BEGIN -#ifndef DISPEXTERN_INLINE -# define DISPEXTERN_INLINE INLINE -#endif #include -DISPEXTERN_INLINE int +INLINE int xstrcasecmp (char const *a, char const *b) { return c_strcasecmp (a, b); @@ -289,10 +286,10 @@ } GLYPH; /* Return a glyph's character code. */ -DISPEXTERN_INLINE int GLYPH_CHAR (GLYPH glyph) { return glyph.ch; } +INLINE int GLYPH_CHAR (GLYPH glyph) { return glyph.ch; } /* Return a glyph's face ID. */ -DISPEXTERN_INLINE int GLYPH_FACE (GLYPH glyph) { return glyph.face_id; } +INLINE int GLYPH_FACE (GLYPH glyph) { return glyph.face_id; } #define SET_GLYPH_CHAR(glyph, char) ((glyph).ch = (char)) #define SET_GLYPH_FACE(glyph, face) ((glyph).face_id = (face)) @@ -301,7 +298,7 @@ /* The following are valid only if GLYPH_CODE_P (gc). */ -DISPEXTERN_INLINE int +INLINE int GLYPH_CODE_CHAR (Lisp_Object gc) { return (CONSP (gc) @@ -309,7 +306,7 @@ : XINT (gc) & MAX_CHAR); } -DISPEXTERN_INLINE int +INLINE int GLYPH_CODE_FACE (Lisp_Object gc) { return CONSP (gc) ? XINT (XCDR (gc)) : XINT (gc) >> CHARACTERBITS; @@ -1824,7 +1821,7 @@ #endif /* not HAVE_WINDOW_SYSTEM */ /* Return true if G contains a valid character code. */ -DISPEXTERN_INLINE bool +INLINE bool GLYPH_CHAR_VALID_P (GLYPH g) { return CHAR_VALID_P (GLYPH_CHAR (g)); @@ -1834,7 +1831,7 @@ encodes a char code in the lower CHARACTERBITS bits and a (very small) face-id in the upper bits, or it may be a cons (CHAR . FACE-ID). */ -DISPEXTERN_INLINE bool +INLINE bool GLYPH_CODE_P (Lisp_Object gc) { return (CONSP (gc) @@ -2705,7 +2702,7 @@ unsigned mouse_face_hidden : 1; } Mouse_HLInfo; -DISPEXTERN_INLINE void +INLINE void reset_mouse_highlight (Mouse_HLInfo *hlinfo) { === modified file 'src/dispnew.c' --- src/dispnew.c 2013-09-11 08:56:33 +0000 +++ src/dispnew.c 2013-09-20 15:34:36 +0000 @@ -20,8 +20,6 @@ #include -#define DISPEXTERN_INLINE EXTERN_INLINE - #include "sysstdio.h" #include === modified file 'src/emacs.c' --- src/emacs.c 2013-09-11 17:31:29 +0000 +++ src/emacs.c 2013-09-20 15:34:36 +0000 @@ -18,8 +18,9 @@ You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see . */ - +#define INLINE EXTERN_INLINE #include + #include #include @@ -72,6 +73,12 @@ #include "termhooks.h" #include "keyboard.h" #include "keymap.h" +#include "category.h" +#include "charset.h" +#include "composite.h" +#include "dispextern.h" +#include "syntax.h" +#include "systime.h" #ifdef HAVE_GNUTLS #include "gnutls.h" === modified file 'src/frame.c' --- src/frame.c 2013-09-18 09:33:36 +0000 +++ src/frame.c 2013-09-20 15:34:36 +0000 @@ -19,8 +19,6 @@ #include -#define FRAME_INLINE EXTERN_INLINE - #include #include #include === modified file 'src/frame.h' --- src/frame.h 2013-09-17 12:59:45 +0000 +++ src/frame.h 2013-09-20 15:34:36 +0000 @@ -27,9 +27,6 @@ #include "termhooks.h" INLINE_HEADER_BEGIN -#ifndef FRAME_INLINE -# define FRAME_INLINE INLINE -#endif enum vertical_scroll_bar_type { @@ -448,105 +445,105 @@ /* Most code should use these functions to set Lisp fields in struct frame. */ -FRAME_INLINE void +INLINE void fset_buffer_list (struct frame *f, Lisp_Object val) { f->buffer_list = val; } -FRAME_INLINE void +INLINE void fset_buried_buffer_list (struct frame *f, Lisp_Object val) { f->buried_buffer_list = val; } -FRAME_INLINE void +INLINE void fset_condemned_scroll_bars (struct frame *f, Lisp_Object val) { f->condemned_scroll_bars = val; } -FRAME_INLINE void +INLINE void fset_face_alist (struct frame *f, Lisp_Object val) { f->face_alist = val; } -FRAME_INLINE void +INLINE void fset_focus_frame (struct frame *f, Lisp_Object val) { f->focus_frame = val; } -FRAME_INLINE void +INLINE void fset_icon_name (struct frame *f, Lisp_Object val) { f->icon_name = val; } -FRAME_INLINE void +INLINE void fset_menu_bar_items (struct frame *f, Lisp_Object val) { f->menu_bar_items = val; } -FRAME_INLINE void +INLINE void fset_menu_bar_vector (struct frame *f, Lisp_Object val) { f->menu_bar_vector = val; } #if defined (HAVE_X_WINDOWS) && ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK) -FRAME_INLINE void +INLINE void fset_menu_bar_window (struct frame *f, Lisp_Object val) { f->menu_bar_window = val; } #endif -FRAME_INLINE void +INLINE void fset_name (struct frame *f, Lisp_Object val) { f->name = val; } -FRAME_INLINE void +INLINE void fset_param_alist (struct frame *f, Lisp_Object val) { f->param_alist = val; } -FRAME_INLINE void +INLINE void fset_root_window (struct frame *f, Lisp_Object val) { f->root_window = val; } -FRAME_INLINE void +INLINE void fset_scroll_bars (struct frame *f, Lisp_Object val) { f->scroll_bars = val; } -FRAME_INLINE void +INLINE void fset_selected_window (struct frame *f, Lisp_Object val) { f->selected_window = val; } -FRAME_INLINE void +INLINE void fset_title (struct frame *f, Lisp_Object val) { f->title = val; } -FRAME_INLINE void +INLINE void fset_tool_bar_items (struct frame *f, Lisp_Object val) { f->tool_bar_items = val; } -FRAME_INLINE void +INLINE void fset_tool_bar_position (struct frame *f, Lisp_Object val) { f->tool_bar_position = val; } #if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) -FRAME_INLINE void +INLINE void fset_tool_bar_window (struct frame *f, Lisp_Object val) { f->tool_bar_window = val; } -FRAME_INLINE void +INLINE void fset_current_tool_bar_string (struct frame *f, Lisp_Object val) { f->current_tool_bar_string = val; } -FRAME_INLINE void +INLINE void fset_desired_tool_bar_string (struct frame *f, Lisp_Object val) { f->desired_tool_bar_string = val; @@ -555,7 +552,7 @@ #define NUMVAL(X) ((INTEGERP (X) || FLOATP (X)) ? XFLOATINT (X) : -1) -FRAME_INLINE double +INLINE double default_pixels_per_inch_x (void) { Lisp_Object v = (CONSP (Vdisplay_pixels_per_inch) @@ -564,7 +561,7 @@ return NUMVAL (v) > 0 ? NUMVAL (v) : 72.0; } -FRAME_INLINE double +INLINE double default_pixels_per_inch_y (void) { Lisp_Object v = (CONSP (Vdisplay_pixels_per_inch) @@ -1282,7 +1279,7 @@ /* Set F's bitmap icon, if specified among F's parameters. */ -FRAME_INLINE void +INLINE void x_set_bitmap_icon (struct frame *f) { Lisp_Object obj = assq_no_quit (Qicon_type, f->param_alist); @@ -1295,7 +1292,7 @@ #endif /* HAVE_WINDOW_SYSTEM */ -FRAME_INLINE void +INLINE void flush_frame (struct frame *f) { struct redisplay_interface *rif = FRAME_RIF (f); === modified file 'src/intervals.c' --- src/intervals.c 2013-09-03 13:29:38 +0000 +++ src/intervals.c 2013-09-20 15:34:36 +0000 @@ -40,8 +40,6 @@ #include -#define INTERVALS_INLINE EXTERN_INLINE - #include #include "lisp.h" #include "intervals.h" === modified file 'src/intervals.h' --- src/intervals.h 2013-03-02 18:39:34 +0000 +++ src/intervals.h 2013-09-20 15:34:36 +0000 @@ -19,9 +19,6 @@ #include "dispextern.h" INLINE_HEADER_BEGIN -#ifndef INTERVALS_INLINE -# define INTERVALS_INLINE INLINE -#endif /* Basic data type for use of intervals. */ @@ -136,14 +133,14 @@ /* Use these functions to set Lisp_Object or pointer slots of struct interval. */ -INTERVALS_INLINE void +INLINE void set_interval_parent (INTERVAL i, INTERVAL parent) { i->up_obj = 0; i->up.interval = parent; } -INTERVALS_INLINE void +INLINE void set_interval_plist (INTERVAL i, Lisp_Object plist) { i->plist = plist; === modified file 'src/keyboard.c' --- src/keyboard.c 2013-09-11 03:31:06 +0000 +++ src/keyboard.c 2013-09-20 15:34:36 +0000 @@ -20,9 +20,6 @@ #include -#define BLOCKINPUT_INLINE EXTERN_INLINE -#define KEYBOARD_INLINE EXTERN_INLINE - #include "sysstdio.h" #include "lisp.h" === modified file 'src/keyboard.h' --- src/keyboard.h 2013-08-30 12:17:44 +0000 +++ src/keyboard.h 2013-09-20 15:34:36 +0000 @@ -22,9 +22,6 @@ #include "termhooks.h" INLINE_HEADER_BEGIN -#ifndef KEYBOARD_INLINE -# define KEYBOARD_INLINE INLINE -#endif /* Most code should use this macro to access Lisp fields in struct kboard. */ @@ -179,42 +176,42 @@ ptrdiff_t echo_after_prompt; }; -KEYBOARD_INLINE void +INLINE void kset_default_minibuffer_frame (struct kboard *kb, Lisp_Object val) { kb->INTERNAL_FIELD (Vdefault_minibuffer_frame) = val; } -KEYBOARD_INLINE void +INLINE void kset_defining_kbd_macro (struct kboard *kb, Lisp_Object val) { kb->INTERNAL_FIELD (defining_kbd_macro) = val; } -KEYBOARD_INLINE void +INLINE void kset_input_decode_map (struct kboard *kb, Lisp_Object val) { kb->INTERNAL_FIELD (Vinput_decode_map) = val; } -KEYBOARD_INLINE void +INLINE void kset_last_command (struct kboard *kb, Lisp_Object val) { kb->INTERNAL_FIELD (Vlast_command) = val; } -KEYBOARD_INLINE void +INLINE void kset_last_kbd_macro (struct kboard *kb, Lisp_Object val) { kb->INTERNAL_FIELD (Vlast_kbd_macro) = val; } -KEYBOARD_INLINE void +INLINE void kset_prefix_arg (struct kboard *kb, Lisp_Object val) { kb->INTERNAL_FIELD (Vprefix_arg) = val; } -KEYBOARD_INLINE void +INLINE void kset_system_key_alist (struct kboard *kb, Lisp_Object val) { kb->INTERNAL_FIELD (Vsystem_key_alist) = val; } -KEYBOARD_INLINE void +INLINE void kset_window_system (struct kboard *kb, Lisp_Object val) { kb->INTERNAL_FIELD (Vwindow_system) = val; === modified file 'src/lisp.h' --- src/lisp.h 2013-09-11 05:03:23 +0000 +++ src/lisp.h 2013-09-20 15:34:36 +0000 @@ -33,9 +33,6 @@ #include INLINE_HEADER_BEGIN -#ifndef LISP_INLINE -# define LISP_INLINE INLINE -#endif /* The ubiquitous max and min macros. */ #undef min @@ -345,11 +342,11 @@ ARGS should be parenthesized. Implement the function by calling lisp_h_NAME ARGS. */ #define LISP_MACRO_DEFUN(name, type, argdecls, args) \ - LISP_INLINE type (name) argdecls { return lisp_h_##name args; } + INLINE type (name) argdecls { return lisp_h_##name args; } /* like LISP_MACRO_DEFUN, except NAME returns void. */ #define LISP_MACRO_DEFUN_VOID(name, argdecls, args) \ - LISP_INLINE void (name) argdecls { lisp_h_##name args; } + INLINE void (name) argdecls { lisp_h_##name args; } /* Define the fundamental Lisp data structures. */ @@ -610,14 +607,14 @@ /* Make a Lisp integer representing the value of the low order bits of N. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object make_number (EMACS_INT n) { return XIL (USE_LSB_TAG ? n << INTTYPEBITS : n & INTMASK); } /* Extract A's value as a signed integer. */ -LISP_INLINE EMACS_INT +INLINE EMACS_INT XINT (Lisp_Object a) { EMACS_INT i = XLI (a); @@ -627,7 +624,7 @@ /* Like XINT (A), but may be faster. A must be nonnegative. If ! USE_LSB_TAG, this takes advantage of the fact that Lisp integers have zero-bits in their tags. */ -LISP_INLINE EMACS_INT +INLINE EMACS_INT XFASTINT (Lisp_Object a) { EMACS_INT n = USE_LSB_TAG ? XINT (a) : XLI (a); @@ -636,7 +633,7 @@ } /* Extract A's type. */ -LISP_INLINE enum Lisp_Type +INLINE enum Lisp_Type XTYPE (Lisp_Object a) { EMACS_UINT i = XLI (a); @@ -644,7 +641,7 @@ } /* Extract A's pointer value, assuming A's type is TYPE. */ -LISP_INLINE void * +INLINE void * XUNTAG (Lisp_Object a, int type) { if (USE_LSB_TAG) @@ -658,7 +655,7 @@ #endif /* ! USE_LSB_TAG */ /* Extract A's value as an unsigned integer. */ -LISP_INLINE EMACS_UINT +INLINE EMACS_UINT XUINT (Lisp_Object a) { EMACS_UINT i = XLI (a); @@ -671,7 +668,7 @@ LISP_MACRO_DEFUN (XHASH, EMACS_INT, (Lisp_Object a), (a)) /* Like make_number (N), but may be faster. N must be in nonnegative range. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object make_natnum (EMACS_INT n) { eassert (0 <= n && n <= MOST_POSITIVE_FIXNUM); @@ -688,7 +685,7 @@ #define FIXNUM_OVERFLOW_P(i) \ (! ((0 <= (i) || MOST_NEGATIVE_FIXNUM <= (i)) && (i) <= MOST_POSITIVE_FIXNUM)) -LISP_INLINE ptrdiff_t +INLINE ptrdiff_t clip_to_bounds (ptrdiff_t lower, EMACS_INT num, ptrdiff_t upper) { return num < lower ? lower : num <= upper ? num : upper; @@ -698,31 +695,31 @@ /* Defined in this file. */ union Lisp_Fwd; -LISP_INLINE bool BOOL_VECTOR_P (Lisp_Object); -LISP_INLINE bool BUFFER_OBJFWDP (union Lisp_Fwd *); -LISP_INLINE bool BUFFERP (Lisp_Object); -LISP_INLINE bool CHAR_TABLE_P (Lisp_Object); -LISP_INLINE Lisp_Object CHAR_TABLE_REF_ASCII (Lisp_Object, ptrdiff_t); -LISP_INLINE bool (CONSP) (Lisp_Object); -LISP_INLINE bool (FLOATP) (Lisp_Object); -LISP_INLINE bool functionp (Lisp_Object); -LISP_INLINE bool (INTEGERP) (Lisp_Object); -LISP_INLINE bool (MARKERP) (Lisp_Object); -LISP_INLINE bool (MISCP) (Lisp_Object); -LISP_INLINE bool (NILP) (Lisp_Object); -LISP_INLINE bool OVERLAYP (Lisp_Object); -LISP_INLINE bool PROCESSP (Lisp_Object); -LISP_INLINE bool PSEUDOVECTORP (Lisp_Object, int); -LISP_INLINE bool SAVE_VALUEP (Lisp_Object); -LISP_INLINE void set_sub_char_table_contents (Lisp_Object, ptrdiff_t, +INLINE bool BOOL_VECTOR_P (Lisp_Object); +INLINE bool BUFFER_OBJFWDP (union Lisp_Fwd *); +INLINE bool BUFFERP (Lisp_Object); +INLINE bool CHAR_TABLE_P (Lisp_Object); +INLINE Lisp_Object CHAR_TABLE_REF_ASCII (Lisp_Object, ptrdiff_t); +INLINE bool (CONSP) (Lisp_Object); +INLINE bool (FLOATP) (Lisp_Object); +INLINE bool functionp (Lisp_Object); +INLINE bool (INTEGERP) (Lisp_Object); +INLINE bool (MARKERP) (Lisp_Object); +INLINE bool (MISCP) (Lisp_Object); +INLINE bool (NILP) (Lisp_Object); +INLINE bool OVERLAYP (Lisp_Object); +INLINE bool PROCESSP (Lisp_Object); +INLINE bool PSEUDOVECTORP (Lisp_Object, int); +INLINE bool SAVE_VALUEP (Lisp_Object); +INLINE void set_sub_char_table_contents (Lisp_Object, ptrdiff_t, Lisp_Object); -LISP_INLINE bool STRINGP (Lisp_Object); -LISP_INLINE bool SUB_CHAR_TABLE_P (Lisp_Object); -LISP_INLINE bool SUBRP (Lisp_Object); -LISP_INLINE bool (SYMBOLP) (Lisp_Object); -LISP_INLINE bool (VECTORLIKEP) (Lisp_Object); -LISP_INLINE bool WINDOWP (Lisp_Object); -LISP_INLINE struct Lisp_Save_Value *XSAVE_VALUE (Lisp_Object); +INLINE bool STRINGP (Lisp_Object); +INLINE bool SUB_CHAR_TABLE_P (Lisp_Object); +INLINE bool SUBRP (Lisp_Object); +INLINE bool (SYMBOLP) (Lisp_Object); +INLINE bool (VECTORLIKEP) (Lisp_Object); +INLINE bool WINDOWP (Lisp_Object); +INLINE struct Lisp_Save_Value *XSAVE_VALUE (Lisp_Object); /* Defined in chartab.c. */ extern Lisp_Object char_table_ref (Lisp_Object, int); @@ -761,14 +758,14 @@ LISP_MACRO_DEFUN (XCONS, struct Lisp_Cons *, (Lisp_Object a), (a)) -LISP_INLINE struct Lisp_Vector * +INLINE struct Lisp_Vector * XVECTOR (Lisp_Object a) { eassert (VECTORLIKEP (a)); return XUNTAG (a, Lisp_Vectorlike); } -LISP_INLINE struct Lisp_String * +INLINE struct Lisp_String * XSTRING (Lisp_Object a) { eassert (STRINGP (a)); @@ -777,7 +774,7 @@ LISP_MACRO_DEFUN (XSYMBOL, struct Lisp_Symbol *, (Lisp_Object a), (a)) -LISP_INLINE struct Lisp_Float * +INLINE struct Lisp_Float * XFLOAT (Lisp_Object a) { eassert (FLOATP (a)); @@ -786,55 +783,55 @@ /* Pseudovector types. */ -LISP_INLINE struct Lisp_Process * +INLINE struct Lisp_Process * XPROCESS (Lisp_Object a) { eassert (PROCESSP (a)); return XUNTAG (a, Lisp_Vectorlike); } -LISP_INLINE struct window * +INLINE struct window * XWINDOW (Lisp_Object a) { eassert (WINDOWP (a)); return XUNTAG (a, Lisp_Vectorlike); } -LISP_INLINE struct terminal * +INLINE struct terminal * XTERMINAL (Lisp_Object a) { return XUNTAG (a, Lisp_Vectorlike); } -LISP_INLINE struct Lisp_Subr * +INLINE struct Lisp_Subr * XSUBR (Lisp_Object a) { eassert (SUBRP (a)); return XUNTAG (a, Lisp_Vectorlike); } -LISP_INLINE struct buffer * +INLINE struct buffer * XBUFFER (Lisp_Object a) { eassert (BUFFERP (a)); return XUNTAG (a, Lisp_Vectorlike); } -LISP_INLINE struct Lisp_Char_Table * +INLINE struct Lisp_Char_Table * XCHAR_TABLE (Lisp_Object a) { eassert (CHAR_TABLE_P (a)); return XUNTAG (a, Lisp_Vectorlike); } -LISP_INLINE struct Lisp_Sub_Char_Table * +INLINE struct Lisp_Sub_Char_Table * XSUB_CHAR_TABLE (Lisp_Object a) { eassert (SUB_CHAR_TABLE_P (a)); return XUNTAG (a, Lisp_Vectorlike); } -LISP_INLINE struct Lisp_Bool_Vector * +INLINE struct Lisp_Bool_Vector * XBOOL_VECTOR (Lisp_Object a) { eassert (BOOL_VECTOR_P (a)); @@ -843,7 +840,7 @@ /* Construct a Lisp_Object from a value or address. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object make_lisp_ptr (void *ptr, enum Lisp_Type type) { EMACS_UINT utype = type; @@ -853,7 +850,7 @@ return a; } -LISP_INLINE Lisp_Object +INLINE Lisp_Object make_lisp_proc (struct Lisp_Process *p) { return make_lisp_ptr (p, Lisp_Vectorlike); @@ -937,12 +934,12 @@ fields are not accessible. (What if we want to switch to a copying collector someday? Cached cons cell field addresses may be invalidated at arbitrary points.) */ -LISP_INLINE Lisp_Object * +INLINE Lisp_Object * xcar_addr (Lisp_Object c) { return &XCONS (c)->car; } -LISP_INLINE Lisp_Object * +INLINE Lisp_Object * xcdr_addr (Lisp_Object c) { return &XCONS (c)->u.cdr; @@ -956,26 +953,26 @@ Note that both arguments may refer to the same object, so 'n' should not be read after 'c' is first modified. */ -LISP_INLINE void +INLINE void XSETCAR (Lisp_Object c, Lisp_Object n) { *xcar_addr (c) = n; } -LISP_INLINE void +INLINE void XSETCDR (Lisp_Object c, Lisp_Object n) { *xcdr_addr (c) = n; } /* Take the car or cdr of something whose type is not known. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object CAR (Lisp_Object c) { return (CONSP (c) ? XCAR (c) : NILP (c) ? Qnil : wrong_type_argument (Qlistp, c)); } -LISP_INLINE Lisp_Object +INLINE Lisp_Object CDR (Lisp_Object c) { return (CONSP (c) ? XCDR (c) @@ -984,12 +981,12 @@ } /* Take the car or cdr of something whose type is not known. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object CAR_SAFE (Lisp_Object c) { return CONSP (c) ? XCAR (c) : Qnil; } -LISP_INLINE Lisp_Object +INLINE Lisp_Object CDR_SAFE (Lisp_Object c) { return CONSP (c) ? XCDR (c) : Qnil; @@ -1006,7 +1003,7 @@ }; /* True if STR is a multibyte string. */ -LISP_INLINE bool +INLINE bool STRING_MULTIBYTE (Lisp_Object str) { return 0 <= XSTRING (str)->size_byte; @@ -1043,28 +1040,28 @@ /* Convenience functions for dealing with Lisp strings. */ -LISP_INLINE unsigned char * +INLINE unsigned char * SDATA (Lisp_Object string) { return XSTRING (string)->data; } -LISP_INLINE char * +INLINE char * SSDATA (Lisp_Object string) { /* Avoid "differ in sign" warnings. */ return (char *) SDATA (string); } -LISP_INLINE unsigned char +INLINE unsigned char SREF (Lisp_Object string, ptrdiff_t index) { return SDATA (string)[index]; } -LISP_INLINE void +INLINE void SSET (Lisp_Object string, ptrdiff_t index, unsigned char new) { SDATA (string)[index] = new; } -LISP_INLINE ptrdiff_t +INLINE ptrdiff_t SCHARS (Lisp_Object string) { return XSTRING (string)->size; @@ -1073,7 +1070,7 @@ #ifdef GC_CHECK_STRING_BYTES extern ptrdiff_t string_bytes (struct Lisp_String *); #endif -LISP_INLINE ptrdiff_t +INLINE ptrdiff_t STRING_BYTES (struct Lisp_String *s) { #ifdef GC_CHECK_STRING_BYTES @@ -1083,17 +1080,17 @@ #endif } -LISP_INLINE ptrdiff_t +INLINE ptrdiff_t SBYTES (Lisp_Object string) { return STRING_BYTES (XSTRING (string)); } -LISP_INLINE void +INLINE void STRING_SET_CHARS (Lisp_Object string, ptrdiff_t newsize) { XSTRING (string)->size = newsize; } -LISP_INLINE void +INLINE void STRING_COPYIN (Lisp_Object string, ptrdiff_t index, char const *new, ptrdiff_t count) { @@ -1164,32 +1161,32 @@ /* Conveniences for dealing with Lisp arrays. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object AREF (Lisp_Object array, ptrdiff_t idx) { return XVECTOR (array)->contents[idx]; } -LISP_INLINE Lisp_Object * +INLINE Lisp_Object * aref_addr (Lisp_Object array, ptrdiff_t idx) { return & XVECTOR (array)->contents[idx]; } -LISP_INLINE ptrdiff_t +INLINE ptrdiff_t ASIZE (Lisp_Object array) { return XVECTOR (array)->header.size; } -LISP_INLINE void +INLINE void ASET (Lisp_Object array, ptrdiff_t idx, Lisp_Object val) { eassert (0 <= idx && idx < ASIZE (array)); XVECTOR (array)->contents[idx] = val; } -LISP_INLINE void +INLINE void gc_aset (Lisp_Object array, ptrdiff_t idx, Lisp_Object val) { /* Like ASET, but also can be used in the garbage collector: @@ -1296,7 +1293,7 @@ Lisp_Object contents[FLEXIBLE_ARRAY_MEMBER]; }; -LISP_INLINE Lisp_Object +INLINE Lisp_Object CHAR_TABLE_REF_ASCII (Lisp_Object ct, ptrdiff_t idx) { struct Lisp_Char_Table *tbl = NULL; @@ -1316,7 +1313,7 @@ /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII characters. Do not check validity of CT. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object CHAR_TABLE_REF (Lisp_Object ct, int idx) { return (ASCII_CHAR_P (idx) @@ -1326,7 +1323,7 @@ /* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and 8-bit European characters. Do not check validity of CT. */ -LISP_INLINE void +INLINE void CHAR_TABLE_SET (Lisp_Object ct, int idx, Lisp_Object val) { if (ASCII_CHAR_P (idx) && SUB_CHAR_TABLE_P (XCHAR_TABLE (ct)->ascii)) @@ -1371,7 +1368,7 @@ /* Return the number of "extra" slots in the char table CT. */ -LISP_INLINE int +INLINE int CHAR_TABLE_EXTRA_SLOTS (struct Lisp_Char_Table *ct) { return ((ct->header.size & PSEUDOVECTOR_SIZE_MASK) @@ -1450,19 +1447,19 @@ LISP_MACRO_DEFUN (SYMBOL_VAL, Lisp_Object, (struct Lisp_Symbol *sym), (sym)) -LISP_INLINE struct Lisp_Symbol * +INLINE struct Lisp_Symbol * SYMBOL_ALIAS (struct Lisp_Symbol *sym) { eassert (sym->redirect == SYMBOL_VARALIAS); return sym->val.alias; } -LISP_INLINE struct Lisp_Buffer_Local_Value * +INLINE struct Lisp_Buffer_Local_Value * SYMBOL_BLV (struct Lisp_Symbol *sym) { eassert (sym->redirect == SYMBOL_LOCALIZED); return sym->val.blv; } -LISP_INLINE union Lisp_Fwd * +INLINE union Lisp_Fwd * SYMBOL_FWD (struct Lisp_Symbol *sym) { eassert (sym->redirect == SYMBOL_FORWARDED); @@ -1472,26 +1469,26 @@ LISP_MACRO_DEFUN_VOID (SET_SYMBOL_VAL, (struct Lisp_Symbol *sym, Lisp_Object v), (sym, v)) -LISP_INLINE void +INLINE void SET_SYMBOL_ALIAS (struct Lisp_Symbol *sym, struct Lisp_Symbol *v) { eassert (sym->redirect == SYMBOL_VARALIAS); sym->val.alias = v; } -LISP_INLINE void +INLINE void SET_SYMBOL_BLV (struct Lisp_Symbol *sym, struct Lisp_Buffer_Local_Value *v) { eassert (sym->redirect == SYMBOL_LOCALIZED); sym->val.blv = v; } -LISP_INLINE void +INLINE void SET_SYMBOL_FWD (struct Lisp_Symbol *sym, union Lisp_Fwd *v) { eassert (sym->redirect == SYMBOL_FORWARDED); sym->val.fwd = v; } -LISP_INLINE Lisp_Object +INLINE Lisp_Object SYMBOL_NAME (Lisp_Object sym) { return XSYMBOL (sym)->name; @@ -1499,7 +1496,7 @@ /* Value is true if SYM is an interned symbol. */ -LISP_INLINE bool +INLINE bool SYMBOL_INTERNED_P (Lisp_Object sym) { return XSYMBOL (sym)->interned != SYMBOL_UNINTERNED; @@ -1507,7 +1504,7 @@ /* Value is true if SYM is interned in initial_obarray. */ -LISP_INLINE bool +INLINE bool SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (Lisp_Object sym) { return XSYMBOL (sym)->interned == SYMBOL_INTERNED_IN_INITIAL_OBARRAY; @@ -1603,7 +1600,7 @@ }; -LISP_INLINE struct Lisp_Hash_Table * +INLINE struct Lisp_Hash_Table * XHASH_TABLE (Lisp_Object a) { return XUNTAG (a, Lisp_Vectorlike); @@ -1612,21 +1609,21 @@ #define XSET_HASH_TABLE(VAR, PTR) \ (XSETPSEUDOVECTOR (VAR, PTR, PVEC_HASH_TABLE)) -LISP_INLINE bool +INLINE bool HASH_TABLE_P (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_HASH_TABLE); } /* Value is the key part of entry IDX in hash table H. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object HASH_KEY (struct Lisp_Hash_Table *h, ptrdiff_t idx) { return AREF (h->key_and_value, 2 * idx); } /* Value is the value part of entry IDX in hash table H. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object HASH_VALUE (struct Lisp_Hash_Table *h, ptrdiff_t idx) { return AREF (h->key_and_value, 2 * idx + 1); @@ -1634,14 +1631,14 @@ /* Value is the index of the next entry following the one at IDX in hash table H. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object HASH_NEXT (struct Lisp_Hash_Table *h, ptrdiff_t idx) { return AREF (h->next, idx); } /* Value is the hash code computed for entry IDX in hash table H. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object HASH_HASH (struct Lisp_Hash_Table *h, ptrdiff_t idx) { return AREF (h->hash, idx); @@ -1649,14 +1646,14 @@ /* Value is the index of the element in hash table H that is the start of the collision list at index IDX in the index vector of H. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object HASH_INDEX (struct Lisp_Hash_Table *h, ptrdiff_t idx) { return AREF (h->index, idx); } /* Value is the size of hash table H. */ -LISP_INLINE ptrdiff_t +INLINE ptrdiff_t HASH_TABLE_SIZE (struct Lisp_Hash_Table *h) { return ASIZE (h->next); @@ -1679,7 +1676,7 @@ /* Combine two integers X and Y for hashing. The result might not fit into a Lisp integer. */ -LISP_INLINE EMACS_UINT +INLINE EMACS_UINT sxhash_combine (EMACS_UINT x, EMACS_UINT y) { return (x << 4) + (x >> (BITS_PER_EMACS_INT - 4)) + y; @@ -1687,7 +1684,7 @@ /* Hash X, returning a value that fits into a fixnum. */ -LISP_INLINE EMACS_UINT +INLINE EMACS_UINT SXHASH_REDUCE (EMACS_UINT x) { return (x ^ x >> (BITS_PER_EMACS_INT - FIXNUM_BITS)) & INTMASK; @@ -1857,7 +1854,7 @@ }; /* Return the type of V's Nth saved value. */ -LISP_INLINE int +INLINE int save_type (struct Lisp_Save_Value *v, int n) { eassert (0 <= n && n < SAVE_VALUE_SLOTS); @@ -1866,19 +1863,19 @@ /* Get and set the Nth saved pointer. */ -LISP_INLINE void * +INLINE void * XSAVE_POINTER (Lisp_Object obj, int n) { eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_POINTER); return XSAVE_VALUE (obj)->data[n].pointer; } -LISP_INLINE void +INLINE void set_save_pointer (Lisp_Object obj, int n, void *val) { eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_POINTER); XSAVE_VALUE (obj)->data[n].pointer = val; } -LISP_INLINE voidfuncptr +INLINE voidfuncptr XSAVE_FUNCPOINTER (Lisp_Object obj, int n) { eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_FUNCPOINTER); @@ -1887,13 +1884,13 @@ /* Likewise for the saved integer. */ -LISP_INLINE ptrdiff_t +INLINE ptrdiff_t XSAVE_INTEGER (Lisp_Object obj, int n) { eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_INTEGER); return XSAVE_VALUE (obj)->data[n].integer; } -LISP_INLINE void +INLINE void set_save_integer (Lisp_Object obj, int n, ptrdiff_t val) { eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_INTEGER); @@ -1902,7 +1899,7 @@ /* Extract Nth saved object. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object XSAVE_OBJECT (Lisp_Object obj, int n) { eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_OBJECT); @@ -1930,40 +1927,40 @@ struct Lisp_Save_Value u_save_value; }; -LISP_INLINE union Lisp_Misc * +INLINE union Lisp_Misc * XMISC (Lisp_Object a) { return XUNTAG (a, Lisp_Misc); } -LISP_INLINE struct Lisp_Misc_Any * +INLINE struct Lisp_Misc_Any * XMISCANY (Lisp_Object a) { eassert (MISCP (a)); return & XMISC (a)->u_any; } -LISP_INLINE enum Lisp_Misc_Type +INLINE enum Lisp_Misc_Type XMISCTYPE (Lisp_Object a) { return XMISCANY (a)->type; } -LISP_INLINE struct Lisp_Marker * +INLINE struct Lisp_Marker * XMARKER (Lisp_Object a) { eassert (MARKERP (a)); return & XMISC (a)->u_marker; } -LISP_INLINE struct Lisp_Overlay * +INLINE struct Lisp_Overlay * XOVERLAY (Lisp_Object a) { eassert (OVERLAYP (a)); return & XMISC (a)->u_overlay; } -LISP_INLINE struct Lisp_Save_Value * +INLINE struct Lisp_Save_Value * XSAVE_VALUE (Lisp_Object a) { eassert (SAVE_VALUEP (a)); @@ -2077,13 +2074,13 @@ struct Lisp_Kboard_Objfwd u_kboard_objfwd; }; -LISP_INLINE enum Lisp_Fwd_Type +INLINE enum Lisp_Fwd_Type XFWDTYPE (union Lisp_Fwd *a) { return a->u_intfwd.type; } -LISP_INLINE struct Lisp_Buffer_Objfwd * +INLINE struct Lisp_Buffer_Objfwd * XBUFFER_OBJFWD (union Lisp_Fwd *a) { eassert (BUFFER_OBJFWDP (a)); @@ -2100,7 +2097,7 @@ } u; }; -LISP_INLINE double +INLINE double XFLOAT_DATA (Lisp_Object f) { return XFLOAT (f)->u.data; @@ -2164,18 +2161,18 @@ LISP_MACRO_DEFUN (NILP, bool, (Lisp_Object x), (x)) -LISP_INLINE bool +INLINE bool NUMBERP (Lisp_Object x) { return INTEGERP (x) || FLOATP (x); } -LISP_INLINE bool +INLINE bool NATNUMP (Lisp_Object x) { return INTEGERP (x) && 0 <= XINT (x); } -LISP_INLINE bool +INLINE bool RANGED_INTEGERP (intmax_t lo, Lisp_Object x, intmax_t hi) { return INTEGERP (x) && lo <= XINT (x) && XINT (x) <= hi; @@ -2194,40 +2191,40 @@ LISP_MACRO_DEFUN (VECTORLIKEP, bool, (Lisp_Object x), (x)) LISP_MACRO_DEFUN (MARKERP, bool, (Lisp_Object x), (x)) -LISP_INLINE bool +INLINE bool STRINGP (Lisp_Object x) { return XTYPE (x) == Lisp_String; } -LISP_INLINE bool +INLINE bool VECTORP (Lisp_Object x) { return VECTORLIKEP (x) && ! (ASIZE (x) & PSEUDOVECTOR_FLAG); } -LISP_INLINE bool +INLINE bool OVERLAYP (Lisp_Object x) { return MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Overlay; } -LISP_INLINE bool +INLINE bool SAVE_VALUEP (Lisp_Object x) { return MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Save_Value; } -LISP_INLINE bool +INLINE bool AUTOLOADP (Lisp_Object x) { return CONSP (x) && EQ (Qautoload, XCAR (x)); } -LISP_INLINE bool +INLINE bool BUFFER_OBJFWDP (union Lisp_Fwd *a) { return XFWDTYPE (a) == Lisp_Fwd_Buffer_Obj; } -LISP_INLINE bool +INLINE bool PSEUDOVECTOR_TYPEP (struct vectorlike_header *a, int code) { return ((a->size & (PSEUDOVECTOR_FLAG | PVEC_TYPE_MASK)) @@ -2235,7 +2232,7 @@ } /* True if A is a pseudovector whose code is CODE. */ -LISP_INLINE bool +INLINE bool PSEUDOVECTORP (Lisp_Object a, int code) { if (! VECTORLIKEP (a)) @@ -2251,87 +2248,87 @@ /* Test for specific pseudovector types. */ -LISP_INLINE bool +INLINE bool WINDOW_CONFIGURATIONP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_WINDOW_CONFIGURATION); } -LISP_INLINE bool +INLINE bool PROCESSP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_PROCESS); } -LISP_INLINE bool +INLINE bool WINDOWP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_WINDOW); } -LISP_INLINE bool +INLINE bool TERMINALP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_TERMINAL); } -LISP_INLINE bool +INLINE bool SUBRP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_SUBR); } -LISP_INLINE bool +INLINE bool COMPILEDP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_COMPILED); } -LISP_INLINE bool +INLINE bool BUFFERP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_BUFFER); } -LISP_INLINE bool +INLINE bool CHAR_TABLE_P (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_CHAR_TABLE); } -LISP_INLINE bool +INLINE bool SUB_CHAR_TABLE_P (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_SUB_CHAR_TABLE); } -LISP_INLINE bool +INLINE bool BOOL_VECTOR_P (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_BOOL_VECTOR); } -LISP_INLINE bool +INLINE bool FRAMEP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_FRAME); } /* Test for image (image . spec) */ -LISP_INLINE bool +INLINE bool IMAGEP (Lisp_Object x) { return CONSP (x) && EQ (XCAR (x), Qimage); } /* Array types. */ -LISP_INLINE bool +INLINE bool ARRAYP (Lisp_Object x) { return VECTORP (x) || STRINGP (x) || CHAR_TABLE_P (x) || BOOL_VECTOR_P (x); } -LISP_INLINE void +INLINE void CHECK_LIST (Lisp_Object x) { CHECK_TYPE (CONSP (x) || NILP (x), Qlistp, x); @@ -2341,52 +2338,52 @@ LISP_MACRO_DEFUN_VOID (CHECK_SYMBOL, (Lisp_Object x), (x)) LISP_MACRO_DEFUN_VOID (CHECK_NUMBER, (Lisp_Object x), (x)) -LISP_INLINE void +INLINE void CHECK_STRING (Lisp_Object x) { CHECK_TYPE (STRINGP (x), Qstringp, x); } -LISP_INLINE void +INLINE void CHECK_STRING_CAR (Lisp_Object x) { CHECK_TYPE (STRINGP (XCAR (x)), Qstringp, XCAR (x)); } -LISP_INLINE void +INLINE void CHECK_CONS (Lisp_Object x) { CHECK_TYPE (CONSP (x), Qconsp, x); } -LISP_INLINE void +INLINE void CHECK_VECTOR (Lisp_Object x) { CHECK_TYPE (VECTORP (x), Qvectorp, x); } -LISP_INLINE void +INLINE void CHECK_VECTOR_OR_STRING (Lisp_Object x) { CHECK_TYPE (VECTORP (x) || STRINGP (x), Qarrayp, x); } -LISP_INLINE void +INLINE void CHECK_ARRAY (Lisp_Object x, Lisp_Object Qxxxp) { CHECK_TYPE (ARRAYP (x), Qxxxp, x); } -LISP_INLINE void +INLINE void CHECK_BUFFER (Lisp_Object x) { CHECK_TYPE (BUFFERP (x), Qbufferp, x); } -LISP_INLINE void +INLINE void CHECK_WINDOW (Lisp_Object x) { CHECK_TYPE (WINDOWP (x), Qwindowp, x); } -LISP_INLINE void +INLINE void CHECK_PROCESS (Lisp_Object x) { CHECK_TYPE (PROCESSP (x), Qprocessp, x); } -LISP_INLINE void +INLINE void CHECK_NATNUM (Lisp_Object x) { CHECK_TYPE (NATNUMP (x), Qwholenump, x); @@ -2415,13 +2412,13 @@ do { if (MARKERP ((x))) XSETFASTINT (x, marker_position (x)); \ else CHECK_TYPE (INTEGERP (x), Qinteger_or_marker_p, x); } while (0) -LISP_INLINE double +INLINE double XFLOATINT (Lisp_Object n) { return extract_float (n); } -LISP_INLINE void +INLINE void CHECK_NUMBER_OR_FLOAT (Lisp_Object x) { CHECK_TYPE (FLOATP (x) || INTEGERP (x), Qnumberp, x); @@ -2433,7 +2430,7 @@ /* Since we can't assign directly to the CAR or CDR fields of a cons cell, use these when checking that those fields contain numbers. */ -LISP_INLINE void +INLINE void CHECK_NUMBER_CAR (Lisp_Object x) { Lisp_Object tmp = XCAR (x); @@ -2441,7 +2438,7 @@ XSETCAR (x, tmp); } -LISP_INLINE void +INLINE void CHECK_NUMBER_CDR (Lisp_Object x) { Lisp_Object tmp = XCDR (x); @@ -2519,7 +2516,7 @@ Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object) /* True if OBJ is a Lisp function. */ -LISP_INLINE bool +INLINE bool FUNCTIONP (Lisp_Object obj) { return functionp (obj); @@ -2686,7 +2683,7 @@ extern union specbinding *specpdl_ptr; extern ptrdiff_t specpdl_size; -LISP_INLINE ptrdiff_t +INLINE ptrdiff_t SPECPDL_INDEX (void) { return specpdl_ptr - specpdl; @@ -3014,7 +3011,7 @@ /* Copy COUNT Lisp_Objects from ARGS to contents of V starting from OFFSET. */ -LISP_INLINE void +INLINE void vcopy (Lisp_Object v, ptrdiff_t offset, Lisp_Object *args, ptrdiff_t count) { eassert (0 <= offset && 0 <= count && offset + count <= ASIZE (v)); @@ -3023,13 +3020,13 @@ /* Functions to modify hash tables. */ -LISP_INLINE void +INLINE void set_hash_key_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) { gc_aset (h->key_and_value, 2 * idx, val); } -LISP_INLINE void +INLINE void set_hash_value_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) { gc_aset (h->key_and_value, 2 * idx + 1, val); @@ -3038,19 +3035,19 @@ /* Use these functions to set Lisp_Object or pointer slots of struct Lisp_Symbol. */ -LISP_INLINE void +INLINE void set_symbol_function (Lisp_Object sym, Lisp_Object function) { XSYMBOL (sym)->function = function; } -LISP_INLINE void +INLINE void set_symbol_plist (Lisp_Object sym, Lisp_Object plist) { XSYMBOL (sym)->plist = plist; } -LISP_INLINE void +INLINE void set_symbol_next (Lisp_Object sym, struct Lisp_Symbol *next) { XSYMBOL (sym)->next = next; @@ -3058,7 +3055,7 @@ /* Buffer-local (also frame-local) variable access functions. */ -LISP_INLINE int +INLINE int blv_found (struct Lisp_Buffer_Local_Value *blv) { eassert (blv->found == !EQ (blv->defcell, blv->valcell)); @@ -3067,7 +3064,7 @@ /* Set overlay's property list. */ -LISP_INLINE void +INLINE void set_overlay_plist (Lisp_Object overlay, Lisp_Object plist) { XOVERLAY (overlay)->plist = plist; @@ -3075,7 +3072,7 @@ /* Get text properties of S. */ -LISP_INLINE INTERVAL +INLINE INTERVAL string_intervals (Lisp_Object s) { return XSTRING (s)->intervals; @@ -3083,7 +3080,7 @@ /* Set text properties of S to I. */ -LISP_INLINE void +INLINE void set_string_intervals (Lisp_Object s, INTERVAL i) { XSTRING (s)->intervals = i; @@ -3092,12 +3089,12 @@ /* Set a Lisp slot in TABLE to VAL. Most code should use this instead of setting slots directly. */ -LISP_INLINE void +INLINE void set_char_table_defalt (Lisp_Object table, Lisp_Object val) { XCHAR_TABLE (table)->defalt = val; } -LISP_INLINE void +INLINE void set_char_table_purpose (Lisp_Object table, Lisp_Object val) { XCHAR_TABLE (table)->purpose = val; @@ -3105,21 +3102,21 @@ /* Set different slots in (sub)character tables. */ -LISP_INLINE void +INLINE void set_char_table_extras (Lisp_Object table, ptrdiff_t idx, Lisp_Object val) { eassert (0 <= idx && idx < CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (table))); XCHAR_TABLE (table)->extras[idx] = val; } -LISP_INLINE void +INLINE void set_char_table_contents (Lisp_Object table, ptrdiff_t idx, Lisp_Object val) { eassert (0 <= idx && idx < (1 << CHARTAB_SIZE_BITS_0)); XCHAR_TABLE (table)->contents[idx] = val; } -LISP_INLINE void +INLINE void set_sub_char_table_contents (Lisp_Object table, ptrdiff_t idx, Lisp_Object val) { XSUB_CHAR_TABLE (table)->contents[idx] = val; @@ -3436,19 +3433,19 @@ /* Build a frequently used 2/3/4-integer lists. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object list2i (EMACS_INT x, EMACS_INT y) { return list2 (make_number (x), make_number (y)); } -LISP_INLINE Lisp_Object +INLINE Lisp_Object list3i (EMACS_INT x, EMACS_INT y, EMACS_INT w) { return list3 (make_number (x), make_number (y), make_number (w)); } -LISP_INLINE Lisp_Object +INLINE Lisp_Object list4i (EMACS_INT x, EMACS_INT y, EMACS_INT w, EMACS_INT h) { return list4 (make_number (x), make_number (y), @@ -3463,7 +3460,7 @@ /* Make unibyte string from C string when the length isn't known. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object build_unibyte_string (const char *str) { return make_unibyte_string (str, strlen (str)); @@ -3481,7 +3478,7 @@ /* Make a string allocated in pure space, use STR as string data. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object build_pure_c_string (const char *str) { return make_pure_c_string (str, strlen (str)); @@ -3490,7 +3487,7 @@ /* Make a string from the data at STR, treating it as multibyte if the data warrants. */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object build_string (const char *str) { return make_string (str, strlen (str)); @@ -3511,7 +3508,7 @@ ASET (v, 1, Ffunction_can_gc ()); ASET (v, 2, obj1); */ -LISP_INLINE Lisp_Object +INLINE Lisp_Object make_uninit_vector (ptrdiff_t size) { Lisp_Object v; @@ -3558,7 +3555,7 @@ #ifdef GC_CHECK_CONS_LIST extern void check_cons_list (void); #else -LISP_INLINE void (check_cons_list) (void) { lisp_h_check_cons_list (); } +INLINE void (check_cons_list) (void) { lisp_h_check_cons_list (); } #endif #ifdef REL_ALLOC @@ -3626,7 +3623,7 @@ extern Lisp_Object intern_1 (const char *, ptrdiff_t); extern Lisp_Object intern_c_string_1 (const char *, ptrdiff_t); extern Lisp_Object oblookup (Lisp_Object, const char *, ptrdiff_t, ptrdiff_t); -LISP_INLINE void +INLINE void LOADHIST_ATTACH (Lisp_Object x) { if (initialized) @@ -3642,13 +3639,13 @@ extern void init_lread (void); extern void syms_of_lread (void); -LISP_INLINE Lisp_Object +INLINE Lisp_Object intern (const char *str) { return intern_1 (str, strlen (str)); } -LISP_INLINE Lisp_Object +INLINE Lisp_Object intern_c_string (const char *str) { return intern_c_string_1 (str, strlen (str)); @@ -3927,9 +3924,9 @@ void synchronize_system_messages_locale (void); void synchronize_system_time_locale (void); #else -LISP_INLINE void fixup_locale (void) {} -LISP_INLINE void synchronize_system_messages_locale (void) {} -LISP_INLINE void synchronize_system_time_locale (void) {} +INLINE void fixup_locale (void) {} +INLINE void synchronize_system_messages_locale (void) {} +INLINE void synchronize_system_time_locale (void) {} #endif extern void shut_down_emacs (int, Lisp_Object); @@ -4308,7 +4305,7 @@ /* Check whether it's time for GC, and run it if so. */ -LISP_INLINE void +INLINE void maybe_gc (void) { if ((consing_since_gc > gc_cons_threshold @@ -4318,7 +4315,7 @@ Fgarbage_collect (); } -LISP_INLINE bool +INLINE bool functionp (Lisp_Object object) { if (SYMBOLP (object) && !NILP (Ffboundp (object))) === modified file 'src/process.c' --- src/process.c 2013-08-29 16:36:54 +0000 +++ src/process.c 2013-09-20 15:34:36 +0000 @@ -21,8 +21,6 @@ #include -#define PROCESS_INLINE EXTERN_INLINE - #include #include #include /* Some typedefs are used in sys/file.h. */ === modified file 'src/process.h' --- src/process.h 2013-08-23 17:57:07 +0000 +++ src/process.h 2013-09-20 15:34:36 +0000 @@ -27,9 +27,6 @@ #endif INLINE_HEADER_BEGIN -#ifndef PROCESS_INLINE -# define PROCESS_INLINE INLINE -#endif /* Bound on number of file descriptors opened on behalf of a process, that need to be closed. */ @@ -179,14 +176,14 @@ /* Most code should use these functions to set Lisp fields in struct process. */ -PROCESS_INLINE void +INLINE void pset_childp (struct Lisp_Process *p, Lisp_Object val) { p->childp = val; } #ifdef HAVE_GNUTLS -PROCESS_INLINE void +INLINE void pset_gnutls_cred_type (struct Lisp_Process *p, Lisp_Object val) { p->gnutls_cred_type = val; === modified file 'src/syntax.c' --- src/syntax.c 2013-08-26 05:20:59 +0000 +++ src/syntax.c 2013-09-20 15:34:36 +0000 @@ -20,8 +20,6 @@ #include -#define SYNTAX_INLINE EXTERN_INLINE - #include #include "lisp.h" === modified file 'src/syntax.h' --- src/syntax.h 2013-07-10 16:11:09 +0000 +++ src/syntax.h 2013-09-20 15:34:36 +0000 @@ -19,9 +19,6 @@ along with GNU Emacs. If not, see . */ INLINE_HEADER_BEGIN -#ifndef SYNTAX_INLINE -# define SYNTAX_INLINE INLINE -#endif extern void update_syntax_table (ptrdiff_t, EMACS_INT, bool, Lisp_Object); @@ -89,7 +86,7 @@ in syntax table TABLE, or from globally kept data (gl_state). Does inheritance. */ -SYNTAX_INLINE Lisp_Object +INLINE Lisp_Object SYNTAX_ENTRY (int c) { #ifdef SYNTAX_ENTRY_VIA_PROPERTY @@ -104,14 +101,14 @@ /* Extract the information from the entry for character C in the current syntax table. */ -SYNTAX_INLINE int +INLINE int SYNTAX_WITH_FLAGS (int c) { Lisp_Object ent = SYNTAX_ENTRY (c); return CONSP (ent) ? XINT (XCAR (ent)) : Swhitespace; } -SYNTAX_INLINE enum syntaxcode +INLINE enum syntaxcode SYNTAX (int c) { return SYNTAX_WITH_FLAGS (c) & 0xff; @@ -137,7 +134,7 @@ The value is meant for use in code that does nothing when parse_sexp_lookup_properties is 0, so return 0 in that case, for speed. */ -SYNTAX_INLINE ptrdiff_t +INLINE ptrdiff_t SYNTAX_TABLE_BYTE_TO_CHAR (ptrdiff_t bytepos) { return (! parse_sexp_lookup_properties @@ -157,7 +154,7 @@ /* Make syntax table state (gl_state) good for CHARPOS, assuming it is currently good for a position before CHARPOS. */ -SYNTAX_INLINE void +INLINE void UPDATE_SYNTAX_TABLE_FORWARD (ptrdiff_t charpos) { if (parse_sexp_lookup_properties && charpos >= gl_state.e_property) @@ -167,7 +164,7 @@ /* Make syntax table state (gl_state) good for CHARPOS, assuming it is currently good for a position after CHARPOS. */ -SYNTAX_INLINE void +INLINE void UPDATE_SYNTAX_TABLE_BACKWARD (ptrdiff_t charpos) { if (parse_sexp_lookup_properties && charpos < gl_state.b_property) @@ -176,7 +173,7 @@ /* Make syntax table good for CHARPOS. */ -SYNTAX_INLINE void +INLINE void UPDATE_SYNTAX_TABLE (ptrdiff_t charpos) { UPDATE_SYNTAX_TABLE_BACKWARD (charpos); @@ -185,7 +182,7 @@ /* Set up the buffer-global syntax table. */ -SYNTAX_INLINE void +INLINE void SETUP_BUFFER_SYNTAX_TABLE (void) { gl_state.use_global = 0; === modified file 'src/sysdep.c' --- src/sysdep.c 2013-08-27 19:36:28 +0000 +++ src/sysdep.c 2013-09-20 15:34:36 +0000 @@ -19,8 +19,6 @@ #include -#define SYSTIME_INLINE EXTERN_INLINE - #include #include "sysstdio.h" #ifdef HAVE_PWD_H === modified file 'src/systime.h' --- src/systime.h 2013-08-27 18:47:55 +0000 +++ src/systime.h 2013-09-20 15:34:36 +0000 @@ -22,9 +22,6 @@ #include INLINE_HEADER_BEGIN -#ifndef SYSTIME_INLINE -# define SYSTIME_INLINE INLINE -#endif #ifdef emacs # ifdef HAVE_X_WINDOWS @@ -54,7 +51,7 @@ should be an absolute time since the epoch and B a nonnegative offset. */ /* Return an invalid timespec. */ -SYSTIME_INLINE struct timespec +INLINE struct timespec invalid_timespec (void) { return make_timespec (0, -1); @@ -63,14 +60,14 @@ /* Return 1 if TIME is a valid timespec. This currently doesn't worry about whether tv_nsec is less than TIMESPEC_RESOLUTION; leap seconds might cause a problem if it did. */ -SYSTIME_INLINE int +INLINE int timespec_valid_p (struct timespec t) { return t.tv_nsec >= 0; } /* Return current system time. */ -SYSTIME_INLINE struct timespec +INLINE struct timespec current_timespec (void) { struct timespec r; === modified file 'src/termhooks.h' --- src/termhooks.h 2013-09-11 13:56:46 +0000 +++ src/termhooks.h 2013-09-20 15:34:36 +0000 @@ -26,9 +26,6 @@ #include "systime.h" /* for Time */ INLINE_HEADER_BEGIN -#ifndef TERMHOOKS_INLINE -# define TERMHOOKS_INLINE INLINE -#endif enum scroll_bar_part { scroll_bar_nowhere = -1, @@ -608,12 +605,12 @@ /* Most code should use these functions to set Lisp fields in struct terminal. */ -TERMHOOKS_INLINE void +INLINE void tset_charset_list (struct terminal *t, Lisp_Object val) { t->charset_list = val; } -TERMHOOKS_INLINE void +INLINE void tset_selection_alist (struct terminal *t, Lisp_Object val) { t->Vselection_alist = val; === modified file 'src/terminal.c' --- src/terminal.c 2013-07-31 06:05:05 +0000 +++ src/terminal.c 2013-09-20 15:34:36 +0000 @@ -18,8 +18,6 @@ #include -#define TERMHOOKS_INLINE EXTERN_INLINE - #include #include "lisp.h" === modified file 'src/window.c' --- src/window.c 2013-09-11 08:56:33 +0000 +++ src/window.c 2013-09-20 15:34:36 +0000 @@ -20,8 +20,6 @@ #include -#define WINDOW_INLINE EXTERN_INLINE - #include #include "lisp.h" === modified file 'src/window.h' --- src/window.h 2013-09-11 08:56:33 +0000 +++ src/window.h 2013-09-20 15:34:36 +0000 @@ -23,9 +23,6 @@ #include "dispextern.h" INLINE_HEADER_BEGIN -#ifndef WINDOW_INLINE -# define WINDOW_INLINE INLINE -#endif /* Windows are allocated as if they were vectors, but then the Lisp data type is changed to Lisp_Window. They are garbage @@ -349,37 +346,37 @@ /* Most code should use these functions to set Lisp fields in struct window. */ -WINDOW_INLINE void +INLINE void wset_frame (struct window *w, Lisp_Object val) { w->frame = val; } -WINDOW_INLINE void +INLINE void wset_next (struct window *w, Lisp_Object val) { w->next = val; } -WINDOW_INLINE void +INLINE void wset_prev (struct window *w, Lisp_Object val) { w->prev = val; } -WINDOW_INLINE void +INLINE void wset_redisplay_end_trigger (struct window *w, Lisp_Object val) { w->redisplay_end_trigger = val; } -WINDOW_INLINE void +INLINE void wset_vertical_scroll_bar (struct window *w, Lisp_Object val) { w->vertical_scroll_bar = val; } -WINDOW_INLINE void +INLINE void wset_prev_buffers (struct window *w, Lisp_Object val) { w->prev_buffers = val; } -WINDOW_INLINE void +INLINE void wset_next_buffers (struct window *w, Lisp_Object val) { w->next_buffers = val; @@ -966,7 +963,7 @@ window update, so the position is the future output cursor position for currently updated window W. */ -WINDOW_INLINE void +INLINE void output_cursor_to (struct window *w, int vpos, int hpos, int y, int x) { eassert (w); ------------------------------------------------------------ revno: 114409 committer: Xue Fuqiao branch nick: trunk timestamp: Fri 2013-09-20 18:22:20 +0800 message: Checked TUTORIAL.cn. diff: === modified file 'admin/FOR-RELEASE' --- admin/FOR-RELEASE 2013-09-20 05:52:34 +0000 +++ admin/FOR-RELEASE 2013-09-20 10:22:20 +0000 @@ -137,7 +137,7 @@ ---------------------------------- TUTORIAL cyd TUTORIAL.bg ogi -TUTORIAL.cn +TUTORIAL.cn xfq TUTORIAL.cs TUTORIAL.de wl TUTORIAL.eo @@ -145,7 +145,7 @@ TUTORIAL.fr TUTORIAL.he eliz TUTORIAL.it -TUTORIAL.ja +TUTORIAL.ja TUTORIAL.ko TUTORIAL.nl Pieter Schoenmakers TUTORIAL.pl ------------------------------------------------------------ revno: 114408 committer: Glenn Morris branch nick: trunk timestamp: Fri 2013-09-20 06:17:44 -0400 message: Auto-commit of generated files. diff: === modified file 'autogen/config.in' --- autogen/config.in 2013-09-17 10:17:44 +0000 +++ autogen/config.in 2013-09-20 10:17:44 +0000 @@ -127,6 +127,20 @@ */ #undef FIRST_PTY_LETTER +/* Without the following workaround, Emacs runs slowly on OS X 10.8. + The workaround disables some useful run-time checking, so it + should be conditional to the platforms with the performance bug. + Perhaps Apple will fix this some day; also see m4/extern-inline.m4. */ +#if defined __APPLE__ && defined __GNUC__ +# ifndef _DONT_USE_CTYPE_INLINE_ +# define _DONT_USE_CTYPE_INLINE_ +# endif +# ifndef _FORTIFY_SOURCE +# define _FORTIFY_SOURCE 0 +# endif +#endif + + /* Enable compile-time and run-time bounds-checking, and some warnings, without upsetting glibc 2.15+. */ #if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__ @@ -1642,20 +1656,28 @@ 'reference to static identifier "f" in extern inline function'. This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. - Suppress the use of extern inline on Apple's platforms, as Libc at least - through Libc-825.26 (2013-04-09) is incompatible with it; see, e.g., + Suppress the use of extern inline on problematic Apple configurations, as + Libc at least through Libc-825.26 (2013-04-09) mishandles it; see, e.g., . Perhaps Apple will fix this some day. */ +#if (defined __APPLE__ \ + && ((! defined _DONT_USE_CTYPE_INLINE_ \ + && (defined __GNUC__ || defined __cplusplus)) \ + || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ + && defined __GNUC__ && ! defined __cplusplus))) +# define _GL_EXTERN_INLINE_APPLE_BUG +#endif #if ((__GNUC__ \ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ : (199901L <= __STDC_VERSION__ \ && !defined __HP_cc \ && !(defined __SUNPRO_C && __STDC__))) \ - && !defined __APPLE__) + && !defined _GL_EXTERN_INLINE_APPLE_BUG) # define _GL_INLINE inline # define _GL_EXTERN_INLINE extern inline +# define _GL_EXTERN_INLINE_IN_USE #elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ - && !defined __APPLE__) + && !defined _GL_EXTERN_INLINE_APPLE_BUG) # if __GNUC_GNU_INLINE__ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ # define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) @@ -1663,6 +1685,7 @@ # define _GL_INLINE extern inline # endif # define _GL_EXTERN_INLINE extern +# define _GL_EXTERN_INLINE_IN_USE #else # define _GL_INLINE static _GL_UNUSED # define _GL_EXTERN_INLINE static _GL_UNUSED === modified file 'autogen/configure' --- autogen/configure 2013-09-19 10:17:39 +0000 +++ autogen/configure 2013-09-20 10:17:44 +0000 @@ -17561,6 +17561,8 @@ + + # Configure gnulib. Although this does not affect CFLAGS or LIBS permanently. # it temporarily reverts them to their pre-pkg-config values, # because gnulib needs to work with both src (which uses the ------------------------------------------------------------ revno: 114407 committer: Xue Fuqiao branch nick: trunk timestamp: Fri 2013-09-20 17:19:56 +0800 message: * INSTALL: New homepage of libtiff. diff: === modified file 'ChangeLog' --- ChangeLog 2013-09-20 03:41:37 +0000 +++ ChangeLog 2013-09-20 09:19:56 +0000 @@ -1,3 +1,7 @@ +2013-09-20 Xue Fuqiao + + * INSTALL: New homepage of libtiff. + 2013-09-20 Paul Eggert Work around performance bug on OS X 10.8 and earlier. === modified file 'INSTALL' --- INSTALL 2013-07-29 11:35:16 +0000 +++ INSTALL 2013-09-20 09:19:56 +0000 @@ -176,7 +176,7 @@ . libpng for PNG: http://www.libpng.org/ . libz (for PNG): http://www.zlib.net/ . libjpeg for JPEG: http://www.ijg.org/ - . libtiff for TIFF: http://www.libtiff.org/ + . libtiff for TIFF: http://www.remotesensing.org/libtiff/ . libgif for GIF: http://sourceforge.net/projects/giflib/ Emacs will configure itself to build with these libraries if the ------------------------------------------------------------ revno: 114406 committer: Eli Zaretskii branch nick: trunk timestamp: Fri 2013-09-20 10:21:20 +0300 message: Avoid replacing 'struct timeval' and compiling lib/gettimeofday.c on MinGW. nt/mingw-cfg.site (gl_cv_sys_struct_timeval_tv_sec): Set to "yes" to avoid gnulib replacement of 'struct timeval' and the resulting compilation of lib/gettimeofday.c with incompatible version of gettimeofday. Related discussions on emacs-devel: http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00286.html http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00361.html diff: === modified file 'nt/ChangeLog' --- nt/ChangeLog 2013-08-31 18:26:59 +0000 +++ nt/ChangeLog 2013-09-20 07:21:20 +0000 @@ -1,3 +1,12 @@ +2013-09-20 Eli Zaretskii + + * mingw-cfg.site (gl_cv_sys_struct_timeval_tv_sec): Set to "yes" + to avoid gnulib replacement of 'struct timeval' and the resulting + compilation of lib/gettimeofday.c with incompatible version of + gettimeofday. Related discussions on emacs-devel: + http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00286.html + http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00361.html + 2013-08-31 Glenn Morris * INSTALL: Rename from INSTALL.MSYS. === modified file 'nt/mingw-cfg.site' --- nt/mingw-cfg.site 2013-08-04 15:32:12 +0000 +++ nt/mingw-cfg.site 2013-09-20 07:21:20 +0000 @@ -31,6 +31,9 @@ # We want to use getopt.h from gnulib ac_cv_header_getopt_h=no +# We don't want our struct timeval replaced due to Posix conformance +gl_cv_sys_struct_timeval_tv_sec=yes + # ACL functions are implemented in w32.c ac_cv_search_acl_get_file="none required" ac_cv_func_acl_get_file=yes ------------------------------------------------------------ revno: 114405 committer: Xue Fuqiao branch nick: trunk timestamp: Fri 2013-09-20 13:52:34 +0800 message: * admin/FOR-RELEASE: Remove outdated info. diff: === modified file 'admin/FOR-RELEASE' --- admin/FOR-RELEASE 2013-08-13 07:04:10 +0000 +++ admin/FOR-RELEASE 2013-09-20 05:52:34 +0000 @@ -68,7 +68,6 @@ emacs.pdf' (e.g., enable "smallbook"). ** Check the keybindings in the refcards are correct, and add any new ones. -Regenerate the pdf versions in etc/refcards/. What paper size are the English versions supposed to be on? On Debian testing, the packages texlive-lang-czechslovak and texlive-lang-polish will let you generate the cs-* and sk-* pdfs. ------------------------------------------------------------ Use --include-merged or -n0 to see merged revisions.