From: dick.r.chiang@gmail.com
To: 52440@debbugs.gnu.org
Subject: bug#52440: 28.0.50; [PATCH] Quis custodiet ipsos custodes (sqlite3)
Date: Sat, 11 Dec 2021 16:32:01 -0500 [thread overview]
Message-ID: <87wnkazv3i.fsf@dick> (raw)
[-- Attachment #1: Type: text/plain, Size: 81 bytes --]
More cleanly separate the new module from standard builds, aka,
slow thy roll.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-sqlite3-Quis-custodiet-ipsos-custodes.patch --]
[-- Type: text/x-diff, Size: 14051 bytes --]
From c7b20a867b795d0ebfa6d5572c31a72f3caa926a Mon Sep 17 00:00:00 2001
From: dickmao <dick.r.chiang@gmail.com>
Date: Sat, 11 Dec 2021 16:21:30 -0500
Subject: [PATCH] [sqlite3] Quis custodiet ipsos custodes
* configure.ac (WIDE_EMACS_INT): Default off `--with-sqlite3`.
(HAVE_SQLITE3): Opt out of sqlite.o.
(SQLITE3_LIBS): Hew to autotools sop.
* lisp/sqlite-mode.el (sqlite-execute, sqlite-more-p,
sqlite-next, sqlite-columns, sqlite-finalize,
sqlite-select, sqlite-open): Forward declare.
* src/Makefile.in (SQLITE3_CFLAGS): Hew to autotools sop.
* src/alloc.c (union emacs_align_type): Give a hoot,
don't pollute.
(cleanup_vector): Give a hoot, don't pollute.
* src/data.c (syms_of_data): Fence.
* src/emacs.c (main): Give a hoot, don't pollute.
* src/lisp.h (GCALIGNED_STRUCT): Give a hoot, don't pollute.
* src/print.c (print_vectorlike): Fence.
* src/sqlite.c (Fsqlitep): What is SQLITE without the P?
(Fsqlite_available_p): Unfence.
(syms_of_sqlite): Unfence.
* test/src/sqlite-tests.el (sqlite-mode, sqlite-execute,
sqlite-close, sqlitep, sqlite-available-p, sqlite-finalize,
sqlite-next, sqlite-more-p, sqlite-select, sqlite-open):
Forward declare.
---
configure.ac | 21 ++++++++------
lisp/sqlite-mode.el | 8 ++++++
src/Makefile.in | 12 ++++++--
src/alloc.c | 11 +++++++-
src/data.c | 1 +
src/emacs.c | 8 +++++-
src/lisp.h | 36 ------------------------
src/print.c | 7 ++++-
src/sqlite.c | 18 ++----------
src/sqlite.h | 59 ++++++++++++++++++++++++++++++++++++++++
test/Makefile.in | 1 -
test/src/sqlite-tests.el | 11 ++++++++
12 files changed, 127 insertions(+), 66 deletions(-)
create mode 100644 src/sqlite.h
diff --git a/configure.ac b/configure.ac
index 0debc852141..a602e45cefe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -448,7 +448,7 @@ AC_DEFUN
OPTION_DEFAULT_ON([png],[don't compile with PNG image support])
OPTION_DEFAULT_ON([rsvg],[don't compile with SVG image support])
OPTION_DEFAULT_ON([webp],[don't compile with WebP image support])
-OPTION_DEFAULT_ON([sqlite3],[don't compile with sqlite3 support])
+OPTION_DEFAULT_OFF([sqlite3],[don't compile with sqlite3 support])
OPTION_DEFAULT_ON([lcms2],[don't compile with Little CMS support])
OPTION_DEFAULT_ON([libsystemd],[don't compile with libsystemd support])
OPTION_DEFAULT_ON([cairo],[don't compile with Cairo drawing])
@@ -2682,27 +2682,32 @@ AC_DEFUN
fi
fi
-### Use -lsqlite3 if available, unless '--with-sqlite3=no'
HAVE_SQLITE3=no
+SQLITE3_OBJ=
+### Use -lsqlite3 if available, unless '--with-sqlite3=no'
if test "${with_sqlite3}" != "no"; then
AC_CHECK_LIB(sqlite3, sqlite3_open_v2, HAVE_SQLITE3=yes, HAVE_SQLITE3=no)
if test "$HAVE_SQLITE3" = "yes"; then
SQLITE3_LIBS=-lsqlite3
- AC_SUBST(SQLITE3_LIBS)
- LIBS="$SQLITE3_LIBS $LIBS"
+ SQLITE3_OBJ=sqlite.o
AC_DEFINE(HAVE_SQLITE3, 1, [Define to 1 if you have the libsqlite3 library (-lsqlite).])
- # Windows loads libsqlite dynamically
- if test "${opsys}" = "mingw32"; then
- SQLITE3_LIBS=
- fi
AC_CHECK_LIB(sqlite3, sqlite3_load_extension,
HAVE_SQLITE3_LOAD_EXTENSION=yes, HAVE_SQLITE3_LOAD_EXTENSION=no)
if test "$HAVE_SQLITE3_LOAD_EXTENSION" = "yes"; then
AC_DEFINE(HAVE_SQLITE3_LOAD_EXTENSION, 1, [Define to 1 if sqlite3 supports loading extensions.])
fi
+ # Windows loads libsqlite dynamically
+ if test "${opsys}" = "mingw32"; then
+ SQLITE3_LIBS=
+ fi
fi
fi
+AC_SUBST(HAVE_SQLITE3)
+AC_SUBST(SQLITE3_LIBS)
+AC_SUBST(SQLITE3_CFLAGS)
+AC_SUBST(SQLITE3_OBJ)
+
HAVE_IMAGEMAGICK=no
if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${HAVE_W32}" = "yes" || \
test "${HAVE_BE_APP}" = "yes"; then
diff --git a/lisp/sqlite-mode.el b/lisp/sqlite-mode.el
index 9306bd85dcd..823dfeb07d6 100644
--- a/lisp/sqlite-mode.el
+++ b/lisp/sqlite-mode.el
@@ -25,6 +25,14 @@
(require 'cl-lib)
+(declare-function sqlite-execute "sqlite.c")
+(declare-function sqlite-more-p "sqlite.c")
+(declare-function sqlite-next "sqlite.c")
+(declare-function sqlite-columns "sqlite.c")
+(declare-function sqlite-finalize "sqlite.c")
+(declare-function sqlite-select "sqlite.c")
+(declare-function sqlite-open "sqlite.c")
+
(defvar-keymap sqlite-mode-map
"g" #'sqlite-mode-list-tables
"c" #'sqlite-mode-list-columns
diff --git a/src/Makefile.in b/src/Makefile.in
index 3a8445db2d4..85c10103c4e 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -238,6 +238,8 @@ IMAGEMAGICK_CFLAGS=
LIBXML2_LIBS = @LIBXML2_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
+SQLITE3_CFLAGS = @SQLITE3_CFLAGS@
+SQLITE3_OBJ = @SQLITE3_OBJ@
SQLITE3_LIBS = @SQLITE3_LIBS@
GETADDRINFO_A_LIBS = @GETADDRINFO_A_LIBS@
@@ -330,6 +332,10 @@ JSON_LIBS =
JSON_CFLAGS = @JSON_CFLAGS@
JSON_OBJ = @JSON_OBJ@
+SQLITE3_LIBS = @SQLITE3_LIBS@
+SQLITE3_CFLAGS = @SQLITE3_CFLAGS@
+SQLITE3_OBJ = @SQLITE3_OBJ@
+
INTERVALS_H = dispextern.h intervals.h composite.h
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
@@ -395,7 +401,7 @@ EMACS_CFLAGS=
$(HARFBUZZ_CFLAGS) $(LIBOTF_CFLAGS) $(M17N_FLT_CFLAGS) $(DEPFLAGS) \
$(LIBSYSTEMD_CFLAGS) $(JSON_CFLAGS) \
$(LIBGNUTLS_CFLAGS) $(NOTIFY_CFLAGS) $(CAIRO_CFLAGS) \
- $(WERROR_CFLAGS) $(HAIKU_CFLAGS)
+ $(WERROR_CFLAGS) $(HAIKU_CFLAGS) $(SQLITE3_CFLAGS)
ALL_CFLAGS = $(EMACS_CFLAGS) $(WARN_CFLAGS) $(CFLAGS)
ALL_OBJC_CFLAGS = $(EMACS_CFLAGS) \
$(filter-out $(NON_OBJC_CFLAGS),$(WARN_CFLAGS)) $(CFLAGS) \
@@ -428,11 +434,11 @@ base_obj =
doprnt.o intervals.o textprop.o composite.o xml.o lcms.o $(NOTIFY_OBJ) \
$(XWIDGETS_OBJ) \
profiler.o decompress.o \
- thread.o systhread.o sqlite.o \
+ thread.o systhread.o \
$(if $(HYBRID_MALLOC),sheap.o) \
$(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ) \
$(W32_OBJ) $(WINDOW_SYSTEM_OBJ) $(XGSELOBJ) $(JSON_OBJ) \
- $(HAIKU_OBJ)
+ $(HAIKU_OBJ) $(SQLITE3_OBJ)
doc_obj = $(base_obj) $(NS_OBJC_OBJ)
obj = $(doc_obj) $(HAIKU_CXX_OBJ)
diff --git a/src/alloc.c b/src/alloc.c
index 9f52a414d68..a9ba9885fd8 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -50,6 +50,10 @@ Copyright (C) 1985-1986, 1988, 1993-1995, 1997-2021 Free Software
#include TERM_HEADER
#endif /* HAVE_WINDOW_SYSTEM */
+#ifdef HAVE_SQLITE3
+#include "sqlite.h"
+#endif
+
#include <flexmember.h>
#include <verify.h>
#include <execinfo.h> /* For backtrace. */
@@ -125,7 +129,6 @@ Copyright (C) 1985-1986, 1988, 1993-1995, 1997-2021 Free Software
struct Lisp_Overlay Lisp_Overlay;
struct Lisp_Sub_Char_Table Lisp_Sub_Char_Table;
struct Lisp_Subr Lisp_Subr;
- struct Lisp_Sqlite Lisp_Sqlite;
struct Lisp_User_Ptr Lisp_User_Ptr;
struct Lisp_Vector Lisp_Vector;
struct terminal terminal;
@@ -3181,6 +3184,12 @@ cleanup_vector (struct Lisp_Vector *vector)
}
}
#endif
+#ifdef HAVE_SQLITE3
+ else if (PSEUDOVECTOR_TYPEP (&vector->header, PVEC_SQLITE))
+ {
+ /* clean s___ up. To be implemented. */
+ }
+#endif
}
/* Reclaim space used by unmarked vectors. */
diff --git a/src/data.c b/src/data.c
index f07667b0003..81ae2f412ad 100644
--- a/src/data.c
+++ b/src/data.c
@@ -4069,6 +4069,7 @@ #define PUT_ERROR(sym, tail, msg) \
DEFSYM (Qterminal, "terminal");
DEFSYM (Qxwidget, "xwidget");
DEFSYM (Qxwidget_view, "xwidget-view");
+ DEFSYM (Qsqlite, "sqlite");
DEFSYM (Qdefun, "defun");
diff --git a/src/emacs.c b/src/emacs.c
index 3fc055aed92..05441b06825 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -81,6 +81,10 @@ #define MAIN_PROGRAM
#include TERM_HEADER
#endif /* HAVE_WINDOW_SYSTEM */
+#ifdef HAVE_SQLITE3
+#include "sqlite.h"
+#endif /* HAVE_SQLITE3 */
+
#include "bignum.h"
#include "intervals.h"
#include "character.h"
@@ -2183,8 +2187,10 @@ main (int argc, char **argv)
#endif
syms_of_window ();
syms_of_xdisp ();
- syms_of_sqlite ();
syms_of_font ();
+#ifdef HAVE_SQLITE3
+ syms_of_sqlite ();
+#endif
#ifdef HAVE_WINDOW_SYSTEM
syms_of_fringe ();
syms_of_image ();
diff --git a/src/lisp.h b/src/lisp.h
index 92ab05b4228..aa48b218d36 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2571,17 +2571,6 @@ xmint_pointer (Lisp_Object a)
return XUNTAG (a, Lisp_Vectorlike, struct Lisp_Misc_Ptr)->pointer;
}
-struct Lisp_Sqlite
-{
- union vectorlike_header header;
- void *db;
- void *stmt;
- char *name;
- void (*finalizer) (void *);
- bool eof;
- bool is_statement;
-} GCALIGNED_STRUCT;
-
struct Lisp_User_Ptr
{
union vectorlike_header header;
@@ -2659,31 +2648,6 @@ XUSER_PTR (Lisp_Object a)
return XUNTAG (a, Lisp_Vectorlike, struct Lisp_User_Ptr);
}
-INLINE bool
-SQLITEP (Lisp_Object x)
-{
- return PSEUDOVECTORP (x, PVEC_SQLITE);
-}
-
-INLINE bool
-SQLITE (Lisp_Object a)
-{
- return PSEUDOVECTORP (a, PVEC_SQLITE);
-}
-
-INLINE void
-CHECK_SQLITE (Lisp_Object x)
-{
- CHECK_TYPE (SQLITE (x), Qsqlitep, x);
-}
-
-INLINE struct Lisp_Sqlite *
-XSQLITE (Lisp_Object a)
-{
- eassert (SQLITEP (a));
- return XUNTAG (a, Lisp_Vectorlike, struct Lisp_Sqlite);
-}
-
INLINE bool
BIGNUMP (Lisp_Object x)
{
diff --git a/src/print.c b/src/print.c
index 214f1d12c11..f06ceb308a6 100644
--- a/src/print.c
+++ b/src/print.c
@@ -40,6 +40,10 @@ Copyright (C) 1985-1986, 1988, 1993-1995, 1997-2021 Free Software
#include <ftoastr.h>
#include <math.h>
+#ifdef HAVE_SQLITE3
+#include <sqlite.h>
+#endif
+
#if IEEE_FLOATING_POINT
# include <ieee754.h>
#endif
@@ -1875,6 +1879,7 @@ print_vectorlike (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag,
}
break;
#endif
+#ifdef HAVE_SQLITE3
case PVEC_SQLITE:
{
print_c_string ("#<sqlite ", printcharfun);
@@ -1890,7 +1895,7 @@ print_vectorlike (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag,
printchar ('>', printcharfun);
}
break;
-
+#endif
default:
emacs_abort ();
}
diff --git a/src/sqlite.c b/src/sqlite.c
index d92dcf723c9..f9b57c8d387 100644
--- a/src/sqlite.c
+++ b/src/sqlite.c
@@ -25,8 +25,7 @@ Copyright (C) 2021 Free Software Foundation, Inc.
#include <config.h>
#include "lisp.h"
#include "coding.h"
-
-#ifdef HAVE_SQLITE3
+#include "sqlite.h"
#include <sqlite3.h>
@@ -644,24 +643,17 @@ DEFUN ("sqlite-finalize", Fsqlite_finalize, Ssqlite_finalize, 1, 1, 0,
return Qt;
}
-#endif /* HAVE_SQLITE3 */
-
DEFUN ("sqlitep", Fsqlitep, Ssqlitep, 1, 1, 0,
doc: /* Say whether OBJECT is an SQlite object. */)
(Lisp_Object object)
{
-#ifdef HAVE_SQLITE3
- return SQLITE (object)? Qt: Qnil;
-#else
- return Qnil;
-#endif
+ return SQLITEP (object) ? Qt: Qnil;
}
DEFUN ("sqlite-available-p", Fsqlite_available_p, Ssqlite_available_p, 0, 0, 0,
doc: /* Return t if sqlite3 support is available in this instance of Emacs.*/)
(void)
{
-#ifdef HAVE_SQLITE3
# ifdef WINDOWSNT
Lisp_Object found = Fassq (Qsqlite3, Vlibrary_cache);
if (CONSP (found))
@@ -671,15 +663,11 @@ DEFUN ("sqlite-available-p", Fsqlite_available_p, Ssqlite_available_p, 0, 0, 0,
# else
return Qt;
#endif
-#else
- return Qnil;
-#endif
}
void
syms_of_sqlite (void)
{
-#ifdef HAVE_SQLITE3
defsubr (&Ssqlite_open);
defsubr (&Ssqlite_close);
defsubr (&Ssqlite_execute);
@@ -696,7 +684,7 @@ syms_of_sqlite (void)
defsubr (&Ssqlite_finalize);
DEFSYM (Qset, "set");
DEFSYM (Qfull, "full");
-#endif
+
defsubr (&Ssqlitep);
DEFSYM (Qsqlitep, "sqlitep");
defsubr (&Ssqlite_available_p);
diff --git a/src/sqlite.h b/src/sqlite.h
new file mode 100644
index 00000000000..0d26f0b7b8f
--- /dev/null
+++ b/src/sqlite.h
@@ -0,0 +1,59 @@
+/* Header file for the sqlite3 integration.
+
+Copyright (C) 2021 Free Software Foundation, Inc.
+
+This file is NOT 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 <https://www.gnu.org/licenses/>. */
+
+#ifndef EMACS_SQLITE_H
+#define EMACS_SQLITE_H
+
+#include "lisp.h"
+
+INLINE_HEADER_BEGIN
+
+struct Lisp_Sqlite
+{
+ union vectorlike_header header;
+ void *db;
+ void *stmt;
+ char *name;
+ void (*finalizer) (void *);
+ bool eof;
+ bool is_statement;
+};
+
+INLINE bool
+SQLITEP (Lisp_Object x)
+{
+ return PSEUDOVECTORP (x, PVEC_SQLITE);
+}
+
+INLINE struct Lisp_Sqlite *
+XSQLITE (Lisp_Object a)
+{
+ eassert (SQLITEP (a));
+ return XUNTAG (a, Lisp_Vectorlike, struct Lisp_Sqlite);
+}
+
+INLINE void
+CHECK_SQLITE (Lisp_Object sql)
+{
+ CHECK_TYPE (SQLITEP (sql), Qsqlitep, sql);
+}
+
+INLINE_HEADER_END
+
+#endif /* EMACS_SQLITE_H */
diff --git a/test/Makefile.in b/test/Makefile.in
index f2c49584e7f..f3f7855b439 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -48,7 +48,6 @@ SO =
SEPCHAR = @SEPCHAR@
HAVE_NATIVE_COMP = @HAVE_NATIVE_COMP@
-
REPLACE_FREE = @REPLACE_FREE@
-include ${top_builddir}/src/verbose.mk
diff --git a/test/src/sqlite-tests.el b/test/src/sqlite-tests.el
index 7ccea1c2a54..58949b2ebc6 100644
--- a/test/src/sqlite-tests.el
+++ b/test/src/sqlite-tests.el
@@ -25,6 +25,17 @@
(require 'ert)
(require 'ert-x)
+(require 'sqlite-mode)
+
+(declare-function sqlite-execute "sqlite.c")
+(declare-function sqlite-close "sqlite.c")
+(declare-function sqlitep "sqlite.c")
+(declare-function sqlite-available-p "sqlite.c")
+(declare-function sqlite-finalize "sqlite.c")
+(declare-function sqlite-next "sqlite.c")
+(declare-function sqlite-more-p "sqlite.c")
+(declare-function sqlite-select "sqlite.c")
+(declare-function sqlite-open "sqlite.c")
(ert-deftest sqlite-select ()
(skip-unless (sqlite-available-p))
--
2.26.2
[-- Attachment #3: Type: text/plain, Size: 6844 bytes --]
In Commercial Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.30, cairo version 1.15.10)
of 2021-12-11 built on dick
Repository revision: 783c1910c3bdc9fc47fee3b305fa3e4c17d42b7b
Repository branch: longlines
Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
System Description: Ubuntu 18.04.4 LTS
Configured using:
'configure --prefix=/home/dick/.local --enable-checking
--with-tree-sitter --enable-dumping-overwrite CC=gcc-10 'CFLAGS=-g3 -Og
-I/home/dick/.local/include/' LDFLAGS=-L/home/dick/.local/lib
PKG_CONFIG_PATH=/home/dick/.local/lib/pkgconfig CXX=gcc-10'
Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
TREE-SITTER LCMS2 LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG
RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM
XPM GTK3 ZLIB
Important settings:
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
Major mode: Magit
Minor modes in effect:
async-bytecomp-package-mode: t
global-git-commit-mode: t
shell-dirtrack-mode: t
projectile-mode: t
flx-ido-mode: t
override-global-mode: t
global-hl-line-mode: t
winner-mode: t
tooltip-mode: t
show-paren-mode: t
mouse-wheel-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
buffer-read-only: t
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
Load-path shadows:
/home/dick/gomacro-mode/gomacro-mode hides /home/dick/.emacs.d/elpa/gomacro-mode-20200326.1103/gomacro-mode
/home/dick/.emacs.d/elpa/hydra-20170924.2259/lv hides /home/dick/.emacs.d/elpa/lv-20191106.1238/lv
/home/dick/.emacs.d/elpa/magit-3.3.0/magit-section-pkg hides /home/dick/.emacs.d/elpa/magit-section-3.3.0/magit-section-pkg
/home/dick/org-gcal.el/org-gcal hides /home/dick/.emacs.d/elpa/org-gcal-0.3/org-gcal
/home/dick/.emacs.d/lisp/json hides /home/dick/emacs/lisp/json
/home/dick/.emacs.d/elpa/transient-0.3.6/transient hides /home/dick/emacs/lisp/transient
/home/dick/.emacs.d/elpa/hierarchy-20171221.1151/hierarchy hides /home/dick/emacs/lisp/emacs-lisp/hierarchy
Features:
(shadow sort footnote mail-extr gnus-msg gnus-art mm-uu mml2015 mm-view
mml-smime smime dig gnus-sum shr pixel-fill kinsoku svg dom gnus-group
mm-url gnus-undo gnus-start gnus-dbus gnus-cloud nnimap nnmail
mail-source utf7 netrc nnoo gnus-spec gnus-int gnus-range gnus-win
emacsbug sendmail benchmark pulse help-fns radix-tree find-func vc-mtn
vc-hg vc-bzr vc-src vc-sccs vc-cvs vc-rcs tramp-archive tramp-gvfs
tramp-cache zeroconf dbus xml tramp tramp-loaddefs trampver
tramp-integration files-x tramp-compat parse-time iso8601 ls-lisp vc
bug-reference cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles
cc-align cc-engine cc-vars cc-defs magit-extras sh-script executable
rect face-remap magit-patch-changelog magit-patch magit-submodule
magit-obsolete magit-popup async-bytecomp async magit-blame magit-stash
magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone
magit-remote magit-commit magit-sequence magit-notes magit-worktree
magit-tag magit-merge magit-branch magit-reset magit-files magit-refs
magit-status magit magit-repos magit-apply magit-wip magit-log
which-func imenu magit-diff smerge-mode diff git-commit log-edit message
yank-media rmc puny rfc822 mml mml-sec epa epg rfc6068 epg-config
mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader pcvs-util
add-log magit-core magit-margin magit-transient magit-process
with-editor shell pcomplete server magit-mode transient format-spec
make-mode ag vc-svn find-dired s dired-x dired dired-loaddefs misearch
multi-isearch vc-git diff-mode vc-dispatcher autoconf autoconf-mode
paredit-ext paredit subed subed-vtt subed-srt subed-common subed-mpv
subed-debug subed-config inf-ruby ruby-mode smie company pcase
haskell-interactive-mode haskell-presentation-mode haskell-process
haskell-session haskell-compile haskell-mode haskell-cabal haskell-utils
haskell-font-lock haskell-indentation haskell-string
haskell-sort-imports haskell-lexeme haskell-align-imports
haskell-complete-module haskell-ghc-support noutline outline
flymake-proc flymake warnings etags fileloop generator xref project
dabbrev haskell-customize hydra lv use-package-ensure solarized-theme
solarized-definitions projectile lisp-mnt mail-parse rfc2231 ibuf-ext
ibuffer ibuffer-loaddefs thingatpt magit-autorevert autorevert
filenotify magit-git magit-section magit-utils crm dash rx grep compile
comint ansi-color gnus nnheader gnus-util rmail rmail-loaddefs rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils text-property-search
time-date flx-ido flx google-translate-default-ui
google-translate-core-ui facemenu color ido google-translate-core
google-translate-tk google-translate-backend use-package-bind-key
bind-key auto-complete easy-mmode advice edmacro kmacro popup cus-edit
pp cus-load wid-edit emms-player-mplayer emms-player-simple emms
emms-compat cl-extra help-mode use-package-core derived hl-line winner
ring finder-inf json-reformat-autoloads json-snatcher-autoloads
sml-mode-autoloads tornado-template-mode-autoloads info package
browse-url url url-proxy url-privacy url-expand url-methods url-history
url-cookie url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache json map url-vars seq gv subr-x byte-opt bytecomp
byte-compile cconv cl-loaddefs cl-lib iso-transl tooltip eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tree-sitter tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice button loaddefs faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget keymap hashtable-print-readable backquote threads
dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting cairo move-toolbar gtk x-toolkit x multi-tty
make-network-process emacs)
Memory information:
((conses 16 974965 153625)
(symbols 48 35753 1)
(strings 32 136426 20527)
(string-bytes 1 4530479)
(vectors 16 98269)
(vector-slots 8 2745491 89364)
(floats 8 464 1477)
(intervals 56 71313 6420)
(buffers 992 32))
next reply other threads:[~2021-12-11 21:32 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-11 21:32 dick.r.chiang [this message]
2021-12-12 6:12 ` bug#52440: 28.0.50; [PATCH] Quis custodiet ipsos custodes (sqlite3) Lars Ingebrigtsen
2021-12-12 7:52 ` Eli Zaretskii
2021-12-12 11:32 ` dick
2021-12-12 12:01 ` Eli Zaretskii
2021-12-12 12:46 ` dick
2021-12-12 13:28 ` Eli Zaretskii
2021-12-12 14:25 ` dick
2021-12-12 14:38 ` Eli Zaretskii
2021-12-12 15:04 ` dick
2021-12-13 1:55 ` Phil Sainty
2021-12-12 11:49 ` Lars Ingebrigtsen
2021-12-12 12:04 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wnkazv3i.fsf@dick \
--to=dick.r.chiang@gmail.com \
--cc=52440@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).