Re: [QUESTION] A decision about matching ob-sql.el's :engine header argument match sql-mode product name

2020-01-31 Thread Bastien
Hi Stardiviner,

thanks for bring up this discussion.

Feel free to commit the patch on master when it's ready.

Thanks,

-- 
 Bastien



Re: [QUESTION] A decision about matching ob-sql.el's :engine header argument match sql-mode product name

2020-01-30 Thread stardiviner


Tim Cross  writes:

> My vote would be to modify ob-sql and change the hard coded values into
> a custom variable. Then users can add/remove/modify engine names to suit
> their requirements. The default should probably match the product names
> supported by sql.el (you could even have multiple entries mapping to the
> same product name for backwards compatibility i.e. 'postgres' =>
> 'postgres', 'postgresql' => 'postgres' etc.). It would also be trivial
> to then add new 'products' in the future.

Sounds great. I agree with this too.

>
> stardiviner  writes:
>
>> 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
  



Re: [QUESTION] A decision about matching ob-sql.el's :engine header argument match sql-mode product name

2020-01-29 Thread Tim Cross


My vote would be to modify ob-sql and change the hard coded values into
a custom variable. Then users can add/remove/modify engine names to suit
their requirements. The default should probably match the product names
supported by sql.el (you could even have multiple entries mapping to the
same product name for backwards compatibility i.e. 'postgres' =>
'postgres', 'postgresql' => 'postgres' etc.). It would also be trivial
to then add new 'products' in the future.

stardiviner  writes:

> 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


--
Tim Cross



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

2020-01-29 Thread stardiviner


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