yi-contrib 0.6.3.0 → 0.6.4.0
raw patch · 2 files changed
+94/−2 lines, 2 filesdep +directorydep +filepathdep ~yi
Dependencies added: directory, filepath
Dependency ranges changed: yi
Files
- src/Yi/Config/Users/Reiner.hs +89/−0
- yi-contrib.cabal +5/−2
+ src/Yi/Config/Users/Reiner.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE NoMonomorphismRestriction, NamedFieldPuns, DoAndIfThenElse #-}+module Yi.Config.Users.Reiner (setup, main) where++import Yi.Config.Simple+import Yi.Prelude hiding ((%=))+import qualified Prelude++import qualified Yi.Mode.Haskell as Haskell+import Yi.Mode.Latex(latexMode3)+import Yi.Command(buildRun)++import System.Directory+import System.FilePath++-- | The main entry point, when used as a standalone yi.hs file.+main = configMain defaultEmacsConfig setup++-- | Registers my settings in the 'ConfigM' monad.+setup :: ConfigM ()+setup = do+ setFrontendPreferences ["pango", "vte", "vty"]+ fontSize %= Just 9++ globalBindKeys globalBindings+ evaluator %= publishedActionsEvaluator+ publishAction "createDirectory" yiCreateDirectory++ addMode Haskell.fastMode+ modeBindKeys Haskell.fastMode (ctrlCh 'c' ?>> ctrlCh 's' ?>>! insertHaskSection)++ -- LaTeX stuff+ addMode latexMode3+ publishAction "compileLatex" compileLatex+ modeBindKeys latexMode3 (ctrlCh 'c' ?>> ctrlCh 'c' ?>>! compileLatex)++--------------------------------------------------------------------------------+-- Actions and bindings --+--------------------------------------------------------------------------------+yiCreateDirectory :: YiM ()+yiCreateDirectory = do+ BufferFileInfo{bufInfoFileName} <- withEditor $ withBuffer0 bufInfoB+ let dir = takeDirectory bufInfoFileName+ exists <- io $ doesDirectoryExist dir+ if not exists + then do+ io $ createDirectoryIfMissing True dir+ withEditor $ printMsg $ "Created directory '" ++ dir ++ "'."+ else withEditor $ printMsg $ "Directory already exists!"++sectionSize = 80++-- inserts the "Actions and bindings" header above+insertHaskSection :: String -> BufferM ()+insertHaskSection s+ | lenS >= sectionSize - 6 = do+ insertDashes lenS+ newlineB+ insertN s+ newlineB+ insertDashes lenS+ | otherwise = do+ insertDashes sectionSize+ newlineB+ insertN "--"+ let nSpaces = sectionSize - 4 - lenS+ nSpacesL = nSpaces `div` 2+ nSpacesR = nSpaces - nSpacesL+ insertN (replicate nSpacesL ' ')+ insertN s+ insertN (replicate nSpacesR ' ')+ insertN "--"+ newlineB+ insertDashes sectionSize+ where lenS = Prelude.length s+ insertDashes n = insertN (replicate n '-')+ ++globalBindings = choice+ [ + ctrlCh '\t' ?>>! nextWinE,+ shift (ctrlCh '\t') ?>>! prevWinE,+ metaCh 'r' ?>>! reload+ ]++compileLatex = do+ mfilename <- withEditor $ withBuffer0 (gets file)+ case mfilename of+ Just filename -> buildRun "pdflatex" ["--file-line-error", "--interaction=nonstopmode", filename] (const $ return ())+ Nothing -> return ()
yi-contrib.cabal view
@@ -1,5 +1,5 @@ name: yi-contrib-version: 0.6.3.0+version: 0.6.4.0 category: Development, Editor synopsis: Add-ons to Yi, the Haskell-Scriptable Editor description:@@ -25,6 +25,7 @@ Yi.Config.Users.Gwern Yi.Config.Users.Jeff Yi.Config.Users.JP+ Yi.Config.Users.Reiner Yi.Style.Misc Yi.Templates @@ -32,5 +33,7 @@ base >=4.0 && <5, containers, data-accessor >= 0.2.1.4 && < 0.3,+ directory < 1.2,+ filepath < 1.3, split ==0.1.*,- yi ==0.6.3.0+ yi ==0.6.4.0