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"
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")
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 + '"')
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 + '"')
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")