summaryrefslogtreecommitdiffstats
path: root/StackSet.hs
AgeCommit message (Collapse)Author
2007-05-20comment onlyDon Stewart
darcs-hash:20070520090846-9c5c1-6b99085411c441a4d8217cb6b9d18edf198bfd4e
2007-05-20HEADS UP: Rewrite StackSet as a ZipperDon Stewart
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
2007-05-16Read is not needed for StackSetSpencer Janssen
darcs-hash:20070516054233-a5988-b71d4b13ec6dfafe367ea4a0dad0b32f0614b318
2007-05-10keep focus stack.David Roundy
darcs-hash:20070510131637-72aca-2978a0234147fbb748962a27c68b797bd2e747d5
2007-05-08Remove unsafe fromJustSpencer Janssen
darcs-hash:20070508163822-a5988-cb12015569105b9e646a5c12fc8dc02099a4beed
2007-05-08Work around the fact that Yhc gets defaulting a bit wrongNeil Mitchell http://www.cs.york.ac.uk/~ndm/
darcs-hash:20070508124949-fbc8d-1d778c43323434b6f286af1505b2c0489eb09ac2
2007-05-08Remove unsafe use of headSpencer Janssen
darcs-hash:20070508152116-a5988-16a82d62661a5ccd0a95f88ced57cd3e9df5fd67
2007-05-08Make 'index' return Nothing, rather than errorSpencer Janssen
darcs-hash:20070508151200-a5988-3da2bb925de6c610ed9b7a5ab5bccedb3483d032
2007-05-08Use 'drop 1' rather than tail, skip equality check.Spencer Janssen
darcs-hash:20070508150943-a5988-84c0ebc06bc745ecdacae2ced6863b63a9585756
2007-05-08StackSet.view: ignore invalid indicesSpencer Janssen
darcs-hash:20070508143951-a5988-5b1aea6415436bc5cee632a60efc42300cfbf1e9
2007-05-08Change the swap function so its Haskell 98, by using list-comps instead of ↵Neil Mitchell http://www.cs.york.ac.uk/~ndm/
pattern-guards. darcs-hash:20070508123158-fbc8d-1592375172ef513d85c5e0095c689abf9ac5fc9b
2007-05-05make quickcheck tests friendlier to read.David Roundy
darcs-hash:20070505175415-72aca-2129b8432f6f2ddb9d1498b0503b86c401020194
2007-05-03Add -fglasgow-exts for pattern guards. Properties.hs doesn't complain anymoreSpencer Janssen
darcs-hash:20070503214221-a5988-c596e80afe12a486f08901e853071d42dd2d9123
2007-05-02First steps to adding floating layerSpencer Janssen
darcs-hash:20070502195917-a5988-6831029fae89604c06ae962aaffdf81bfdad3297
2007-04-30remove redundant call to 'delete' in 'shift'Don Stewart
darcs-hash:20070430031151-9c5c1-7d66b13bc36af0e33af655f33ef287c8d4a379e7
2007-04-30clean 'delete' a littleDon Stewart
darcs-hash:20070430025319-9c5c1-e9f7308996d1400c1abd42d2d5f6ef30b8f01c06
2007-04-30shrink 'swap'Don Stewart
darcs-hash:20070430024813-9c5c1-28d697989294c4c5ce03e44553b75a8d7bc6c03e
2007-04-30shrink 'rotate' a littleDon Stewart
darcs-hash:20070430024525-9c5c1-fd54666b06e2d896e023e7ae1c8f2b32fdb7a815
2007-04-30move size into Properties.hsDon Stewart
darcs-hash:20070430021758-9c5c1-f1ae3d5c2639b9c3ee91ccdebaefe0cf4a2c6df5
2007-04-30don't need 'size' operation on StackSetDon Stewart
darcs-hash:20070430015927-9c5c1-9fdb237b91b517b77ab4a63c6675afa1ca759fe6
2007-04-29move fromList into Properties.hs, -17 locDon Stewart
darcs-hash:20070429035804-9c5c1-6e23a1c166235085f34bda111b332b2ef7b50e01
2007-04-26Remove toListSpencer Janssen
darcs-hash:20070426005713-a5988-10ed3204d691050d7ce018072d3fcf03221f545e
2007-04-19add 8 new QC tests, including tests of the layout algorithmDon Stewart
darcs-hash:20070419040833-9c5c1-9d8965bf22113a8aec47244eab7c769affb75951
2007-04-19Remove useless pragmaSpencer Janssen
darcs-hash:20070419015239-a5988-c3be57b9f5a20b149c4873020fb4d91fb1ab349f
2007-04-19Parameterise StackSet by two index types, rather than breaking abstractionDon Stewart
darcs-hash:20070419012705-9c5c1-3aa97e02123af08c3f4500c9e9c3bb7ab4121652
2007-04-19tweak loc count to match count_lines scriptDon Stewart
darcs-hash:20070418224725-9c5c1-e885b1392c8f6aaa1ccd5c5cbcdc9c41b29b6b6a
2007-04-19Promote now swaps focused window with master windowDon Stewart
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
2007-04-11and the tests still runDon Stewart
darcs-hash:20070411081500-9c5c1-de5c90255b488c617bee222ece8e4ff059a8a95a
2007-04-11Change semantics of 'promote'.Don Stewart
Previously 'promote' would move the currently focused window into the master position in tiled mode. This was *almost* a cycle of the windows, but not quite (depending on where the focus was, it was in fact a cycle). Now we do the obvious generalisation, and just cycle the current window stack. Simpler to understand, simpler to reason about. darcs-hash:20070411073456-9c5c1-3ee88f9ac46e2301b4c803ec4fd66798e6fee91d
2007-04-11merge with toList/fromList patchDon Stewart
darcs-hash:20070411060947-9c5c1-88a2c630ec0bb669c5d34410fb546cc1ff538ded
2007-04-11Statically distinguish Workspace and Screen indicesDon Stewart
darcs-hash:20070411060456-9c5c1-a5642813cffe434e60310d21497217ef3704b296
2007-04-11fromList/toList have # of screens + another QC propertyJason Creighton
darcs-hash:20070411044215-b9aa7-e66ef93fac9102201bfd145ebb26c38bbecd25de
2007-04-11Xinerama screen switching bugfixJason Creighton
darcs-hash:20070411041615-b9aa7-fb18a7f93c7825f269844c0fcb1acb24ec494870
2007-04-10moved screen <-> workspace mapping from XMonad to StackSetJason Creighton
darcs-hash:20070410062731-b9aa7-e1768a3fe6c0e3c749400dffc4a5a5e33e6a08c4
2007-04-01Remove trailing spaces, no content changedAlec Berryman
darcs-hash:20070401144539-39448-1903870c5ef75cc918a8ea3153c5b154feb4e644
2007-04-01formatting onlyDon Stewart
darcs-hash:20070401004726-9c5c1-ffe359da72bfe742bd6c6855e8451c0ea8a8938f
2007-03-28allow mouse to change current workspacedaniel
darcs-hash:20070328103435-c98ca-4d9fe6e66589e0bc9cbd79eabe41a559084ce37f
2007-03-22Add promoteSpencer Janssen
darcs-hash:20070322221547-a5988-e45624fd50539d7db13cf34d2b1e94612bdb06e9
2007-03-20Add raiseFocus.Spencer Janssen
darcs-hash:20070320160135-a5988-01f4a5df331fac6fbf00c209a40105da74b9b88d
2007-03-20Decouple the concepts of focus and window order. First step to tiling!Spencer Janssen
darcs-hash:20070320051124-a5988-5127c4860ce23d6eb569f6145cd592fe26689061
2007-03-18basic xinerama support (depends on Graphics.X11.Xinerama in X11-extras)Jason Creighton
darcs-hash:20070317234904-b9aa7-ef29cf597970298a24d770ec789f83638390d22a
2007-03-09unnec. export listDon Stewart
darcs-hash:20070309091328-9c5c1-38188ec996d52e28a3c0a0926ea07944dc21b016
2007-03-09unnec. `nub'Don Stewart
darcs-hash:20070309091045-9c5c1-4806d3d42d32c61490dc47ed6bc6af44c135b380
2007-03-09just use Map, not int map. strict updates don't seem to help btw.Don Stewart
darcs-hash:20070309083706-9c5c1-44ca977b482a5da147e2375306985310f2fb8633
2007-03-09comments on whether we lose space due to lazy updates of the stack setDon Stewart
darcs-hash:20070309081621-9c5c1-d79ec8b6281b71238a32aff076d99c2926f48c8c
2007-03-09explicit interface on StackSet. maybe it should be a seperate package ... ?Don Stewart
darcs-hash:20070309061255-9c5c1-77a4933e2d0a3af442eaf820bbff2469347f0a4c
2007-03-09simpler type (no need to cache size, we *could* grow new stacks on demand now)Don Stewart
darcs-hash:20070309043638-9c5c1-d943771821d71f87bae133c90d0d3f3a615f4010
2007-03-09replace Seq [a] with IntMap [a], hopefully gets 6.4 supportDon Stewart
darcs-hash:20070309043035-9c5c1-204ba4741c1d2ab784e986b48131517d33c34d3f
2007-03-09simplify StackSet api even further (-15 loc)Don Stewart
darcs-hash:20070309041707-9c5c1-3c9ef62c25f49b9025f137f73c8d25438a640ff4
2007-03-09shrink StackSet apiDon Stewart
darcs-hash:20070309035603-9c5c1-db366bd13e7423b1c8fb6cfaa90ed4947e3752c1