예제 #1
0
 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'))
예제 #3
0
    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
예제 #4
0
 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'))
예제 #5
0
    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')
예제 #6
0
 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')
예제 #7
0
    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
예제 #8
0
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('[]','')
예제 #9
0
 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')
예제 #10
0
 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()))
예제 #11
0
 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'))
예제 #12
0
 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'))
예제 #13
0
 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')
예제 #14
0
 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
예제 #15
0
 def test_scintillawrapper_void_position_string(self):
     editor.write('ABCDEF')
     editor.insertText(3, 'GHI')
     content = editor.getText()
     self.assertEquals('ABCGHIDEF', content)
예제 #16
0
 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')
예제 #17
0
# -*- coding: utf-8 -*-
 def test_simple_text_output(self):
     editor.write(u'test123äöü')
     text = editor.getText()
     self.assertEqual(text, u'test123äöü')
예제 #19
0
 def test_scintillawrapper_void_int_string(self):
     editor.setText('abc123')
     editor.gotoPos(3)
     editor.addText('def')
     resultText = editor.getText()
     self.assertEqual(resultText, 'abcdef123')
예제 #20
0
 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'))
예제 #21
0
 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')
예제 #22
0
 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')
예제 #23
0
 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'))
예제 #24
0
 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')
예제 #26
0
 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'))
예제 #27
0
    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
예제 #28
0
 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')