Guile Really-Improved 3 Window Manager Fork of i3-wm with guile configuration
Go to file
Michael Stapelberg a532f5ac39 Implement a new parser for commands. (+test)
On the rationale of using a custom parser instead of a lex/yacc one, see this
quote from src/commands_parser.c:
     We use a hand-written parser instead of lex/yacc because our commands are
     easy for humans, not for computers. Thus, it’s quite hard to specify a
     context-free grammar for the commands. A PEG grammar would be easier, but
     there’s downsides to every PEG parser generator I have come accross so far.

     This parser is basically a state machine which looks for literals or strings
     and can push either on a stack. After identifying a literal or string, it
     will either transition to the current state, to a different state, or call a
     function (like cmd_move()).

     Special care has been taken that error messages are useful and the code is
     well testable (when compiled with -DTEST_PARSER it will output to stdout
     instead of actually calling any function).

During the migration phase (I plan to completely switch to this parser before
4.2 will be released), the new parser will parse every command you send to
i3 and save the resulting call stack. Then, the old parser will parse your
input and actually execute the commands. Afterwards, both call stacks will be
compared and any differences will be logged.

The new parser works with 100% of the test suite and produces identical call
stacks.
2012-01-14 21:29:57 +00:00
debian update i3-sensible-* (Thanks Han) 2011-12-29 00:01:49 +01:00
docs Implement 'move workspace to output <output>' 2012-01-10 22:16:50 +00:00
i3-config-wizard shmlog: store meta information in the buffer itself, store path as X11 atom 2012-01-06 23:40:07 +00:00
i3-dump-log shmlog: store meta information in the buffer itself, store path as X11 atom 2012-01-06 23:40:07 +00:00
i3-input shmlog: store meta information in the buffer itself, store path as X11 atom 2012-01-06 23:40:07 +00:00
i3-msg shmlog: store meta information in the buffer itself, store path as X11 atom 2012-01-06 23:40:07 +00:00
i3-nagbar i3-nagbar: add -t to the synopsis (Thanks gamo) 2011-12-07 18:19:11 +00:00
i3bar Allow different modifier keys for showing hidden i3bar. 2012-01-08 12:47:41 +00:00
include Implement a new parser for commands. (+test) 2012-01-14 21:29:57 +00:00
libi3 shmlog: store meta information in the buffer itself, store path as X11 atom 2012-01-06 23:40:07 +00:00
man update i3-sensible-* (Thanks Han) 2011-12-29 00:01:49 +01:00
parser-specs Implement a new parser for commands. (+test) 2012-01-14 21:29:57 +00:00
render-tree add proof-of-concept perl script to render the tree to SVG 2011-02-21 20:00:56 +01:00
src Implement a new parser for commands. (+test) 2012-01-14 21:29:57 +00:00
testcases Implement a new parser for commands. (+test) 2012-01-14 21:29:57 +00:00
tests implement TAILQ_SWAP (only for consecutive elements, order relevant) and use it 2011-02-15 02:21:23 +01:00
yajl-fallback/yajl Make code compatible with yajl 2.0 *and* 1.0 2011-04-27 19:52:53 +02:00
.gitignore .gitignore: add generated testcases/Makefile 2011-11-23 00:03:03 +00:00
DEPENDS debian: use ${perl:Depends}, remove perl from build-deps, update recommends 2011-10-23 16:53:16 +01:00
GOALS Add GOALS file with anti-autotools 2009-02-09 20:56:29 +01:00
LICENSE remove obsolete CMDMODE and TODO files, update LICENSE 2011-10-08 15:18:04 +01:00
Makefile Implement a new parser for commands. (+test) 2012-01-14 21:29:57 +00:00
PACKAGE-MAINTAINER Introduce the i3-sensible-{pager,editor,terminal} scripts 2011-09-25 18:46:37 +01:00
RELEASE-NOTES-4.0 i3-migrate-config-to-v4: drop the .pl suffix 2011-07-31 23:11:45 +02:00
RELEASE-NOTES-4.0.1 add release notes for 4.0.1 2011-08-01 23:18:32 +02:00
RELEASE-NOTES-4.0.2 add release notes for v4.0.2 2011-08-28 19:17:43 +02:00
RELEASE-NOTES-4.1 Add release notes for v4.1 2011-11-11 21:47:43 +00:00
RELEASE-NOTES-4.1.1 add release notes for v4.1.1 2011-12-24 15:59:04 +01:00
common.mk Implement logging to a SHM ringbuffer 2011-12-10 10:50:33 +00:00
dump-asy.pl ipc: adapt dump-asy.pl for the new orientation format 2011-01-08 00:45:10 +01:00
generate-command-parser.pl Implement a new parser for commands. (+test) 2012-01-14 21:29:57 +00:00
gtk-tree-watch.pl perl: use get_tree instead of get_workspaces 2010-11-21 21:42:28 +01:00
i3-migrate-config-to-v4 Introduce synonyms: 'move to workspace' and 'move container to workspace' and 'move window to workspace' 2012-01-10 22:16:09 +00:00
i3-sensible-editor update i3-sensible-* (Thanks Han) 2011-12-29 00:01:49 +01:00
i3-sensible-pager update i3-sensible-* (Thanks Han) 2011-12-29 00:01:49 +01:00
i3-sensible-terminal update i3-sensible-* (Thanks Han) 2011-12-29 00:01:49 +01:00
i3-wsbar i3-wsbar: display a separator between workspaces for every output when --show-all is used (Thanks marforio) 2011-08-04 00:40:40 +02:00
i3.config Introduce synonyms: 'move to workspace' and 'move container to workspace' and 'move window to workspace' 2012-01-10 22:16:09 +00:00
i3.config.keycodes Introduce synonyms: 'move to workspace' and 'move container to workspace' and 'move window to workspace' 2012-01-10 22:16:09 +00:00
i3.desktop Add a .desktop-file containing xsession information for freedesktop compliant login managers 2009-04-19 22:29:04 +02:00
i3.welcome s/i3.zekjur.net/i3wm.org/g 2011-08-28 17:44:42 +02:00
logo.svg s/i3.zekjur.net/i3wm.org/g 2011-08-28 17:44:42 +02:00
pseudo-doc.doxygen s/i3.zekjur.net/i3wm.org/g 2011-08-28 17:44:42 +02:00