mmagorsc/taskmonad

View on GitHub
docs/src/TaskMonad.GridSelect.html

Summary

Maintainability
Test Coverage
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE ScopedTypeVariables, TypeSynonymInstances, FlexibleInstances #-}</span><span>
</span><a name="line-2"></a><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><a name="line-3"></a><span class="hs-comment">-- |</span><span>
</span><a name="line-4"></a><span class="hs-comment">-- Module      :  TaskMonad.GridSelect</span><span>
</span><a name="line-5"></a><span class="hs-comment">-- Copyright   :  Max Magorsch &lt;max@magorsch.de&gt;</span><span>
</span><a name="line-6"></a><span class="hs-comment">-- License     :  BSD-style (see LICENSE)</span><span>
</span><a name="line-7"></a><span class="hs-comment">--</span><span>
</span><a name="line-8"></a><span class="hs-comment">-- Maintainer  :  Max Magorsch &lt;max@magorsch.de&gt;</span><span>
</span><a name="line-9"></a><span class="hs-comment">-- Stability   :  unstable</span><span>
</span><a name="line-10"></a><span class="hs-comment">-- Portability :  unportable</span><span>
</span><a name="line-11"></a><span class="hs-comment">--</span><span>
</span><a name="line-12"></a><span class="hs-comment">-- TaskMonad.GridSelect uses 'GridSelect.Extras' to display various information from taskwarrior. </span><span>
</span><a name="line-13"></a><span class="hs-comment">--</span><span>
</span><a name="line-14"></a><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><a name="line-15"></a><span>
</span><a name="line-16"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">TaskMonad.GridSelect</span><span>
</span><a name="line-17"></a><span>  </span><span class="hs-special">(</span><span>
</span><a name="line-18"></a><span>       </span><span class="hs-comment">-- * Screenshot</span><span>
</span><a name="line-19"></a><span>       </span><span class="hs-comment">-- $screenshots</span><span>
</span><a name="line-20"></a><span>       </span><span class="hs-comment">-- </span><span>
</span><a name="line-21"></a><span>
</span><a name="line-22"></a><span>       </span><span class="hs-comment">-- * Possible GridSelects</span><span>
</span><a name="line-23"></a><span>    </span><a href="TaskMonad.GridSelect.html#taskSelect"><span class="hs-identifier hs-var">taskSelect</span></a><span>
</span><a name="line-24"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#taskSelectWithConfig"><span class="hs-identifier hs-var">taskSelectWithConfig</span></a><span>
</span><a name="line-25"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#tagSelect"><span class="hs-identifier hs-var">tagSelect</span></a><span>
</span><a name="line-26"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#tagSelectWithConfig"><span class="hs-identifier hs-var">tagSelectWithConfig</span></a><span>
</span><a name="line-27"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#projectSelect"><span class="hs-identifier hs-var">projectSelect</span></a><span>
</span><a name="line-28"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#projectSelectWithConfig"><span class="hs-identifier hs-var">projectSelectWithConfig</span></a><span>
</span><a name="line-29"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#dueSelect"><span class="hs-identifier hs-var">dueSelect</span></a><span>
</span><a name="line-30"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#dueSelectWithConfig"><span class="hs-identifier hs-var">dueSelectWithConfig</span></a><span>
</span><a name="line-31"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#togglePriority"><span class="hs-identifier hs-var">togglePriority</span></a><span>
</span><a name="line-32"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#togglePriorityWithConfig"><span class="hs-identifier hs-var">togglePriorityWithConfig</span></a><span>
</span><a name="line-33"></a><span>  </span><span class="hs-special">,</span><span>
</span><a name="line-34"></a><span>
</span><a name="line-35"></a><span>       </span><span class="hs-comment">-- * Configuration</span><span>
</span><a name="line-36"></a><span>    </span><a href="TaskMonad.GridSelect.html#buildTWGSExtraConfig"><span class="hs-identifier hs-var">buildTWGSExtraConfig</span></a><span>
</span><a name="line-37"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#buildTWGSConfig"><span class="hs-identifier hs-var">buildTWGSConfig</span></a><span>
</span><a name="line-38"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#defaultTWGSConfig"><span class="hs-identifier hs-var">defaultTWGSConfig</span></a><span>
</span><a name="line-39"></a><span>  </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#defaultTWGSExtraConfig"><span class="hs-identifier hs-var">defaultTWGSExtraConfig</span></a><span>
</span><a name="line-40"></a><span>  </span><span class="hs-special">)</span><span>
</span><a name="line-41"></a><span class="hs-keyword">where</span><span>
</span><a name="line-42"></a><span>
</span><a name="line-43"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">Data.List</span><span>
</span><a name="line-44"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">Data.Maybe</span><span>
</span><a name="line-45"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">System.Process</span><span>
</span><a name="line-46"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">System.IO</span><span>
</span><a name="line-47"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">Control.Monad</span><span>                  </span><span class="hs-special">(</span><span> </span><span class="hs-identifier hs-var">filterM</span><span> </span><span class="hs-special">)</span><span>
</span><a name="line-48"></a><span>
</span><a name="line-49"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad</span><span>                  </span><span class="hs-keyword">hiding</span><span> </span><span class="hs-special">(</span><span> </span><span class="hs-identifier hs-var">liftX</span><span> </span><span class="hs-special">)</span><span>
</span><a name="line-50"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Util.Font</span><span>
</span><a name="line-51"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">XMonad.StackSet</span><span>               </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">W</span><span>
</span><a name="line-52"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Layout.Decoration</span><span>
</span><a name="line-53"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Prompt</span><span>
</span><a name="line-54"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Prompt.Input</span><span>
</span><a name="line-55"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Util.Image</span><span>
</span><a name="line-56"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Util.NamedWindows</span><span>
</span><a name="line-57"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Util.XUtils</span><span>
</span><a name="line-58"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Util.NamedScratchpad</span><span>
</span><a name="line-59"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Util.Run</span><span>
</span><a name="line-60"></a><span class="hs-keyword">import</span><span>           </span><span class="hs-identifier">XMonad.Actions.GridSelect</span><span>
</span><a name="line-61"></a><span>
</span><a name="line-62"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><a href="GridSelect.Extras.html"><span class="hs-identifier">GridSelect.Extras</span></a><span>
</span><a name="line-63"></a><span>
</span><a name="line-64"></a><span class="hs-keyword">import</span><span>           </span><a href="TaskMonad.Utils.html"><span class="hs-identifier">TaskMonad.Utils</span></a><span>
</span><a name="line-65"></a><span class="hs-keyword">import</span><span>           </span><a href="TaskMonad.ScratchPad.html"><span class="hs-identifier">TaskMonad.ScratchPad</span></a><span>
</span><a name="line-66"></a><span>
</span><a name="line-67"></a><span class="hs-comment">-- $screenshots</span><span>
</span><a name="line-68"></a><span class="hs-comment">-- 'togglePriority' in action:</span><span>
</span><a name="line-69"></a><span class="hs-comment">-- </span><span>
</span><a name="line-70"></a><span class="hs-comment">-- &lt;&lt; ./taskmonad-gridselect.png &gt;&gt;</span><span>
</span><a name="line-71"></a><span>
</span><a name="line-72"></a><span>
</span><a name="line-73"></a><span class="hs-comment">-- | A GridSelect displaying a filtered list of all taskwarrior tasks</span><span>
</span><a name="line-74"></a><span class="hs-identifier">taskSelectWithConfig</span><span>
</span><a name="line-75"></a><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-comment">-- ^ a filter to be applied, please refer to [TaskWarrior Filter](https://taskwarrior.org/docs/filter.html) for further information</span><span>
</span><a name="line-76"></a><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">GSConfig</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ^ the GridSelect config to be used</span><span>
</span><a name="line-77"></a><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ^ the gridselect displaying all filtered tasks</span><span>
</span><a name="line-78"></a><a name="taskSelectWithConfig"><a href="TaskMonad.GridSelect.html#taskSelectWithConfig"><span class="hs-identifier">taskSelectWithConfig</span></a></a><span> </span><a name="local-6989586621679061644"><a href="#local-6989586621679061644"><span class="hs-identifier">filter</span></a></a><span> </span><a name="local-6989586621679061645"><a href="#local-6989586621679061645"><span class="hs-identifier">gsConfig</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-79"></a><span>  </span><span class="hs-identifier hs-var">io</span><span> </span><span class="hs-special">(</span><a href="TaskMonad.Utils.html#getTaskwarriorTaskList"><span class="hs-identifier hs-var">getTaskwarriorTaskList</span></a><span> </span><a href="#local-6989586621679061644"><span class="hs-identifier hs-var">filter</span></a><span> </span><span class="hs-special">[</span><span class="hs-string">&quot;id&quot;</span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;description&quot;</span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&gt;&gt;=</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679061649"><a href="#local-6989586621679061649"><span class="hs-identifier">bs</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679061649"><span class="hs-identifier hs-var">bs</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-80"></a><span>    </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">safeSpawn</span><span> </span><span class="hs-string">&quot;firefox&quot;</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-81"></a><span>    </span><span class="hs-identifier">_</span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">runSelectedAction</span><span> </span><a href="#local-6989586621679061645"><span class="hs-identifier hs-var">gsConfig</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="#local-6989586621679061646"><span class="hs-identifier hs-var">finishGS</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">fmap</span><span> </span><a href="#local-6989586621679061647"><span class="hs-identifier hs-var">openBuffer</span></a><span> </span><a href="#local-6989586621679061649"><span class="hs-identifier hs-var">bs</span></a><span>
</span><a name="line-82"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-83"></a><span>  </span><a name="local-6989586621679061646"><a href="#local-6989586621679061646"><span class="hs-identifier">finishGS</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-string">&quot;[Finish]&quot;</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">unsafeSpawn</span><span> </span><span class="hs-string">&quot;&quot;</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">:</span><span class="hs-special">)</span><span>
</span><a name="line-84"></a><span>  </span><a name="local-6989586621679061647"><a href="#local-6989586621679061647"><span class="hs-identifier">openBuffer</span></a></a><span> </span><a name="local-6989586621679061648"><a href="#local-6989586621679061648"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679061648"><span class="hs-identifier hs-var">x</span></a><span> </span><span class="hs-operator hs-var">!!</span><span> </span><span class="hs-number">1</span><span class="hs-special">,</span><span> </span><a href="TaskMonad.ScratchPad.html#twscratchpad"><span class="hs-identifier hs-var">twscratchpad</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">head</span><span> </span><a href="#local-6989586621679061648"><span class="hs-identifier hs-var">x</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot; information&quot;</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-85"></a><span>
</span><a name="line-86"></a><span>
</span><a name="line-87"></a><span class="hs-comment">-- | A wrapper around 'taskSelectWithConfig' using the default GSConfig</span><span>
</span><a name="line-88"></a><span class="hs-identifier">taskSelect</span><span>
</span><a name="line-89"></a><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-comment">-- ^ a filter to be applied, please refer to [TaskWarrior Filter](https://taskwarrior.org/docs/filter.html) for further information</span><span>
</span><a name="line-90"></a><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ^ the gridselect displaying all filtered tasks</span><span>
</span><a name="line-91"></a><a name="taskSelect"><a href="TaskMonad.GridSelect.html#taskSelect"><span class="hs-identifier">taskSelect</span></a></a><span> </span><a name="local-6989586621679061650"><a href="#local-6989586621679061650"><span class="hs-identifier">filter</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TaskMonad.GridSelect.html#taskSelectWithConfig"><span class="hs-identifier hs-var">taskSelectWithConfig</span></a><span> </span><a href="#local-6989586621679061650"><span class="hs-identifier hs-var">filter</span></a><span> </span><span class="hs-special">(</span><a href="TaskMonad.GridSelect.html#buildTWGSConfig"><span class="hs-identifier hs-var">buildTWGSConfig</span></a><span> </span><span class="hs-number">300</span><span class="hs-special">)</span><span>
</span><a name="line-92"></a><span>
</span><a name="line-93"></a><span>
</span><a name="line-94"></a><span class="hs-comment">-- | A GridSelect displaying a list of the tags of all pending taskwarrior tasks. After a tag has been selected, a second gridselect showing a filtered list of taskwarrior tasks that have the selected tag will be displayed. </span><span>
</span><a name="line-95"></a><span class="hs-identifier">tagSelectWithConfig</span><span>
</span><a name="line-96"></a><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">GSConfig</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">GSConfig</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ^ A tuple containing two GSConfigs. The first one is used to configure the gridselect displaying the list of tags. The second one is used to configure the gridselect displaying the resulting fitlered list of tasks. </span><span>
</span><a name="line-97"></a><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ^ a gridSelect displaying a list of the tags of all pending taskwarrior tasks</span><span>
</span><a name="line-98"></a><a name="tagSelectWithConfig"><a href="TaskMonad.GridSelect.html#tagSelectWithConfig"><span class="hs-identifier">tagSelectWithConfig</span></a></a><span> </span><span class="hs-special">(</span><a name="local-6989586621679061651"><a href="#local-6989586621679061651"><span class="hs-identifier">fstGsConfig</span></a></a><span class="hs-special">,</span><span> </span><a name="local-6989586621679061652"><a href="#local-6989586621679061652"><span class="hs-identifier">sndGsConfig</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-99"></a><span>  </span><span class="hs-identifier hs-var">io</span><span> </span><span class="hs-special">(</span><a href="TaskMonad.Utils.html#getTaskwarriorIds"><span class="hs-identifier hs-var">getTaskwarriorIds</span></a><span> </span><span class="hs-string">&quot;status:pending&quot;</span><span> </span><span class="hs-string">&quot;tags&quot;</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&gt;&gt;=</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679061660"><a href="#local-6989586621679061660"><span class="hs-identifier">bs</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679061660"><span class="hs-identifier hs-var">bs</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-100"></a><span>    </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">safeSpawn</span><span> </span><span class="hs-string">&quot;firefox&quot;</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-101"></a><span>    </span><span class="hs-identifier">_</span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">runSelectedAction</span><span> </span><a href="#local-6989586621679061651"><span class="hs-identifier hs-var">fstGsConfig</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="#local-6989586621679061653"><span class="hs-identifier hs-var">finishGS</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">fmap</span><span> </span><a href="#local-6989586621679061654"><span class="hs-identifier hs-var">openBuffer</span></a><span>
</span><a name="line-102"></a><span>                                                          </span><span class="hs-special">(</span><a href="#local-6989586621679061655"><span class="hs-identifier hs-var">filteredTags</span></a><span> </span><a href="#local-6989586621679061660"><span class="hs-identifier hs-var">bs</span></a><span class="hs-special">)</span><span>
</span><a name="line-103"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-104"></a><span>  </span><a name="local-6989586621679061653"><a href="#local-6989586621679061653"><span class="hs-identifier">finishGS</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-string">&quot;[Finish]&quot;</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">unsafeSpawn</span><span> </span><span class="hs-string">&quot;&quot;</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">:</span><span class="hs-special">)</span><span>
</span><a name="line-105"></a><span>  </span><a name="local-6989586621679061654"><a href="#local-6989586621679061654"><span class="hs-identifier">openBuffer</span></a></a><span> </span><a name="local-6989586621679061657"><a href="#local-6989586621679061657"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679061657"><span class="hs-identifier hs-var">x</span></a><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#taskSelectWithConfig"><span class="hs-identifier hs-var">taskSelectWithConfig</span></a><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;+&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679061657"><span class="hs-identifier hs-var">x</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679061652"><span class="hs-identifier hs-var">sndGsConfig</span></a><span class="hs-special">)</span><span>
</span><a name="line-106"></a><span>  </span><a name="local-6989586621679061655"><a href="#local-6989586621679061655"><span class="hs-identifier">filteredTags</span></a></a><span> </span><a name="local-6989586621679061658"><a href="#local-6989586621679061658"><span class="hs-identifier">bs</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><a href="#local-6989586621679061659"><span class="hs-identifier hs-var">x</span></a><span> </span><span class="hs-glyph">|</span><span> </span><a name="local-6989586621679061659"><a href="#local-6989586621679061659"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="#local-6989586621679061658"><span class="hs-identifier hs-var">bs</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679061659"><span class="hs-identifier hs-var">x</span></a><span> </span><span class="hs-special">`</span><span class="hs-identifier hs-var">notElem</span><span class="hs-special">`</span><span> </span><a href="#local-6989586621679061656"><span class="hs-identifier hs-var">hiddenTags</span></a><span> </span><span class="hs-special">]</span><span>
</span><a name="line-107"></a><span>  </span><a name="local-6989586621679061656"><a href="#local-6989586621679061656"><span class="hs-identifier">hiddenTags</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-108"></a><span>    </span><span class="hs-special">[</span><span> </span><span class="hs-string">&quot;BLOCKED&quot;</span><span>
</span><a name="line-109"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;UNBLOCKED&quot;</span><span>
</span><a name="line-110"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;UNBLOCKED&quot;</span><span>
</span><a name="line-111"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;DUE&quot;</span><span>
</span><a name="line-112"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;DUETODAY&quot;</span><span>
</span><a name="line-113"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;TODAY&quot;</span><span>
</span><a name="line-114"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;OVERDUE&quot;</span><span>
</span><a name="line-115"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;WEEK&quot;</span><span>
</span><a name="line-116"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;MONTH&quot;</span><span>
</span><a name="line-117"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;QUARTER&quot;</span><span>
</span><a name="line-118"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;YEAR&quot;</span><span>
</span><a name="line-119"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;ACTIVE&quot;</span><span>
</span><a name="line-120"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;SCHEDULED&quot;</span><span>
</span><a name="line-121"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;PARENT&quot;</span><span>
</span><a name="line-122"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;CHILD&quot;</span><span>
</span><a name="line-123"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;UNTIL&quot;</span><span>
</span><a name="line-124"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;WAITING&quot;</span><span>
</span><a name="line-125"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;ANNOTATED&quot;</span><span>
</span><a name="line-126"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;READY&quot;</span><span>
</span><a name="line-127"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;YESTERDAY&quot;</span><span>
</span><a name="line-128"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;TOMORROW&quot;</span><span>
</span><a name="line-129"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;TAGGED&quot;</span><span>
</span><a name="line-130"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;PENDING&quot;</span><span>
</span><a name="line-131"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;COMPLETED&quot;</span><span>
</span><a name="line-132"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;DELETED&quot;</span><span>
</span><a name="line-133"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;UDA&quot;</span><span>
</span><a name="line-134"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;ORPHAN&quot;</span><span>
</span><a name="line-135"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;PRIORITY&quot;</span><span>
</span><a name="line-136"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;PROJECT&quot;</span><span>
</span><a name="line-137"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;LATEST&quot;</span><span>
</span><a name="line-138"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;nocal&quot;</span><span>
</span><a name="line-139"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;nonag&quot;</span><span>
</span><a name="line-140"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;nocolor&quot;</span><span>
</span><a name="line-141"></a><span>    </span><span class="hs-special">]</span><span>
</span><a name="line-142"></a><span>
</span><a name="line-143"></a><span>
</span><a name="line-144"></a><span class="hs-comment">-- | A wrapper around 'tagSelectWithConfig' using the default GSConfig</span><span>
</span><a name="line-145"></a><span class="hs-identifier">tagSelect</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-146"></a><a name="tagSelect"><a href="TaskMonad.GridSelect.html#tagSelect"><span class="hs-identifier">tagSelect</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TaskMonad.GridSelect.html#tagSelectWithConfig"><span class="hs-identifier hs-var">tagSelectWithConfig</span></a><span> </span><span class="hs-special">(</span><a href="TaskMonad.GridSelect.html#defaultTWGSConfig"><span class="hs-identifier hs-var">defaultTWGSConfig</span></a><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#buildTWGSConfig"><span class="hs-identifier hs-var">buildTWGSConfig</span></a><span> </span><span class="hs-number">300</span><span class="hs-special">)</span><span>
</span><a name="line-147"></a><span>
</span><a name="line-148"></a><span>
</span><a name="line-149"></a><span class="hs-comment">-- | A GridSelect displaying a list of all pending projects. After a project has been selected, a second gridselect showing a filtered list of taskwarrior tasks that belong to the selected project  will be displayed.</span><span>
</span><a name="line-150"></a><span class="hs-identifier">projectSelectWithConfig</span><span>
</span><a name="line-151"></a><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">GSConfig</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">GSConfig</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ^ A tuple containing two GSConfigs. The first one is used to configure the gridselect displaying the list of pending projects. The second one is used to configure the gridselect displaying the resulting filtered list of tasks. </span><span>
</span><a name="line-152"></a><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ^ a GridSelect displaying a list of all pending projects</span><span>
</span><a name="line-153"></a><a name="projectSelectWithConfig"><a href="TaskMonad.GridSelect.html#projectSelectWithConfig"><span class="hs-identifier">projectSelectWithConfig</span></a></a><span> </span><span class="hs-special">(</span><a name="local-6989586621679061661"><a href="#local-6989586621679061661"><span class="hs-identifier">fstGsConfig</span></a></a><span class="hs-special">,</span><span> </span><a name="local-6989586621679061662"><a href="#local-6989586621679061662"><span class="hs-identifier">sndGsConfig</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-154"></a><span>  </span><span class="hs-identifier hs-var">io</span><span> </span><span class="hs-special">(</span><a href="TaskMonad.Utils.html#getTaskwarriorIds"><span class="hs-identifier hs-var">getTaskwarriorIds</span></a><span> </span><span class="hs-string">&quot;status:pending&quot;</span><span> </span><span class="hs-string">&quot;projects&quot;</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&gt;&gt;=</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679061666"><a href="#local-6989586621679061666"><span class="hs-identifier">bs</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679061666"><span class="hs-identifier hs-var">bs</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-155"></a><span>    </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">safeSpawn</span><span> </span><span class="hs-string">&quot;firefox&quot;</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-156"></a><span>    </span><span class="hs-identifier">_</span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">runSelectedAction</span><span> </span><a href="#local-6989586621679061661"><span class="hs-identifier hs-var">fstGsConfig</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="#local-6989586621679061663"><span class="hs-identifier hs-var">finishGS</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">fmap</span><span> </span><a href="#local-6989586621679061664"><span class="hs-identifier hs-var">openBuffer</span></a><span> </span><a href="#local-6989586621679061666"><span class="hs-identifier hs-var">bs</span></a><span>
</span><a name="line-157"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-158"></a><span>  </span><a name="local-6989586621679061663"><a href="#local-6989586621679061663"><span class="hs-identifier">finishGS</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-string">&quot;[Finish]&quot;</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">unsafeSpawn</span><span> </span><span class="hs-string">&quot;&quot;</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">:</span><span class="hs-special">)</span><span>
</span><a name="line-159"></a><span>  </span><a name="local-6989586621679061664"><a href="#local-6989586621679061664"><span class="hs-identifier">openBuffer</span></a></a><span> </span><a name="local-6989586621679061665"><a href="#local-6989586621679061665"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679061665"><span class="hs-identifier hs-var">x</span></a><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#taskSelectWithConfig"><span class="hs-identifier hs-var">taskSelectWithConfig</span></a><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;project:&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679061665"><span class="hs-identifier hs-var">x</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679061662"><span class="hs-identifier hs-var">sndGsConfig</span></a><span class="hs-special">)</span><span>
</span><a name="line-160"></a><span>
</span><a name="line-161"></a><span>
</span><a name="line-162"></a><span class="hs-comment">-- | A wrapper around 'projectSelectWithConfig' using the default GSConfig</span><span>
</span><a name="line-163"></a><span class="hs-identifier">projectSelect</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-164"></a><a name="projectSelect"><a href="TaskMonad.GridSelect.html#projectSelect"><span class="hs-identifier">projectSelect</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-165"></a><span>  </span><a href="TaskMonad.GridSelect.html#projectSelectWithConfig"><span class="hs-identifier hs-var">projectSelectWithConfig</span></a><span> </span><span class="hs-special">(</span><a href="TaskMonad.GridSelect.html#defaultTWGSConfig"><span class="hs-identifier hs-var">defaultTWGSConfig</span></a><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#buildTWGSConfig"><span class="hs-identifier hs-var">buildTWGSConfig</span></a><span> </span><span class="hs-number">300</span><span class="hs-special">)</span><span>
</span><a name="line-166"></a><span>
</span><a name="line-167"></a><span>
</span><a name="line-168"></a><span class="hs-comment">-- | A GridSelect displaying a list of due dates. After a due date has been selected, a second gridselect showing a filtered list of taskwarrior tasks will be displayed.</span><span>
</span><a name="line-169"></a><span class="hs-identifier">dueSelectWithConfig</span><span>
</span><a name="line-170"></a><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">GSConfig</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">GSConfig</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>  </span><span class="hs-comment">-- ^ A tuple containing two GSConfigs. The first one is used to configure the gridselect displaying the list of due dates. The second one is used to configure the gridselect displaying the resulting filtered list of tasks.</span><span>
</span><a name="line-171"></a><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ^ a GridSelect displaying a list of all due dates</span><span>
</span><a name="line-172"></a><a name="dueSelectWithConfig"><a href="TaskMonad.GridSelect.html#dueSelectWithConfig"><span class="hs-identifier">dueSelectWithConfig</span></a></a><span> </span><span class="hs-special">(</span><a name="local-6989586621679061667"><a href="#local-6989586621679061667"><span class="hs-identifier">fstGsConfig</span></a></a><span class="hs-special">,</span><span> </span><a name="local-6989586621679061668"><a href="#local-6989586621679061668"><span class="hs-identifier">sndGsConfig</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">runSelectedAction</span><span>
</span><a name="line-173"></a><span>  </span><a href="#local-6989586621679061667"><span class="hs-identifier hs-var">fstGsConfig</span></a><span>
</span><a name="line-174"></a><span>  </span><a href="#local-6989586621679061669"><span class="hs-identifier hs-var">actions</span></a><span>
</span><a name="line-175"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-176"></a><span>  </span><a name="local-6989586621679061669"><a href="#local-6989586621679061669"><span class="hs-identifier">actions</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-177"></a><span>    </span><span class="hs-special">[</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;overdue&quot;</span><span> </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#taskSelectWithConfig"><span class="hs-identifier hs-var">taskSelectWithConfig</span></a><span> </span><span class="hs-string">&quot;+OVERDUE&quot;</span><span> </span><a href="#local-6989586621679061668"><span class="hs-identifier hs-var">sndGsConfig</span></a><span class="hs-special">)</span><span>
</span><a name="line-178"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;today&quot;</span><span>   </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#taskSelectWithConfig"><span class="hs-identifier hs-var">taskSelectWithConfig</span></a><span> </span><span class="hs-string">&quot;+TODAY&quot;</span><span> </span><a href="#local-6989586621679061668"><span class="hs-identifier hs-var">sndGsConfig</span></a><span class="hs-special">)</span><span>
</span><a name="line-179"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;tomorrow&quot;</span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#taskSelectWithConfig"><span class="hs-identifier hs-var">taskSelectWithConfig</span></a><span> </span><span class="hs-string">&quot;+TOMORROW&quot;</span><span> </span><a href="#local-6989586621679061668"><span class="hs-identifier hs-var">sndGsConfig</span></a><span class="hs-special">)</span><span>
</span><a name="line-180"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;week&quot;</span><span>    </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#taskSelectWithConfig"><span class="hs-identifier hs-var">taskSelectWithConfig</span></a><span> </span><span class="hs-string">&quot;+WEEK&quot;</span><span> </span><a href="#local-6989586621679061668"><span class="hs-identifier hs-var">sndGsConfig</span></a><span class="hs-special">)</span><span>
</span><a name="line-181"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;month&quot;</span><span>   </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#taskSelectWithConfig"><span class="hs-identifier hs-var">taskSelectWithConfig</span></a><span> </span><span class="hs-string">&quot;+MONTH&quot;</span><span> </span><a href="#local-6989586621679061668"><span class="hs-identifier hs-var">sndGsConfig</span></a><span class="hs-special">)</span><span>
</span><a name="line-182"></a><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;year&quot;</span><span>    </span><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#taskSelectWithConfig"><span class="hs-identifier hs-var">taskSelectWithConfig</span></a><span> </span><span class="hs-string">&quot;+YEAR&quot;</span><span> </span><a href="#local-6989586621679061668"><span class="hs-identifier hs-var">sndGsConfig</span></a><span class="hs-special">)</span><span>
</span><a name="line-183"></a><span>    </span><span class="hs-special">]</span><span>
</span><a name="line-184"></a><span>
</span><a name="line-185"></a><span>
</span><a name="line-186"></a><span class="hs-comment">-- | A wrapper around 'dueSelectWithConfig' using the default GSConfig</span><span>
</span><a name="line-187"></a><span class="hs-identifier">dueSelect</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-188"></a><a name="dueSelect"><a href="TaskMonad.GridSelect.html#dueSelect"><span class="hs-identifier">dueSelect</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TaskMonad.GridSelect.html#dueSelectWithConfig"><span class="hs-identifier hs-var">dueSelectWithConfig</span></a><span> </span><span class="hs-special">(</span><a href="TaskMonad.GridSelect.html#defaultTWGSConfig"><span class="hs-identifier hs-var">defaultTWGSConfig</span></a><span class="hs-special">,</span><span> </span><a href="TaskMonad.GridSelect.html#buildTWGSConfig"><span class="hs-identifier hs-var">buildTWGSConfig</span></a><span> </span><span class="hs-number">300</span><span class="hs-special">)</span><span>
</span><a name="line-189"></a><span>
</span><a name="line-190"></a><span>
</span><a name="line-191"></a><span class="hs-comment">-- | A wrapper around 'togglePriorityWithConfig' using the default GridSelect.Extras.GSConfig</span><span>
</span><a name="line-192"></a><span class="hs-identifier">togglePriority</span><span>
</span><a name="line-193"></a><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-comment">-- ^ the priority that should be toggled</span><span>
</span><a name="line-194"></a><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ^ the resulting gridselect</span><span>
</span><a name="line-195"></a><a name="togglePriority"><a href="TaskMonad.GridSelect.html#togglePriority"><span class="hs-identifier">togglePriority</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TaskMonad.GridSelect.html#togglePriorityWithConfig"><span class="hs-identifier hs-var">togglePriorityWithConfig</span></a><span> </span><span class="hs-special">(</span><a href="TaskMonad.GridSelect.html#buildTWGSExtraConfig"><span class="hs-identifier hs-var">buildTWGSExtraConfig</span></a><span> </span><span class="hs-number">300</span><span class="hs-special">)</span><span>
</span><a name="line-196"></a><span>
</span><a name="line-197"></a><span>
</span><a name="line-198"></a><span class="hs-comment">-- | A gridselect showing all pending tasks. The tasks are colored according to their priority. Selecting a task toggles its priority. </span><span>
</span><a name="line-199"></a><span class="hs-identifier">togglePriorityWithConfig</span><span>
</span><a name="line-200"></a><span>  </span><span class="hs-glyph">::</span><span> </span><a href="GridSelect.Extras.html#GSConfig"><span class="hs-identifier hs-type">GridSelect.Extras.GSConfig</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ^ a GridSelect.Extras.GSConfig used for the gridselect</span><span>
</span><a name="line-201"></a><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">String</span><span> </span><span class="hs-comment">-- ^ the priority that should be toggled</span><span>
</span><a name="line-202"></a><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ^ the resulting gridselect</span><span>
</span><a name="line-203"></a><a name="togglePriorityWithConfig"><a href="TaskMonad.GridSelect.html#togglePriorityWithConfig"><span class="hs-identifier">togglePriorityWithConfig</span></a></a><span> </span><a name="local-6989586621679061670"><a href="#local-6989586621679061670"><span class="hs-identifier">gsConfig</span></a></a><span> </span><a name="local-6989586621679061671"><a href="#local-6989586621679061671"><span class="hs-identifier">priority</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-204"></a><span>  </span><span class="hs-identifier hs-var">io</span><span> </span><span class="hs-special">(</span><a href="TaskMonad.Utils.html#getTaskwarriorTaskList"><span class="hs-identifier hs-var">getTaskwarriorTaskList</span></a><span> </span><span class="hs-string">&quot;+INBOX&quot;</span><span> </span><span class="hs-special">[</span><span class="hs-string">&quot;id&quot;</span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;description&quot;</span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;priority&quot;</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><a name="line-205"></a><span>    </span><span class="hs-operator hs-var">&gt;&gt;=</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679061679"><a href="#local-6989586621679061679"><span class="hs-identifier">bs</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">case</span><span> </span><a href="#local-6989586621679061679"><span class="hs-identifier hs-var">bs</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-206"></a><span>          </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-var">safeSpawn</span><span> </span><span class="hs-string">&quot;firefox&quot;</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-207"></a><span>          </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-208"></a><span>            </span><a href="GridSelect.Extras.html#runSelectedActionWithMessageAndIcon"><span class="hs-identifier hs-var">GridSelect.Extras.runSelectedActionWithMessageAndIcon</span></a><span>
</span><a name="line-209"></a><span>                </span><a href="#local-6989586621679061670"><span class="hs-identifier hs-var">gsConfig</span></a><span>
</span><a name="line-210"></a><span>                </span><span class="hs-special">(</span><span class="hs-string">&quot;Select &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679061671"><span class="hs-identifier hs-var">priority</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;s&quot;</span><span class="hs-special">)</span><span>
</span><a name="line-211"></a><span>                </span><a href="TaskMonad.Utils.html#twicon"><span class="hs-identifier hs-var">twicon</span></a><span>
</span><a name="line-212"></a><span>              </span><span class="hs-operator hs-var">.</span><span> </span><a href="#local-6989586621679061672"><span class="hs-identifier hs-var">startEmacs</span></a><span>
</span><a name="line-213"></a><span>              </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">fmap</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679061673"><span class="hs-identifier hs-var">openBuffer</span></a><span> </span><a href="#local-6989586621679061671"><span class="hs-identifier hs-var">priority</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679061679"><span class="hs-identifier hs-var">bs</span></a><span>
</span><a name="line-214"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-215"></a><span>  </span><a name="local-6989586621679061672"><a href="#local-6989586621679061672"><span class="hs-identifier">startEmacs</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-string">&quot;[Finish]&quot;</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">safeSpawn</span><span> </span><span class="hs-string">&quot;task&quot;</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">:</span><span class="hs-special">)</span><span>
</span><a name="line-216"></a><span>  </span><a name="local-6989586621679061673"><a href="#local-6989586621679061673"><span class="hs-identifier">openBuffer</span></a></a><span> </span><a name="local-6989586621679061675"><a href="#local-6989586621679061675"><span class="hs-identifier">priority</span></a></a><span> </span><a name="local-6989586621679061676"><a href="#local-6989586621679061676"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-217"></a><span>    </span><span class="hs-special">(</span><span> </span><span class="hs-keyword">if</span><span> </span><a href="#local-6989586621679061676"><span class="hs-identifier hs-var">x</span></a><span> </span><span class="hs-operator hs-var">!!</span><span> </span><span class="hs-number">2</span><span> </span><span class="hs-operator hs-var">/=</span><span> </span><span class="hs-string">&quot;&quot;</span><span> </span><span class="hs-keyword">then</span><span> </span><a href="#local-6989586621679061676"><span class="hs-identifier hs-var">x</span></a><span> </span><span class="hs-operator hs-var">!!</span><span> </span><span class="hs-number">2</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;: &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679061676"><span class="hs-identifier hs-var">x</span></a><span> </span><span class="hs-operator hs-var">!!</span><span> </span><span class="hs-number">1</span><span> </span><span class="hs-keyword">else</span><span> </span><a href="#local-6989586621679061676"><span class="hs-identifier hs-var">x</span></a><span> </span><span class="hs-operator hs-var">!!</span><span> </span><span class="hs-number">1</span><span>
</span><a name="line-218"></a><span>    </span><span class="hs-special">,</span><span> </span><a href="#local-6989586621679061674"><span class="hs-identifier hs-var">toggleP</span></a><span> </span><a href="#local-6989586621679061675"><span class="hs-identifier hs-var">priority</span></a><span> </span><a href="#local-6989586621679061676"><span class="hs-identifier hs-var">x</span></a><span>
</span><a name="line-219"></a><span>    </span><span class="hs-special">)</span><span>
</span><a name="line-220"></a><span>  </span><a name="local-6989586621679061674"><a href="#local-6989586621679061674"><span class="hs-identifier">toggleP</span></a></a><span> </span><a name="local-6989586621679061677"><a href="#local-6989586621679061677"><span class="hs-identifier">priority</span></a></a><span> </span><a name="local-6989586621679061678"><a href="#local-6989586621679061678"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">if</span><span> </span><a href="#local-6989586621679061678"><span class="hs-identifier hs-var">x</span></a><span> </span><span class="hs-operator hs-var">!!</span><span> </span><span class="hs-number">2</span><span> </span><span class="hs-operator hs-var">==</span><span> </span><a href="#local-6989586621679061677"><span class="hs-identifier hs-var">priority</span></a><span>
</span><a name="line-221"></a><span>    </span><span class="hs-keyword">then</span><span> </span><span class="hs-identifier hs-var">unsafeSpawn</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;task &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier hs-var">head</span><span> </span><a href="#local-6989586621679061678"><span class="hs-identifier hs-var">x</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot; modify priority:&quot;</span><span class="hs-special">)</span><span>
</span><a name="line-222"></a><span>      </span><span class="hs-operator hs-var">&gt;&gt;</span><span> </span><a href="TaskMonad.GridSelect.html#togglePriority"><span class="hs-identifier hs-var">togglePriority</span></a><span> </span><a href="#local-6989586621679061677"><span class="hs-identifier hs-var">priority</span></a><span>
</span><a name="line-223"></a><span>    </span><span class="hs-keyword">else</span><span> </span><span class="hs-identifier hs-var">unsafeSpawn</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;task &quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier hs-var">head</span><span> </span><a href="#local-6989586621679061678"><span class="hs-identifier hs-var">x</span></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot; modify priority:&quot;</span><span> </span><span class="hs-operator hs-var">++</span><span> </span><a href="#local-6989586621679061677"><span class="hs-identifier hs-var">priority</span></a><span class="hs-special">)</span><span>
</span><a name="line-224"></a><span>      </span><span class="hs-operator hs-var">&gt;&gt;</span><span> </span><a href="TaskMonad.GridSelect.html#togglePriority"><span class="hs-identifier hs-var">togglePriority</span></a><span> </span><a href="#local-6989586621679061677"><span class="hs-identifier hs-var">priority</span></a><span>
</span><a name="line-225"></a><span>
</span><a name="line-226"></a><span>
</span><a name="line-227"></a><span class="hs-comment">-- | Method used to build a GridSelect.Extra.GSConfig by specifying a custom cellwidth</span><span>
</span><a name="line-228"></a><span class="hs-identifier">buildTWGSExtraConfig</span><span>
</span><a name="line-229"></a><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Integer</span><span> </span><span class="hs-comment">-- ^ the cellwidth</span><span>
</span><a name="line-230"></a><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><a href="GridSelect.Extras.html#GSConfig"><span class="hs-identifier hs-type">GridSelect.Extras.GSConfig</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ^ the resulting GridSelect.Extra.GSConfig</span><span>
</span><a name="line-231"></a><a name="buildTWGSExtraConfig"><a href="TaskMonad.GridSelect.html#buildTWGSExtraConfig"><span class="hs-identifier">buildTWGSExtraConfig</span></a></a><span> </span><a name="local-6989586621679061680"><a href="#local-6989586621679061680"><span class="hs-identifier">cellwidth</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">GridSelect.Extras.def</span><span>
</span><a name="line-232"></a><span>  </span><span class="hs-special">{</span><span> </span><span class="hs-identifier">GridSelect.Extras.gs_cellheight</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="hs-number">50</span><span>
</span><a name="line-233"></a><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">GridSelect.Extras.gs_cellwidth</span><span>    </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679061680"><span class="hs-identifier hs-var">cellwidth</span></a><span>
</span><a name="line-234"></a><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">GridSelect.Extras.gs_cellpadding</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-number">10</span><span>
</span><a name="line-235"></a><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">GridSelect.Extras.gs_font</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-string">&quot;xft:Liberation Mono:size=9:antialias=true&quot;</span><span>
</span><a name="line-236"></a><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">GridSelect.Extras.gs_navigate</span><span>     </span><span class="hs-glyph">=</span><span> </span><a href="GridSelect.Extras.html#defaultNavigation"><span class="hs-identifier hs-var">GridSelect.Extras.defaultNavigation</span></a><span>
</span><a name="line-237"></a><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">GridSelect.Extras.gs_originFractX</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-number">1</span><span> </span><span class="hs-operator hs-var">/</span><span> </span><span class="hs-number">2</span><span>
</span><a name="line-238"></a><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">GridSelect.Extras.gs_originFractY</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-number">1</span><span> </span><span class="hs-operator hs-var">/</span><span> </span><span class="hs-number">2</span><span>
</span><a name="line-239"></a><span>  </span><span class="hs-special">}</span><span>
</span><a name="line-240"></a><span>
</span><a name="line-241"></a><span>
</span><a name="line-242"></a><span class="hs-comment">-- | Method used to build a GSConfig by specifying a custom cellwidth </span><span>
</span><a name="line-243"></a><span class="hs-identifier">buildTWGSConfig</span><span>
</span><a name="line-244"></a><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Integer</span><span> </span><span class="hs-comment">-- ^ the cellwidth</span><span>
</span><a name="line-245"></a><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">GSConfig</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ^  the resulting GSConfig</span><span>
</span><a name="line-246"></a><a name="buildTWGSConfig"><a href="TaskMonad.GridSelect.html#buildTWGSConfig"><span class="hs-identifier">buildTWGSConfig</span></a></a><span> </span><a name="local-6989586621679061681"><a href="#local-6989586621679061681"><span class="hs-identifier">cellwidth</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">buildDefaultGSConfig</span><span> </span><a href="#local-6989586621679061682"><span class="hs-identifier hs-var">myColorizer</span></a><span class="hs-special">)</span><span>
</span><a name="line-247"></a><span>  </span><span class="hs-special">{</span><span> </span><span class="hs-identifier">gs_cellheight</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="hs-number">50</span><span>
</span><a name="line-248"></a><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">gs_cellwidth</span><span>    </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679061681"><span class="hs-identifier hs-var">cellwidth</span></a><span>
</span><a name="line-249"></a><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">gs_cellpadding</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-number">10</span><span>
</span><a name="line-250"></a><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">gs_font</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="hs-string">&quot;xft:Liberation Mono:size=9:antialias=true&quot;</span><span>
</span><a name="line-251"></a><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">gs_navigate</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">defaultNavigation</span><span>
</span><a name="line-252"></a><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">gs_originFractX</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-number">1</span><span> </span><span class="hs-operator hs-var">/</span><span> </span><span class="hs-number">2</span><span>
</span><a name="line-253"></a><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">gs_originFractY</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-number">1</span><span> </span><span class="hs-operator hs-var">/</span><span> </span><span class="hs-number">2</span><span>
</span><a name="line-254"></a><span>  </span><span class="hs-special">}</span><span>
</span><a name="line-255"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-256"></a><span>  </span><span class="hs-identifier">myColorizer</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679061683"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Bool</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">String</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">String</span><span class="hs-special">)</span><span>
</span><a name="line-257"></a><span>  </span><a name="local-6989586621679061682"><a href="#local-6989586621679061682"><span class="hs-identifier">myColorizer</span></a></a><span> </span><span class="hs-identifier">_</span><span> </span><a name="local-6989586621679061684"><a href="#local-6989586621679061684"><span class="hs-identifier">p</span></a></a><span> </span><span class="hs-glyph">|</span><span> </span><a href="#local-6989586621679061684"><span class="hs-identifier hs-var">p</span></a><span>         </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;#f44336&quot;</span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;#1a1a1a&quot;</span><span class="hs-special">)</span><span>
</span><a name="line-258"></a><span>                  </span><span class="hs-glyph">|</span><span> </span><span class="hs-identifier hs-var">otherwise</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-special">(</span><span class="hs-string">&quot;#1a1a1a&quot;</span><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;gray&quot;</span><span class="hs-special">)</span><span>
</span><a name="line-259"></a><span>
</span><a name="line-260"></a><span>
</span><a name="line-261"></a><span class="hs-comment">-- | The default GridSelect.Extra.GSConfig used for taskwarrior GridSelects</span><span>
</span><a name="line-262"></a><span class="hs-identifier">defaultTWGSExtraConfig</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="GridSelect.Extras.html#GSConfig"><span class="hs-identifier hs-type">GridSelect.Extras.GSConfig</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-263"></a><a name="defaultTWGSExtraConfig"><a href="TaskMonad.GridSelect.html#defaultTWGSExtraConfig"><span class="hs-identifier">defaultTWGSExtraConfig</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TaskMonad.GridSelect.html#buildTWGSExtraConfig"><span class="hs-identifier hs-var">buildTWGSExtraConfig</span></a><span> </span><span class="hs-number">130</span><span>
</span><a name="line-264"></a><span>
</span><a name="line-265"></a><span>
</span><a name="line-266"></a><span class="hs-comment">-- | The default GSConfig used for taskwarrior GridSelects</span><span>
</span><a name="line-267"></a><span class="hs-identifier">defaultTWGSConfig</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">GSConfig</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">X</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-268"></a><a name="defaultTWGSConfig"><a href="TaskMonad.GridSelect.html#defaultTWGSConfig"><span class="hs-identifier">defaultTWGSConfig</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TaskMonad.GridSelect.html#buildTWGSConfig"><span class="hs-identifier hs-var">buildTWGSConfig</span></a><span> </span><span class="hs-number">130</span><span>
</span><a name="line-269"></a><span>
</span><a name="line-270"></a><span>
</span><a name="line-271"></a></pre></body></html>