Merge from origin/emacs-27
4712c75ab8
Clarify when activate-mark-hook is runabedf3a865
Fix language-environment and font selection on MS-Windows8b8708eadd
Fix example in Sequence Functions node in the manual
This commit is contained in:
commit
07b22b6b5d
5 changed files with 58 additions and 5 deletions
|
@ -609,8 +609,8 @@ the function @code{use-region-p} for that (@pxref{The Region}).
|
|||
@defvarx deactivate-mark-hook
|
||||
These normal hooks are run, respectively, when the mark becomes active
|
||||
and when it becomes inactive. The hook @code{activate-mark-hook} is
|
||||
also run at the end of the command loop if the mark is active and it
|
||||
is possible that the region may have changed.
|
||||
also run when the region is reactivated, for instance after using a
|
||||
command that switches back to a buffer that has an active mark.
|
||||
@ignore
|
||||
This piece of command_loop_1, run unless deactivating the mark:
|
||||
if (current_buffer != prev_buffer || MODIFF != prev_modiff)
|
||||
|
|
|
@ -609,7 +609,7 @@ returned value is a list.
|
|||
(seq-map-indexed (lambda (elt idx)
|
||||
(list idx elt))
|
||||
'(a b c))
|
||||
@result{} ((0 a) (b 1) (c 2))
|
||||
@result{} ((0 a) (1 b) (2 c))
|
||||
@end group
|
||||
@end example
|
||||
@end defun
|
||||
|
|
|
@ -5976,8 +5976,9 @@ START and END specify the portion of the current buffer to be copied."
|
|||
|
||||
(defvar activate-mark-hook nil
|
||||
"Hook run when the mark becomes active.
|
||||
It is also run at the end of a command, if the mark is active and
|
||||
it is possible that the region may have changed.")
|
||||
It is also run when the region is reactivated, for instance after
|
||||
using a command that switches back to a buffer that has an active
|
||||
mark.")
|
||||
|
||||
(defvar deactivate-mark-hook nil
|
||||
"Hook run when the mark becomes inactive.")
|
||||
|
|
|
@ -255,6 +255,7 @@ bit output with no translation."
|
|||
(w32-add-charset-info "iso8859-2" 'w32-charset-easteurope 28592)
|
||||
(w32-add-charset-info "iso8859-3" 'w32-charset-turkish 28593)
|
||||
(w32-add-charset-info "iso8859-4" 'w32-charset-baltic 28594)
|
||||
(w32-add-charset-info "iso8859-5" 'w32-charset-russian 28595)
|
||||
(w32-add-charset-info "iso8859-6" 'w32-charset-arabic 28596)
|
||||
(w32-add-charset-info "iso8859-7" 'w32-charset-greek 28597)
|
||||
(w32-add-charset-info "iso8859-8" 'w32-charset-hebrew 1255)
|
||||
|
|
51
src/w32.c
51
src/w32.c
|
@ -346,6 +346,7 @@ static BOOL g_b_init_get_adapters_addresses;
|
|||
static BOOL g_b_init_reg_open_key_ex_w;
|
||||
static BOOL g_b_init_reg_query_value_ex_w;
|
||||
static BOOL g_b_init_expand_environment_strings_w;
|
||||
static BOOL g_b_init_get_user_default_ui_language;
|
||||
|
||||
BOOL g_b_init_compare_string_w;
|
||||
BOOL g_b_init_debug_break_process;
|
||||
|
@ -533,6 +534,7 @@ DWORD multiByteToWideCharFlags;
|
|||
typedef LONG (WINAPI *RegOpenKeyExW_Proc) (HKEY,LPCWSTR,DWORD,REGSAM,PHKEY);
|
||||
typedef LONG (WINAPI *RegQueryValueExW_Proc) (HKEY,LPCWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
|
||||
typedef DWORD (WINAPI *ExpandEnvironmentStringsW_Proc) (LPCWSTR,LPWSTR,DWORD);
|
||||
typedef LANGID (WINAPI *GetUserDefaultUILanguage_Proc) (void);
|
||||
|
||||
/* ** A utility function ** */
|
||||
static BOOL
|
||||
|
@ -1489,6 +1491,28 @@ expand_environment_strings_w (LPCWSTR lpSrc, LPWSTR lpDst, DWORD nSize)
|
|||
return s_pfn_Expand_Environment_Strings_w (lpSrc, lpDst, nSize);
|
||||
}
|
||||
|
||||
static LANGID WINAPI
|
||||
get_user_default_ui_language (void)
|
||||
{
|
||||
static GetUserDefaultUILanguage_Proc s_pfn_GetUserDefaultUILanguage = NULL;
|
||||
HMODULE hm_kernel32 = NULL;
|
||||
|
||||
if (is_windows_9x () == TRUE)
|
||||
return 0;
|
||||
|
||||
if (g_b_init_get_user_default_ui_language == 0)
|
||||
{
|
||||
g_b_init_get_user_default_ui_language = 1;
|
||||
hm_kernel32 = LoadLibrary ("Kernel32.dll");
|
||||
if (hm_kernel32)
|
||||
s_pfn_GetUserDefaultUILanguage = (GetUserDefaultUILanguage_Proc)
|
||||
get_proc_addr (hm_kernel32, "GetUserDefaultUILanguage");
|
||||
}
|
||||
if (s_pfn_GetUserDefaultUILanguage == NULL)
|
||||
return 0;
|
||||
return s_pfn_GetUserDefaultUILanguage ();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Return 1 if P is a valid pointer to an object of size SIZE. Return
|
||||
|
@ -2947,6 +2971,32 @@ init_environment (char ** argv)
|
|||
LOCALE_SABBREVLANGNAME | LOCALE_USE_CP_ACP,
|
||||
locale_name, sizeof (locale_name)))
|
||||
{
|
||||
/* Microsoft are migrating away of locale IDs, replacing them
|
||||
with locale names, such as "en-US", and are therefore
|
||||
deprecating the APIs which use LCID etc. As part of that
|
||||
deprecation, they don't bother inventing LCID and LANGID
|
||||
codes for new locales and language/culture combinations;
|
||||
instead, those get LCID of 0xC000 and LANGID of 0x2000, for
|
||||
which the LCID/LANGID oriented APIs return "ZZZ" as the
|
||||
"language name". Such "language name" is useless for our
|
||||
purposes. So we instead use the default UI language, in the
|
||||
hope of getting something usable. */
|
||||
if (strcmp (locale_name, "ZZZ") == 0)
|
||||
{
|
||||
LANGID lang_id = get_user_default_ui_language ();
|
||||
|
||||
if (lang_id != 0)
|
||||
{
|
||||
/* Disregard the sorting order differences between cultures. */
|
||||
LCID def_lcid = MAKELCID (lang_id, SORT_DEFAULT);
|
||||
char locale_name_def[32];
|
||||
|
||||
if (GetLocaleInfo (def_lcid,
|
||||
LOCALE_SABBREVLANGNAME | LOCALE_USE_CP_ACP,
|
||||
locale_name_def, sizeof (locale_name_def)))
|
||||
strcpy (locale_name, locale_name_def);
|
||||
}
|
||||
}
|
||||
for (i = 0; i < N_ENV_VARS; i++)
|
||||
{
|
||||
if (strcmp (env_vars[i].name, "LANG") == 0)
|
||||
|
@ -10580,6 +10630,7 @@ globals_of_w32 (void)
|
|||
g_b_init_expand_environment_strings_w = 0;
|
||||
g_b_init_compare_string_w = 0;
|
||||
g_b_init_debug_break_process = 0;
|
||||
g_b_init_get_user_default_ui_language = 0;
|
||||
num_of_processors = 0;
|
||||
/* The following sets a handler for shutdown notifications for
|
||||
console apps. This actually applies to Emacs in both console and
|
||||
|
|
Loading…
Add table
Reference in a new issue