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