Updating rename refactoring tests.
Adding more information when console fails to connect to spawned process (i.e.: command line and environment used).
Making startup of Jython asynchronous so lazier so that the bundle starts up as fast as possible.
Fix for: #PyDev-246: The interpreter configured does not exist in the filesystem: python
Improving rename refactoring.
Fixed issue where multiple compiled modules could end up being created for the same module.
Removed print.
Ctrl+F9 with test selected will pre-select that test / added missing messages on search / tree search will make exact match when there's a space in the end.
Selecting text and right-clicking > run as unit-test will run only the selected unit-test.
Fixed issue which could make the debugger stop if a command raised some error (and fixed issue where a breakpoint could become invalid).
Preparing for release 3.1.0
AHLRAP-1435 Ensure that a new-line is sent when initializing the
console.
Only examine the current cell when deciding how much to indent the next line
AHLRAP-1467 Fix IPython console completion pop-up on all characters

The completion calculator caches the characters which trigger a
completion ('.', or [a-zA-Z]) based on the user preference, and whether
there is more than one completion processor registered.

The console calls the API with 0, as the number of completion
processors. The editor calls it with the number of processors specified.
 The result is inconsistent caching depending on which is called first.

This makes the cache behave consistently for the specified preference.
It's possible that there are SimpleAssistProcessors that would no longer
be invoked for every character, but, AFAICS this would only affects the
template processor, and that seems to work correctly after this change.

Change-Id: Ie6ab792fbef093b9396ef84b9d7a6a07b8edecc5
Enable F1 as a keystroke to submit editor code line-by-line to the script console

AHLRAP-1070 Merging in work to date with PyDev 2.3.0 master

Initial F1 work.

Change-Id: I6530e3d3b074688235b7d9059d38358129f99f7d

AHLRAP-1070 Merging in John Nolan's changes to fix console buffering.

Change-Id: I5564e8689d5951bd2a2fe4a96c2ecb86d3b13232

AHLRAP-1371 AHLRAP-1366 Fixes to F1 Console submission

This is a squash of 5 commits.

This is a fix for AHLRAP-1373 'If you change the console too often, F1
stops working'. The problem was that the exec line in shell module would
raise an exception if an appropriate console was not available for
command submission. Once the module had the raised exception, I guess
eclipse doesn't reinitialise it again so one needs to restart PyDev to
get F1 functionality back.

I fixed this by merely using a try-except block to catch any exceptions.

AHLRAP-1371 AHLRAP-1366 Fixes to F1 Console submission

This patch carries a few changes:

- Fix for AHLRAP-1371: When the Scripting Console was visible, the code
submission would send the code to a view only window and this resulted
in an unhandled exception. This exception broke the script and it
wouldn't work again. The change I have made fixes this by handling the
exception; but also raising a console window so the code can be
submitted.

- Fix for AHLRAP-1366: When stepping through the code using F1, when the
user reaches the end of the file, we don't want to wrap around to the
beginning. It makes no sense to jump all the way back to the import
statements once the module is done running. This fix was done by
changing how the goto_next_line functions works. It now returns a
boolean for whether or not is actually moved to the next line.

- Changing some function names to use pythonic_naming_style rather than
javaNamingStyle.

- Some basic dead code removal.

- There is a lot of code that could be tidied up here, but I have
refrained from going carte blanche and renaming all functions which are
not called externally to have a _prefix; or removing comments and
replacing them with extensive docstrings. This module could use some
love.

Cosmetic changes.

- Renamed variables to reflect their privacy.

- Added some meagre documentation.

Removed re-raise which was incorrectly commited previously.

Protect from F1 submission when no Console is set.

James Blackburn found that when the Scripting Console is set
and a file is opened, and F1 is hit, an exception was thrown as
no Console was found. Unfortunately, the IConsoleView doesn't
appear to provide a way to find anything but the top of the
IConsole list; so I've just protected it now.

Also, to aid readability, I've inverted some if statements to
return and reduced the nesting level for _get_console_parts and
_show_console.

AHLRAP-1366 - Fixed the F1 loop around

This is a subsequent fix to the previous commit now using the
last_line calculated from the document.

AHLRAP-1366 - Do not iterate through file when no Console is available.

Change-Id: Ic190b8b51110fa764dbbcd7f32f4d9fc006e6f15

