简体   繁体   中英

How to add syntax highlight to SQL line magic, cell magic and custom command in jupyter notebook?

I was searching for ways to highlight SQL codes in jupyter notebook. I was able to highlight SQL cell magic only, but not line magic and custom settings.

Case 1 (works)

Highlight cell magic (cell startswith %%sql)

Ref: adding syntax highlighting to Jupyter notebook cell magic

require(['notebook/js/codecell'], function(codecell) {
  codecell.CodeCell.options_default.highlight_modes['magic_text/x-mssql'] = {'reg':[/^%%sql/]} ;
  Jupyter.notebook.events.one('kernel_ready.Kernel', function(){
  Jupyter.notebook.get_cells().map(function(cell){
      if (cell.cell_type == 'code'){ cell.auto_highlight(); } }) ;
  });
});

Case 2(does not work)

Line Magic: line starts with %sql
My attempt: Change the regex to ^%sql but it did not work.

%sql select * from Products limit 5;

Case 3 (does not work)

How to syntax highlight custom cells (cell startswith ##%%)
My attempt: Tried to changing regex to ^##%%sql

##%%sql
q = " select * from customer limit 2;"
execute_query(q,dbname)

Example image

In the image we can see that cell magic %sql commands are not highlighted. I want them to be highlighted. 在此处输入图像描述

Related links

This will work even for assignments, as in the third cell. Currently multiple languages highlighting unavailable. So it will be either Python or SQL syntax, whatever comes first.

require(['notebook/js/codecell'], function (codecell) {
    codecell.CodeCell.options_default.highlight_modes['magic_text/x-mssql'] = { 'reg': [/%?%sql/] };
    Jupyter.notebook.events.one('kernel_ready.Kernel', function () {
        Jupyter.notebook.get_cells().map(function (cell) {
            if (cell.cell_type == 'code') { cell.auto_highlight(); }
        });
    });
});

在此处输入图片说明

You can open your files in colab's build-in text editor in order to enjoy correct highlights. It opens when you open a text file from the "Files" tab on the left and can be save with "ctr+s" shortcut.

For me, this is not working on Jupyter Lab. If I switch to Jupyter Notebook it does. Do you have any idea how to make it compatible to Jupyter Lab?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM