def test_scintillawrapper_void_void_void(self): editor.write('Hello') editor.write(' world') before = editor.getText() editor.clearAll() after = editor.getText() self.assertEqual(before, 'Hello world') self.assertEqual(after, '')
def test_replace_with_unicode(self): editor.rereplace('Here|With', u'XäöüY') text = editor.getText() self.assertEqual( text, u'XäöüY is some text\r\nXäöüY some umlauts XäXüXö\r\n'.encode( 'windows-1252'))
def on_char_added(self, args): if self.lsp_doc_flag: if chr(args['ch']) == ')': editor.callTipCancel() elif (args['ch'] in self.current_triggers[ self.current_language]['signatureHelpProvider'] or args['ch'] in self.current_triggers[ self.current_language]['completionProvider']): cur_pos = editor.getCurrentPos() _line = editor.lineFromPosition(cur_pos) _character_pos = cur_pos - editor.positionFromLine(_line) _version = self._set_file_version() self._send_did_change(_version) if args['ch'] in self.current_triggers[ self.current_language]['signatureHelpProvider']: self.com_manager.send( self.lsp_msg.signatureHelp( self.current_file, self.current_language.lower(), _version, editor.getText(), _line, _character_pos)) self.open_results[ self.lsp_msg. request_id] = self.signature_response_handler else: self.com_manager.send( self.lsp_msg.completion( *self.__TextDocumentPositionParams())) self.open_results[ self.lsp_msg. request_id] = self.completion_response_handler
def test_replace_function(self): editor.rereplace(r'([a-z]+)([0-9]+)'.encode('windows-1252'), group2_with_counter) text = editor.getText() self.assertEqual( text, u'1231 54322 983\r\nä1234 ü54325 ö986\r\n'.encode('windows-1252'))
def test_scintillawrapper_void_bool_void(self): editor.setUndoCollection(False) editor.emptyUndoBuffer() # recommended when disabling undo collection editor.write('test_void_bool_void') editor.setUndoCollection(True) editor.undo() afterUndoWithUndoDisabled = editor.getText() # Now check undo is back on again editor.write('extra') beforeUndo = editor.getText() editor.undo() afterUndo = editor.getText() self.assertEqual(afterUndoWithUndoDisabled, 'test_void_bool_void') self.assertEqual(beforeUndo, 'test_void_bool_voidextra') self.assertEqual(afterUndo, 'test_void_bool_void')
def test_scintillawrapper_void_void_int(self): # we'll grab the doc point of the current document, then create another scintilla, set it to the document, write text in it, # then grab the text from the main 'editor' Scintilla, which should be what we added in docPointer = editor.getDocPointer() notepad.outputDebugString('creating hidden scintilla\n') hiddenScintilla = notepad.createScintilla() notepad.outputDebugString('setting doc pointer in hidden scintilla\n'); hiddenScintilla.setDocPointer(docPointer) notepad.outputDebugString('complete - set doc pointer in hidden scintilla\n'); hiddenScintilla.write('hello world, from the other side') text = editor.getText() notepad.outputDebugString('about to destroy scintilla\n'); notepad.destroyScintilla(hiddenScintilla) notepad.outputDebugString('destroyed scintilla\n'); self.assertEqual(text, 'hello world, from the other side')
def on_buffer_activated(self, args): log(f'{args}') self.current_language = notepad.getLanguageName( notepad.getLangType()).upper() if args['bufferID'] not in self.open_files_dict: self.current_file = notepad.getCurrentFilename() self.open_files_dict[args['bufferID']] = self.current_file else: self.current_file = self.open_files_dict[args['bufferID']] # temporary files are not supported if self.current_file.rpartition('\\')[0] == '': log('temporary files are not supported (yet?)') self.lsp_doc_flag = False return if self.current_language in self.available_lsp_servers: self.lsp_doc_flag = True if not self.com_manager.already_initialized(self.current_language): self.current_triggers[self.current_language] = { 'signatureHelpProvider': [], 'completionProvider': [] } self.com_manager.send( self.lsp_msg.initialize( self.current_file.rpartition('\\')[0], os.getpid())) self.com_manager.waiting_for_initialize_result = True _version = self._get_file_version() if _version == 0: log(f'file {self.current_file} first seen') self.com_manager.send( self.lsp_msg.didOpen(self.current_file, self.current_language.lower(), _version, editor.getText())) self.sent_didopen_files.append(args['bufferID']) else: log(f'{self.current_language} not in {self.available_lsp_servers}') self.lsp_doc_flag = False
from Npp import editor import re # it is assumed that chords and text is correctly aligned # and that the ordering is always one line of chords followed by one line of lyric # reformats from # A B C # Some text to sing # to # [A]Some [B] text to [C] sing in_text_line = False new_content = '' chords = [] for line in editor.getText().splitlines(): if line.strip(): # skip empty lines if in_text_line: if len(chords) == 1: new_content += '[{0}]{1}\r\n'.format(chords[0][1], line) else: for i, chord in enumerate(chords[:-1]): _line = line[chords[i][0][0]:chords[i+1][0][0]] new_content += '[{0}]{1} '.format(chords[i][1], _line).replace('[]','') # last element in list _line = line[chords[-1][0][0]:] new_content += '[{0}]{1}\r\n'.format(chords[-1][1], _line).replace('[]','')
def test_deleteLine_end_no_eol(self): editor.write('Line 1\r\nLine 2\r\nLine 3') editor.deleteLine(2) text = editor.getText(); self.assertEqual(text, 'Line 1\r\nLine 2\r\n')
def _send_did_change(self, version=None): version = self._get_file_version() if version is None else version self.com_manager.send( self.lsp_msg.didChange(self.current_file, self.current_language.lower(), version, editor.getText()))
def test_simple_replace(self): editor.rereplace(r'some\s([a-z]+)', 'TEST') text = editor.getText() self.assertEqual( text, u'Here is TEST\r\nWith TEST XäXüXö\r\n'.encode('windows-1252'))
def test_named_groups(self): editor.rereplace(ur'(?<letters>[a-zäöü]+)(?<numbers>[0-9]+)', lambda m: m.group('letters')) text = editor.getText() self.assertEqual( text, u'abc def gh\r\näbc üef öh\r\n'.encode('windows-1252'))
def test_groups(self): editor.rereplace(ur'([a-zäöü]+)([0-9]+)', lambda m: self.groups_check(m)) text = editor.getText() self.assertEqual(text, '1 2 3\r\n4 5 6\r\n')
def callback_scintillawrapper_void_position_string(self, args): editor.write('ABCDEF') editor.insertText(3, 'GHI') content = editor.getText() self.assertEquals('ABCGHIDEF', content) self.callbackCalled = True
def test_scintillawrapper_void_position_string(self): editor.write('ABCDEF') editor.insertText(3, 'GHI') content = editor.getText() self.assertEquals('ABCGHIDEF', content)
def test_deleteLine_start_no_contents(self): editor.write('\r\nLine 2\r\nLine 3\r\n') editor.deleteLine(0) text = editor.getText(); self.assertEqual(text, 'Line 2\r\nLine 3\r\n')
# -*- coding: utf-8 -*-
def test_simple_text_output(self): editor.write(u'test123äöü') text = editor.getText() self.assertEqual(text, u'test123äöü')
def test_scintillawrapper_void_int_string(self): editor.setText('abc123') editor.gotoPos(3) editor.addText('def') resultText = editor.getText() self.assertEqual(resultText, 'abcdef123')
def test_unicode_replace_function(self): editor.rereplace(ur'([a-zäöü]+)([0-9]+)', group1_with_counter) text = editor.getText() self.assertEqual( text, u'abc1 def2 gh3\r\näbc4 üef5 öh6\r\n'.encode('windows-1252'))
def test_scintillawrapper_void_position_position(self): editor.write('abc123 def456') editor.copyRange(4, 10) editor.paste() text = editor.getText() self.assertEqual(text, 'abc123 def45623 def')
def test_groups_with_named_groups(self): editor.rereplace(ur'(?<letters>[a-zäöü]+)(?<numbers>[0-9]+)', lambda m: self.groups_check(m)) text = editor.getText() self.assertEqual(text, '1 2 3\r\n4 5 6\r\n')
def test_unicode_replace(self): editor.rereplace(u'X[äö]', 'PP') text = editor.getText() self.assertEqual( text, u'Here is some text\r\nWith some umlauts PPXüPP\r\n'.encode( 'windows-1252'))
def test_named_groups_2(self): editor.rereplace(ur'(?<letters>[a-zäöü]+)(?<numbers>[0-9]+)', lambda m: m.group('numbers')) text = editor.getText() self.assertEqual(text, '123 5432 98\r\n123 5432 98\r\n')
def test_deleteLine_end_no_contents(self): editor.write('Line 1\r\nLine 2\r\n\r\n') editor.deleteLine(2) text = editor.getText() self.assertEqual(text, 'Line 1\r\nLine 2\r\n')
def test_ansi_replace(self): editor.rereplace(u'X[äö]'.encode('windows-1252'), 'YY') text = editor.getText() self.assertEqual( text, u'Here is some text\r\nWith some umlauts YYXüYY\r\n'.encode( 'windows-1252'))
def result(self): ''' return the calculated items for each parent together with the parent line ''' if self.parent: self.parent.result() return self.line, self.items, self.combined_filters, self.unique_filters # Calculate the level def get_level(line): return len(line) - len(line.lstrip()) lines = editor.getText().splitlines() max_lines = len(lines) - 1 current_line = 0 level_stack = [] save_popped_levels = [] combined_filters = ['#', '×'] unique_filters = ['€', '$'] # loop through all lines and build the needed Node objects while current_line < max_lines: if lines[current_line].strip() != '': current_level = get_level(lines[current_line]) if current_level >= get_level(lines[current_line + 1]): found_additional_filters = [ lines[current_line].count(x) for x in combined_filters
def test_deleteLine_middle_no_contents(self): editor.write('Line 1\r\n\r\nLine 3\r\n') editor.deleteLine(1) text = editor.getText(); self.assertEqual(text, 'Line 1\r\nLine 3\r\n')
def test_deleteLine_with_contents(self): editor.write('Line 1\r\nLine 2\r\nLine 3\r\n') editor.deleteLine(1) text = editor.getText() self.assertEqual(text, 'Line 1\r\nLine 3\r\n')