branch: elpa/emacsql commit dbf059873163875b4388c595d53fe13e6738ca8d Author: Christopher Wellons <well...@nullprogram.com> Commit: Christopher Wellons <well...@nullprogram.com>
Add "-interactive" argument (fixes #1). --- README.md | 4 +--- emacsql.el | 14 ++++++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d2afd93818..4ea29cb555 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,7 @@ Emacsql, including numbers, strings, symbols, lists, vectors, and closures. Emacsql has no concept of "TEXT" values; it's all just lisp objects. -Requires Emacs 24 or later. Currently Windows is unsupported due to a -mysterious process communication issue, a bug either in Emacs or -SQLite. Can you help solve this issue ([#1][issue-1])? +Requires Emacs 24 or later. ## Example Usage diff --git a/emacsql.el b/emacsql.el index 1fde40847e..c73bfe6d92 100644 --- a/emacsql.el +++ b/emacsql.el @@ -67,9 +67,12 @@ (require 'cl-lib) -(defvar emacsql-sqlite-executable "sqlite3" +(defvar emacsql-sqlite3-executable "sqlite3" "Path to the sqlite3 executable.") +(defvar emacsql-sqlite3-args '("-interactive") + "Additional arguments to pass to sqlite3.") + (cl-defstruct (emacsql (:constructor emacsql--create)) "A connection to a SQLite database." process file log) @@ -99,14 +102,17 @@ If FILE is nil use an in-memory database. buffer. This is for debugging purposes." (emacsql-start-reap-timer) (let* ((buffer (generate-new-buffer "*emacsql-connection*")) - (process (start-process "emacsql" buffer emacsql-sqlite-executable - (or file ":memory:")))) + (fullfile (if file (expand-file-name file) ":memory:")) + (args emacsql-sqlite3-args) + (sqlite3 emacsql-sqlite3-executable) + (process (apply #'start-process "emacsql" buffer sqlite3 + (append args (list fullfile))))) (setf (process-sentinel process) (lambda (_proc _) (kill-buffer buffer))) (set-process-coding-system process 'utf-8-unix 'utf-8-unix) (process-send-string process ".prompt #\n") (process-send-string process ".mode line\n") (process-send-string process ".nullvalue nil\n") - (let ((conn (emacsql--create :process process :file file))) + (let ((conn (emacsql--create :process process :file (when file fullfile)))) (when log (setf (emacsql-log conn) (generate-new-buffer "*emacsql-log*"))) (prog1 conn