Example notebook can be found here.
-
-
Save iiey/fce06e4b0d1df69c16eb3680f7d0acd2 to your computer and use it in GitHub Desktop.
C++ Google Colab Plugin
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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" | |
} | |
] | |
} | |
] | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment