17

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. enter image description here

Related links

BhishanPoudel
  • 15,974
  • 21
  • 108
  • 169

2 Answers2

11

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(); }
        });
    });
});

enter image description here

igrinis
  • 12,398
  • 20
  • 45
  • How to use this setting? – A.Ametov Mar 09 '23 at 07:34
  • Seems like you have to create a `another-custom.js` file in `~/.jupyter/custom` folder like stated here https://stackoverflow.com/questions/68340216/any-way-to-bring-back-sql-magic-syntax-highlighting-to-jupyterlab-notebook – A.Ametov Mar 09 '23 at 08:18
  • 1
    Put the snippet in `~/.jupyter/custom/custom.js` – igrinis Mar 12 '23 at 09:59
0

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.