From 72b100798743685e87f336a8dffa97ee149eeefe Mon Sep 17 00:00:00 2001 From: Yoav Marco Date: Wed, 11 May 2022 14:05:37 +0200 Subject: [PATCH] (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 --- lisp/sqlite-mode.el | 14 +++++++++++--- 1 file 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 @@ (insert (format " %s\n" column)))))))) (defun sqlite-mode--column-names (table) + "Return a list of the column names for TABLE." (let ((sql (caar (sqlite-select sqlite--db "select sql from sqlite_master where tbl_name = ? AND type = 'table'" (list table))))) - (mapcar - #'string-trim - (split-string (replace-regexp-in-string "^.*(\\|)$" "" sql) ",")))) + (with-temp-buffer + (insert sql) + (mapcar #'string-trim + (split-string + ;; Extract the args to CREATE TABLE. Point is + ;; currently at its end. + (buffer-substring + (1- (point)) ; right before ) + (1+ (progn (backward-sexp) (point)))) ; right after ( + ","))))) (defun sqlite-mode-list-data () "List the data from the table under point." -- 2.39.2