Beispiel #1
0
def display(query, archive):  # {{{1
    """ Shows a list of notes.

    query: a string representing a regex search. Can be "".

    Builds a list of files for query and then processes it to show the list in the pad format.
    """
    if get_save_dir() == "":
        vim.command('let tmp = confirm("IMPORTANT:\n'\
                'Please set g:pad_dir to a valid path in your vimrc.", "OK", 1, "Error")')
        return
    pad_files = get_filelist(query, archive)
    if len(pad_files) > 0:
        if vim.eval("bufexists('__pad__')") == "1":
            vim.command("bw __pad__")
        if vim.eval('g:pad_position["list"]') == "right":
            vim.command("silent! rightbelow " +
                        str(vim.eval('g:pad_window_width')) + "vnew __pad__")
        else:
            vim.command("silent! botright " +
                        str(vim.eval("g:pad_window_height")) + "new __pad__")
        fill_list(pad_files, query != "")
        vim.command("set filetype=pad")
        vim.command("setlocal nomodifiable")
    else:
        print "no pads"
Beispiel #2
0
def sort(key="1"): #{{{1
	key = SORT_TYPES[key]
	if key=="date":
		vim.command("call pad#ListPads('')")
		return

	tuples = []
	if key=="tags":
		view_files = [line.split()[0] for line in vim.current.buffer]
		for pad_id in view_files:
			with open(get_save_dir() + "/" + pad_id) as fi:
				tags = sorted([tag.lower().replace("@", "") for tag in re.findall("@\w*", fi.read(200))])
			tuples.append((pad_id, tags))
		tuples = sorted(tuples, key=lambda f: f[1])
		tuples = filter(lambda i : i[1] != [], tuples) + filter(lambda i : i[1] == [], tuples)
	elif key=="title":
		l = 1
		for line in vim.current.buffer:
			pad_id = line.split()[0]
			title = vim.eval('''split(split(substitute(getline(''' + str(l) + '''), '↲','\n', "g"), '\n')[0], ' │ ')[1]''')
			tuples.append((pad_id, title))
			l += 1
		tuples = sorted(tuples, key=lambda f: f[1])
	
	vim.command("setlocal modifiable")
	fill_list([f[0] for f in tuples], custom_order=True)
	vim.command("setlocal nomodifiable")
Beispiel #3
0
def incremental_search():  # {{{1
    """ Provides incremental search within the __pad__ buffer.
    """
    query = ""
    should_create_on_enter = False

    vim.command("echohl None")
    vim.command('echo ">> "')
    while True:
        raw_char = vim.eval("getchar()")
        if raw_char in ("13", "27"):
            if raw_char == "13" and should_create_on_enter:
                vim.command("bw")
                open_pad(first_line=query)
                vim.command("echohl None")
            vim.command("redraw!")
            break
        else:
            try:  # if we can convert to an int, we have a regular key
                int(raw_char)  # we bring up an error on nr2char
                last_char = vim.eval("nr2char(" + raw_char + ")")
                query = query + last_char
            except:  # if we don't, we have some special key
                keycode = unicode(raw_char, errors="ignore")
                if keycode == "kb":  # backspace
                    query = query[:-len(last_char)]
        vim.command("setlocal modifiable")
        pad_files = get_filelist(query)
        if pad_files != []:
            fill_list(pad_files, query != "")
            vim.command("setlocal nomodifiable")
            info = ""
            vim.command("echohl None")
            should_create_on_enter = False
        else:  # we will create a new pad
            del vim.current.buffer[:]
            info = "[NEW] "
            vim.command("echohl WarningMsg")
            should_create_on_enter = True
        vim.command("redraw")
        vim.command('echo ">> ' + info + query + '"')
Beispiel #4
0
def incremental_search(): #{{{1
	""" Provides incremental search within the __pad__ buffer.
	"""
	query = ""
	should_create_on_enter = False
	
	vim.command("echohl None")
	vim.command('echo ">> "')
	while True:
		raw_char = vim.eval("getchar()")
		if raw_char in ("13", "27"):
			if raw_char == "13" and should_create_on_enter:
				vim.command("bw")
				open_pad(first_line=query)
				vim.command("echohl None")
			vim.command("redraw!")
			break
		else:
			try: # if we can convert to an int, we have a regular key
				int(raw_char) # we check this way so we bring up an error on nr2char
				last_char = vim.eval("nr2char(" + raw_char + ")")
				query = query + last_char
			except: # if we don't, we have some special key
				keycode = unicode(raw_char, errors="ignore")
				if keycode == "kb": # backspace
					query = query[:-len(last_char)]
		vim.command("setlocal modifiable")
		pad_files = get_filelist(query)
		if pad_files != []:
			fill_list(pad_files, query != "")
			vim.command("setlocal nomodifiable")
			info = ""
			vim.command("echohl None")
			should_create_on_enter = False
		else: # we will create a new pad
			del vim.current.buffer[:]
			info = "[NEW] "
			vim.command("echohl WarningMsg")
			should_create_on_enter = True
		vim.command("redraw")
		vim.command('echo ">> ' + info + query + '"')
Beispiel #5
0
def sort(key="1"):  # {{{1

    if key not in SORT_TYPES:
        return

    key = SORT_TYPES[key]
    if key == "date":
        vim.command("ListPads")
        return

    tuples = []
    if key == "tags":
        view_files = [line.split()[0] for line in vim.current.buffer]
        for pad_id in view_files:
            with open(pad_id) as fi:
                tags = sorted([
                    tag.lower().replace("@", "")
                    for tag in re.findall("@\w*", fi.read(200))
                ])
            tuples.append((pad_id, tags))
        tuples = sorted(tuples, key=lambda f: f[1])
        tuples = filter(lambda i: i[1] != [], tuples) + \
                 filter(lambda i: i[1] == [], tuples)
    elif key == "title":
        l = 1
        for line in vim.current.buffer:
            pad_id = line.split()[0]
            title = vim.eval('''split(split(substitute(getline(''' + str(l) +
                             '''), '↲','\n', "g"), '\n')[0], ' │ ')[1]''')
            tuples.append((pad_id, title))
            l += 1
        tuples = sorted(tuples, key=lambda f: f[1])

    vim.command("setlocal modifiable")
    fill_list([f[0] for f in tuples], custom_order=True)
    vim.command("setlocal nomodifiable")
Beispiel #6
0
def display(query, archive): # {{{1
    """ Shows a list of notes.

    query: a string representing a regex search. Can be "".

    Builds a list of files for query and then processes it to show the list in the pad format.
    """
    if get_save_dir() == "":
        vim.command('let tmp = confirm("IMPORTANT:\n'\
                'Please set g:pad_dir to a valid path in your vimrc.", "OK", 1, "Error")')
        return
    pad_files = get_filelist(query, archive)
    if len(pad_files) > 0:
        if vim.eval("bufexists('__pad__')") == "1":
            vim.command("bw __pad__")
        if vim.eval('g:pad_position["list"]') == "right":
            vim.command("silent! rightbelow " + str(vim.eval('g:pad_window_width')) + "vnew __pad__")
        else:
            vim.command("silent! botright " + str(vim.eval("g:pad_window_height")) + "new __pad__")
        fill_list(pad_files, query != "")
        vim.command("set filetype=pad")
        vim.command("setlocal nomodifiable")
    else:
        print "no pads"