mirror of
https://github.com/IHaskell/IHaskell.git
synced 2025-04-16 03:16:20 +00:00
Fixing kernelspec, removing traces of profile
This commit is contained in:
parent
bb907baf0a
commit
7a4f8e9676
10
build.sh
10
build.sh
@ -13,14 +13,8 @@ fi
|
||||
# What to install.
|
||||
INSTALLS=""
|
||||
|
||||
# Make the profile
|
||||
cd profile
|
||||
rm -f profile.tar
|
||||
tar -cvf profile.tar * .profile_version
|
||||
cd ..
|
||||
|
||||
# Remove my profile
|
||||
rm -rf ~/.ipython/profile_haskell
|
||||
# Remove my kernelspec
|
||||
rm -rf ~/.ipython/kernels/haskell
|
||||
|
||||
# Compile dependencies.
|
||||
if [ $# -gt 0 ]; then
|
||||
|
138
html/kernel.js
138
html/kernel.js
@ -1,73 +1,83 @@
|
||||
$([IPython.events]).on('app_initialized.NotebookApp', function(){
|
||||
// add here logic that shoudl be run once per **page load**
|
||||
// like adding specific UI, or changing the default value
|
||||
// of codecell highlight.
|
||||
|
||||
// Set tooltips to be triggered after 800ms
|
||||
IPython.tooltip.time_before_tooltip = 800;
|
||||
console.log('Kernel haskell kernel.js is loading.');
|
||||
|
||||
// IPython keycodes.
|
||||
var space = 32;
|
||||
var downArrow = 40;
|
||||
IPython.keyboard.keycodes.down = downArrow; // space
|
||||
require(['require',
|
||||
'codemirror/lib/codemirror',
|
||||
'codemirror/addon/mode/loadmode',
|
||||
'base/js/namespace',
|
||||
'base/js/events',
|
||||
'base/js/utils'],
|
||||
function(require, CodeMirror, CodemirrorLoadmode, IPtyhon, events, utils){
|
||||
|
||||
IPython.CodeCell.options_default['cm_config']['mode'] = 'haskell';
|
||||
|
||||
CodeMirror.requireMode('haskell', function(){
|
||||
// Create a multiplexing mode that uses Haskell highlighting by default but
|
||||
// doesn't highlight command-line directives.
|
||||
CodeMirror.defineMode("ihaskell", function(config) {
|
||||
return CodeMirror.multiplexingMode(
|
||||
CodeMirror.getMode(config, "haskell"),
|
||||
{
|
||||
open: /:(?=!)/, // Matches : followed by !, but doesn't consume !
|
||||
close: /^(?!!)/, // Matches start of line not followed by !, doesn't consume character
|
||||
mode: CodeMirror.getMode(config, "text/plain"),
|
||||
delimStyle: "delimit"
|
||||
}
|
||||
);
|
||||
});
|
||||
events.on('app_initialized.NotebookApp', function(){
|
||||
// add here logic that shoudl be run once per **page load**
|
||||
// like adding specific UI, or changing the default value
|
||||
// of codecell highlight.
|
||||
|
||||
cells = IPython.notebook.get_cells();
|
||||
for(var i in cells){
|
||||
c = cells[i];
|
||||
if (c.cell_type === 'code') {
|
||||
// Force the mode to be Haskell
|
||||
// This is necessary, otherwise sometimes highlighting just doesn't happen.
|
||||
// This may be an IPython bug.
|
||||
c.code_mirror.setOption('mode', 'ihaskell');
|
||||
// Set tooltips to be triggered after 800ms
|
||||
IPython.tooltip.time_before_tooltip = 800;
|
||||
|
||||
c.auto_highlight()
|
||||
}
|
||||
}
|
||||
});
|
||||
// IPython keycodes.
|
||||
var space = 32;
|
||||
var downArrow = 40;
|
||||
IPython.keyboard.keycodes.down = downArrow; // space
|
||||
|
||||
// Prevent the pager from surrounding everything with a <pre>
|
||||
IPython.Pager.prototype.append_text = function (text) {
|
||||
this.pager_element.find(".container").append($('<div/>').html(IPython.utils.autoLinkUrls(text)));
|
||||
};
|
||||
});
|
||||
IPython.CodeCell.options_default['cm_config']['mode'] = 'haskell';
|
||||
|
||||
$([IPython.events]).on('shell_reply.Kernel', function() {
|
||||
// Add logic here that should be run once per reply.
|
||||
utils.requireCodeMirrorMode('haskell', function(){
|
||||
// Create a multiplexing mode that uses Haskell highlighting by default but
|
||||
// doesn't highlight command-line directives.
|
||||
CodeMirror.defineMode("ihaskell", function(config) {
|
||||
return CodeMirror.multiplexingMode(
|
||||
CodeMirror.getMode(config, "haskell"),
|
||||
{
|
||||
open: /:(?=!)/, // Matches : followed by !, but doesn't consume !
|
||||
close: /^(?!!)/, // Matches start of line not followed by !, doesn't consume character
|
||||
mode: CodeMirror.getMode(config, "text/plain"),
|
||||
delimStyle: "delimit"
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
// Highlight things with a .highlight-code class
|
||||
// The id is the mode with with to highlight
|
||||
$('.highlight-code').each(function() {
|
||||
var $this = $(this),
|
||||
$code = $this.html(),
|
||||
$unescaped = $('<div/>').html($code).text();
|
||||
|
||||
$this.empty();
|
||||
cells = IPython.notebook.get_cells();
|
||||
for(var i in cells){
|
||||
c = cells[i];
|
||||
if (c.cell_type === 'code') {
|
||||
// Force the mode to be Haskell
|
||||
// This is necessary, otherwise sometimes highlighting just doesn't happen.
|
||||
// This may be an IPython bug.
|
||||
c.code_mirror.setOption('mode', 'ihaskell');
|
||||
c.auto_highlight();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Never highlight this block again.
|
||||
this.className = "";
|
||||
|
||||
CodeMirror(this, {
|
||||
value: $unescaped,
|
||||
mode: this.id,
|
||||
lineNumbers: false,
|
||||
readOnly: true
|
||||
// Prevent the pager from surrounding everything with a <pre>
|
||||
IPython.Pager.prototype.append_text = function (text) {
|
||||
this.pager_element.find(".container").append($('<div/>').html(IPython.utils.autoLinkUrls(text)));
|
||||
};
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
events.on('shell_reply.Kernel', function() {
|
||||
// Add logic here that should be run once per reply.
|
||||
|
||||
// Highlight things with a .highlight-code class
|
||||
// The id is the mode with with to highlight
|
||||
$('.highlight-code').each(function() {
|
||||
var $this = $(this),
|
||||
$code = $this.html(),
|
||||
$unescaped = $('<div/>').html($code).text();
|
||||
|
||||
$this.empty();
|
||||
|
||||
// Never highlight this block again.
|
||||
this.className = "";
|
||||
|
||||
CodeMirror(this, {
|
||||
value: $unescaped,
|
||||
mode: this.id,
|
||||
lineNumbers: false,
|
||||
readOnly: true
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
File diff suppressed because one or more lines are too long
@ -6,6 +6,7 @@
|
||||
-- @console@ commands.
|
||||
module IHaskell.IPython (
|
||||
withIPython,
|
||||
replaceIPythonKernelspec,
|
||||
runConsole,
|
||||
runNotebook,
|
||||
readInitInfo,
|
||||
@ -142,9 +143,14 @@ withIPython :: IO a -> IO a
|
||||
withIPython act = shelly $ do
|
||||
verifyIPythonVersion
|
||||
kernelspecExists <- kernelSpecCreated
|
||||
unless kernelspecExists installKernelspec
|
||||
unless kernelspecExists $ installKernelspec False
|
||||
liftIO act
|
||||
|
||||
replaceIPythonKernelspec :: IO ()
|
||||
replaceIPythonKernelspec = shelly $ do
|
||||
verifyIPythonVersion
|
||||
installKernelspec True
|
||||
|
||||
-- | Verify that a proper version of IPython is installed and accessible.
|
||||
verifyIPythonVersion :: Sh ()
|
||||
verifyIPythonVersion = do
|
||||
@ -168,8 +174,8 @@ verifyIPythonVersion = do
|
||||
|
||||
-- | Install an IHaskell kernelspec into the right location.
|
||||
-- The right location is determined by using `ipython kernelspec install --user`.
|
||||
installKernelspec :: Sh ()
|
||||
installKernelspec = void $ do
|
||||
installKernelspec :: Bool -> Sh ()
|
||||
installKernelspec replace = void $ do
|
||||
ihaskellPath <- getIHaskellPath
|
||||
let kernelSpec = KernelSpec {
|
||||
kernelDisplayName = "Haskell",
|
||||
@ -191,7 +197,9 @@ installKernelspec = void $ do
|
||||
cp (fpFromString src) (tmp </> kernelName </> fpFromString file)
|
||||
|
||||
Just ipython <- which "ipython"
|
||||
silently $ run ipython ["kernelspec", "install", "--user", fpToText kernelDir]
|
||||
let replaceFlag = ["--replace" | replace]
|
||||
cmd = ["kernelspec", "install", "--user", fpToText kernelDir] ++ replaceFlag
|
||||
silently $ run ipython cmd
|
||||
|
||||
kernelSpecCreated :: Sh Bool
|
||||
kernelSpecCreated = do
|
||||
|
@ -63,7 +63,7 @@ main = do
|
||||
ihaskell :: Args -> IO ()
|
||||
ihaskell (Args (ShowHelp help) _) = putStrLn $ pack help
|
||||
ihaskell (Args ConvertLhs args) = showingHelp ConvertLhs args $ convert args
|
||||
ihaskell (Args InstallKernelSpec _) = withIPython $ return ()
|
||||
ihaskell (Args InstallKernelSpec args) = showingHelp InstallKernelSpec args replaceIPythonKernelspec
|
||||
ihaskell (Args Console flags) = showingHelp Console flags $ do
|
||||
putStrLn consoleBanner
|
||||
withIPython $ do
|
||||
|
Loading…
x
Reference in New Issue
Block a user