Tue Oct 5 18:32:29 1999 Dan Winship * builtins.c (system_cmd): Make "system" work like it does everywhere else in the universe. (pass everything off to sh -c). Fixes some problems reported by Melissa Hao. Wed Aug 18 16:04:45 1999 Dan Winship * bindings.c (undo_bindings): Fix stupid bug so you don't lose all your anymode bindings the first time you switch modes. Sat Aug 14 19:25:08 1999 Dan Winship * parser.y: xstrdup(yytext) when using a VAR, FUN, or CMD as a symbol to avoid losing horribly later. Fixes a core dump reported by Richard Tibbetts when you accidentally redefine a symbol. * lexer.l (define): Fix "attempted to redefine" message to be more correct and useful. Tue Jun 1 00:30:56 1999 Dan Winship * eval.c (eval_comp): Initialize some variables to 0 so comparing windows against (Window)0 works. Mon Apr 12 17:31:55 1999 Dan Winship * cache.c: recheck parent window when remapping windows. (find_window): make this spiffier, so lots of places can use it as a generic routine to search the window cache. Mon Apr 12 17:29:06 1999 Dan Winship * lexer.l: Recognize "-" as meaning "read from stdin" Sat Feb 27 14:27:45 1999 Dan Winship * parser.y, array.c, eval.c: add support for array.size, to get the number of elements in an array. * builtins.c: add windows function, which returns an array of windows, and mapped function, which tells if a window is mapped or not. Fri Feb 26 21:36:00 1999 Dan Winship * cache.c (find_window): prefer mapped windows to unmapped ones * cache.c: cache information about location, size, and visibility. * builtins.c (at_fun): Add a function "at" to return the window at a point. * builtins.c: add setled/getled, setrepeat/getrepeat. Mon Sep 14 02:05:14 1998 Dan Winship * nawm.c (do_option): Add -o flag / "option" special declaration. Currently the only supported option is "nocapslock", which makes key and mouse bindings ignore the state of the caps lock key. Sat Sep 12 09:58:36 1998 Dan Winship * Add "for" command (two syntaxes) and "in" operator for arrays. * eval.c (eval_cmd, eval_expr): A bunch more bugs relating to memory allocation and garbage collection. Arrays and string concatenation work again. * parser.y: Added some additional type checking (if/while/do predicates should be INTs, relational operators only work on simple types). * bindings.c (parse_key): Allow keysyms to be multiple keysyms separated by | so you can do like "KP_Divide|KP_F2" to deal with multiple keyboard types. * builtins.c (typekey_cmd): typekey, for typing things other than simple text. Sat Aug 22 15:49:29 1998 Dan Winship * nawm.c (main): Punt .nawm2rc in favor of .nawmrc * lexer.l, parser.y (doadd): change string concatenation operator from . to +. (We aren't using . for anything else yet, but I will be later and I wanted to do all of the incompatible syntax changes at once.) * Add keypress, keyrelease, buttonpress, buttonrelease events. (key is alias for keypress, button for buttonpress) * redo parsing of key/button event bindings: they now take a string such as "meta F1" instead of a series of magic modifier tokens and a magic key/button token. * builtins.c (mouseclick_cmd): change first arg to a string, which can include modifiers as well as a button # or name. Use set_modifier_state to hold down those modifiers when clicking. Sat Aug 15 19:28:53 1998 Dan Winship * keymap.c: add code to deal with watching the X keymap and modifier map state. * builtins.c (type_cmd): use type_key from keymap so it actually works. * builtins.c (mouseclick_cmd): use set_modifier_state from keymap to unpress any modifier keys the user might happen to be holding down as part of invoking the binding. * lexer.l (process_string): parse C-style strings ("\n", etc) Sun Jul 5 14:24:08 1998 Dan Winship * nawm.c (main): Add -w flag / WINDOW_MANAGER env var interpretation. * builtins.c (moveto_cmd): If using vtwm.gamma, compensate for a bug in its events.c:HandleConfigureEvent() * cache.c (client_window, manager_window): simplify the case where we aren't running another window manager. * parser.y: add error productions to get slightly better errors * add xmalloc, xrealloc, xstrdup, and change everything to use them. Sat Jul 4 12:19:00 1998 Dan Winship * builtins.c (pick_fun): Add "pick" function. * array.c, etc: Add array type, including the "del" special form. * eval.c (eval_comp): Add explicit casts in integer compare code so it works with negative numbers now. Fri Jul 3 18:46:38 1998 Dan Winship * Redo variable handling so function variables are now properly local. Define functions in two parts so the name is visible from within the function itself. Now you can call functions recursively. (There's a bit of a kludge here which I'll fix later.) * builtins.c (itoa_fun): Add itoa now that we have garbage collection. Wed May 13 23:12:40 1998 Dan Winship * cell.c: memory-management/garbage collection stuff. For now, it's only used for strings (which are now fixed to not leak memory). Sun May 10 12:51:59 1998 Dan Winship * Add enter and leave bindings Sat May 9 13:57:05 1998 Dan Winship * builtins.c: add width, height, dwidth, dheight, xloc, and yloc functions. (delete_cmd): add delete command. (restart_cmd): implement restart command. (refresh_cmd): implement refresh command. * cache.c (find_window): rebuild cache on a cache miss * px and py are now functions, not variables, so they're always accurate. * builtins.c (name_fun): deal with root window (from kcr) Sat Apr 11 16:35:47 1998 Dan Winship * builtins.c (system_cmd): Use fork/exec instead of system so we don't have to wait for command to finish. * nawm.c (main): handle SIGCHLD to avoid zombies Sat Apr 4 14:08:12 1998 Dan Winship * startup and shutdown are now begin and end, and they can occur inside modes as well as at the top level. (The begin and end bindings for a mode are run when the mode is entered or left.) * User-defined functions and commands should work now... at least more than they used to. (The `return' special form has been added to support user-defined functions.) * Fixed bugs such that (a) you can have single-letter variables now, and (b) you can have variables that have the same names as X keysyms. (Also, variables can shadow other variables now.) Sun Mar 22 13:26:48 1998 Dan Winship * Created this file * builtins.c (warpto_cmd): do a find after a warptowindow * Cache is mostly working now. It sometimes doesn't uncache windows when they go away though. Also, at least once, I've seen it not be able to `find' the "Console" window after it was running for a while. * Modes and variables are mostly working now. * There's an undocumented `-d' (debug) flag that does whatever I find convenient at any given time. Currently it makes it dump the window cache on a SIGINT, and flame visibly about BadWindow errors, and set yydebug. * New functions: atoi(x) converts a string to an int, env(x) looks up an environment variable, hasname(win, name) checks if the given window has the given name as a name or class.