Désactiver la fermeture automatique des parenthèses dans ipython

Je rest à jour avec la twig dev de ipython (car ipython est à peu près la chose la plus impressionnante). Assez récemment (avant la sortie de l’ipython 2.0 d’hier), j’ai remarqué qu’il avait commencé à fermer automatiquement les parenthèses, les parenthèses, les guillemets, etc. Cela se produit à la fois dans les terminaux (rien d’autre que j’utilise dans les terminaux) et dans les ordinateurs portables, donc je suppose que c’était un choix intentionnel de la part des développeurs. Je peux respecter le fait que d’autres personnes pourraient aimer cette fonctionnalité, mais cela me rend complètement fou .

Je ne trouve aucune option pour cela dans les fichiers de configuration. Je ne peux même pas google pour ça, parce que je ne sais pas comment ça s’appelle. La seule chose qui se présente est la caractéristique différente des parenthèses automatiques . J’ai effectivement trouvé cette question , mais c’est vieux et suggère que le comportement que je vois ne peut pas arriver.

Comment puis-je désactiver cette fonctionnalité?

[J’utilise surtout l’interface de l’ordinateur portable, donc il suffit de l’éteindre, mais je préférerais l’éteindre dans les ordinateurs portables et les sessions ipython du terminal.]

La réponse de @minrk est la viande et les os du correctif, mais vous devrez l’envelopper dans un rappel d’initialisation, au moins avec IPython-3.1.0 . Dans votre custom.js :

 require(['base/js/namespace', 'base/js/events'], function(IPython, events) { events.on('app_initialized.NotebookApp', function() { IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false; }); }); 

Merci @Mike pour votre commentaire sur le chargement de dépendance RequireJS d’IPython et le pointeur vers une meilleure formulation sur IPython / Jupyter lors de l’installation des extensions .

Modifier pour Jupyter 4.0.x :

L’implémentation actuelle d’ordinateurs portables IPython, Jupyter 4.0.0, a remodelé les personnalisations JS. Il utilise maintenant ~/.jupyter/custom/custom.js par défaut, et vous devrez remplacer l’intégralité require(... events.on(...)) par les éléments suivants:

 IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false; 

De même, si vous voulez utiliser jQuery pour manipuler quoi que ce soit, utilisez directement le jQuery global. Par exemple, j’aime masquer l’en-tête fixe par défaut, ce qui me donne un espace supplémentaire de 40px pour mon code, que je trouve un peu plus précieux que de regarder le logo Jupyter tout le temps:

 jQuery('#header-container').hide(); 

Le comportement du bloc-notes est le résultat du plug- in CodeMirror autoCloseBrackets . Vous pouvez désactiver ceci en éditant (créez-le avec le ipython profile create si vous ne l’avez pas déjà fait) ~/.ipython/profile_default/static/custom/custom.js et en ajoutant:

 if (IPython.CodeCell) { IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false; } 

Quant au terminal, je ne vois pas le comportement des parenthèses que vous décrivez. Avez-vous peut-être défini un PYTHONSTARTUP? IPython exécute ce fichier par défaut, que vous pouvez désactiver en ajoutant à ~/.ipython/profile_default/ipython_config.py :

 c.InteractiveShellApp.exec_PYTHONSTARTUP = False 

C’est ce qui fonctionne pour moi dans Jupyter 4.0.6:

 require(['notebook/js/codecell'], function (codecell) { codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false; }) 

dans ~/.jupyter/custom/custom.js .

BTW, Si vous souhaitez également désactiver la mise en évidence de la syntaxe des parenthèses correspondantes:

 codecell.CodeCell.options_default.cm_config.matchBrackets = false; 

Si vous voulez le faire juste de python:

 from notebook.services.config import ConfigManager c = ConfigManager() c.update('notebook', {"CodeCell": {"cm_config": {"autoCloseBrackets": False}}}) 

Les suggestions ci-dessus n’ont pas fonctionné pour moi dans Jupyter 4.3.0 avec Jupyter Notebook 5.0.0

J’ai trouvé que je devais créer un fichier appelé ~/.jupyter/custom/custom.js avec le contenu suivant:

 var cell = Jupyter.notebook.get_selected_cell(); var patch = { CodeCell: { cm_config: { autoCloseBrackets: false, } } } cell.config.update(patch); 

Notez que le répertoire ~/.juypter/custom n’existait pas avant de le faire.

Cela a été piraté à partir de suggestions dans la documentation de la version 5.0 , et pour les futurs lecteurs, ce sont les dernières

Pour Jupyter Notebook 5.1, utilisez la même chose que pour 4.2, c’est-à-dire mettez l’extrait suivant dans ~ / .jupyter / custom / custom.js:

 require(['notebook/js/codecell'], function (codecell) { codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false; }) 

J’ai trouvé que ce n’était pas mentionné dans d’autres réponses. Dans mon cas (OS X, Jupyter 4.2.0), custom.js se trouve dans ~ / anaconda / lib / python3.5 / site-packages / notebook / static / custom / custom.js

Je pense que cela peut aider quelqu’un comme moi.

Dans le Jupyter Lab Notebook, vous pouvez désactiver le autoClosingBrackets in autoClosingBrackets dans le menu des parameters. Accédez à Settings --> Advanced Settings Editor et ajoutez ce qui suit dans la section User Overrides :

 { "codeCellConfig": { "autoClosingBrackets": false } } 

Capture d’écran image

Cela a fonctionné avec JupyterLab 0.32.1 et jupyter_core 4.4.0