Example notebook can be found here.
-
-
Save akshaykhadse/7acc91dd41f52944c6150754e5530c4b to your computer and use it in GitHub Desktop.
{ | |
"nbformat": 4, | |
"nbformat_minor": 0, | |
"metadata": { | |
"colab": { | |
"name": "CPP.ipynb", | |
"provenance": [], | |
"collapsed_sections": [], | |
"toc_visible": true, | |
"authorship_tag": "ABX9TyOMBpgP7RZdGP+gGyEZd4ew", | |
"include_colab_link": true | |
}, | |
"kernelspec": { | |
"name": "python3", | |
"display_name": "Python 3" | |
} | |
}, | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "view-in-github", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<a href=\"https://colab.research.google.com/gist/akshaykhadse/7acc91dd41f52944c6150754e5530c4b/cpp.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "shmDs3e3BOrc" | |
}, | |
"source": [ | |
"# C++ magic for Google Colab\n", | |
"Regular syntax highlighting options available for IPython and Jupyter doesen't seem to work with the Google Colab. So, I created a work around of sorts.\n", | |
"The plugin used in this notebook can print syntax highlghted C++ code." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "63xBUG5tCGHg" | |
}, | |
"source": [ | |
"## Setup" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "zfoPP8qkBvra" | |
}, | |
"source": [ | |
"### Get the C++ magic command plugin." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "CpE6eLtlgQtE", | |
"outputId": "743f60a8-d510-4079-a3c5-78897b9235a4", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 301 | |
} | |
}, | |
"source": [ | |
"!wget -O cpp_plugin.py https://gist.github.com/akshaykhadse/7acc91dd41f52944c6150754e5530c4b/raw/cpp_plugin.py" | |
], | |
"execution_count": null, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"--2020-07-28 14:42:48-- https://gist.github.com/akshaykhadse/7acc91dd41f52944c6150754e5530c4b/raw/cpp_plugin.py\n", | |
"Resolving gist.github.com (gist.github.com)... 140.82.118.4\n", | |
"Connecting to gist.github.com (gist.github.com)|140.82.118.4|:443... connected.\n", | |
"HTTP request sent, awaiting response... 301 Moved Permanently\n", | |
"Location: https://gist.githubusercontent.com/akshaykhadse/7acc91dd41f52944c6150754e5530c4b/raw/cpp_plugin.py [following]\n", | |
"--2020-07-28 14:42:48-- https://gist.githubusercontent.com/akshaykhadse/7acc91dd41f52944c6150754e5530c4b/raw/cpp_plugin.py\n", | |
"Resolving gist.githubusercontent.com (gist.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...\n", | |
"Connecting to gist.githubusercontent.com (gist.githubusercontent.com)|151.101.0.133|:443... connected.\n", | |
"HTTP request sent, awaiting response... 200 OK\n", | |
"Length: 2730 (2.7K) [text/plain]\n", | |
"Saving to: ‘cpp_plugin.py’\n", | |
"\n", | |
"\rcpp_plugin.py 0%[ ] 0 --.-KB/s \rcpp_plugin.py 100%[===================>] 2.67K --.-KB/s in 0s \n", | |
"\n", | |
"2020-07-28 14:42:48 (12.0 MB/s) - ‘cpp_plugin.py’ saved [2730/2730]\n", | |
"\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "ZCFCfE3kCAf5" | |
}, | |
"source": [ | |
"### Load the plugin" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "WGgFM6ZFAIgN" | |
}, | |
"source": [ | |
"%load_ext cpp_plugin" | |
], | |
"execution_count": null, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "St9kxRcLCOK_" | |
}, | |
"source": [ | |
"## Usage" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "BHnULhmMCP48" | |
}, | |
"source": [ | |
"### Create source file\n", | |
"Use the cell magic `%%cpp -n <filename>.cpp` to create a file with the contents of the cell and then display the syntax highlighted code in output. If `-n` is not used, then `src.cpp` will be used as default filename. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "CUv5nwF0mAdl", | |
"cellView": "both", | |
"outputId": "ce48820f-1a93-4e1e-f2a2-34aadf0ffb78", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 204 | |
} | |
}, | |
"source": [ | |
"#@title Refer output of this cell. Double-click to hide source.\n", | |
"%%cpp -n test.cpp\n", | |
"#include <iostream>\n", | |
"\n", | |
"int foo();\n", | |
"int bar();\n", | |
"\n", | |
"using namespace std;\n", | |
"int main() {\n", | |
" foo();\n", | |
" bar();\n", | |
"}" | |
], | |
"execution_count": null, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/html": [ | |
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\n", | |
" \"http://www.w3.org/TR/html4/strict.dtd\">\n", | |
"\n", | |
"<html>\n", | |
"<head>\n", | |
" <title></title>\n", | |
" <meta http-equiv=\"content-type\" content=\"text/html; charset=None\">\n", | |
" <style type=\"text/css\">\n", | |
"td.linenos { background-color: #f0f0f0; padding-right: 10px; }\n", | |
"span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }\n", | |
"pre { line-height: 125%; }\n", | |
"body .hll { background-color: #4f424c }\n", | |
"body .c { color: #776e71 } /* Comment */\n", | |
"body .err { color: #ef6155 } /* Error */\n", | |
"body .k { color: #815ba4 } /* Keyword */\n", | |
"body .l { color: #f99b15 } /* Literal */\n", | |
"body .n { color: #e7e9db } /* Name */\n", | |
"body .o { color: #5bc4bf } /* Operator */\n", | |
"body .p { color: #e7e9db } /* Punctuation */\n", | |
"body .ch { color: #776e71 } /* Comment.Hashbang */\n", | |
"body .cm { color: #776e71 } /* Comment.Multiline */\n", | |
"body .cp { color: #776e71 } /* Comment.Preproc */\n", | |
"body .cpf { color: #776e71 } /* Comment.PreprocFile */\n", | |
"body .c1 { color: #776e71 } /* Comment.Single */\n", | |
"body .cs { color: #776e71 } /* Comment.Special */\n", | |
"body .gd { color: #ef6155 } /* Generic.Deleted */\n", | |
"body .ge { font-style: italic } /* Generic.Emph */\n", | |
"body .gh { color: #e7e9db; font-weight: bold } /* Generic.Heading */\n", | |
"body .gi { color: #48b685 } /* Generic.Inserted */\n", | |
"body .gp { color: #776e71; font-weight: bold } /* Generic.Prompt */\n", | |
"body .gs { font-weight: bold } /* Generic.Strong */\n", | |
"body .gu { color: #5bc4bf; font-weight: bold } /* Generic.Subheading */\n", | |
"body .kc { color: #815ba4 } /* Keyword.Constant */\n", | |
"body .kd { color: #815ba4 } /* Keyword.Declaration */\n", | |
"body .kn { color: #5bc4bf } /* Keyword.Namespace */\n", | |
"body .kp { color: #815ba4 } /* Keyword.Pseudo */\n", | |
"body .kr { color: #815ba4 } /* Keyword.Reserved */\n", | |
"body .kt { color: #fec418 } /* Keyword.Type */\n", | |
"body .ld { color: #48b685 } /* Literal.Date */\n", | |
"body .m { color: #f99b15 } /* Literal.Number */\n", | |
"body .s { color: #48b685 } /* Literal.String */\n", | |
"body .na { color: #06b6ef } /* Name.Attribute */\n", | |
"body .nb { color: #e7e9db } /* Name.Builtin */\n", | |
"body .nc { color: #fec418 } /* Name.Class */\n", | |
"body .no { color: #ef6155 } /* Name.Constant */\n", | |
"body .nd { color: #5bc4bf } /* Name.Decorator */\n", | |
"body .ni { color: #e7e9db } /* Name.Entity */\n", | |
"body .ne { color: #ef6155 } /* Name.Exception */\n", | |
"body .nf { color: #06b6ef } /* Name.Function */\n", | |
"body .nl { color: #e7e9db } /* Name.Label */\n", | |
"body .nn { color: #fec418 } /* Name.Namespace */\n", | |
"body .nx { color: #06b6ef } /* Name.Other */\n", | |
"body .py { color: #e7e9db } /* Name.Property */\n", | |
"body .nt { color: #5bc4bf } /* Name.Tag */\n", | |
"body .nv { color: #ef6155 } /* Name.Variable */\n", | |
"body .ow { color: #5bc4bf } /* Operator.Word */\n", | |
"body .w { color: #e7e9db } /* Text.Whitespace */\n", | |
"body .mb { color: #f99b15 } /* Literal.Number.Bin */\n", | |
"body .mf { color: #f99b15 } /* Literal.Number.Float */\n", | |
"body .mh { color: #f99b15 } /* Literal.Number.Hex */\n", | |
"body .mi { color: #f99b15 } /* Literal.Number.Integer */\n", | |
"body .mo { color: #f99b15 } /* Literal.Number.Oct */\n", | |
"body .sb { color: #48b685 } /* Literal.String.Backtick */\n", | |
"body .sc { color: #e7e9db } /* Literal.String.Char */\n", | |
"body .sd { color: #776e71 } /* Literal.String.Doc */\n", | |
"body .s2 { color: #48b685 } /* Literal.String.Double */\n", | |
"body .se { color: #f99b15 } /* Literal.String.Escape */\n", | |
"body .sh { color: #48b685 } /* Literal.String.Heredoc */\n", | |
"body .si { color: #f99b15 } /* Literal.String.Interpol */\n", | |
"body .sx { color: #48b685 } /* Literal.String.Other */\n", | |
"body .sr { color: #48b685 } /* Literal.String.Regex */\n", | |
"body .s1 { color: #48b685 } /* Literal.String.Single */\n", | |
"body .ss { color: #48b685 } /* Literal.String.Symbol */\n", | |
"body .bp { color: #e7e9db } /* Name.Builtin.Pseudo */\n", | |
"body .vc { color: #ef6155 } /* Name.Variable.Class */\n", | |
"body .vg { color: #ef6155 } /* Name.Variable.Global */\n", | |
"body .vi { color: #ef6155 } /* Name.Variable.Instance */\n", | |
"body .il { color: #f99b15 } /* Literal.Number.Integer.Long */\n", | |
"\n", | |
" </style>\n", | |
"</head>\n", | |
"<body>\n", | |
"<h2></h2>\n", | |
"\n", | |
"<div class=\"highlight\"><pre><span></span><span class=\"cp\">#include</span> <span class=\"cpf\"><iostream></span><span class=\"cp\"></span>\n", | |
"\n", | |
"<span class=\"kt\">int</span> <span class=\"nf\">foo</span><span class=\"p\">();</span>\n", | |
"<span class=\"kt\">int</span> <span class=\"nf\">bar</span><span class=\"p\">();</span>\n", | |
"\n", | |
"<span class=\"k\">using</span> <span class=\"k\">namespace</span> <span class=\"n\">std</span><span class=\"p\">;</span>\n", | |
"<span class=\"kt\">int</span> <span class=\"nf\">main</span><span class=\"p\">()</span> <span class=\"p\">{</span>\n", | |
" <span class=\"n\">foo</span><span class=\"p\">();</span>\n", | |
" <span class=\"n\">bar</span><span class=\"p\">();</span>\n", | |
"<span class=\"p\">}</span>\n", | |
"</pre></div>\n", | |
"</body>\n", | |
"</html>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "qwlI7OraCkus" | |
}, | |
"source": [ | |
"### Hide unhighlighted code\n", | |
"\n", | |
"Here, `#@title` on the first line creates an empty form. Double clicking on the right hand pane hides the code cell. This can also be done using right-click > Form.\n", | |
"\n", | |
"Following is a preview of how the hidden code will look like." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "TYEGLFp6FSfJ", | |
"cellView": "form", | |
"outputId": "b41d979f-489c-489f-a768-5b40fdea5d22", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 102 | |
} | |
}, | |
"source": [ | |
"#@title Refer output of this cell. Double-click to hide source.\n", | |
"%%cpp\n", | |
"\n", | |
"int add(int a, int b){\n", | |
" int c = a + b;\n", | |
" return c;\n", | |
"}" | |
], | |
"execution_count": null, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/html": [ | |
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\n", | |
" \"http://www.w3.org/TR/html4/strict.dtd\">\n", | |
"\n", | |
"<html>\n", | |
"<head>\n", | |
" <title></title>\n", | |
" <meta http-equiv=\"content-type\" content=\"text/html; charset=None\">\n", | |
" <style type=\"text/css\">\n", | |
"td.linenos { background-color: #f0f0f0; padding-right: 10px; }\n", | |
"span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }\n", | |
"pre { line-height: 125%; }\n", | |
"body .hll { background-color: #4f424c }\n", | |
"body .c { color: #776e71 } /* Comment */\n", | |
"body .err { color: #ef6155 } /* Error */\n", | |
"body .k { color: #815ba4 } /* Keyword */\n", | |
"body .l { color: #f99b15 } /* Literal */\n", | |
"body .n { color: #e7e9db } /* Name */\n", | |
"body .o { color: #5bc4bf } /* Operator */\n", | |
"body .p { color: #e7e9db } /* Punctuation */\n", | |
"body .ch { color: #776e71 } /* Comment.Hashbang */\n", | |
"body .cm { color: #776e71 } /* Comment.Multiline */\n", | |
"body .cp { color: #776e71 } /* Comment.Preproc */\n", | |
"body .cpf { color: #776e71 } /* Comment.PreprocFile */\n", | |
"body .c1 { color: #776e71 } /* Comment.Single */\n", | |
"body .cs { color: #776e71 } /* Comment.Special */\n", | |
"body .gd { color: #ef6155 } /* Generic.Deleted */\n", | |
"body .ge { font-style: italic } /* Generic.Emph */\n", | |
"body .gh { color: #e7e9db; font-weight: bold } /* Generic.Heading */\n", | |
"body .gi { color: #48b685 } /* Generic.Inserted */\n", | |
"body .gp { color: #776e71; font-weight: bold } /* Generic.Prompt */\n", | |
"body .gs { font-weight: bold } /* Generic.Strong */\n", | |
"body .gu { color: #5bc4bf; font-weight: bold } /* Generic.Subheading */\n", | |
"body .kc { color: #815ba4 } /* Keyword.Constant */\n", | |
"body .kd { color: #815ba4 } /* Keyword.Declaration */\n", | |
"body .kn { color: #5bc4bf } /* Keyword.Namespace */\n", | |
"body .kp { color: #815ba4 } /* Keyword.Pseudo */\n", | |
"body .kr { color: #815ba4 } /* Keyword.Reserved */\n", | |
"body .kt { color: #fec418 } /* Keyword.Type */\n", | |
"body .ld { color: #48b685 } /* Literal.Date */\n", | |
"body .m { color: #f99b15 } /* Literal.Number */\n", | |
"body .s { color: #48b685 } /* Literal.String */\n", | |
"body .na { color: #06b6ef } /* Name.Attribute */\n", | |
"body .nb { color: #e7e9db } /* Name.Builtin */\n", | |
"body .nc { color: #fec418 } /* Name.Class */\n", | |
"body .no { color: #ef6155 } /* Name.Constant */\n", | |
"body .nd { color: #5bc4bf } /* Name.Decorator */\n", | |
"body .ni { color: #e7e9db } /* Name.Entity */\n", | |
"body .ne { color: #ef6155 } /* Name.Exception */\n", | |
"body .nf { color: #06b6ef } /* Name.Function */\n", | |
"body .nl { color: #e7e9db } /* Name.Label */\n", | |
"body .nn { color: #fec418 } /* Name.Namespace */\n", | |
"body .nx { color: #06b6ef } /* Name.Other */\n", | |
"body .py { color: #e7e9db } /* Name.Property */\n", | |
"body .nt { color: #5bc4bf } /* Name.Tag */\n", | |
"body .nv { color: #ef6155 } /* Name.Variable */\n", | |
"body .ow { color: #5bc4bf } /* Operator.Word */\n", | |
"body .w { color: #e7e9db } /* Text.Whitespace */\n", | |
"body .mb { color: #f99b15 } /* Literal.Number.Bin */\n", | |
"body .mf { color: #f99b15 } /* Literal.Number.Float */\n", | |
"body .mh { color: #f99b15 } /* Literal.Number.Hex */\n", | |
"body .mi { color: #f99b15 } /* Literal.Number.Integer */\n", | |
"body .mo { color: #f99b15 } /* Literal.Number.Oct */\n", | |
"body .sb { color: #48b685 } /* Literal.String.Backtick */\n", | |
"body .sc { color: #e7e9db } /* Literal.String.Char */\n", | |
"body .sd { color: #776e71 } /* Literal.String.Doc */\n", | |
"body .s2 { color: #48b685 } /* Literal.String.Double */\n", | |
"body .se { color: #f99b15 } /* Literal.String.Escape */\n", | |
"body .sh { color: #48b685 } /* Literal.String.Heredoc */\n", | |
"body .si { color: #f99b15 } /* Literal.String.Interpol */\n", | |
"body .sx { color: #48b685 } /* Literal.String.Other */\n", | |
"body .sr { color: #48b685 } /* Literal.String.Regex */\n", | |
"body .s1 { color: #48b685 } /* Literal.String.Single */\n", | |
"body .ss { color: #48b685 } /* Literal.String.Symbol */\n", | |
"body .bp { color: #e7e9db } /* Name.Builtin.Pseudo */\n", | |
"body .vc { color: #ef6155 } /* Name.Variable.Class */\n", | |
"body .vg { color: #ef6155 } /* Name.Variable.Global */\n", | |
"body .vi { color: #ef6155 } /* Name.Variable.Instance */\n", | |
"body .il { color: #f99b15 } /* Literal.Number.Integer.Long */\n", | |
"\n", | |
" </style>\n", | |
"</head>\n", | |
"<body>\n", | |
"<h2></h2>\n", | |
"\n", | |
"<div class=\"highlight\"><pre><span></span><span class=\"kt\">int</span> <span class=\"nf\">add</span><span class=\"p\">(</span><span class=\"kt\">int</span> <span class=\"n\">a</span><span class=\"p\">,</span> <span class=\"kt\">int</span> <span class=\"n\">b</span><span class=\"p\">){</span>\n", | |
" <span class=\"kt\">int</span> <span class=\"n\">c</span> <span class=\"o\">=</span> <span class=\"n\">a</span> <span class=\"o\">+</span> <span class=\"n\">b</span><span class=\"p\">;</span>\n", | |
" <span class=\"k\">return</span> <span class=\"n\">c</span><span class=\"p\">;</span>\n", | |
"<span class=\"p\">}</span>\n", | |
"</pre></div>\n", | |
"</body>\n", | |
"</html>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "u93ec48s2Oxi" | |
}, | |
"source": [ | |
"### Change style\n", | |
"Use the option `-s <stylename>` to change syntax highlighting style.\n", | |
"* default\n", | |
"* emacs\n", | |
"* friendly\n", | |
"* colorful\n", | |
"* autumn\n", | |
"* murphy\n", | |
"* manni\n", | |
"* monokai\n", | |
"* perldoc\n", | |
"* pastie\n", | |
"* borland\n", | |
"* trac\n", | |
"* native\n", | |
"* fruity\n", | |
"* bw\n", | |
"* vim\n", | |
"* vs\n", | |
"* tango\n", | |
"* rrt\n", | |
"* xcode\n", | |
"* igor\n", | |
"* paraiso-light\n", | |
"* paraiso-dark\n", | |
"* lovelace\n", | |
"* algol\n", | |
"* algol_nu" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "pwG4rmAk2zSA", | |
"outputId": "2d6243c9-d8a5-409e-d6df-4f3e952a044e", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 85 | |
} | |
}, | |
"source": [ | |
"%%cpp -n src.cpp -s fruity\n", | |
"int foo() {\n", | |
" cout << \"Hello World!\" << endl;\n", | |
"}" | |
], | |
"execution_count": null, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/html": [ | |
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\n", | |
" \"http://www.w3.org/TR/html4/strict.dtd\">\n", | |
"\n", | |
"<html>\n", | |
"<head>\n", | |
" <title></title>\n", | |
" <meta http-equiv=\"content-type\" content=\"text/html; charset=None\">\n", | |
" <style type=\"text/css\">\n", | |
"td.linenos { background-color: #f0f0f0; padding-right: 10px; }\n", | |
"span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }\n", | |
"pre { line-height: 125%; }\n", | |
"body .hll { background-color: #333333 }\n", | |
"body .c { color: #008800; font-style: italic; background-color: #0f140f } /* Comment */\n", | |
"body .err { color: #ffffff } /* Error */\n", | |
"body .esc { color: #ffffff } /* Escape */\n", | |
"body .g { color: #ffffff } /* Generic */\n", | |
"body .k { color: #fb660a; font-weight: bold } /* Keyword */\n", | |
"body .l { color: #ffffff } /* Literal */\n", | |
"body .n { color: #ffffff } /* Name */\n", | |
"body .o { color: #ffffff } /* Operator */\n", | |
"body .x { color: #ffffff } /* Other */\n", | |
"body .p { color: #ffffff } /* Punctuation */\n", | |
"body .ch { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Hashbang */\n", | |
"body .cm { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Multiline */\n", | |
"body .cp { color: #ff0007; font-weight: bold; font-style: italic; background-color: #0f140f } /* Comment.Preproc */\n", | |
"body .cpf { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.PreprocFile */\n", | |
"body .c1 { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Single */\n", | |
"body .cs { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Special */\n", | |
"body .gd { color: #ffffff } /* Generic.Deleted */\n", | |
"body .ge { color: #ffffff } /* Generic.Emph */\n", | |
"body .gr { color: #ffffff } /* Generic.Error */\n", | |
"body .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */\n", | |
"body .gi { color: #ffffff } /* Generic.Inserted */\n", | |
"body .go { color: #444444; background-color: #222222 } /* Generic.Output */\n", | |
"body .gp { color: #ffffff } /* Generic.Prompt */\n", | |
"body .gs { color: #ffffff } /* Generic.Strong */\n", | |
"body .gu { color: #ffffff; font-weight: bold } /* Generic.Subheading */\n", | |
"body .gt { color: #ffffff } /* Generic.Traceback */\n", | |
"body .kc { color: #fb660a; font-weight: bold } /* Keyword.Constant */\n", | |
"body .kd { color: #fb660a; font-weight: bold } /* Keyword.Declaration */\n", | |
"body .kn { color: #fb660a; font-weight: bold } /* Keyword.Namespace */\n", | |
"body .kp { color: #fb660a } /* Keyword.Pseudo */\n", | |
"body .kr { color: #fb660a; font-weight: bold } /* Keyword.Reserved */\n", | |
"body .kt { color: #cdcaa9; font-weight: bold } /* Keyword.Type */\n", | |
"body .ld { color: #ffffff } /* Literal.Date */\n", | |
"body .m { color: #0086f7; font-weight: bold } /* Literal.Number */\n", | |
"body .s { color: #0086d2 } /* Literal.String */\n", | |
"body .na { color: #ff0086; font-weight: bold } /* Name.Attribute */\n", | |
"body .nb { color: #ffffff } /* Name.Builtin */\n", | |
"body .nc { color: #ffffff } /* Name.Class */\n", | |
"body .no { color: #0086d2 } /* Name.Constant */\n", | |
"body .nd { color: #ffffff } /* Name.Decorator */\n", | |
"body .ni { color: #ffffff } /* Name.Entity */\n", | |
"body .ne { color: #ffffff } /* Name.Exception */\n", | |
"body .nf { color: #ff0086; font-weight: bold } /* Name.Function */\n", | |
"body .nl { color: #ffffff } /* Name.Label */\n", | |
"body .nn { color: #ffffff } /* Name.Namespace */\n", | |
"body .nx { color: #ffffff } /* Name.Other */\n", | |
"body .py { color: #ffffff } /* Name.Property */\n", | |
"body .nt { color: #fb660a; font-weight: bold } /* Name.Tag */\n", | |
"body .nv { color: #fb660a } /* Name.Variable */\n", | |
"body .ow { color: #ffffff } /* Operator.Word */\n", | |
"body .w { color: #888888 } /* Text.Whitespace */\n", | |
"body .mb { color: #0086f7; font-weight: bold } /* Literal.Number.Bin */\n", | |
"body .mf { color: #0086f7; font-weight: bold } /* Literal.Number.Float */\n", | |
"body .mh { color: #0086f7; font-weight: bold } /* Literal.Number.Hex */\n", | |
"body .mi { color: #0086f7; font-weight: bold } /* Literal.Number.Integer */\n", | |
"body .mo { color: #0086f7; font-weight: bold } /* Literal.Number.Oct */\n", | |
"body .sb { color: #0086d2 } /* Literal.String.Backtick */\n", | |
"body .sc { color: #0086d2 } /* Literal.String.Char */\n", | |
"body .sd { color: #0086d2 } /* Literal.String.Doc */\n", | |
"body .s2 { color: #0086d2 } /* Literal.String.Double */\n", | |
"body .se { color: #0086d2 } /* Literal.String.Escape */\n", | |
"body .sh { color: #0086d2 } /* Literal.String.Heredoc */\n", | |
"body .si { color: #0086d2 } /* Literal.String.Interpol */\n", | |
"body .sx { color: #0086d2 } /* Literal.String.Other */\n", | |
"body .sr { color: #0086d2 } /* Literal.String.Regex */\n", | |
"body .s1 { color: #0086d2 } /* Literal.String.Single */\n", | |
"body .ss { color: #0086d2 } /* Literal.String.Symbol */\n", | |
"body .bp { color: #ffffff } /* Name.Builtin.Pseudo */\n", | |
"body .vc { color: #fb660a } /* Name.Variable.Class */\n", | |
"body .vg { color: #fb660a } /* Name.Variable.Global */\n", | |
"body .vi { color: #fb660a } /* Name.Variable.Instance */\n", | |
"body .il { color: #0086f7; font-weight: bold } /* Literal.Number.Integer.Long */\n", | |
"\n", | |
" </style>\n", | |
"</head>\n", | |
"<body>\n", | |
"<h2></h2>\n", | |
"\n", | |
"<div class=\"highlight\"><pre><span></span><span class=\"kt\">int</span> <span class=\"nf\">foo</span><span class=\"p\">()</span> <span class=\"p\">{</span>\n", | |
" <span class=\"n\">cout</span> <span class=\"o\"><<</span> <span class=\"s\">"Hello World!"</span> <span class=\"o\"><<</span> <span class=\"n\">endl</span><span class=\"p\">;</span>\n", | |
"<span class=\"p\">}</span>\n", | |
"</pre></div>\n", | |
"</body>\n", | |
"</html>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "llPk4IfzC7lO" | |
}, | |
"source": [ | |
"### Append to an existing file\n", | |
"Use option `-a` to append to the file mentoined via `-n` argument." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "Ln-iP7f7zsVF", | |
"cellView": "both", | |
"outputId": "8ec82caa-2a14-441c-88d2-446dac3a4c5e", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 85 | |
} | |
}, | |
"source": [ | |
"#@title Refer output of this cell. Double-click to hide source.\n", | |
"%%cpp -n test.cpp -a\n", | |
"\n", | |
"int foo() {\n", | |
" cout << \"Hello World!\" << endl;\n", | |
"}" | |
], | |
"execution_count": null, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/html": [ | |
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\n", | |
" \"http://www.w3.org/TR/html4/strict.dtd\">\n", | |
"\n", | |
"<html>\n", | |
"<head>\n", | |
" <title></title>\n", | |
" <meta http-equiv=\"content-type\" content=\"text/html; charset=None\">\n", | |
" <style type=\"text/css\">\n", | |
"td.linenos { background-color: #f0f0f0; padding-right: 10px; }\n", | |
"span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }\n", | |
"pre { line-height: 125%; }\n", | |
"body .hll { background-color: #4f424c }\n", | |
"body .c { color: #776e71 } /* Comment */\n", | |
"body .err { color: #ef6155 } /* Error */\n", | |
"body .k { color: #815ba4 } /* Keyword */\n", | |
"body .l { color: #f99b15 } /* Literal */\n", | |
"body .n { color: #e7e9db } /* Name */\n", | |
"body .o { color: #5bc4bf } /* Operator */\n", | |
"body .p { color: #e7e9db } /* Punctuation */\n", | |
"body .ch { color: #776e71 } /* Comment.Hashbang */\n", | |
"body .cm { color: #776e71 } /* Comment.Multiline */\n", | |
"body .cp { color: #776e71 } /* Comment.Preproc */\n", | |
"body .cpf { color: #776e71 } /* Comment.PreprocFile */\n", | |
"body .c1 { color: #776e71 } /* Comment.Single */\n", | |
"body .cs { color: #776e71 } /* Comment.Special */\n", | |
"body .gd { color: #ef6155 } /* Generic.Deleted */\n", | |
"body .ge { font-style: italic } /* Generic.Emph */\n", | |
"body .gh { color: #e7e9db; font-weight: bold } /* Generic.Heading */\n", | |
"body .gi { color: #48b685 } /* Generic.Inserted */\n", | |
"body .gp { color: #776e71; font-weight: bold } /* Generic.Prompt */\n", | |
"body .gs { font-weight: bold } /* Generic.Strong */\n", | |
"body .gu { color: #5bc4bf; font-weight: bold } /* Generic.Subheading */\n", | |
"body .kc { color: #815ba4 } /* Keyword.Constant */\n", | |
"body .kd { color: #815ba4 } /* Keyword.Declaration */\n", | |
"body .kn { color: #5bc4bf } /* Keyword.Namespace */\n", | |
"body .kp { color: #815ba4 } /* Keyword.Pseudo */\n", | |
"body .kr { color: #815ba4 } /* Keyword.Reserved */\n", | |
"body .kt { color: #fec418 } /* Keyword.Type */\n", | |
"body .ld { color: #48b685 } /* Literal.Date */\n", | |
"body .m { color: #f99b15 } /* Literal.Number */\n", | |
"body .s { color: #48b685 } /* Literal.String */\n", | |
"body .na { color: #06b6ef } /* Name.Attribute */\n", | |
"body .nb { color: #e7e9db } /* Name.Builtin */\n", | |
"body .nc { color: #fec418 } /* Name.Class */\n", | |
"body .no { color: #ef6155 } /* Name.Constant */\n", | |
"body .nd { color: #5bc4bf } /* Name.Decorator */\n", | |
"body .ni { color: #e7e9db } /* Name.Entity */\n", | |
"body .ne { color: #ef6155 } /* Name.Exception */\n", | |
"body .nf { color: #06b6ef } /* Name.Function */\n", | |
"body .nl { color: #e7e9db } /* Name.Label */\n", | |
"body .nn { color: #fec418 } /* Name.Namespace */\n", | |
"body .nx { color: #06b6ef } /* Name.Other */\n", | |
"body .py { color: #e7e9db } /* Name.Property */\n", | |
"body .nt { color: #5bc4bf } /* Name.Tag */\n", | |
"body .nv { color: #ef6155 } /* Name.Variable */\n", | |
"body .ow { color: #5bc4bf } /* Operator.Word */\n", | |
"body .w { color: #e7e9db } /* Text.Whitespace */\n", | |
"body .mb { color: #f99b15 } /* Literal.Number.Bin */\n", | |
"body .mf { color: #f99b15 } /* Literal.Number.Float */\n", | |
"body .mh { color: #f99b15 } /* Literal.Number.Hex */\n", | |
"body .mi { color: #f99b15 } /* Literal.Number.Integer */\n", | |
"body .mo { color: #f99b15 } /* Literal.Number.Oct */\n", | |
"body .sb { color: #48b685 } /* Literal.String.Backtick */\n", | |
"body .sc { color: #e7e9db } /* Literal.String.Char */\n", | |
"body .sd { color: #776e71 } /* Literal.String.Doc */\n", | |
"body .s2 { color: #48b685 } /* Literal.String.Double */\n", | |
"body .se { color: #f99b15 } /* Literal.String.Escape */\n", | |
"body .sh { color: #48b685 } /* Literal.String.Heredoc */\n", | |
"body .si { color: #f99b15 } /* Literal.String.Interpol */\n", | |
"body .sx { color: #48b685 } /* Literal.String.Other */\n", | |
"body .sr { color: #48b685 } /* Literal.String.Regex */\n", | |
"body .s1 { color: #48b685 } /* Literal.String.Single */\n", | |
"body .ss { color: #48b685 } /* Literal.String.Symbol */\n", | |
"body .bp { color: #e7e9db } /* Name.Builtin.Pseudo */\n", | |
"body .vc { color: #ef6155 } /* Name.Variable.Class */\n", | |
"body .vg { color: #ef6155 } /* Name.Variable.Global */\n", | |
"body .vi { color: #ef6155 } /* Name.Variable.Instance */\n", | |
"body .il { color: #f99b15 } /* Literal.Number.Integer.Long */\n", | |
"\n", | |
" </style>\n", | |
"</head>\n", | |
"<body>\n", | |
"<h2></h2>\n", | |
"\n", | |
"<div class=\"highlight\"><pre><span></span><span class=\"kt\">int</span> <span class=\"nf\">foo</span><span class=\"p\">()</span> <span class=\"p\">{</span>\n", | |
" <span class=\"n\">cout</span> <span class=\"o\"><<</span> <span class=\"s\">"Hello World!"</span> <span class=\"o\"><<</span> <span class=\"n\">endl</span><span class=\"p\">;</span>\n", | |
"<span class=\"p\">}</span>\n", | |
"</pre></div>\n", | |
"</body>\n", | |
"</html>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "YuqGHTyeDmsG" | |
}, | |
"source": [ | |
"### Compile\n", | |
"You can also compile the source file when writing or appending. Use `-c true` to compile using `g++ -o <filename> <filename.ext>`, where, `<filename>` is file name without extension as specified by `-n` and `<fiename.ext>` is file name with extension as specifed by `-n` option.\n", | |
"\n", | |
"You can give custom build commands via `-c '<compile command>'`. Please note that the compilr command must be enclosed in `'`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "7u8c9VMhDxdg", | |
"outputId": "18fac437-105f-430b-bc94-0db3a7b17cc2", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 103 | |
} | |
}, | |
"source": [ | |
"#@title Refer output of this cell. Double-click to hide source.\n", | |
"%%cpp -n test.cpp -c true -a\n", | |
"\n", | |
"int bar() {\n", | |
" cout << \"This is C++ Plugin.\" << endl;\n", | |
"}" | |
], | |
"execution_count": null, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"\n" | |
], | |
"name": "stdout" | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/html": [ | |
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\n", | |
" \"http://www.w3.org/TR/html4/strict.dtd\">\n", | |
"\n", | |
"<html>\n", | |
"<head>\n", | |
" <title></title>\n", | |
" <meta http-equiv=\"content-type\" content=\"text/html; charset=None\">\n", | |
" <style type=\"text/css\">\n", | |
"td.linenos { background-color: #f0f0f0; padding-right: 10px; }\n", | |
"span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }\n", | |
"pre { line-height: 125%; }\n", | |
"body .hll { background-color: #4f424c }\n", | |
"body .c { color: #776e71 } /* Comment */\n", | |
"body .err { color: #ef6155 } /* Error */\n", | |
"body .k { color: #815ba4 } /* Keyword */\n", | |
"body .l { color: #f99b15 } /* Literal */\n", | |
"body .n { color: #e7e9db } /* Name */\n", | |
"body .o { color: #5bc4bf } /* Operator */\n", | |
"body .p { color: #e7e9db } /* Punctuation */\n", | |
"body .ch { color: #776e71 } /* Comment.Hashbang */\n", | |
"body .cm { color: #776e71 } /* Comment.Multiline */\n", | |
"body .cp { color: #776e71 } /* Comment.Preproc */\n", | |
"body .cpf { color: #776e71 } /* Comment.PreprocFile */\n", | |
"body .c1 { color: #776e71 } /* Comment.Single */\n", | |
"body .cs { color: #776e71 } /* Comment.Special */\n", | |
"body .gd { color: #ef6155 } /* Generic.Deleted */\n", | |
"body .ge { font-style: italic } /* Generic.Emph */\n", | |
"body .gh { color: #e7e9db; font-weight: bold } /* Generic.Heading */\n", | |
"body .gi { color: #48b685 } /* Generic.Inserted */\n", | |
"body .gp { color: #776e71; font-weight: bold } /* Generic.Prompt */\n", | |
"body .gs { font-weight: bold } /* Generic.Strong */\n", | |
"body .gu { color: #5bc4bf; font-weight: bold } /* Generic.Subheading */\n", | |
"body .kc { color: #815ba4 } /* Keyword.Constant */\n", | |
"body .kd { color: #815ba4 } /* Keyword.Declaration */\n", | |
"body .kn { color: #5bc4bf } /* Keyword.Namespace */\n", | |
"body .kp { color: #815ba4 } /* Keyword.Pseudo */\n", | |
"body .kr { color: #815ba4 } /* Keyword.Reserved */\n", | |
"body .kt { color: #fec418 } /* Keyword.Type */\n", | |
"body .ld { color: #48b685 } /* Literal.Date */\n", | |
"body .m { color: #f99b15 } /* Literal.Number */\n", | |
"body .s { color: #48b685 } /* Literal.String */\n", | |
"body .na { color: #06b6ef } /* Name.Attribute */\n", | |
"body .nb { color: #e7e9db } /* Name.Builtin */\n", | |
"body .nc { color: #fec418 } /* Name.Class */\n", | |
"body .no { color: #ef6155 } /* Name.Constant */\n", | |
"body .nd { color: #5bc4bf } /* Name.Decorator */\n", | |
"body .ni { color: #e7e9db } /* Name.Entity */\n", | |
"body .ne { color: #ef6155 } /* Name.Exception */\n", | |
"body .nf { color: #06b6ef } /* Name.Function */\n", | |
"body .nl { color: #e7e9db } /* Name.Label */\n", | |
"body .nn { color: #fec418 } /* Name.Namespace */\n", | |
"body .nx { color: #06b6ef } /* Name.Other */\n", | |
"body .py { color: #e7e9db } /* Name.Property */\n", | |
"body .nt { color: #5bc4bf } /* Name.Tag */\n", | |
"body .nv { color: #ef6155 } /* Name.Variable */\n", | |
"body .ow { color: #5bc4bf } /* Operator.Word */\n", | |
"body .w { color: #e7e9db } /* Text.Whitespace */\n", | |
"body .mb { color: #f99b15 } /* Literal.Number.Bin */\n", | |
"body .mf { color: #f99b15 } /* Literal.Number.Float */\n", | |
"body .mh { color: #f99b15 } /* Literal.Number.Hex */\n", | |
"body .mi { color: #f99b15 } /* Literal.Number.Integer */\n", | |
"body .mo { color: #f99b15 } /* Literal.Number.Oct */\n", | |
"body .sb { color: #48b685 } /* Literal.String.Backtick */\n", | |
"body .sc { color: #e7e9db } /* Literal.String.Char */\n", | |
"body .sd { color: #776e71 } /* Literal.String.Doc */\n", | |
"body .s2 { color: #48b685 } /* Literal.String.Double */\n", | |
"body .se { color: #f99b15 } /* Literal.String.Escape */\n", | |
"body .sh { color: #48b685 } /* Literal.String.Heredoc */\n", | |
"body .si { color: #f99b15 } /* Literal.String.Interpol */\n", | |
"body .sx { color: #48b685 } /* Literal.String.Other */\n", | |
"body .sr { color: #48b685 } /* Literal.String.Regex */\n", | |
"body .s1 { color: #48b685 } /* Literal.String.Single */\n", | |
"body .ss { color: #48b685 } /* Literal.String.Symbol */\n", | |
"body .bp { color: #e7e9db } /* Name.Builtin.Pseudo */\n", | |
"body .vc { color: #ef6155 } /* Name.Variable.Class */\n", | |
"body .vg { color: #ef6155 } /* Name.Variable.Global */\n", | |
"body .vi { color: #ef6155 } /* Name.Variable.Instance */\n", | |
"body .il { color: #f99b15 } /* Literal.Number.Integer.Long */\n", | |
"\n", | |
" </style>\n", | |
"</head>\n", | |
"<body>\n", | |
"<h2></h2>\n", | |
"\n", | |
"<div class=\"highlight\"><pre><span></span><span class=\"kt\">int</span> <span class=\"nf\">bar</span><span class=\"p\">()</span> <span class=\"p\">{</span>\n", | |
" <span class=\"n\">cout</span> <span class=\"o\"><<</span> <span class=\"s\">"This is C++ Plugin."</span> <span class=\"o\"><<</span> <span class=\"n\">endl</span><span class=\"p\">;</span>\n", | |
"<span class=\"p\">}</span>\n", | |
"</pre></div>\n", | |
"</body>\n", | |
"</html>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "wHbDJQVADOVm" | |
}, | |
"source": [ | |
"### Execute" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "4QM92lhcsITU", | |
"outputId": "8afd9350-b3b3-4352-e03b-8840aaf10700", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 52 | |
} | |
}, | |
"source": [ | |
"!./test" | |
], | |
"execution_count": null, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"Hello World!\n", | |
"This is C++ Plugin.\n" | |
], | |
"name": "stdout" | |
} | |
] | |
} | |
] | |
} |
import subprocess | |
import os | |
from IPython.core.magic import Magics, cell_magic, magics_class | |
from IPython.core.magic_arguments import argument, magic_arguments, parse_argstring | |
from pygments import highlight | |
from pygments.lexers import CppLexer | |
from pygments.formatters import HtmlFormatter | |
from IPython.display import display, HTML | |
def print_out(out: str): | |
for l in out.split('\n'): | |
print(l) | |
def displayHTML(html_code): | |
''' | |
Display HTML in notebook | |
''' | |
display(HTML(html_code)) | |
@magics_class | |
class CPP(Magics): | |
@staticmethod | |
def compile(src, out): | |
compiler = 'g++' | |
res = subprocess.check_output( | |
[compiler, "-o", out, src], stderr=subprocess.STDOUT) | |
print_out(res.decode("utf8")) | |
@staticmethod | |
def custom_compile(arg_list): | |
res = subprocess.check_output( | |
arg_list, stderr=subprocess.STDOUT) | |
print_out(res.decode("utf8")) | |
@magic_arguments() | |
@argument('-n', '--name', type=str, help='File name that will be produced by the cell.') | |
@argument('-c', '--compile', type=str, help='Compile command. Use true for default command or specify command in single quotes.') | |
@argument('-a', '--append', help='Should be appended to same file', action="store_true") | |
@argument('-s', '--style', type=str, help='Pygments style name') | |
@cell_magic | |
def cpp(self, line='', cell=None): | |
''' | |
C++ syntax highlighting cell magic. | |
''' | |
global style | |
args = parse_argstring(self.cpp, line) | |
if args.name != None: | |
ex = args.name.split('.')[-1] | |
if ex not in ['c', 'cpp', 'h', 'hpp']: | |
raise Exception('Name must end with .cpp, .c, .hpp, or .h') | |
else: | |
args.name = 'src.cpp' | |
if args.append: | |
mode = "a" | |
else: | |
mode = "w" | |
with open(args.name, mode) as f: | |
f.write(cell) | |
if args.compile != None: | |
try: | |
if args.compile == 'true': | |
self.compile(args.name, args.name.split('.')[0]) | |
else: | |
self.custom_compile(args.compile.replace("'", "").split(' ')) | |
except subprocess.CalledProcessError as e: | |
print_out(e.output.decode("utf8")) | |
if args.style == None: | |
displayHTML(highlight(cell, CppLexer(), HtmlFormatter(full=True,nobackground=True,style='paraiso-dark'))) | |
else: | |
displayHTML(highlight(cell, CppLexer(), HtmlFormatter(full=True,nobackground=True,style=args.style))) | |
def load_ipython_extension(ip): | |
os.system('pip install pygments ipywidgets') | |
plugin = CPP(ip) | |
ip.register_magics(plugin) |
Thanks for sharing your gist. I was able to adapt it for Colab for Kotlin as the Kotlin kernel by Jetbrains doesn't work and syntax highlighting doesn't work either for Colab out of the box. So I now have syntax highlighting for Kotlin!! Otherwise to suppress weird syntax error highlighting had to use workaround use %%writefile or %%script magics
I figure it's good to have a record of code that is runnable. I find it interesting that Google's Kotlin tutorials uses Kotlin Playground which doesn't show the compiling under the hood which previous commenter wasn't happy re this gist for c++, c, java...
If you are doing a lot of code this plugin is useful to save time.
Thanks for sharing your gist. I was able to adapt it for Colab for Kotlin as the Kotlin kernel by Jetbrains doesn't work and syntax highlighting doesn't work either for Colab out of the box. So I now have syntax highlighting for Kotlin!! Otherwise to suppress weird syntax error highlighting had to use workaround use %%writefile or %%script magics
I figure it's good to have a record of code that is runnable. I find it interesting that Google's Kotlin tutorials uses Kotlin Playground which doesn't show the compiling under the hood which previous commenter wasn't happy re this gist for c++, c, java...
If you are doing a lot of code this plugin is useful to save time.
I am glad that this helped you.
If we want to run c++ or c, or java program on google colab , we can quickly run on it. Would you please follow this article that gives the best idea to run the program on google colab.
https://debuggingsolution.blogspot.com/2021/10/run-c-program-in-google-colab.html