Age | Commit message (Collapse) | Author |
|
darcs-hash:20070626040907-9c5c1-397ec2ac01fda2e3f307605bf0f765bbc5724350
|
|
This change also removes the barely used 'size' field, and replaces
it with a tagMember predicate. The idea is to move towards the ability
to make the workspace tag be a String, which by default might be "1".."9",
but could also be customized to be something meaningful to the user.
darcs-hash:20070614140709-72aca-dbc1ce07bf964e4cff69deef95b453a0051ef782
|
|
This is a rerun of my change to make (Stack a) never be empty. Gives
us more type-safety.
darcs-hash:20070612150555-72aca-5f6e43aa33979c71679a73b44d93f9e2b8f9d2a8
|
|
darcs-hash:20070611165154-a5988-8c46751ffd4bd03249656e3b467b8e7569c48b09
|
|
darcs-hash:20070531043417-b9aa7-ac2c024e0ece4c9119e7e493d37b95e56cdea85d
|
|
The use of arrow keys for swapLeft/Right clash with firefox's back
button. Use the more intuitive mod-shift-jk for this. (It's a movement
operation, after all).
This clashes with IncMaster, so we use mod+comma and mod+period for
these (i.e. the keys mod < and mod > , to move windows to and from the
master area).
While we're here, replace the use of the terms 'left' and 'right' for
navigation, in comments and identifiers, with 'up' and 'down' instead.
Hence mod-j == focusDown. Far more intuitive for people (dons) who live
in fullscreen mode and have vim movement wired into their central
nervous system.
Principle of least VI surprise: movement down or up means using j and k.
darcs-hash:20070526111453-9c5c1-3242145ee5b51eb070a7dc3663f0d6cc01671d5c
|
|
darcs-hash:20070523232941-73ab9-92de9abc52676c6d28146445d1439cf0e375da59
|
|
darcs-hash:20070525163159-64353-15e04204eb27aebe6c98a58c8e26b5c5d3083348
|
|
See patch "Deleting a window should not affect focus". Checks this property.
darcs-hash:20070525035432-64d90-e1b1684a128a8336c14be3479b088988a5ddbd35
|
|
ws used by noDuplicates is actually a list of list of elements which
will pretty rarely raise any flags even if the StackSet actually does
contain duplicates. This patch concatenates ws to ensure the quickcheck
property tests accurately.
darcs-hash:20070525060842-64d90-efb031dd261cee4fdda597447036631bcce708fa
|
|
darcs-hash:20070522050008-ee4f8-6073519fac239b25e5e265ce3995ee75683fcb81
|
|
darcs-hash:20070522015422-73ab9-c62473d90f0df78e23a96acec0245e9bb9c275b6
|
|
darcs-hash:20070521055253-9c5c1-4cc51fadb10609340f798aece25097afeae92dbb
|
|
In order to give a better account of how focus and master interact, and
how each operation affects focus, we reimplement the StackSet type as a
two level nested 'Zipper'. To quote Oleg:
A Zipper is essentially an `updateable' and yet pure functional
cursor into a data structure. Zipper is also a delimited
continuation reified as a data structure.
That is, we use the Zipper as a cursor which encodes the window which is
in focus. Thus our data structure tracks focus correctly by
construction! We then get simple, obvious semantics for e.g. insert, in
terms of how it affects focus/master. Our transient-messes-with-focus
bug evaporates. 'swap' becomes trivial.
By moving focus directly into the stackset, we can toss some QC
properties about focus handling: it is simply impossible now for focus
to go wrong. As a benefit, we get a dozen new QC properties for free,
governing how master and focus operate.
The encoding of focus in the data type also simplifies the focus
handling in Operations: several operations affecting focus are now
simply wrappers over StackSet.
For the full story, please read the StackSet module, and the QC
properties.
Finally, we save ~40 lines with the simplified logic in Operations.hs
For more info, see the blog post on the implementation,
http://cgi.cse.unsw.edu.au/~dons/blog/2007/05/17#xmonad_part1b_zipper
darcs-hash:20070520070053-9c5c1-241f7ee7793f5db2b9e33d375965cdc21b26cbd7
|
|
darcs-hash:20070516031437-b9aa7-03d82cb2565a45fa0e17a34c4c20740b51ff625c
|
|
darcs-hash:20070515154011-72aca-1557c99da679a2be1e52f365f6ae72cfaf40fc87
|
|
darcs-hash:20070510131637-72aca-2978a0234147fbb748962a27c68b797bd2e747d5
|
|
darcs-hash:20070510032731-b9aa7-3fccb4cbb55c59636264a451c091b743c549e1f9
|
|
darcs-hash:20070508211907-a5988-25a6a03356b3017540a53f73bc609a98938c9a9e
|
|
darcs-hash:20070508210952-a5988-becbb2c91df5be261943aefeb50f6849fc805067
|
|
darcs-hash:20070508204921-a5988-7397764877c6d1a4acf1c004a1486231961d67d5
|
|
darcs-hash:20070508154621-fbc8d-8aeafa9c3c6cb40abf72a71f83c5a26d06a71501
|
|
darcs-hash:20070508152449-a5988-9c8631ebe825ce20e6513f74cb776fb69e0f8509
|
|
When focus was separated from the stack order on each workspace, we
forgot to update the Arbitrary instance to set random focus. As spotted
by David R, this then invalidates 4 of our QC properties. In particular,
the property involving where focus goes after a random transient
(annoying behaviour) appeared to be correct, but wasn't, due to
inadequate coverage.
This patch sets focus to a random window on each workspace. As a result,
we now catch the focus/raise/delete issue people have been complaining
about.
Lesson: make sure your QuickCheck generators are doing what you think
they are.
darcs-hash:20070508051126-9c5c1-55a0597e6838b35f12b3d348e85360cda6c237ca
|
|
darcs-hash:20070505175415-72aca-2129b8432f6f2ddb9d1498b0503b86c401020194
|
|
darcs-hash:20070505174357-b9aa7-2dc94a5ade7740c859831865d49e2da28d2ba0ac
|
|
darcs-hash:20070504014653-b9aa7-1709cb0b718a7a058021c76fb95f9654c43f54b1
|
|
darcs-hash:20070503074937-9c5c1-769ff9e521726032973c5712940c8c671746153e
|
|
darcs-hash:20070502201622-a5988-ac80f011c59276c52314ea128c07a54487c9bee9
|
|
darcs-hash:20070502195917-a5988-6831029fae89604c06ae962aaffdf81bfdad3297
|
|
darcs-hash:20070430065946-9c5c1-a63c2fa904ff1b915da40dfef6289ee935991992
|
|
darcs-hash:20070430062901-9c5c1-dd591516cb05072be929aa68d42be3b27476bd5a
|
|
darcs-hash:20070430055751-9c5c1-da5da09a5c2ff160fb7b243794d5fd3d7f954cb1
|
|
darcs-hash:20070430054345-9c5c1-98af87adafacc002e4df6e22ea42ac97f40b4399
|
|
darcs-hash:20070430051016-9c5c1-ec4c5d4ed5353026b45a769570d53cf299b31ec2
|
|
darcs-hash:20070430050133-9c5c1-32823e4a47119867b1425a8bbe81af44dc8b7f1e
|
|
darcs-hash:20070430035729-9c5c1-90b4f4b1e0db1884704e3a1d8fc246734220b603
|
|
darcs-hash:20070430021758-9c5c1-f1ae3d5c2639b9c3ee91ccdebaefe0cf4a2c6df5
|
|
darcs-hash:20070429035823-9c5c1-37dc9df3086bb7672eeea83e4add3aeb4ffa0bd4
|
|
darcs-hash:20070426005713-a5988-10ed3204d691050d7ce018072d3fcf03221f545e
|
|
Copied from Arbitrary Word8; I don't understand the coarbitrary definition and
the Word64 one may be erroneous, but Properties.hs now compiles and passes all
tests.
darcs-hash:20070419104652-39448-765063393aada90785e3160dcfb6c5cc43fb34f1
|
|
darcs-hash:20070419040833-9c5c1-9d8965bf22113a8aec47244eab7c769affb75951
|
|
darcs-hash:20070419012705-9c5c1-3aa97e02123af08c3f4500c9e9c3bb7ab4121652
|
|
darcs-hash:20070419001201-9c5c1-7ab345797094d164e47185bebefe05b1add6e120
|
|
darcs-hash:20070418224725-9c5c1-e885b1392c8f6aaa1ccd5c5cbcdc9c41b29b6b6a
|
|
This means other windows are unaffected.
The change from the previous cycling behaviour was felt necessary, since
cycling isn't a terribly useful operation.
Some properties that hold:
focus is unchanged by promotion
promote is idempotent (promoting twice does nothing)
the focused and master window will swap their positions in the stack
darcs-hash:20070418224236-9c5c1-4539f9f397e181f91dc9743e3ffac4b5796c0fac
|
|
darcs-hash:20070418014029-a5988-a7a422401fe062c25ab74764bdf2a5e44befb413
|
|
darcs-hash:20070418004533-72aca-d701954d2a24ceca7791e92c12a35c299b8272ff
|
|
darcs-hash:20070411081500-9c5c1-de5c90255b488c617bee222ece8e4ff059a8a95a
|
|
darcs-hash:20070411044215-b9aa7-e66ef93fac9102201bfd145ebb26c38bbecd25de
|