summary refs log tree commit diff stats
path: root/compiler/parser.nim
Commit message (Expand)AuthorAgeFilesLines
...
* fixes a minor parser bugAraq2014-01-251-2/+1
* typeClasses now documented in grammar.txtAraq2014-01-231-0/+4
* next steps for closure iteratorsAraq2014-01-221-2/+2
* parser support anon iteratorsAraq2014-01-201-2/+3
* updated grammar.txtAraq2014-01-201-2/+2
* command syntax is allowed in expressionsAraq2014-01-201-44/+74
* 'nil' as a statement is deprecated, use an empty 'discard' insteadAraq2014-01-191-1/+1
* Merge branch 'upstream' into develZahary Karadjov2013-12-291-9/+17
|\
| * static params: expr[T] is now static[T]Zahary Karadjov2013-12-191-9/+17
* | case consistency: cs:partial bootstraps on windowsAraq2013-12-291-7/+7
* | case consistency: next stepsAraq2013-12-291-10/+10
* | case consistency part 4Araq2013-12-271-7/+7
* | case consistency part 1Araq2013-12-271-16/+16
|/
* support for multiple test variables and var qualifiers in user-defined type c...Zahary Karadjov2013-11-131-1/+14
* fixed another semicolon related parsing bugAraq2013-10-021-4/+3
* fixes #609Araq2013-10-011-2/+8
* support for multiple modules of the same name; niminst supports 'platforms'; ...Araq2013-09-241-1/+1
* implemented 'import a as b'Araq2013-09-241-6/+17
* Merge branch 'type-classes' into upstreamZahary Karadjov2013-09-031-5/+33
|\
| * implemented the using statementZahary Karadjov2013-08-311-0/+1
| * fix parsing of ``proc foo(x: distinct Type)``Zahary Karadjov2013-08-241-6/+1
| * parsing of user defined type classesZahary Karadjov2013-08-231-1/+33
* | bugfix: line information for commentsAraq2013-09-011-1/+0
|/
* Revert "Revert "allow keyword params for the `[]` and `{}` operators""Zahary Karadjov2013-08-191-8/+12
* fixes token's column informationAraq2013-07-301-3/+3
* fixes semicolon parsing issueAraq2013-06-031-5/+9
* Revert "allow keyword params for the `[]` and `{}` operators"Araq2013-05-271-12/+8
* allow keyword params for the `[]` and `{}` operatorsZahary Karadjov2013-05-261-8/+12
* 'inject' for 'for' loop variablesAraq2013-05-141-5/+5
* completed expr/stmt unificationAraq2013-05-031-3/+3
* new parser works with docgenAraq2013-05-021-0/+1
* proper scoping for 'if'Araq2013-04-301-8/+11
* first steps to the expr/stmt unificationAraq2013-04-301-12/+82
* new parser: diallow more thingsAraq2013-04-231-0/+1
* made some tests greenAraq2013-04-221-0/+4
* bugfix: 'import x var y' without newline doesn't parse anymoreAraq2013-04-211-1/+1
* new parsing scheme is documentedAraq2013-04-211-27/+27
* new parser worksAraq2013-04-201-36/+61
* next steps for the new parserAraq2013-04-201-31/+32
* next steps for the new parser/grammarAraq2013-04-201-221/+233
* first steps to the new parser/grammarAraq2013-04-191-184/+304
* fixes #310Araq2013-04-131-2/+2
* fixes #283Araq2013-04-111-1/+1
* Removes executable bit for text files.Grzegorz Adam Hankiewicz2013-03-161-0/+0
* next steps for object construction expressionsAraq2013-03-071-1/+1
* first steps to implement object construction expressionsAraq2013-03-071-20/+27
* merged upstream masterZahary Karadjov2013-01-271-80/+36
|\
| * implemented 'import except'Araq2012-11-281-67/+35
| * first steps for the 'export' featureAraq2012-11-281-25/+13
* | CaaS in-memory cachingZahary Karadjov2012-11-281-3/+6
|/
n class="p">(tabname) self.need_redraw = True return True pos = 0 for i, part in enumerate(self.result): pos += len(part) if event.x < pos: if i < 2: self.fm.enter_dir("~") elif i == 2: self.fm.enter_dir("/") else: try: self.fm.enter_dir(part.directory) except: pass return True return False def _calc_bar(self): bar = Bar('in_titlebar') self._get_left_part(bar) self._get_right_part(bar) try: bar.shrink_from_the_left(self.wid) except ValueError: bar.shrink_by_removing(self.wid) self.result = bar.combine() def _get_left_part(self, bar): # TODO: Properly escape non-printable chars without breaking unicode if self.fm.username == 'root': clr = 'bad' else: clr = 'good' bar.add(self.fm.username, 'hostname', clr, fixed=True) bar.add('@', 'hostname', clr, fixed=True) bar.add(self.fm.hostname, 'hostname', clr, fixed=True) bar.add(' ', 'hostname', clr, fixed=True) pathway = self.fm.thistab.pathway if self.settings.tilde_in_titlebar and \ self.fm.thisdir.path.startswith(self.fm.home_path): pathway = pathway[self.fm.home_path.count('/')+1:] bar.add('~/', 'directory', fixed=True) for path in pathway: if path.is_link: clr = 'link' else: clr = 'directory' bar.add(path.basename, clr, directory=path) bar.add('/', clr, fixed=True, directory=path) if self.fm.thisfile is not None and \ self.settings.show_selection_in_titlebar: bar.add(self.fm.thisfile.relative_path, 'file') def _get_right_part(self, bar): # TODO: fix that pressed keys are cut off when chaining CTRL keys kb = str(self.fm.ui.keybuffer) self.old_keybuffer = kb bar.addright(kb, 'keybuffer', fixed=True) bar.addright(' ', 'space', fixed=True) self.tab_width = 0 if len(self.fm.tabs) > 1: for tabname in self.fm._get_tab_list(): tabtext = self._get_tab_text(tabname) self.tab_width += len(tabtext) clr = 'good' if tabname == self.fm.current_tab else 'bad' bar.addright(tabtext, 'tab', clr, fixed=True) def _get_tab_text(self, tabname): result = ' ' + str(tabname) if self.settings.dirname_in_tabs: dirname = basename(self.fm.tabs[tabname].path) if not dirname: result += ":/" elif len(dirname) > 15: result += ":" + dirname[:14] + self.ellipsis[self.settings.unicode_ellipsis] else: result += ":" + dirname return result def _print_result(self, result): self.win.move(0, 0) for part in result: self.color(*part.lst) y, x = self.win.getyx() self.addstr(y, x, str(part)) self.color_reset()