def discover(directory): directory = os.path.expanduser(directory) # The tilde does not work with os.chdir os.chdir(directory) # Discovering tests using unittest framework loader = TestLoader() tests = loader.discover(directory, top_level_dir=directory) result = EmacsTestResult() # Create a buffer (if it not exists) and put the formatted results # inside it let = Let() lisp.get_buffer_create("unittest") let.push_excursion() lisp.set_buffer("unittest") lisp.erase_buffer() tests.run(result) lisp.insert("\n") lisp.insert("Errors:\n") for test, traceback in result.errors: lisp.insert(str(test)) lisp.insert(traceback) let.pop_excursion() lisp.pop_to_buffer("unittest") lisp.compilation_mode() lisp.beginning_of_buffer()
def _base_findit(self, do_find, optionals, get_kwds): self._check_project() self._save_buffers() resource, offset = self._get_location() action, values = dialog.show_dialog( lisputils.askdata, ['search', 'cancel'], optionals=optionals) if action == 'search': kwds = get_kwds(values) def calculate(handle): resources = refactor._resources(self.project, values.get('resources')) return do_find(self.project, resource, offset, resources=resources, task_handle=handle, **kwds) result = lisputils.runtask(calculate, 'Find Occurrences') text = [] for occurrence in result: line = '%s : %s' % (occurrence.resource.path, occurrence.offset) if occurrence.unsure: line += ' ?' text.append(line) text = '\n'.join(text) + '\n' buffer = lisputils.make_buffer('*rope-occurrences*', text, switch=True) lisp.set_buffer(buffer) lisp.local_set_key('\r', lisp.rope_occurrences_goto_occurrence) lisp.local_set_key('q', lisp.rope_occurrences_quit)
def discover(directory): directory = os.path.expanduser( directory) # The tilde does not work with os.chdir os.chdir(directory) # Discovering tests using unittest framework loader = TestLoader() tests = loader.discover(directory, top_level_dir=directory) result = EmacsTestResult() # Create a buffer (if it not exists) and put the formatted results # inside it let = Let() lisp.get_buffer_create("unittest") let.push_excursion() lisp.set_buffer("unittest") lisp.erase_buffer() tests.run(result) lisp.insert("\n") lisp.insert("Errors:\n") for test, traceback in result.errors: lisp.insert(str(test)) lisp.insert(traceback) let.pop_excursion() lisp.pop_to_buffer("unittest") lisp.compilation_mode() lisp.beginning_of_buffer()
def _make_buffer(self, name, contents, empty_goto=True, switch=False, window='other', modes=[], fit_lines=None): """Make an emacs buffer `window` can be one of `None`, 'current' or 'other'. """ new_buffer = lisp.get_buffer_create(name) lisp.set_buffer(new_buffer) lisp.toggle_read_only(-1) lisp.erase_buffer() if contents or empty_goto: lisp.insert(contents) for mode in modes: lisp[mode + '-mode']() lisp.buffer_disable_undo(new_buffer) lisp.toggle_read_only(1) if switch: if window == 'current': lisp.switch_to_buffer(new_buffer) else: lisp.switch_to_buffer_other_window(new_buffer) lisp.goto_char(lisp.point_min()) elif window == 'other': new_window = lisp.display_buffer(new_buffer) lisp.set_window_point(new_window, lisp.point_min()) if fit_lines and lisp.fboundp(lisp['fit-window-to-buffer']): lisp.fit_window_to_buffer(new_window, fit_lines) lisp.bury_buffer(new_buffer) return new_buffer
def new_from_buffer(buffer, language): """Pastes the contents of buffer""" lisp.set_buffer(buffer) code = unicode(lisp.buffer_string()) #code = lisp.buffer_substring(lisp.point_min(), lisp.point_max()) filename = lisp.buffer_file_name() new_paste(code, language, filename=filename)
def show_occurrences(self, locations): buffer = self._make_buffer('*rope-occurrences*', "", switch=False) lisp.set_buffer(buffer) lisp.toggle_read_only(0) trunc_length = len(lisp.rope_get_project_root()) lisp.insert('List of occurrences:\n') for location in locations: code_line = self.read_line_from_file(location.filename, location.lineno).rstrip() filename = location.filename[trunc_length:] lineno = str(location.lineno) offset = str(location.offset) lisp.insert(filename + ":" + lineno + ":" + code_line + " " + offset) beginning = lisp.line_beginning_position() end = beginning + len(filename) lisp.add_text_properties(beginning, end, [lisp.face, lisp.button]) lisp.add_text_properties(beginning, end, [lisp.mouse_face, lisp.highlight, lisp.help_echo, "mouse-2: visit this file in other window"]) lisp.insert("\n") lisp.toggle_read_only(1) lisp.set(lisp["next-error-function"], lisp.rope_occurrences_next) lisp.local_set_key('\r', lisp.rope_occurrences_goto) lisp.local_set_key((lisp.mouse_1,), lisp.rope_occurrences_goto) lisp.local_set_key('q', lisp.delete_window)
def _revertSavedFiles(savedFiles): global currently_saving currently_saving = 1 for file in savedFiles: buf = lisp.find_buffer_visiting(file) if buf: lisp.set_buffer(buf) lisp.revert_buffer(None,1) currently_saving = 0
def _revertSavedFiles(savedFiles): global currently_saving currently_saving = 1 for file in savedFiles: buf = lisp.find_buffer_visiting(file) if buf: lisp.set_buffer(buf) lisp.revert_buffer(None, 1) currently_saving = 0
def pop_excursion(self): method, (buffer, point_marker, mark_marker) = self.stack[-1] assert method == 'excursion', self.stack[-1] del self.stack[-1] lisp.set_buffer(buffer) lisp.goto_char(point_marker) lisp.set_mark(mark_marker) lisp.set_marker(point_marker, None) if mark_marker is not None: # needed for xemacs lisp.set_marker(mark_marker, None)
def insert_in_other_buffer(bufname, text): """Creates/erases a buffer with the given name, opens it in a separate visible pane, and pastes the given text into it.""" lisp.get_buffer_create(bufname) lisp.display_buffer(bufname, 1) old_buf = lisp.current_buffer() lisp.set_buffer(bufname) lisp.erase_buffer() lisp.insert(text) lisp.set_buffer(old_buf)
def save_files(self, filenames): ask = self.get('confirm_saving') initial = lisp.current_buffer() for filename in filenames: buffer = lisp.find_buffer_visiting(filename) if buffer: if lisp.buffer_modified_p(buffer): if not ask or lisp.y_or_n_p('Save %s buffer?' % filename): lisp.set_buffer(buffer) lisp.save_buffer() lisp.set_buffer(initial)
def show_occurrences(self, locations): text = [] for location in locations: line = '%s : %s %s %s' % (location.filename, location.lineno, location.note, location.offset) text.append(line) text = '\n'.join(text) + '\n' buffer = self._make_buffer('*rope-occurrences*', text, switch=True) lisp.set_buffer(buffer) lisp.local_set_key('\r', lisp.rope_occurrences_goto_occurrence) lisp.local_set_key('q', lisp.delete_window)
def show_occurrences(self, locations): text = ['List of occurrences:', ''] for location in locations: line = '%s : %s %s %s' % (location.filename, location.lineno, location.note, location.offset) text.append(line) text = '\n'.join(text) + '\n' buffer = self._make_buffer('*rope-occurrences*', text, switch=False) lisp.set_buffer(buffer) lisp.toggle_read_only(1) lisp.set(lisp["next-error-function"], lisp.rope_occurrences_next) lisp.local_set_key('\r', lisp.rope_occurrences_goto) lisp.local_set_key('q', lisp.delete_window)
def reload_files(self, filenames, moves={}): if self.filename() in moves: initial = None else: initial = lisp.current_buffer() for filename in filenames: buffer = lisp.find_buffer_visiting(filename) if buffer: if filename in moves: lisp.kill_buffer(buffer) lisp.find_file(moves[filename]) else: lisp.set_buffer(buffer) lisp.revert_buffer(False, True) if initial is not None: lisp.set_buffer(initial)
def _save_buffers(self, only_current=False): ask = lisp['ropemacs-confirm-saving'].value() initial = lisp.current_buffer() current_buffer = lisp.current_buffer() if only_current: buffers = [current_buffer] else: buffers = lisp.buffer_list() for buffer in buffers: filename = lisp.buffer_file_name(buffer) if filename: if self._is_python_file(filename) and \ lisp.buffer_modified_p(buffer): if not ask or lisp.y_or_n_p('Save %s buffer?' % filename): lisp.set_buffer(buffer) lisp.save_buffer() lisp.set_buffer(initial)
def _reload_buffers_for_changes(self, changed_resources, moved_resources={}): if self._get_resource() in moved_resources: initial = None else: initial = lisp.current_buffer() for resource in changed_resources: buffer = lisp.find_buffer_visiting(str(resource.real_path)) if buffer: if resource.exists(): lisp.set_buffer(buffer) lisp.revert_buffer(False, True) elif resource in moved_resources: new_resource = moved_resources[resource] lisp.kill_buffer(buffer) lisp.find_file(new_resource.real_path) if initial is not None: lisp.set_buffer(initial)
def pop_mark(self): marker_ring = self.get('marker_ring') if lisp.ring_empty_p(marker_ring): self.message("There are no more marked buffers in \ the rope-marker-ring") else: oldbuf = lisp.current_buffer() marker = lisp.ring_remove(marker_ring, 0) marker_buffer = lisp.marker_buffer(marker) if marker_buffer is None: lisp.message("The marked buffer has been deleted") return marker_point = lisp.marker_position(marker) lisp.set_buffer(marker_buffer) lisp.goto_char(marker_point) #Kill that marker so it doesn't slow down editing. lisp.set_marker(marker, None, None) if not lisp.eq(oldbuf, marker_buffer): lisp.switch_to_buffer(marker_buffer)
def t(): lisp.message(msg) lisp.set_buffer("*LogBuffer*") lisp.goto_line(lisp.point_max()) lisp.insert(msg + "\n")
line = utils.cursor_line_number() # The +1 is because we prefer to have the result of an assignation when the cursor is on it, not one line later. var_info = jarvis.commands.external_inspect_vars(filename, line + 1) var_info = utils.inspect_format(var_info) found = False for window in lisp.window_list(): buffer = lisp.window_buffer(window) if lisp.buffer_name(buffer) == BUFFER_NAME: found = True buffer = lisp.get_buffer_create(BUFFER_NAME) lisp.set_buffer(buffer) lisp.erase_buffer() lisp.insert(str(var_info)) if not found: lisp.split_window_vertically(-10) lisp.other_window(1) lisp.switch_to_buffer(buffer) lisp.goto_line(1) lisp.other_window(1) # if not timer_installed: timer_installed = utils.get_command_global_var(VAR_KEY, False) if not timer_installed: utils.set_command_global_var(VAR_KEY, True)
# Sample code : break on whitespace line = utils.cursor_line_number() # The +1 is because we prefer to have the result of an assignation when the cursor is on it, not one line later. var_info = jarvis.commands.external_inspect_vars(filename, line + 1) var_info = utils.inspect_format(var_info) found = False for window in lisp.window_list(): buffer = lisp.window_buffer(window) if lisp.buffer_name(buffer) == BUFFER_NAME: found = True buffer = lisp.get_buffer_create(BUFFER_NAME) lisp.set_buffer(buffer) lisp.erase_buffer() lisp.insert(str(var_info)) if not found: lisp.split_window_vertically(-10) lisp.other_window(1) lisp.switch_to_buffer(buffer) lisp.goto_line(1) lisp.other_window(1) # if not timer_installed: timer_installed = utils.get_command_global_var(VAR_KEY, False) if not timer_installed: utils.set_command_global_var(VAR_KEY, True)
def t(): lisp.message(msg) lisp.set_buffer("*LogBuffer*") lisp.goto_line(lisp.point_max()) lisp.insert(msg+"\n")