termonad 4.0.1.1 → 4.0.1.2
raw patch · 12 files changed
+59/−43 lines, 12 filessetup-changedPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Termonad.Config: data ConfigHooks
- Termonad.Pcre: inline_c_ffi_6989586621679112868 :: IO CUInt
- Termonad.Types: data ConfigHooks
+ Termonad.Config: newtype ConfigHooks
+ Termonad.Pcre: inline_c_ffi_6989586621679102244 :: IO CUInt
+ Termonad.Prelude: [getDown] :: Down a -> a
+ Termonad.Prelude: isResourceVanishedError :: IOError -> Bool
+ Termonad.Prelude: isResourceVanishedErrorType :: IOErrorType -> Bool
+ Termonad.Prelude: resourceVanishedErrorType :: IOErrorType
+ Termonad.Types: newtype ConfigHooks
- Termonad.Config.Colour: lensBackgroundColour :: forall c_a2dZP. Lens' (ColourConfig c_a2dZP) (Option c_a2dZP)
+ Termonad.Config.Colour: lensBackgroundColour :: forall c_a1eDN. Lens' (ColourConfig c_a1eDN) (Option c_a1eDN)
- Termonad.Config.Colour: lensCursorBgColour :: forall c_a2dZP. Lens' (ColourConfig c_a2dZP) (Option c_a2dZP)
+ Termonad.Config.Colour: lensCursorBgColour :: forall c_a1eDN. Lens' (ColourConfig c_a1eDN) (Option c_a1eDN)
- Termonad.Config.Colour: lensCursorFgColour :: forall c_a2dZP. Lens' (ColourConfig c_a2dZP) (Option c_a2dZP)
+ Termonad.Config.Colour: lensCursorFgColour :: forall c_a1eDN. Lens' (ColourConfig c_a1eDN) (Option c_a1eDN)
- Termonad.Config.Colour: lensForegroundColour :: forall c_a2dZP. Lens' (ColourConfig c_a2dZP) (Option c_a2dZP)
+ Termonad.Config.Colour: lensForegroundColour :: forall c_a1eDN. Lens' (ColourConfig c_a1eDN) (Option c_a1eDN)
- Termonad.Config.Colour: lensPalette :: forall c_a2dZP. Lens' (ColourConfig c_a2dZP) (Palette c_a2dZP)
+ Termonad.Config.Colour: lensPalette :: forall c_a1eDN. Lens' (ColourConfig c_a1eDN) (Palette c_a1eDN)
- Termonad.Prelude: infix 4 >
+ Termonad.Prelude: infix 4 >=
- Termonad.Prelude: infixl 6 +
+ Termonad.Prelude: infixl 6 -
- Termonad.Prelude: seq :: a -> b -> b
+ Termonad.Prelude: seq :: forall (r :: RuntimeRep) a (b :: TYPE r). a -> b -> b
Files
- .nix-helpers/nixpkgs.nix +9/−5
- .nix-helpers/termonad-with-packages.nix +1/−1
- CHANGELOG.md +6/−0
- Setup.hs +2/−2
- example-config/ExampleColourExtension.hs +3/−1
- example-config/ExampleGruvboxColourExtension.hs +5/−4
- example-config/ExampleSolarizedColourExtension.hs +5/−4
- src/Termonad/App.hs +8/−9
- src/Termonad/Config/Colour.hs +6/−7
- src/Termonad/Term.hs +1/−2
- src/Termonad/Types.hs +5/−7
- termonad.cabal +8/−1
.nix-helpers/nixpkgs.nix view
@@ -26,13 +26,13 @@ if isNull nixpkgs then builtins.fetchTarball {- # Recent version of nixpkgs master as of 2020-08-18 which uses LTS-16.9.- url = "https://github.com/NixOS/nixpkgs/archive/c5815280e92112a25d958a2ec8b3704d7d90c506.tar.gz";- sha256 = "09ic4s9s7w3lm0gmcxszm5j20cfv4n5lfvhdvgi7jzdbbbdps1nh";+ # Recent version of nixpkgs master as of 2020-12-27 which uses nightly-2020-12-14.+ url = "https://github.com/NixOS/nixpkgs/archive/84917aa00bf23c88e5874c683abe05edb0ba4078.tar.gz";+ sha256 = "1x3qh815d7k9yc72zpn5cfaaq2b1942q4pka6rx8b5i33yz4m61q"; } else nixpkgs; - compilerVersion = if isNull compiler then "ghc884" else compiler;+ compilerVersion = if isNull compiler then "ghc8103" else compiler; # An overlay that adds termonad to all haskell package sets. haskellPackagesOverlay = self: super: {@@ -66,7 +66,10 @@ src extraCabal2nixOptions {- inherit (self) gtk3;+ # There are Haskell packages called gtk3 and pcre2, which+ # makes these system dependencies not able to be resolved+ # correctly.+ inherit (self) gtk3 pcre2; vte_291 = self.vte; }; in@@ -95,6 +98,7 @@ self.cabal-install self.gnome3.glade self.haskellPackages.ghcid+ self.hlint ]; in
.nix-helpers/termonad-with-packages.nix view
@@ -115,7 +115,7 @@ in stdenv.mkDerivation {- name = "termonad-with-packages-${env.version}";+ name = "termonad-with-packages-ghc-${env.version}"; buildInputs = [ gdk_pixbuf gnome3.adwaita-icon-theme hicolor-icon-theme ]; nativeBuildInputs = [ wrapGAppsHook ]; dontBuild = true;
CHANGELOG.md view
@@ -1,3 +1,9 @@+## 4.0.1.2++* Disable doctest test-suite when building with GHC-8.10.3. The doctests+ appear to be segfaulting, but only when compiled with GHC-8.10.3.+ [#175](https://github.com/cdepillabout/termonad/pull/175).+ ## 4.0.1.1 * Bump upper dependency on `base` so that Termonad is compatible with
Setup.hs view
@@ -102,7 +102,7 @@ :: Version -> [String] createVteVersionCPPOpts vers =- catMaybes $+ catMaybes [ if vers >= mkVersion [0,44] then Just "-DVTE_VERSION_GEQ_0_44" else Nothing ] @@ -116,7 +116,7 @@ :: Version -- ^ 'Version' of the GTK3 library as reported by @pkg-config@. -> [String] -- ^ A list of CPP macros to show the GTK version. createGtkVersionCPPOpts gtkVersion =- catMaybes $+ catMaybes [ if gtkVersion >= mkVersion [3,22] then Just "-DGTK_VERSION_GEQ_3_22" else Nothing ]
example-config/ExampleColourExtension.hs view
@@ -4,6 +4,8 @@ module Main where +import Data.Maybe (fromMaybe)+ import Termonad ( CursorBlinkMode(CursorBlinkModeOff), Option(Set) , ShowScrollbar(ShowScrollbarNever), TMConfig, confirmExit, cursorBlinkMode@@ -44,7 +46,7 @@ -- Set the extended palette that has 8 colours standard colors and then 8 -- light colors. , palette = ExtendedPalette myStandardColours- (maybe defaultLightColours id myLightColours)+ (fromMaybe defaultLightColours myLightColours) } where -- This is a an example of creating a linked-list of colours,
example-config/ExampleGruvboxColourExtension.hs view
@@ -4,6 +4,7 @@ module Main where +import Data.Maybe (fromMaybe) import Termonad ( CursorBlinkMode(CursorBlinkModeOn) , Option(Set)@@ -70,7 +71,7 @@ } where gruvboxDark1 :: List8 (AlphaColour Double)- gruvboxDark1 = maybe defaultStandardColours id $ mkList8+ gruvboxDark1 = fromMaybe defaultStandardColours $ mkList8 [ createColour 40 40 40 -- bg0 , createColour 204 36 29 -- red.1 , createColour 152 151 26 -- green.2@@ -82,7 +83,7 @@ ] gruvboxDark2 :: List8 (AlphaColour Double)- gruvboxDark2 = maybe defaultStandardColours id $ mkList8+ gruvboxDark2 = fromMaybe defaultStandardColours $ mkList8 [ createColour 124 111 100 -- bg4 , createColour 251 71 52 -- red.9 , createColour 184 187 38 -- green.10@@ -105,7 +106,7 @@ } where gruvboxLight1 :: List8 (AlphaColour Double)- gruvboxLight1 = maybe defaultLightColours id $ mkList8+ gruvboxLight1 = fromMaybe defaultLightColours $ mkList8 [ createColour 251 241 199 -- bg0 , createColour 204 36 29 -- red.1 , createColour 152 151 26 -- green.2@@ -117,7 +118,7 @@ ] gruvboxLight2 :: List8 (AlphaColour Double)- gruvboxLight2 = maybe defaultLightColours id $ mkList8+ gruvboxLight2 = fromMaybe defaultLightColours $ mkList8 [ createColour 168 153 132 -- bg4 , createColour 157 0 6 -- red.9 , createColour 121 116 14 -- green.10
example-config/ExampleSolarizedColourExtension.hs view
@@ -4,6 +4,7 @@ module Main where +import Data.Maybe (fromMaybe) import Termonad ( CursorBlinkMode(CursorBlinkModeOn) , Option(Set)@@ -70,7 +71,7 @@ } where solarizedDark1 :: List8 (AlphaColour Double)- solarizedDark1 = maybe defaultStandardColours id $ mkList8+ solarizedDark1 = fromMaybe defaultStandardColours $ mkList8 [ createColour 7 54 66 -- base02 , createColour 220 50 47 -- red , createColour 133 153 0 -- green@@ -82,7 +83,7 @@ ] solarizedDark2 :: List8 (AlphaColour Double)- solarizedDark2 = maybe defaultStandardColours id $ mkList8+ solarizedDark2 = fromMaybe defaultStandardColours $ mkList8 [ createColour 0 43 54 -- base03 , createColour 203 75 22 -- orange , createColour 88 110 117 -- base01@@ -105,7 +106,7 @@ } where solarizedLight1 :: List8 (AlphaColour Double)- solarizedLight1 = maybe defaultLightColours id $ mkList8+ solarizedLight1 = fromMaybe defaultLightColours $ mkList8 [ createColour 7 54 66 -- base02 , createColour 220 50 47 -- red , createColour 133 153 0 -- green@@ -117,7 +118,7 @@ ] solarizedLight2 :: List8 (AlphaColour Double)- solarizedLight2 = maybe defaultLightColours id $ mkList8+ solarizedLight2 = fromMaybe defaultLightColours $ mkList8 [ createColour 0 43 54 -- base03 , createColour 203 75 22 -- orange , createColour 88 110 117 -- base01
src/Termonad/App.hs view
@@ -1,5 +1,3 @@-{-# LANGUAGE ForeignFunctionInterface #-}- module Termonad.App where import Termonad.Prelude@@ -315,6 +313,7 @@ -- -- If 'confirmExit' is 'False', then this function always returns -- 'ResponseTypeYes'.+{- HLINT ignore "Reduce duplication" -} askShouldExit :: TMState -> IO ResponseType askShouldExit mvarTMState = do tmState <- readMVar mvarTMState@@ -691,9 +690,9 @@ tmState <- readMVar mvarTMState let appWin = tmState ^. lensTMStateAppWin config = tmState ^. lensTMStateConfig- notebook = tmState ^. lensTMStateNotebook ^. lensTMNotebook- tabFocusList = tmState ^. lensTMStateNotebook ^. lensTMNotebookTabs- showMenu = config ^. lensOptions ^. lensShowMenu+ notebook = tmState ^. lensTMStateNotebook . lensTMNotebook+ tabFocusList = tmState ^. lensTMStateNotebook . lensTMNotebookTabs+ showMenu = config ^. lensOptions . lensShowMenu applicationWindowSetShowMenubar appWin showMenu setShowTabs config notebook -- Sets the remaining preferences to each tab@@ -703,9 +702,9 @@ applyNewPreferencesToTab mvarTMState tab = do tmState <- readMVar mvarTMState let fontDesc = tmState ^. lensTMStateFontDesc- term = tab ^. lensTMNotebookTabTerm ^. lensTerm+ term = tab ^. lensTMNotebookTabTerm . lensTerm scrolledWin = tab ^. lensTMNotebookTabTermContainer- options = tmState ^. lensTMStateConfig ^. lensOptions+ options = tmState ^. lensTMStateConfig . lensOptions terminalSetFont term (Just fontDesc) terminalSetCursorBlinkMode term (options ^. lensCursorBlinkMode) terminalSetWordCharExceptions term (options ^. lensWordCharExceptions)@@ -799,7 +798,7 @@ when (toEnum (fromIntegral res) == ResponseTypeAccept) $ do maybeFontDesc <- fontChooserGetFontDesc fontButton maybeFontConfig <-- liftM join $ mapM fontConfigFromFontDescription maybeFontDesc+ join <$> mapM fontConfigFromFontDescription maybeFontDesc maybeShowScrollbar <- comboBoxGetActive showScrollbarComboBoxText [ShowScrollbarNever ..] maybeShowTabBar <-@@ -923,7 +922,7 @@ "configuration file and running termonad with default settings." start tmConfig | otherwise -> do- putStrLn $ "IO error occurred when trying to run termonad:"+ putStrLn "IO error occurred when trying to run termonad:" print ioErr putStrLn "Don't know how to recover. Exiting." Right _ -> pure ()
src/Termonad/Config/Colour.hs view
@@ -177,7 +177,7 @@ -- >>> setAt 100 "hello" ["a","b","c","d"] -- ["a","b","c","d"] setAt :: forall a. Int -> a -> [a] -> [a]-setAt n newVal = overAt n (\_ -> newVal)+setAt n newVal = overAt n (const newVal) -- | Update a given value in a list. --@@ -280,14 +280,14 @@ deriving (Show, Eq, Functor, Foldable) getMatrix :: Matrix a -> [[[a]]]-getMatrix (Matrix (List6 m)) = fmap getList6 $ (fmap . fmap) getList6 m+getMatrix (Matrix (List6 m)) = fmap (getList6 . fmap getList6) m -- | Unsafe smart constructor for 6x6x6 Matrices. mkMatrix :: [[[a]]] -> Maybe (Matrix a) mkMatrix xs = if length xs == 6 && all (\x -> length x == 6) xs && all (all (\x -> length x == 6)) xs- then Just $ Matrix $ List6 (fmap List6 ((fmap . fmap) List6 xs))+ then Just $ Matrix $ List6 (fmap (List6 . fmap List6) xs) else Nothing -- | Unsafe smart constructor for 6x6x6 Matrices.@@ -296,14 +296,14 @@ case mkMatrix xs of Just xs' -> xs' Nothing ->- error $+ error "unsafeMkMatrix: input list must be exactly 6x6x6" -- | Set a given value in a 'Matrix'. -- -- Internally uses 'setAt'. See documentation on 'setAt' for some examples. setAtMatrix :: Int -> Int -> Int -> a -> Matrix a -> Matrix a-setAtMatrix x y z a m = overAtMatrix x y z (\_ -> a) m+setAtMatrix x y z a = overAtMatrix x y z (const a) -- | Set a given value in a 'Matrix'. --@@ -496,7 +496,7 @@ sRGB32 r g b 255 = withOpacity (sRGB24 r g b) 1 sRGB32 r g b a = let aDouble = fromIntegral a / 255- in (withOpacity (sRGB24 r g b) aDouble)+ in withOpacity (sRGB24 r g b) aDouble -- | Create an 'AlphaColour' that is fully 'opaque'. --@@ -873,4 +873,3 @@ addColourHook newHook oldHook tmState term = do oldHook tmState term newHook tmState term-
src/Termonad/Term.hs view
@@ -362,7 +362,7 @@ -- Should probably use GI.Vte.Functions.getUserShell, but contrary to its -- documentation it raises an exception rather wrap in Maybe. mShell <- lookupEnv "SHELL"- let argv = fromMaybe ["/usr/bin/env", "bash"] (pure <$> mShell)+ let argv = maybe ["/usr/bin/env", "bash"] pure mShell -- Launch the shell shellPid <- terminalSpawnSync@@ -484,4 +484,3 @@ menuAttachToWidget menu vteTerm Nothing menuPopupAtPointer menu Nothing pure rightClick-
src/Termonad/Types.hs view
@@ -155,9 +155,7 @@ } newTMTerm :: Terminal -> Int -> IO TMTerm-newTMTerm trm pd = do- unq <- newUnique- pure $ createTMTerm trm pd unq+newTMTerm trm pd = createTMTerm trm pd <$> newUnique getFocusedTermFromState :: TMState -> IO (Maybe Terminal) getFocusedTermFromState mvarTMState =@@ -342,7 +340,7 @@ -- [] whenSet :: Monoid m => Option a -> (a -> m) -> m whenSet = \case- Unset -> \_ -> mempty+ Unset -> const mempty Set x -> \f -> f x -- | Whether or not to show the scroll bar in a terminal.@@ -464,7 +462,7 @@ -- termonad's behaviour in order to implement new functionality. Fields should -- have sane @Semigroup@ and @Monoid@ instances so that config extensions can -- be combined uniformly and new hooks can be added without incident.-data ConfigHooks = ConfigHooks {+newtype ConfigHooks = ConfigHooks { -- | Produce an IO action to run on creation of new @Terminal@, given @TMState@ -- and the @Terminal@ in question. createTermHook :: TMState -> Terminal -> IO ()@@ -535,7 +533,7 @@ maybeWidgetFromNote <- notebookGetNthPage tmNote index32 let focusList = tmNotebookTabs $ tmStateNotebook tmState maybeScrollWinFromFL =- fmap tmNotebookTabTermContainer $ getFocusItemFL $ focusList+ tmNotebookTabTermContainer <$> getFocusItemFL focusList idx = fromIntegral index32 case (maybeWidgetFromNote, maybeScrollWinFromFL) of (Nothing, Nothing) -> pure Nothing@@ -575,7 +573,7 @@ invariantTabsAllMatch = do let tmNote = tmNotebook $ tmStateNotebook tmState focusList = tmNotebookTabs $ tmStateNotebook tmState- flList = fmap tmNotebookTabTermContainer $ toList focusList+ flList = tmNotebookTabTermContainer <$> toList focusList noteList <- notebookToList tmNote tabsMatch noteList flList where
termonad.cabal view
@@ -1,5 +1,5 @@ name: termonad-version: 4.0.1.1+version: 4.0.1.2 synopsis: Terminal emulator configurable in Haskell description: Termonad is a terminal emulator configurable in Haskell. It is extremely@@ -147,8 +147,15 @@ , doctest , QuickCheck , template-haskell+ , termonad default-language: Haskell2010 ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N+ -- For some reason doctests appear to be segfaulting when compiling with+ -- ghc-8.10.3, so only build them when using ghc-8.10.2 or earlier.+ if impl(ghc <= 8.10.2)+ buildable: True+ else+ buildable: False test-suite termonad-test type: exitcode-stdio-1.0