mirror of
				https://github.com/amix/vimrc
				synced 2025-10-31 06:33:35 +08:00 
			
		
		
		
	Updated plugins
This commit is contained in:
		| @ -1,5 +1,7 @@ | ||||
| """Helper methods used in UltiSnips snippets.""" | ||||
|  | ||||
| import string, vim | ||||
|  | ||||
| def complete(tab, opts): | ||||
|     """ | ||||
|     get options that start with tab | ||||
| @ -18,3 +20,73 @@ def complete(tab, opts): | ||||
|     if not len(opts): | ||||
|         msg = "{0}" | ||||
|     return msg.format("|".join(opts)) | ||||
|  | ||||
| def _parse_comments(s): | ||||
|     """ Parses vim's comments option to extract comment format """ | ||||
|     i = iter(s.split(",")) | ||||
|  | ||||
|     rv = [] | ||||
|     try: | ||||
|         while True: | ||||
|             # get the flags and text of a comment part | ||||
|             flags, text = next(i).split(':', 1) | ||||
|  | ||||
|             if len(flags) == 0: | ||||
|                 rv.append((text, text, text, "")) | ||||
|             # parse 3-part comment, but ignore those with O flag | ||||
|             elif 's' in flags and 'O' not in flags: | ||||
|                 ctriple = ["TRIPLE"] | ||||
|                 indent = "" | ||||
|  | ||||
|                 if flags[-1] in string.digits: | ||||
|                     indent = " " * int(flags[-1]) | ||||
|                 ctriple.append(text) | ||||
|  | ||||
|                 flags, text = next(i).split(':', 1) | ||||
|                 assert flags[0] == 'm' | ||||
|                 ctriple.append(text) | ||||
|  | ||||
|                 flags, text = next(i).split(':', 1) | ||||
|                 assert flags[0] == 'e' | ||||
|                 ctriple.append(text) | ||||
|                 ctriple.append(indent) | ||||
|  | ||||
|                 rv.append(ctriple) | ||||
|             elif 'b' in flags: | ||||
|                 if len(text) == 1: | ||||
|                     rv.insert(0, ("SINGLE_CHAR", text, text, text, "")) | ||||
|     except StopIteration: | ||||
|         return rv | ||||
|  | ||||
| def get_comment_format(): | ||||
|     """ Returns a 4-element tuple (first_line, middle_lines, end_line, indent) | ||||
|     representing the comment format for the current file. | ||||
|  | ||||
|     It first looks at the 'commentstring', if that ends with %s, it uses that. | ||||
|     Otherwise it parses '&comments' and prefers single character comment | ||||
|     markers if there are any. | ||||
|     """ | ||||
|     commentstring = vim.eval("&commentstring") | ||||
|     if commentstring.endswith("%s"): | ||||
|         c = commentstring[:-2] | ||||
|         return (c, c, c, "") | ||||
|     comments = _parse_comments(vim.eval("&comments")) | ||||
|     for c in comments: | ||||
|         if c[0] == "SINGLE_CHAR": | ||||
|             return c[1:] | ||||
|     return comments[0][1:] | ||||
|  | ||||
|  | ||||
| def make_box(twidth, bwidth=None): | ||||
|     b, m, e, i = get_comment_format() | ||||
|     bwidth_inner = bwidth - 3 - max(len(b), len(i + e)) if bwidth else twidth + 2 | ||||
|     sline = b + m + bwidth_inner * m[0] + 2 * m[0] | ||||
|     nspaces = (bwidth_inner - twidth) // 2 | ||||
|     mlines = i + m + " " + " " * nspaces | ||||
|     mlinee = " " + " "*(bwidth_inner - twidth - nspaces) + m | ||||
|     eline = i + m + bwidth_inner * m[0] + 2 * m[0] + e | ||||
|     return sline, mlines, mlinee, eline | ||||
|  | ||||
| def foldmarker(): | ||||
|     "Return a tuple of (open fold marker, close fold marker)" | ||||
|     return vim.eval("&foldmarker").split(",") | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 amix
					amix