Compare commits
12 Commits
Author | SHA1 | Date |
---|---|---|
|
6a2eb9d1ac | |
|
b377a88515 | |
|
765b8fb58b | |
|
e134d3f371 | |
|
9c0e4f3f58 | |
|
977cd89954 | |
|
632bfbdc90 | |
|
2c2fff5d15 | |
|
7347071b28 | |
|
2cd3605c03 | |
|
910e11febf | |
|
94d9843509 |
|
@ -9,25 +9,3 @@
|
|||
/emacs-24.1.tar.bz2
|
||||
/emacs-24.2.tar.xz
|
||||
/emacs-24.3.tar.xz
|
||||
/emacs-24.4.tar.xz
|
||||
/emacs-24.5.tar.xz
|
||||
/emacs-25.0.92.tar.xz
|
||||
/emacs-25.0.93.tar.xz
|
||||
/emacs-25.0.94.tar.xz
|
||||
/emacs-25.0.95.tar.xz
|
||||
/emacs-25.1-rc1.tar.xz
|
||||
/emacs-25.1-rc2.tar.xz
|
||||
/emacs-25.1.tar.xz
|
||||
/emacs-25.2-rc2.tar.xz
|
||||
/emacs-25.2.tar.xz
|
||||
/emacs-25.3.tar.xz
|
||||
/emacs-26.1.tar.xz
|
||||
/emacs-26.2.tar.xz
|
||||
/emacs-26.3.tar.xz
|
||||
/emacs-26.3.tar.xz.sig
|
||||
/emacs-27.1.tar.xz
|
||||
/emacs-27.1.tar.xz.sig
|
||||
/emacs-27.2.tar.xz
|
||||
/emacs-27.2.tar.xz.sig
|
||||
/emacs-28.1.tar.xz
|
||||
/emacs-28.1.tar.xz.sig
|
707
cdefs.h
707
cdefs.h
|
@ -1,707 +0,0 @@
|
|||
/* Copyright (C) 1992-2022 Free Software Foundation, Inc.
|
||||
Copyright The GNU Toolchain Authors.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _SYS_CDEFS_H
|
||||
#define _SYS_CDEFS_H 1
|
||||
|
||||
/* We are almost always included from features.h. */
|
||||
#ifndef _FEATURES_H
|
||||
# include <features.h>
|
||||
#endif
|
||||
|
||||
/* The GNU libc does not support any K&R compilers or the traditional mode
|
||||
of ISO C compilers anymore. Check for some of the combinations not
|
||||
supported anymore. */
|
||||
#if defined __GNUC__ && !defined __STDC__
|
||||
# error "You need a ISO C conforming compiler to use the glibc headers"
|
||||
#endif
|
||||
|
||||
/* Some user header file might have defined this before. */
|
||||
#undef __P
|
||||
#undef __PMT
|
||||
|
||||
/* Compilers that lack __has_attribute may object to
|
||||
#if defined __has_attribute && __has_attribute (...)
|
||||
even though they do not need to evaluate the right-hand side of the &&.
|
||||
Similarly for __has_builtin, etc. */
|
||||
#if (defined __has_attribute \
|
||||
&& (!defined __clang_minor__ \
|
||||
|| (defined __apple_build_version__ \
|
||||
? 6000000 <= __apple_build_version__ \
|
||||
: 3 < __clang_major__ + (5 <= __clang_minor__))))
|
||||
# define __glibc_has_attribute(attr) __has_attribute (attr)
|
||||
#else
|
||||
# define __glibc_has_attribute(attr) 0
|
||||
#endif
|
||||
#ifdef __has_builtin
|
||||
# define __glibc_has_builtin(name) __has_builtin (name)
|
||||
#else
|
||||
# define __glibc_has_builtin(name) 0
|
||||
#endif
|
||||
#ifdef __has_extension
|
||||
# define __glibc_has_extension(ext) __has_extension (ext)
|
||||
#else
|
||||
# define __glibc_has_extension(ext) 0
|
||||
#endif
|
||||
|
||||
#if defined __GNUC__ || defined __clang__
|
||||
|
||||
/* All functions, except those with callbacks or those that
|
||||
synchronize memory, are leaf functions. */
|
||||
# if __GNUC_PREREQ (4, 6) && !defined _LIBC
|
||||
# define __LEAF , __leaf__
|
||||
# define __LEAF_ATTR __attribute__ ((__leaf__))
|
||||
# else
|
||||
# define __LEAF
|
||||
# define __LEAF_ATTR
|
||||
# endif
|
||||
|
||||
/* GCC can always grok prototypes. For C++ programs we add throw()
|
||||
to help it optimize the function calls. But this only works with
|
||||
gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
|
||||
as non-throwing using a function attribute since programs can use
|
||||
the -fexceptions options for C code as well. */
|
||||
# if !defined __cplusplus \
|
||||
&& (__GNUC_PREREQ (3, 4) || __glibc_has_attribute (__nothrow__))
|
||||
# define __THROW __attribute__ ((__nothrow__ __LEAF))
|
||||
# define __THROWNL __attribute__ ((__nothrow__))
|
||||
# define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct
|
||||
# define __NTHNL(fct) __attribute__ ((__nothrow__)) fct
|
||||
# else
|
||||
# if defined __cplusplus && (__GNUC_PREREQ (2,8) || __clang_major >= 4)
|
||||
# if __cplusplus >= 201103L
|
||||
# define __THROW noexcept (true)
|
||||
# else
|
||||
# define __THROW throw ()
|
||||
# endif
|
||||
# define __THROWNL __THROW
|
||||
# define __NTH(fct) __LEAF_ATTR fct __THROW
|
||||
# define __NTHNL(fct) fct __THROW
|
||||
# else
|
||||
# define __THROW
|
||||
# define __THROWNL
|
||||
# define __NTH(fct) fct
|
||||
# define __NTHNL(fct) fct
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#else /* Not GCC or clang. */
|
||||
|
||||
# if (defined __cplusplus \
|
||||
|| (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
|
||||
# define __inline inline
|
||||
# else
|
||||
# define __inline /* No inline functions. */
|
||||
# endif
|
||||
|
||||
# define __THROW
|
||||
# define __THROWNL
|
||||
# define __NTH(fct) fct
|
||||
|
||||
#endif /* GCC || clang. */
|
||||
|
||||
/* These two macros are not used in glibc anymore. They are kept here
|
||||
only because some other projects expect the macros to be defined. */
|
||||
#define __P(args) args
|
||||
#define __PMT(args) args
|
||||
|
||||
/* For these things, GCC behaves the ANSI way normally,
|
||||
and the non-ANSI way under -traditional. */
|
||||
|
||||
#define __CONCAT(x,y) x ## y
|
||||
#define __STRING(x) #x
|
||||
|
||||
/* This is not a typedef so `const __ptr_t' does the right thing. */
|
||||
#define __ptr_t void *
|
||||
|
||||
|
||||
/* C++ needs to know that types and declarations are C, not C++. */
|
||||
#ifdef __cplusplus
|
||||
# define __BEGIN_DECLS extern "C" {
|
||||
# define __END_DECLS }
|
||||
#else
|
||||
# define __BEGIN_DECLS
|
||||
# define __END_DECLS
|
||||
#endif
|
||||
|
||||
|
||||
/* Fortify support. */
|
||||
#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
|
||||
#define __bos0(ptr) __builtin_object_size (ptr, 0)
|
||||
|
||||
/* Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available. */
|
||||
#if __USE_FORTIFY_LEVEL == 3 && (__glibc_clang_prereq (9, 0) \
|
||||
|| __GNUC_PREREQ (12, 0))
|
||||
# define __glibc_objsize0(__o) __builtin_dynamic_object_size (__o, 0)
|
||||
# define __glibc_objsize(__o) __builtin_dynamic_object_size (__o, 1)
|
||||
#else
|
||||
# define __glibc_objsize0(__o) __bos0 (__o)
|
||||
# define __glibc_objsize(__o) __bos (__o)
|
||||
#endif
|
||||
|
||||
/* Compile time conditions to choose between the regular, _chk and _chk_warn
|
||||
variants. These conditions should get evaluated to constant and optimized
|
||||
away. */
|
||||
|
||||
#define __glibc_safe_len_cond(__l, __s, __osz) ((__l) <= (__osz) / (__s))
|
||||
#define __glibc_unsigned_or_positive(__l) \
|
||||
((__typeof (__l)) 0 < (__typeof (__l)) -1 \
|
||||
|| (__builtin_constant_p (__l) && (__l) > 0))
|
||||
|
||||
/* Length is known to be safe at compile time if the __L * __S <= __OBJSZ
|
||||
condition can be folded to a constant and if it is true. The -1 check is
|
||||
redundant because since it implies that __glibc_safe_len_cond is true. */
|
||||
#define __glibc_safe_or_unknown_len(__l, __s, __osz) \
|
||||
(__glibc_unsigned_or_positive (__l) \
|
||||
&& __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \
|
||||
__s, __osz)) \
|
||||
&& __glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz))
|
||||
|
||||
/* Conversely, we know at compile time that the length is unsafe if the
|
||||
__L * __S <= __OBJSZ condition can be folded to a constant and if it is
|
||||
false. */
|
||||
#define __glibc_unsafe_len(__l, __s, __osz) \
|
||||
(__glibc_unsigned_or_positive (__l) \
|
||||
&& __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \
|
||||
__s, __osz)) \
|
||||
&& !__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz))
|
||||
|
||||
/* Fortify function f. __f_alias, __f_chk and __f_chk_warn must be
|
||||
declared. */
|
||||
|
||||
#define __glibc_fortify(f, __l, __s, __osz, ...) \
|
||||
(__glibc_safe_or_unknown_len (__l, __s, __osz) \
|
||||
? __ ## f ## _alias (__VA_ARGS__) \
|
||||
: (__glibc_unsafe_len (__l, __s, __osz) \
|
||||
? __ ## f ## _chk_warn (__VA_ARGS__, __osz) \
|
||||
: __ ## f ## _chk (__VA_ARGS__, __osz))) \
|
||||
|
||||
/* Fortify function f, where object size argument passed to f is the number of
|
||||
elements and not total size. */
|
||||
|
||||
#define __glibc_fortify_n(f, __l, __s, __osz, ...) \
|
||||
(__glibc_safe_or_unknown_len (__l, __s, __osz) \
|
||||
? __ ## f ## _alias (__VA_ARGS__) \
|
||||
: (__glibc_unsafe_len (__l, __s, __osz) \
|
||||
? __ ## f ## _chk_warn (__VA_ARGS__, (__osz) / (__s)) \
|
||||
: __ ## f ## _chk (__VA_ARGS__, (__osz) / (__s)))) \
|
||||
|
||||
#if __GNUC_PREREQ (4,3)
|
||||
# define __warnattr(msg) __attribute__((__warning__ (msg)))
|
||||
# define __errordecl(name, msg) \
|
||||
extern void name (void) __attribute__((__error__ (msg)))
|
||||
#else
|
||||
# define __warnattr(msg)
|
||||
# define __errordecl(name, msg) extern void name (void)
|
||||
#endif
|
||||
|
||||
/* Support for flexible arrays.
|
||||
Headers that should use flexible arrays only if they're "real"
|
||||
(e.g. only if they won't affect sizeof()) should test
|
||||
#if __glibc_c99_flexarr_available. */
|
||||
#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L && !defined __HP_cc
|
||||
# define __flexarr []
|
||||
# define __glibc_c99_flexarr_available 1
|
||||
#elif __GNUC_PREREQ (2,97) || defined __clang__
|
||||
/* GCC 2.97 and clang support C99 flexible array members as an extension,
|
||||
even when in C89 mode or compiling C++ (any version). */
|
||||
# define __flexarr []
|
||||
# define __glibc_c99_flexarr_available 1
|
||||
#elif defined __GNUC__
|
||||
/* Pre-2.97 GCC did not support C99 flexible arrays but did have
|
||||
an equivalent extension with slightly different notation. */
|
||||
# define __flexarr [0]
|
||||
# define __glibc_c99_flexarr_available 1
|
||||
#else
|
||||
/* Some other non-C99 compiler. Approximate with [1]. */
|
||||
# define __flexarr [1]
|
||||
# define __glibc_c99_flexarr_available 0
|
||||
#endif
|
||||
|
||||
|
||||
/* __asm__ ("xyz") is used throughout the headers to rename functions
|
||||
at the assembly language level. This is wrapped by the __REDIRECT
|
||||
macro, in order to support compilers that can do this some other
|
||||
way. When compilers don't support asm-names at all, we have to do
|
||||
preprocessor tricks instead (which don't have exactly the right
|
||||
semantics, but it's the best we can do).
|
||||
|
||||
Example:
|
||||
int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */
|
||||
|
||||
#if (defined __GNUC__ && __GNUC__ >= 2) || (__clang_major__ >= 4)
|
||||
|
||||
# define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias))
|
||||
# ifdef __cplusplus
|
||||
# define __REDIRECT_NTH(name, proto, alias) \
|
||||
name proto __THROW __asm__ (__ASMNAME (#alias))
|
||||
# define __REDIRECT_NTHNL(name, proto, alias) \
|
||||
name proto __THROWNL __asm__ (__ASMNAME (#alias))
|
||||
# else
|
||||
# define __REDIRECT_NTH(name, proto, alias) \
|
||||
name proto __asm__ (__ASMNAME (#alias)) __THROW
|
||||
# define __REDIRECT_NTHNL(name, proto, alias) \
|
||||
name proto __asm__ (__ASMNAME (#alias)) __THROWNL
|
||||
# endif
|
||||
# define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
|
||||
# define __ASMNAME2(prefix, cname) __STRING (prefix) cname
|
||||
|
||||
/*
|
||||
#elif __SOME_OTHER_COMPILER__
|
||||
|
||||
# define __REDIRECT(name, proto, alias) name proto; \
|
||||
_Pragma("let " #name " = " #alias)
|
||||
*/
|
||||
#endif
|
||||
|
||||
/* GCC and clang have various useful declarations that can be made with
|
||||
the '__attribute__' syntax. All of the ways we use this do fine if
|
||||
they are omitted for compilers that don't understand it. */
|
||||
#if !(defined __GNUC__ || defined __clang__)
|
||||
# define __attribute__(xyz) /* Ignore */
|
||||
#endif
|
||||
|
||||
/* At some point during the gcc 2.96 development the `malloc' attribute
|
||||
for functions was introduced. We don't want to use it unconditionally
|
||||
(although this would be possible) since it generates warnings. */
|
||||
#if __GNUC_PREREQ (2,96) || __glibc_has_attribute (__malloc__)
|
||||
# define __attribute_malloc__ __attribute__ ((__malloc__))
|
||||
#else
|
||||
# define __attribute_malloc__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* Tell the compiler which arguments to an allocation function
|
||||
indicate the size of the allocation. */
|
||||
#if __GNUC_PREREQ (4, 3)
|
||||
# define __attribute_alloc_size__(params) \
|
||||
__attribute__ ((__alloc_size__ params))
|
||||
#else
|
||||
# define __attribute_alloc_size__(params) /* Ignore. */
|
||||
#endif
|
||||
|
||||
/* Tell the compiler which argument to an allocation function
|
||||
indicates the alignment of the allocation. */
|
||||
#if __GNUC_PREREQ (4, 9) || __glibc_has_attribute (__alloc_align__)
|
||||
# define __attribute_alloc_align__(param) \
|
||||
__attribute__ ((__alloc_align__ param))
|
||||
#else
|
||||
# define __attribute_alloc_align__(param) /* Ignore. */
|
||||
#endif
|
||||
|
||||
/* At some point during the gcc 2.96 development the `pure' attribute
|
||||
for functions was introduced. We don't want to use it unconditionally
|
||||
(although this would be possible) since it generates warnings. */
|
||||
#if __GNUC_PREREQ (2,96) || __glibc_has_attribute (__pure__)
|
||||
# define __attribute_pure__ __attribute__ ((__pure__))
|
||||
#else
|
||||
# define __attribute_pure__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* This declaration tells the compiler that the value is constant. */
|
||||
#if __GNUC_PREREQ (2,5) || __glibc_has_attribute (__const__)
|
||||
# define __attribute_const__ __attribute__ ((__const__))
|
||||
#else
|
||||
# define __attribute_const__ /* Ignore */
|
||||
#endif
|
||||
|
||||
#if __GNUC_PREREQ (2,7) || __glibc_has_attribute (__unused__)
|
||||
# define __attribute_maybe_unused__ __attribute__ ((__unused__))
|
||||
#else
|
||||
# define __attribute_maybe_unused__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* At some point during the gcc 3.1 development the `used' attribute
|
||||
for functions was introduced. We don't want to use it unconditionally
|
||||
(although this would be possible) since it generates warnings. */
|
||||
#if __GNUC_PREREQ (3,1) || __glibc_has_attribute (__used__)
|
||||
# define __attribute_used__ __attribute__ ((__used__))
|
||||
# define __attribute_noinline__ __attribute__ ((__noinline__))
|
||||
#else
|
||||
# define __attribute_used__ __attribute__ ((__unused__))
|
||||
# define __attribute_noinline__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* Since version 3.2, gcc allows marking deprecated functions. */
|
||||
#if __GNUC_PREREQ (3,2) || __glibc_has_attribute (__deprecated__)
|
||||
# define __attribute_deprecated__ __attribute__ ((__deprecated__))
|
||||
#else
|
||||
# define __attribute_deprecated__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* Since version 4.5, gcc also allows one to specify the message printed
|
||||
when a deprecated function is used. clang claims to be gcc 4.2, but
|
||||
may also support this feature. */
|
||||
#if __GNUC_PREREQ (4,5) \
|
||||
|| __glibc_has_extension (__attribute_deprecated_with_message__)
|
||||
# define __attribute_deprecated_msg__(msg) \
|
||||
__attribute__ ((__deprecated__ (msg)))
|
||||
#else
|
||||
# define __attribute_deprecated_msg__(msg) __attribute_deprecated__
|
||||
#endif
|
||||
|
||||
/* At some point during the gcc 2.8 development the `format_arg' attribute
|
||||
for functions was introduced. We don't want to use it unconditionally
|
||||
(although this would be possible) since it generates warnings.
|
||||
If several `format_arg' attributes are given for the same function, in
|
||||
gcc-3.0 and older, all but the last one are ignored. In newer gccs,
|
||||
all designated arguments are considered. */
|
||||
#if __GNUC_PREREQ (2,8) || __glibc_has_attribute (__format_arg__)
|
||||
# define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
|
||||
#else
|
||||
# define __attribute_format_arg__(x) /* Ignore */
|
||||
#endif
|
||||
|
||||
/* At some point during the gcc 2.97 development the `strfmon' format
|
||||
attribute for functions was introduced. We don't want to use it
|
||||
unconditionally (although this would be possible) since it
|
||||
generates warnings. */
|
||||
#if __GNUC_PREREQ (2,97) || __glibc_has_attribute (__format__)
|
||||
# define __attribute_format_strfmon__(a,b) \
|
||||
__attribute__ ((__format__ (__strfmon__, a, b)))
|
||||
#else
|
||||
# define __attribute_format_strfmon__(a,b) /* Ignore */
|
||||
#endif
|
||||
|
||||
/* The nonnull function attribute marks pointer parameters that
|
||||
must not be NULL. This has the name __nonnull in glibc,
|
||||
and __attribute_nonnull__ in files shared with Gnulib to avoid
|
||||
collision with a different __nonnull in DragonFlyBSD 5.9. */
|
||||
#ifndef __attribute_nonnull__
|
||||
# if __GNUC_PREREQ (3,3) || __glibc_has_attribute (__nonnull__)
|
||||
# define __attribute_nonnull__(params) __attribute__ ((__nonnull__ params))
|
||||
# else
|
||||
# define __attribute_nonnull__(params)
|
||||
# endif
|
||||
#endif
|
||||
#ifndef __nonnull
|
||||
# define __nonnull(params) __attribute_nonnull__ (params)
|
||||
#endif
|
||||
|
||||
/* The returns_nonnull function attribute marks the return type of the function
|
||||
as always being non-null. */
|
||||
#ifndef __returns_nonnull
|
||||
# if __GNUC_PREREQ (4, 9) || __glibc_has_attribute (__returns_nonnull__)
|
||||
# define __returns_nonnull __attribute__ ((__returns_nonnull__))
|
||||
# else
|
||||
# define __returns_nonnull
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* If fortification mode, we warn about unused results of certain
|
||||
function calls which can lead to problems. */
|
||||
#if __GNUC_PREREQ (3,4) || __glibc_has_attribute (__warn_unused_result__)
|
||||
# define __attribute_warn_unused_result__ \
|
||||
__attribute__ ((__warn_unused_result__))
|
||||
# if defined __USE_FORTIFY_LEVEL && __USE_FORTIFY_LEVEL > 0
|
||||
# define __wur __attribute_warn_unused_result__
|
||||
# endif
|
||||
#else
|
||||
# define __attribute_warn_unused_result__ /* empty */
|
||||
#endif
|
||||
#ifndef __wur
|
||||
# define __wur /* Ignore */
|
||||
#endif
|
||||
|
||||
/* Forces a function to be always inlined. */
|
||||
#if __GNUC_PREREQ (3,2) || __glibc_has_attribute (__always_inline__)
|
||||
/* The Linux kernel defines __always_inline in stddef.h (283d7573), and
|
||||
it conflicts with this definition. Therefore undefine it first to
|
||||
allow either header to be included first. */
|
||||
# undef __always_inline
|
||||
# define __always_inline __inline __attribute__ ((__always_inline__))
|
||||
#else
|
||||
# undef __always_inline
|
||||
# define __always_inline __inline
|
||||
#endif
|
||||
|
||||
/* Associate error messages with the source location of the call site rather
|
||||
than with the source location inside the function. */
|
||||
#if __GNUC_PREREQ (4,3) || __glibc_has_attribute (__artificial__)
|
||||
# define __attribute_artificial__ __attribute__ ((__artificial__))
|
||||
#else
|
||||
# define __attribute_artificial__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
|
||||
inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
|
||||
or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
|
||||
older than 4.3 may define these macros and still not guarantee GNU inlining
|
||||
semantics.
|
||||
|
||||
clang++ identifies itself as gcc-4.2, but has support for GNU inlining
|
||||
semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
|
||||
__GNUC_GNU_INLINE__ macro definitions. */
|
||||
#if (!defined __cplusplus || __GNUC_PREREQ (4,3) \
|
||||
|| (defined __clang__ && (defined __GNUC_STDC_INLINE__ \
|
||||
|| defined __GNUC_GNU_INLINE__)))
|
||||
# if defined __GNUC_STDC_INLINE__ || defined __cplusplus
|
||||
# define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
|
||||
# define __extern_always_inline \
|
||||
extern __always_inline __attribute__ ((__gnu_inline__))
|
||||
# else
|
||||
# define __extern_inline extern __inline
|
||||
# define __extern_always_inline extern __always_inline
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef __extern_always_inline
|
||||
# define __fortify_function __extern_always_inline __attribute_artificial__
|
||||
#endif
|
||||
|
||||
/* GCC 4.3 and above allow passing all anonymous arguments of an
|
||||
__extern_always_inline function to some other vararg function. */
|
||||
#if __GNUC_PREREQ (4,3)
|
||||
# define __va_arg_pack() __builtin_va_arg_pack ()
|
||||
# define __va_arg_pack_len() __builtin_va_arg_pack_len ()
|
||||
#endif
|
||||
|
||||
/* It is possible to compile containing GCC extensions even if GCC is
|
||||
run in pedantic mode if the uses are carefully marked using the
|
||||
`__extension__' keyword. But this is not generally available before
|
||||
version 2.8. */
|
||||
#if !(__GNUC_PREREQ (2,8) || defined __clang__)
|
||||
# define __extension__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* __restrict is known in EGCS 1.2 and above, and in clang.
|
||||
It works also in C++ mode (outside of arrays), but only when spelled
|
||||
as '__restrict', not 'restrict'. */
|
||||
#if !(__GNUC_PREREQ (2,92) || __clang_major__ >= 3)
|
||||
# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
|
||||
# define __restrict restrict
|
||||
# else
|
||||
# define __restrict /* Ignore */
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* ISO C99 also allows to declare arrays as non-overlapping. The syntax is
|
||||
array_name[restrict]
|
||||
GCC 3.1 and clang support this.
|
||||
This syntax is not usable in C++ mode. */
|
||||
#if (__GNUC_PREREQ (3,1) || __clang_major__ >= 3) && !defined __cplusplus
|
||||
# define __restrict_arr __restrict
|
||||
#else
|
||||
# ifdef __GNUC__
|
||||
# define __restrict_arr /* Not supported in old GCC. */
|
||||
# else
|
||||
# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
|
||||
# define __restrict_arr restrict
|
||||
# else
|
||||
/* Some other non-C99 compiler. */
|
||||
# define __restrict_arr /* Not supported. */
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if (__GNUC__ >= 3) || __glibc_has_builtin (__builtin_expect)
|
||||
# define __glibc_unlikely(cond) __builtin_expect ((cond), 0)
|
||||
# define __glibc_likely(cond) __builtin_expect ((cond), 1)
|
||||
#else
|
||||
# define __glibc_unlikely(cond) (cond)
|
||||
# define __glibc_likely(cond) (cond)
|
||||
#endif
|
||||
|
||||
#if (!defined _Noreturn \
|
||||
&& (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \
|
||||
&& !(__GNUC_PREREQ (4,7) \
|
||||
|| (3 < __clang_major__ + (5 <= __clang_minor__))))
|
||||
# if __GNUC_PREREQ (2,8)
|
||||
# define _Noreturn __attribute__ ((__noreturn__))
|
||||
# else
|
||||
# define _Noreturn
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if __GNUC_PREREQ (8, 0)
|
||||
/* Describes a char array whose address can safely be passed as the first
|
||||
argument to strncpy and strncat, as the char array is not necessarily
|
||||
a NUL-terminated string. */
|
||||
# define __attribute_nonstring__ __attribute__ ((__nonstring__))
|
||||
#else
|
||||
# define __attribute_nonstring__
|
||||
#endif
|
||||
|
||||
/* Undefine (also defined in libc-symbols.h). */
|
||||
#undef __attribute_copy__
|
||||
#if __GNUC_PREREQ (9, 0)
|
||||
/* Copies attributes from the declaration or type referenced by
|
||||
the argument. */
|
||||
# define __attribute_copy__(arg) __attribute__ ((__copy__ (arg)))
|
||||
#else
|
||||
# define __attribute_copy__(arg)
|
||||
#endif
|
||||
|
||||
#if (!defined _Static_assert && !defined __cplusplus \
|
||||
&& (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \
|
||||
&& (!(__GNUC_PREREQ (4, 6) || __clang_major__ >= 4) \
|
||||
|| defined __STRICT_ANSI__))
|
||||
# define _Static_assert(expr, diagnostic) \
|
||||
extern int (*__Static_assert_function (void)) \
|
||||
[!!sizeof (struct { int __error_if_negative: (expr) ? 2 : -1; })]
|
||||
#endif
|
||||
|
||||
/* Gnulib avoids including these, as they don't work on non-glibc or
|
||||
older glibc platforms. */
|
||||
#ifndef __GNULIB_CDEFS
|
||||
# include <bits/wordsize.h>
|
||||
# include <bits/long-double.h>
|
||||
#endif
|
||||
|
||||
#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
|
||||
# ifdef __REDIRECT
|
||||
|
||||
/* Alias name defined automatically. */
|
||||
# define __LDBL_REDIR(name, proto) ... unused__ldbl_redir
|
||||
# define __LDBL_REDIR_DECL(name) \
|
||||
extern __typeof (name) name __asm (__ASMNAME ("__" #name "ieee128"));
|
||||
|
||||
/* Alias name defined automatically, with leading underscores. */
|
||||
# define __LDBL_REDIR2_DECL(name) \
|
||||
extern __typeof (__##name) __##name \
|
||||
__asm (__ASMNAME ("__" #name "ieee128"));
|
||||
|
||||
/* Alias name defined manually. */
|
||||
# define __LDBL_REDIR1(name, proto, alias) ... unused__ldbl_redir1
|
||||
# define __LDBL_REDIR1_DECL(name, alias) \
|
||||
extern __typeof (name) name __asm (__ASMNAME (#alias));
|
||||
|
||||
# define __LDBL_REDIR1_NTH(name, proto, alias) \
|
||||
__REDIRECT_NTH (name, proto, alias)
|
||||
# define __REDIRECT_NTH_LDBL(name, proto, alias) \
|
||||
__LDBL_REDIR1_NTH (name, proto, __##alias##ieee128)
|
||||
|
||||
/* Unused. */
|
||||
# define __REDIRECT_LDBL(name, proto, alias) ... unused__redirect_ldbl
|
||||
# define __LDBL_REDIR_NTH(name, proto) ... unused__ldbl_redir_nth
|
||||
|
||||
# else
|
||||
_Static_assert (0, "IEEE 128-bits long double requires redirection on this platform");
|
||||
# endif
|
||||
#elif defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH
|
||||
# define __LDBL_COMPAT 1
|
||||
# ifdef __REDIRECT
|
||||
# define __LDBL_REDIR1(name, proto, alias) __REDIRECT (name, proto, alias)
|
||||
# define __LDBL_REDIR(name, proto) \
|
||||
__LDBL_REDIR1 (name, proto, __nldbl_##name)
|
||||
# define __LDBL_REDIR1_NTH(name, proto, alias) __REDIRECT_NTH (name, proto, alias)
|
||||
# define __LDBL_REDIR_NTH(name, proto) \
|
||||
__LDBL_REDIR1_NTH (name, proto, __nldbl_##name)
|
||||
# define __LDBL_REDIR2_DECL(name) \
|
||||
extern __typeof (__##name) __##name __asm (__ASMNAME ("__nldbl___" #name));
|
||||
# define __LDBL_REDIR1_DECL(name, alias) \
|
||||
extern __typeof (name) name __asm (__ASMNAME (#alias));
|
||||
# define __LDBL_REDIR_DECL(name) \
|
||||
extern __typeof (name) name __asm (__ASMNAME ("__nldbl_" #name));
|
||||
# define __REDIRECT_LDBL(name, proto, alias) \
|
||||
__LDBL_REDIR1 (name, proto, __nldbl_##alias)
|
||||
# define __REDIRECT_NTH_LDBL(name, proto, alias) \
|
||||
__LDBL_REDIR1_NTH (name, proto, __nldbl_##alias)
|
||||
# endif
|
||||
#endif
|
||||
#if (!defined __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0) \
|
||||
|| !defined __REDIRECT
|
||||
# define __LDBL_REDIR1(name, proto, alias) name proto
|
||||
# define __LDBL_REDIR(name, proto) name proto
|
||||
# define __LDBL_REDIR1_NTH(name, proto, alias) name proto __THROW
|
||||
# define __LDBL_REDIR_NTH(name, proto) name proto __THROW
|
||||
# define __LDBL_REDIR2_DECL(name)
|
||||
# define __LDBL_REDIR_DECL(name)
|
||||
# ifdef __REDIRECT
|
||||
# define __REDIRECT_LDBL(name, proto, alias) __REDIRECT (name, proto, alias)
|
||||
# define __REDIRECT_NTH_LDBL(name, proto, alias) \
|
||||
__REDIRECT_NTH (name, proto, alias)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
|
||||
intended for use in preprocessor macros.
|
||||
|
||||
Note: MESSAGE must be a _single_ string; concatenation of string
|
||||
literals is not supported. */
|
||||
#if __GNUC_PREREQ (4,8) || __glibc_clang_prereq (3,5)
|
||||
# define __glibc_macro_warning1(message) _Pragma (#message)
|
||||
# define __glibc_macro_warning(message) \
|
||||
__glibc_macro_warning1 (GCC warning message)
|
||||
#else
|
||||
# define __glibc_macro_warning(msg)
|
||||
#endif
|
||||
|
||||
/* Generic selection (ISO C11) is a C-only feature, available in GCC
|
||||
since version 4.9. Previous versions do not provide generic
|
||||
selection, even though they might set __STDC_VERSION__ to 201112L,
|
||||
when in -std=c11 mode. Thus, we must check for !defined __GNUC__
|
||||
when testing __STDC_VERSION__ for generic selection support.
|
||||
On the other hand, Clang also defines __GNUC__, so a clang-specific
|
||||
check is required to enable the use of generic selection. */
|
||||
#if !defined __cplusplus \
|
||||
&& (__GNUC_PREREQ (4, 9) \
|
||||
|| __glibc_has_extension (c_generic_selections) \
|
||||
|| (!defined __GNUC__ && defined __STDC_VERSION__ \
|
||||
&& __STDC_VERSION__ >= 201112L))
|
||||
# define __HAVE_GENERIC_SELECTION 1
|
||||
#else
|
||||
# define __HAVE_GENERIC_SELECTION 0
|
||||
#endif
|
||||
|
||||
#if __GNUC_PREREQ (10, 0)
|
||||
/* Designates a 1-based positional argument ref-index of pointer type
|
||||
that can be used to access size-index elements of the pointed-to
|
||||
array according to access mode, or at least one element when
|
||||
size-index is not provided:
|
||||
access (access-mode, <ref-index> [, <size-index>]) */
|
||||
# define __attr_access(x) __attribute__ ((__access__ x))
|
||||
/* For _FORTIFY_SOURCE == 3 we use __builtin_dynamic_object_size, which may
|
||||
use the access attribute to get object sizes from function definition
|
||||
arguments, so we can't use them on functions we fortify. Drop the object
|
||||
size hints for such functions. */
|
||||
# if __USE_FORTIFY_LEVEL == 3
|
||||
# define __fortified_attr_access(a, o, s) __attribute__ ((__access__ (a, o)))
|
||||
# else
|
||||
# define __fortified_attr_access(a, o, s) __attr_access ((a, o, s))
|
||||
# endif
|
||||
# if __GNUC_PREREQ (11, 0)
|
||||
# define __attr_access_none(argno) __attribute__ ((__access__ (__none__, argno)))
|
||||
# else
|
||||
# define __attr_access_none(argno)
|
||||
# endif
|
||||
#else
|
||||
# define __fortified_attr_access(a, o, s)
|
||||
# define __attr_access(x)
|
||||
# define __attr_access_none(argno)
|
||||
#endif
|
||||
|
||||
#if __GNUC_PREREQ (11, 0)
|
||||
/* Designates dealloc as a function to call to deallocate objects
|
||||
allocated by the declared function. */
|
||||
# define __attr_dealloc(dealloc, argno) \
|
||||
__attribute__ ((__malloc__ (dealloc, argno)))
|
||||
# define __attr_dealloc_free __attr_dealloc (__builtin_free, 1)
|
||||
#else
|
||||
# define __attr_dealloc(dealloc, argno)
|
||||
# define __attr_dealloc_free
|
||||
#endif
|
||||
|
||||
/* Specify that a function such as setjmp or vfork may return
|
||||
twice. */
|
||||
#if __GNUC_PREREQ (4, 1)
|
||||
# define __attribute_returns_twice__ __attribute__ ((__returns_twice__))
|
||||
#else
|
||||
# define __attribute_returns_twice__ /* Ignore. */
|
||||
#endif
|
||||
|
||||
#endif /* sys/cdefs.h */
|
|
@ -4,4 +4,5 @@
|
|||
;;; prevents loading of this file. Also the "-q" option to emacs
|
||||
;;; prevents both "~/.emacs" and this file from being loaded at startup.
|
||||
|
||||
(setq-default smime-CA-directory "/etc/ssl/certs")
|
||||
;; default to better frame titles
|
||||
(setq-default frame-title-format (concat "%b - emacs@" (system-name)))
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
|
||||
index 7167dc9..c8f2cd7 100644
|
||||
--- a/lisp/textmodes/ispell.el
|
||||
+++ b/lisp/textmodes/ispell.el
|
||||
@@ -1177,7 +1177,7 @@ aspell is used along with Emacs).")
|
||||
;; Unless default dict, re-add "-d" option with the mapped value
|
||||
(if dict-name
|
||||
(if dict-equiv
|
||||
- (nconc ispell-args (list "-d" dict-equiv))
|
||||
+ (setq ispell-args (nconc ispell-args (list "-d" dict-equiv)))
|
||||
(message
|
||||
"ispell-set-spellchecker-params: Missing hunspell equiv for \"%s\". Skipping."
|
||||
dict-name)
|
|
@ -0,0 +1,103 @@
|
|||
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
|
||||
index 1daec44..7167dc9 100644
|
||||
--- a/lisp/textmodes/ispell.el
|
||||
+++ b/lisp/textmodes/ispell.el
|
||||
@@ -574,6 +574,40 @@ re-start Emacs."
|
||||
(coding-system :tag "Coding System")))
|
||||
:group 'ispell)
|
||||
|
||||
+(defvar ispell-hunspell-dictionary-equivs-alist
|
||||
+ '(("american" "en_US")
|
||||
+ ("brasileiro" "pt_BR")
|
||||
+ ("british" "en_GB")
|
||||
+ ("castellano" "es_ES")
|
||||
+ ("castellano8" "es_ES")
|
||||
+ ("czech" "cs_CZ")
|
||||
+ ("dansk" "da_DK")
|
||||
+ ("deutsch" "de_DE")
|
||||
+ ("deutsch8" "de_DE")
|
||||
+ ("english" "en_US")
|
||||
+ ("esperanto" "eo")
|
||||
+ ("esperanto-tex" "eo")
|
||||
+ ("finnish" "fi_FI")
|
||||
+ ("francais7" "fr_FR")
|
||||
+ ("francais" "fr_FR")
|
||||
+ ("francais-tex" "fr_FR")
|
||||
+ ("german" "de_DE")
|
||||
+ ("german8" "de_DE")
|
||||
+ ("italiano" "it_IT")
|
||||
+ ("nederlands" "nl_NL")
|
||||
+ ("nederlands8" "nl_NL")
|
||||
+ ("norsk" "nn_NO")
|
||||
+ ("norsk7-tex" "nn_NO")
|
||||
+ ("polish" "pl_PL")
|
||||
+ ("portugues" "pt_PT")
|
||||
+ ("russian" "ru_RU")
|
||||
+ ("russianw" "ru_RU")
|
||||
+ ("slovak" "sk_SK")
|
||||
+ ("slovenian" "sl_SI")
|
||||
+ ("svenska" "sv_SE")
|
||||
+ ("hebrew" "he_IL"))
|
||||
+ "Alist with matching hunspell dict names for standard dict names in
|
||||
+ `ispell-dictionary-base-alist'.")
|
||||
|
||||
(defvar ispell-dictionary-base-alist
|
||||
'((nil ; default
|
||||
@@ -1112,9 +1146,57 @@ aspell is used along with Emacs).")
|
||||
ispell-encoding8-command)
|
||||
ispell-aspell-dictionary-alist
|
||||
nil))
|
||||
+ (ispell-dictionary-base-alist ispell-dictionary-base-alist)
|
||||
ispell-base-dicts-override-alist ; Override only base-dicts-alist
|
||||
all-dicts-alist)
|
||||
|
||||
+ ;; While ispell and aspell (through aliases) use the traditional
|
||||
+ ;; dict naming originally expected by ispell.el, hunspell
|
||||
+ ;; uses locale based names with no alias. We need to map
|
||||
+ ;; standard names to locale based names to make default dict
|
||||
+ ;; definitions available for hunspell.
|
||||
+ (if ispell-really-hunspell
|
||||
+ (let (tmp-dicts-alist)
|
||||
+ (dolist (adict ispell-dictionary-base-alist)
|
||||
+ (let* ((dict-name (nth 0 adict))
|
||||
+ (dict-equiv
|
||||
+ (cadr (assoc dict-name
|
||||
+ ispell-hunspell-dictionary-equivs-alist)))
|
||||
+ (ispell-args (nth 5 adict))
|
||||
+ (ispell-args-has-d (member "-d" ispell-args))
|
||||
+ skip-dict)
|
||||
+ ;; Remove "-d" option from `ispell-args' if present
|
||||
+ (if ispell-args-has-d
|
||||
+ (let ((ispell-args-after-d
|
||||
+ (cdr (cdr ispell-args-has-d)))
|
||||
+ (ispell-args-before-d
|
||||
+ (butlast ispell-args (length ispell-args-has-d))))
|
||||
+ (setq ispell-args
|
||||
+ (nconc ispell-args-before-d
|
||||
+ ispell-args-after-d))))
|
||||
+ ;; Unless default dict, re-add "-d" option with the mapped value
|
||||
+ (if dict-name
|
||||
+ (if dict-equiv
|
||||
+ (nconc ispell-args (list "-d" dict-equiv))
|
||||
+ (message
|
||||
+ "ispell-set-spellchecker-params: Missing hunspell equiv for \"%s\". Skipping."
|
||||
+ dict-name)
|
||||
+ (setq skip-dict t)))
|
||||
+
|
||||
+ (unless skip-dict
|
||||
+ (add-to-list 'tmp-dicts-alist
|
||||
+ (list
|
||||
+ dict-name ; dict name
|
||||
+ (nth 1 adict) ; casechars
|
||||
+ (nth 2 adict) ; not-casechars
|
||||
+ (nth 3 adict) ; otherchars
|
||||
+ (nth 4 adict) ; many-otherchars-p
|
||||
+ ispell-args ; ispell-args
|
||||
+ (nth 6 adict) ; extended-character-mode
|
||||
+ (nth 7 adict) ; dict encoding
|
||||
+ ))))
|
||||
+ (setq ispell-dictionary-base-alist tmp-dicts-alist))))
|
||||
+
|
||||
(run-hooks 'ispell-initialize-spellchecker-hook)
|
||||
|
||||
;; Add dicts to ``ispell-dictionary-alist'' unless already present.
|
|
@ -0,0 +1,25 @@
|
|||
From e2261aa685bf67a1596546e7aa05d922d049cb0d Mon Sep 17 00:00:00 2001
|
||||
From: Jan Chaloupka <jchaloup@redhat.com>
|
||||
Date: Tue, 29 Jul 2014 12:30:07 +0200
|
||||
Subject: [PATCH] kbd_macro_ptr and kbd_macro_end of current_kboard initialized to kbd_macro_buffer
|
||||
|
||||
---
|
||||
src/macros.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/src/macros.c b/src/macros.c
|
||||
index 1eef9b6..e707784 100644
|
||||
--- a/src/macros.c
|
||||
+++ b/src/macros.c
|
||||
@@ -65,6 +65,8 @@ macro before appending to it. */)
|
||||
{
|
||||
current_kboard->kbd_macro_buffer = xmalloc (30 * word_size);
|
||||
current_kboard->kbd_macro_bufsize = 30;
|
||||
+ current_kboard->kbd_macro_ptr = current_kboard->kbd_macro_buffer;
|
||||
+ current_kboard->kbd_macro_end = current_kboard->kbd_macro_buffer;
|
||||
}
|
||||
update_mode_lines++;
|
||||
if (NILP (append))
|
||||
--
|
||||
1.9.3
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
diff --git a/lisp/gnus/gnus-fun.el b/lisp/gnus/gnus-fun.el
|
||||
index 1c9b4ce..6d43d23 100644
|
||||
--- a/lisp/gnus/gnus-fun.el
|
||||
+++ b/lisp/gnus/gnus-fun.el
|
||||
@@ -250,20 +250,21 @@ colors of the displayed X-Faces."
|
||||
(interactive)
|
||||
(shell-command "xawtv-remote snap ppm")
|
||||
(let ((file nil)
|
||||
+ (tempfile (make-temp-file "gnus-face-" nil "*.ppm"))
|
||||
result)
|
||||
(while (null (setq file (directory-files "/tftpboot/sparky/tmp"
|
||||
t "snap.*ppm")))
|
||||
(sleep-for 1))
|
||||
(setq file (car file))
|
||||
(shell-command
|
||||
- (format "pnmcut -left 110 -top 30 -width 144 -height 144 '%s' | pnmscale -width 48 -height 48 | ppmtopgm > /tmp/gnus.face.ppm"
|
||||
- file))
|
||||
+ (format "pnmcut -left 110 -top 30 -width 144 -height 144 '%s' | pnmscale -width 48 -height 48 | ppmtopgm >> %s"
|
||||
+ file tempfile))
|
||||
(let ((gnus-convert-image-to-face-command
|
||||
(format "cat '%%s' | ppmquant %%d | ppmchange %s | pnmtopng"
|
||||
(gnus-fun-ppm-change-string))))
|
||||
- (setq result (gnus-face-from-file "/tmp/gnus.face.ppm")))
|
||||
+ (setq result (gnus-face-from-file tempfile)))
|
||||
(delete-file file)
|
||||
- ;;(delete-file "/tmp/gnus.face.ppm")
|
||||
+ ;;(delete-file tempfile)
|
||||
result))
|
||||
|
||||
(defun gnus-fun-ppm-change-string ()
|
|
@ -0,0 +1,119 @@
|
|||
diff --git a/lisp/emacs-lisp/find-gc.el b/lisp/emacs-lisp/find-gc.el
|
||||
index 82b3e94..6bdb09d 100644
|
||||
--- a/lisp/emacs-lisp/find-gc.el
|
||||
+++ b/lisp/emacs-lisp/find-gc.el
|
||||
@@ -23,14 +23,15 @@
|
||||
|
||||
;; Produce in find-gc-unsafe-list the set of all functions that may invoke GC.
|
||||
;; This expects the Emacs sources to live in find-gc-source-directory.
|
||||
-;; It creates a temporary working directory /tmp/esrc.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(defvar find-gc-unsafe-list nil
|
||||
"The list of unsafe functions is placed here by `find-gc-unsafe'.")
|
||||
|
||||
-(defvar find-gc-source-directory)
|
||||
+(defvar find-gc-source-directory
|
||||
+ (file-name-as-directory (expand-file-name "src" source-directory))
|
||||
+ "Directory containing Emacs C sources.")
|
||||
|
||||
(defvar find-gc-subrs-callers nil
|
||||
"Alist of users of subrs, from GC testing.
|
||||
@@ -59,14 +60,14 @@ Each entry has the form (FUNCTION . FUNCTIONS-IT-CALLS).")
|
||||
"indent.c" "search.c" "regex.c" "undo.c"
|
||||
"alloc.c" "data.c" "doc.c" "editfns.c"
|
||||
"callint.c" "eval.c" "fns.c" "print.c" "lread.c"
|
||||
- "abbrev.c" "syntax.c" "unexcoff.c"
|
||||
+ "syntax.c" "unexcoff.c"
|
||||
"bytecode.c" "process.c" "callproc.c" "doprnt.c"
|
||||
- "x11term.c" "x11fns.c"))
|
||||
+ "xterm.c" "x11fns.c"))
|
||||
|
||||
|
||||
(defun find-gc-unsafe ()
|
||||
"Return a list of unsafe functions--that is, which can call GC.
|
||||
-Also store it in `find-gc-unsafe'."
|
||||
+Also store it in `find-gc-unsafe-list'."
|
||||
(trace-call-tree nil)
|
||||
(trace-use-tree)
|
||||
(find-unsafe-funcs 'Fgarbage_collect)
|
||||
@@ -102,47 +103,38 @@ Also store it in `find-gc-unsafe'."
|
||||
|
||||
|
||||
|
||||
-(defun trace-call-tree (&optional already-setup)
|
||||
+(defun trace-call-tree (&optional ignored)
|
||||
(message "Setting up directories...")
|
||||
- (or already-setup
|
||||
- (progn
|
||||
- ;; Gee, wouldn't a built-in "system" function be handy here.
|
||||
- (call-process "csh" nil nil nil "-c" "rm -rf /tmp/esrc")
|
||||
- (call-process "csh" nil nil nil "-c" "mkdir /tmp/esrc")
|
||||
- (call-process "csh" nil nil nil "-c"
|
||||
- (format "ln -s %s/*.[ch] /tmp/esrc"
|
||||
- find-gc-source-directory))))
|
||||
- (with-current-buffer (get-buffer-create "*Trace Call Tree*")
|
||||
- (setq find-gc-subrs-called nil)
|
||||
- (let ((case-fold-search nil)
|
||||
- (files find-gc-source-files)
|
||||
- name entry)
|
||||
- (while files
|
||||
- (message "Compiling %s..." (car files))
|
||||
- (call-process "csh" nil nil nil "-c"
|
||||
- (format "gcc -dr -c /tmp/esrc/%s -o /dev/null"
|
||||
- (car files)))
|
||||
- (erase-buffer)
|
||||
- (insert-file-contents (concat "/tmp/esrc/" (car files) ".rtl"))
|
||||
- (while (re-search-forward ";; Function \\|(call_insn " nil t)
|
||||
- (if (= (char-after (- (point) 3)) ?o)
|
||||
- (progn
|
||||
- (looking-at "[a-zA-Z0-9_]+")
|
||||
- (setq name (intern (buffer-substring (match-beginning 0)
|
||||
- (match-end 0))))
|
||||
- (message "%s : %s" (car files) name)
|
||||
- (setq entry (list name)
|
||||
- find-gc-subrs-called (cons entry find-gc-subrs-called)))
|
||||
- (if (looking-at ".*\n?.*\"\\([A-Za-z0-9_]+\\)\"")
|
||||
- (progn
|
||||
- (setq name (intern (buffer-substring (match-beginning 1)
|
||||
- (match-end 1))))
|
||||
- (or (memq name (cdr entry))
|
||||
- (setcdr entry (cons name (cdr entry))))))))
|
||||
- (delete-file (concat "/tmp/esrc/" (car files) ".rtl"))
|
||||
- (setq files (cdr files)))))
|
||||
-)
|
||||
-
|
||||
+ (setq find-gc-subrs-called nil)
|
||||
+ (let ((case-fold-search nil)
|
||||
+ (default-directory find-gc-source-directory)
|
||||
+ (files find-gc-source-files)
|
||||
+ name entry rtlfile)
|
||||
+ (dolist (file files)
|
||||
+ (message "Compiling %s..." file)
|
||||
+ (call-process "gcc" nil nil nil "-I" "." "-I" "../lib"
|
||||
+ "-fdump-rtl-expand" "-o" null-device "-c" file)
|
||||
+ (setq rtlfile
|
||||
+ (file-expand-wildcards (format "%s.*.expand" file) t))
|
||||
+ (if (/= 1 (length rtlfile))
|
||||
+ (message "Error compiling `%s'?" file)
|
||||
+ (with-temp-buffer
|
||||
+ (insert-file-contents (setq rtlfile (car rtlfile)))
|
||||
+ (delete-file rtlfile)
|
||||
+ (while (re-search-forward ";; Function \\|(call_insn " nil t)
|
||||
+ (if (= (char-after (- (point) 3)) ?o)
|
||||
+ (progn
|
||||
+ (looking-at "[a-zA-Z0-9_]+")
|
||||
+ (setq name (intern (match-string 0)))
|
||||
+ (message "%s : %s" (car files) name)
|
||||
+ (setq entry (list name)
|
||||
+ find-gc-subrs-called
|
||||
+ (cons entry find-gc-subrs-called)))
|
||||
+ (if (looking-at ".*\n?.*\"\\([A-Za-z0-9_]+\\)\"")
|
||||
+ (progn
|
||||
+ (setq name (intern (match-string 1)))
|
||||
+ (or (memq name (cdr entry))
|
||||
+ (setcdr entry (cons name (cdr entry)))))))))))))
|
||||
|
||||
(defun trace-use-tree ()
|
||||
(setq find-gc-subrs-callers (mapcar 'list (mapcar 'car find-gc-subrs-called)))
|
|
@ -0,0 +1,16 @@
|
|||
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
|
||||
index 19e513a..1a28e26 100644
|
||||
--- a/lisp/net/browse-url.el
|
||||
+++ b/lisp/net/browse-url.el
|
||||
@@ -1335,7 +1335,10 @@ used instead of `browse-url-new-window-flag'."
|
||||
(kill-buffer nil)))
|
||||
(if (and pid (zerop (signal-process pid 0))) ; Mosaic running
|
||||
(save-excursion
|
||||
- (find-file (format "/tmp/Mosaic.%d" pid))
|
||||
+ ;; This is a predictable temp-file name, which is bad,
|
||||
+ ;; but it is what Mosaic uses/used.
|
||||
+ ;; So it's not Emacs's problem. http://bugs.debian.org/747100
|
||||
+ (find-file (format "/tmp/Mosaic.%d" pid))
|
||||
(erase-buffer)
|
||||
(insert (if (browse-url-maybe-new-window new-window)
|
||||
"newwin\n"
|
|
@ -0,0 +1,70 @@
|
|||
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
|
||||
index 29a6344..f6c6710 100644
|
||||
--- a/lisp/net/tramp-sh.el
|
||||
+++ b/lisp/net/tramp-sh.el
|
||||
@@ -605,9 +605,9 @@ This list is used for copying/renaming with out-of-band methods.
|
||||
See `tramp-actions-before-shell' for more info.")
|
||||
|
||||
(defconst tramp-uudecode
|
||||
- "(echo begin 600 /tmp/tramp.$$; tail +2) | uudecode
|
||||
-cat /tmp/tramp.$$
|
||||
-rm -f /tmp/tramp.$$"
|
||||
+ "(echo begin 600 %t; tail +2) | uudecode
|
||||
+cat %t
|
||||
+rm -f %t"
|
||||
"Shell function to implement `uudecode' to standard output.
|
||||
Many systems support `uudecode -o /dev/stdout' or `uudecode -o -'
|
||||
for this or `uudecode -p', but some systems don't, and for them
|
||||
@@ -3938,7 +3938,7 @@ Each item is a list that looks like this:
|
||||
|
||||
\(FORMAT ENCODING DECODING [TEST]\)
|
||||
|
||||
-FORMAT is symbol describing the encoding/decoding format. It can be
|
||||
+FORMAT is a symbol describing the encoding/decoding format. It can be
|
||||
`b64' for base64 encoding, `uu' for uu encoding, or `pack' for simple packing.
|
||||
|
||||
ENCODING and DECODING can be strings, giving commands, or symbols,
|
||||
@@ -3948,9 +3948,11 @@ filename will be put into the command line at that spot. If the
|
||||
specifier is not present, the input should be read from standard
|
||||
input.
|
||||
|
||||
-If they are variables, this variable is a string containing a Perl
|
||||
-implementation for this functionality. This Perl program will be transferred
|
||||
-to the remote host, and it is available as shell function with the same name.
|
||||
+If they are variables, this variable is a string containing a
|
||||
+Perl or Shell implementation for this functionality. This
|
||||
+program will be transferred to the remote host, and it is
|
||||
+available as shell function with the same name. A \"%t\" format
|
||||
+specifier in the variable value denotes a temporary file
|
||||
|
||||
The optional TEST command can be used for further tests, whether
|
||||
ENCODING and DECODING are applicable.")
|
||||
@@ -4025,10 +4027,25 @@ Goes through the list `tramp-local-coding-commands' and
|
||||
(throw 'wont-work-remote nil))
|
||||
|
||||
(when (not (stringp rem-dec))
|
||||
- (let ((name (symbol-name rem-dec)))
|
||||
+ (let ((name (symbol-name rem-dec))
|
||||
+ (value (symbol-value rem-dec))
|
||||
+ tmpfile)
|
||||
(while (string-match (regexp-quote "-") name)
|
||||
- (setq name (replace-match "_" nil t name)))
|
||||
- (tramp-maybe-send-script vec (symbol-value rem-dec) name)
|
||||
+ (setq name (replace-match "_" nil t name)))
|
||||
+ (when (string-match "%t" value)
|
||||
+ (setq tmpfile
|
||||
+ (make-temp-name
|
||||
+ (expand-file-name
|
||||
+ tramp-temp-name-prefix
|
||||
+ (tramp-get-remote-tmpdir vec)))
|
||||
+ value
|
||||
+ (format-spec
|
||||
+ value
|
||||
+ (format-spec-make
|
||||
+ ?t
|
||||
+ (tramp-file-name-handler
|
||||
+ 'file-remote-p tmpfile 'localname)))))
|
||||
+ (tramp-maybe-send-script vec value name)
|
||||
(setq rem-dec name)))
|
||||
(tramp-message
|
||||
vec 5
|
|
@ -0,0 +1,14 @@
|
|||
diff --git a/lisp/simple.el b/lisp/simple.el
|
||||
index 57307ba..10d7797 100644
|
||||
--- a/lisp/simple.el
|
||||
+++ b/lisp/simple.el
|
||||
@@ -3987,7 +3987,8 @@ run `deactivate-mark-hook'."
|
||||
;; the region prior to the last command modifying the buffer.
|
||||
;; Set the selection to that, or to the current region.
|
||||
(cond (saved-region-selection
|
||||
- (x-set-selection 'PRIMARY saved-region-selection)
|
||||
+ (if (x-selection-owner-p 'PRIMARY)
|
||||
+ (x-set-selection 'PRIMARY saved-region-selection))
|
||||
(setq saved-region-selection nil))
|
||||
;; If another program has acquired the selection, region
|
||||
;; deactivation should not clobber it (Bug#11772).
|
|
@ -0,0 +1,39 @@
|
|||
diff --git a/configure.ac b/configure.ac
|
||||
index 62f53a3..a6f2f04 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -1874,6 +1874,7 @@ if test "${HAVE_X11}" = "yes"; then
|
||||
AC_MSG_RESULT($emacs_xkb)
|
||||
if test $emacs_xkb = yes; then
|
||||
AC_DEFINE(HAVE_XKBGETKEYBOARD, 1, [Define to 1 if you have the XkbGetKeyboard function.])
|
||||
+ AC_DEFINE(HAVE_XKB, 1, [Define to 1 if you have the Xkb extension.])
|
||||
fi
|
||||
|
||||
AC_CHECK_FUNCS(XrmSetDatabase XScreenResourceString \
|
||||
diff --git a/src/xterm.c b/src/xterm.c
|
||||
index fb407c8..102ce43 100644
|
||||
--- a/src/xterm.c
|
||||
+++ b/src/xterm.c
|
||||
@@ -130,6 +130,10 @@ extern void _XEditResCheckMessages (Widget, XtPointer, XEvent *, Boolean *);
|
||||
|
||||
#include "bitmaps/gray.xbm"
|
||||
|
||||
+#ifdef HAVE_XKB
|
||||
+#include <X11/XKBlib.h>
|
||||
+#endif
|
||||
+
|
||||
/* Default to using XIM if available. */
|
||||
#ifdef USE_XIM
|
||||
int use_xim = 1;
|
||||
@@ -3243,7 +3247,11 @@ XTring_bell (struct frame *f)
|
||||
else
|
||||
{
|
||||
block_input ();
|
||||
+#ifdef HAVE_XKB
|
||||
+ XkbBell (FRAME_X_DISPLAY (f), None, 0, None);
|
||||
+#else
|
||||
XBell (FRAME_X_DISPLAY (f), 0);
|
||||
+#endif
|
||||
XFlush (FRAME_X_DISPLAY (f));
|
||||
unblock_input ();
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
|
||||
index ce3a332..749ec66 100644
|
||||
--- a/lisp/emacs-lisp/bytecomp.el
|
||||
+++ b/lisp/emacs-lisp/bytecomp.el
|
||||
@@ -1981,11 +1981,7 @@ Call from the source buffer."
|
||||
;; >4 byte x version %d
|
||||
(insert
|
||||
";ELC" 23 "\000\000\000\n"
|
||||
- ";;; Compiled by "
|
||||
- (or (and (boundp 'user-mail-address) user-mail-address)
|
||||
- (concat (user-login-name) "@" (system-name)))
|
||||
- " on " (current-time-string) "\n"
|
||||
- ";;; from file " filename "\n"
|
||||
+ ";;; Compiled\n"
|
||||
";;; in Emacs version " emacs-version "\n"
|
||||
";;; with"
|
||||
(cond
|
|
@ -0,0 +1,43 @@
|
|||
diff --git a/src/gtkutil.c b/src/gtkutil.c
|
||||
index 44f828c..d434a48 100644
|
||||
--- a/src/gtkutil.c
|
||||
+++ b/src/gtkutil.c
|
||||
@@ -784,6 +784,14 @@ xg_hide_tooltip (FRAME_PTR f)
|
||||
General functions for creating widgets, resizing, events, e.t.c.
|
||||
***********************************************************************/
|
||||
|
||||
+static void
|
||||
+my_log_handler (const gchar *log_domain, GLogLevelFlags log_level,
|
||||
+ const gchar *msg, gpointer user_data)
|
||||
+{
|
||||
+ if (!strstr (msg, "visible children"))
|
||||
+ fprintf (stderr, "XX %s-WARNING **: %s\n", log_domain, msg);
|
||||
+}
|
||||
+
|
||||
/* Make a geometry string and pass that to GTK. It seems this is the
|
||||
only way to get geometry position right if the user explicitly
|
||||
asked for a position when starting Emacs.
|
||||
@@ -799,6 +807,7 @@ xg_set_geometry (FRAME_PTR f)
|
||||
int top = f->top_pos;
|
||||
int yneg = f->size_hint_flags & YNegative;
|
||||
char geom_str[sizeof "=x--" + 4 * INT_STRLEN_BOUND (int)];
|
||||
+ guint id;
|
||||
|
||||
if (xneg)
|
||||
left = -left;
|
||||
@@ -811,9 +820,15 @@ xg_set_geometry (FRAME_PTR f)
|
||||
(xneg ? '-' : '+'), left,
|
||||
(yneg ? '-' : '+'), top);
|
||||
|
||||
+ /* Silence warning about visible children. */
|
||||
+ id = g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING | G_LOG_FLAG_FATAL
|
||||
+ | G_LOG_FLAG_RECURSION, my_log_handler, NULL);
|
||||
+
|
||||
if (!gtk_window_parse_geometry (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
|
||||
geom_str))
|
||||
fprintf (stderr, "Failed to parse: '%s'\n", geom_str);
|
||||
+
|
||||
+ g_log_remove_handler ("Gtk", id);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
diff --git a/doc/man/emacs.1 b/doc/man/emacs.1
|
||||
index 4f7f8d2..50d8038 100644
|
||||
--- a/doc/man/emacs.1
|
||||
+++ b/doc/man/emacs.1
|
||||
@@ -61,6 +61,9 @@ The following options are of general interest:
|
||||
Edit
|
||||
.IR file .
|
||||
.TP
|
||||
+.BI \-\-chdir " directory\fR\fP "
|
||||
+Change to directory
|
||||
+.TP
|
||||
.BI \-\-file " file\fR,\fP " \-\-find-file " file\fR,\fP " \-\-visit " file"
|
||||
The same as specifying
|
||||
.I file
|
||||
@@ -82,9 +85,15 @@ and
|
||||
.BR \-q ", " \-\-no\-init\-file
|
||||
Do not load an init file.
|
||||
.TP
|
||||
+.BR \-nl ", " \-\-no\-shared\-memory
|
||||
+Do not use shared memory
|
||||
+.TP
|
||||
.B \-\-no\-site\-file
|
||||
Do not load the site-wide startup file.
|
||||
.TP
|
||||
+.BR \-nsl ", " \-\-no\-site\-list
|
||||
+Do not add site-lisp directories to load-path
|
||||
+.TP
|
||||
.B \-\-no\-desktop
|
||||
Do not load a saved desktop.
|
||||
.TP
|
||||
@@ -325,6 +334,9 @@ in iconified state.
|
||||
.BR \-nbc ", " \-\-no\-blinking\-cursor
|
||||
Disable blinking cursor.
|
||||
.TP
|
||||
+.BR \-\-parent-id " xid\fR\fP "
|
||||
+Set parent window
|
||||
+.TP
|
||||
.BR \-nw ", " \-\-no\-window\-system
|
||||
Tell
|
||||
.I Emacs
|
|
@ -1,31 +0,0 @@
|
|||
From a56539c1d7ef7aa56e575685bdfe1406aebb518d Mon Sep 17 00:00:00 2001
|
||||
From: Peter Oliver <git@mavit.org.uk>
|
||||
Date: Wed, 5 Feb 2020 12:42:04 +0000
|
||||
Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20assemble=20systemdunitdir=20fro?=
|
||||
=?UTF-8?q?m=20`libdir`?=
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
On 64 bit Fedora, `libdir` is `/usr/lib64`, whereas systemd services
|
||||
live under `/usr/lib/systemd`.
|
||||
---
|
||||
Makefile.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Makefile.in b/Makefile.in
|
||||
index 2c82c49fba..b2468eb824 100644
|
||||
--- a/Makefile.in
|
||||
+++ b/Makefile.in
|
||||
@@ -208,7 +208,7 @@ appdatadir=
|
||||
# Other options include ~/.config/systemd/user/,
|
||||
# $XDG_RUNTIME_DIR/systemd/user/
|
||||
# It seems the user may end up having to make a manual link...
|
||||
-systemdunitdir=$(libdir)/systemd/user
|
||||
+systemdunitdir=$(shell pkg-config --variable=systemduserunitdir systemd)
|
||||
|
||||
# Where the etc/images/icons/hicolor directory is to be installed.
|
||||
icondir=$(datarootdir)/icons
|
||||
--
|
||||
2.24.1
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
diff --git a/src/xselect.c b/src/xselect.c
|
||||
index b3017c3..4ba4984 100644
|
||||
--- a/src/xselect.c
|
||||
+++ b/src/xselect.c
|
||||
@@ -2659,6 +2659,8 @@ x_send_client_event (Lisp_Object display, Lisp_Object dest, Lisp_Object from,
|
||||
|
||||
block_input ();
|
||||
|
||||
+ event.xclient.send_event = True;
|
||||
+ event.xclient.serial = 0;
|
||||
event.xclient.message_type = message_type;
|
||||
event.xclient.display = dpyinfo->display;
|
||||
|
||||
@@ -2667,18 +2669,19 @@ x_send_client_event (Lisp_Object display, Lisp_Object dest, Lisp_Object from,
|
||||
event.xclient.window = to_root ? FRAME_OUTER_WINDOW (f) : wdest;
|
||||
|
||||
|
||||
- memset (event.xclient.data.b, 0, sizeof (event.xclient.data.b));
|
||||
+ memset (event.xclient.data.l, 0, sizeof (event.xclient.data.l));
|
||||
x_fill_property_data (dpyinfo->display, values, event.xclient.data.b,
|
||||
event.xclient.format);
|
||||
|
||||
/* If event mask is 0 the event is sent to the client that created
|
||||
the destination window. But if we are sending to the root window,
|
||||
- there is no such client. Then we set the event mask to 0xffff. The
|
||||
+ there is no such client. Then we set the event mask to 0xffffff. The
|
||||
event then goes to clients selecting for events on the root window. */
|
||||
x_catch_errors (dpyinfo->display);
|
||||
{
|
||||
int propagate = to_root ? False : True;
|
||||
- unsigned mask = to_root ? 0xffff : 0;
|
||||
+ long mask = to_root ? 0xffffff : 0;
|
||||
+
|
||||
XSendEvent (dpyinfo->display, wdest, propagate, mask, &event);
|
||||
XFlush (dpyinfo->display);
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/lisp/org/org.el b/lisp/org/org.el
|
||||
index cc4c93f..285b71c 100644
|
||||
--- a/lisp/org/org.el
|
||||
+++ b/lisp/org/org.el
|
||||
@@ -1750,7 +1750,7 @@ See `org-file-apps'.")
|
||||
(auto-mode . emacs)
|
||||
("\\.mm\\'" . default)
|
||||
("\\.x?html?\\'" . default)
|
||||
- ("\\.pdf\\'" . default)
|
||||
+ ("\\.pdf\\'" . xdg-open)
|
||||
)
|
||||
"External applications for opening `file:path' items in a document.
|
||||
Org-mode uses system defaults for different file types, but
|
|
@ -1,171 +0,0 @@
|
|||
From e81f1faca4382ed5c8f15fec84fb7c900a5468f9 Mon Sep 17 00:00:00 2001
|
||||
From: Glenn Morris <rgm@gnu.org>
|
||||
Date: Mon, 11 Oct 2021 14:03:26 +0200
|
||||
Subject: Make the installed pmdp file use a fingerprint
|
||||
|
||||
* Makefile.in (EMACS_PDMP): Use --fingerprint.
|
||||
|
||||
* doc/emacs/cmdargs.texi (Action Arguments): Document --fingerprint.
|
||||
|
||||
* src/emacs.c (load_pdump): Load the fingerprinted version of the
|
||||
pdmp file (bug#42790).
|
||||
(main): Support --fingerprint.
|
||||
|
||||
* src/pdumper.c (dump_fingerprint): Make non-static.
|
||||
|
||||
* src/pdumper.h: Declare dump_fingerprint.
|
||||
---
|
||||
Makefile.in | 3 ++-
|
||||
doc/emacs/cmdargs.texi | 5 +++++
|
||||
src/emacs.c | 31 +++++++++++++++++++++++++++++--
|
||||
src/pdumper.c | 2 +-
|
||||
src/pdumper.h | 3 +++
|
||||
5 files changed, 40 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/Makefile.in b/Makefile.in
|
||||
index 5fc1edc..c6c507f 100644
|
||||
--- a/Makefile.in
|
||||
+++ b/Makefile.in
|
||||
@@ -313,6 +313,7 @@ TRANSFORM = @program_transform_name@
|
||||
EMACS_NAME = `echo emacs | sed '$(TRANSFORM)'`
|
||||
EMACS = ${EMACS_NAME}${EXEEXT}
|
||||
EMACSFULL = `echo emacs-${version} | sed '$(TRANSFORM)'`${EXEEXT}
|
||||
+EMACS_PDMP = `./src/emacs${EXEEXT} --fingerprint 2>&1 | sed 's/.* //'`.pdmp
|
||||
|
||||
# Subdirectories to make recursively.
|
||||
SUBDIR = $(NTDIR) lib lib-src src lisp
|
||||
@@ -521,7 +522,7 @@ install-arch-dep: src install-arch-indep install-etcdoc install-$(NTDIR)
|
||||
ifeq (${ns_self_contained},no)
|
||||
${INSTALL_PROGRAM} $(INSTALL_STRIP) src/emacs${EXEEXT} "$(DESTDIR)${bindir}/$(EMACSFULL)"
|
||||
ifeq (${DUMPING},pdumper)
|
||||
- ${INSTALL_DATA} src/emacs.pdmp "$(DESTDIR)${libexecdir}/emacs/${version}/${configuration}"/emacs.pdmp
|
||||
+ ${INSTALL_DATA} src/emacs.pdmp "$(DESTDIR)${libexecdir}/emacs/${version}/${configuration}"/emacs-${EMACS_PDMP}
|
||||
endif
|
||||
-chmod 755 "$(DESTDIR)${bindir}/$(EMACSFULL)"
|
||||
ifndef NO_BIN_LINK
|
||||
diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi
|
||||
index d5177fa..313682b 100644
|
||||
--- a/doc/emacs/cmdargs.texi
|
||||
+++ b/doc/emacs/cmdargs.texi
|
||||
@@ -185,6 +185,11 @@ successfully.
|
||||
@item --version
|
||||
@opindex --version
|
||||
Print Emacs version, then exit successfully.
|
||||
+
|
||||
+@item --fingerprint
|
||||
+@opindex --fingerprint
|
||||
+Print the Emacs ``fingerprint'', which is used to uniquely identify
|
||||
+the compiled version of Emacs.
|
||||
@end table
|
||||
|
||||
@node Initial Options
|
||||
diff --git a/src/emacs.c b/src/emacs.c
|
||||
index 866e43f..cda7a9b 100644
|
||||
--- a/src/emacs.c
|
||||
+++ b/src/emacs.c
|
||||
@@ -133,6 +133,7 @@ extern char etext;
|
||||
#endif
|
||||
|
||||
#include "pdumper.h"
|
||||
+#include "fingerprint.h"
|
||||
#include "epaths.h"
|
||||
|
||||
static const char emacs_version[] = PACKAGE_VERSION;
|
||||
@@ -255,6 +256,7 @@ Initialization options:\n\
|
||||
#ifdef HAVE_PDUMPER
|
||||
"\
|
||||
--dump-file FILE read dumped state from FILE\n\
|
||||
+--fingerprint output fingerprint and exit\n\
|
||||
",
|
||||
#endif
|
||||
#if SECCOMP_USABLE
|
||||
@@ -830,6 +832,8 @@ load_pdump (int argc, char **argv)
|
||||
const char *const suffix = ".pdmp";
|
||||
int result;
|
||||
char *emacs_executable = argv[0];
|
||||
+ ptrdiff_t hexbuf_size;
|
||||
+ char *hexbuf;
|
||||
const char *strip_suffix =
|
||||
#if defined DOS_NT || defined CYGWIN
|
||||
".exe"
|
||||
@@ -927,9 +931,15 @@ load_pdump (int argc, char **argv)
|
||||
/* Look for "emacs.pdmp" in PATH_EXEC. We hardcode "emacs" in
|
||||
"emacs.pdmp" so that the Emacs binary still works if the user
|
||||
copies and renames it. */
|
||||
+ hexbuf_size = 2 * sizeof fingerprint;
|
||||
+ hexbuf = xmalloc (hexbuf_size + 1);
|
||||
+ hexbuf_digest (hexbuf, (char *)fingerprint, sizeof fingerprint);
|
||||
+ hexbuf[hexbuf_size] = '\0';
|
||||
needed = (strlen (path_exec)
|
||||
+ 1
|
||||
+ strlen (argv0_base)
|
||||
+ + 1
|
||||
+ + strlen (hexbuf)
|
||||
+ strlen (suffix)
|
||||
+ 1);
|
||||
if (bufsize < needed)
|
||||
@@ -937,8 +947,8 @@ load_pdump (int argc, char **argv)
|
||||
xfree (dump_file);
|
||||
dump_file = xpalloc (NULL, &bufsize, needed - bufsize, -1, 1);
|
||||
}
|
||||
- sprintf (dump_file, "%s%c%s%s",
|
||||
- path_exec, DIRECTORY_SEP, argv0_base, suffix);
|
||||
+ sprintf (dump_file, "%s%c%s-%s%s",
|
||||
+ path_exec, DIRECTORY_SEP, argv0_base, hexbuf, suffix);
|
||||
#if !defined (NS_SELF_CONTAINED)
|
||||
/* Assume the Emacs binary lives in a sibling directory as set up by
|
||||
the default installation configuration. */
|
||||
@@ -1387,6 +1397,23 @@ main (int argc, char **argv)
|
||||
exit (0);
|
||||
}
|
||||
|
||||
+#ifdef HAVE_PDUMPER
|
||||
+ if (argmatch (argv, argc, "-fingerprint", "--fingerprint", 4,
|
||||
+ NULL, &skip_args))
|
||||
+ {
|
||||
+ if (initialized)
|
||||
+ {
|
||||
+ dump_fingerprint ("fingerprint", (unsigned char *)fingerprint);
|
||||
+ exit (0);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ fputs ("Not initialized\n", stderr);
|
||||
+ exit (1);
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
emacs_wd = emacs_get_current_dir_name ();
|
||||
#ifdef HAVE_PDUMPER
|
||||
if (dumped_with_pdumper_p ())
|
||||
diff --git a/src/pdumper.c b/src/pdumper.c
|
||||
index 11c680d..977f4fb 100644
|
||||
--- a/src/pdumper.c
|
||||
+++ b/src/pdumper.c
|
||||
@@ -312,7 +312,7 @@ dump_reloc_set_offset (struct dump_reloc *reloc, dump_off offset)
|
||||
error ("dump relocation out of range");
|
||||
}
|
||||
|
||||
-static void
|
||||
+void
|
||||
dump_fingerprint (char const *label,
|
||||
unsigned char const xfingerprint[sizeof fingerprint])
|
||||
{
|
||||
diff --git a/src/pdumper.h b/src/pdumper.h
|
||||
index deec9af..bc339c4 100644
|
||||
--- a/src/pdumper.h
|
||||
+++ b/src/pdumper.h
|
||||
@@ -50,6 +50,9 @@ enum { PDUMPER_NO_OBJECT = -1 };
|
||||
#define PDUMPER_REMEMBER_SCALAR(thing) \
|
||||
pdumper_remember_scalar (&(thing), sizeof (thing))
|
||||
|
||||
+extern void dump_fingerprint (const char *label,
|
||||
+ const unsigned char *xfingerprint);
|
||||
+
|
||||
extern void pdumper_remember_scalar_impl (void *data, ptrdiff_t nbytes);
|
||||
|
||||
INLINE void
|
||||
--
|
||||
cgit v1.1
|
||||
|
|
@ -1,22 +1,16 @@
|
|||
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
|
||||
index 0a3a49d868..b6c0975857 100644
|
||||
index 1d28de7..1daec44 100644
|
||||
--- a/lisp/textmodes/ispell.el
|
||||
+++ b/lisp/textmodes/ispell.el
|
||||
@@ -191,12 +191,12 @@ Must be greater than 1."
|
||||
:type 'integer)
|
||||
@@ -351,9 +351,9 @@ Must be greater than 1."
|
||||
:group 'ispell)
|
||||
|
||||
(defcustom ispell-program-name
|
||||
- (or (executable-find "aspell")
|
||||
- (executable-find "ispell")
|
||||
+ ;; Enchant is commonly installed as `enchant-2', so use this
|
||||
+ ;; name and avoid old versions of `enchant'.
|
||||
+ (or (executable-find "enchant-2")
|
||||
(executable-find "hunspell")
|
||||
- ;; Enchant is commonly installed as `enchant-2', so use this
|
||||
- ;; name and avoid old versions of `enchant'.
|
||||
- (executable-find "enchant-2")
|
||||
+ (or (executable-find "hunspell")
|
||||
+ (executable-find "aspell")
|
||||
+ (executable-find "ispell")
|
||||
(executable-find "ispell")
|
||||
- (executable-find "hunspell")
|
||||
"ispell")
|
||||
"Program invoked by \\[ispell-word] and \\[ispell-region] commands."
|
||||
:type 'string
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
diff --git a/src/gtkutil.c b/src/gtkutil.c
|
||||
index e76b0a7..b3aa335 100644
|
||||
--- a/src/gtkutil.c
|
||||
+++ b/src/gtkutil.c
|
||||
@@ -1079,7 +1079,9 @@ style_changed_cb (GObject *go,
|
||||
FOR_EACH_FRAME (rest, frame)
|
||||
{
|
||||
FRAME_PTR f = XFRAME (frame);
|
||||
- if (FRAME_X_DISPLAY (f) == dpy)
|
||||
+ if (FRAME_LIVE_P (f)
|
||||
+ && FRAME_X_P (f)
|
||||
+ && FRAME_X_DISPLAY (f) == dpy)
|
||||
{
|
||||
x_set_scroll_bar_default_width (f);
|
||||
xg_frame_set_char_size (f, FRAME_COLS (f), FRAME_LINES (f));
|
|
@ -1,11 +0,0 @@
|
|||
--- a/src/gnutls.c 2016-01-24 10:29:58.000000000 +0100
|
||||
+++ b/src/gnutls.c 2016-02-02 09:32:28.477274274 +0100
|
||||
@@ -1557,7 +1557,7 @@
|
||||
gnutls_certificate_credentials_t x509_cred = NULL;
|
||||
gnutls_anon_client_credentials_t anon_cred = NULL;
|
||||
Lisp_Object global_init;
|
||||
- char const *priority_string_ptr = "NORMAL"; /* default priority string. */
|
||||
+ char const *priority_string_ptr = "@SYSTEM"; /* default priority string. */
|
||||
char *c_hostname;
|
||||
|
||||
/* Placeholders for the property list elements. */
|
|
@ -0,0 +1,287 @@
|
|||
diff --git a/leim/quail/latin-ltx.el b/leim/quail/latin-ltx.el
|
||||
index 024bb62..1e2466a 100644
|
||||
--- a/leim/quail/latin-ltx.el
|
||||
+++ b/leim/quail/latin-ltx.el
|
||||
@@ -43,6 +43,26 @@ system, including many technical ones. Examples:
|
||||
t t nil nil nil nil nil nil nil t)
|
||||
|
||||
(eval-when-compile
|
||||
+ (require 'cl-lib)
|
||||
+
|
||||
+ (defconst latin-ltx--mark-map
|
||||
+ '(("DOT BELOW" . "d")
|
||||
+ ("DOT ABOVE" . ".")
|
||||
+ ("OGONEK" . "k")
|
||||
+ ("CEDILLA" . "c")
|
||||
+ ("CARON" . "v")
|
||||
+ ;; ("HOOK ABOVE" . ??)
|
||||
+ ("MACRON" . "=")
|
||||
+ ("BREVE" . "u")
|
||||
+ ("TILDE" . "~")
|
||||
+ ("GRAVE" . "`")
|
||||
+ ("CIRCUMFLEX" . "^")
|
||||
+ ("DIAERESIS" . "\"")
|
||||
+ ("DOUBLE ACUTE" . "H")
|
||||
+ ("ACUTE" . "'")))
|
||||
+
|
||||
+ (defconst latin-ltx--mark-re (regexp-opt (mapcar #'car latin-ltx--mark-map)))
|
||||
+
|
||||
(defun latin-ltx--ascii-p (char)
|
||||
(and (characterp char) (< char 128)))
|
||||
|
||||
@@ -53,7 +73,8 @@ system, including many technical ones. Examples:
|
||||
(pcase rule
|
||||
(`(,_ ,(pred characterp)) (push rule newrules)) ;; Normal quail rule.
|
||||
(`(,seq ,re)
|
||||
- (let ((count 0))
|
||||
+ (let ((count 0)
|
||||
+ (re (eval re t)))
|
||||
(dolist (pair (ucs-names))
|
||||
(let ((name (car pair))
|
||||
(char (cdr pair)))
|
||||
@@ -68,9 +89,27 @@ system, including many technical ones. Examples:
|
||||
(push (list x char) newrules))
|
||||
(setq count (1+ count))
|
||||
(push (list keys char) newrules))))))
|
||||
- ;(message "latin-ltx: %d mapping for %S" count re)
|
||||
+ ;; (message "latin-ltx: %d mapping for %S" count re)
|
||||
))))
|
||||
- `(quail-define-rules ,@(nreverse (delete-dups newrules))))))
|
||||
+ (setq newrules (delete-dups newrules))
|
||||
+ (let ((rules (copy-sequence newrules)))
|
||||
+ (while rules
|
||||
+ (let ((rule (pop rules)))
|
||||
+ (when (assoc (car rule) rules)
|
||||
+ (let ((conflicts (list (cadr rule)))
|
||||
+ (tail rules)
|
||||
+ c)
|
||||
+ (while (setq c (assoc (car rule) tail))
|
||||
+ (push (cadr c) conflicts)
|
||||
+ (setq tail (cdr (memq c tail)))
|
||||
+ (setq rules (delq c rules)))
|
||||
+ (message "Conflict for %S: %S"
|
||||
+ (car rule) (apply #'string conflicts)))))))
|
||||
+ (let ((inputs (mapcar #'car newrules)))
|
||||
+ (setq inputs (delete-dups inputs))
|
||||
+ (message "latin-ltx: %d rules (+ %d conflicts)!"
|
||||
+ (length inputs) (- (length newrules) (length inputs))))
|
||||
+ `(quail-define-rules ,@(nreverse newrules)))))
|
||||
|
||||
(latin-ltx--define-rules
|
||||
("!`" ?¡)
|
||||
@@ -89,69 +128,35 @@ system, including many technical ones. Examples:
|
||||
("$^o$" ?º)
|
||||
("?`" ?¿)
|
||||
|
||||
- ("\\`" ?̀)
|
||||
- ("\\`{}" ?`)
|
||||
- ((lambda (name char)
|
||||
- (let ((c (if (match-end 1)
|
||||
- (downcase (match-string 2 name))
|
||||
- (match-string 2 name))))
|
||||
- (list (format "\\`{%s}" c) (format "\\`%s" c))))
|
||||
- "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH GRAVE")
|
||||
-
|
||||
- ("\\'" ?́)
|
||||
- ("\\'{}" ?´)
|
||||
- ((lambda (name char)
|
||||
- (let ((c (if (match-end 1)
|
||||
- (downcase (match-string 2 name))
|
||||
- (match-string 2 name))))
|
||||
- (list (format "\\'{%s}" c) (format "\\'%s" c))))
|
||||
- "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH ACUTE")
|
||||
-
|
||||
- ("\\^" ?̂)
|
||||
- ("\\^{}" ?^)
|
||||
((lambda (name char)
|
||||
- (let ((c (if (match-end 1)
|
||||
- (downcase (match-string 2 name))
|
||||
- (match-string 2 name))))
|
||||
- (list (format "\\^{%s}" c) (format "\\^%s" c))))
|
||||
- "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH CIRCUMFLEX")
|
||||
-
|
||||
- ("\\~" ?̃)
|
||||
- ("\\~{}" ?˜)
|
||||
- ((lambda (name char)
|
||||
- (let ((c (if (match-end 1)
|
||||
- (downcase (match-string 2 name))
|
||||
- (match-string 2 name))))
|
||||
- (list (format "\\~{%s}" c) (format "\\~%s" c))))
|
||||
- "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH TILDE")
|
||||
-
|
||||
- ("\\\"" ?̈)
|
||||
- ("\\\"{}" ?¨)
|
||||
- ((lambda (name char)
|
||||
- (let ((c (if (match-end 1)
|
||||
- (downcase (match-string 2 name))
|
||||
- (match-string 2 name))))
|
||||
- (list (format "\\\"{%s}" c) (format "\\\"%s" c))))
|
||||
- "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DIAERESIS")
|
||||
-
|
||||
- ("\\k" ?̨)
|
||||
- ("\\k{}" ?˛)
|
||||
+ (let* ((c (if (match-end 1)
|
||||
+ (downcase (match-string 2 name))
|
||||
+ (match-string 2 name)))
|
||||
+ (mark1 (cdr (assoc (match-string 3 name) latin-ltx--mark-map)))
|
||||
+ (mark2 (if (match-end 4)
|
||||
+ (cdr (assoc (match-string 4 name) latin-ltx--mark-map))))
|
||||
+ (marks (if mark2 (concat mark1 "\\" mark2) mark1)))
|
||||
+ (cl-assert mark1)
|
||||
+ (cons (format "\\%s{%s}" marks c)
|
||||
+ ;; Exclude "d" because we use "\\dh" for something else.
|
||||
+ (unless (member (or mark2 mark1) '("d"));; "k"
|
||||
+ (list (format "\\%s%s" marks c))))))
|
||||
+ (concat "\\`LATIN \\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH \\("
|
||||
+ latin-ltx--mark-re "\\)\\(?: AND \\("
|
||||
+ latin-ltx--mark-re "\\)\\)?\\'"))
|
||||
+
|
||||
((lambda (name char)
|
||||
- (let ((c (if (match-end 1)
|
||||
- (downcase (match-string 2 name))
|
||||
- (match-string 2 name))))
|
||||
- (list (format "\\k{%s}" c) ;; (format "\\k%s" c)
|
||||
- )))
|
||||
- "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH OGONEK")
|
||||
-
|
||||
- ("\\c" ?̧)
|
||||
- ("\\c{}" ?¸)
|
||||
+ (let* ((mark (cdr (assoc (match-string 1 name) latin-ltx--mark-map))))
|
||||
+ (cl-assert mark)
|
||||
+ (list (format "\\%s" mark))))
|
||||
+ (concat "\\`COMBINING \\(" latin-ltx--mark-re "\\)\\(?: ACCENT\\)?\\'"))
|
||||
+
|
||||
((lambda (name char)
|
||||
- (let ((c (if (match-end 1)
|
||||
- (downcase (match-string 2 name))
|
||||
- (match-string 2 name))))
|
||||
- (list (format "\\c{%s}" c) (format "\\c%s" c))))
|
||||
- "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH CEDILLA")
|
||||
+ (unless (latin-ltx--ascii-p char)
|
||||
+ (let* ((mark (cdr (assoc (match-string 1 name) latin-ltx--mark-map))))
|
||||
+ (cl-assert mark)
|
||||
+ (list (format "\\%s{}" mark)))))
|
||||
+ (concat "\\`\\(?:SPACING \\)?\\(" latin-ltx--mark-re "\\)\\(?: ACCENT\\)?\\'"))
|
||||
|
||||
("\\AA" ?Å) ;; ("{\\AA}" ?Å)
|
||||
("\\AE" ?Æ) ;; ("{\\AE}" ?Æ)
|
||||
@@ -166,42 +171,6 @@ system, including many technical ones. Examples:
|
||||
("$\\div$" ?÷) ("\\div" ?÷)
|
||||
("\\o" ?ø) ;; ("{\\o}" ?ø)
|
||||
|
||||
- ("\\=" ?̄)
|
||||
- ("\\={}" ?¯)
|
||||
- ((lambda (name char)
|
||||
- (let ((c (if (match-end 1)
|
||||
- (downcase (match-string 2 name))
|
||||
- (match-string 2 name))))
|
||||
- (list (format "\\={%s}" c) (format "\\=%s" c))))
|
||||
- "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH MACRON")
|
||||
-
|
||||
- ("\\u" ?̆)
|
||||
- ("\\u{}" ?˘)
|
||||
- ((lambda (name char)
|
||||
- (let ((c (if (match-end 1)
|
||||
- (downcase (match-string 2 name))
|
||||
- (match-string 2 name))))
|
||||
- (list (format "\\u{%s}" c) (format "\\u%s" c))))
|
||||
- "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH BREVE")
|
||||
-
|
||||
- ("\\." ?̇)
|
||||
- ("\\.{}" ?˙)
|
||||
- ((lambda (name char)
|
||||
- (let ((c (if (match-end 1)
|
||||
- (downcase (match-string 2 name))
|
||||
- (match-string 2 name))))
|
||||
- (list (format "\\.{%s}" c) (format "\\.%s" c))))
|
||||
- "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DOT ABOVE")
|
||||
-
|
||||
- ("\\v" ?̌)
|
||||
- ("\\v{}" ?ˇ)
|
||||
- ((lambda (name char)
|
||||
- (let ((c (if (match-end 1)
|
||||
- (downcase (match-string 2 name))
|
||||
- (match-string 2 name))))
|
||||
- (list (format "\\v{%s}" c) (format "\\v%s" c))))
|
||||
- "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH CARON")
|
||||
-
|
||||
("\\~{\\i}" ?ĩ)
|
||||
("\\={\\i}" ?ī)
|
||||
("\\u{\\i}" ?ĭ)
|
||||
@@ -214,12 +183,6 @@ system, including many technical ones. Examples:
|
||||
|
||||
("\\H" ?̋)
|
||||
("\\H{}" ?˝)
|
||||
- ((lambda (name char)
|
||||
- (let ((c (if (match-end 1)
|
||||
- (downcase (match-string 2 name))
|
||||
- (match-string 2 name))))
|
||||
- (list (format "\\H{%s}" c) (format "\\H%s" c))))
|
||||
- "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DOUBLE ACUTE")
|
||||
("\\U{o}" ?ő) ("\\Uo" ?ő) ;; FIXME: Was it just a typo?
|
||||
|
||||
("\\OE" ?Œ) ;; ("{\\OE}" ?Œ)
|
||||
@@ -248,16 +211,12 @@ system, including many technical ones. Examples:
|
||||
(string (if (match-end 2) ?^ ?_) basechar))))
|
||||
"\\(.*\\)SU\\(?:B\\|\\(PER\\)\\)SCRIPT \\(.*\\)")
|
||||
|
||||
- ("^\\gamma" ?ˠ)
|
||||
+ ((lambda (name _char)
|
||||
+ (let* ((basename (match-string 2 name))
|
||||
+ (name (if (match-end 1) (capitalize basename) (downcase basename))))
|
||||
+ (concat "^" (if (> (length name) 1) "\\") name)))
|
||||
+ "\\`MODIFIER LETTER \\(?:SMALL\\|CAPITA\\(L\\)\\) \\([[:ascii:]]+\\)\\'")
|
||||
|
||||
- ((lambda (name char)
|
||||
- (let* ((base (format "LATIN %s LETTER %s"
|
||||
- (match-string 1 name) (match-string 2 name)))
|
||||
- (basechar (cdr (assoc base (ucs-names)))))
|
||||
- (when (latin-ltx--ascii-p basechar)
|
||||
- (string ?^ basechar))))
|
||||
- "MODIFIER LETTER \\(SMALL\\|CAPITAL\\) \\(.*\\)")
|
||||
-
|
||||
;; ((lambda (name char) (format "^%s" (downcase (match-string 1 name))))
|
||||
;; "\\`MODIFIER LETTER SMALL \\(.\\)\\'")
|
||||
;; ("^\\1" "\\`MODIFIER LETTER CAPITAL \\(.\\)\\'")
|
||||
@@ -268,22 +227,14 @@ system, including many technical ones. Examples:
|
||||
|
||||
("\\b" ?̱)
|
||||
|
||||
- ("\\d" ?̣)
|
||||
- ;; ("\\d{}" ?) ;; FIXME: can't find the DOT BELOW character.
|
||||
- ((lambda (name char)
|
||||
- (let ((c (if (match-end 1)
|
||||
- (downcase (match-string 2 name))
|
||||
- (match-string 2 name))))
|
||||
- (list (format "\\d{%s}" c) ;; (format "\\d%s" c)
|
||||
- )))
|
||||
- "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DOT BELOW")
|
||||
-
|
||||
("\\rq" ?’)
|
||||
|
||||
;; FIXME: Provides some useful entries (yen, euro, copyright, registered,
|
||||
;; currency, minus, micro), but also a lot of dubious ones.
|
||||
((lambda (name char)
|
||||
- (unless (latin-ltx--ascii-p char)
|
||||
+ (unless (or (latin-ltx--ascii-p char)
|
||||
+ ;; We prefer COMBINING LONG SOLIDUS OVERLAY for \not.
|
||||
+ (member name '("NOT SIGN")))
|
||||
(concat "\\" (downcase (match-string 1 name)))))
|
||||
"\\`\\([^- ]+\\) SIGN\\'")
|
||||
|
||||
@@ -373,7 +324,6 @@ system, including many technical ones. Examples:
|
||||
("\\circledcirc" ?⊚)
|
||||
("\\circleddash" ?⊝)
|
||||
("\\clubsuit" ?♣)
|
||||
- ("\\colon" ?:) ;FIXME: Conflict with "COLON SIGN" ₡.
|
||||
("\\coloneq" ?≔)
|
||||
("\\complement" ?∁)
|
||||
("\\cong" ?≅)
|
||||
@@ -396,7 +346,6 @@ system, including many technical ones. Examples:
|
||||
("\\ddots" ?⋱)
|
||||
("\\diamond" ?⋄)
|
||||
("\\diamondsuit" ?♢)
|
||||
- ("\\digamma" ?Ϝ)
|
||||
("\\divideontimes" ?⋇)
|
||||
("\\doteq" ?≐)
|
||||
("\\doteqdot" ?≑)
|
|
@ -0,0 +1,13 @@
|
|||
[Desktop Entry]
|
||||
Name=Emacs
|
||||
GenericName=Text Editor
|
||||
Comment=Edit text
|
||||
Comment[zh_TW]=編輯文字
|
||||
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
|
||||
Exec=emacs %f
|
||||
Icon=emacs
|
||||
Type=Application
|
||||
Terminal=false
|
||||
Categories=Application;Utility;TextEditor;X-Red-Hat-Base;
|
||||
Encoding=UTF-8
|
||||
StartupWMClass=Emacs
|
|
@ -0,0 +1,11 @@
|
|||
[Unit]
|
||||
Description=Emacs: the extensible, self-documenting text editor
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
ExecStart=/usr/bin/emacs --daemon
|
||||
ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
828
emacs.spec
828
emacs.spec
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,12 @@
|
|||
[Desktop Entry]
|
||||
Name=Emacs Client
|
||||
GenericName=Text Editor
|
||||
Comment=Edit text
|
||||
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
|
||||
Exec=emacsclient -c --alternate-editor="" %f
|
||||
Icon=emacs
|
||||
Type=Application
|
||||
Terminal=false
|
||||
Categories=Application;Utility;TextEditor;X-Red-Hat-Base;
|
||||
Encoding=UTF-8
|
||||
StartupWMClass=Emacs
|
|
@ -1,53 +0,0 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Comment: 17E9 0D52 1672 C046 31B1 183E E78D AE0F 3115 E06B
|
||||
Comment: Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
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
|
||||
=+3ql
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
3
sources
3
sources
|
@ -1,2 +1 @@
|
|||
SHA512 (emacs-28.1.tar.xz) = c146ff7086aba49fa6c18adf4e485a59eb4c6525fddb9d385034446830b8bb0ac9e6fb76e7b6d94a9fddc41643415f36acad57a1ae16a841c97f61bc211459d9
|
||||
SHA512 (emacs-28.1.tar.xz.sig) = cc905fb3d75c2f03c491fb1e0edd883312147d65125a667dcf77e6a078a6381f0674e321feba24a205d819275b6f31282a54910b3fc1c1284421a0fd35a2882a
|
||||
ea9ed000ca165280265aabb55b9afbd7 emacs-24.3.tar.xz
|
||||
|
|
Loading…
Reference in New Issue