commit 492adf20b91520e96fb198e6e936e3145359c43b (HEAD, refs/remotes/origin/master) Author: Eli Zaretskii Date: Sat May 24 16:36:53 2025 +0300 ; Remove files deleted from nt/ which were mistakenly resurrected. diff --git a/nt/configure.bat b/nt/configure.bat deleted file mode 100755 index 12d7c554f1d..00000000000 --- a/nt/configure.bat +++ /dev/null @@ -1,26 +0,0 @@ -@echo off -rem ---------------------------------------------------------------------- -rem This was the old configuration script for MS Windows operating systems -rem Copyright (C) 1999-2025 Free Software Foundation, Inc. - -rem This file is part of GNU Emacs. - -rem GNU Emacs is free software: you can redistribute it and/or modify -rem it under the terms of the GNU General Public License as published by -rem the Free Software Foundation, either version 3 of the License, or -rem (at your option) any later version. - -rem GNU Emacs is distributed in the hope that it will be useful, -rem but WITHOUT ANY WARRANTY; without even the implied warranty of -rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -rem GNU General Public License for more details. - -rem You should have received a copy of the GNU General Public License -rem along with GNU Emacs. If not, see https://www.gnu.org/licenses/. - -rem ---------------------------------------------------------------------- -echo **************************************************************** -echo *** THIS METHOD OF BUILDING EMACS IS NO LONGER SUPPORTED. ** -echo *** INSTEAD, FOLLOW THE INSTRUCTIONS IN THE FILE INSTALL. ** -echo *** IN THE SAME DIRECTORY AS THIS BATCH FILE. ** -echo **************************************************************** diff --git a/nt/preprep.c b/nt/preprep.c deleted file mode 100644 index db255ecc744..00000000000 --- a/nt/preprep.c +++ /dev/null @@ -1,830 +0,0 @@ -/* Pre-process emacs.exe for profiling by MSVC. - Copyright (C) 1999, 2001-2025 Free Software Foundation, Inc. - -This file is part of GNU Emacs. - -GNU Emacs 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. - -GNU Emacs 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 GNU Emacs. If not, see . - - - Andrew Innes 16-Jan-1999 - based on code from addsection.c -*/ - -#define DEFER_MS_W32_H -#include - -#include -#include -#include -#include -#if defined(__GNUC__) && !defined(MINGW_W64) -#define _ANONYMOUS_UNION -#define _ANONYMOUS_STRUCT -#endif -#include - -/* Include relevant definitions from IMAGEHLP.H, which can be found - in \\win32sdk\mstools\samples\image\include\imagehlp.h. */ - -PIMAGE_NT_HEADERS (__stdcall * pfnCheckSumMappedFile) (LPVOID BaseAddress, - DWORD_PTR FileLength, - PDWORD_PTR HeaderSum, - PDWORD_PTR CheckSum); - -#undef min -#undef max -#define min(x, y) (((x) < (y)) ? (x) : (y)) -#define max(x, y) (((x) > (y)) ? (x) : (y)) - - -/* File handling. */ - -typedef struct file_data { - const char *name; - unsigned long size; - HANDLE file; - HANDLE file_mapping; - unsigned char *file_base; -} file_data; - -int -open_input_file (file_data *p_file, const char *filename) -{ - HANDLE file; - HANDLE file_mapping; - void *file_base; - unsigned long size, upper_size; - - file = CreateFile (filename, GENERIC_READ, FILE_SHARE_READ, NULL, - OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); - if (file == INVALID_HANDLE_VALUE) - return FALSE; - - size = GetFileSize (file, &upper_size); - file_mapping = CreateFileMapping (file, NULL, PAGE_READONLY, - 0, size, NULL); - if (!file_mapping) - return FALSE; - - file_base = MapViewOfFile (file_mapping, FILE_MAP_READ, 0, 0, size); - if (file_base == 0) - return FALSE; - - p_file->name = filename; - p_file->size = size; - p_file->file = file; - p_file->file_mapping = file_mapping; - p_file->file_base = file_base; - - return TRUE; -} - -int -open_output_file (file_data *p_file, const char *filename, unsigned long size) -{ - HANDLE file; - HANDLE file_mapping; - void *file_base; - - file = CreateFile (filename, GENERIC_READ | GENERIC_WRITE, 0, NULL, - CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); - if (file == INVALID_HANDLE_VALUE) - return FALSE; - - file_mapping = CreateFileMapping (file, NULL, PAGE_READWRITE, - 0, size, NULL); - if (!file_mapping) - return FALSE; - - file_base = MapViewOfFile (file_mapping, FILE_MAP_WRITE, 0, 0, size); - if (file_base == 0) - return FALSE; - - p_file->name = filename; - p_file->size = size; - p_file->file = file; - p_file->file_mapping = file_mapping; - p_file->file_base = file_base; - - return TRUE; -} - -int -open_inout_file (file_data *p_file, const char *filename) -{ - HANDLE file; - HANDLE file_mapping; - void *file_base; - unsigned long size, upper_size; - - file = CreateFile (filename, GENERIC_READ | GENERIC_WRITE, 0, NULL, - OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); - if (file == INVALID_HANDLE_VALUE) - return FALSE; - - size = GetFileSize (file, &upper_size); - file_mapping = CreateFileMapping (file, NULL, PAGE_READWRITE, - 0, size, NULL); - if (!file_mapping) - return FALSE; - - file_base = MapViewOfFile (file_mapping, FILE_MAP_WRITE, 0, 0, size); - if (file_base == 0) - return FALSE; - - p_file->name = filename; - p_file->size = size; - p_file->file = file; - p_file->file_mapping = file_mapping; - p_file->file_base = file_base; - - return TRUE; -} - -/* Close the system structures associated with the given file. */ -void -close_file_data (file_data *p_file) -{ - UnmapViewOfFile (p_file->file_base); - CloseHandle (p_file->file_mapping); - /* For the case of output files, set final size. */ - SetFilePointer (p_file->file, p_file->size, NULL, FILE_BEGIN); - SetEndOfFile (p_file->file); - CloseHandle (p_file->file); -} - - -/* Routines to manipulate NT executable file sections. */ - -unsigned long -get_unrounded_section_size (PIMAGE_SECTION_HEADER p_section) -{ - /* The true section size, before rounding, for an initialized data or - code section. (Supposedly some linkers swap the meaning of these - two values.) */ - return min (p_section->SizeOfRawData, - p_section->Misc.VirtualSize); -} - -/* Return pointer to section header for named section. */ -IMAGE_SECTION_HEADER * -find_section (const char *name, IMAGE_NT_HEADERS *nt_header) -{ - PIMAGE_SECTION_HEADER section; - int i; - - section = IMAGE_FIRST_SECTION (nt_header); - - for (i = 0; i < nt_header->FileHeader.NumberOfSections; i++) - { - if (strcmp (section->Name, name) == 0) - return section; - section++; - } - return NULL; -} - -/* Return pointer to section header for section containing the given - relative virtual address. */ -IMAGE_SECTION_HEADER * -rva_to_section (DWORD_PTR rva, IMAGE_NT_HEADERS * nt_header) -{ - PIMAGE_SECTION_HEADER section; - int i; - - section = IMAGE_FIRST_SECTION (nt_header); - - for (i = 0; i < nt_header->FileHeader.NumberOfSections; i++) - { - /* Some linkers (eg. the NT SDK linker I believe) swapped the - meaning of these two values - or rather, they ignored - VirtualSize entirely and always set it to zero. This affects - some very old exes (eg. gzip dated Dec 1993). Since - w32_executable_type relies on this function to work reliably, - we need to cope with this. */ - DWORD_PTR real_size = max (section->SizeOfRawData, - section->Misc.VirtualSize); - if (rva >= section->VirtualAddress - && rva < section->VirtualAddress + real_size) - return section; - section++; - } - return NULL; -} - -/* Return pointer to section header for section containing the given - offset in its raw data area. */ -IMAGE_SECTION_HEADER * -offset_to_section (DWORD_PTR offset, IMAGE_NT_HEADERS * nt_header) -{ - PIMAGE_SECTION_HEADER section; - int i; - - section = IMAGE_FIRST_SECTION (nt_header); - - for (i = 0; i < nt_header->FileHeader.NumberOfSections; i++) - { - if (offset >= section->PointerToRawData - && offset < section->PointerToRawData + section->SizeOfRawData) - return section; - section++; - } - return NULL; -} - -/* Return offset to an object in dst, given offset in src. We assume - there is at least one section in both src and dst images, and that - the some sections may have been added to dst (after sections in src). */ -static DWORD_PTR -relocate_offset (DWORD_PTR offset, - IMAGE_NT_HEADERS * src_nt_header, - IMAGE_NT_HEADERS * dst_nt_header) -{ - PIMAGE_SECTION_HEADER src_section = IMAGE_FIRST_SECTION (src_nt_header); - PIMAGE_SECTION_HEADER dst_section = IMAGE_FIRST_SECTION (dst_nt_header); - int i = 0; - - while (offset >= src_section->PointerToRawData) - { - if (offset < src_section->PointerToRawData + src_section->SizeOfRawData) - break; - i++; - if (i == src_nt_header->FileHeader.NumberOfSections) - { - /* Handle offsets after the last section. */ - dst_section = IMAGE_FIRST_SECTION (dst_nt_header); - dst_section += dst_nt_header->FileHeader.NumberOfSections - 1; - while (dst_section->PointerToRawData == 0) - dst_section--; - while (src_section->PointerToRawData == 0) - src_section--; - return offset - + (dst_section->PointerToRawData + dst_section->SizeOfRawData) - - (src_section->PointerToRawData + src_section->SizeOfRawData); - } - src_section++; - dst_section++; - } - return offset + - (dst_section->PointerToRawData - src_section->PointerToRawData); -} - -#define OFFSET_TO_RVA(offset, section) \ - ((section)->VirtualAddress + ((DWORD_PTR)(offset) - (section)->PointerToRawData)) - -#define RVA_TO_OFFSET(rva, section) \ - ((section)->PointerToRawData + ((DWORD_PTR)(rva) - (section)->VirtualAddress)) - -#define RVA_TO_SECTION_OFFSET(rva, section) \ - ((DWORD_PTR)(rva) - (section)->VirtualAddress) - -#define RVA_TO_PTR(var,section,filedata) \ - ((void *)((unsigned char *)(RVA_TO_OFFSET(var,section) + (filedata)->file_base))) - -/* Convert address in executing image to RVA. */ -#define PTR_TO_RVA(ptr) ((DWORD_PTR)(ptr) - (DWORD_PTR) GetModuleHandle (NULL)) - -#define PTR_TO_OFFSET(ptr, pfile_data) \ - ((unsigned const char *)(ptr) - (pfile_data)->file_base) - -#define OFFSET_TO_PTR(offset, pfile_data) \ - ((pfile_data)->file_base + (DWORD_PTR)(offset)) - -#define ROUND_UP(p, align) \ - (((DWORD_PTR)(p) + (align)-1) & ~((DWORD_PTR)(align)-1)) -#define ROUND_DOWN(p, align) ((DWORD_PTR)(p) & ~((DWORD_PTR)(align)-1)) - - -/* The MSVC prep program generates a ._xe file from .exe, where relevant - function calls etc have been patched to go through thunks (generated - by prep) that record timing/call information. Because the thunks - need to make references to functions imported from profile.dll, the - import table must be expanded; the end result is that all the - sections following .rdata are relocated to higher RVAs (add a final - code section is added holding all the thunks). The .reloc section is - also expanded, so that the thunks themselves are relocatable. - - It is this relocation which kills emacs._xe, because the dumped heap - pointers aren't relocated, because there is no relocation data for - either the relevant global/static variables or the heap section - itself, both of which contain pointers into the heap. [Note that - static variables which aren't initialized during linking may become - initialized with heap pointers, or even pointers to other static - variables, because of dumping.] - - We could potentially generate the relocation data ourselves by making - two versions of temacs, one with an extra dummy section before - EMHEAP to offset it, and then compare the dumped executables from - both. That is a lot of work though, and it doesn't solve the problem - of dumped pointers to static variables, which also can be relocated. - - A better solution is to pre-process emacs.exe so that the .rdata and - .reloc sections are moved to the end of the section table, and thus - prep won't relocate anything else. (Of course, we leave "dead" - copies of these two sections in place, so that the virtual address of - everything else is unaffected.) Relocating the .reloc data is - trivial - we just update the IMAGE_BASE_RELOCATION address in the - header (the data itself doesn't change). Relocating the import table - is more complicated though, because the calls to imported functions - must be patched up. That requires us to selectively apply the base - relocations when we encounter references to imported functions (or - variables) in other sections, but at least the base relocations are - easy to parse. */ - -static void -copy_executable_and_move_sections (file_data *p_infile, - file_data *p_outfile) -{ - unsigned char *dst; - PIMAGE_DOS_HEADER dos_header; - PIMAGE_NT_HEADERS nt_header; - PIMAGE_NT_HEADERS dst_nt_header; - PIMAGE_SECTION_HEADER section; - PIMAGE_SECTION_HEADER dst_section; - PIMAGE_SECTION_HEADER import_section; - PIMAGE_SECTION_HEADER reloc_section; - PIMAGE_DATA_DIRECTORY import_dir; - PIMAGE_DATA_DIRECTORY reloc_dir; - DWORD_PTR import_delta_rva; - DWORD_PTR reloc_delta_rva; - DWORD_PTR offset; - int i; - -#define COPY_CHUNK(message, src, size) \ - do { \ - unsigned const char *s = (void *)(src); \ - unsigned long count = (size); \ - printf ("%s\n", (message)); \ - printf ("\t0x%08x Offset in input file.\n", s - p_infile->file_base); \ - printf ("\t0x%08x Offset in output file.\n", dst - p_outfile->file_base); \ - printf ("\t0x%08x Size in bytes.\n", count); \ - memcpy (dst, s, count); \ - dst += count; \ - } while (0) - -#define DST_TO_OFFSET() PTR_TO_OFFSET (dst, p_outfile) -#define ROUND_UP_DST_AND_ZERO(align) \ - do { \ - unsigned char *newdst = p_outfile->file_base \ - + ROUND_UP (DST_TO_OFFSET (), (align)); \ - /* Zero the alignment slop; it may actually initialize real data. */ \ - memset (dst, 0, newdst - dst); \ - dst = newdst; \ - } while (0) - - /* Copy the source image sequentially, ie. section by section after - copying the headers and section table, to simplify the process of - relocating the .rdata and .reloc section table entries (which might - force the raw section data to be relocated). - - Note that dst is updated implicitly by each COPY_CHUNK. */ - - dos_header = (PIMAGE_DOS_HEADER) p_infile->file_base; - nt_header = (PIMAGE_NT_HEADERS) (((unsigned char *) dos_header) + - dos_header->e_lfanew); - section = IMAGE_FIRST_SECTION (nt_header); - - import_dir = &nt_header->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT]; - import_section = rva_to_section (import_dir->VirtualAddress, nt_header); - - reloc_dir = &nt_header->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC]; - reloc_section = rva_to_section (reloc_dir->VirtualAddress, nt_header); - if (!reloc_section) - { - printf ("No relocation data, cannot prepare for profile prepping.\n"); - exit (1); - } - - dst = (unsigned char *) p_outfile->file_base; - - COPY_CHUNK ("Copying DOS header...", dos_header, - (DWORD_PTR) nt_header - (DWORD_PTR) dos_header); - dst_nt_header = (PIMAGE_NT_HEADERS) dst; - COPY_CHUNK ("Copying NT header...", nt_header, - (DWORD_PTR) section - (DWORD_PTR) nt_header); - dst_section = (PIMAGE_SECTION_HEADER) dst; - COPY_CHUNK ("Copying section table...", section, - nt_header->FileHeader.NumberOfSections * sizeof (*section)); - - /* Leave room for extra section table entries; filled in below. */ - dst += 2 * sizeof (*section); - - /* Align the first section's raw data area, and set the header size - field accordingly. */ - ROUND_UP_DST_AND_ZERO (dst_nt_header->OptionalHeader.FileAlignment); - dst_nt_header->OptionalHeader.SizeOfHeaders = DST_TO_OFFSET (); - - for (i = 0; i < nt_header->FileHeader.NumberOfSections; - i++, section++, dst_section++) - { - char msg[100]; - sprintf (msg, "Copying raw data for %s...", section->Name); - - /* "Blank out" the two sections being relocated. */ - if (section == import_section || section == reloc_section) - { - dst_section->Name[0] = 'X'; - dst_section->Misc.VirtualSize = - ROUND_UP (dst_section->Misc.VirtualSize, - dst_nt_header->OptionalHeader.SectionAlignment); - dst_section->PointerToRawData = 0; - dst_section->SizeOfRawData = 0; - dst_section->Characteristics &= ~IMAGE_SCN_CNT_INITIALIZED_DATA; - dst_section->Characteristics |= IMAGE_SCN_CNT_UNINITIALIZED_DATA; - dst_section->Characteristics &= ~IMAGE_SCN_MEM_WRITE; - continue; - } - - /* Update the file-relative offset for this section's raw data (if - it has any) in case things have been relocated; we will update - the other offsets below once we know where everything is. */ - if (dst_section->PointerToRawData) - dst_section->PointerToRawData = DST_TO_OFFSET (); - - /* Copy the original raw data. */ - COPY_CHUNK - (msg, OFFSET_TO_PTR (section->PointerToRawData, p_infile), - section->SizeOfRawData); - - /* Round up the raw data size to the new alignment. */ - dst_section->SizeOfRawData = - ROUND_UP (dst_section->SizeOfRawData, - dst_nt_header->OptionalHeader.FileAlignment); - - /* Align the next section's raw data area. */ - ROUND_UP_DST_AND_ZERO (dst_nt_header->OptionalHeader.FileAlignment); - } - - /* Add the extra section entries, copying the raw data we skipped - earlier. We'll patch up the data itself below. */ - if (import_section != NULL) - { - dst_nt_header->FileHeader.NumberOfSections++; - dst_nt_header->OptionalHeader.SizeOfImage += - ROUND_UP (import_section->Misc.VirtualSize, - dst_nt_header->OptionalHeader.SectionAlignment); - *dst_section = *import_section; - dst_section->VirtualAddress = - dst_section[-1].VirtualAddress - + ROUND_UP (dst_section[-1].Misc.VirtualSize, - dst_nt_header->OptionalHeader.SectionAlignment); - dst_section->PointerToRawData = DST_TO_OFFSET (); - /* Remember delta applied to import section. */ - import_delta_rva = dst_section->VirtualAddress - import_section->VirtualAddress; - COPY_CHUNK - ("Relocating import directory", - OFFSET_TO_PTR (import_section->PointerToRawData, p_infile), - import_section->SizeOfRawData); - ROUND_UP_DST_AND_ZERO (dst_nt_header->OptionalHeader.FileAlignment); - dst_section++; - } - if (reloc_section != NULL) - { - dst_nt_header->FileHeader.NumberOfSections++; - dst_nt_header->OptionalHeader.SizeOfImage += - ROUND_UP (reloc_section->Misc.VirtualSize, - dst_nt_header->OptionalHeader.SectionAlignment); - *dst_section = *reloc_section; - dst_section->VirtualAddress = - dst_section[-1].VirtualAddress - + ROUND_UP (dst_section[-1].Misc.VirtualSize, - dst_nt_header->OptionalHeader.SectionAlignment); - dst_section->PointerToRawData = DST_TO_OFFSET (); - /* Remember delta applied to reloc section. */ - reloc_delta_rva = dst_section->VirtualAddress - reloc_section->VirtualAddress; - COPY_CHUNK - ("Relocating base relocations directory", - OFFSET_TO_PTR (reloc_section->PointerToRawData, p_infile), - reloc_section->SizeOfRawData); - ROUND_UP_DST_AND_ZERO (dst_nt_header->OptionalHeader.FileAlignment); - reloc_dir = &dst_nt_header->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC]; - reloc_dir->VirtualAddress += reloc_delta_rva; - dst_section++; - } - - /* Copy remainder of source image. */ - section--; - offset = ROUND_UP (section->PointerToRawData + section->SizeOfRawData, - nt_header->OptionalHeader.FileAlignment); - COPY_CHUNK - ("Copying remainder of executable...", - OFFSET_TO_PTR (offset, p_infile), - p_infile->size - offset); - - /* Final size for new image. */ - p_outfile->size = DST_TO_OFFSET (); - - /* Now patch up remaining file-relative offsets. */ - printf ("Patching up raw data offsets...\n"); - - section = IMAGE_FIRST_SECTION (nt_header); - dst_section = IMAGE_FIRST_SECTION (dst_nt_header); - -#define ADJUST_OFFSET(var) \ - do { \ - if ((var) != 0) \ - (var) = relocate_offset ((var), nt_header, dst_nt_header); \ - } while (0) - -#define ADJUST_IMPORT_RVA(var) \ - do { \ - if ((var) != 0) \ - *((DWORD_PTR *)&(var)) += import_delta_rva; \ - } while (0) - - dst_nt_header->OptionalHeader.SizeOfInitializedData = 0; - dst_nt_header->OptionalHeader.SizeOfUninitializedData = 0; - for (i = 0; i < dst_nt_header->FileHeader.NumberOfSections; i++) - { - /* Recompute data sizes for completeness. */ - if (dst_section[i].Characteristics & IMAGE_SCN_CNT_INITIALIZED_DATA) - dst_nt_header->OptionalHeader.SizeOfInitializedData += - ROUND_UP (dst_section[i].Misc.VirtualSize, dst_nt_header->OptionalHeader.FileAlignment); - else if (dst_section[i].Characteristics & IMAGE_SCN_CNT_UNINITIALIZED_DATA) - dst_nt_header->OptionalHeader.SizeOfUninitializedData += - ROUND_UP (dst_section[i].Misc.VirtualSize, dst_nt_header->OptionalHeader.FileAlignment); - - ADJUST_OFFSET (dst_section[i].PointerToLinenumbers); - } - - ADJUST_OFFSET (dst_nt_header->FileHeader.PointerToSymbolTable); - - /* Update offsets in debug directory entries. Note that the debug - directory may be in the same section as the import table, so its - RVA may need to be adjusted too. */ - { - PIMAGE_DATA_DIRECTORY debug_dir = - &dst_nt_header->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG]; - PIMAGE_DEBUG_DIRECTORY debug_entry; - - /* Update debug_dir if part of import_section. */ - if (rva_to_section (debug_dir->VirtualAddress, nt_header) == import_section) - debug_dir->VirtualAddress += import_delta_rva; - - section = rva_to_section (debug_dir->VirtualAddress, dst_nt_header); - if (section) - { - int size; - - debug_entry = RVA_TO_PTR (debug_dir->VirtualAddress, section, p_outfile); - size = debug_dir->Size / sizeof (IMAGE_DEBUG_DIRECTORY); - - for (i = 0; i < size; i++, debug_entry++) - { - /* The debug data itself is normally not part of any - section, but stored after all the raw section data. So - let relocate_offset do the work. */ - ADJUST_OFFSET (debug_entry->PointerToRawData); - ADJUST_IMPORT_RVA (debug_entry->AddressOfRawData); - } - } - } - - /* Update RVAs in import directory entries. */ - { - PIMAGE_IMPORT_DESCRIPTOR imports; - PIMAGE_THUNK_DATA import_thunks; - - import_dir = &dst_nt_header->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT]; - import_dir->VirtualAddress += import_delta_rva; - - section = rva_to_section (import_dir->VirtualAddress, dst_nt_header); - imports = RVA_TO_PTR (import_dir->VirtualAddress, section, p_outfile); - - for ( ; imports->Name != 0; imports++) - { - ADJUST_IMPORT_RVA (imports->OriginalFirstThunk); - ADJUST_IMPORT_RVA (imports->FirstThunk); - ADJUST_IMPORT_RVA (imports->Name); - - for (import_thunks = RVA_TO_PTR (imports->OriginalFirstThunk, section, p_outfile); - import_thunks->u1.Function != 0; - import_thunks++) - if ((import_thunks->u1.Ordinal >> 31) == 0) - ADJUST_IMPORT_RVA (import_thunks->u1.Ordinal); - - for (import_thunks = RVA_TO_PTR (imports->FirstThunk, section, p_outfile); - import_thunks->u1.Function != 0; - import_thunks++) - if ((import_thunks->u1.Ordinal >> 31) == 0) - ADJUST_IMPORT_RVA (import_thunks->u1.Ordinal); - } - - import_dir = &dst_nt_header->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IAT]; - import_dir->VirtualAddress += import_delta_rva; - } - - /* Fix up references to the import section. */ - printf ("Applying fixups to import references...\n"); - - { - IMAGE_BASE_RELOCATION *relocs, *block, *start_block, *end_block; - DWORD_PTR import_start = import_section->VirtualAddress + dst_nt_header->OptionalHeader.ImageBase; - DWORD_PTR import_end = import_start + import_section->Misc.VirtualSize; - DWORD_PTR len_import_relocs; - DWORD_PTR len_remaining_relocs; - int seen_high = 0; - WORD * high_word; - void * holder; - - reloc_dir = &dst_nt_header->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC]; - reloc_section = rva_to_section (reloc_dir->VirtualAddress, dst_nt_header); - relocs = RVA_TO_PTR (reloc_dir->VirtualAddress, reloc_section, p_outfile); - - /* Move the base relocations for the import section, if there are - any; the profiler needs to be able to patch RVAs in the import - section itself. */ - for (block = relocs, start_block = 0; - (DWORD_PTR) block - (DWORD_PTR) relocs < reloc_dir->Size; - block = (void *)((DWORD_PTR) block + block->SizeOfBlock)) - { - if (block->VirtualAddress >= import_section->VirtualAddress + import_section->Misc.VirtualSize) - { - end_block = block; - break; - } - if (block->VirtualAddress >= import_section->VirtualAddress) - { - if (start_block == 0) - start_block = block; - block->VirtualAddress += import_delta_rva; - } - } - if (start_block) - { - len_import_relocs = (DWORD_PTR) end_block - (DWORD_PTR) start_block; - len_remaining_relocs = (DWORD_PTR) relocs + reloc_dir->Size - (DWORD_PTR) end_block; - holder = malloc (len_import_relocs); - if (holder == 0) - abort (); - memcpy (holder, start_block, len_import_relocs); - memcpy (start_block, end_block, len_remaining_relocs); - memcpy ((char *) start_block + len_remaining_relocs, holder, len_import_relocs); - free (holder); - } - - /* Walk up the list of base relocations, checking for references - to the old import section location, and patching them to - reference the new location. */ - for (block = relocs; - (DWORD_PTR) block - (DWORD_PTR) relocs < reloc_dir->Size; - block = (void *)((DWORD_PTR) block + block->SizeOfBlock)) - { - DWORD_PTR page_rva = block->VirtualAddress; - DWORD_PTR page_offset; - union { - WORD word; - DWORD_PTR dword; - } * ploc; - WORD *fixup; - - section = rva_to_section (page_rva, dst_nt_header); - /* Don't apply fixups to the blanked sections. */ - if (section->Name[0] == 'X') - continue; - - for (fixup = (WORD *) &block[1]; - (DWORD_PTR) fixup - (DWORD_PTR) block < block->SizeOfBlock; - fixup++) - { - page_offset = (*fixup) & 0xfff; - ploc = RVA_TO_PTR (page_rva + page_offset, section, p_outfile); - - /* Unless our assumption is wrong, all low word fixups - should immediately follow a high fixup. */ - if (seen_high && ((*fixup) >> 12) != IMAGE_REL_BASED_LOW) - abort (); - - switch ((*fixup) >> 12) - { - case IMAGE_REL_BASED_ABSOLUTE: - break; - case IMAGE_REL_BASED_HIGH: - /* We must assume that high and low fixups occur in - pairs, specifically a low fixup immediately follows a - high fixup (normally separated by two bytes). We - have to process the two fixups together, to find out - the full pointer value and decide whether to apply - the fixup. */ - seen_high = 1; - high_word = &ploc->word; - break; - case IMAGE_REL_BASED_LOW: - offset = (*high_word << 16) + ploc->word; - if (offset >= import_start && offset < import_end) - { - (*high_word) += import_delta_rva >> 16; - ploc->dword += import_delta_rva & 0xffff; - } - seen_high = 0; - break; - case IMAGE_REL_BASED_HIGHLOW: - /* Docs imply two words in big-endian order, so perhaps - this is only used on big-endian platforms, in which - case the obvious code will work. */ - if (ploc->dword >= import_start && ploc->dword < import_end) - ploc->dword += import_delta_rva; - break; - case IMAGE_REL_BASED_HIGHADJ: - /* Docs don't say, but I guess this is the equivalent - for little-endian platforms. */ - if (ploc->dword >= import_start && ploc->dword < import_end) - ploc->dword += import_delta_rva; - break; - case IMAGE_REL_BASED_MIPS_JMPADDR: - /* Don't know how to handle this; MIPS support has been - dropped from NT4 anyway. */ - abort (); - break; -#ifdef IMAGE_REL_BASED_SECTION - case IMAGE_REL_BASED_SECTION: - case IMAGE_REL_BASED_REL32: - /* Docs don't say what these values mean. */ -#endif - default: - abort (); - } - } - } - } -} - - -int -main (int argc, char **argv) -{ - PIMAGE_DOS_HEADER dos_header; - PIMAGE_NT_HEADERS nt_header; - file_data in_file, out_file; - char out_filename[MAX_PATH], in_filename[MAX_PATH]; - - strcpy (in_filename, argv[1]); - strcpy (out_filename, argv[2]); - - printf ("Preparing %s for profile prepping\n", out_filename); - - /* Open the original (dumped) executable file for reference. */ - if (!open_input_file (&in_file, in_filename)) - { - printf ("Failed to open %s (%d)...bailing.\n", - in_filename, GetLastError ()); - exit (1); - } - - /* Create a new image that can be prepped; we don't expect the size to - change because we are only adding two new section table entries, - which should fit in the alignment slop. */ - if (!open_output_file (&out_file, out_filename, in_file.size)) - { - printf ("Failed to open %s (%d)...bailing.\n", - out_filename, GetLastError ()); - exit (1); - } - - copy_executable_and_move_sections (&in_file, &out_file); - - /* Patch up header fields; profiler is picky about this. */ - { - HANDLE hImagehelp = LoadLibrary ("imagehlp.dll"); - DWORD_PTR headersum; - DWORD_PTR checksum; - - dos_header = (PIMAGE_DOS_HEADER) out_file.file_base; - nt_header = (PIMAGE_NT_HEADERS) ((char *) dos_header + dos_header->e_lfanew); - - nt_header->OptionalHeader.CheckSum = 0; - /* nt_header->FileHeader.TimeDateStamp = time (NULL); */ - /* dos_header->e_cp = size / 512; */ - /* nt_header->OptionalHeader.SizeOfImage = size; */ - - pfnCheckSumMappedFile = (void *) GetProcAddress (hImagehelp, "CheckSumMappedFile"); - if (pfnCheckSumMappedFile) - { - /* nt_header->FileHeader.TimeDateStamp = time (NULL); */ - pfnCheckSumMappedFile (out_file.file_base, - out_file.size, - &headersum, - &checksum); - nt_header->OptionalHeader.CheckSum = checksum; - } - FreeLibrary (hImagehelp); - } - - close_file_data (&out_file); - close_file_data (&in_file); - - return 0; -} - -/* eof */ commit 463787c4e9a36d9218aaffacbfc85936e0ad86c8 Author: Eli Zaretskii Date: Sat May 24 16:25:34 2025 +0300 Fix detection of Dired with files whose name ends in a colon * lisp/dired.el (dired-build-subdir-alist): Use a more general regexp to detect file entries whose names end in a colon, when various non-default 'ls' switches are used. (Bug#78493) diff --git a/lisp/dired.el b/lisp/dired.el index 63d373a63dc..4ae3eaf0d98 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -3721,7 +3721,13 @@ instead of `dired-actual-switches'." ;; ange-ftp listings. (and (dired-switches-recursive-p switches) (string-match "\\`/.*:\\(/.*\\)" default-directory) - (concat "\\`" (match-string 1 default-directory))))) + (concat "\\`" (match-string 1 default-directory)))) + ;; Regexp that describes the beginning of line of a + ;; file/directory entry (as opposed to a subdirectory + ;; heading), including the optional mark, inode, and size. + (file-entry-beg-re (concat dired-re-maybe-mark + dired-re-inode-size + dired-re-perms))) (goto-char (point-min)) (setq dired-subdir-alist nil) (while (re-search-forward dired-subdir-regexp nil t) @@ -3730,8 +3736,7 @@ instead of `dired-actual-switches'." (unless (save-excursion (goto-char (match-beginning 0)) (beginning-of-line) - (forward-char 2) - (looking-at-p dired-re-perms)) + (looking-at-p file-entry-beg-re)) (save-excursion (goto-char (match-beginning 1)) (setq new-dir-name commit 056ba8c569ca1a9757d48043a6a211c83087b678 Merge: 0203543fa66 df9636f8927 Author: Eli Zaretskii Date: Sat May 24 06:55:24 2025 -0400 Merge from origin/emacs-30 df9636f8927 ; * doc/misc/use-package.texi (Hooks): Fix typo (bug#77609). 36afdd2f6f9 Fix documentation of use-package's ':hook' keyword d0c90bc9bfe * test/infra/gitlab-ci.yml (.job-template): Make it more ... b8f24cbdbb0 ; * lisp/emacs-lisp/find-func.el (find-function): Doc fix. e0c6f3e7656 Fix todo-mode item insertion bug (bug#78506) 328b316764f Add support for Pyrefly LSP for Python commit 0203543fa668a9d6158317ad03b5aaa035f154cd Merge: ad217dcc467 c526646d70d Author: Eli Zaretskii Date: Sat May 24 06:46:33 2025 -0400 ; Merge from origin/emacs-30 The following commit was skipped: c526646d70d ; Sync with Tramp 2.7.3.30.2 (Do not merge to master) commit ad217dcc4673d96c5280c41f50d695297d7c221a Merge: 77734d270bc 661fa578d51 Author: Eli Zaretskii Date: Sat May 24 06:46:32 2025 -0400 Merge from origin/emacs-30 661fa578d51 Adapt Tramp version in customize-package-emacs-version-alist 0045a56d558 ; * ChangeLog.5: Delete entry for minor change. 1136aed6dc5 ; Update ChangeLog and AUTHORS for Emacs 30.2 commit 77734d270bc9fa2f96e8c3b3259ae3488aed3791 Merge: 9c00f55265a dfcde786ada Author: Eli Zaretskii Date: Sat May 24 06:46:32 2025 -0400 ; Merge from origin/emacs-30 The following commits were skipped: dfcde786ada ; Update ldefs-boot.el. Do not merge to master. 4c110212604 ; Bump Emacs version to 30.1.90 commit 9c00f55265a108b91189b6d8290a906749a45e8d Author: Roi Martin Date: Sun Apr 20 08:05:56 2025 +0200 Add baseline pass/fail tests for `ert-test-erts-file' * test/lisp/emacs-lisp/ert-tests.el (ert-test-erts-pass) (ert-test-erts-fail): Add tests to verify that the `ert-test-erts-file' function can detect both passing a failing test cases. * test/lisp/emacs-lisp/ert-resources/erts-fail.erts: * test/lisp/emacs-lisp/ert-resources/erts-pass.erts: Add test data. (Bug#78552) diff --git a/test/lisp/emacs-lisp/ert-resources/erts-fail.erts b/test/lisp/emacs-lisp/ert-resources/erts-fail.erts new file mode 100644 index 00000000000..12d73454f7b --- /dev/null +++ b/test/lisp/emacs-lisp/ert-resources/erts-fail.erts @@ -0,0 +1,7 @@ +Name: fail + +=-= +FOO +=-= +BAR +=-=-= diff --git a/test/lisp/emacs-lisp/ert-resources/erts-pass.erts b/test/lisp/emacs-lisp/ert-resources/erts-pass.erts new file mode 100644 index 00000000000..6f98150d4d9 --- /dev/null +++ b/test/lisp/emacs-lisp/ert-resources/erts-pass.erts @@ -0,0 +1,7 @@ +Name: pass + +=-= +FOO +=-= +FOO +=-=-= diff --git a/test/lisp/emacs-lisp/ert-tests.el b/test/lisp/emacs-lisp/ert-tests.el index 467d01fed9d..048ab931f50 100644 --- a/test/lisp/emacs-lisp/ert-tests.el +++ b/test/lisp/emacs-lisp/ert-tests.el @@ -1030,6 +1030,17 @@ F failing-test (ert-with-test-buffer (:name "foo" :selected t) (buffer-name))))) +(ert-deftest ert-test-erts-pass () + "Test that `ert-test-erts-file' reports test case passed." + (ert-test-erts-file (ert-resource-file "erts-pass.erts") + (lambda () ()))) + +(ert-deftest ert-test-erts-fail () + "Test that `ert-test-erts-file' reports test case failed." + (should-error (ert-test-erts-file (ert-resource-file "erts-fail.erts") + (lambda () ())) + :type 'ert-test-failed)) + (ert-deftest ert-test-erts-skip-one () "Test that Skip does not affect subsequent test cases (Bug#76839)." (should-error (ert-test-erts-file (ert-resource-file "erts-skip-one.erts") commit df9636f89276da6023cc4851d089665203961941 (refs/remotes/origin/emacs-30) Author: Eli Zaretskii Date: Sat May 24 12:59:19 2025 +0300 ; * doc/misc/use-package.texi (Hooks): Fix typo (bug#77609). diff --git a/doc/misc/use-package.texi b/doc/misc/use-package.texi index 69dd68d7f3a..1d10ed2bd5f 100644 --- a/doc/misc/use-package.texi +++ b/doc/misc/use-package.texi @@ -1191,7 +1191,7 @@ keybindings you've set using either the @code{:bind} keyword or the @cindex hooks @findex :hook The @code{:hook} keyword allows adding functions to hooks. It takes -one argument of the form @var{hooks}, specifying or more functions +one argument of the form @var{hooks}, specifying one or more functions to add to one or more hooks. For the purposes of @code{:hook}, the name of hook variables should always exclude the @samp{-hook} suffix. It is appended automatically for you, to save some typing. commit 36afdd2f6f9f6bbb6bcc95ff2fb1e426c0bcdb3d Author: Eli Zaretskii Date: Sat May 24 12:56:30 2025 +0300 Fix documentation of use-package's ':hook' keyword * doc/misc/use-package.texi (Hooks): Document how to add several functions to the same hook (bug#77609). diff --git a/doc/misc/use-package.texi b/doc/misc/use-package.texi index c14e7b77d23..69dd68d7f3a 100644 --- a/doc/misc/use-package.texi +++ b/doc/misc/use-package.texi @@ -1191,8 +1191,7 @@ keybindings you've set using either the @code{:bind} keyword or the @cindex hooks @findex :hook The @code{:hook} keyword allows adding functions to hooks. It takes -@c FIXME: The actual forms accepted by :hook are different, see below! -one argument of the form @var{hooks}, specifying one or more functions +one argument of the form @var{hooks}, specifying or more functions to add to one or more hooks. For the purposes of @code{:hook}, the name of hook variables should always exclude the @samp{-hook} suffix. It is appended automatically for you, to save some typing. @@ -1265,6 +1264,17 @@ applied, the following examples are all equivalent: @end group @end lisp +To add more than one function to the same hook, add them separately, +like this: + +@lisp +@group +(use-package company + :hook ((prog-mode . company-mode) + (prog-mode . some-other-function))) +@end group +@end lisp + One common mistake when using @code{:hook} is to forget to omit the @samp{-hook} suffix, which, as already explained, is appended automatically. Therefore, the following will not work, as it attempts commit 9f1cec6297d5c06dc38d52e8384d56811b35915a Author: Lin Sun Date: Wed May 14 06:30:34 2025 +0000 Speed up loading modules * src/lread.c (get-load-suffixes): Don't try loading modules with suffixes from 'jka-compr-load-suffixes', since loading of compressed shared libraries is not supported (so attempt to look for them is just waste of cycles). (Bug#78416.) diff --git a/src/lread.c b/src/lread.c index 9b902532393..40eb6ad7875 100644 --- a/src/lread.c +++ b/src/lread.c @@ -1205,7 +1205,21 @@ This uses the variables `load-suffixes' and `load-file-rep-suffixes'. */) Lisp_Object exts = Vload_file_rep_suffixes; Lisp_Object suffix = XCAR (suffixes); FOR_EACH_TAIL (exts) - lst = Fcons (concat2 (suffix, XCAR (exts)), lst); + { + Lisp_Object ext = XCAR (exts); +#ifdef HAVE_MODULES + if (SCHARS (ext) > 0 + && (suffix_p (suffix, MODULES_SUFFIX) +# ifdef MODULES_SECONDARY_SUFFIX + || suffix_p (suffix, MODULES_SECONDARY_SUFFIX) +# endif + ) + && !NILP (Fmember (ext, Fsymbol_value ( + Qjka_compr_load_suffixes)))) + continue; +#endif + lst = Fcons (concat2 (suffix, ext), lst); + } } return Fnreverse (lst); } @@ -5930,6 +5944,8 @@ the loading functions recognize as compression suffixes, you should customize `jka-compr-load-suffixes' rather than the present variable. */); Vload_file_rep_suffixes = list1 (empty_unibyte_string); + DEFSYM (Qjka_compr_load_suffixes, "jka-compr-load-suffixes"); + DEFVAR_BOOL ("load-in-progress", load_in_progress, doc: /* Non-nil if inside of `load'. */); DEFSYM (Qload_in_progress, "load-in-progress"); commit da174e4a15229ae498713444e70c382d7e0e90cd Author: Eli Zaretskii Date: Sat May 24 10:23:11 2025 +0300 ; Fix documentation of a recent commit * etc/NEWS: * doc/lispref/loading.texi (How Programs Do Loading): Document the new variable and function. * src/lread.c (load-path-filter-function): * lisp/startup.el (load-path-filter-cache-directory-files) (load-path-filter--cache): Doc fixes. diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi index 87ebb787250..7fa64b72999 100644 --- a/doc/lispref/loading.texi +++ b/doc/lispref/loading.texi @@ -221,6 +221,26 @@ Functions}. Instead of using this variable, it is cleaner to use another, newer feature: to pass the function as the @var{read-function} argument to @code{eval-region}. @xref{Definition of eval-region,, Eval}. +@end defvar + +@defun load-path-filter-cache-directory-files path filename suffixes +This function filters @var{path} to remove any directories that could +not hold @var{filename} with any of @var{suffixes}, and returns the +filtered list of directories. The function caches the directories it +scans and the files inside them, and uses the cache in subsequent calls, +which speeds up repeated lookups of files in @var{path}. +@end defun + +@defvar load-path-filter-function +If this variable names a function, @code{load} will call that function +when it scans @code{load-path} to find files. The function will be +called with 3 arguments: the value of @code{load-path}, @var{filename}, +the name of a file being looked up as passed to @code{load}, and a list +of suffixes to append to @var{filename}. It should return a shorter +list of directories where @var{filename} can reside, thus making the +lookup faster. The function +@code{load-path-filter-cache-directory-files} is a good candidate to be +such a function. @end defvar For information about how @code{load} is used in building Emacs, see diff --git a/etc/NEWS b/etc/NEWS index 4ad6c48d78a..a095048017e 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -2213,6 +2213,13 @@ Like 'static-if', these macros evaluate their condition at macro-expansion time and are useful for writing code that can work across different Emacs versions. ++++ +** New feature to speed up repeated lookup of Lisp files in 'load-path'. +If the new variable 'load-path-filter-function' is set to the new +function 'load-path-filter-cache-directory-files', calling 'load' will +cache the directories it scans and their files, and the following +lookups should be faster. + ** Lexical binding --- diff --git a/lisp/startup.el b/lisp/startup.el index c2c1d18338c..c772b4a8596 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -1146,19 +1146,25 @@ the `--debug-init' option to view a complete error backtrace." (defvar load-path-filter--cache nil "A cache used by `load-path-filter-cache-directory-files'. -This is an alist. The car of each entry is a list of load suffixes, +The value is an alist. The car of each entry is a list of load suffixes, such as returned by `get-load-suffixes'. The cdr of each entry is a -cons whose car is an optimized regex matching those suffixes at the end -of a string, and whose cdr is a hashtable mapping directories to files -in that directory which end with one of the suffixes.") +cons whose car is an `regex-opt' optimized regex matching those suffixes +at the end of a string, and whose cdr is a hash-table mapping directories +to files in those directories which end with one of the suffixes. +The hash-table uses `equal' as its key comparison function.") (defun load-path-filter-cache-directory-files (path file suffixes) - "Filter PATH to only directories which might contain FILE with SUFFIXES. + "Filter PATH to leave only directories which might contain FILE with SUFFIXES. -Doesn't filter if FILE is an absolute file name or if FILE is a relative -file name with more than one component. +PATH should be a list of directories such as `load-path'. +Returns a copy of PATH with any directories that cannot contain FILE +with SUFFIXES removed from it. +Doesn't filter PATH if FILE is an absolute file name or if FILE is +a relative file name with leading directories. -Caches directory contents in `load-path-filter--cache'." +Caches contents of directories in `load-path-filter--cache'. + +This function is called from `load' via `load-path-filter-function'." (if (file-name-directory file) ;; FILE has more than one component, don't bother filtering. path diff --git a/src/lread.c b/src/lread.c index ed481c19721..9b902532393 100644 --- a/src/lread.c +++ b/src/lread.c @@ -6113,14 +6113,15 @@ through `require'. */); DEFVAR_LISP ("load-path-filter-function", Vload_path_filter_function, - doc: /* Non-nil means to call this function to filter `load-path' for `load'. + doc: /* If non-nil, a function to filter `load-path' for `load'. -When load is called, this function is called with three arguments: the -current value of `load-path' (a list of directories), the FILE argument -to load, and the current load-suffixes. +If this variable is a function, it is called when `load' is about to +search for a file along `load-path'. This function is called with three +arguments: the current value of `load-path' (a list of directories), +the FILE argument to `load', and the current list of load-suffixes. -It should return a list of directories, which `load' will use instead of -`load-path'. */); +It should return a (hopefully shorter) list of directories, which `load' +will use instead of `load-path' to look for the file to load. */); Vload_path_filter_function = Qnil; /* Vsource_directory was initialized in init_lread. */ commit d0c90bc9bfe8fedbff7f282086dc38458b1e0f9e Author: Michael Albinus Date: Thu May 22 13:18:11 2025 +0200 * test/infra/gitlab-ci.yml (.job-template): Make it more robust. diff --git a/test/infra/gitlab-ci.yml b/test/infra/gitlab-ci.yml index 31732a98f3a..caa81b07039 100644 --- a/test/infra/gitlab-ci.yml +++ b/test/infra/gitlab-ci.yml @@ -87,11 +87,11 @@ default: - 'docker run -i -e EMACS_EMBA_CI=${EMACS_EMBA_CI} -e EMACS_TEST_JUNIT_REPORT=${EMACS_TEST_JUNIT_REPORT} -e EMACS_TEST_TIMEOUT=${EMACS_TEST_TIMEOUT} -e EMACS_TEST_VERBOSE=${EMACS_TEST_VERBOSE} -e NPROC=`nproc` --volumes-from $(docker ps -q -f "label=com.gitlab.gitlab-runner.job.id=${CI_JOB_ID}"):ro --name ${test_name} ${CI_REGISTRY_IMAGE}:${target}-${BUILD_TAG} /bin/bash -xvc "git fetch ${PWD} HEAD && echo checking out these updated files && git diff --name-only FETCH_HEAD && ( git diff --name-only FETCH_HEAD | xargs git checkout -f FETCH_HEAD ) && make -j \$NPROC && make -k -j \$NPROC ${make_params}"' after_script: # - docker ps -a - # - printenv + # - pwd; printenv # - test -n "$(docker ps -aq -f name=${test_name})" && ( docker export ${test_name} | tar -tvf - ) # Prepare test artifacts. - test -n "$(docker ps -aq -f name=${test_name})" && docker cp ${test_name}:checkout/test ${test_name} - - test -n "$(docker ps -aq -f name=${test_name})" && docker cp ${test_name}:checkout/configure.log ${test_name} + - test -n "$(docker ps -aq -f name=${test_name})" && docker cp ${test_name}:checkout/configure.log ${test_name} || true - test -n "$(docker ps -aq -f name=${test_name})" && docker rm ${test_name} - find ${test_name} ! \( -name "*.log" -o -name ${EMACS_TEST_JUNIT_REPORT} \) -type f -delete # BusyBox find does not know -empty. commit b8f24cbdbb0db2c8cfc89f103f9de8e5087f9d9f Author: Eli Zaretskii Date: Thu May 22 09:43:45 2025 +0300 ; * lisp/emacs-lisp/find-func.el (find-function): Doc fix. diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el index 0a2717dfc67..c5116fc1ba9 100644 --- a/lisp/emacs-lisp/find-func.el +++ b/lisp/emacs-lisp/find-func.el @@ -626,14 +626,17 @@ Set mark before moving, if the buffer already existed." ;;;###autoload (defun find-function (function) - "Find the definition of the FUNCTION near point. + "Find the definition of the Emacs Lisp FUNCTION near point. Finds the source file containing the definition of the function near point (selected by `function-called-at-point') in a buffer and places point before the definition. Set mark before moving, if the buffer already existed. -See also `find-function-recenter-line' and `find-function-after-hook'." +See also `find-function-recenter-line' and `find-function-after-hook'. + +Use \\[xref-find-definitions] to find definitions of functions and variables +that are not part of Emacs." (interactive (find-function-read)) (find-function-do-it function nil 'switch-to-buffer)) commit e0c6f3e765684a7f6d93702ad3ca4abe2b802579 Author: Stephen Berman Date: Tue May 20 15:29:58 2025 +0200 Fix todo-mode item insertion bug (bug#78506) * lisp/calendar/todo-mode.el (todo-insert-item--next-param): Unset transient keymap on completing default or copy item insertion command, to ensure that the next Todo mode key is recognized. diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el index 27678328b4a..652176af3b1 100644 --- a/lisp/calendar/todo-mode.el +++ b/lisp/calendar/todo-mode.el @@ -5821,7 +5821,13 @@ keys already entered and those still available." (if (memq last '(default copy)) (progn (setq params0 nil) - (funcall gen-and-exec)) + (funcall gen-and-exec) + ;; Since the item insertion command is now done, unset + ;; transient keymap to ensure the next Todo mode key is + ;; recognized (bug#78506). (Only for "default" and "copy" + ;; parameters: for others, `last' may not yet be the final + ;; parameter, so the map must still be evaluated.) + (setq map nil)) (let ((key (funcall key-of last))) (funcall add-to-prompt key (make-symbol (concat (symbol-name last) ":GO!"))) commit 328b316764f0b06f7b8c774e9855ff2426a13bfe Author: Jostein Kjønigsen Date: Mon May 19 10:00:37 2025 +0200 Add support for Pyrefly LSP for Python * lisp/progmodes/eglot.el (eglot-server-programs): Add config for Pyrefly. (Bug#78492) diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 663c1157a04..e8ecabfc96e 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -251,6 +251,7 @@ automatically)." . ,(eglot-alternatives '("pylsp" "pyls" ("basedpyright-langserver" "--stdio") ("pyright-langserver" "--stdio") + ("pyrefly" "lsp") "jedi-language-server" ("ruff" "server") "ruff-lsp"))) ((js-json-mode json-mode json-ts-mode jsonc-mode) . ,(eglot-alternatives '(("vscode-json-language-server" "--stdio") commit c526646d70d12889319a0178449b0ec060679627 Author: Michael Albinus Date: Sun May 18 21:20:41 2025 +0200 ; Sync with Tramp 2.7.3.30.2 (Do not merge to master) * doc/misc/trampver.texi: * lisp/net/trampver.el (tramp-version): Adapt Tramp versions. diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi index ca3300ee684..aa76672ea59 100644 --- a/doc/misc/trampver.texi +++ b/doc/misc/trampver.texi @@ -7,7 +7,7 @@ @c In the Tramp GIT, the version number and the bug report address @c are auto-frobbed from configure.ac. -@set trampver 2.7.3-pre +@set trampver 2.7.3.30.2 @set trampurl https://www.gnu.org/software/tramp/ @set tramp-bug-report-address tramp-devel@@gnu.org @set emacsver 27.1 diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el index 33918cfa83a..2b2fdf94a49 100644 --- a/lisp/net/trampver.el +++ b/lisp/net/trampver.el @@ -7,7 +7,7 @@ ;; Maintainer: Michael Albinus ;; Keywords: comm, processes ;; Package: tramp -;; Version: 2.7.3-pre +;; Version: 2.7.3.30.2 ;; Package-Requires: ((emacs "27.1")) ;; Package-Type: multi ;; URL: https://www.gnu.org/software/tramp/ @@ -40,7 +40,7 @@ ;; ./configure" to change them. ;;;###tramp-autoload -(defconst tramp-version "2.7.3-pre" +(defconst tramp-version "2.7.3.30.2" "This version of Tramp.") ;;;###tramp-autoload @@ -76,7 +76,7 @@ ;; Check for Emacs version. (let ((x (if (not (string-version-lessp emacs-version "27.1")) "ok" - (format "Tramp 2.7.3-pre is not fit for %s" + (format "Tramp 2.7.3.30.2 is not fit for %s" (replace-regexp-in-string "\n" "" (emacs-version)))))) (unless (string-equal "ok" x) (error "%s" x))) commit 661fa578d5133d334c0b34781773229c09d47da4 Author: Michael Albinus Date: Sun May 18 21:12:41 2025 +0200 Adapt Tramp version in customize-package-emacs-version-alist * lisp/net/trampver.el (customize-package-emacs-version-alist): Add Tramp version integrated in Emacs 30.1. diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el index 38f824d876b..33918cfa83a 100644 --- a/lisp/net/trampver.el +++ b/lisp/net/trampver.el @@ -105,7 +105,7 @@ ("2.5.2.28.1" . "28.1") ("2.5.3.28.2" . "28.2") ("2.5.4" . "28.3") ("2.6.0.29.1" . "29.1") ("2.6.2.29.2" . "29.2") ("2.6.3-pre" . "29.3") ("2.6.3" . "29.4") - ("2.7.1.30.1" . "30.1"))) + ("2.7.1.30.1" . "30.1") ("2.7.3.30.2" . "30.2"))) (add-hook 'tramp-unload-hook (lambda () commit 0045a56d558d70572f3dd746d62b23661e841df7 Author: Sean Whitton Date: Sun May 18 20:00:07 2025 +0100 ; * ChangeLog.5: Delete entry for minor change. diff --git a/ChangeLog.5 b/ChangeLog.5 index 88768f54487..c74daeb3aed 100644 --- a/ChangeLog.5 +++ b/ChangeLog.5 @@ -212,12 +212,6 @@ * admin/notes/emba: Fix docker build instruction. -2025-04-18 Sean Whitton - - * doc/lispref/text.texi (Margins): Grammar fix. - - Author: - 2025-04-16 Michael Albinus Backport: Fix tree-sitter tests on Emba commit 1136aed6dc5f8a2b7fad78bcd5dcd7eeba863e14 (tag: refs/tags/emacs-30.1.90) Author: Eli Zaretskii Date: Sun May 18 05:25:35 2025 -0400 ; Update ChangeLog and AUTHORS for Emacs 30.2 * etc/AUTHORS: ^ ChangeLog.5: Update. diff --git a/ChangeLog.5 b/ChangeLog.5 index af0dc0e5f10..88768f54487 100644 --- a/ChangeLog.5 +++ b/ChangeLog.5 @@ -1,10 +1,1169 @@ +2025-05-17 Eli Zaretskii + + Fix saving abbrevs by 'abbrev-edit-save-buffer' + + * lisp/abbrev.el (abbrev-edit-save-buffer): Reset + 'abbrevs-changed'. Suggested by Rick . + (Bug#78435) + +2025-05-15 Konstantin Kharlamov + + typescript-ts-mode: align ternary-chain branches (bug#78187) + + * lisp/progmodes/typescript-ts-mode.el: + (typescript-ts-mode--indent-rules): Make sure each new ternary + branch is aligned with the previous one. + * test/lisp/progmodes/typescript-ts-mode-resources/indent.erts: + (Chained ternary expressions): New test. + +2025-05-11 Michael Albinus + + Improve Tramp test + + * test/lisp/net/tramp-tests.el + (tramp-test26-interactive-file-name-completion): Adapt test. + +2025-05-11 Michael Albinus + + * lisp/autorevert.el (auto-revert-remote-files): Adapt docstring. + +2025-05-10 Stephen Berman + + Improve Electric Pair mode documentation (bug#78021) + + * doc/emacs/programs.texi (Matching): Clarify and improve + documentation of Electric Pair mode. + + * lisp/elec-pair.el: Improve description in header line. Add text + and a reference to the Emacs user manual in the Commentary section. + (electric-pair-skip-self, electric-pair-inhibit-predicate) + (electric-pair-preserve-balance) + (electric-pair-delete-adjacent-pairs) + (electric-pair-open-newline-between-pairs) + (electric-pair-skip-whitespace) + (electric-pair-skip-whitespace-function) + (electric-pair-analyze-conversion) + (electric-pair--skip-whitespace) + (electric-pair-text-syntax-table, electric-pair--with-syntax) + (electric-pair-syntax-info, electric-pair--insert) + (electric-pair--syntax-ppss, electric-pair--balance-info) + (electric-pair-inhibit-if-helps-balance) + (electric-pair-skip-if-helps-balance) + (electric-pair-open-newline-between-pairs-psif) + (electric-pair-mode): Clarify and improve doc strings and some comments. + (electric-pair-post-self-insert-function): Restructure doc string + to shorten overlong first line, and reformat overlong lines of code. + +2025-05-10 Eli Zaretskii + + Fix indentation of XML comments + + * lisp/nxml/nxml-mode.el (nxml-compute-indent-in-delimited-token): + Fix indentation in XML comments with empty lines. Patch by John + Ciolfi . (Bug#73206) + +2025-05-10 Michael Albinus + + Improve Tramp's make-process handling for Solaris + + * lisp/net/tramp-sh.el (tramp-sh-handle-make-process): + Disable buffering also for remote Solaris hosts. + Reported by Stacey Marshall . + +2025-05-08 Stephen Gildea + + Document 'time-stamp-time-zone' in Emacs Manual + + * doc/emacs/files.texi (Time Stamp Customization): Document + time-stamp-time-zone. + +2025-05-07 Yuan Fu + + Make treesit--simple-indent-eval more permissive (bug#78065) + + * lisp/treesit.el (treesit--simple-indent-eval): Allow EXP to be + anything, so higher-order indent presets can take anything as an + argument: t, nil, symbols, keywords, etc. + +2025-05-06 Michael Albinus + + Adapt Tramp tests + + * test/lisp/net/tramp-tests.el (tramp-test29-start-file-process) + (tramp-test30-make-process): Adapt tests. + +2025-05-03 Michael Albinus + + Fix quoted local file name parts in Tramp + + * lisp/net/tramp.el (tramp-handle-directory-file-name): + * lisp/net/tramp-integration.el (tramp-rfn-eshadow-update-overlay): + Handle quoted local file name part. + +2025-05-01 Jostein Kjønigsen + + Fix compilation-mode matches for csharp-mode (bug#78128) + + * lisp/progmodes/csharp-mode.el: + (csharp-compilation-re-dotnet-error): + (csharp-compilation-re-dotnet-warning): Ignore leading whitespace. + +2025-04-30 Eli Zaretskii + + Add 3 scripts to fontset setup + + * lisp/international/fontset.el (setup-default-fontset) + (script-representative-chars): Add support for Avestan, Old Turkic + and Chakma. Patch by Werner Lemberg . Do not merge + to master. + +2025-04-30 Eli Zaretskii + + Fix compilation errors in emacsclient.c with MinGW GCC 15 + + * lib-src/emacsclient.c (set_fg, get_wc): Declare using actual + function signatures. + (w32_give_focus): Cast return value of 'GetProcAddress' to correct + pointer types. (Bug#78160) + +2025-04-27 Po Lu + + Fix the Android build + + * java/README.res: Move from java/res/README, as the AAPT does + not permit non-resource files in resource directories. + +2025-04-27 Eli Zaretskii + + Avoid infinite recursion under 'rectangle-mark-mode' + + * lisp/rect.el (rectangle--region-beginning) + (rectangle--region-end): Avoid infinite recursion. Patch by Alcor + . Do not merge to master. (Bug#77973) + +2025-04-26 Sean Bright (tiny change) + + Include additional version metadata during Windows install + + * admin/nt/dist-build/emacs.nsi: Add DisplayIcon, DisplayVersion, and + Publisher values to the Uninstall registry key. + +2025-04-25 Stephen Gildea + + * doc/emacs/files.texi (Time Stamp Customization): Typo. + +2025-04-19 Spencer Baugh + + Backport: fix flymake margin indicator fallback logic + + Backport 861e7f8b60e4bf076bf5991d25a22b3a012746bd to fix bug#77313, so + that fringe indicators are once again reliably the default on frames + that support them. + + Do not merge to master. + + * lisp/progmodes/flymake.el (flymake-indicator-type) + (flymake-mode): Fix margin fallback behavior. + +2025-04-19 Michael Albinus + + * lisp/progmodes/heex-ts-mode.el (heex-ts): Fix :group name. + +2025-04-18 Konstantin Kharlamov + + Fix typescript-ts-mode indentation (bug#77803) + + Don't align variable names to their declaratory expression. + + Before this commit in code like: + + const a = 1, + b = 2; + + the b would get indented to `const'. Similarly for `var' and + `let'. The expected behavior instead is getting indented to + `typescript-ts-mode-indent-offset'. + + * lisp/progmodes/typescript-ts-mode.el + (typescript-ts-mode--indent-rules): Indent identifiers declarations to + `typescript-ts-mode-indent-offset'. + * test/lisp/progmodes/typescript-ts-mode-resources/indent.erts + (Lexical and variable declarations): Update test accordingly. + +2025-04-18 Yuan Fu + + Handle offset in treesit--update-ranges-local (bug#77848) + + * lisp/treesit.el: + (treesit--update-ranges-local): Add OFFSET parameter. + (treesit-update-ranges): Pass offset to + treesit--update-ranges-local. + +2025-04-18 kobarity + + Disable echo back instead of setting tty to raw in Inferior Python + + * lisp/progmodes/python.el (python-shell-setup-code): Change the + Python setup code. (Bug#76943) + + (cherry picked from commit 4c5c20ddc2cdde570ccf54c4aa60644828ee213d) + +2025-04-18 Michael Albinus + + * admin/notes/emba: Fix docker build instruction. + +2025-04-18 Sean Whitton + + * doc/lispref/text.texi (Margins): Grammar fix. + + Author: + +2025-04-16 Michael Albinus + + Backport: Fix tree-sitter tests on Emba + + * test/infra/Dockerfile.emba: Use tree-sitter-rust v0.23.3 in + order to match ABI version of libtree-sitter0. + + (cherry picked from commit 788c9cfb62c7fd50b171a9209dd7453bd03f14bf) + +2025-04-15 Wojciech Siewierski + + Fix deleting the first line of calc trail + + * lisp/calc/calc-trail.el (calc-trail-kill): Remove the check + preventing the removal of the first trail line, which is no + longer relevant since commit 8e1376a3912. (Bug#77816) + +2025-04-13 Po Lu + + Fix file descriptor leaks on arm Android + + * exec/loader-aarch64.s (_start): + + * exec/loader-armeabi.s (_start): Fix thinko. + Do not merge to master. + +2025-04-12 Stefan Monnier + + lisp/help.el (help-form-show): Improve last change (bug#77118) + + Fill the buffer from within the `with-output-to-temp-buffer`, as before. + +2025-04-12 Stephen Berman + + Fix display of keys in 'help-form' buffers (bug#77118) + + * lisp/help.el (help-form-show): Use 'insert' instead of 'princ' + so that keys in 'help-form' are displayed with 'help-key-binding' face. + +2025-04-12 Eli Zaretskii + + Improve documentation of 'user-emacs-directory' + + * doc/emacs/custom.texi (Find Init): Document the effect of + 'user-emacs-directory' on native compilation. Advise against + changing the value of 'user-emacs-directory' in init files. + (Bug#77745) + +2025-04-11 Sean Whitton + + Update remarks on name prefixes in coding conventions + + * doc/lispref/tips.texi (Coding Conventions): Say that it's okay + to put the name prefix later for defining constructs, rather + than explicitly instructing the reader to do so. Condense the + recommendation to err on the side of prepending the name prefix. + +2025-04-04 Michael Albinus + + Fix Tramp problem with loooongish file names + + * lisp/net/tramp-sh.el (tramp-readlink-file-truename): New defconst. + (tramp-bundle-read-file-names): Use new %m and %q format specifiers. + (tramp-sh-handle-file-truename): Use `tramp-readlink-file-truename'. + (tramp-bundle-read-file-names, tramp-get-remote-readlink): Simplify. + (tramp-expand-script): Add format specifiers %m and %q for test + commands. Addapt readlink call. + Reported by Stacey Marshall . + +2025-04-03 Yuan Fu + + Tighten the criteria for a defun in typescript-ts-mode (bug#77369) + + * lisp/progmodes/typescript-ts-mode.el: + (typescript-ts-mode--defun-type-regexp): New + variable (backported from master). + (typescript-ts-mode--defun-predicate): New function. + (typescript-ts-base-mode): Use new predicate. + +2025-04-03 Stephen Berman + + Fix obsolete documentation of desktop library + + * doc/emacs/misc.texi (Saving Emacs Sessions): Replace + documentation of the long-deleted user option + 'desktop-clear-preserve-buffers-regexp' with documentation of + 'desktop-clear-preserve-buffers'. + +2025-04-03 Michael Albinus + + Improve Tramp's initial warnings + + * lisp/net/tramp-cache.el (tramp-dump-connection-properties): + Adapt comment. + + * lisp/net/tramp-compat.el (tramp-warning): Declare and use it. + + * lisp/net/tramp-message.el (tramp-warning): Declare `indent'. + +2025-04-02 Michael Albinus + + Explain, how to suppress Tramp warnings + + * doc/misc/tramp.texi (Frequently Asked Questions): Remove double item. + (Traces and Profiles): Mention `warning-suppress-types'. (Bug#77422) + +2025-04-01 Stephen Gildea + + printed manuals: xrefs in and out of "Preparing Patches" + + Fix two cases of links where the on-line manual is one document but the + manual is split into separate documents for printing: + + * doc/emacs/package.texi (Fetching Package Sources): fix printed link to + "Preparing Patches" to point to separate document. + * doc/emacs/vc1-xtra.texi (Preparing Patches): fix printed link to + "Directory Variables" to point to separate document. + +2025-04-01 Michael Albinus + + Fix Tramp's file-attributes cache + + * lisp/net/tramp-adb.el (tramp-adb-handle-file-executable-p): + Check also for sticky bit. + (tramp-adb-handle-file-readable-p): Simplify. + + * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-file-executable-p): + Check also for sticky bit. Force `file-attributes' check. + + * lisp/net/tramp-sh.el (tramp-sh-handle-file-executable-p): + Check also for sticky bit. + (tramp-sh-handle-file-readable-p) + (tramp-sh-handle-file-writable-p): Simplify. + + * lisp/net/tramp-sudoedit.el (tramp-sudoedit-handle-file-executable-p): + Check also for sticky bit. + (tramp-sudoedit-handle-file-readable-p) + (tramp-sudoedit-handle-file-writable-p): Simplify. + + * lisp/net/tramp.el (tramp-use-file-attributes): Fix docstring. + (tramp-handle-file-readable-p, tramp-handle-file-writable-p): + Force `file-attributes' check. Use `file-truename' for symbolic links. + (tramp-check-cached-permissions): New optional argument FORCE. + Fix symlink check. Check also for sticky bit. (Bug#77402) + + * test/lisp/net/tramp-tests.el + (tramp-test20-file-modes-without-file-attributes) + (tramp-test21-file-links-without-file-attributes): New tests. + +2025-04-01 Pip Cet + + Fix compilation errors due to insufficient compiler safety (bug#63288) + + The default safety level is 1. Restoring the default safety level to + 1 after it was temporarily 0 should reset byte-compile-delete-errors + to nil, its default level. Failing to do that resulted in + miscompilation of code in highly-parallel builds. + + * lisp/emacs-lisp/cl-macs.el (cl--do-proclaim): Change + 'byte-compile-delete-errors' to become t only at 'safety' level 0, not + levels 1 or 2. + + (cherry picked from commit 53a5dada413662389a17c551a00d215e51f5049f) + +2025-03-30 Stephen Gildea + + Backport expansion of Time Stamp documentation + + * doc/emacs/files.texi (Time Stamps): Add examples of enabling + time stamping with add-hook, setting time-stamp-pattern as a + file-local variable, and showing a time stamp at the end of a + file. Divide into three sections. + * doc/emacs/emacs.texi: Add new nodes to menu. + * lisp/info.el (Info-file-list-for-emacs): Remove entry that + points Info at time-stamp discussion in the Autotype document. + * lisp/time-stamp.el (time-stamp-format, time-stamp-active, + time-stamp-count, time-stamp-pattern, time-stamp, time-stamp-string): + Expand doc strings. Include Info cross-references. + + Cherry picked from commits on the main branch. + Do not merge to master. + +2025-03-30 Michael Albinus + + Sync with Tramp 2.7.3-pre + + * doc/misc/tramp.texi: Use @dots{} where appropriate. + (External methods): Precise remark on rsync speed. + (Customizing Methods): Add incus-tramp. + (Password handling): Mention expiration of cached passwords when a + session timeout happens. + (Predefined connection information): Mention also "androidsu" as + special case of "tmpdir". + (Ad-hoc multi-hops, Frequently Asked Questions): + Improve description how ad-hoc multi-hop file names can be made + persistent. (Bug#65039, Bug#76457) + (Remote processes): Signals are not delivered to remote direct + async processes. Say, that there are restrictions for transfer of + binary data to remote direct async processes. + (Bug Reports): Explain bisecting. + (Frequently Asked Questions): Improve index. Speak about + fingerprint readers. Recommend `small-temporary-file-directory' + for ssh sockets. + (External packages): Rename subsection "Timers, process filters, + process sentinels, redisplay". + (Extension packages): New node. + (Top, Files directories and localnames): Add it to @menu. + + * doc/misc/trampver.texi: + * lisp/net/trampver.el (tramp-version): Adapt Tramp versions. + (tramp-repository-branch, tramp-repository-version): + Remove ;;;###tramp-autoload cookie. + + * lisp/net/tramp-adb.el: + * lisp/net/tramp-androidsu.el: + * lisp/net/tramp-cache.el: + * lisp/net/tramp-cmds.el: + * lisp/net/tramp-compat.el: + * lisp/net/tramp-container.el: + * lisp/net/tramp-crypt.el: + * lisp/net/tramp-ftp.el: + * lisp/net/tramp-fuse.el: + * lisp/net/tramp-gvfs.el: + * lisp/net/tramp-integration.el: + * lisp/net/tramp-message.el: + * lisp/net/tramp-rclone.el: + * lisp/net/tramp-sh.el: + * lisp/net/tramp-smb.el: + * lisp/net/tramp-sshfs.el: + * lisp/net/tramp-sudoedit.el: + * lisp/net/tramp.el: Use `when-let*', `if-let*' and `and-let*' + consequently. (Bug#73441) + + * lisp/net/tramp-adb.el (tramp-adb-maybe-open-connection): + Move setting of sentinel up. + + * lisp/net/tramp-archive.el (tramp-archive-file-name-p): + Add ;;;###tramp-autoload cookie. + (tramp-archive-local-file-name): New defun. + + * lisp/net/tramp-cache.el (tramp-connection-properties): Add link + to the Tramp manual in the docstring. + (tramp-get-connection-property, tramp-set-connection-property): + Don't raise a debug message for the `tramp-cache-version' key. + (with-tramp-saved-connection-property) + (with-tramp-saved-connection-properties): Add traces. + (tramp-dump-connection-properties): Don't save connection property + "pw-spec". + + * lisp/net/tramp-cmds.el (tramp-repository-branch) + (tramp-repository-version): Declare. + + * lisp/net/tramp-gvfs.el (tramp-gvfs-do-copy-or-rename-file): + (tramp-gvfs-do-copy-or-rename-file): Don't use the truename. + Handle symlinks. + (tramp-gvfs-local-file-name): New defun. + + * lisp/net/tramp-message.el (tramp-repository-branch) + (tramp-repository-version): Declare. + (tramp-error-with-buffer, tramp-user-error): Don't redisplay in + `sit-for'. (Bug#73718) + (tramp-warning): Fix `lwarn' call. + + * lisp/net/tramp.el (tramp-read-passwd): + * lisp/net/tramp-sh.el (tramp-maybe-open-connection): + * lisp/net/tramp-sudoedit.el (tramp-sudoedit-send-command): + Rename connection property "password-vector" to "pw-vector". + + * lisp/net/tramp-sh.el (tramp-methods) : + Adapt `tramp-copy-args' argument. + (tramp-get-remote-pipe-buf, tramp-actions-before-shell): + Use `tramp-fingerprint-prompt-regexp'. + (tramp-sh-handle-copy-directory): + Apply `tramp-do-copy-or-rename-file-directly' if possible. + (tramp-do-copy-or-rename-file): Refactor. Handle symlinks. + (Bug#76678) + (tramp-plink-option-exists-p): New defun. + (tramp-ssh-or-plink-options): Rename from + `tramp-ssh-controlmaster-options'. Adapt further plink options. + (tramp-do-copy-or-rename-file-out-of-band) + (tramp-maybe-open-connection): Adapt calls. + (tramp-sh-handle-make-process): Don't set connection property + "remote-pid", it's unused. + (tramp-sh-handle-process-file): Do proper quoting. + (tramp-vc-file-name-handler): Add `file-directory-p', which is + used in `vc-find-root'. (Bug#74026) + (tramp-maybe-open-connection): Use connection property "hop-vector". + (tramp-get-remote-pipe-buf): Make it more robust. + + * lisp/net/tramp-smb.el (tramp-smb-errors): Add string. + (tramp-smb-handle-copy-directory): Don't check existence of + DIRNAME, this is done in `tramp-skeleton-copy-directory' already. + (tramp-smb-handle-copy-file, tramp-smb-handle-rename-file): Refactor. + + * lisp/net/tramp-sshfs.el (tramp-sshfs-handle-process-file): + STDERR is not implemented. + + * lisp/net/tramp-sudoedit.el (tramp-sudoedit-do-copy-or-rename-file): + Don't use the truename. Handle symlinks. + + * lisp/net/tramp.el (tramp-mode): Set to nil on MS-DOS. + (tramp-otp-password-prompt-regexp): Add TACC HPC prompt. + (tramp-wrong-passwd-regexp): Add fingerprint messages. + (tramp-fingerprint-prompt-regexp, tramp-use-fingerprint): + New defcustoms. + (tramp-string-empty-or-nil-p): + Declare `tramp-suppress-trace' property. + (tramp-barf-if-file-missing): Accept also symlinks. + (tramp-skeleton-file-exists-p) + (tramp-handle-file-directory-p): Protect against cyclic symlinks. + (tramp-skeleton-make-symbolic-link): Drop volume letter when flushing. + (tramp-skeleton-process-file): Raise a warning if STDERR is not + implemented. + (tramp-skeleton-set-file-modes-times-uid-gid): Fix typo. + (tramp-compute-multi-hops): Check for + `tramp-sh-file-name-handler-p', it works only for this. + (tramp-handle-shell-command): + Respect `async-shell-command-display-buffer'. + (tramp-action-password, tramp-process-actions): Use connection + property "hop-vector". + (tramp-action-fingerprint, tramp-action-show-message): New defuns. + (tramp-action-show-and-confirm-message): Start check at (point-min). + (tramp-wait-for-regexp): Don't redisplay in `sit-for'. (Bug#73718) + (tramp-convert-file-attributes): Don't cache + "file-attributes-ID-FORMAT". + (tramp-read-passwd, tramp-clear-passwd): Rewrite. (Bug#74105) + + * test/lisp/net/tramp-tests.el (auth-source-cache-expiry) + (ert-batch-backtrace-right-margin): Set them to nil. + (vc-handled-backends): Suppress if noninteractive. + (tramp--test-enabled): Cleanup also + `tramp-compat-temporary-file-directory'. + (tramp-test11-copy-file, tramp-test12-rename-file) + (tramp-test18-file-attributes, tramp--test-deftest-with-stat) + (tramp--test-deftest-with-perl, tramp--test-deftest-with-ls) + (tramp--test-deftest-without-file-attributes) + (tramp-test21-file-links, tramp-test28-process-file) + (tramp-test32-shell-command, tramp-test36-vc-registered) + (tramp-test39-make-lock-file-name, tramp--test-check-files) + (tramp-test42-utf8, tramp-test43-file-system-info) + (tramp-test44-file-user-group-ids, tramp-test47-read-password): + Adapt tests. + (tramp-test47-read-fingerprint): New test. + +2025-03-30 Stefan Monnier + + lisp/emacs-lisp/cl-macs.el (cl-labels): Fix docstring (bug#77348) + +2025-03-29 Dominik Schrempf (tiny change) + + Fix minor issues in documentation of `use-package' + + (Bug#77311) + +2025-03-29 Vincenzo Pupillo + + PHP should be in the PATH, either locally or remotely. (bug#76242). + + * lisp/progmodes/php-ts-mode.el + (php-ts-mode-php-default-executable): Renamed from + 'php-ts-mode-php-executable'. + (php-ts-mode--executable): New function that returns the absolute + filename of the PHP executable, local or remote, based on + 'default-directory'. + (php-ts-mode--anchor-prev-sibling): Replaced 'when-let' with + “when-let*.” + (php-ts-mode--indent-defun): Replaced 'when-let' with + 'when-let*'. + (php-ts-mode-run-php-webserver): Use the new function + (php-ts-mode-php-default-executable). + (run-php): Use the new function (php-ts-mode-php-default-executable). + +2025-03-29 Eli Zaretskii + + Avoid warning when loading 'go-ts-mode' + + * lisp/progmodes/go-ts-mode.el (treesit-ready-p): Silence the + warning if the gomod language library is not installed. + (Bug#77213) + +2025-03-25 Yue Yi + + peg.texi: Fix bug#76555 even a bit more + + * doc/lispref/peg.texi (Parsing Expression Grammars): + Fix other part of the grammar of `define-peg-ruleset` example. + +2025-03-25 Yue Yi + + peg.texi: Fix bug#76555 even a bit more + + * doc/lispref/peg.texi (Parsing Expression Grammars): + Fix grammar of `define-peg-ruleset` example. + +2025-03-25 Stefan Monnier + + PEG: Fix bug#76555 + + * doc/lispref/peg.texi (Parsing Expression Grammars): + Fix `define-peg-ruleset` example. + + * lisp/progmodes/peg.el (define-peg-rule): Fix indent rule. + +2025-03-23 Juri Linkov + + Add a choice to 'dired-movement-style' to restore the previous behavior + + * lisp/dired.el (dired-movement-style): Add new values + 'bounded-files' and 'cycle-files' (bug#76596). + (dired--move-to-next-line): Use new values for users + who prefer the default behavior of Emacs 30.1. + +2025-03-23 Stefan Kangas + + Improve docstring of should-error + + * lisp/emacs-lisp/ert.el (should-error): Improve docstring. + +2025-03-23 Michael Albinus + + Use debian:bookworm for emba tests (don't merge) + + There are problems with treesitter installation from debian:sid. + + * test/infra/Dockerfile.emba (emacs-base): Use debian:bookworm. + (emacs-eglot, emacs-tree-sitter): Use emacs-base. + (emacs-native-comp): Install libgccjit-12-dev. + +2025-03-22 Juri Linkov + + * lisp/treesit.el (treesit-indent-region): Handle markers (bug#77077). + + Ensure that markers are converted to integers for 'beg' and 'end'. + +2025-03-20 Jindrich Makovicka (tiny change) + + Fix OSX build without pdumper + + * Makefile.in (install-arch-dep) [ns_self_contained]: Add missing + DUMPING = pdumper check. + +2025-03-16 Po Lu + + Fix clipboard object handle leak on Android 3.1 to 11.0 + + * src/androidselect.c (extract_fd_offsets): Release retrieved + ParcelFileDescriptor objects on APIs 12 through 30. + +2025-03-16 Eshel Yaron + + Only disable 'completion-preview-active-mode' when it is on + + * lisp/completion-preview.el + (completion-preview--post-command): Avoid calling + 'completion-preview-active-mode' to disable the mode when + already off, since it forces a costly redisplay. (Bug#76964) + +2025-03-15 Jonas Bernoulli + + Backport Transient commit f69e1286 + + 2025-03-12 f69e128654627275e7483a735f670bd53501999d + transient-suffix-object: Handle duplicated command invoked using mouse + + Fixes bug#76680. + +2025-03-15 Eli Zaretskii + + Fix 'whitespace-mode' in CJK locales + + * lisp/international/characters.el (ambiguous-width-chars): Remove + U+00A4 and U+00B7 from the list of ambiguous-width characters. + (cjk-ambiguous-chars-are-wide): Doc fix. (Bug#76852) + +2025-03-13 Yuan Fu + + Fix treesit-parser-create behavior regarding indirect buffers + + The previous fix fixed the problem that treesit-parser-create + always use the current buffer, but that introduce another subtle + problem: if an indirect buffer creates a parser, the parser + saves the base buffer rather than the indirect buffer. In Emacs + 29, if you create a parser in an indirect buffer, the parser + saves the indirect buffer. This change of behavior breaks some + existing use-cases for people using indirect buffer with + tree-sitter. + + In Emacs 31, indirect buffers and base buffer get their own + parser list, so this problem doesn't exist anymore. The fix is + only for Emacs 30. + + * src/treesit.c (Ftreesit_parser_create): Use the buffer that's + given to treesit-parser-create, even if it's an indirect buffer. + +2025-03-13 Eli Zaretskii + + Fix 'dired-movement-style' in Dired when subdirs are shown + + * lisp/dired.el (dired--move-to-next-line): Don't consider + sub-directory lines as empty. (Bug#76596) + +2025-03-11 Sean Whitton + + Correct some outdated docs for hack-local-variables + + * doc/lispref/variables.texi (File Local Variables): + : Say that it applies directory-local + variables too. Add a cross-reference. + (Directory Local Variables): Document dir-local-variables-alist. + * lisp/files.el (hack-local-variables): Say that it always puts + into effect directory-local variables. + +2025-03-10 Michael Albinus + + Add keyword placeholder to tramp.el + + * lisp/net/tramp.el: Add Version, Package-Requires, Package-Type + and URL keywords. + +2025-03-09 Stefan Kangas + + Rewrite ERT manual introduction + + * doc/misc/ert.texi (Top): Rewrite for clarity. Don't give such + prominent mention to to TDD or JUnit, references which now seem dated. + +2025-03-09 Eli Zaretskii + + Document return values of the various read-* functions + + * lisp/textmodes/string-edit.el (read-string-from-buffer): + * lisp/simple.el (read-from-kill-ring, read-shell-command) + (read-signal-name): + * lisp/replace.el (read-regexp-case-fold-search): + * lisp/auth-source.el (read-passwd): + * lisp/subr.el (read-key, read-number): + * lisp/minibuffer.el (read-file-name, read-no-blanks-input): + * lisp/international/mule-cmds.el (read-multilingual-string): + * lisp/language/japan-util.el (read-hiragana-string): + * lisp/files-x.el (read-file-local-variable) + (read-file-local-variable-mode, read-file-local-variable-value): + * lisp/faces.el (read-face-font, read-face-name): + * lisp/simple.el (read-extended-command): + * lisp/env.el (read-envvar-name): + * lisp/files.el (read-directory-name): + * lisp/faces.el (read-color): + * lisp/international/mule-diag.el (read-charset): + * lisp/emacs-lisp/map-ynp.el (read-answer): + * src/coding.c (Fread_coding_system) + (Fread_non_nil_coding_system): + * src/minibuf.c (Fread_command, Fread_from_minibuffer): + * src/lread.c (Fread_char, Fread_char_exclusive, Fread_event): Doc + fixes. + +2025-03-09 Ben Scuron (tiny change) + + Fix TAGS regeneration with Universal Ctags + + * lisp/progmodes/etags-regen.el (etags-regen--append-tags): Move + the "-o" option to before the filename, as Ctags doesn't allow + it to follow the file name. (Bug#76855) + +2025-03-08 Eli Zaretskii + + Fix crash in daemon when "C-x C-c" while a client frame shows tooltip + + * src/frame.c (delete_frame): Ignore tooltip frames when looking + for other frames on the same terminal. (Bug#76842) + + (cherry picked from commit d2445c8c23595efdd444fce6f0c33ba66b596812) + +2025-03-07 Stefan Kangas + + Explicitly document read-string return value + + * src/minibuf.c (Fread_string): Document return value explicitly. + Better document PROMPT argument, and reflow docstring. (Bug#76797) + +2025-03-07 kobarity + + Improve docstrings of python.el import management + + Added notes that when adding import statements for a file that + does not belong to a project, it may take some time to find + candidate import statements in the default directory. + + * lisp/progmodes/python.el (python-add-import) + (python-fix-imports): Improve docstring. (Bug#74894) + +2025-03-06 Eli Zaretskii + + Avoid warnings about 'image-scaling-factor' in builds --without-x + + * lisp/cus-start.el (standard): Exclude 'image-*' options if Emacs + was built without GUI support. (Bug#76716) + +2025-03-06 Eli Zaretskii + + Fix etags tests broken by updating Copyright years + + * test/manual/etags/ETAGS.good_1: + * test/manual/etags/ETAGS.good_2: + * test/manual/etags/ETAGS.good_3: + * test/manual/etags/ETAGS.good_4: + * test/manual/etags/ETAGS.good_5: + * test/manual/etags/ETAGS.good_6: + * test/manual/etags/CTAGS.good: + * test/manual/etags/CTAGS.good_crlf: + * test/manual/etags/CTAGS.good_update: Update. (Bug#76744) + +2025-03-06 Mauro Aranda + + Fix some widgets in customize-dirlocals + + * lisp/cus-edit.el (custom-dynamic-cons-value-create): Make sure + to eval the keymap property. (Bug#76756) + +2025-03-05 Thierry Volpiatto + + Fix register-use-preview behavior with never value + + Allow popping up preview when pressing C-h. + + Don't exit the minibuffer when the call to + register-read-with-preview-fancy is triggered by C-h. + + * lisp/register.el (register-read-with-preview-fancy): Do it. + +2025-03-05 Po Lu + + Move java/incrementing-version-code to AndroidManifest.xml.in + + * admin/admin.el (admin-android-version-code-regexp): New + variable. + (set-version): Modify AndroidManifest.xml.in instead. + + * java/AndroidManifest.xml.in (Version-code): Define version + code. + + * java/incrementing-version-code: Delete file. + +2025-03-05 Peter Oliver + + Provide an Android version code derived from the Emacs version + + The version code is intended to be an integer that increments + for each Android package release + (https://developer.android.com/studio/publish/versioning#versioningsettings). + + If we keep this updated under version control, then F-Droid (a + third-party Android package repository), can watch for that, and + use it to automatically build Emacs packages for Android each + time a new Emacs release is tagged + (https://f-droid.org/en/docs/Build_Metadata_Reference/#UpdateCheckData). + + * admin/admin.el (set-version): Update version code in + java/incrementing-version-code + * java/incrementing-version-code: New file containing an Android + version code corresponding to the current Emacs version. + (bug#75809) + +2025-03-04 Vitaliy Chepelev (tiny change) + + image-dired: Don't croak on file names with regexp characters + + * lisp/image/image-dired-dired.el (image-dired-mark-tagged-files): + * lisp/image/image-dired-tags.el (image-dired-get-comment) + (image-dired-write-comments, image-dired-list-tags) + (image-dired-remove-tag, image-dired-write-tags): Quote file name + for search-forward-regexp. (Bug#73445) + + (cherry picked from commit 7930fe2f44f50b6a7abf5fbe1218dcc15e85b28d) + +2025-03-04 Po Lu + + Document requirements respecting XDG MIME databases on Android + + * doc/emacs/android.texi (Android Software): State that librsvg + requires a MIME database to display embedded images, and how to + acquire such a database. + +2025-03-02 Pip Cet + + Improve instructions for running with -fsanitize=address (bug#76393) + + * etc/DEBUG (ASAN_OPTIONS): Add 'detect_stack_use_after_return=0' + requirement. Remove obsolete unexec commentary. + + (cherry picked from commit 1e84a8767692f9f3a3bc37eba8eeb8f9d537322d) + +2025-03-01 Dmitry Gutov + + Fix the use of xref-window-local-history together with Xref buffer + + * lisp/progmodes/xref.el (xref--push-markers): Temporarily + restore the selected window as well, using the value from the + new argument (bug#76565). Update both callers. + +2025-03-01 Dmitry Gutov + + completing-read-multiple: Fix support for ":" as separator + + * lisp/emacs-lisp/crm.el (completing-read-multiple): + Do not search for separators inside the prompt (bug#76461). + +2025-03-01 Eli Zaretskii + + Fix 'M-q' in 'makefile-mode' + + * lisp/progmodes/make-mode.el (makefile-mode-map): Bind 'M-q' to + 'fill-paragraph', as 'prog-mode's default binding is not + appropriate for Makefile's syntax. (Bug#76641) + +2025-03-01 Randy Taylor + + Fix go-ts-mode const_spec highlighting (Bug#76330) + + * lisp/progmodes/go-ts-mode.el (go-ts-mode--font-lock-settings): + Handle multiple const_spec identifiers. + * test/lisp/progmodes/go-ts-mode-resources/font-lock.go: + Add test case. + +2025-03-01 Stefan Kangas + + keymaps.texi: Move "Changing Key Bindings" section up + + * doc/lispref/keymaps.texi (Changing Key Bindings): Move section + up. (Bug#52821) + +2025-03-01 Stefan Kangas + + keymaps.texi: Move "Key Sequences" section down + + * doc/lispref/keymaps.texi (Key Sequences): Move section + down. (Bug#52821) + +2025-03-01 Stefan Kangas + + Improve process-get/process-put docstrings + + * lisp/subr.el (process-get, process-put): Explain the purpose of these + functions in the docstring. + +2025-02-28 Michael Albinus + + Fix recent change in diff-no-select + + * lisp/vc/diff.el (diff-no-select): Keep initial default directory + in *Diff* buffer. + +2025-02-28 Po Lu + + Prevent rare freeze on Android 4.2 through 4.4 + + * src/android.c (android_run_select_thread, android_init_events) + (android_select): Enable self-pipes on all Android versions <= 21. + The Android C library provides a functioning pselect on these + systems, but it does not apply the signal mask atomically. + (android_run_select_thread): Correct typo. This never produced + any adverse consequences, as the relevant signals would already + have been blocked by `setupSystemThread'. + + Do not merge to master. + +2025-02-28 Michael Albinus + + * lisp/proced.el (proced-<): Check, that NUM1 and NUM2 are numbers. + + (Bug#76549) + +2025-02-28 Eli Zaretskii + + Fix mouse-2 clicks on mode line and header line + + * src/keymap.c (Fcurrent_active_maps): For clicks on mode-line and + header-line, always override the keymaps at buffer position. + (Bug#75219) + + (cherry picked from commit c41ea047a434710c4b7bc8280695c83fbe5fff35) + +2025-02-27 Stefan Kangas + + Recommend secure-hash in md5 docstring + + * src/fns.c (Fmd5): Repeat explanation from manual about md5 being + "semi-obsolete", and recommend using secure-hash instead. + +2025-02-27 Tomas Nordin + + Improve docstring of add-hook and remove-hook + + * lisp/subr.el (add-hook, remove-hook): Remove detail about setting to + nil and talk about functions instead of hooks. (Bug#72915) + +2025-02-27 Jared Finder + + * lisp/subr.el (read-key): Add 'tab-line' (bug#76408). + + Backport: + (cherry picked from commit 0c8abe8bb5072c46a93585cb325c249f85f3d9c2) + +2025-02-27 Paul Eggert + + Fix fns-tests-collate-strings failure with musl + + * test/src/fns-tests.el (fns-tests-collate-strings): + Don’t assume "en_XY.UTF-8", or any particular string, + is an invalid locale, as they all seem to be valid in musl. + Instead, simply test that a non-string is invalid. + (Bug#76550) + +2025-02-26 Eli Zaretskii + + Fix setup of coding-systems on MS-Windows + + * src/emacs.c (main) [HAVE_PDUMPER] [WINDOWSNT]: Call + 'w32_init_file_name_codepage' again after loading the pdumper + file. + * src/w32.c (w32_init_file_name_codepage) [HAVE_PDUMPER]: + Reinitialize additional variables. (Bug#75207) + + (cherry picked from commit cc5cd4de93d1e5ba205cbf0c370aef4559bc342b) + +2025-02-25 Basil L. Contovounesios + + Fix ert-font-lock macro signatures + + * doc/misc/ert.texi (Syntax Highlighting Tests): + * test/lisp/emacs-lisp/ert-font-lock-tests.el + (test-line-comment-p--emacs-lisp, test-line-comment-p--shell-script) + (test-line-comment-p--javascript, test-line-comment-p--python) + (test-line-comment-p--c, test-macro-test--correct-highlighting) + (test-macro-test--docstring, test-macro-test--failing) + (test-macro-test--file, test-macro-test--file-no-asserts) + (test-macro-test--file-failing): Reindent macro calls. + (with-temp-buffer-str-mode): Evaluate macro arguments left-to-right. + (ert-font-lock--wrap-begin-end): Use rx for more robust composition. + (test-line-comment-p--php): Require that php-mode is callable, not + already loaded. + + * lisp/emacs-lisp/ert-font-lock.el (ert-font-lock-deftest) + (ert-font-lock-deftest-file): NAME is not followed by an empty list + like in ert-deftest, so the optional DOCSTRING is actually the + second argument. Adapt calling convention in docstring, and debug, + doc-string, and indent properties accordingly (bug#76372). Fix + docstring grammar, document MAJOR-MODE, and avoid referring to a + file name as a path. + +2025-02-24 Eli Zaretskii + + Fix a typo in 'window_text_pixel_size' + + This typo caused strange mis-behaviors in buffers + with non-ASCII characters. + * src/xdisp.c (window_text_pixel_size): Fix typo. (Bug#76519) + +2025-02-24 Ulrich Müller + + * doc/misc/efaq.texi (New in Emacs 30): Fix typo. (Bug#76518) + +2025-02-23 Joseph Turner + + Upgrade out-of-date VC package dependencies + + * lisp/emacs-lisp/package-vc.el (package-vc-install-dependencies): Pass + the specified package version when checking if a package is installed. + + (Bug#73781) + + (cherry picked from commit 71a4670a9fa238f920ce88b938f703b605ad2f48) + +2025-02-23 Vincenzo Pupillo + + Constant highlighting no longer captures Java annotations + + * lisp/progmodes/java-ts-mode.el + (java-ts-mode--fontify-constant): New function. + (java-ts-mode--font-lock-settings): Use it. + +2025-02-23 Stefan Kangas + + Improve wording of lsh docstring + + * lisp/subr.el (lsh): Improve wording of docstring. + +2025-02-23 Stefan Kangas + + Don't document deleted xwidget functions + + * doc/lispref/display.texi (Xwidgets): Don't document deleted function + xwidget-webkit-execute-script-rv. Fix name of deleted and then re-added + function xwidget-webkit-title. + +2025-02-23 Michael Albinus + + Use a persistent directory as default directory in diff + + * lisp/vc/diff.el (diff-no-select): Use `temporary-file-directory' + as default directory. Set default file permissions temporarily to + #o600. (Bug#69606) + + (cherry picked from commit ae439cc1b9f428a8247548f4ef3b992608a3c09b) + +2025-02-23 Stefan Kangas + + Sync build-aux/update-copyright from Gnulib + + * build-aux/update-copyright: Copy from Gnulib. This fixes a bug + where troff markers were introduced in ChangeLog files. + (Do not merge to master.) + +2025-02-23 Stefan Kangas + + Minor refactoring in admin/admin.el + + * admin/admin.el (admin--read-root-directory): + (admin--read-version): New functions. + (add-release-logs, set-version, set-copyright, make-manuals) + (make-manuals-dist, make-news-html-file): Use above new function. + +2025-02-23 Stefan Kangas + + Bump Emacs version to 30.1.50 + + * README: + * configure.ac: + * etc/NEWS: + * exec/configure.ac: + * msdos/sed2v2.inp: + * nt/README.W32: Bump Emacs version to 30.1.50. + +2025-02-23 Stefan Kangas + + Release Emacs 30.1 + + * ChangeLog.5: New file. + * Makefile.in (CHANGELOG_HISTORY_INDEX_MAX): Bump. + * etc/HISTORY: Add Emacs 30.1. + 2025-02-23 Stefan Kangas * Version 30.1 released. This file records repository revisions from commit 1cda0967b4d3c815fc610794ad6a8fc2b913a3c5 (exclusive) to -commit bcba098505e4f80eef41e4be9726f1f9868223f3 (inclusive). +commit 299d3a440121ff6692a85615ff97e6ad4dde91db (inclusive). See ChangeLog.4 for earlier changes. ;; Local Variables: diff --git a/etc/AUTHORS b/etc/AUTHORS index 5ce0044e778..9d289f0edf8 100644 --- a/etc/AUTHORS +++ b/etc/AUTHORS @@ -75,7 +75,7 @@ Adrian Robert: co-wrote ns-win.el and changed nsterm.m nsfns.m nsfont.m nsterm.h nsmenu.m configure.ac src/Makefile.in macos.texi README config.in emacs.c font.c keyboard.c nsgui.h nsimage.m xdisp.c image.c lib-src/Makefile.in lisp.h menu.c - Makefile.in and 78 other files + Makefile.in and 79 other files Ævar Arnfjörð Bjarmason: changed rcirc.el @@ -474,11 +474,11 @@ Antoine Beaupré: changed vc-git.el Antoine Kalmbach: changed README.md eglot.el -Antoine Levitt: changed gnus-group.el gnus-sum.el message.texi +Antoine Levitt: changed gnus-group.el gnus-sum.el message.texi ada-prj.el ange-ftp.el cus-edit.el dired-x.el ebnf2ps.el emerge.el erc-button.el erc-goodies.el erc-stamp.el erc-track.el files.el find-file.el gnus-art.el gnus-uu.el gnus.el gnus.texi message.el mh-funcs.el - mh-mime.el and 8 other files + and 9 other files Antonin Houska: changed newcomment.el @@ -607,7 +607,7 @@ Basil L. Contovounesios: changed simple.el subr.el message.el eww.el modes.texi custom.el text.texi bibtex.el eglot-tests.el js.el gnus-sum.el internals.texi subr-tests.el customize.texi display.texi files.texi gnus-art.el gnus-group.el gnus-win.el gnus.texi gravatar.el - and 369 other files + and 371 other files Bastian Beischer: changed semantic/complete.el calc-yank.el include.el mru-bookmark.el refs.el senator.el @@ -661,6 +661,8 @@ Ben Menasha: changed nnmh.el Ben North: changed outline.el buffer.c fill.el isearch.el lisp-mode.el paren.el w32term.c xfaces.c +Ben Scuron: changed etags-regen.el + Benson Chu: changed font-lock.el tab-bar.el tramp-sh.el Bernhard Herzog: changed vc-hg.el menu.c xsmfns.c @@ -932,7 +934,7 @@ and co-wrote longlines.el tango-dark-theme.el tango-theme.el and changed simple.el display.texi xdisp.c files.el frames.texi cus-edit.el files.texi custom.el subr.el text.texi faces.el keyboard.c startup.el package.el misc.texi emacs.texi modes.texi mouse.el - custom.texi image.c window.el and 932 other files + custom.texi image.c window.el and 934 other files Chris Chase: co-wrote idlw-shell.el idlwave.el @@ -1289,7 +1291,7 @@ and co-wrote hideshow.el and changed vc.el configure.ac vc-hg.el vc-git.el src/Makefile.in vc-bzr.el sysdep.c emacs.c process.c vc-cvs.el lisp.h term.c vc-hooks.el xterm.c keyboard.c vc-svn.el xterm.el callproc.c darwin.h - term.el gnu-linux.h and 919 other files + term.el gnu-linux.h and 920 other files Danny Freeman: changed treesit-tests.el treesit.el @@ -1329,7 +1331,7 @@ and co-wrote latin-ltx.el socks.el and changed configure.ac help.el mule-cmds.el fortran.el mule-conf.el xterm.c browse-url.el mule.el coding.c src/Makefile.in european.el fns.c mule-diag.el simple.el wid-edit.el cus-edit.el cus-start.el - files.el keyboard.c byte-opt.el info.el and 770 other files + files.el keyboard.c byte-opt.el info.el and 771 other files Dave Pearson: wrote 5x5.el quickurl.el @@ -1510,10 +1512,10 @@ Debarshi Ray: changed erc-backend.el erc.el Decklin Foster: changed nngateway.el -Deepak Goel: changed idlw-shell.el feedmail.el files.el find-func.el - flymake.el mh-search.el mh-seq.el mh-thread.el mh-xface.el org.el - simple.el vc.el vhdl-mode.el wdired.el README allout.el appt.el - apropos.el artist.el bibtex.el bindings.el and 82 other files +Deepak Goel: changed idlw-shell.el ada-xref.el feedmail.el files.el + find-func.el flymake.el mh-search.el mh-seq.el mh-thread.el mh-xface.el + org.el simple.el vc.el vhdl-mode.el wdired.el README ada-mode.el + allout.el appt.el apropos.el artist.el and 85 other files D. E. Evans: changed basic.texi @@ -1736,9 +1738,9 @@ Eli Zaretskii: wrote [bidirectional display in xdisp.c] chartab-tests.el coding-tests.el etags-tests.el rxvt.el tty-colors.el and co-wrote help-tests.el and changed xdisp.c display.texi w32.c msdos.c simple.el w32fns.c - files.el fileio.c keyboard.c emacs.c configure.ac text.texi w32term.c + files.el fileio.c keyboard.c configure.ac emacs.c text.texi w32term.c dispnew.c frames.texi files.texi w32proc.c xfaces.c window.c - dispextern.h lisp.h and 1401 other files + dispextern.h lisp.h and 1407 other files Eliza Velasquez: changed server.el simple.el @@ -1764,7 +1766,7 @@ Emilio C. Lopes: changed woman.el cmuscheme.el help.el vc.el advice.el and 58 other files Emmanuel Briot: wrote xml.el -and changed ada-stmt.el +and changed ada-mode.el ada-stmt.el ada-prj.el ada-xref.el Era Eriksson: changed bibtex.el dired.el json.el ses.el ses.texi shell.el tramp.el tramp.texi @@ -2193,7 +2195,7 @@ Gerd Möllmann: wrote authors.el ebrowse.el jit-lock.el tooltip.el and changed xdisp.c xterm.c dispnew.c dispextern.h xfns.c xfaces.c window.c keyboard.c lisp.h faces.el alloc.c buffer.c startup.el xterm.h fns.c term.c configure.ac simple.el frame.c xmenu.c emacs.c - and 623 other files + and 626 other files Gergely Nagy: changed erc.el @@ -2223,7 +2225,7 @@ and changed configure.ac Makefile.in src/Makefile.in calendar.el lisp/Makefile.in diary-lib.el files.el make-dist rmail.el progmodes/f90.el bytecomp.el admin.el misc/Makefile.in simple.el authors.el startup.el emacs.texi lib-src/Makefile.in display.texi - ack.texi subr.el and 1791 other files + ack.texi subr.el and 1796 other files Glynn Clements: wrote gamegrid.el snake.el tetris.el @@ -2522,7 +2524,8 @@ Itai Y. Efrat: changed browse-url.el Itai Zukerman: changed mm-decode.el Ivan Andrus: changed editfns.c epg.el ffap.el find-file.el ibuf-ext.el - ibuffer.el newcomment.el nxml-mode.el progmodes/python.el + ibuffer.el newcomment.el nextstep/templates/Info.plist.in nxml-mode.el + progmodes/python.el Ivan Boldyrev: changed mml1991.el @@ -2673,9 +2676,9 @@ Jan Vroonhof: changed gnus-cite.el gnus-msg.el nntp.el Jared Finder: wrote window-tool-bar.el and changed commands.texi menu-bar.el term.c tab-line.el xt-mouse.el - frame.c frames.texi isearch.el modes.texi mouse.el tmm.el tool-bar.el - wid-edit.el windows.texi artist.el dired.el dispnew.c ediff-wind.el - ediff.el elisp.texi emacs.texi and 16 other files + frame.c frames.texi isearch.el modes.texi mouse.el subr.el tmm.el + tool-bar.el wid-edit.el windows.texi artist.el dired.el dispnew.c + ediff-wind.el ediff.el elisp.texi and 16 other files Jarek Czekalski: changed keyboard.c callproc.c mini.texi minibuf.c misc.texi server.el shell.el w32fns.c xgselect.c @@ -2902,8 +2905,8 @@ Jim Wilson: changed alloca.c oldXMenu/Makefile.in Jin Choi: changed progmodes/python.el -Jindřich Makovička: changed eval.c fns.c pgtkfns.c pgtkselect.c - pgtkterm.c +Jindřich Makovička: changed Makefile.in eval.c fns.c pgtkfns.c + pgtkselect.c pgtkterm.c Jirka Kosek: changed mule.el @@ -3163,7 +3166,7 @@ Jorge P. De Morais Neto: changed TUTORIAL cl.texi Jose A. Ortega Ruiz: changed doc-view.el misc.texi mixal-mode.el gnus-sum.el imenu.el url-http.el -Jose E. Marchesi: changed gomoku.el simple.el smtpmail.el +Jose E. Marchesi: changed ada-mode.el gomoku.el simple.el smtpmail.el José L. Doménech: changed dired-aux.el @@ -3216,7 +3219,7 @@ and co-wrote help-tests.el keymap-tests.el and changed subr.el desktop.el w32fns.c bs.el faces.el simple.el emacsclient.c files.el server.el help-fns.el xdisp.c org.el w32term.c w32.c buffer.c keyboard.c ido.el image.c window.c eval.c allout.el - and 1224 other files + and 1228 other files Juan Pechiar: changed ob-octave.el @@ -3267,7 +3270,7 @@ Juri Linkov: wrote compose.el emoji.el files-x.el misearch.el and changed isearch.el simple.el info.el replace.el dired.el dired-aux.el minibuffer.el window.el progmodes/grep.el outline.el subr.el vc.el mouse.el diff-mode.el repeat.el files.el image-mode.el menu-bar.el - vc-git.el project.el search.texi and 490 other files + vc-git.el project.el search.texi and 491 other files Jussi Lahdenniemi: changed w32fns.c ms-w32.h msdos.texi w32.c w32.h w32console.c w32heap.c w32inevt.c w32term.h @@ -3343,7 +3346,7 @@ and changed simple.el files.el CONTRIBUTE doc-view.el image-mode.el Karl Heuer: changed keyboard.c lisp.h xdisp.c buffer.c xfns.c xterm.c alloc.c files.el frame.c configure.ac window.c data.c minibuf.c editfns.c fns.c process.c Makefile.in fileio.c simple.el keymap.c - indent.c and 446 other files + indent.c and 447 other files Karl Kleinpaste: changed gnus-sum.el gnus-art.el gnus-picon.el gnus-score.el gnus-uu.el gnus-xmas.el gnus.el mm-uu.el mml.el nnmail.el @@ -3510,7 +3513,7 @@ Kim F. Storm: wrote bindat.el cua-base.el cua-gmrk.el cua-rect.el ido.el and changed xdisp.c dispextern.h process.c simple.el window.c keyboard.c xterm.c dispnew.c subr.el w32term.c lisp.h fringe.c display.texi macterm.c alloc.c fns.c xfaces.c keymap.c xfns.c xterm.h .gdbinit - and 248 other files + and 249 other files Kimit Yada: changed copyright.el @@ -3562,10 +3565,10 @@ Konrad Hinsen: wrote ol-eshell.el and changed ob-python.el Konstantin Kharlamov: changed smerge-mode.el diff-mode.el files.el - alloc.c autorevert.el calc-aent.el calc-ext.el calc-lang.el cc-mode.el - cperl-mode.el css-mode.el cua-rect.el dnd.el ebnf-abn.el ebnf-dtd.el - ebnf-ebx.el emacs-module-tests.el epg.el faces.el gnus-art.el gtkutil.c - and 30 other files + indent.erts typescript-ts-mode.el ada-mode.el alloc.c autorevert.el + calc-aent.el calc-ext.el calc-lang.el cc-mode.el cperl-mode.el + css-mode.el cua-rect.el dnd.el ebnf-abn.el ebnf-dtd.el ebnf-ebx.el + emacs-module-tests.el epg.el and 33 other files Konstantin Kliakhandler: changed org-agenda.el @@ -3686,11 +3689,11 @@ Lele Gaifax: changed progmodes/python.el TUTORIAL.it python-tests.el flymake-proc.el flymake.texi isearch.el pgtkfns.c xterm.c Lennart Borgman: co-wrote ert-x.el -and changed nxml-mode.el tutorial.el re-builder.el window.el buff-menu.el - emacs-lisp/debug.el emacsclient.c filesets.el flymake.el help-fns.el - isearch.el linum.el lisp-mode.el lisp.el mouse.el progmodes/grep.el - recentf.el remember.el replace.el reveal.el ruby-mode.el - and 5 other files +and changed nxml-mode.el tutorial.el re-builder.el window.el ada-xref.el + buff-menu.el emacs-lisp/debug.el emacsclient.c filesets.el flymake.el + help-fns.el isearch.el linum.el lisp-mode.el lisp.el mouse.el + progmodes/grep.el recentf.el remember.el replace.el reveal.el + and 6 other files Lennart Staflin: changed dired.el diary-ins.el diary-lib.el tq.el xdisp.c @@ -3793,7 +3796,7 @@ Lute Kamstra: changed modes.texi emacs-lisp/debug.el generic-x.el generic.el font-lock.el simple.el subr.el battery.el debugging.texi easy-mmode.el elisp.texi emacs-lisp/generic.el hl-line.el info.el octave.el basic.texi bindings.el calc.el cmdargs.texi diff-mode.el - doclicense.texi and 288 other files + doclicense.texi and 289 other files Lynn Slater: wrote help-macro.el @@ -3930,7 +3933,7 @@ Mark Oteiza: wrote mailcap-tests.el md4-tests.el xdg-tests.el xdg.el and changed image-dired.el dunnet.el mpc.el eww.el json.el calc-units.el lcms.c subr-x.el subr.el message.el tex-mode.el cl-macs.el cl.texi ibuffer.el lcms-tests.el mailcap.el progmodes/python.el cl-print.el - eldoc.el emacs-lisp/chart.el files.el and 173 other files + eldoc.el emacs-lisp/chart.el files.el and 172 other files Mark Plaksin: changed nnrss.el term.el @@ -3955,7 +3958,7 @@ and changed cus-edit.el files.el progmodes/compile.el rmail.el tex-mode.el find-func.el rmailsum.el simple.el cus-dep.el dired.el mule-cmds.el rmailout.el checkdoc.el configure.ac custom.el emacsbug.el gnus.el help-fns.el ls-lisp.el mwheel.el sendmail.el - and 125 other files + and 126 other files Markus Sauermann: changed lisp-mode.el @@ -4004,7 +4007,7 @@ Martin Pohlack: changed iimage.el pc-select.el Martin Rudalics: changed window.el window.c windows.texi frame.c xdisp.c xterm.c frames.texi w32fns.c w32term.c xfns.c frame.el display.texi frame.h help.el cus-start.el buffer.c window.h mouse.el dispnew.c - keyboard.c nsfns.m and 215 other files + keyboard.c nsfns.m and 216 other files Martin Stjernholm: wrote cc-bytecomp.el and co-wrote cc-align.el cc-cmds.el cc-compat.el cc-defs.el cc-engine.el @@ -4128,7 +4131,7 @@ Mattias Engdegård: changed byte-opt.el bytecomp.el bytecomp-tests.el fns.c subr.el rx.el lisp.h rx-tests.el lread.c searching.texi eval.c bytecode.c print.c alloc.c calc-tests.el progmodes/compile.el fns-tests.el macroexp.el subr-tests.el cconv.el data.c - and 790 other files + and 789 other files Mattias M: changed asm-mode-tests.el asm-mode.el @@ -4178,7 +4181,7 @@ and changed tramp.texi tramp-adb.el trampver.el trampver.texi files.el dbusbind.c gitlab-ci.yml files.texi ange-ftp.el dbus.texi file-notify-tests.el Dockerfile.emba autorevert.el tramp-container.el tramp-fish.el kqueue.c os.texi files-x.el shell.el simple.el README - and 331 other files + and 333 other files Michael Ben-Gershon: changed acorn.h configure.ac riscix1-1.h riscix1-2.h unexec.c @@ -4394,7 +4397,7 @@ Miles Bader: wrote button.el face-remap.el image-file.el macroexp.el and changed comint.el faces.el simple.el editfns.c xfaces.c xdisp.c info.el minibuf.c display.texi quick-install-emacs wid-edit.el xterm.c dispextern.h subr.el window.el cus-edit.el diff-mode.el xfns.c - bytecomp.el help.el lisp.h and 271 other files + bytecomp.el help.el lisp.h and 272 other files Milton Wulei: changed gdb-ui.el @@ -4776,7 +4779,7 @@ and co-wrote cal-dst.el and changed lisp.h configure.ac alloc.c fileio.c process.c editfns.c sysdep.c xdisp.c fns.c image.c data.c emacs.c keyboard.c lread.c xterm.c eval.c gnulib-comp.m4 merge-gnulib callproc.c Makefile.in - buffer.c and 1889 other files + buffer.c and 1892 other files Paul Fisher: changed fns.c @@ -4804,7 +4807,7 @@ Paul Reilly: changed dgux.h lwlib-Xm.c lwlib.c xlwmenu.c configure.ac lwlib/Makefile.in mail/rmailmm.el rmailedit.el rmailkwd.el and 10 other files -Paul Rivier: changed mixal-mode.el reftex-vars.el reftex.el +Paul Rivier: changed ada-mode.el mixal-mode.el reftex-vars.el reftex.el Paul Rubin: changed config.h sun2.h texinfmt.el window.c @@ -4826,7 +4829,7 @@ Pavel Janík: co-wrote eudc-bob.el eudc-export.el eudc-hotlist.el and changed keyboard.c xterm.c COPYING xdisp.c process.c emacs.c lisp.h menu-bar.el ldap.el make-dist xfns.c buffer.c coding.c eval.c fileio.c flyspell.el fns.c indent.c Makefile.in callint.c cus-start.el - and 699 other files + and 702 other files Pavel Kobiakov: wrote flymake-proc.el flymake.el and changed flymake.texi @@ -4908,9 +4911,9 @@ Peter O'Gorman: changed configure.ac frame.h hpux10-20.h termhooks.h Peter Oliver: changed emacsclient.desktop emacsclient-mail.desktop Makefile.in emacs-mail.desktop configure.ac misc.texi server.el - dired-tests.el ediff-diff.el emacs.c emacs.desktop emacs.metainfo.xml - emacsclient.1 perl-mode.el ruby-mode-tests.el vc-sccs.el - wdired-tests.el + admin.el dired-tests.el ediff-diff.el emacs.c emacs.desktop + emacs.metainfo.xml emacsclient.1 incrementing-version-code perl-mode.el + ruby-mode-tests.el vc-sccs.el wdired-tests.el Peter Povinec: changed term.el @@ -5055,9 +5058,9 @@ Piotr Zieliński: wrote org-mouse.el Pip Cet: wrote image-circular-tests.el and changed xdisp.c comp.c byte-opt.el fns.c pdumper.c alloc.c - display.texi ftcrfont.c image.c sfnt.c xterm.c bytecomp-tests.el - bytecomp.el ccl-tests.el ccl.c ccl.el cmds.c comint.el - comp-test-funcs.el comp-tests.el comp.el and 32 other files + display.texi ftcrfont.c image.c sfnt.c xterm.c DEBUG bytecomp-tests.el + bytecomp.el ccl-tests.el ccl.c ccl.el cl-macs.el cmds.c comint.el + comp-test-funcs.el and 34 other files Platon Pronko: changed tramp.el @@ -5066,7 +5069,7 @@ and changed xterm.c haikuterm.c xfns.c haiku_support.cc android.c xterm.h configure.ac xwidget.c sfnt.c EmacsService.java haiku_support.h androidterm.c haikufns.c android.texi keyboard.c pgtkterm.c frames.texi nsterm.m pixel-scroll.el sfntfont.c EmacsWindow.java - and 532 other files + and 535 other files Pontus Michael: changed simple.el @@ -5153,10 +5156,10 @@ Randall Smith: changed dired.el Randal Schwartz: wrote pp.el -Randy Taylor: changed build.sh dockerfile-ts-mode.el eglot.el - go-ts-mode.el batch.sh cmake-ts-mode.el rust-ts-mode.el c-ts-mode.el - cus-theme.el font-lock.el java-ts-mode.el js.el json-ts-mode.el - modes.texi progmodes/python.el project.el sh-script.el +Randy Taylor: changed go-ts-mode.el build.sh dockerfile-ts-mode.el + eglot.el batch.sh cmake-ts-mode.el rust-ts-mode.el c-ts-mode.el + cus-theme.el font-lock.el font-lock.go java-ts-mode.el js.el + json-ts-mode.el modes.texi progmodes/python.el project.el sh-script.el typescript-ts-mode.el yaml-ts-mode.el Ransom Williams: changed files.el @@ -5202,9 +5205,9 @@ and changed vhdl-mode.texi Reuben Thomas: changed ispell.el whitespace.el dired-x.el files.el sh-script.el emacsclient-tests.el remember.el README emacsclient.c - misc.texi msdos.c simple.el INSTALL alloc.c arc-mode.el authors.el - config.bat copyright cperl-mode.el dired-x.texi dired.el - and 36 other files + misc.texi msdos.c simple.el INSTALL ada-mode.el ada-xref.el alloc.c + arc-mode.el authors.el config.bat copyright cperl-mode.el + and 38 other files Ricardo Martins: changed eglot.el @@ -5253,7 +5256,7 @@ and co-wrote cc-align.el cc-cmds.el cc-defs.el cc-engine.el cc-langs.el and changed files.el keyboard.c simple.el xterm.c xdisp.c rmail.el fileio.c process.c sysdep.c buffer.c xfns.c window.c subr.el configure.ac startup.el sendmail.el emacs.c Makefile.in editfns.c - info.el dired.el and 1337 other files + info.el dired.el and 1339 other files Richard Ryniker: changed sendmail.el @@ -5386,17 +5389,16 @@ R Primus: changed eglot.el Rüdiger Sonderfeld: wrote inotify-tests.el reftex-tests.el and changed eww.el octave.el shr.el bibtex.el configure.ac - misc/Makefile.in reftex-vars.el vc-git.el TUTORIAL.de autoinsert.el - building.texi bytecomp.el calc-lang.el cc-langs.el dired.texi editfns.c - emacs.c emacs.texi epa.el erc.el eww.texi and 39 other files - -Rudi Schlatte: changed iso-transl.el + misc/Makefile.in reftex-vars.el vc-git.el TUTORIAL.de ada-mode.el + autoinsert.el building.texi bytecomp.el calc-lang.el cc-langs.el + dired.texi editfns.c emacs.c emacs.texi epa.el erc.el + and 40 other files Rudolf Adamkovič: co-wrote quail/slovak.el and changed compilation.txt compile-tests.el progmodes/compile.el calc-units.el files.el ispell.el scheme.el -Rudolf Schlatte: changed README.md eglot.el +Rudolf Schlatte: changed README.md eglot.el iso-transl.el Ruijie Yu: changed TUTORIAL.cn arc-mode-tests.el arc-mode.el @@ -5461,7 +5463,7 @@ Sam Steingold: wrote gulp.el midnight.el and changed progmodes/compile.el cl-indent.el simple.el vc-cvs.el vc.el mouse.el vc-hg.el files.el gnus-sum.el tex-mode.el etags.el font-lock.el sgml-mode.el subr.el window.el ange-ftp.el inf-lisp.el - message.el package.el rcirc.el shell.el and 214 other files + message.el package.el rcirc.el shell.el and 216 other files Samuel Bronson: changed custom.el emacsclient.c keyboard.c progmodes/grep.el semantic/format.el unexmacosx.c @@ -5522,6 +5524,8 @@ Scott Frazer: wrote deeper-blue-theme.el whiteboard-theme.el Scott M. Meyers: changed cmacexp.el +Sean Bright: changed emacs.nsi + Sean Connor: changed gnus-sum.el Sean Neakums: changed gnus-msg.el gnus-uu.el supercite.el @@ -5537,7 +5541,7 @@ Sean Whitton: wrote em-elecslash.el em-extpipe-tests.el em-extpipe.el and changed vc-git.el project.el bindings.el server.el simple.el subr.el vc-dispatcher.el vc.el window.el eshell-tests.el eshell.texi subr-x.el .dir-locals.el cl-macs.el eshell-tests-helpers.el files.texi ftfont.c - remember.el startup.el term.el INSTALL and 34 other files + remember.el startup.el term.el INSTALL and 38 other files Sebastian Fieber: changed gnus-art.el mm-decode.el mm-view.el @@ -5576,8 +5580,9 @@ Sébastien Vauban: changed org.el org-agenda.el ox-latex.el ob-core.el org-clock.el ox-ascii.el ox-html.el Seiji Zenitani: changed nsfns.m frame.c xterm.c PkgInfo document.icns - find-func.el frame.h help-fns.el macfns.c nsfont.m nsterm.m w32fns.c - xdisp.c xfns.c + find-func.el frame.h help-fns.el macfns.c + nextstep/templates/Info.plist.in nsfont.m nsterm.m w32fns.c xdisp.c + xfns.c Sen Nagata: wrote crm.el rfc2368.el @@ -5722,9 +5727,9 @@ Sławomir Nowaczyk: changed emacs.py progmodes/python.el TUTORIAL.pl flyspell.el ls-lisp.el w32proc.c Spencer Baugh: wrote uniquify-tests.el which-func-tests.el -and changed project.el minibuffer.el simple.el progmodes/grep.el vc-hg.el - data-tests.el flymake.el mini.texi minibuffer-tests.el startup.el - uniquify.el which-func.el alloc.c autorevert.el bindings.el +and changed project.el minibuffer.el simple.el flymake.el + progmodes/grep.el vc-hg.el data-tests.el mini.texi minibuffer-tests.el + startup.el uniquify.el which-func.el alloc.c autorevert.el bindings.el casefiddle-tests.el casefiddle.c comint.el crm.el dired-aux.el dired-x.el and 22 other files @@ -5756,7 +5761,7 @@ and co-wrote help-tests.el keymap-tests.el and changed image-dired.el efaq.texi package.el cperl-mode.el checkdoc.el subr.el help.el simple.el bookmark.el dired.el files.el gnus.texi dired-x.el browse-url.el erc.el keymap.c image-mode.el ediff-util.el - eglot.el speedbar.el woman.el and 1810 other files + eglot.el speedbar.el woman.el and 1811 other files Stefan Merten: co-wrote rst.el @@ -5773,7 +5778,7 @@ and co-wrote font-lock.el gitmerge.el pcvs.el visual-wrap.el and changed subr.el simple.el cl-macs.el bytecomp.el keyboard.c files.el lisp.h vc.el eval.c xdisp.c alloc.c buffer.c sh-script.el help-fns.el progmodes/compile.el tex-mode.el lread.c keymap.c package.el window.c - edebug.el and 1724 other files + edebug.el and 1728 other files Stefano Facchini: changed gtkutil.c @@ -5810,7 +5815,7 @@ and changed wid-edit.el wdired.el todo-mode.texi wdired-tests.el dabbrev-tests.el diary-lib.el dired.el dired-tests.el doc-view.el files.el info.el minibuffer.el outline.el todo-test-1.todo widget.texi allout.el dabbrev.el eww.el find-dired.el frames.texi hl-line.el - and 75 other files + and 78 other files Stephen C. Gilardi: changed configure.ac @@ -5825,19 +5830,19 @@ and changed diary-lib.el octave.el org-agenda.el locate.el replace.el Stephen Gildea: wrote refcard.tex and co-wrote mh-funcs.el mh-search.el and changed time-stamp.el time-stamp-tests.el mh-e.el mh-utils-tests.el - mh-junk.el mh-utils.el mh-comp.el mh-show.el mh-e.texi + mh-junk.el mh-utils.el mh-comp.el files.texi mh-show.el mh-e.texi test-all-mh-variants.sh files.el mh-customize.el mh-folder.el mh-scan.el mh-xface-tests.el backups.texi comp-tests.el compile.texi - dns-mode.el fileio.c files.texi and 20 other files + dns-mode.el emacs.texi and 24 other files Stephen J. Turnbull: changed ediff-init.el strings.texi subr.el Stephen Leake: wrote elisp-mode-tests.el -and changed elisp-mode.el xref.el eglot.el window.el mode-local.el - project.el CONTRIBUTE vc-mtn.el ada-stmt.el cedet-global.el - ede/generic.el simple.el autoload.el bytecomp.el cl-generic.el - ede/locate.el files.texi functions.texi package.el progmodes/grep.el - windows.texi and 33 other files +and changed ada-mode.el ada-xref.el elisp-mode.el xref.el eglot.el + window.el mode-local.el project.el CONTRIBUTE ada-prj.el vc-mtn.el + ada-stmt.el cedet-global.el ede/generic.el simple.el autoload.el + bytecomp.el cl-generic.el ede/locate.el files.texi functions.texi + and 36 other files Stephen Pegoraro: changed xterm.c @@ -6038,7 +6043,7 @@ and co-wrote hideshow.el and changed ewoc.el vc.el info.el processes.texi zone.el lisp-mode.el scheme.el text.texi vc-rcs.el display.texi fileio.c files.el vc-git.el TUTORIAL.it bindat.el cc-vars.el configure.ac dcl-mode.el diff-mode.el - dired.el elisp.texi and 168 other files + dired.el elisp.texi and 169 other files Thierry Banel: co-wrote ob-C.el and changed calc-arith.el @@ -6185,7 +6190,7 @@ Tomas Abrahamsson: wrote artist.el Tomas Fabrizio Orsi: changed net-utils.el -Tomas Nordin: changed progmodes/python.el +Tomas Nordin: changed progmodes/python.el subr.el Tomas Volf: changed esh-mode.el @@ -6332,7 +6337,7 @@ Ulrich Müller: changed configure.ac calc-units.el Makefile.in emacsclient-mail.desktop lib-src/Makefile.in src/Makefile.in version.el bindings.el doctor.el emacs.1 files.el gamegrid.el gud.el language/cyrillic.el server.el strings.texi ChgPane.c ChgSel.c HELLO - INSTALL XMakeAssoc.c and 55 other files + INSTALL XMakeAssoc.c and 56 other files Ulrich Neumerkel: changed xterm.c @@ -6412,7 +6417,7 @@ Vincent Del Vecchio: changed info.el mh-utils.el Vincenzo Pupillo: wrote php-ts-mode.el and changed js.el cmake-ts-mode.el typescript-ts-mode.el c-ts-mode.el - c-ts-common.el Makefile.in java-ts-mode.el + c-ts-common.el java-ts-mode.el Makefile.in Vince Salvino: changed msdos.texi w32.c w32fns.c @@ -6428,6 +6433,8 @@ and changed ps-prin1.ps ps-bdf.el ps-prin0.ps blank-mode.el ps-prin3.ps Vitalie Spinu: changed comint.el eieio-base.el message.el ob-R.el ob-core.el ob-tangle.el subr.el +Vitaliy Chepelev: changed image-dired-dired.el image-dired-tags.el + Vitaly Takmazov: changed emacs-x64.manifest emacs-x86.manifest Vitorio Miguel: changed TUTORIAL.pt_BR @@ -6545,6 +6552,8 @@ Wojciech Gac: changed latin-pre.el quail/cyrillic.el Wojciech S. Gac: wrote sami.el +Wojciech Siewierski: changed calc-trail.el + Wolfgang Glas: changed unexsgi.c Wolfgang Jenkner: wrote man-tests.el textprop-tests.el @@ -6666,6 +6675,8 @@ Yuchen Pei: changed calendar.texi diary-lib.el icalendar-tests.el Yue Daian: wrote cl-font-lock.el +Yue Yi: changed peg.texi + Yu-ji Hosokawa: changed README.W32 Yukihiro Matsumoto: co-wrote ruby-mode.el commit dfcde786ada0918326be849a263e2b8352db9d35 Author: Eli Zaretskii Date: Sun May 18 05:24:11 2025 -0400 ; Update ldefs-boot.el. Do not merge to master. diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index e445c1700b4..57790632047 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -1454,7 +1454,7 @@ point is moved into the passwords (see `authinfo-hide-elements'). (fn)" t) (autoload 'read-passwd "auth-source" "\ -Read a password, prompting with PROMPT, and return it. +Read a password, prompting with PROMPT, and return password as a string. If optional CONFIRM is non-nil, read the password twice to make sure. Optional DEFAULT is a default password to use instead of empty input. @@ -9703,15 +9703,15 @@ either customize it (see the info node `Easy Customization') or call the function `electric-pair-mode'.") (custom-autoload 'electric-pair-mode "elec-pair" nil) (autoload 'electric-pair-mode "elec-pair" "\ -Toggle automatic parens pairing (Electric Pair mode). +Toggle automatic pairing of delimiters (Electric Pair mode). -Electric Pair mode is a global minor mode. When enabled, typing -an open parenthesis automatically inserts the corresponding -closing parenthesis, and vice versa. (Likewise for brackets, etc.). -If the region is active, the parentheses (brackets, etc.) are -inserted around the region instead. +Electric Pair mode is a global minor mode. When enabled, typing an +opening delimiter (parenthesis, bracket, etc.) automatically inserts the +corresponding closing delimiter. If the region is active, the +delimiters are inserted around the region instead. -To toggle the mode in a single buffer, use `electric-pair-local-mode'. +To toggle the mode only in the current buffer, use +`electric-pair-local-mode'. This is a global minor mode. If called interactively, toggle the `Electric-Pair mode' mode. If the prefix argument is positive, enable @@ -10852,26 +10852,29 @@ Display the documentation for TEST-OR-TEST-NAME (a symbol or ert-test). (autoload 'ert-font-lock-deftest "ert-font-lock" "\ Define test NAME (a symbol) using assertions from TEST-STR. -Other than MAJOR-MODE and TEST-STR parameters, this macro accepts -the same parameters and keywords as `ert-deftest' and is intended -to be used through `ert'. +The MAJOR-MODE symbol determines the syntax and font lock of TEST-STR. -(fn NAME () [DOCSTRING] [:expected-result RESULT-TYPE] [:tags \\='(TAG...)] MAJOR-MODE TEST-STR)" nil t) -(function-put 'ert-font-lock-deftest 'doc-string-elt 3) -(function-put 'ert-font-lock-deftest 'lisp-indent-function 2) +Except for the MAJOR-MODE and TEST-STR parameters, this macro accepts +the same arguments and keywords as `ert-deftest' and is intended to be +used through `ert'. + +(fn NAME [DOCSTRING] [:expected-result RESULT-TYPE] [:tags \\='(TAG...)] MAJOR-MODE TEST-STR)" nil t) +(function-put 'ert-font-lock-deftest 'doc-string-elt 2) +(function-put 'ert-font-lock-deftest 'lisp-indent-function 1) (autoload 'ert-font-lock-deftest-file "ert-font-lock" "\ Define test NAME (a symbol) using assertions from FILE. -FILE - path to a file with assertions in ERT resource director as -return by `ert-resource-directory'. +FILE names a file with assertions in the ERT resource directory, as +returned by `ert-resource-directory'. The MAJOR-MODE symbol determines +the syntax and font lock of FILE's contents. -Other than MAJOR-MODE and FILE parameters, this macro accepts the -same parameters and keywords as `ert-deftest' and is intended to -be used through `ert'. +Except for the MAJOR-MODE and FILE parameters, this macro accepts the +same arguments and keywords as `ert-deftest' and is intended to be used +through `ert'. -(fn NAME () [DOCSTRING] [:expected-result RESULT-TYPE] [:tags \\='(TAG...)] MAJOR-MODE FILE)" nil t) -(function-put 'ert-font-lock-deftest-file 'doc-string-elt 3) -(function-put 'ert-font-lock-deftest-file 'lisp-indent-function 2) +(fn NAME [DOCSTRING] [:expected-result RESULT-TYPE] [:tags \\='(TAG...)] MAJOR-MODE FILE)" nil t) +(function-put 'ert-font-lock-deftest-file 'doc-string-elt 2) +(function-put 'ert-font-lock-deftest-file 'lisp-indent-function 1) (autoload 'ert-font-lock-test-string "ert-font-lock" "\ Check font faces in TEST-STRING set by MODE. @@ -12468,10 +12471,16 @@ For adding local variables on the first line of a file, for example for settings like `lexical-binding, which must be specified there, use the `add-file-local-variable-prop-line' command instead. +If optional variable INTERACTIVE is non-nil, display a message telling +the user how to make the new value take effect. + (fn VARIABLE VALUE &optional INTERACTIVE)" t) (autoload 'delete-file-local-variable "files-x" "\ Delete all settings of file-local VARIABLE from the Local Variables list. +If optional variable INTERACTIVE is non-nil, display a message telling +the user how to make the new value take effect. + (fn VARIABLE &optional INTERACTIVE)" t) (autoload 'add-file-local-variable-prop-line "files-x" "\ Add file-local VARIABLE with its VALUE to the -*- line. @@ -12486,10 +12495,16 @@ then this function adds it. To add variables to the Local Variables list at the end of the file, use the `add-file-local-variable' command instead. +If optional variable INTERACTIVE is non-nil, display a message telling +the user how to make the new value take effect. + (fn VARIABLE VALUE &optional INTERACTIVE)" t) (autoload 'delete-file-local-variable-prop-line "files-x" "\ Delete all settings of file-local VARIABLE from the -*- line. +If optional variable INTERACTIVE is non-nil, display a message telling +the user how to make the new value take effect. + (fn VARIABLE &optional INTERACTIVE)" t) (autoload 'add-dir-local-variable "files-x" "\ Add directory-local VARIABLE with its VALUE and MODE to .dir-locals.el. @@ -19220,6 +19235,7 @@ Optional argument KATAKANA-ONLY non-nil means to convert only KATAKANA char. (autoload 'read-hiragana-string "japan-util" "\ Read a Hiragana string from the minibuffer, prompting with string PROMPT. If non-nil, second arg INITIAL-INPUT is a string to insert before reading. +Return the string read from the minibuffer. (fn PROMPT &optional INITIAL-INPUT)") (register-definition-prefixes "japan-util" '("japanese-")) @@ -21773,6 +21789,7 @@ but still shows the full information. (autoload 'read-charset "mule-diag" "\ Read a character set from the minibuffer, prompting with string PROMPT. It must be an Emacs character set listed in the variable `charset-list'. +Return the charset as a symbol. Optional arguments are DEFAULT-VALUE and INITIAL-INPUT. DEFAULT-VALUE, if non-nil, is the default value. @@ -26491,6 +26508,12 @@ argument, restrict the suggestions to imports defining the symbol at point. If there is only one such suggestion, act without asking. +If the buffer does not belong to a project, the import statement is +searched under the buffer's default directory. For example, if the file +is located directly under the home directory, all files under the home +directory will be searched. Please note that this can take a long time +and may appear to hang. + When calling from Lisp, use a non-nil NAME to restrict the suggestions to imports defining NAME. @@ -26512,7 +26535,17 @@ asking. (autoload 'python-sort-imports "python" "\ Sort Python imports in the current buffer." t) (autoload 'python-fix-imports "python" "\ -Add missing imports and remove unused ones from the current buffer." t) +Add missing imports and remove unused ones from the current buffer. + +If there are missing imports, ask for an import statement using all +imports found in the current project as suggestions. If there is only +one such suggestion, act without asking. + +If the buffer does not belong to a project, the import statement is +searched under the buffer's default directory. For example, if the file +is located directly under the home directory, all files under the home +directory will be searched. Please note that this can take a long time +and may appear to hang." t) (autoload 'python-base-mode "python" "\ Generic major mode for editing Python files. @@ -29547,6 +29580,7 @@ A FUNC form can have any number of `:no-eval' (or `:no-value'), `:eg-result-string' properties." (declare (indent defun)) (shortdoc--check group functions) `(progn (setq shortdoc--groups (delq (assq ',group shortdoc--groups) shortdoc--groups)) (push (cons ',group ',functions) shortdoc--groups))) (autoload 'shortdoc-display-group "shortdoc" "\ Pop to a buffer with short documentation summary for functions in GROUP. +Interactively, prompt for GROUP. If FUNCTION is non-nil, place point on the entry for FUNCTION (if any). If SAME-WINDOW, don't pop to a new window. @@ -30385,10 +30419,10 @@ Spam reports will be queued with the method used when (defalias 'speedbar 'speedbar-frame-mode) (autoload 'speedbar-frame-mode "speedbar" "\ -Enable or disable speedbar. Positive ARG means turn on, negative turn off. -A nil ARG means toggle. Once the speedbar frame is activated, a buffer in -`speedbar-mode' will be displayed. Currently, only one speedbar is -supported at a time. +Enable or disable speedbar. +Positive ARG means turn on, negative turn off. A nil ARG means toggle. +Once the speedbar frame is activated, a buffer in `speedbar-mode' will +be displayed. Currently, only one speedbar is supported at a time. `speedbar-before-popup-hook' is called before popping up the speedbar frame. `speedbar-before-delete-hook' is called before the frame is deleted. @@ -30955,6 +30989,9 @@ PROMPT will be inserted at the start of the buffer, but won't be included in the resulting string. If nil, no prompt will be inserted in the buffer. +When the user exits recursive edit, this function returns the +edited STRING. + Also see `string-edit'. (fn PROMPT STRING)") @@ -33115,9 +33152,9 @@ Valid ZONE values are described in the documentation of `format-time-string'. (put 'time-stamp-count 'safe-local-variable 'integerp) (put 'time-stamp-pattern 'safe-local-variable 'stringp) (autoload 'time-stamp "time-stamp" "\ -Update any time stamp string(s) in the buffer. -This function looks for a time stamp template and updates it with -the current date, time, and/or other info. +Update any time stamp strings (timestamps) in the buffer. +Look for a time stamp template and update it with the current +date, time, author, and/or other info. The template, which you manually create on one of the first 8 lines of the file before running this function, by default can look like @@ -33140,12 +33177,11 @@ To enable automatic time-stamping for only a specific file, add this line to a local variables list near the end of the file: eval: (add-hook \\='before-save-hook \\='time-stamp nil t) -If the file has no time-stamp template, this function does nothing. +If the file has no time stamp template or if `time-stamp-active' is nil, +this function does nothing. You can set `time-stamp-pattern' in a file's local variables list -to customize the information in the time stamp and where it is written. - -The time stamp is updated only if `time-stamp-active' is non-nil." t) +to customize the information in the time stamp and where it is written." t) (autoload 'time-stamp-toggle-active "time-stamp" "\ Toggle `time-stamp-active', setting whether \\[time-stamp] updates a buffer. With ARG, turn time stamping on if and only if ARG is positive. @@ -33618,9 +33654,10 @@ the output buffer or changing the window configuration. ;;; Generated autoloads from net/tramp.el +(push (purecopy '(tramp 0)) package--builtin-versions) (when (featurep 'tramp-compat) (load "tramp-compat" 'noerror 'nomessage)) -(defvar tramp-mode t "\ +(defvar tramp-mode (fboundp 'make-process) "\ Whether Tramp is enabled. If it is set to nil, all remote file names are used literally.") (custom-autoload 'tramp-mode "tramp" t) @@ -33779,7 +33816,7 @@ Add archive file name handler to `file-name-handler-alist'." (when (and tramp-ar ;;; Generated autoloads from net/trampver.el -(push (purecopy '(tramp 2 7 1 30 1)) package--builtin-versions) +(push (purecopy '(tramp 2 7 3 -1)) package--builtin-versions) (register-definition-prefixes "trampver" '("tramp-")) @@ -34898,11 +34935,11 @@ Usage: :magic-fallback Form to be added to `magic-fallback-mode-alist'. :interpreter Form to be added to `interpreter-mode-alist'. -:commands Define autoloads for commands that will be defined by the - package. This is useful if the package is being lazily - loaded, and you wish to conditionally call functions in your +:commands Define autoloads for commands defined by the package. + This is useful if the package is being lazily loaded, + and you wish to conditionally call functions in your `:init' block that are defined in the package. -:autoload Similar to :commands, but it for no-interactive one. +:autoload Similar to `:commands', but used for non-interactive functions. :hook Specify hook(s) to attach this package to. :bind Bind keys, and define autoloads for the bound commands. commit 4c110212604d5d825abe95418db5dd822b7e9375 Author: Eli Zaretskii Date: Sun May 18 05:08:31 2025 -0400 ; Bump Emacs version to 30.1.90 * README: * configure.ac: * exec/configure.ac: * java/AndroidManifest.xml.in (Version-code): * nt/README.W32: * msdos/sed2v2.inp: Bump Emacs version to 30.1.90. diff --git a/README b/README index 1902137d0c9..d0f2d580b4f 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ Copyright (C) 2001-2025 Free Software Foundation, Inc. See the end of the file for license conditions. -This directory tree holds version 30.1.50 of GNU Emacs, the extensible, +This directory tree holds version 30.1.90 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. The file INSTALL in this directory says how to build and install GNU diff --git a/configure.ac b/configure.ac index 49b91d801e5..e57cf55fe86 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see . AC_PREREQ([2.65]) dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el. -AC_INIT([GNU Emacs], [30.1.50], [bug-gnu-emacs@gnu.org], [], +AC_INIT([GNU Emacs], [30.1.90], [bug-gnu-emacs@gnu.org], [], [https://www.gnu.org/software/emacs/]) if test "$XCONFIGURE" = "android"; then diff --git a/exec/configure.ac b/exec/configure.ac index 317872caa28..c66c7276d8c 100644 --- a/exec/configure.ac +++ b/exec/configure.ac @@ -22,7 +22,7 @@ dnl You should have received a copy of the GNU General Public License dnl along with GNU Emacs. If not, see . AC_PREREQ([2.65]) -AC_INIT([libexec], [30.1.50], [bug-gnu-emacs@gnu.org], [], +AC_INIT([libexec], [30.1.90], [bug-gnu-emacs@gnu.org], [], [https://www.gnu.org/software/emacs/]) AH_TOP([/* Copyright (C) 2024-2025 Free Software Foundation, Inc. diff --git a/java/AndroidManifest.xml.in b/java/AndroidManifest.xml.in index 996056fe034..711d34cff30 100644 --- a/java/AndroidManifest.xml.in +++ b/java/AndroidManifest.xml.in @@ -350,6 +350,6 @@ repositories require an incrementing numeric version code to detect upgrades, which is provided here and is altered by admin/admin.el. Refer to e.g. https://forum.f-droid.org/t/emacs-packaging/30424/25. -Version-code: 300150000 +Version-code: 300190000 --> diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index c564fa8ae15..f9b5af84e25 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -67,7 +67,7 @@ /^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/ /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/ /^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/ -/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "30.1.50"/ +/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "30.1.90"/ /^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/ /^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/ /^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/ diff --git a/nt/README.W32 b/nt/README.W32 index abe0784ccfc..bdd726f038d 100644 --- a/nt/README.W32 +++ b/nt/README.W32 @@ -1,7 +1,7 @@ Copyright (C) 2001-2025 Free Software Foundation, Inc. See the end of the file for license conditions. - Emacs version 30.1.50 for MS-Windows + Emacs version 30.1.90 for MS-Windows This README file describes how to set up and run a precompiled distribution of the latest version of GNU Emacs for MS-Windows. You