From e7f325f975eb7e816e04d06e35e0bd6dd16776ed Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 21 Mar 2006 13:57:38 +0000 Subject: [PATCH] unlexer bug ; "vilka" ; lib path warning ; p -lines result --- src/GF.hs | 20 ++++++++++++++------ src/GF/Shell.hs | 6 +++++- src/GF/Text/Text.hs | 2 +- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/GF.hs b/src/GF.hs index 8fcd219b0..478a40d3f 100644 --- a/src/GF.hs +++ b/src/GF.hs @@ -31,11 +31,11 @@ import GF.Text.UTF8 import GF.Today (today,version) import GF.System.Arch -import System (getArgs,system) +import System (getArgs,system,getEnv) import Control.Monad (foldM,liftM) import Data.List (nub) --- AR 19/4/2000 -- 28/4/2005 +-- AR 19/4/2000 -- 21/3/2006 main :: IO () main = do @@ -52,7 +52,8 @@ main = do putStrLnFlush $ encodeUTF8 helpMsg _ | opt forJava -> do - putStrLnFlush $ encodeUTF8 welcomeMsg + welcome <- welcomeMsgLib + putStrLnFlush $ encodeUTF8 welcome st <- useIOE st0 $ foldM (shellStateFromFiles os) st0 fs sessionLineJ True st @@ -77,8 +78,8 @@ main = do if opt beSilent then return () else putStrLnFlush "" return () _ -> do - - ifNotSil $ putStrLnFlush $ welcomeMsg + welcome <- welcomeMsgLib + ifNotSil $ putStrLnFlush $ welcome st <- useIOE st0 $ foldM (shellStateFromFiles os) st0 fs if null fs then return () else (ifNotSil putCPU) @@ -110,9 +111,16 @@ helpMsg = unlines [ "which suppresses all messages except the output and fatal errors." ] -welcomeMsg = +welcomeMsgLib = do + lib <- catch + (getEnv "GF_LIB_PATH" >>= return . ("GF_LIB_PATH is set to" +++)) + (const (return "Warning: GF_LIB_PATH is not defined.")) + return $ welcomeMsg lib + +welcomeMsg lib = "Welcome to " ++ authorMsg ++++ "If ä and ö (umlaut letters) look strange, see 'h -coding'." ++ + "\n" ++ lib ++ "\n\nType 'h' for help, and 'h [Command] for more detailed help.\n" authorMsg = unlines [ diff --git a/src/GF/Shell.hs b/src/GF/Shell.hs index 1077616f5..3af343bb2 100644 --- a/src/GF/Shell.hs +++ b/src/GF/Shell.hs @@ -24,6 +24,7 @@ import qualified GF.Grammar.Lookup as L import qualified GF.Canon.GFC as GFC import qualified GF.Canon.Look as Look import qualified GF.Canon.CMacros as CMacros +import qualified GF.Grammar.MMacros as MMacros import qualified GF.Compile.GrammarToCanon as GrammarToCanon import GF.Grammar.Values import GF.UseGrammar.GetTree @@ -236,7 +237,10 @@ execC co@(comm, opts0) sa@(sh@(st,(h,_,_,_)),a) = checkOptions st co >> case com let ss = (if oElem showAll opts then id else filter (not . null)) $ lines $ prCommandArg a mts <- mapM parse ss - let a' = ATrms [t | (_,ATrms ts) <- mts, t <- ts] + let mark s ts = case ts of + [] -> [MMacros.uTree] -- to leave a trace of unparsed line + _ -> ts + let a' = ATrms [t | (s,(_,ATrms ts)) <- zip ss mts, t <- mark s ts] changeArg (const a') sa | otherwise -> parse $ prCommandArg a where diff --git a/src/GF/Text/Text.hs b/src/GF/Text/Text.hs index 3e1b9c46d..a2a69f70c 100644 --- a/src/GF/Text/Text.hs +++ b/src/GF/Text/Text.hs @@ -60,7 +60,7 @@ formatAsCodeLit :: String -> String formatAsCodeLit = formatAsCode . unwords . map unStringLit . words formatAsText,formatAsHTML,formatAsLatex :: String -> String -formatAsText = formatAsTextGen (=="&-") (=="&-") +formatAsText = formatAsTextGen (const False) (=="&-") formatAsHTML = formatAsTextGen (\s -> take 1 s == "<" || last s == '>') (const False) formatAsLatex = formatAsTextGen ((=="\\") . take 1) (const False)