Mercurial > hg > xemacs-beta
view src/make-src-depend @ 5617:b0d712bbc2a6
The "flush" face property.
-------------------- ChangeLog entries follow: --------------------
src/ChangeLog addition:
2011-12-23 Didier Verna <didier@xemacs.org>
* faces.h (struct Lisp_Face): New 'flush slot.
* faces.h (struct face_cachel): New 'flush and 'flush_specified
flags.
* faces.h (WINDOW_FACE_CACHEL_FLUSH_P):
* faces.h (FACE_FLUSH_P): New macros.
* faces.c: Declare Qflush.
* lisp.h: Externalize it.
* faces.c (syms_of_faces): Define it.
* faces.c (vars_of_faces): Update built-in face specifiers.
* faces.c (complex_vars_of_faces): Update specifier fallbacks.
* faces.c (mark_face):
* faces.c (face_equal):
* faces.c (face_getprop):
* faces.c (face_putprop):
* faces.c (face_remprop):
* faces.c (face_plist):
* faces.c (reset_face):
* faces.c (update_face_inheritance_mapper):
* faces.c (Fmake_face):
* faces.c (update_face_cachel_data):
* faces.c (merge_face_cachel_data):
* faces.c (Fcopy_face):
* fontcolor.c (face_boolean_validate): Handle the flush property.
* redisplay.h (struct display_line): Rename 'default_findex slot to
clearer name 'clear_findex.
* redisplay.h (DISPLAY_LINE_INIT): Update accordingly.
* redisplay-output.c (compare_display_blocks):
* redisplay-output.c (output_display_line):
* redisplay-output.c (redisplay_output_window):
* redisplay.c (regenerate_window_extents_only_changed):
* redisplay.c (regenerate_window_incrementally): Update the
comparison tests between the current and desired display lines to
cope for different 'clear_findex values.
* redisplay.c (create_text_block): Initialize the display line's
'clear_findex slot to DEFAULT_INDEX. Record a new 'clear_findex
value when we encounter a newline character displayed in a flushed
face.
* redisplay.c (create_string_text_block): Record a new
'clear_findex value when we encounter a newline character
displayed in a flushed face.
lisp/ChangeLog addition:
2011-12-23 Didier Verna <didier@xemacs.org>
* cl-macs.el (face-flush-p): New defsetf.
* faces.el (set-face-property): Document the flush property.
* faces.el (face-flush-p): New function.
* faces.el (set-face-flush-p): New function.
* faces.el (face-equal):
* cus-face.el (custom-face-attributes):
* x-faces.el (x-init-face-from-resources):
* x-faces.el (make-face-x-resource-internal): Handle the flush
property.
| author | Didier Verna <didier@xemacs.org> |
|---|---|
| date | Fri, 23 Dec 2011 10:56:16 +0100 |
| parents | 308d34e9f07d |
| children |
line wrap: on
line source
: #-*- Perl -*- ### make-src-depend --- update the Makefile dependency information for XEmacs # Copyright (C) 1998 Free Software Foundation, Inc. # Copyright (C) 2010 Ben Wing. ## Author: Martin Buchholz <martin@xemacs.org> ## Maintainer: XEmacs Development Team ## This file is part of XEmacs. ## XEmacs is free software: you can redistribute it and/or modify it ## under the terms of the GNU General Public License as published by the ## Free Software Foundation, either version 3 of the License, or (at your ## option) any later version. ## XEmacs is distributed in the hope that it will be useful, but WITHOUT ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## for more details. ## You should have received a copy of the GNU General Public License ## along with XEmacs. If not, see <http://www.gnu.org/licenses/>. eval 'exec perl -w -S $0 ${1+"$@"}' if 0; use strict; my ($myName, $srcdir, %exists, %uses, %generated_header); ($myName = $0) =~ s@.*/@@; my $usage =" Usage: $myName Generates Makefile dependencies for the XEmacs src directory. The dependencies are written to stdout. "; die $usage if @ARGV; ($srcdir = $0) =~ s@[^/]+$@@; $srcdir = "." if $srcdir eq ""; chdir $srcdir or die "$srcdir: $!"; opendir SRCDIR, "." or die "$srcdir: $!"; for (grep (/\.[ch]$/, readdir (SRCDIR))) { $exists{$_} = 1; } closedir SRCDIR; for (qw (config.h sheap-adjust.h paths.h Emacs.ad.h)) { $generated_header{$_} = 1; } # Although this is not technically true, it ought to be true, # and makes the generated Makefile smaller. $uses{'lisp.h'}{'config.h'} = 1; for my $file (keys %exists) { open (FILE, $file) or die "$file: $!"; undef $/; $_ = <FILE>; RemoveComments ($_); s/[ \t]+//g; # Find include dependencies for (/^\#include([^\n]+)/gm) { if (m@^\"([A-Za-z0-9._-]+\.[ch])\"@) { $uses{$file}{$1} = 1 if exists $exists{$1}; } elsif (m@<([A-Za-z0-9._-]+\.h)>@) { $uses{$file}{$1} = 1 if exists $generated_header{$1}; } elsif (m@\"../lwlib/([A-Za-z0-9._-]+\.h)\"@) { $uses{$file}{"\$(LWLIB_SRCDIR)/lwlib.h"} = 1; } } } # Make transitive closure of %uses while (1) { my $changedP = 0; for my $x (keys %uses) { for my $y (keys %{$uses{$x}}) { for my $z (keys %{$uses{$y}}) { if (! exists $uses{$x}{$z}) { $uses{$x}{$z} = 1; $changedP = 1; } } } } last if !$changedP; } # Print file header print "## This file is automatically generated by \`$myName'. Do not modify. #if defined(USE_UNION_TYPE) LISP_UNION_H=lisp-union.h #else LISP_UNION_H=lisp-disunion.h #endif "; my @LISP_H = ('lisp.h', sort keys %{$uses{'lisp.h'}}); print " #if defined(QUICK_BUILD) CONFIG_H= LISP_H= #else CONFIG_H=config.h LISP_H=@{[grep (!/lisp-(dis)?union\.h/, @LISP_H)]} \$(LISP_UNION_H) #endif "; sub PrintDeps { my $file = shift; my $ofile = $file; $ofile =~ s/c$/o/; print "$ofile: "; if (exists $uses{$file}{'config.h'}) { delete $uses{$file}{'config.h'}; $uses{$file}{'$(CONFIG_H)'} = 1; } if (exists $uses{$file}{'lisp.h'}) { for my $x (@LISP_H) { delete $uses{$file}{$x}; } $uses{$file}{'$(LISP_H)'} = 1; } # Huge hack. With QUICK_BUILD, general.c has no dependence on # general-slots.h but really should. $uses{$file}{'general-slots.h'} = 1 if $file eq "general.c"; print "@{[sort keys %{$uses{$file}}]}\n"; } sub PrintPatternDeps { my ($pattern, $CPP_SYMBOL) = @_; print "#if defined($CPP_SYMBOL)\n"; for my $file (sort grep (/$pattern/ && /\.c$/, keys %uses)) { PrintDeps($file); delete $uses{$file}; } print "#endif\n"; } PrintPatternDeps ('-msw\\.', "HAVE_MS_WINDOWS"); PrintPatternDeps ('-xlike', "HAVE_XLIKE"); # X-specific files: *-x.c *-x-impl.h balloon_help.c x*.h Emacs*.[ch] PrintPatternDeps ('-x\\.|balloon_help|^Emacs', "HAVE_X_WINDOWS"); PrintPatternDeps ('-tty\\.', "HAVE_TTY"); # GTK-specific files: *-gtk.[ch] *-gtk-*.[ch] gtk-*.[ch] emacs-marshals.c emacs-widget-accessors.c glade.c ui-byhand.c PrintPatternDeps ('gtk|emacs-marshals|emacs-widget-accessors|glade|ui-byhand', "HAVE_GTK"); PrintPatternDeps ('^database', "HAVE_DATABASE"); PrintPatternDeps ('^mule', "MULE"); PrintPatternDeps ('^(?:External|extw-)', "EXTERNAL_WIDGET"); for my $file (sort grep (/\.c$/, keys %uses)) { PrintDeps($file); } # Surprisingly robust regexp to remove comments from arbitrary C code sub RemoveComments { $_[0] =~ s{ ( [^\"\'/]+ | (?:\"[^\"\\]*(?:\\.[^\"\\]*)*\" [^\"\'/]*)+ | (?:\'[^\'\\]*(?:\\.[^\'\\]*)*\' [^\"\'/]*)+ ) | / (?: \*[^*]*\*+(?:[^/*][^*]*\*+)*/ | /[^\n]* ) }{defined $1 ? $1 : ""}gsxeo; }
