Пример #1
0
    def _debug_app(self, **kwargs):
        launcher = Launcher(self.debugger)
        launcher.addArg(self.exe_file)
        if self.debugger_is_cgdb:
            launcher.addArg('--')

        launcher = self._add_init_file_to_launcher(launcher)
        return launcher
Пример #2
0
    def __call__(self, **kwargs):
        launcher = None
        wait = True
        if self.debug:
            if self.useEmacs:
                launcher = self._emacs_debugger(**kwargs)
            elif self.debugger:
                launcher = self._debug_app(**kwargs)
        else:
            wait = self.wait
            launcher = Launcher(self.exe_file, stdout_to_console = True, stderr_to_console = True)
            
        if kwargs is not None:
            for key in kwargs:
                launcher.addArg('--%s' % key, '%s' % kwargs[key], append=True)

        launcher(dry_run = self.dry_run, wait_for_command_to_complete = wait)
Пример #3
0
class EmacsGdb (Emacs):
    def __init__(self, server_name, **kwargs):
        super(EmacsGdb, self).__init__(server_name, **kwargs)
        self.exeToDebug = kwargs.get('exe_to_debug')
        self.gdb = Locator('gdb').locate()
        self.gdbCl = Launcher(self.gdb)
        self.gdbCl.addArg('-i', 'mi', append = True)
        self.gdbCl.addArg(self.exeToDebug)
        self.firstArg = True

    def addArg(self, key, *value, **kwargs):
        self.gdbCl.addArg (key, *value, **kwargs)
        
    def launch(self, **kwargs):
        self._emacsExpr().addStatement('gdb "%s"' % (self.gdbCl))
        self._emacsExpr().addStatement('gdb-many-windows t')
        super(EmacsGdb, self).launch(**kwargs)

    def __call__(self, **kwargs):
        dry_run = kwargs.get('dry_run')
        self.launch(dry_run = dry_run)
Пример #4
0
class Emacs(object):
    def __init__(self, server_name, **kwargs):
        server_name = server_name.upper()
        os.environ['CURRENT_PACKAGE_NAME'] = server_name
        self.open_init_file = kwargs.get('open_init_file', False)

        self.files = None
        if not self.open_init_file:
            self.files = kwargs.get('files', None)

        self.emacsExpr = None
        if self.open_init_file:
            self.emacsExpr = EmacsExpression()
            self.emacsExpr.addStatement('skg/open-init-file')

        line = kwargs.get('line', None)
        if line:
            self._gotoLine(line)

        self.exePath = Locator('emacs')
        self.exeClientPath = Locator('emacsclient')
        self.homeEnv = os.environ['HOME']
        if self._serverRunning(server_name):
            self._launcher = Launcher(self.exeClientPath)
            self._launcher += ['-n', '-f', server_name]
        else:
            self._launcher = Launcher(self.exePath)

    def _serverRunning(self, server_name):
        server_list = self._serverList()
        s = [item for item in server_list if os.path.basename(item) == server_name]
        if not s:
            return False
        f = open(s[0], 'r')
        lines = f.read()
        f.close()
        pid = int(lines.split('\n')[0].split()[1])
        try:
            os.kill(pid, 0)
            return True
        except OSError:
            return False

    def _emacsExpr(self):
        if not self.emacsExpr:
            self.emacsExpr = EmacsExpression()
        return self.emacsExpr

    def _gotoLine(self, line):
        self._emacsExpr().addStatement('goto-line %s' % (line))

    def _serverList(self):
        servers_dir = os.path.join(self.homeEnv, '.emacs.d', 'server')
	if os.path.exists(servers_dir):
		files = [join(servers_dir, f) for f in listdir(servers_dir) if isfile(join(servers_dir, f))]
		return files
	return []
        
    def launch(self, **kwargs):
        dry_run = kwargs.get('dry_run')
        if self.files:
            self._launcher.addFiles(self.files)
        else:
            self._emacsExpr().addStatement('raise-frame')

        if self.emacsExpr:
            self._launcher.addArg('--eval', self.emacsExpr())

        debug = kwargs.get('debug', False)
        if debug:
            self._launcher.addArg('--debug-init')

        self._launcher(dry_run = dry_run)