diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,8 +1,14 @@
-20151223 phoityne-0.0.1.1
-
-* [Add] README.md, Changelog.md
-
-20151220 phoityne-0.0.1.0
-
-* [Info] Initial release.
+20160101 phoityne-0.0.2.0
+
+  * [Add] 参照先情報を取得する機能を追加した(:info)
+  * [Add] ファイル保存時にghci上でファイルをロードする機能を追加した
+  * [Add] print source file path on statusbar.
+
+20151223 phoityne-0.0.1.1
+
+  * [Add] README.md, Changelog.md
+
+20151220 phoityne-0.0.1.0
+
+  * [Info] Initial release.
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -4,15 +4,15 @@
 (on Windows)
 
 ## Install
-
-
-### Setup GTK3
-Download the all in package of gtk from [here](http://win32builder.gnome.org/ "GTK3").
-Extract it and set path to bin and lib folder, set install directory to prefix of  lib/pkgconfig/*.pc files.
-
-
-### Start stack project
 
+
+### Setup GTK3
+Download the all in package of gtk from [here](http://win32builder.gnome.org/ "GTK3").
+Extract it and set path to bin and lib folder, set install directory to prefix of  lib/pkgconfig/*.pc files.
+
+
+### Start stack project
+
     % stack new project
       . . . . .
     %
@@ -25,26 +25,26 @@
 
 ## Keyboard shortcuts
 
-
-### Build, Debug
-* F5 : start debug / jump to next break point
-* Shift+F5 : end debug
-* F7 : build
-* Shift+F7 : rebuild (stack clean; stack build)
-* F9 : put on/off break point
-* F10 : step over
-* F11 : step in
-
-### File, Search
-* Ctrl+S : save all
-* Ctrl+F : search
-* F3 : jump to next search result
-* Ctrl+R : replace
-
-### Folder Tree
-* Left :  collapse folder
-* Right :  expand folder
-* Up :  go up
+
+### Build, Debug
+* F5 : start debug / jump to next break point
+* Shift+F5 : end debug
+* F7 : build
+* Shift+F7 : rebuild (stack clean; stack build)
+* F9 : put on/off break point
+* F10 : step over
+* F11 : step in
+
+### File, Search
+* Ctrl+S : save all
+* Ctrl+F : search
+* F3 : jump to next search result
+* Ctrl+R : replace
+
+### Folder Tree
+* Left :  collapse folder
+* Right :  expand folder
+* Up :  go up
 * Down :  go down
 
 
@@ -55,4 +55,29 @@
 
 ### Demo Video2
 [![Demo Video2](http://img.youtube.com/vi/T10wWCmWHaA/0.jpg)](https://www.youtube.com/watch?v=T10wWCmWHaA)
+
+
+## Document
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド1.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド2.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド3.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド4.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド5.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド6.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド7.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド8.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド9.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド10.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド11.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド12.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド13.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド14.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド15.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド16.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド17.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド18.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド19.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド20.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド21.PNG)
+![Document](https://sites.google.com/site/phoityne/doc_jp/スライド22.PNG)
 
diff --git a/app/Phoityne/Constant.hs b/app/Phoityne/Constant.hs
--- a/app/Phoityne/Constant.hs
+++ b/app/Phoityne/Constant.hs
@@ -19,6 +19,8 @@
 _INI_SEC_PHOITYNE_TARGET_DIR :: String
 _INI_SEC_PHOITYNE_TARGET_DIR = "target"
 
+_INI_SEC_PHOITYNE_GHCI_AUTO_START :: String
+_INI_SEC_PHOITYNE_GHCI_AUTO_START = "ghci_auto_start"
 
 _LOG_NAME :: String
 _LOG_NAME = "phoityne"
diff --git a/app/Phoityne/IO/CUI/GHCiControl.hs b/app/Phoityne/IO/CUI/GHCiControl.hs
--- a/app/Phoityne/IO/CUI/GHCiControl.hs
+++ b/app/Phoityne/IO/CUI/GHCiControl.hs
@@ -18,7 +18,7 @@
 import System.IO
 import System.Exit
 import System.Log.Logger
-
+import qualified Data.List as L
 
 -- |
 --
@@ -62,6 +62,7 @@
   hSetEncoding outReadHandle    osEnc
   hSetEncoding outWriteHandle   utf8
 
+  debugM _LOG_NAME $ cmd ++ (L.intercalate " " opts)
   ghciProc <- runProcess cmd opts curDir Nothing (Just stdInReadHandle) (Just outWriteHandle) (Just outWriteHandle)
 
   return $ ExternalCommandData (Just stdInWriteHandle) (Just outReadHandle) (Just outReadHandle) (Just ghciProc)
@@ -82,8 +83,10 @@
 --
 --
 writeLine :: ExternalCommandData -> String -> IO ()
-writeLine (ExternalCommandData (Just ghciIn) _ _ _) cmd = hPutStrLn ghciIn cmd
-writeLine _ _ = criticalM _LOG_NAME "writeLine"
+writeLine (ExternalCommandData (Just ghciIn) _ _ _) cmd = hIsOpen ghciIn >>= \case
+  False -> criticalM _LOG_NAME "[writeLine] handle not open."
+  True  -> debugM _LOG_NAME ("[writeLine]" ++ cmd) >> hPutStrLn ghciIn cmd
+writeLine _ _ = criticalM _LOG_NAME "[writeLine] handle is nothing."
 
 
 -- |
diff --git a/app/Phoityne/IO/Control.hs b/app/Phoityne/IO/Control.hs
--- a/app/Phoityne/IO/Control.hs
+++ b/app/Phoityne/IO/Control.hs
@@ -34,7 +34,9 @@
     -> IO Int         -- exit code
 run _ ini = do
 
-  let cwdSet = forceEither $ C.get ini _INI_SEC_PHOITYNE _INI_SEC_PHOITYNE_TARGET_DIR
+  let cwdSet  = forceEither $ C.get ini _INI_SEC_PHOITYNE _INI_SEC_PHOITYNE_TARGET_DIR
+      autoRun = forceEither $ C.get ini _INI_SEC_PHOITYNE _INI_SEC_PHOITYNE_GHCI_AUTO_START
+
   cwd <- if "." == cwdSet then getCurrentDirectory else return cwdSet
 
   infoM _LOG_NAME $ "CWD:" ++ cwd
@@ -46,7 +48,7 @@
 
   let cmdData = createCmdData mvarCUI cwd
 
-  GUI.createMainWindow cmdData [cwd]
+  GUI.createMainWindow cmdData [cwd] autoRun
 
   return 1
 
@@ -75,7 +77,8 @@
       , GUI.buildStartDebugCommandData   = buildStart mvarCUI cwd
       , GUI.cleanStartDebugCommandData   = cleanStart mvarCUI cwd
       , GUI.loadFileDebugCommandData     = \f-> execCmd mvarCUI $ ":l " ++ f
-      , GUI.readWhileDebugCommandData    = readWhile mvarCUI
+      , GUI.readWhileDebugCommandData    = readWhile mvarCUI
+      , GUI.infoDebugCommandData        = \arg -> execCmd mvarCUI $ ":info " ++ arg
       }
 
 
diff --git a/app/Phoityne/IO/GUI/Control.hs b/app/Phoityne/IO/GUI/Control.hs
--- a/app/Phoityne/IO/GUI/Control.hs
+++ b/app/Phoityne/IO/GUI/Control.hs
@@ -81,7 +81,8 @@
   , unDoReDoFlagMVarGUIData            :: Bool
   , buildMsgMVarGUIData                :: [String]
   , searchFilesMVarGUIData             :: [FilePath]
-  , startupNodeDataMVarGUIData         :: Maybe IF.NodeData
+  , startupNodeDataMVarGUIData         :: Maybe IF.NodeData
+  , ghciAutoStart                      :: Bool
   }
 
 -- |
@@ -111,7 +112,8 @@
   , buildStartDebugCommandData   :: IO ()
   , cleanStartDebugCommandData   :: IO ()
   , loadFileDebugCommandData     :: FilePath -> IO String
-  , readWhileDebugCommandData    :: (String -> Bool) -> IO String
+  , readWhileDebugCommandData    :: (String -> Bool) -> IO String
+  , infoDebugCommandData         :: String -> IO String
   }
 
 -- |
@@ -140,9 +142,10 @@
                    -> IF.FolderTreeStore
                    -> IF.BindingListStore
                    -> IF.TraceDataListStore
-                   -> IF.SearchResultListStore
+                   -> IF.SearchResultListStore
+                   -> Bool
                    -> MVarGUIData
-defaultMVarGUIData widgets breaks folder bindings trace search =
+defaultMVarGUIData widgets breaks folder bindings trace search autoRun =
   MVarGUIData {
     widgetStoreMVarGUIData           = widgets
   , breakPointListMVarGUIData        = breaks
@@ -158,13 +161,14 @@
   , buildMsgMVarGUIData              = []
   , searchFilesMVarGUIData           = []
   , startupNodeDataMVarGUIData       = Nothing
+  , ghciAutoStart                    = autoRun
   }
 
 -- |
 --
 --
-createMainWindow :: DebugCommandData -> [FilePath] -> IO ()
-createMainWindow cmdData paths = do
+createMainWindow :: DebugCommandData -> [FilePath] -> Bool -> IO ()
+createMainWindow cmdData paths autoRun = do
 
   -- Storeの作成
   builder           <- IF.getBuilder
@@ -175,7 +179,7 @@
   treeStore         <- loadFolderForest _PROJECT_ROOT_MODULE_NAME paths >>= IF.createTreeStore
 
   -- GUI共有データの作成
-  mvarGUI <- newMVar $ defaultMVarGUIData builder breakStore treeStore bindingStore traceStore searchResultStore
+  mvarGUI <- newMVar $ defaultMVarGUIData builder breakStore treeStore bindingStore traceStore searchResultStore autoRun
 
   -- イベントハンドラの登録
   IF.setupMainWindow builder
@@ -189,12 +193,13 @@
     (toolBTstepInHandler     mvarGUI cmdData)
     (toolBTcontinueHandler   mvarGUI cmdData)
     (toolBTbuildHandler      mvarGUI cmdData)
-    (toolBTdeleteHandler     mvarGUI cmdData)
     (toolBTsaveHandler       mvarGUI cmdData)
     (toolBTindentHandler     mvarGUI)
     (toolBTunIndentHandler   mvarGUI)
     (toolBTcommentHandler    mvarGUI)
     (toolBTunCommentHandler  mvarGUI)
+    (toolBTstartGHCiHandler  mvarGUI cmdData)
+    (toolBTstopGHCiHandler   mvarGUI cmdData)
 
   IF.setupFolderTree builder treeStore
     (folderTreeDoubleClickedHandler mvarGUI cmdData)
@@ -213,6 +218,7 @@
 
   IF.setupBreakPointTable builder breakStore
     (breakPointTableDoubleClickedHandler mvarGUI cmdData)
+    (toolBTdeleteHandler     mvarGUI cmdData)
 
   IF.setupBindingTable builder bindingStore
     (bindingTableDoubleClickedHandler mvarGUI cmdData)
@@ -222,10 +228,15 @@
 
   IF.setupSearchResultTable builder searchResultStore
     (searchResultTableDoubleClickedHandler mvarGUI cmdData)
+
+  autoRunGHCi mvarGUI cmdData >>= \case
+    True -> return ()
+    False -> errorM _LOG_NAME "run ghci failed."
 
   -- 開始
-  IF.start builder
+  IF.start builder
 
+
 
 -- |=====================================================================
 --  MainWindowのイベントハンドラ
@@ -259,11 +270,9 @@
 mainWindowKeyPressEventHandler mvarGUI cmdDat "F7" True  _ = do
   guiData <- readMVar mvarGUI
   let builder = widgetStoreMVarGUIData guiData
-  isStart <- IF.isBuildStart builder
-
-  when (False == isStart) $ do
-    runClean 
-    toolBTbuildHandler mvarGUI cmdDat
+  IF.isBuildStart builder >>= \case
+    True  -> IF.putStrStatusBar builder "build unavailable. Currently building or ghci running."
+    False -> runClean >> toolBTbuildHandler mvarGUI cmdDat
 
   return True
 
@@ -298,12 +307,13 @@
 mainWindowKeyPressEventHandler mvarGUI cmdDat "F7" _  _ = do
   guiData <- readMVar mvarGUI
   let builder = widgetStoreMVarGUIData guiData
-  isStart <- IF.isBuildStart builder
-
-  when (False == isStart) $ do
-    IF.clearConsole builder
-    toolBTbuildHandler mvarGUI cmdDat
 
+  IF.isBuildStart builder >>= \case
+    True  -> IF.putStrStatusBar builder "build unavailable. Currently building or ghci running."
+    False -> do
+      IF.clearConsole builder
+      toolBTbuildHandler mvarGUI cmdDat
+
   return True
 
 mainWindowKeyPressEventHandler mvarGUI cmdDat "F10" _ _ = do
@@ -330,7 +340,7 @@
 
 
 mainWindowKeyPressEventHandler mvarGUI cmdDat "s" _ True = do
-  saveAll mvarGUI cmdDat -- Ctr+s
+  saveAll mvarGUI cmdDat >>= loadHsFiles mvarGUI cmdDat
   return True
 
 mainWindowKeyPressEventHandler mvarGUI cmdDat "f" _ True =  findCurrentTextEditor mvarGUI >>= \case
@@ -398,71 +408,148 @@
 --
 toolBTdebugStartHandler :: MVar MVarGUIData -> DebugCommandData -> IF.DebugStartBTClickedEventHandler
 toolBTdebugStartHandler mvarGUI cmdData = do
-  runGHCi >>= \case
-    False -> do
-      warningM _LOG_NAME "run ghci fail."
-    True  -> loadHsFile >>= \case
+  guiData <- readMVar mvarGUI
+  let builder = widgetStoreMVarGUIData guiData
+
+  IF.isGHCiStarted builder >>= \case
+    False -> errorM _LOG_NAME "ghci has not yet started."
+    True  -> loadHsFileInternal >>= \case
+      True -> startDebug
       False -> do
-        warningM _LOG_NAME "run ghci fail."
-      True -> setupDebug >> startDebug
+        let msg = "load startup module fail. check startup module set."
+        warningM _LOG_NAME msg
+        IF.putStrStatusBar builder msg
 
   where
-    runGHCi = do
-      guiData <- readMVar mvarGUI
-
-      let builder    = widgetStoreMVarGUIData guiData
-          startCmd   = startDebugCommandData cmdData
-          readLines  = readLinesDebugCommandData cmdData
-          readWhile = readWhileDebugCommandData cmdData
-
-      IF.clearConsole builder
-      IF.putStrConsole builder $ "start stack ghci.\n"
-
-      startCmd
-
-      cont <- readLines (debugStartResultHandler builder)
-      if | null cont -> return False
-         | startswith "Ok," (last cont) -> do
-           res <- readWhile $ not . endswith "> "
-           IF.putStrConsole builder res
-           return True
-         | otherwise -> return False
-        
-
-    loadHsFile = do
+    loadHsFileInternal = do
       guiData <- readMVar mvarGUI
       loadHsFileMay $ startupNodeDataMVarGUIData guiData
 
-    loadHsFileMay Nothing = return True
-    loadHsFileMay (Just nodeDat) = do
+    loadHsFileMay Nothing = return False
+    loadHsFileMay (Just nodeDat) = loadHsFile mvarGUI cmdData $ IF.getPathFromNodeData nodeDat
+
+    startDebug = do
       guiData <- readMVar mvarGUI
       let builder    = widgetStoreMVarGUIData guiData
-          loadFile   = loadFileDebugCommandData cmdData
-          readLines  = readLinesDebugCommandData cmdData
-          readWhile = readWhileDebugCommandData cmdData
+          breakStore = breakPointListMVarGUIData guiData
+          getResult  = readDebugCommandData cmdData
+          runDebug   = runDebugCommandData cmdData
+
+      IF.changeTBsOnDebugStarted builder
 
-      cmdStr <- loadFile $ IF.getPathFromNodeData nodeDat
+      breakList <- IF.getBreakPointList breakStore
+
+      mapM_ (addBreakPointOnCUI mvarGUI cmdData) breakList
+
+      cmdStr <- runDebug True
       IF.putStrLnConsole builder cmdStr
 
-      cont <- readLines (debugStartResultHandler builder)
+      cmdStr <- getResult
+      IF.putStrConsole builder cmdStr
+      let breakPos = getStoppedTextRangeData cmdStr
+      
+      continueWithHighlightTextRangeData mvarGUI cmdData breakPos
 
-      if | null cont -> return False
-         | startswith "Ok," (last cont) -> do
-           res <- readWhile $ not . endswith "> "
-           IF.putStrConsole builder res
-           return True
-         | otherwise -> return False
+
+-- |
+--
+--
+loadHsFiles :: MVar MVarGUIData -> DebugCommandData -> [FilePath] -> IO ()
+loadHsFiles mvarGUI cmdData paths = do
+  guiData <- readMVar mvarGUI
+  let builder   = widgetStoreMVarGUIData guiData
+
+  debugStarted <- IF.isDebugStart builder
+  when debugStarted $ do
+    IF.putStrStatusBar builder "stop debug and load files."
+    toolBTdebugStopHandler mvarGUI cmdData
+
+  autoRunGHCi mvarGUI cmdData >>= \case
+    False -> errorM _LOG_NAME "run ghci failed."
+    True  -> mapM_ (loadHsFile mvarGUI cmdData) paths
+  
+-- |
+--
+--
+loadHsFile :: MVar MVarGUIData -> DebugCommandData -> FilePath -> IO Bool
+loadHsFile mvarGUI cmdData path
+  | (False == endswith _HS_FILE_EXT path) = return False
+  | otherwise = do
+    guiData <- readMVar mvarGUI
+    let builder   = widgetStoreMVarGUIData guiData
+        loadFile  = loadFileDebugCommandData cmdData
+        readLines = readLinesDebugCommandData cmdData
+        getResult = readDebugCommandData cmdData
+  
+    cmdStr <- loadFile path
+    IF.putStrLnConsole builder cmdStr
+  
+    cont <- readLines (debugStartResultHandler builder)
+  
+    if | null cont -> return False
+       | startswith "Ok," (last cont) -> do
+         cmdStr <- getResult
+         IF.putStrConsole builder cmdStr
+         return True
+       | otherwise -> do
+         cmdStr <- getResult
+         IF.putStrConsole builder cmdStr
+         return False
+  
+-- |
+--
+--
+autoRunGHCi :: MVar MVarGUIData -> DebugCommandData -> IO Bool
+autoRunGHCi mvarGUI cmdData = do
+  guiData <- readMVar mvarGUI
+  let builder       = widgetStoreMVarGUIData guiData
+      autoRun       = ghciAutoStart guiData
+      
+  isGHCiStarted <- IF.isGHCiStarted builder
+
+  withFlag autoRun isGHCiStarted 
+
+  where
+    withFlag _ True = return True
+    withFlag False False = return False
+    withFlag True False = runGHCi mvarGUI cmdData
+    
+-- |
+--
+--
+runGHCi :: MVar MVarGUIData -> DebugCommandData -> IO Bool
+runGHCi mvarGUI cmdData = do
+  guiData <- readMVar mvarGUI
+  let builder   = widgetStoreMVarGUIData guiData
+      startCmd  = startDebugCommandData cmdData
+      readLines = readLinesDebugCommandData cmdData
+
+  IF.changeTBsOnGHCiStartting builder
+
+  IF.clearConsole builder
+  IF.putStrConsole builder $ "start stack ghci.\n"
 
-    setupDebug = do
+  startCmd
 
+  cont <- readLines (debugStartResultHandler builder)
+  if | null cont -> IF.changeTBsOnGHCiStopped builder >> return False
+     | startswith "Ok," (last cont) -> readAndSetPrompt >> IF.changeTBsOnGHCiStarted builder >> return True
+     | startswith "Failed," (last cont) -> readAndSetPrompt >> IF.changeTBsOnGHCiStarted builder >>return True
+     | otherwise -> IF.changeTBsOnGHCiStopped builder >> return False
+
+  where
+    readAndSetPrompt = do
       guiData <- readMVar mvarGUI
-
-      let builder     = widgetStoreMVarGUIData guiData
-          breakStore  = breakPointListMVarGUIData guiData
-          setPrompt   = promptDebugCommandData cmdData
-          getResult   = readDebugCommandData cmdData
-          printEvld   = printEvldDebugCommandData cmdData
+    
+      let builder   = widgetStoreMVarGUIData guiData
+          readWhile = readWhileDebugCommandData cmdData
+          setPrompt = promptDebugCommandData cmdData
+          getResult = readDebugCommandData cmdData
+          printEvld = printEvldDebugCommandData cmdData
 
+      res <- readWhile $ not . endswith "> "
+      IF.putStrConsole builder res
+
       promptStr <- setPrompt
       IF.putStrLnConsole builder promptStr
 
@@ -473,79 +560,32 @@
       IF.putStrLnConsole builder cmdStr
 
       cmdStr <- getResult
-      IF.putStrConsole builder cmdStr
-
-      IF.setupDebugButtonOn builder
-
-      breakList <- IF.getBreakPointList breakStore
-
-      mapM_ (addBreakPointOnCUI mvarGUI cmdData) breakList
+      IF.putStrConsole builder cmdStr
 
-
-    startDebug = do
-
-      guiData <- readMVar mvarGUI
-
-      let builder   = widgetStoreMVarGUIData guiData
-          getResult = readDebugCommandData cmdData
-          runDebug  = runDebugCommandData cmdData
-
-      cmdStr <- runDebug True
-      IF.putStrLnConsole builder cmdStr
-
-      cmdStr <- getResult
-      IF.putStrConsole builder cmdStr
-      let breakPos = getStoppedTextRangeData cmdStr
-      
-      continueWithHighlightTextRangeData mvarGUI cmdData breakPos
+-- |
+--
+--
+debugStartResultHandler :: IF.WidgetStore -> [String] -> IO Bool
+debugStartResultHandler builder acc = IF.putStrLnConsole builder curStr >> if
+  | L.isPrefixOf "Ok," curStr -> return False
+  | L.isPrefixOf "Failed," curStr -> return False
+  | otherwise -> return True
+  where
+    curStr | null acc = ""
+           | otherwise = last acc
 
-    -- |
-    --
-    --
-    debugStartResultHandler :: IF.WidgetStore -> [String] -> IO Bool
-    debugStartResultHandler builder acc = IF.putStrLnConsole builder curStr >> if
-      | L.isPrefixOf "Ok," curStr -> return False
-      | L.isPrefixOf "Failed," curStr -> return False
-      | otherwise -> return True
-      where
-        curStr | null acc = ""
-               | otherwise = last acc
-    
 
 -- |
 --  Event Handler
 --
 toolBTdebugStopHandler :: MVar MVarGUIData -> DebugCommandData -> IF.DebugStopBTClickedEventHandler
-toolBTdebugStopHandler mvarGUI cmdData = do
-
-  guiData <- takeMVar mvarGUI
-
-  let builder     = widgetStoreMVarGUIData guiData
-      codeNoteMap = codeNoteMapMVarGUIData guiData
-      exitCmd     = stopDebugCommandData cmdData
-      quitCmd     = quitDebugCommandData cmdData
-      -- readLines   = readLinesDebugCommandData cmdData
-      readWhile   = readWhileDebugCommandData cmdData
-
-  putMVar mvarGUI guiData
-
-  cmdStr <- quitCmd
-  IF.putStrLnConsole builder cmdStr
-
-  str <- readWhile $ const True 
-  IF.putStrConsole builder str
-  IF.putStrLnConsole builder ""
-
-  code <- exitCmd
-
-  IF.putStrLnConsole builder $ show code
-
-  IF.setupDebugButtonOff builder
-
-  mapM_ IF.offLightBreakPoint $ Map.elems codeNoteMap
-
-  return ()
-
+toolBTdebugStopHandler mvarGUI _ = do
+  guiData <- readMVar mvarGUI
+  let builder = widgetStoreMVarGUIData guiData
+
+  IF.changeTBsOnDebugStopped builder
+
+
 -- |
 --  Event Handler
 --
@@ -657,7 +697,7 @@
   
     putMVar mvarGUI guiData{buildMsgMVarGUIData = []}
   
-    IF.setupBuildButtonOff builder
+    IF.changeTBsOnBuildStart builder
     --IF.clearConsole builder
     appendBuildMsg mvarGUI "start stack build.\n"
 
@@ -671,7 +711,7 @@
     appendBuildMsg mvarGUI $ "\n" ++ show code ++ "\n"
     _ <- IF.addCallback $ buildCallbackHandler mvarGUI False
   
-    IF.setupBuildButtonOn builder
+    IF.changeTBsOnBuildFinish builder
   
   return ()
 
@@ -720,9 +760,9 @@
 toolBTdeleteHandler mvarGUI cmdData = do
   guiData <- takeMVar mvarGUI
   let bpList  = breakPointListMVarGUIData guiData
-      noteMap = codeNoteMapMVarGUIData guiData
+      --noteMap = codeNoteMapMVarGUIData guiData
 
-  mapM_ IF.offLightBreakPoint $ Map.elems noteMap
+  --mapM_ IF.offLightBreakPoint $ Map.elems noteMap
   putMVar mvarGUI guiData
 
   IF.getBreakPointList bpList >>= mapM_ go
@@ -738,8 +778,11 @@
 --  Event Handler
 --
 toolBTsaveHandler :: MVar MVarGUIData -> DebugCommandData -> IF.SaveBTClickedEventHandler
-toolBTsaveHandler = saveAll
+toolBTsaveHandler mvarGUI cmdData = do
+  files <- saveAll mvarGUI cmdData
+  loadHsFiles mvarGUI cmdData files
 
+
 -- |
 --  Event Handler
 --
@@ -772,10 +815,47 @@
   Nothing -> return()
   Just (_, editor) -> IF.blockUnCommentTextEditor editor
 
+-- |
+--  Event Handler
+--
+toolBTstartGHCiHandler :: MVar MVarGUIData -> DebugCommandData -> IO ()
+toolBTstartGHCiHandler mvarGUI cmdData = runGHCi mvarGUI cmdData >>= \case
+  True -> return ()
+  False -> errorM _LOG_NAME "run ghci failed."
 
 -- |
+--  Event Handler
 --
+toolBTstopGHCiHandler :: MVar MVarGUIData -> DebugCommandData -> IO ()
+toolBTstopGHCiHandler mvarGUI cmdData = do
+  guiData <- readMVar mvarGUI
+  let builder     = widgetStoreMVarGUIData guiData
+      --codeNoteMap = codeNoteMapMVarGUIData guiData
+      exitCmd     = stopDebugCommandData cmdData
+      quitCmd     = quitDebugCommandData cmdData
+      readWhile   = readWhileDebugCommandData cmdData
+
+  cmdStr <- quitCmd
+  IF.putStrLnConsole builder cmdStr
+
+  str <- readWhile $ const True 
+  IF.putStrConsole builder str
+  IF.putStrLnConsole builder ""
+
+  code <- exitCmd
+
+  IF.putStrLnConsole builder $ show code
+
+  IF.changeTBsOnGHCiStopped builder
+
+  --mapM_ IF.offLightBreakPoint $ Map.elems codeNoteMap
+
+  return ()
+
+
+-- |
 --
+--
 continueWithHighlightTextRangeData :: MVar MVarGUIData -> DebugCommandData -> Either ParseError HighlightTextRangeData -> IO ()
 continueWithHighlightTextRangeData mvarGUI cmdData (Left err) = do
   warningM _LOG_NAME $ "[continueWithHighlightTextRangeData]" ++ show err
@@ -1361,6 +1441,47 @@
   infoM _LOG_NAME "ctrl g called. not yet implemented."
   return True
 
+codeTextKeyPressEventHandler mvarGUI cmdData "F4" _ _ _ _ = findCurrentTextEditor mvarGUI >>= \case
+  Nothing -> errorM _LOG_NAME "[codeTextKeyPressEventHandler] invalid text editor." >> return True
+  Just a -> withEditor a
+  where
+    withEditor (nodeDat, editor) = do
+      key <- IF.getSelectedText editor
+      withKey key $ IF.getPathFromNodeData nodeDat
+
+    withKey key path
+      | null key  = return True
+      | otherwise = autoRunGHCi mvarGUI cmdData >>= \case
+          False -> errorM _LOG_NAME "run ghci failed." >> return True
+          True -> do
+            guiData <- readMVar mvarGUI
+            let builder = widgetStoreMVarGUIData guiData
+            res <- IF.isDebugStart builder
+            debugStarted key path res
+
+    debugStarted key path True = fileLoaded key path True
+    debugStarted key path False = loadHsFile mvarGUI cmdData path >>= fileLoaded key path
+
+    fileLoaded _ path False = errorM _LOG_NAME ("load hs file fail." ++ path) >> return True
+    fileLoaded key _ True = do
+      guiData <- readMVar mvarGUI
+      let builder   = widgetStoreMVarGUIData guiData
+          info      = infoDebugCommandData cmdData
+          getResult = readDebugCommandData cmdData
+      
+      cmdStr <- info key
+      IF.putStrLnConsole builder cmdStr
+
+      cmdStr <- getResult
+      IF.putStrConsole builder cmdStr
+      
+      case getDefinedTextRangeData cmdStr of
+        Right pos -> activateTextEditor mvarGUI cmdData pos
+        Left err  -> infoM _LOG_NAME $ "[codeTextKeyPressEventHandler]" ++ show err
+
+      return True
+
+
 codeTextKeyPressEventHandler mvarGUI cmdDat "z" False True _ _ = do
   guiData <- takeMVar mvarGUI
 
@@ -1563,11 +1684,22 @@
       _ <- manyTill anyChar (string "Stopped at ")
       parseHighlightTextRange
 
+-- |
+--
+--
+getDefinedTextRangeData :: String -> Either ParseError HighlightTextRangeData
+getDefinedTextRangeData = parse parser "getDefinedTextRangeData"
+  where
+    parser = do
+      _ <- manyTill anyChar (try (string "Defined at "))
+      parseHighlightTextRange
+
 -- |
 --  parser of
 --   A) src\Phoityne\IO\Main.hs:31:11-14
 --   B) src\Main.hs:(17,3)-(19,35)
 --   C) src\Phoityne\IO\Main.hs:31:11
+--      src\Phoityne\IO\Main.hs:31:11:
 --
 parseHighlightTextRange :: forall u. ParsecT String u Identity HighlightTextRangeData
 parseHighlightTextRange = do
@@ -1592,7 +1724,7 @@
 
     parseC = do
       ln <- manyTill digit (char ':')
-      sn <- manyTill digit (char ':')
+      sn <- try (manyTill digit (char ':')) <|> try (manyTill digit endOfLine) <|> try (manyTill digit eof)
       return ((read ln), (read sn), (read ln), (read sn))
 
 
@@ -1909,11 +2041,11 @@
 
   where
     highLightBreakPoint _ _ Nothing = errorM _LOG_NAME $ "[highLightBreakPoint]invalid node map."
-    highLightBreakPoint mvarGUI pos (Just textEditor) = do
-      guiData <- readMVar mvarGUI
-      let codeNoteMap = codeNoteMapMVarGUIData guiData
+    highLightBreakPoint _ pos (Just textEditor) = do
+      --guiData <- readMVar mvarGUI
+      --let codeNoteMap = codeNoteMapMVarGUIData guiData
 
-      mapM_ IF.offLightBreakPoint $ Map.elems codeNoteMap
+      --mapM_ IF.offLightBreakPoint $ Map.elems codeNoteMap
 
       IF.highLightBreakPoint textEditor
         (startLineNoHighlightTextRangeData pos)
@@ -2089,20 +2221,21 @@
 -- |
 -- すべての変更ファイルを保存する
 --
-saveAll :: MVar MVarGUIData -> DebugCommandData -> IO ()
+saveAll :: MVar MVarGUIData -> DebugCommandData -> IO [FilePath]
 saveAll mvarGUI _ = do
   guiData <- readMVar mvarGUI
   let noteMap = codeNoteMapMVarGUIData guiData
  
-  mapM_ go $ Map.toList noteMap
+  foldM go [] $ Map.toList noteMap 
 
   where
-    go (nodeDat, editor) = do
-      isModified <- IF.isTextEditorModified editor
-      when isModified $ do
+    go acc (nodeDat, editor) = IF.isTextEditorModified editor >>= \case
+      False -> return acc
+      True -> do
         content <- IF.getCodeViewContent editor
         saveFile (IF.getPathFromNodeData nodeDat) content
         IF.setTextEditorModified editor False
+        return $ IF.getPathFromNodeData nodeDat : acc
 
 
 -- |
diff --git a/app/Phoityne/IO/GUI/GTK/BreakPointTable.hs b/app/Phoityne/IO/GUI/GTK/BreakPointTable.hs
--- a/app/Phoityne/IO/GUI/GTK/BreakPointTable.hs
+++ b/app/Phoityne/IO/GUI/GTK/BreakPointTable.hs
@@ -78,8 +78,9 @@
 setupBreakPointTable :: Builder
                      -> BreakPointListStore
                      -> BreakPointTableDoubleClickedHandler
+                     -> DeleteAllBreakBTClickedEventHandler
                      -> IO ()
-setupBreakPointTable builder store evh = do
+setupBreakPointTable builder store evh deleteEvh = do
 
   treeView <- builderGetObject builder castToTreeView _WIDGET_NAME_BREAK_POINT_TREE_VIEW
   _ <- treeViewSetModel treeView store
@@ -126,6 +127,10 @@
 
   sel <- treeViewGetSelection treeView
   treeSelectionSetMode sel SelectionSingle
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DELETE
+  onToolButtonClicked bt deleteEvh
+  widgetSetSensitive bt True
 
   setFont treeView
   widgetShowAll treeView
diff --git a/app/Phoityne/IO/GUI/GTK/ConsoleView.hs b/app/Phoityne/IO/GUI/GTK/ConsoleView.hs
--- a/app/Phoityne/IO/GUI/GTK/ConsoleView.hs
+++ b/app/Phoityne/IO/GUI/GTK/ConsoleView.hs
@@ -16,6 +16,7 @@
 ) where
 
 -- モジュール
+import Phoityne.Constant
 import Phoityne.IO.GUI.GTK.Constant
 import Phoityne.IO.GUI.GTK.Utility
 
@@ -23,6 +24,8 @@
 import GHC.Float
 import Graphics.UI.Gtk
 import Control.Monad.IO.Class
+import System.Log.Logger
+import Data.String.Utils
 import qualified Data.Text as T
 
 -- |
@@ -98,6 +101,8 @@
 --
 append2Console :: Builder -> String -> IO ()
 append2Console builder msg = do
+
+  debugM _LOG_NAME $ strip msg
 
   textView <- builderGetObject builder castToTextView _NAME_CONSOLE_TEXT_VIEW
   buf <- textViewGetBuffer textView
diff --git a/app/Phoityne/IO/GUI/GTK/Constant.hs b/app/Phoityne/IO/GUI/GTK/Constant.hs
--- a/app/Phoityne/IO/GUI/GTK/Constant.hs
+++ b/app/Phoityne/IO/GUI/GTK/Constant.hs
@@ -100,6 +100,12 @@
 _NAME_TOOL_BT_UNCOMMENT :: String
 _NAME_TOOL_BT_UNCOMMENT = "BlockUnCommentBT"
 
+_NAME_TOOL_BT_START_GHCI :: String
+_NAME_TOOL_BT_START_GHCI = "StartGHCiBT"
+
+_NAME_TOOL_BT_STOP_GHCI :: String
+_NAME_TOOL_BT_STOP_GHCI = "StopGHCiBT"
+
 _NAME_TOOL_BT_DEL_SEARCH :: String
 _NAME_TOOL_BT_DEL_SEARCH = "SearchResultDeleteBT"
 
@@ -122,3 +128,11 @@
 _BREAK_POINT_HIGHLIGHT_TAG = T.pack "BreakPointHighlightTag"
 
 
+_NAME_STATUS_BAR :: String
+_NAME_STATUS_BAR = "StatusBar"
+
+
+_STATUS_BAR_CONTEXT_ID :: String
+_STATUS_BAR_CONTEXT_ID = "PHOITYNE_STATUS_BAR"
+
+
diff --git a/app/Phoityne/IO/GUI/GTK/Interface.hs b/app/Phoityne/IO/GUI/GTK/Interface.hs
--- a/app/Phoityne/IO/GUI/GTK/Interface.hs
+++ b/app/Phoityne/IO/GUI/GTK/Interface.hs
@@ -25,6 +25,7 @@
 , setupMainWindow
 , addCallback
 , delCallback
+, putStrStatusBar
 
 -- ToolButton
 , DebugStartBTClickedEventHandler
@@ -37,13 +38,17 @@
 , UnIndentBTClickedEventHandler
 , CommentBTClickedEventHandler
 , UnCommentBTClickedEventHandler
-, setupToolButton
-, setupDebugButtonOn
-, setupDebugButtonOff
-, setupBuildButtonOn
-, setupBuildButtonOff
+, setupToolButton
+, changeTBsOnGHCiStartting
+, changeTBsOnGHCiStarted
+, changeTBsOnGHCiStopped
+, changeTBsOnDebugStarted
+, changeTBsOnDebugStopped
+, changeTBsOnBuildStart
+, changeTBsOnBuildFinish
 , isDebugStart
 , isBuildStart
+, isGHCiStarted
 
 -- Dialog
 , getNameByFolderTreeDialog
@@ -98,7 +103,10 @@
 
 type UnCommentBTClickedEventHandler = IO ()
 
+type StartGHCiBTClickedEventHandler = IO ()
 
+type StopGHCiBTClickedEventHandler = IO ()
+
 -- |
 --
 --
@@ -182,6 +190,12 @@
   codePaned <- builderGetObject builder castToPaned _NAME_CODE_PANED
   panedSetPosition codePaned 350
 
+  note <- builderGetObject builder castToNotebook _NAME_CODE_NOTE
+  -- statusBar <- builderGetObject builder castToStatusbar _NAME_STATUS_BAR
+  -- contId <- statusbarGetContextId statusBar "source_file_path"
+  on note switchPage $ switchPageEventHandler note builder
+
+  return ()
 
 -- |
 --  Event Handler
@@ -207,7 +221,15 @@
 
 -- |
 --
+--
+isGHCiStarted :: Builder -> IO Bool
+isGHCiStarted builder = do
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetGetSensitive bt
+
+-- |
 --
+--
 isDebugStart :: Builder -> IO Bool
 isDebugStart builder = do
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
@@ -222,6 +244,32 @@
   widgetGetSensitive bt >>= return . not
 
 
+-- |
+--
+--
+switchPageEventHandler :: Notebook -> Builder -> Int -> IO ()
+switchPageEventHandler note builder pageId = do
+  path <- notebookGetNthPage note pageId >>= \case
+    Nothing -> return "[ERROR] texit editor not found."
+    Just child -> notebookGetMenuLabelText note child >>= \case
+      Nothing -> return "[ERROR] texit editor not found."
+      Just a  -> return a    
+  
+  putStrStatusBar builder path
+
+
+-- |
+--
+--
+putStrStatusBar :: Builder -> String -> IO ()
+putStrStatusBar builder msg = do
+  bar <- builderGetObject builder castToStatusbar _NAME_STATUS_BAR
+  contId <- statusbarGetContextId bar _STATUS_BAR_CONTEXT_ID
+  statusbarRemoveAll bar (fromIntegral (toInteger contId))
+  statusbarPush bar contId msg
+  return ()
+
+
 -- |=====================================================================
 --  Dialog 
 --
@@ -341,158 +389,285 @@
                 -> StepInBTClickedEventHandler
                 -> ContinueBTClickedEventHandler
                 -> BuildBTClickedEventHandler
-                -> DeleteAllBreakBTClickedEventHandler
                 -> SaveBTClickedEventHandler
                 -> IndentBTClickedEventHandler
                 -> UnIndentBTClickedEventHandler
                 -> CommentBTClickedEventHandler
                 -> UnCommentBTClickedEventHandler
+                -> StartGHCiBTClickedEventHandler
+                -> StopGHCiBTClickedEventHandler
                 -> IO ()
-setupToolButton builder debugStartEvh debugStopEvh stepOverEvh stepInEvh continueEvh buildEvh deleteEvh saveEvh indentEvh unIndentEvh commentEvh unCommentEvh = do
+setupToolButton builder debugStartEvh debugStopEvh stepOverEvh stepInEvh continueEvh buildEvh saveEvh indentEvh unIndentEvh commentEvh unCommentEvh startGHCi stopGHCi= do
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_SAVE
+  onToolButtonClicked bt saveEvh
+  widgetSetSensitive bt True
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
+  onToolButtonClicked bt buildEvh
+  widgetSetSensitive bt True
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  onToolButtonClicked bt startGHCi
+  widgetSetSensitive bt True
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  onToolButtonClicked bt stopGHCi
+  widgetSetSensitive bt False
+
+  ------------------------------------
+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
   onToolButtonClicked bt debugStartEvh
-
+  widgetSetSensitive bt False
+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
   onToolButtonClicked bt debugStopEvh
+  widgetSetSensitive bt False
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
+  onToolButtonClicked bt continueEvh
+  widgetSetSensitive bt False
+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
   onToolButtonClicked bt stepOverEvh
+  widgetSetSensitive bt False
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
   onToolButtonClicked bt stepInEvh
-
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
-  onToolButtonClicked bt continueEvh
-
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
-  onToolButtonClicked bt buildEvh
+  widgetSetSensitive bt False
 
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DELETE
-  onToolButtonClicked bt deleteEvh
-
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_SAVE
-  onToolButtonClicked bt saveEvh
+  ------------------------------------
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_INDENT
   onToolButtonClicked bt indentEvh
+  widgetSetSensitive bt True
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_UNINDENT
   onToolButtonClicked bt unIndentEvh
+  widgetSetSensitive bt True
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_COMMENT
   onToolButtonClicked bt commentEvh
+  widgetSetSensitive bt True
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_UNCOMMENT
   onToolButtonClicked bt unCommentEvh
-
-  setupDebugButtonOff builder
-
-  return ()
-
+  widgetSetSensitive bt True
 
 
 -- |
 --
 --
-setupDebugButtonOn :: Builder -> IO ()
-setupDebugButtonOn builder = do
-
+changeTBsOnGHCiStartting :: Builder -> IO ()
+changeTBsOnGHCiStartting builder = do
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetSetSensitive bt False
+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
   widgetSetSensitive bt False
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
-  widgetSetSensitive bt True
-
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
-  widgetSetSensitive bt True
-
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
-  widgetSetSensitive bt True
+  widgetSetSensitive bt False
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
-  widgetSetSensitive bt True
-
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
   widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
+  widgetSetSensitive bt False
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
+  widgetSetSensitive bt False
+
+
 -- |
 --
 --
-setupDebugButtonOff :: Builder -> IO ()
-setupDebugButtonOff builder = do
-
+changeTBsOnGHCiStarted :: Builder -> IO ()
+changeTBsOnGHCiStarted builder = do
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetSetSensitive bt True
+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
   widgetSetSensitive bt True
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
   widgetSetSensitive bt False
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
+  widgetSetSensitive bt False
+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
   widgetSetSensitive bt False
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
   widgetSetSensitive bt False
 
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
-  widgetSetSensitive bt False
 
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
-  widgetSetSensitive bt True
-
-
 -- |
 --
 --
-setupBuildButtonOn :: Builder -> IO ()
-setupBuildButtonOn builder = do
+changeTBsOnGHCiStopped :: Builder -> IO ()
+changeTBsOnGHCiStopped builder = do
 
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
   widgetSetSensitive bt True
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  widgetSetSensitive bt True
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
+  widgetSetSensitive bt False
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
   widgetSetSensitive bt False
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
+  widgetSetSensitive bt False
+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
   widgetSetSensitive bt False
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
   widgetSetSensitive bt False
+
 
+-- |
+--
+--
+changeTBsOnBuildStart :: Builder -> IO ()
+changeTBsOnBuildStart builder = do
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
+  widgetSetSensitive bt False
+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
   widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
+  widgetSetSensitive bt False
 
-  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
-  widgetSetSensitive bt True
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
+  widgetSetSensitive bt False
 
 -- |
 --
 --
-setupBuildButtonOff :: Builder -> IO ()
-setupBuildButtonOff builder = do
+changeTBsOnBuildFinish :: Builder -> IO ()
+changeTBsOnBuildFinish builder = do
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
+  widgetSetSensitive bt True
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  widgetSetSensitive bt True
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetSetSensitive bt False
+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
   widgetSetSensitive bt False
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
   widgetSetSensitive bt False
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
+  widgetSetSensitive bt False
+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
   widgetSetSensitive bt False
 
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
+  widgetSetSensitive bt False
+
+
+-- |
+--
+--
+changeTBsOnDebugStarted :: Builder -> IO ()
+changeTBsOnDebugStarted builder = do
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
   widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetSetSensitive bt True
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
+  widgetSetSensitive bt False
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
+  widgetSetSensitive bt True
+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
-  widgetSetSensitive bt False
+  widgetSetSensitive bt True
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
+  widgetSetSensitive bt True
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
+  widgetSetSensitive bt True
+
+
+-- |
+--
+--
+changeTBsOnDebugStopped :: Builder -> IO ()
+changeTBsOnDebugStopped builder = do
+
   bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_BUILD
   widgetSetSensitive bt False
-
 
--- |=====================================================================
---  
---
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_START_GHCI
+  widgetSetSensitive bt False
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STOP_GHCI
+  widgetSetSensitive bt True
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_START
+  widgetSetSensitive bt True
 
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_DEBUG_STOP
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_CONTINUE
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_OVER
+  widgetSetSensitive bt False
+
+  bt <- builderGetObject builder castToToolButton _NAME_TOOL_BT_STEP_IN
+  widgetSetSensitive bt False
 
diff --git a/app/Phoityne/IO/GUI/GTK/TextEditor.hs b/app/Phoityne/IO/GUI/GTK/TextEditor.hs
--- a/app/Phoityne/IO/GUI/GTK/TextEditor.hs
+++ b/app/Phoityne/IO/GUI/GTK/TextEditor.hs
@@ -17,7 +17,7 @@
 , setupCodeNote
 , activateCodeNote
 , highLightBreakPoint
-, offLightBreakPoint
+--, offLightBreakPoint
 , addBreakPointTagAtLine
 , isCurrentTextEditor
 , getCodeViewContent
@@ -169,14 +169,13 @@
       notebookSetTabReorderable note (boxTextEditorData textEditor) True
     
       _ <- onToolButtonClicked closeButton (codeNoteCloseEventHandler note textEditor evh)
-    
+    
       setFont note
     
       widgetShowAll note
     
-      -- activateCodeNote builder textEditor lineNo
-    
-      return textEditor
+      return textEditor
+
 
 -- |
 --
@@ -489,18 +488,18 @@
 -- |
 --  
 --
-offLightBreakPoint :: TextEditorData -> IO ()
-offLightBreakPoint textEditor = do
+-- offLightBreakPoint :: TextEditorData -> IO ()
+-- offLightBreakPoint textEditor = do
 
-  let codeTextView = codeTextEditorData textEditor
-  codeBuf <- textViewGetBuffer codeTextView
- 
-  startIter <- textBufferGetStartIter codeBuf
-  endIter   <- textBufferGetEndIter codeBuf
+  -- let codeTextView = codeTextEditorData textEditor
+  -- codeBuf <- textViewGetBuffer codeTextView
+ -- 
+  -- startIter <- textBufferGetStartIter codeBuf
+  -- endIter   <- textBufferGetEndIter codeBuf
 
-  textBufferRemoveTagByName codeBuf _BREAK_POINT_HIGHLIGHT_TAG startIter endIter
+  -- textBufferRemoveTagByName codeBuf _BREAK_POINT_HIGHLIGHT_TAG startIter endIter
 
-  return ()
+  -- return ()
 
 -- |
 --  
diff --git a/app/Phoityne/IO/Main.hs b/app/Phoityne/IO/Main.hs
--- a/app/Phoityne/IO/Main.hs
+++ b/app/Phoityne/IO/Main.hs
@@ -86,6 +86,7 @@
   , ""
   , "[PHOITYNE]"
   , "target = ."
+  , "ghci_auto_start = True"
   ]
 
 -- |
diff --git a/conf/Phoityne.glade b/conf/Phoityne.glade
--- a/conf/Phoityne.glade
+++ b/conf/Phoityne.glade
@@ -1,17 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.19.0 -->
 <interface>
-  <!-- interface-requires gtk+ 3.0 -->
-  <object class="GtkAction" id="TreeViewPopupCreateFileAction"/>
-  <object class="GtkAction" id="TreeViewPopupCreateFolderAction"/>
-  <object class="GtkAction" id="TreeViewPopupDeleteAction">
-    <property name="sensitive">False</property>
-  </object>
-  <object class="GtkAction" id="TreeViewPopupRenameAction">
-    <property name="sensitive">False</property>
-  </object>
-  <object class="GtkAction" id="TreeViewPopupReplaceAction"/>
-  <object class="GtkAction" id="TreeViewPopupSearchAction"/>
-  <object class="GtkAction" id="TreeViewPopupStartupAction"/>
+  <requires lib="gtk+" version="3.0"/>
   <object class="GtkLabel" id="BindingsCol1Label">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -69,6 +59,299 @@
     </attributes>
   </object>
   <object class="GtkTextTagTable" id="CodeTextTagTable"/>
+  <object class="GtkDialog" id="ReplaceDialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="window_position">center-always</property>
+    <property name="icon">h.ico</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkBox" id="ReplaceDialogBox">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="ReplaceDialogActionArea">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="ReplaceDialogReplaceBT">
+                <property name="label">gtk-find-and-replace</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="ReplaceDialogCancelBT">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="ReplaceDialogLabel">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="halign">start</property>
+            <property name="label" translatable="yes">Input replacement</property>
+            <attributes>
+              <attribute name="font-desc" value="MS Gothic 10"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkGrid" id="grid1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="row_homogeneous">True</property>
+            <child>
+              <object class="GtkLabel" id="ReplaceDialogSearchKeyLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Search</property>
+                <attributes>
+                  <attribute name="font-desc" value="MS Gothic 10"/>
+                </attributes>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="ReplaceDialogReplaceLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Replace</property>
+                <attributes>
+                  <attribute name="font-desc" value="MS Gothic 10"/>
+                </attributes>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="ReplaceDialogReplaceEntry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">●</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="top_attach">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="ReplaceDialogSearchEntry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">●</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="top_attach">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="padding">2</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="0">ReplaceDialogReplaceBT</action-widget>
+      <action-widget response="1">ReplaceDialogCancelBT</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkDialog" id="SearchDialog">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="window_position">center-always</property>
+    <property name="icon">h.ico</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkBox" id="SearchDialogBox">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="SearchDialogActionArea">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="SearchDialogSearchBT">
+                <property name="label">gtk-find</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="SearchDialogCancelBT">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="SearchDialogLabel">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="halign">start</property>
+            <property name="label" translatable="yes">Input keyword</property>
+            <attributes>
+              <attribute name="font-desc" value="MS Gothic 10"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkEntry" id="SearchDialogEntry">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="invisible_char">●</property>
+            <property name="activates_default">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="0">SearchDialogSearchBT</action-widget>
+      <action-widget response="1">SearchDialogCancelBT</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkLabel" id="SearchResultCol1Label">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="label" translatable="yes">FilePath</property>
+    <attributes>
+      <attribute name="font-desc" value="MS Gothic 8"/>
+    </attributes>
+  </object>
+  <object class="GtkLabel" id="SearchResultCol2Label">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="tooltip_text" translatable="yes">Line No</property>
+    <property name="label" translatable="yes">L</property>
+    <attributes>
+      <attribute name="font-desc" value="MS Gothic 8"/>
+    </attributes>
+  </object>
+  <object class="GtkLabel" id="SearchResultCol3Label">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="tooltip_text" translatable="yes">Start Col No</property>
+    <property name="label" translatable="yes">SC</property>
+    <attributes>
+      <attribute name="font-desc" value="MS Gothic 8"/>
+    </attributes>
+  </object>
+  <object class="GtkLabel" id="SearchResultCol4Label">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="tooltip_text" translatable="yes">End Col No</property>
+    <property name="label" translatable="yes">EC</property>
+    <attributes>
+      <attribute name="font-desc" value="MS Gothic 8"/>
+    </attributes>
+  </object>
+  <object class="GtkLabel" id="SearchResultCol5Label">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="label" translatable="yes">Line</property>
+    <attributes>
+      <attribute name="font-desc" value="MS Gothic 8"/>
+    </attributes>
+  </object>
+  <object class="GtkLabel" id="TraceCol1Label">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="label" translatable="yes">TraceId</property>
+    <attributes>
+      <attribute name="font-desc" value="MS Gothic 8"/>
+    </attributes>
+  </object>
+  <object class="GtkLabel" id="TraceCol2Label">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="label" translatable="yes">Function</property>
+    <attributes>
+      <attribute name="font-desc" value="MS Gothic 8"/>
+    </attributes>
+  </object>
+  <object class="GtkLabel" id="TraceCol3Label">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="label" translatable="yes">FilePath</property>
+    <attributes>
+      <attribute name="font-desc" value="MS Gothic 8"/>
+    </attributes>
+  </object>
   <object class="GtkWindow" id="MainWindow">
     <property name="can_focus">False</property>
     <property name="title" translatable="yes">Phoityne</property>
@@ -168,7 +451,7 @@
                 <property name="can_focus">False</property>
                 <property name="tooltip_text" translatable="yes">Save All(Ctrl+s)</property>
                 <property name="is_important">True</property>
-                <property name="label" translatable="yes">toolbutton1</property>
+                <property name="label" translatable="yes">SaveLabel</property>
                 <property name="use_underline">True</property>
                 <property name="stock_id">gtk-save</property>
               </object>
@@ -204,6 +487,36 @@
               </packing>
             </child>
             <child>
+              <object class="GtkToolButton" id="StartGHCiBT">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="tooltip_text" translatable="yes">Start GHCi</property>
+                <property name="is_important">True</property>
+                <property name="label" translatable="yes">StartGHCiLabel</property>
+                <property name="use_underline">True</property>
+                <property name="stock_id">gtk-connect</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="homogeneous">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkToolButton" id="StopGHCiBT">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="tooltip_text" translatable="yes">Stop GHCi</property>
+                <property name="is_important">True</property>
+                <property name="label" translatable="yes">StopGHCiLabel</property>
+                <property name="use_underline">True</property>
+                <property name="stock_id">gtk-disconnect</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="homogeneous">True</property>
+              </packing>
+            </child>
+            <child>
               <object class="GtkSeparatorToolItem" id="Separator3">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
@@ -894,40 +1207,24 @@
       </object>
     </child>
   </object>
-  <object class="GtkDialog" id="ReplaceDialog">
+  <object class="GtkDialog" id="TreeFolderCreateFolderDialog">
     <property name="can_focus">False</property>
     <property name="border_width">5</property>
     <property name="window_position">center-always</property>
     <property name="icon">h.ico</property>
     <property name="type_hint">dialog</property>
     <child internal-child="vbox">
-      <object class="GtkBox" id="ReplaceDialogBox">
+      <object class="GtkBox" id="TreeFolderCreateFolderVBox">
         <property name="can_focus">False</property>
         <property name="orientation">vertical</property>
         <property name="spacing">2</property>
-        <child>
-          <object class="GtkLabel" id="ReplaceDialogLabel">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="halign">start</property>
-            <property name="label" translatable="yes">Input replacement</property>
-            <attributes>
-              <attribute name="font-desc" value="MS Gothic 10"/>
-            </attributes>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
         <child internal-child="action_area">
-          <object class="GtkButtonBox" id="ReplaceDialogActionArea">
+          <object class="GtkButtonBox" id="TreeFolderCreateFolderActionArea">
             <property name="can_focus">False</property>
             <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" id="ReplaceDialogReplaceBT">
-                <property name="label">gtk-find-and-replace</property>
+              <object class="GtkButton" id="TreeFolderCreateFolderOkBT">
+                <property name="label">gtk-ok</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
@@ -940,7 +1237,7 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="ReplaceDialogCancelBT">
+              <object class="GtkButton" id="TreeFolderCreateFolderCancelBT">
                 <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
@@ -958,257 +1255,10 @@
             <property name="expand">False</property>
             <property name="fill">True</property>
             <property name="pack_type">end</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkGrid" id="grid1">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="row_homogeneous">True</property>
-            <child>
-              <object class="GtkLabel" id="ReplaceDialogSearchKeyLabel">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Search</property>
-                <attributes>
-                  <attribute name="font-desc" value="MS Gothic 10"/>
-                </attributes>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">0</property>
-                <property name="width">1</property>
-                <property name="height">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="ReplaceDialogReplaceLabel">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Replace</property>
-                <attributes>
-                  <attribute name="font-desc" value="MS Gothic 10"/>
-                </attributes>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">1</property>
-                <property name="width">1</property>
-                <property name="height">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkEntry" id="ReplaceDialogReplaceEntry">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="invisible_char">●</property>
-                <property name="invisible_char_set">True</property>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">1</property>
-                <property name="width">1</property>
-                <property name="height">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkEntry" id="ReplaceDialogSearchEntry">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="invisible_char">●</property>
-                <property name="invisible_char_set">True</property>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">0</property>
-                <property name="width">1</property>
-                <property name="height">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="padding">2</property>
             <property name="position">2</property>
           </packing>
         </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="0">ReplaceDialogReplaceBT</action-widget>
-      <action-widget response="1">ReplaceDialogCancelBT</action-widget>
-    </action-widgets>
-  </object>
-  <object class="GtkDialog" id="SearchDialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="window_position">center-always</property>
-    <property name="icon">h.ico</property>
-    <property name="type_hint">dialog</property>
-    <child internal-child="vbox">
-      <object class="GtkBox" id="SearchDialogBox">
-        <property name="can_focus">False</property>
-        <property name="orientation">vertical</property>
-        <property name="spacing">2</property>
         <child>
-          <object class="GtkLabel" id="SearchDialogLabel">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="halign">start</property>
-            <property name="label" translatable="yes">Input keyword</property>
-            <attributes>
-              <attribute name="font-desc" value="MS Gothic 10"/>
-            </attributes>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="SearchDialogActionArea">
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="SearchDialogSearchBT">
-                <property name="label">gtk-find</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="SearchDialogCancelBT">
-                <property name="label">gtk-cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkEntry" id="SearchDialogEntry">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="invisible_char">●</property>
-            <property name="activates_default">True</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="0">SearchDialogSearchBT</action-widget>
-      <action-widget response="1">SearchDialogCancelBT</action-widget>
-    </action-widgets>
-  </object>
-  <object class="GtkLabel" id="SearchResultCol1Label">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="label" translatable="yes">FilePath</property>
-    <attributes>
-      <attribute name="font-desc" value="MS Gothic 8"/>
-    </attributes>
-  </object>
-  <object class="GtkLabel" id="SearchResultCol2Label">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="tooltip_text" translatable="yes">Line No</property>
-    <property name="label" translatable="yes">L</property>
-    <attributes>
-      <attribute name="font-desc" value="MS Gothic 8"/>
-    </attributes>
-  </object>
-  <object class="GtkLabel" id="SearchResultCol3Label">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="tooltip_text" translatable="yes">Start Col No</property>
-    <property name="label" translatable="yes">SC</property>
-    <attributes>
-      <attribute name="font-desc" value="MS Gothic 8"/>
-    </attributes>
-  </object>
-  <object class="GtkLabel" id="SearchResultCol4Label">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="tooltip_text" translatable="yes">End Col No</property>
-    <property name="label" translatable="yes">EC</property>
-    <attributes>
-      <attribute name="font-desc" value="MS Gothic 8"/>
-    </attributes>
-  </object>
-  <object class="GtkLabel" id="SearchResultCol5Label">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="label" translatable="yes">Line</property>
-    <attributes>
-      <attribute name="font-desc" value="MS Gothic 8"/>
-    </attributes>
-  </object>
-  <object class="GtkLabel" id="TraceCol1Label">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="label" translatable="yes">TraceId</property>
-    <attributes>
-      <attribute name="font-desc" value="MS Gothic 8"/>
-    </attributes>
-  </object>
-  <object class="GtkLabel" id="TraceCol2Label">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="label" translatable="yes">Function</property>
-    <attributes>
-      <attribute name="font-desc" value="MS Gothic 8"/>
-    </attributes>
-  </object>
-  <object class="GtkLabel" id="TraceCol3Label">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="label" translatable="yes">FilePath</property>
-    <attributes>
-      <attribute name="font-desc" value="MS Gothic 8"/>
-    </attributes>
-  </object>
-  <object class="GtkDialog" id="TreeFolderCreateFolderDialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">5</property>
-    <property name="window_position">center-always</property>
-    <property name="icon">h.ico</property>
-    <property name="type_hint">dialog</property>
-    <child internal-child="vbox">
-      <object class="GtkBox" id="TreeFolderCreateFolderVBox">
-        <property name="can_focus">False</property>
-        <property name="orientation">vertical</property>
-        <property name="spacing">2</property>
-        <child>
           <object class="GtkLabel" id="TreeFolderCreateFolderLabel">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
@@ -1236,46 +1286,6 @@
             <property name="position">1</property>
           </packing>
         </child>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="TreeFolderCreateFolderActionArea">
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="TreeFolderCreateFolderOkBT">
-                <property name="label">gtk-ok</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="TreeFolderCreateFolderCancelBT">
-                <property name="label">gtk-cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
       </object>
     </child>
     <action-widgets>
@@ -1283,6 +1293,17 @@
       <action-widget response="1">TreeFolderCreateFolderCancelBT</action-widget>
     </action-widgets>
   </object>
+  <object class="GtkAction" id="TreeViewPopupCreateFileAction"/>
+  <object class="GtkAction" id="TreeViewPopupCreateFolderAction"/>
+  <object class="GtkAction" id="TreeViewPopupDeleteAction">
+    <property name="sensitive">False</property>
+  </object>
+  <object class="GtkAction" id="TreeViewPopupRenameAction">
+    <property name="sensitive">False</property>
+  </object>
+  <object class="GtkAction" id="TreeViewPopupReplaceAction"/>
+  <object class="GtkAction" id="TreeViewPopupSearchAction"/>
+  <object class="GtkAction" id="TreeViewPopupStartupAction"/>
   <object class="GtkMenu" id="TreeViewPopupMenu">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
diff --git a/phoityne.cabal b/phoityne.cabal
--- a/phoityne.cabal
+++ b/phoityne.cabal
@@ -1,5 +1,5 @@
 name:                phoityne
-version:             0.0.1.1
+version:             0.0.2.0
 synopsis:            ghci debug viewer with simple editor.
 description:         Phoityne is a ghci debug viewer with simple editor.
 license:             BSD3
