aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/sqlite-mode.el
diff options
context:
space:
mode:
authorYoav Marco2022-05-11 14:05:37 +0200
committerLars Ingebrigtsen2022-05-11 14:05:37 +0200
commit72b100798743685e87f336a8dffa97ee149eeefe (patch)
treed87b1d107c5d57430fcd76ff2934d5115771490d /lisp/sqlite-mode.el
parentf8bafead0b54655d269f3fa57021ddc922b0a2a7 (diff)
downloademacs-72b100798743685e87f336a8dffa97ee149eeefe.tar.gz
emacs-72b100798743685e87f336a8dffa97ee149eeefe.zip
(sqlite-mode--column-names): Suppport nested parens
* lisp/sqlite-mode.el (sqlite-mode--column-names): Make parsing more resilient (bug#55363). Copyright-paperwork-exempt: yes
Diffstat (limited to 'lisp/sqlite-mode.el')
-rw-r--r--lisp/sqlite-mode.el14
1 files changed, 11 insertions, 3 deletions
diff --git a/lisp/sqlite-mode.el b/lisp/sqlite-mode.el
index ba1b81ef7e2..66e2e487d9c 100644
--- a/lisp/sqlite-mode.el
+++ b/lisp/sqlite-mode.el
@@ -129,15 +129,23 @@
129 (insert (format " %s\n" column)))))))) 129 (insert (format " %s\n" column))))))))
130 130
131(defun sqlite-mode--column-names (table) 131(defun sqlite-mode--column-names (table)
132 "Return a list of the column names for TABLE."
132 (let ((sql 133 (let ((sql
133 (caar 134 (caar
134 (sqlite-select 135 (sqlite-select
135 sqlite--db 136 sqlite--db
136 "select sql from sqlite_master where tbl_name = ? AND type = 'table'" 137 "select sql from sqlite_master where tbl_name = ? AND type = 'table'"
137 (list table))))) 138 (list table)))))
138 (mapcar 139 (with-temp-buffer
139 #'string-trim 140 (insert sql)
140 (split-string (replace-regexp-in-string "^.*(\\|)$" "" sql) ",")))) 141 (mapcar #'string-trim
142 (split-string
143 ;; Extract the args to CREATE TABLE. Point is
144 ;; currently at its end.
145 (buffer-substring
146 (1- (point)) ; right before )
147 (1+ (progn (backward-sexp) (point)))) ; right after (
148 ",")))))
141 149
142(defun sqlite-mode-list-data () 150(defun sqlite-mode-list-data ()
143 "List the data from the table under point." 151 "List the data from the table under point."