Ejemplo n.º 1
0
def expand_abbreviation(*l_arg, **d_arg):

    profile_name, doc_type = get_profile_name(), get_doc_type()

    cur_line = vim.current.line
    cur_index = vim.current.window.cursor[1]
    cur_line_num = vim.current.window.cursor[0] - 1

    insertion_point = insertion_point_maker()
    get_insertion_point = insertion_point.get_insertion_point
    zen_core.insertion_point = get_insertion_point
    zen_core.sub_insertion_point = get_insertion_point

    abbr, start_index = (None, None)
    if "prompt" in d_arg and d_arg["prompt"]:
        if cur_index + 1 == len(cur_line):
            cur_index += 1
        abbr = vim.eval('input("Expand abbreviation: ")')
        start_index = cur_index
    else:
        if cur_index + 1 == len(cur_line):
            cur_index += 1
            abbr, start_index = zen_core.find_abbr_in_line(cur_line, cur_index)
            if not abbr:
                cur_index -= 1
        if not abbr:
            abbr, start_index = zen_core.find_abbr_in_line(cur_line, cur_index)

    if abbr:
        result = cur_line[0:start_index] + zen_core.expand_abbreviation(abbr, doc_type, profile_name)
        if result:
            cur_line_pad = re.match(r"^(\s+)", cur_line)
            if cur_line_pad:
                result = zen_core.pad_string(result, cur_line_pad.group(1))
            vim.current.buffer[cur_line_num : cur_line_num + 1] = (
                result.replace(insertion_point.placeholder, "", 1) + cur_line[cur_index:]
            ).split("\n")
            if "set_return" in d_arg and d_arg["set_return"]:
                vim.command("let l:can_replace = 1")
            for line in result.split("\n"):
                cur_line_num += 1
                pos = line.find(insertion_point.placeholder)
                if pos > -1:
                    vim.current.window.cursor = (cur_line_num, pos)
                    break
Ejemplo n.º 2
0
def zenExpand():
    cursor = kate.activeView().cursorPosition()
    line = str(kate.activeDocument().line( cursor.line() ))
    abbr = zen_core.find_abbr_in_line( line, cursor.column() )
    code = zen_core.expand_abbreviation(abbr[0], 'html', 'xhtml')

    indentation = find_spaces.match(line).group(0)

    codelines = code.splitlines()
    cursor_column = -1
    for i, codeline in enumerate(codelines):
        if i > 0:
            codeline = indentation + codeline
            codelines[i] = codeline

        if cursor_column >= 0:
            continue

        cursor_column = codeline.find('|')
        if cursor_column >= 0:
            cursor_line = i
            codelines[cursor_line] = codeline[:cursor_column] + codeline[cursor_column+1:]
            cursor_column -= len(find_spaces.match(codeline).group(0))

    code = "\n".join(codelines)

    krange = KTextEditor.Range(cursor.line(), abbr[1], cursor.line(), abbr[1]+len(abbr[0]))
    kate.activeDocument().replaceText(krange, code)

    if cursor_column >= 0:
        cursor.setLine(cursor.line() + cursor_line)
        line = str(kate.activeDocument().line( cursor.line() ))
        if cursor_line == 0:
            cursor_column += abbr[1]
        else:
            cursor_column += len(find_spaces.match(line).group(0))
        cursor.setColumn(cursor_column)
        kate.activeView().setCursorPosition(cursor)
Ejemplo n.º 3
0
def extractAbbr(line):
	return zen.find_abbr_in_line(line, len(line))[0]
Ejemplo n.º 4
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Coda plug-in
Created on Apr 20, 2009

@author: sergey
'''
import os
from zencoding import zen_core
from zencoding.settings import zen_settings

zen_core.newline = os.getenv('CODA_LINE_ENDING', zen_core.newline)
zen_core.insertion_point = '$$IP$$'

cur_line = 'hello world div>p'
cur_index = 17

abbr = zen_core.find_abbr_in_line(cur_line, cur_index)
if abbr:
    print(zen_core.expand_abbr(abbr))
Ejemplo n.º 5
0
zen_core.newline = os.getenv('TM_LINE_ENDING', zen_core.newline)

point_ix = 0


def place_ins_point(text):
    globals()['point_ix'] += 1
    return '$%s' % point_ix


zen_core.insertion_point = '$$IP$$'
zen_core.sub_insertion_point = ''

cur_line = os.getenv('TM_CURRENT_LINE', '')
cur_index = int(os.getenv('TM_LINE_INDEX', 0))

# doc_type = re.search(r'\b(html|css|xml|xsl)\b', scope)

doc_type = 'html'

abbr, start_index = zen_core.find_abbr_in_line(cur_line, cur_index)
if abbr:
    result = cur_line[0:start_index] + zen_core.expand_abbr(abbr, doc_type)
    cur_line_pad = re.match(r'^(\s+)', cur_line)
    if cur_line_pad:
        result = zen_core.pad_string(result, cur_line_pad.group(1))

    sys.stdout.write(result + cur_line[cur_index:])
else:
    sys.stdout.write(cur_line[0:cur_index] + zen_settings['indentation'] +
                     '$$IP$$' + cur_line[cur_index:])
Ejemplo n.º 6
0
try:
	if 'xsl' in scope:
		doc_type = 'xsl'
	else:
		doc_type = re.findall(r'\bhtml|css|xml\b', scope)[-1]
except:
	doc_type = 'html'

# doc_type = re.search(r'\b(html|css|xml|xsl)\b', scope)
if not doc_type:
	doc_type = 'html'

profile_name = 'xhtml'
"Output profile name"

abbr = os.getenv('TM_SELECTED_TEXT', '')
if abbr:
	result = zen_core.expand_abbreviation(abbr, doc_type, profile_name)
	if result:
		sys.stdout.write(result)
else:
	abbr, start_index = zen_core.find_abbr_in_line(cur_line, cur_index)

	if abbr:
		result = cur_line[0:start_index] + zen_core.expand_abbreviation(abbr, doc_type, profile_name)
		cur_line_pad = re.match(r'^(\s+)', cur_line)
		if cur_line_pad:
			result = zen_core.pad_string(result, cur_line_pad.group(1))

		sys.stdout.write(result + cur_line[cur_index:])
Ejemplo n.º 7
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-

'''
Coda plug-in
Created on Apr 20, 2009

@author: sergey
'''
import os
from zencoding import zen_core
from zencoding.settings import zen_settings

zen_core.newline = os.getenv('CODA_LINE_ENDING', zen_core.newline)
zen_core.insertion_point = '$$IP$$'

cur_line = 'hello world div>p'
cur_index = 17

abbr = zen_core.find_abbr_in_line(cur_line, cur_index)
if abbr:
	print(zen_core.expand_abbr(abbr))