AHLRAP-1373 - Rejig the F1 console resolution using ConsoleManager

James Blackburn pointed me at the ConsoleManager for resolving the current console.
This simplified the code dramatically and made it more robust for corner cases.

AHLRAP-1375 Make F1 work with indented lines.

Change-Id: I67853956e57b32170ea1e7d0534bd762f5f01861

AHLRAP-1509 Handle block continuation ; else ; elif ; finally ; except

Change-Id: I2f0da9ae5943d962edbfe8614286bfb6e6ca5d4a

AHLRAP-2286 Incorrect behaviour when F1'ing a block of code

Use the IPytho Input Splitter to chop input, rather than hacky custom code.

Change-Id: Ic6ae39c91b8d96f3c56aa0e1821ecb2e7a75fd7c

Implement F1 block mode using F1 line-by-line mode, this way we'll have
consistent behaviour between the two modes.

Do nothing if the user does F1 on a comment
AHLRAP-1430 Buffering problem in PyDev

This substantial change rewrites a considerable amount of code to
provide an asynchronous stream for the ScriptConsoleDocumentListener to
listen to as events rather than some ad hoc event loop distributed
between several files.

This is done by providing a few new interfaces and implementations for
asynchronous stream reading and monitoring. To wit: StreamReader<..>
will listen to the Streams from stdout and stderr and add them to a
BlockingQueue. IStreamMonitor (concretely ThreadedStreamMonitor) will
listen to the same BlockingQueue and notify listeners of the new stream
inputs. Finally, the ScriptConsoleDocumentListener is not an
IStreamListener and implements the onStream message and this will add
the text to the console after some judicious prompt manipulation.

I've demonstrated this code to James, Den, and Ed and shown how it
works.

TODO: cleanup old code which I left in as stubs to remind me where the
old code was pulling stdout and stderr in case this gave me some clues
on how to tweak some corner cases. I didn't appear to need them so I can
remove some of that code and perhaps rejig the aforementioned
distributed event loop to be much cleaner.

TODO: Rewrite the addToConsoleView function so it can insert
asynchronous text above the prompt rather than erasing the prompt and
replacing it.

Change-Id: I49063e5e502ab92a87fe9edf928261b583a9e12b

AHLRAP-999 Performance there really is no need to spawn a new OS thread
for every line sent to the console.

Change-Id: Ied50122a7600b359f7bef5ee4dc7f32669810457

Collect console output for display if hello fails

Only start the stream monitor once we have a listener - means that we
don't lose any output and simplifies the error case

Change-Id: I945d6df0456591423021f8c49c08a6e5b248a10f
AHLRAP-1492 First cut of tab completion in the IPython console

Main entrance point in the ScriptConsoleViewer.  Completions flow
through to the pydev console backend.  For tab-completion, we use the
pure ipython backend.

The magic 'cd' is handled specially, though perhaps in the future, the
completions interface can be beefed up such that eclipse is aware which
part of the string ipython has used to make the completion.
Change-Id: Iccaadcea0509413c9ff5fffcee622fdc14aabcda

AHLRAP-1492 Add a preference to disable tab completion in interactive
console

Change-Id: Id4dfee66e83f3867add8a769d65fde3024ed46f8

AHLRAP-2256 Tab completion thread-safety.

Don't allow multiple tab-completions to happen concurrently.  The result
is unpredictable wrapping.

Change-Id: I7c1c36f1237537c2115fb44a0821fbf11009224e

Get tab completion working

Exclude hidden completions and strip function argument lists
AHLRAP-1232 - Allow sending ctrl-C (SIGINT) to running Python process

New interrupt button on the console which sends a SIGINT (ctrl-C) signal
to the Python shell allowing interrupting of long-running python
tasks.

Change-Id: I353e526fc97407d0558bda72d968f27378266e0b

AHLRAP-2127 PyDev console appears to get stuck on "..." input
continuation prompt

Make the Yellow-button clear any accumulated console input, and send a
new-line to show the user that something has happened.

Change-Id: I84d254232216a9c86ade594ca2cd6b66eb1f2070

Fix interrupt icon

Discard current command line contents on interrupt

Make interrupt code cross-platform compatible

Fix access to shell object

ensure main thread is traced
Make IPython console more like a real IPython and friendlier for doctests
Report IPython version to stderr