def _create_repl(self): cmd = self.executable if 'octave-cli' not in cmd: version_cmd = [self.executable, '--version'] version = subprocess.check_output(version_cmd).decode('utf-8') if 'version 4' in version: cmd += ' --no-gui' # Interactive mode prevents crashing on Windows on syntax errors. # Delay sourcing the "~/.octaverc" file in case it displays a pager. cmd += ' --interactive --quiet --no-init-file ' # Add cli options provided by the user. cmd += os.environ.get('OCTAVE_CLI_OPTIONS', self.cli_options) orig_prompt = u('octave.*>') change_prompt = u("PS1('{0}'); PS2('{1}')") repl = REPLWrapper(cmd, orig_prompt, change_prompt, stdin_prompt_regex=STDIN_PROMPT_REGEX, force_prompt_on_continuation=True) if os.name == 'nt': repl.child.crlf = '\n' repl.interrupt = self._interrupt # Remove the default 50ms delay before sending lines. repl.child.delaybeforesend = None return repl
def _interrupt(self, silent=False): if (os.name == 'nt'): msg = '** Warning: Cannot interrupt Octave on Windows' if self.stream_handler: self.stream_handler(msg) elif self.logger: self.logger.warn(msg) return self._interrupt_expect(silent) return REPLWrapper.interrupt(self.repl)
def _interrupt(self, continuation=False, silent=False): if os.name == 'nt': msg = '** Warning: Cannot interrupt Octave on Windows' if self.stream_handler: self.stream_handler(msg) elif self.logger: self.logger.warn(msg) return self._interrupt_expect(silent) return REPLWrapper.interrupt(self.repl, continuation=continuation)
def _create_repl(self): cmd = self.executable # Interactive mode prevents crashing on Windows on syntax errors. # Delay sourcing the "~/.octaverc" file in case it displays a pager. repl = REPLWrapper(cmd_or_spawn=cmd, prompt_regex=r'[>+] $', prompt_change_cmd=None) if os.name == 'nt': repl.child.crlf = '\n' repl.interrupt = self._interrupt # Remove the default 50ms delay before sending lines. repl.child.delaybeforesend = None return repl