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