packages feed

vty 4.7.0.10 → 4.7.0.12

raw patch · 9 files changed

+60/−56 lines, 9 files

Files

cbits/gwinsz.c view
@@ -1,6 +1,6 @@ #include <sys/ioctl.h> -unsigned long c_get_window_size(void) {+unsigned long vty_c_get_window_size(void) { 	struct winsize w; 	if (ioctl (0, TIOCGWINSZ, &w) >= 0) 		return (w.ws_row << 16) + w.ws_col;
cbits/gwinsz.h view
@@ -1,1 +1,1 @@-unsigned long c_get_window_size(void);+unsigned long vty_c_get_window_size(void);
cbits/mk_wcwidth.c view
@@ -67,7 +67,7 @@ };  /* auxiliary function for binary search in interval table */-static int bisearch(wchar_t ucs, const struct interval *table, int max) {+static int vty_bisearch(wchar_t ucs, const struct interval *table, int max) {   int min = 0;   int mid; @@ -119,7 +119,7 @@  * in ISO 10646.  */ -int mk_wcwidth(wchar_t ucs)+int vty_mk_wcwidth(wchar_t ucs) {   /* sorted list of non-overlapping intervals of non-spacing characters */   /* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */@@ -181,7 +181,7 @@     return -1;    /* binary search in table of non-spacing characters */-  if (bisearch(ucs, combining,+  if (vty_bisearch(ucs, combining, 	       sizeof(combining) / sizeof(struct interval) - 1))     return 0; @@ -204,12 +204,12 @@ }  -int mk_wcswidth(const wchar_t *pwcs, size_t n)+int vty_mk_wcswidth(const wchar_t *pwcs, size_t n) {   int w, width = 0;    for (;n-- > 0; pwcs++)-    if ((w = mk_wcwidth(*pwcs)) < 0)+    if ((w = vty_mk_wcwidth(*pwcs)) < 0)       return -1;     else       width += w;@@ -227,7 +227,7 @@  * the traditional terminal character-width behaviour. It is not  * otherwise recommended for general use.  */-int mk_wcwidth_cjk(wchar_t ucs)+int vty_mk_wcwidth_cjk(wchar_t ucs) {   /* sorted list of non-overlapping intervals of East Asian Ambiguous    * characters, generated by "uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c" */@@ -287,20 +287,20 @@   };    /* binary search in table of non-spacing characters */-  if (bisearch(ucs, ambiguous,+  if (vty_bisearch(ucs, ambiguous, 	       sizeof(ambiguous) / sizeof(struct interval) - 1))     return 2; -  return mk_wcwidth(ucs);+  return vty_mk_wcwidth(ucs); }  -int mk_wcswidth_cjk(const wchar_t *pwcs, size_t n)+int vty_mk_wcswidth_cjk(const wchar_t *pwcs, size_t n) {   int w, width = 0;    for (;n-- > 0; pwcs++)-    if ((w = mk_wcwidth_cjk(*pwcs)) < 0)+    if ((w = vty_mk_wcwidth_cjk(*pwcs)) < 0)       return -1;     else       width += w;
cbits/set_term_timing.c view
@@ -3,7 +3,7 @@ #include <unistd.h> #include <stdlib.h> -void set_term_timing(void)+void vty_set_term_timing(void) {     struct termios trm;     tcgetattr(STDIN_FILENO, &trm);
src/Codec/Binary/UTF8/Width.hs view
@@ -25,7 +25,7 @@     ) {-# NOINLINE wcwidth #-} -foreign import ccall unsafe "mk_wcwidth" wcwidth' :: CWchar -> CInt+foreign import ccall unsafe "vty_mk_wcwidth" wcwidth' :: CWchar -> CInt  wcswidth :: String -> Int wcswidth str = unsafePerformIO (withCWStringLen str $! \(ws, ws_len) -> do@@ -36,4 +36,4 @@     ) {-# NOINLINE wcswidth #-} -foreign import ccall unsafe "mk_wcswidth" wcswidth' :: Ptr CWchar -> CSize -> CInt+foreign import ccall unsafe "vty_mk_wcswidth" wcswidth' :: Ptr CWchar -> CSize -> CInt
src/Graphics/Vty/LLInput.hs view
@@ -5,12 +5,12 @@                             , Modifier(..)                             , Button(..)                             , Event(..)-                            , initTermInput -                            ) +                            , initTermInput+                            )     where  import Data.Char-import Data.Maybe ( mapMaybe +import Data.Maybe ( mapMaybe                   ) import Data.List( inits ) import Data.Word@@ -36,22 +36,22 @@ -- |Representations of non-modifier keys. data Key = KEsc | KFun Int | KBackTab | KPrtScr | KPause | KASCII Char | KBS | KIns          | KHome | KPageUp | KDel | KEnd | KPageDown | KBegin |  KNP5 | KUp | KMenu-         | KLeft | KDown | KRight | KEnter +         | KLeft | KDown | KRight | KEnter     deriving (Eq,Show,Ord)  -- |Modifier keys.  Key codes are interpreted such that users are more likely to -- have Meta than Alt; for instance on the PC Linux console, 'MMeta' will -- generally correspond to the physical Alt key.-data Modifier = MShift | MCtrl | MMeta | MAlt +data Modifier = MShift | MCtrl | MMeta | MAlt     deriving (Eq,Show,Ord)  -- |Mouse buttons.  Not yet used.-data Button = BLeft | BMiddle | BRight +data Button = BLeft | BMiddle | BRight     deriving (Eq,Show,Ord)  -- |Generic events. data Event = EvKey Key [Modifier] | EvMouse Int Int Button [Modifier]-           | EvResize Int Int +           | EvResize Int Int     deriving (Eq,Show,Ord)  data KClass = Valid Key [Modifier] | Invalid | Prefix | MisPfx Key [Modifier] [Char]@@ -70,7 +70,7 @@   setTerminalAttributes stdInput nattr Immediately   set_term_timing   let inputToEventThread :: IO ()-      inputToEventThread = loop [] +      inputToEventThread = loop []           where loop kb = case (classify kb) of                               Prefix       -> do c <- readChan inputChannel                                                  loop (kb ++ [c])@@ -82,7 +82,7 @@        inputThread :: IO ()       inputThread = loop-          where +          where               loop = do                   setFdOption stdInput NonBlockingRead False                   threadWaitRead stdInput@@ -97,7 +97,7 @@                       writeChan inputChannel (head bytes)                   readAll       -- | If there is no input for some time, this thread puts '\xFFFE' in the-      -- inputChannel. +      -- inputChannel.       noInputThread :: IO ()       noInputThread = when (escDelay > 0) loop             where loop = do@@ -107,8 +107,8 @@                     when hadNoInput $ do                         finishAtomicInput                     loop-       +       compile :: [[([Char],(Key,[Modifier]))]] -> [Char] -> KClass       compile lst = cl' where           lst' = concat lst@@ -120,25 +120,25 @@                                  Just (k,m) -> Valid k m                                  Nothing -> case head $ mapMaybe (\s -> (,) s `fmap` M.lookup s mlst) $ init $ inits str of                                               (s,(k,m)) -> MisPfx k m (drop (length s) str)-      +       -- ANSI specific bits         classify, classifyTab :: [Char] -> KClass-      +       -- As soon as       classify "\xFFFE" = Invalid-      classify s@(c:_) | ord c >= 0xC2 = +      classify s@(c:_) | ord c >= 0xC2 =           if utf8Length (ord c) > length s then Prefix else classifyUtf8 s -- beginning of an utf8 sequence       classify other = classifyTab other        classifyUtf8 s = case decode ((map (fromIntegral . ord) s) :: [Word8]) of           Just (unicodeChar, _) -> Valid (KASCII unicodeChar) []           _ -> Invalid -- something bad happened; just ignore and continue.-         +       classifyTab = compile (caps_classify_table : ansi_classify_table)-   -      caps_tabls = [("khome", (KHome, [])), ++      caps_tabls = [("khome", (KHome, [])),                     ("kend",  (KEnd,  [])),                     ("cbt",   (KBackTab, [])),                     ("kcud1", (KDown,  [])),@@ -149,9 +149,9 @@                     ("kLFT", (KLeft, [MShift])),                     ("kRIT", (KRight, [MShift]))                    ]-   +       caps_classify_table = [(x,y) | (Just x,y) <- map (first (getCapability terminal . tiGetStr)) $ caps_tabls]-      +       ansi_classify_table :: [[([Char], (Key, [Modifier]))]]       ansi_classify_table =          [ let k c s = ("\ESC["++c,(s,[])) in [ k "G" KNP5@@ -159,23 +159,28 @@                                               , k "A" KUp                                               , k "B" KDown                                               , k "C" KRight-                                              , k "D" KLeft +                                              , k "D" KLeft                                               , k "H" KHome                                               , k "F" KEnd                                               , k "E" KBegin                                               ], -           -- Support for arrows-           [("\ESC[" ++ charCnt ++ show mc++c,(s,m)) +           -- Support for arrows and KHome/KEnd+           [("\ESC[" ++ charCnt ++ show mc++c,(s,m))             | charCnt <- ["1;", ""], -- we can have a count or not-            (m,mc) <- [([MShift],2::Int), ([MCtrl],5), ([MMeta],3), +            (m,mc) <- [([MShift],2::Int), ([MCtrl],5), ([MMeta],3),                        ([MShift, MCtrl],6), ([MShift, MMeta],4)], -- modifiers and their codes-            (c,s) <- [("A", KUp), ("B", KDown), ("C", KRight), ("D", KLeft)] -- directions and their codes+            (c,s) <- [("A", KUp), ("B", KDown), ("C", KRight), ("D", KLeft), ("H", KHome), ("F", KEnd)] -- directions and their codes            ],-           -           let k n s = ("\ESC["++show n++"~",(s,[])) in zipWith k [2::Int,3,5,6,1,4] -                                                                  [KIns,KDel,KPageUp,KPageDown,KHome,KEnd], +           let k n s = ("\ESC["++show n++"~",(s,[]))+           in zipWith k [2::Int,3,5,6,1,4]+                        [KIns,KDel,KPageUp,KPageDown,KHome,KEnd],++           let k n s = ("\ESC["++show n++";5~",(s,[MCtrl]))+           in zipWith k [2::Int,3,5,6,1,4]+                        [KIns,KDel,KPageUp,KPageDown,KHome,KEnd],+            -- Support for simple characters.            [ (x:[],(KASCII x,[])) | x <- map toEnum [0..255] ], @@ -186,25 +191,25 @@            [ ('\ESC':[x],(KASCII x,[MMeta])) | x <- '\ESC':'\t':[' ' .. '\DEL'] ],             -- Ctrl+Char-           [ ([toEnum x],(KASCII y,[MCtrl])) +           [ ([toEnum x],(KASCII y,[MCtrl]))               | (x,y) <- zip ([0..31]) ('@':['a'..'z']++['['..'_']),                 y /= 'i' -- Resolve issue #3 where CTRL-i hides TAB.            ],-           +            -- Ctrl+Meta+Char            [ ('\ESC':[toEnum x],(KASCII y,[MMeta,MCtrl])) | (x,y) <- zip [0..31] ('@':['a'..'z']++['['..'_']) ],             -- Special support-           [ -- special support for ESC -             ("\ESC",(KEsc,[])) , ("\ESC\ESC",(KEsc,[MMeta])), +           [ -- special support for ESC+             ("\ESC",(KEsc,[])) , ("\ESC\ESC",(KEsc,[MMeta])),               -- Special support for backspace              ("\DEL",(KBS,[])), ("\ESC\DEL",(KBS,[MMeta])),-             +              -- Special support for Enter-             ("\ESC\^J",(KEnter,[MMeta])), ("\^J",(KEnter,[])) ] +             ("\ESC\^J",(KEnter,[MMeta])), ("\^J",(KEnter,[])) ]          ]-   +   eventThreadId <- forkIO $ inputToEventThread   inputThreadId <- forkIO $ inputThread   noInputThreadId <- forkIO $ noInputThread@@ -225,11 +230,10 @@ first f (x,y) = (f x, y)  utf8Length :: (Num t, Ord a, Num a) => a -> t-utf8Length c +utf8Length c     | c < 0x80 = 1     | c < 0xE0 = 2     | c < 0xF0 = 3     | otherwise = 4 -foreign import ccall "set_term_timing" set_term_timing :: IO ()-+foreign import ccall "vty_set_term_timing" set_term_timing :: IO ()
src/Graphics/Vty/Terminal/TerminfoBased.hs view
@@ -181,7 +181,7 @@      output_handle t = return (term_handle t) -foreign import ccall "gwinsz.h c_get_window_size" c_get_window_size +foreign import ccall "gwinsz.h vty_c_get_window_size" c_get_window_size      :: IO CLong  get_window_size :: IO (Int,Int)
test/Makefile view
@@ -28,10 +28,10 @@ # TODO: Tests should also be buildable referencing the currently installed vty GHC_ARGS=--make -i../src \ 		 -package parallel \-		 -package deepseq-1.1.0.2 \+		 -package deepseq-1.3.0.0 \ 		 -hide-package transformers \ 		 -hide-package monads-tf \-		 -package QuickCheck-2.4 \+		 -package QuickCheck \ 		 -ignore-package vty \ 		 ../cbits/gwinsz.c ../cbits/set_term_timing.c  ../cbits/mk_wcwidth.c \ 		 -O -funbox-strict-fields -Wall -threaded -fno-full-laziness -fspec-constr -fspec-constr-count=10 \
vty.cabal view
@@ -1,5 +1,5 @@ Name:                vty-Version:             4.7.0.10+Version:             4.7.0.12 License:             BSD3 License-file:        LICENSE Author:              Stefan O'Rear, Corey O'Connor