emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[QUESTION] A decision about matching ob-sql.el's :engine header argument


From: stardiviner
Subject: [QUESTION] A decision about matching ob-sql.el's :engine header argument match sql-mode product name
Date: Thu, 30 Jan 2020 14:21:30 +0800
User-agent: mu4e 1.3.2; emacs 27.0.50

I'm writing a patch which try to set ~sql-product~ when editing sql src block.

Here is the code:

#+begin_src emacs-lisp
(defun org-babel-edit-prep:sql (info)
  "Set `sql-product' in Org edit buffer.
Set `sql-product' in Org edit buffer according to the
corresponding :engine source block header argument."
  (let ((product (cdr (assq :engine (nth 2 info)))))
    (sql-set-product product)))
#+end_src

But =ob-sql.el= source code hardcoded ~:engine~ names which some are not matched
with ~sql-product-alist~ in =sql-mode=. For example =:engine postgresql=, but 
it's
~postgres~ in ~sql-product-alist~.

For now, I have two solutions:

1. write an adapter function which translate ~:engine~ header argument value 
into
   ~sql-product-alist~ product names. This is a safe way, which will not
   incompatiable with old Org document.

2. modify source code hardcoded ~:engine~ names (also need to update Org
   document), this has a minor advantage is *consistance*.

WDYT?

BTW, about writing an adapter function to translate names. I want to hear some
suggestion about use which method. Writing an hash map or assoc list etc?

Regards

-- 
[ stardiviner ]
       I try to make every word tell the meaning what I want to express.

       Blog: https://stardiviner.github.io/
       IRC(freenode): stardiviner, Matrix: stardiviner
       GPG: F09F650D7D674819892591401B5DF1C95AE89AC3
      



reply via email to

[Prev in Thread] Current Thread [Next in Thread]