Show More
@@ -6,16 +6,17 b' import sys' | |||
|
6 | 6 | import uuid |
|
7 | 7 | |
|
8 | 8 | # System library imports |
|
9 | from pygments.lexers import PythonLexer | |
|
10 | 9 | from IPython.external import qt |
|
11 | 10 | from IPython.external.qt import QtCore, QtGui |
|
11 | from IPython.utils import py3compat | |
|
12 | from IPython.utils.importstring import import_item | |
|
12 | 13 | |
|
13 | 14 | # Local imports |
|
14 | 15 | from IPython.core.inputsplitter import InputSplitter, IPythonInputSplitter |
|
15 | 16 | from IPython.core.inputtransformer import classic_prompt |
|
16 | 17 | from IPython.core.oinspect import call_tip |
|
17 | 18 | from IPython.qt.base_frontend_mixin import BaseFrontendMixin |
|
18 | from IPython.utils.traitlets import Bool, Instance, Unicode | |
|
19 | from IPython.utils.traitlets import Any, Bool, Instance, Unicode, DottedObjectName | |
|
19 | 20 | from .bracket_matcher import BracketMatcher |
|
20 | 21 | from .call_tip_widget import CallTipWidget |
|
21 | 22 | from .completion_lexer import CompletionLexer |
@@ -27,8 +28,8 b' class FrontendHighlighter(PygmentsHighlighter):' | |||
|
27 | 28 | """ A PygmentsHighlighter that understands and ignores prompts. |
|
28 | 29 | """ |
|
29 | 30 | |
|
30 | def __init__(self, frontend): | |
|
31 | super(FrontendHighlighter, self).__init__(frontend._control.document()) | |
|
31 | def __init__(self, frontend, lexer=None): | |
|
32 | super(FrontendHighlighter, self).__init__(frontend._control.document(), lexer=lexer) | |
|
32 | 33 | self._current_offset = 0 |
|
33 | 34 | self._frontend = frontend |
|
34 | 35 | self.highlighting_on = False |
@@ -101,6 +102,24 b' class FrontendWidget(HistoryConsoleWidget, BaseFrontendMixin):' | |||
|
101 | 102 | confirm_restart = Bool(True, config=True, |
|
102 | 103 | help="Whether to ask for user confirmation when restarting kernel") |
|
103 | 104 | |
|
105 | lexer_class = DottedObjectName(config=True, | |
|
106 | help="The pygments lexer class to use." | |
|
107 | ) | |
|
108 | def _lexer_class_changed(self, name, old, new): | |
|
109 | lexer_class = import_item(new) | |
|
110 | self.lexer = lexer_class() | |
|
111 | ||
|
112 | def _lexer_class_default(self): | |
|
113 | if py3compat.PY3: | |
|
114 | return 'pygments.lexers.Python3Lexer' | |
|
115 | else: | |
|
116 | return 'pygments.lexers.PythonLexer' | |
|
117 | ||
|
118 | lexer = Any() | |
|
119 | def _lexer_default(self): | |
|
120 | lexer_class = import_item(self.lexer_class) | |
|
121 | return lexer_class() | |
|
122 | ||
|
104 | 123 | # Emitted when a user visible 'execute_request' has been submitted to the |
|
105 | 124 | # kernel from the FrontendWidget. Contains the code to be executed. |
|
106 | 125 | executing = QtCore.Signal(object) |
@@ -141,10 +160,10 b' class FrontendWidget(HistoryConsoleWidget, BaseFrontendMixin):' | |||
|
141 | 160 | # FrontendWidget protected variables. |
|
142 | 161 | self._bracket_matcher = BracketMatcher(self._control) |
|
143 | 162 | self._call_tip_widget = CallTipWidget(self._control) |
|
144 |
self._completion_lexer = CompletionLexer( |
|
|
163 | self._completion_lexer = CompletionLexer(self.lexer) | |
|
145 | 164 | self._copy_raw_action = QtGui.QAction('Copy (Raw Text)', None) |
|
146 | 165 | self._hidden = False |
|
147 | self._highlighter = FrontendHighlighter(self) | |
|
166 | self._highlighter = FrontendHighlighter(self, lexer=self.lexer) | |
|
148 | 167 | self._input_splitter = self._input_splitter_class() |
|
149 | 168 | self._kernel_manager = None |
|
150 | 169 | self._kernel_client = None |
General Comments 0
You need to be logged in to leave comments.
Login now