Show More
@@ -96,6 +96,10 b" ESC_QUOTE = ',' # Split args on whitespace, quote each as string and call" | |||||
96 | ESC_QUOTE2 = ';' # Quote all args as a single string, call |
|
96 | ESC_QUOTE2 = ';' # Quote all args as a single string, call | |
97 | ESC_PAREN = '/' # Call first argument with rest of line as arguments |
|
97 | ESC_PAREN = '/' # Call first argument with rest of line as arguments | |
98 |
|
98 | |||
|
99 | ESC_SEQUENCES = [ESC_SHELL, ESC_SH_CAP, ESC_HELP ,\ | |||
|
100 | ESC_HELP2, ESC_MAGIC, ESC_MAGIC2,\ | |||
|
101 | ESC_QUOTE, ESC_QUOTE2, ESC_PAREN ] | |||
|
102 | ||||
99 | #----------------------------------------------------------------------------- |
|
103 | #----------------------------------------------------------------------------- | |
100 | # Utilities |
|
104 | # Utilities | |
101 | #----------------------------------------------------------------------------- |
|
105 | #----------------------------------------------------------------------------- |
@@ -5,7 +5,7 b'' | |||||
5 | #----------------------------------------------------------------------------- |
|
5 | #----------------------------------------------------------------------------- | |
6 |
|
6 | |||
7 | # Standard library imports |
|
7 | # Standard library imports | |
8 | from os.path import commonprefix |
|
8 | import os.path | |
9 | import re |
|
9 | import re | |
10 | import sys |
|
10 | import sys | |
11 | from textwrap import dedent |
|
11 | from textwrap import dedent | |
@@ -16,6 +16,7 b' from IPython.external.qt import QtCore, QtGui' | |||||
16 |
|
16 | |||
17 | # Local imports |
|
17 | # Local imports | |
18 | from IPython.config.configurable import LoggingConfigurable |
|
18 | from IPython.config.configurable import LoggingConfigurable | |
|
19 | from IPython.core.inputsplitter import ESC_SEQUENCES | |||
19 | from IPython.frontend.qt.rich_text import HtmlExporter |
|
20 | from IPython.frontend.qt.rich_text import HtmlExporter | |
20 | from IPython.frontend.qt.util import MetaQObjectHasTraits, get_font |
|
21 | from IPython.frontend.qt.util import MetaQObjectHasTraits, get_font | |
21 | from IPython.utils.text import columnize |
|
22 | from IPython.utils.text import columnize | |
@@ -26,10 +27,32 b' from completion_html import CompletionHtml' | |||||
26 | from completion_plain import CompletionPlain |
|
27 | from completion_plain import CompletionPlain | |
27 | from kill_ring import QtKillRing |
|
28 | from kill_ring import QtKillRing | |
28 |
|
29 | |||
|
30 | ||||
29 | #----------------------------------------------------------------------------- |
|
31 | #----------------------------------------------------------------------------- | |
30 | # Functions |
|
32 | # Functions | |
31 | #----------------------------------------------------------------------------- |
|
33 | #----------------------------------------------------------------------------- | |
32 |
|
34 | |||
|
35 | def commonprefix(items): | |||
|
36 | """Given a list of pathnames, returns the longest common leading component | |||
|
37 | ||||
|
38 | Same function as os.path.commonprefix, but don't considere prefix made of | |||
|
39 | special caracters like #!$%... see | |||
|
40 | ||||
|
41 | IPython.core.inputsplitter import ESC_SEQUENCES | |||
|
42 | """ | |||
|
43 | # the last item will always have the least leading % symbol | |||
|
44 | prefixes = ''.join(ESC_SEQUENCES) | |||
|
45 | get_prefix = lambda x : x[0:-len(x.lstrip(prefixes))] | |||
|
46 | # min / max are first/last in alphabetical order | |||
|
47 | first_prefix = get_prefix(min(items)) | |||
|
48 | last_prefix = get_prefix(max(items)) | |||
|
49 | ||||
|
50 | # common suffix is (common prefix of reversed items) reversed | |||
|
51 | prefix = os.path.commonprefix((first_prefix[::-1], last_prefix[::-1]))[::-1] | |||
|
52 | ||||
|
53 | items = [ s.lstrip(prefixes) for s in items ] | |||
|
54 | return prefix+os.path.commonprefix(items) | |||
|
55 | ||||
33 | def is_letter_or_number(char): |
|
56 | def is_letter_or_number(char): | |
34 | """ Returns whether the specified unicode character is a letter or a number. |
|
57 | """ Returns whether the specified unicode character is a letter or a number. | |
35 | """ |
|
58 | """ |
General Comments 0
You need to be logged in to leave comments.
Login now