OSDN Git Service

use boost_1_56_0 and build by VS2013
[yamy/yamy.git] / setting.cpp
index e33139f..228946b 100644 (file)
 \r
 namespace Event\r
 {\r
-  Key prefixed(_T("prefixed"));\r
-  Key before_key_down(_T("before-key-down"));\r
-  Key after_key_up(_T("after-key-up"));\r
-  Key *events[] =\r
-  {\r
-    &prefixed,\r
-    &before_key_down,\r
-    &after_key_up,\r
-    NULL,\r
-  };\r
+Key prefixed(_T("prefixed"));\r
+Key before_key_down(_T("before-key-down"));\r
+Key after_key_up(_T("after-key-up"));\r
+Key *events[] = {\r
+       &prefixed,\r
+       &before_key_down,\r
+       &after_key_up,\r
+       NULL,\r
+};\r
 }\r
 \r
 \r
 // get mayu filename\r
 static bool getFilenameFromRegistry(\r
-  tstringi *o_name, tstringi *o_filename, Setting::Symbols *o_symbols)\r
-{\r
-  Registry reg(MAYU_REGISTRY_ROOT);\r
-  int index;\r
-  reg.read(_T(".mayuIndex"), &index, 0);\r
-  _TCHAR buf[100];\r
-  _sntprintf(buf, NUMBER_OF(buf), _T(".mayu%d"), index);\r
-\r
-  tstringi entry;\r
-  if (!reg.read(buf, &entry))\r
-    return false;\r
-  \r
-  tregex getFilename(_T("^([^;]*);([^;]*);(.*)$"));\r
-  tsmatch getFilenameResult;\r
-  if (!boost::regex_match(entry, getFilenameResult, getFilename))\r
-    return false;\r
-  \r
-  if (o_name)\r
-    *o_name = getFilenameResult.str(1);\r
-  if (o_filename)\r
-    *o_filename = getFilenameResult.str(2);\r
-  if (o_symbols)\r
-  {\r
-    tstringi symbols = getFilenameResult.str(3);\r
-    tregex symbol(_T("-D([^;]*)(.*)$"));\r
-    tsmatch symbolResult;\r
-    while (boost::regex_search(symbols, symbolResult, symbol))\r
-    {\r
-      o_symbols->insert(symbolResult.str(1));\r
-      symbols = symbolResult.str(2);\r
-    }\r
-  }\r
-  return true;\r
+       tstringi *o_name, tstringi *o_filename, Setting::Symbols *o_symbols)\r
+{\r
+       Registry reg(MAYU_REGISTRY_ROOT);\r
+       int index;\r
+       reg.read(_T(".mayuIndex"), &index, 0);\r
+       _TCHAR buf[100];\r
+       _sntprintf(buf, NUMBER_OF(buf), _T(".mayu%d"), index);\r
+\r
+       tstringi entry;\r
+       if (!reg.read(buf, &entry))\r
+               return false;\r
+\r
+       tregex getFilename(_T("^([^;]*);([^;]*);(.*)$"));\r
+       tsmatch getFilenameResult;\r
+       if (!boost::regex_match(entry, getFilenameResult, getFilename))\r
+               return false;\r
+\r
+       if (o_name)\r
+               *o_name = getFilenameResult.str(1);\r
+       if (o_filename)\r
+               *o_filename = getFilenameResult.str(2);\r
+       if (o_symbols) {\r
+               tstringi symbols = getFilenameResult.str(3);\r
+               tregex symbol(_T("-D([^;]*)(.*)$"));\r
+               tsmatch symbolResult;\r
+               while (boost::regex_search(symbols, symbolResult, symbol)) {\r
+                       o_symbols->insert(symbolResult.str(1));\r
+                       symbols = symbolResult.str(2);\r
+               }\r
+       }\r
+       return true;\r
 }\r
 \r
 \r
 // get home directory path\r
 void getHomeDirectories(HomeDirectories *o_pathes)\r
 {\r
-  tstringi filename;\r
+       tstringi filename;\r
 #ifndef USE_INI\r
-  if (getFilenameFromRegistry(NULL, &filename, NULL) &&\r
-      !filename.empty())\r
-  {\r
-    tregex getPath(_T("^(.*[/\\\\])[^/\\\\]*$"));\r
-    tsmatch getPathResult;\r
-    if (boost::regex_match(filename, getPathResult, getPath))\r
-      o_pathes->push_back(getPathResult.str(1));\r
-  }\r
-  \r
-  const _TCHAR *home = _tgetenv(_T("HOME"));\r
-  if (home)\r
-    o_pathes->push_back(home);\r
-\r
-  const _TCHAR *homedrive = _tgetenv(_T("HOMEDRIVE"));\r
-  const _TCHAR *homepath = _tgetenv(_T("HOMEPATH"));\r
-  if (homedrive && homepath)\r
-    o_pathes->push_back(tstringi(homedrive) + homepath);\r
-  \r
-  const _TCHAR *userprofile = _tgetenv(_T("USERPROFILE"));\r
-  if (userprofile)\r
-    o_pathes->push_back(userprofile);\r
-  \r
-  _TCHAR buf[GANA_MAX_PATH];\r
-  DWORD len = GetCurrentDirectory(NUMBER_OF(buf), buf);\r
-  if (0 < len && len < NUMBER_OF(buf))\r
-    o_pathes->push_back(buf);\r
+       if (getFilenameFromRegistry(NULL, &filename, NULL) &&\r
+                       !filename.empty()) {\r
+               tregex getPath(_T("^(.*[/\\\\])[^/\\\\]*$"));\r
+               tsmatch getPathResult;\r
+               if (boost::regex_match(filename, getPathResult, getPath))\r
+                       o_pathes->push_back(getPathResult.str(1));\r
+       }\r
+\r
+       const _TCHAR *home = _tgetenv(_T("HOME"));\r
+       if (home)\r
+               o_pathes->push_back(home);\r
+\r
+       const _TCHAR *homedrive = _tgetenv(_T("HOMEDRIVE"));\r
+       const _TCHAR *homepath = _tgetenv(_T("HOMEPATH"));\r
+       if (homedrive && homepath)\r
+               o_pathes->push_back(tstringi(homedrive) + homepath);\r
+\r
+       const _TCHAR *userprofile = _tgetenv(_T("USERPROFILE"));\r
+       if (userprofile)\r
+               o_pathes->push_back(userprofile);\r
+\r
+       _TCHAR buf[GANA_MAX_PATH];\r
+       DWORD len = GetCurrentDirectory(NUMBER_OF(buf), buf);\r
+       if (0 < len && len < NUMBER_OF(buf))\r
+               o_pathes->push_back(buf);\r
 #else //USE_INI\r
-  _TCHAR buf[GANA_MAX_PATH];\r
+       _TCHAR buf[GANA_MAX_PATH];\r
 #endif //USE_INI\r
 \r
-  if (GetModuleFileName(GetModuleHandle(NULL), buf, NUMBER_OF(buf)))\r
-    o_pathes->push_back(pathRemoveFileSpec(buf));\r
+       if (GetModuleFileName(GetModuleHandle(NULL), buf, NUMBER_OF(buf)))\r
+               o_pathes->push_back(pathRemoveFileSpec(buf));\r
 }\r
 \r
 \r
@@ -120,266 +116,271 @@ void getHomeDirectories(HomeDirectories *o_pathes)
 // is there no more tokens ?\r
 bool SettingLoader::isEOL()\r
 {\r
-  return m_ti == m_tokens.end();\r
+       return m_ti == m_tokens.end();\r
 }\r
 \r
 \r
 // get next token\r
 Token *SettingLoader::getToken()\r
 {\r
-  if (isEOL())\r
-    throw ErrorMessage() << _T("too few words.");\r
-  return &*(m_ti ++);\r
+       if (isEOL())\r
+               throw ErrorMessage() << _T("too few words.");\r
+       return &*(m_ti ++);\r
 }\r
 \r
-  \r
+\r
 // look next token\r
 Token *SettingLoader::lookToken()\r
 {\r
-  if (isEOL())\r
-    throw ErrorMessage() << _T("too few words.");\r
-  return &*m_ti;\r
+       if (isEOL())\r
+               throw ErrorMessage() << _T("too few words.");\r
+       return &*m_ti;\r
 }\r
 \r
 \r
 // argument "("\r
 bool SettingLoader::getOpenParen(bool i_doesThrow, const _TCHAR *i_name)\r
 {\r
-  if (!isEOL() && lookToken()->isOpenParen())\r
-  {\r
-    getToken();\r
-    return true;\r
-  }\r
-  if (i_doesThrow)\r
-    throw ErrorMessage() << _T("there must be `(' after `&")\r
-                        << i_name << _T("'.");\r
-  return false;\r
+       if (!isEOL() && lookToken()->isOpenParen()) {\r
+               getToken();\r
+               return true;\r
+       }\r
+       if (i_doesThrow)\r
+               throw ErrorMessage() << _T("there must be `(' after `&")\r
+               << i_name << _T("'.");\r
+       return false;\r
 }\r
 \r
 \r
 // argument ")"\r
 bool SettingLoader::getCloseParen(bool i_doesThrow, const _TCHAR *i_name)\r
 {\r
-  if (!isEOL() && lookToken()->isCloseParen())\r
-  {\r
-    getToken();\r
-    return true;\r
-  }\r
-  if (i_doesThrow)\r
-    throw ErrorMessage() << _T("`&")  << i_name\r
-                        << _T("': too many arguments.");\r
-  return false;\r
+       if (!isEOL() && lookToken()->isCloseParen()) {\r
+               getToken();\r
+               return true;\r
+       }\r
+       if (i_doesThrow)\r
+               throw ErrorMessage() << _T("`&")  << i_name\r
+               << _T("': too many arguments.");\r
+       return false;\r
 }\r
 \r
 \r
 // argument ","\r
 bool SettingLoader::getComma(bool i_doesThrow, const _TCHAR *i_name)\r
 {\r
-  if (!isEOL() && lookToken()->isComma())\r
-  {\r
-    getToken();\r
-    return true;\r
-  }\r
-  if (i_doesThrow)\r
-    throw ErrorMessage() << _T("`&")  << i_name\r
-                        << _T("': comma expected.");\r
-  return false;\r
+       if (!isEOL() && lookToken()->isComma()) {\r
+               getToken();\r
+               return true;\r
+       }\r
+       if (i_doesThrow)\r
+               throw ErrorMessage() << _T("`&")  << i_name\r
+               << _T("': comma expected.");\r
+       return false;\r
 }\r
 \r
 \r
 // <INCLUDE>\r
 void SettingLoader::load_INCLUDE()\r
 {\r
-  SettingLoader loader(m_soLog, m_log);\r
-  loader.m_defaultAssignModifier = m_defaultAssignModifier;\r
-  loader.m_defaultKeySeqModifier = m_defaultKeySeqModifier;\r
-  if (!loader.load(m_setting, (*getToken()).getString()))\r
-    m_isThereAnyError = true;\r
+       SettingLoader loader(m_soLog, m_log);\r
+       loader.m_defaultAssignModifier = m_defaultAssignModifier;\r
+       loader.m_defaultKeySeqModifier = m_defaultKeySeqModifier;\r
+       if (!loader.load(m_setting, (*getToken()).getString()))\r
+               m_isThereAnyError = true;\r
 }\r
 \r
 \r
 // <SCAN_CODES>\r
 void SettingLoader::load_SCAN_CODES(Key *o_key)\r
 {\r
-  for (int j = 0; j < Key::MAX_SCAN_CODES_SIZE && !isEOL(); ++ j)\r
-  {\r
-    ScanCode sc;\r
-    sc.m_flags = 0;\r
-    while (true)\r
-    {\r
-      Token *t = getToken();\r
-      if (t->isNumber())\r
-      {\r
-       sc.m_scan = (u_char)t->getNumber();\r
-       o_key->addScanCode(sc);\r
-       break;\r
-      }\r
-      if      (*t == _T("E0-")) sc.m_flags |= ScanCode::E0;\r
-      else if (*t == _T("E1-")) sc.m_flags |= ScanCode::E1;\r
-      else  throw ErrorMessage() << _T("`") << *t\r
-                                << _T("': invalid modifier.");\r
-    }\r
-  }\r
+       for (int j = 0; j < Key::MAX_SCAN_CODES_SIZE && !isEOL(); ++ j) {\r
+               ScanCode sc;\r
+               sc.m_flags = 0;\r
+               while (true) {\r
+                       Token *t = getToken();\r
+                       if (t->isNumber()) {\r
+                               sc.m_scan = (u_char)t->getNumber();\r
+                               o_key->addScanCode(sc);\r
+                               break;\r
+                       }\r
+                       if      (*t == _T("E0-")) sc.m_flags |= ScanCode::E0;\r
+                       else if (*t == _T("E1-")) sc.m_flags |= ScanCode::E1;\r
+                       else  throw ErrorMessage() << _T("`") << *t\r
+                               << _T("': invalid modifier.");\r
+               }\r
+       }\r
 }\r
 \r
 \r
 // <DEFINE_KEY>\r
 void SettingLoader::load_DEFINE_KEY()\r
 {\r
-  Token *t = getToken();\r
-  Key key;\r
-      \r
-  // <KEY_NAMES>\r
-  if (*t == _T('('))\r
-  {\r
-    key.addName(getToken()->getString());\r
-    while (t = getToken(), *t != _T(')'))\r
-      key.addName(t->getString());\r
-    if (*getToken() != _T("="))\r
-      throw ErrorMessage() << _T("there must be `=' after `)'.");\r
-  }\r
-  else\r
-  {\r
-    key.addName(t->getString());\r
-    while (t = getToken(), *t != _T("="))\r
-      key.addName(t->getString());\r
-  }\r
-\r
-  load_SCAN_CODES(&key);\r
-  m_setting->m_keyboard.addKey(key);\r
+       Token *t = getToken();\r
+       Key key;\r
+\r
+       // <KEY_NAMES>\r
+       if (*t == _T('(')) {\r
+               key.addName(getToken()->getString());\r
+               while (t = getToken(), *t != _T(')'))\r
+                       key.addName(t->getString());\r
+               if (*getToken() != _T("="))\r
+                       throw ErrorMessage() << _T("there must be `=' after `)'.");\r
+       } else {\r
+               key.addName(t->getString());\r
+               while (t = getToken(), *t != _T("="))\r
+                       key.addName(t->getString());\r
+       }\r
+\r
+       load_SCAN_CODES(&key);\r
+       m_setting->m_keyboard.addKey(key);\r
 }\r
 \r
 \r
 // <DEFINE_MODIFIER>\r
 void SettingLoader::load_DEFINE_MODIFIER()\r
 {\r
-  Token *t = getToken();\r
-  Modifier::Type mt;\r
-  if      (*t == _T("shift")  ) mt = Modifier::Type_Shift;\r
-  else if (*t == _T("alt")     ||\r
-          *t == _T("meta")    ||\r
-          *t == _T("menu")   ) mt = Modifier::Type_Alt;\r
-  else if (*t == _T("control") ||\r
-          *t == _T("ctrl")   ) mt = Modifier::Type_Control;\r
-  else if (*t == _T("windows") ||\r
-          *t == _T("win")    ) mt = Modifier::Type_Windows;\r
-  else throw ErrorMessage() << _T("`") << *t\r
-                           << _T("': invalid modifier name.");\r
-    \r
-  if (*getToken() != _T("="))\r
-    throw ErrorMessage() << _T("there must be `=' after modifier name.");\r
-    \r
-  while (!isEOL())\r
-  {\r
-    t = getToken();\r
-    Key *key =\r
-      m_setting->m_keyboard.searchKeyByNonAliasName(t->getString());\r
-    if (!key)\r
-      throw ErrorMessage() << _T("`") << *t << _T("': invalid key name.");\r
-    m_setting->m_keyboard.addModifier(mt, key);\r
-  }\r
+       Token *t = getToken();\r
+       Modifier::Type mt;\r
+       if      (*t == _T("shift")  ) mt = Modifier::Type_Shift;\r
+       else if (*t == _T("alt")     ||\r
+                        *t == _T("meta")    ||\r
+                        *t == _T("menu")   ) mt = Modifier::Type_Alt;\r
+       else if (*t == _T("control") ||\r
+                        *t == _T("ctrl")   ) mt = Modifier::Type_Control;\r
+       else if (*t == _T("windows") ||\r
+                        *t == _T("win")    ) mt = Modifier::Type_Windows;\r
+       else throw ErrorMessage() << _T("`") << *t\r
+               << _T("': invalid modifier name.");\r
+\r
+       if (*getToken() != _T("="))\r
+               throw ErrorMessage() << _T("there must be `=' after modifier name.");\r
+\r
+       while (!isEOL()) {\r
+               t = getToken();\r
+               Key *key =\r
+                       m_setting->m_keyboard.searchKeyByNonAliasName(t->getString());\r
+               if (!key)\r
+                       throw ErrorMessage() << _T("`") << *t << _T("': invalid key name.");\r
+               m_setting->m_keyboard.addModifier(mt, key);\r
+       }\r
 }\r
 \r
 \r
 // <DEFINE_SYNC_KEY>\r
 void SettingLoader::load_DEFINE_SYNC_KEY()\r
 {\r
-  Key *key = m_setting->m_keyboard.getSyncKey();\r
-  key->initialize();\r
-  key->addName(_T("sync"));\r
-  \r
-  if (*getToken() != _T("="))\r
-    throw ErrorMessage() << _T("there must be `=' after `sync'.");\r
-  \r
-  load_SCAN_CODES(key);\r
+       Key *key = m_setting->m_keyboard.getSyncKey();\r
+       key->initialize();\r
+       key->addName(_T("sync"));\r
+\r
+       if (*getToken() != _T("="))\r
+               throw ErrorMessage() << _T("there must be `=' after `sync'.");\r
+\r
+       load_SCAN_CODES(key);\r
 }\r
 \r
 \r
 // <DEFINE_ALIAS>\r
 void SettingLoader::load_DEFINE_ALIAS()\r
 {\r
-  Token *name = getToken();\r
-  \r
-  if (*getToken() != _T("="))\r
-    throw ErrorMessage() << _T("there must be `=' after `alias'.");\r
+       Token *name = getToken();\r
+\r
+       if (*getToken() != _T("="))\r
+               throw ErrorMessage() << _T("there must be `=' after `alias'.");\r
 \r
-  Token *t = getToken();\r
-  Key *key = m_setting->m_keyboard.searchKeyByNonAliasName(t->getString());\r
-  if (!key)\r
-    throw ErrorMessage() << _T("`") << *t << _T("': invalid key name.");\r
-  m_setting->m_keyboard.addAlias(name->getString(), key);\r
+       Token *t = getToken();\r
+       Key *key = m_setting->m_keyboard.searchKeyByNonAliasName(t->getString());\r
+       if (!key)\r
+               throw ErrorMessage() << _T("`") << *t << _T("': invalid key name.");\r
+       m_setting->m_keyboard.addAlias(name->getString(), key);\r
 }\r
 \r
 \r
 // <DEFINE_SUBSTITUTE>\r
 void SettingLoader::load_DEFINE_SUBSTITUTE()\r
 {\r
-  typedef std::list<ModifiedKey> AssignedKeys;\r
-  AssignedKeys assignedKeys;\r
-  do\r
-  {\r
-    ModifiedKey mkey;\r
-    mkey.m_modifier =\r
-      load_MODIFIER(Modifier::Type_ASSIGN, m_defaultAssignModifier);\r
-    mkey.m_key = load_KEY_NAME();\r
-    assignedKeys.push_back(mkey);\r
-  } while (!(*lookToken() == _T("=>") || *lookToken() == _T("=")));\r
-  getToken();\r
-  \r
-  KeySeq *keySeq = load_KEY_SEQUENCE(_T(""), false, Modifier::Type_ASSIGN);\r
-  ModifiedKey mkey = keySeq->getFirstModifiedKey();\r
-  if (!mkey.m_key)\r
-    throw ErrorMessage() << _T("no key is specified for substitute.");\r
-  \r
-  for (AssignedKeys::iterator i = assignedKeys.begin();\r
-       i != assignedKeys.end(); ++ i)\r
-    m_setting->m_keyboard.addSubstitute(*i, mkey);\r
+       typedef std::list<ModifiedKey> AssignedKeys;\r
+       AssignedKeys assignedKeys;\r
+       do {\r
+               ModifiedKey mkey;\r
+               mkey.m_modifier =\r
+                       load_MODIFIER(Modifier::Type_ASSIGN, m_defaultAssignModifier);\r
+               mkey.m_key = load_KEY_NAME();\r
+               assignedKeys.push_back(mkey);\r
+       } while (!(*lookToken() == _T("=>") || *lookToken() == _T("=")));\r
+       getToken();\r
+\r
+       KeySeq *keySeq = load_KEY_SEQUENCE(_T(""), false, Modifier::Type_ASSIGN);\r
+       ModifiedKey mkey = keySeq->getFirstModifiedKey();\r
+       if (!mkey.m_key)\r
+               throw ErrorMessage() << _T("no key is specified for substitute.");\r
+\r
+       for (AssignedKeys::iterator i = assignedKeys.begin();\r
+                       i != assignedKeys.end(); ++ i)\r
+               m_setting->m_keyboard.addSubstitute(*i, mkey);\r
 }\r
 \r
 \r
 // <DEFINE_OPTION>\r
 void SettingLoader::load_DEFINE_OPTION()\r
 {\r
-  Token *t = getToken();\r
-  if (*t == _T("KL-")) {\r
-    if (*getToken() != _T("=")) {\r
-      throw ErrorMessage() << _T("there must be `=' after `def option KL-'.");\r
-    }\r
-\r
-    load_ARGUMENT(&m_setting->m_correctKanaLockHandling);\r
-    \r
-  } else if (*t == _T("delay-of")) {\r
-    if (*getToken() != _T("!!!")) {\r
-      throw ErrorMessage()\r
-       << _T("there must be `!!!' after `def option delay-of'.");\r
-    }\r
-    \r
-    if (*getToken() != _T("=")) {\r
-      throw ErrorMessage()\r
-       << _T("there must be `=' after `def option delay-of !!!'.");\r
-    }\r
-    \r
-    load_ARGUMENT(&m_setting->m_oneShotRepeatableDelay);\r
-    \r
-  } else if (*t == _T("sts4mayu")) {\r
-    if (*getToken() != _T("=")) {\r
-      throw ErrorMessage()\r
-       << _T("there must be `=' after `def option sts4mayu'.");\r
-    }\r
-    \r
-    load_ARGUMENT(&m_setting->m_sts4mayu);\r
-    \r
-  } else if (*t == _T("cts4mayu")) {\r
-    if (*getToken() != _T("=")) {\r
-      throw ErrorMessage()\r
-       << _T("there must be `=' after `def option cts4mayu'.");\r
-    }\r
-    \r
-    load_ARGUMENT(&m_setting->m_cts4mayu);\r
-    \r
-  } else {\r
-    throw ErrorMessage() << _T("syntax error `def option ") << *t << _T("'.");\r
-  }\r
+       Token *t = getToken();\r
+       if (*t == _T("KL-")) {\r
+               if (*getToken() != _T("=")) {\r
+                       throw ErrorMessage() << _T("there must be `=' after `def option KL-'.");\r
+               }\r
+\r
+               load_ARGUMENT(&m_setting->m_correctKanaLockHandling);\r
+\r
+       } else if (*t == _T("delay-of")) {\r
+               if (*getToken() != _T("!!!")) {\r
+                       throw ErrorMessage()\r
+                       << _T("there must be `!!!' after `def option delay-of'.");\r
+               }\r
+\r
+               if (*getToken() != _T("=")) {\r
+                       throw ErrorMessage()\r
+                       << _T("there must be `=' after `def option delay-of !!!'.");\r
+               }\r
+\r
+               load_ARGUMENT(&m_setting->m_oneShotRepeatableDelay);\r
+\r
+       } else if (*t == _T("sts4mayu")) {\r
+               if (*getToken() != _T("=")) {\r
+                       throw ErrorMessage()\r
+                       << _T("there must be `=' after `def option sts4mayu'.");\r
+               }\r
+\r
+               load_ARGUMENT(&m_setting->m_sts4mayu);\r
+\r
+       } else if (*t == _T("cts4mayu")) {\r
+               if (*getToken() != _T("=")) {\r
+                       throw ErrorMessage()\r
+                       << _T("there must be `=' after `def option cts4mayu'.");\r
+               }\r
+\r
+               load_ARGUMENT(&m_setting->m_cts4mayu);\r
+\r
+       } else if (*t == _T("mouse-event")) {\r
+               if (*getToken() != _T("=")) {\r
+                       throw ErrorMessage()\r
+                       << _T("there must be `=' after `def option mouse-event'.");\r
+               }\r
+\r
+               load_ARGUMENT(&m_setting->m_mouseEvent);\r
+\r
+       } else if (*t == _T("drag-threshold")) {\r
+               if (*getToken() != _T("=")) {\r
+                       throw ErrorMessage()\r
+                       << _T("there must be `=' after `def option drag-threshold'.");\r
+               }\r
+\r
+               load_ARGUMENT(&m_setting->m_dragThreshold);\r
+\r
+       } else {\r
+               throw ErrorMessage() << _T("syntax error `def option ") << *t << _T("'.");\r
+       }\r
 }\r
 \r
 \r
@@ -387,915 +388,879 @@ void SettingLoader::load_DEFINE_OPTION()
 // <KEYBOARD_DEFINITION>\r
 void SettingLoader::load_KEYBOARD_DEFINITION()\r
 {\r
-  Token *t = getToken();\r
-    \r
-  // <DEFINE_KEY>\r
-  if (*t == _T("key")) load_DEFINE_KEY();\r
+       Token *t = getToken();\r
 \r
-  // <DEFINE_MODIFIER>\r
-  else if (*t == _T("mod")) load_DEFINE_MODIFIER();\r
-  \r
-  // <DEFINE_SYNC_KEY>\r
-  else if (*t == _T("sync")) load_DEFINE_SYNC_KEY();\r
-  \r
-  // <DEFINE_ALIAS>\r
-  else if (*t == _T("alias")) load_DEFINE_ALIAS();\r
-  \r
-  // <DEFINE_SUBSTITUTE>\r
-  else if (*t == _T("subst")) load_DEFINE_SUBSTITUTE();\r
+       // <DEFINE_KEY>\r
+       if (*t == _T("key")) load_DEFINE_KEY();\r
 \r
-  // <DEFINE_OPTION>\r
-  else if (*t == _T("option")) load_DEFINE_OPTION();\r
-  \r
-  //\r
-  else throw ErrorMessage() << _T("syntax error `") << *t << _T("'.");\r
+       // <DEFINE_MODIFIER>\r
+       else if (*t == _T("mod")) load_DEFINE_MODIFIER();\r
+\r
+       // <DEFINE_SYNC_KEY>\r
+       else if (*t == _T("sync")) load_DEFINE_SYNC_KEY();\r
+\r
+       // <DEFINE_ALIAS>\r
+       else if (*t == _T("alias")) load_DEFINE_ALIAS();\r
+\r
+       // <DEFINE_SUBSTITUTE>\r
+       else if (*t == _T("subst")) load_DEFINE_SUBSTITUTE();\r
+\r
+       // <DEFINE_OPTION>\r
+       else if (*t == _T("option")) load_DEFINE_OPTION();\r
+\r
+       //\r
+       else throw ErrorMessage() << _T("syntax error `") << *t << _T("'.");\r
 }\r
 \r
 \r
 // <..._MODIFIER>\r
 Modifier SettingLoader::load_MODIFIER(\r
-  Modifier::Type i_mode, Modifier i_modifier, Modifier::Type *o_mode)\r
-{\r
-  if (o_mode)\r
-    *o_mode = Modifier::Type_begin;\r
-  \r
-  Modifier isModifierSpecified;\r
-  enum { PRESS, RELEASE, DONTCARE } flag = PRESS;\r
-\r
-  int i;\r
-  for (i = i_mode; i < Modifier::Type_ASSIGN; ++ i)\r
-  {\r
-    i_modifier.dontcare(Modifier::Type(i));\r
-    isModifierSpecified.on(Modifier::Type(i));\r
-  }\r
-  \r
-  Token *t = NULL;\r
-  \r
-  continue_loop:\r
-  while (!isEOL())\r
-  {\r
-    t = lookToken();\r
-\r
-    const static struct { const _TCHAR *m_s; Modifier::Type m_mt; } map[] =\r
-    {\r
-      // <BASIC_MODIFIER>\r
-      { _T("S-"),  Modifier::Type_Shift },\r
-      { _T("A-"),  Modifier::Type_Alt },\r
-      { _T("M-"),  Modifier::Type_Alt },\r
-      { _T("C-"),  Modifier::Type_Control },\r
-      { _T("W-"),  Modifier::Type_Windows },\r
-      // <KEYSEQ_MODIFIER>\r
-      { _T("U-"),  Modifier::Type_Up },\r
-      { _T("D-"),  Modifier::Type_Down },\r
-      // <ASSIGN_MODIFIER>\r
-      { _T("R-"),  Modifier::Type_Repeat },\r
-      { _T("IL-"), Modifier::Type_ImeLock },\r
-      { _T("IC-"), Modifier::Type_ImeComp },\r
-      { _T("I-"),  Modifier::Type_ImeComp },\r
-      { _T("NL-"), Modifier::Type_NumLock },\r
-      { _T("CL-"), Modifier::Type_CapsLock },\r
-      { _T("SL-"), Modifier::Type_ScrollLock },\r
-      { _T("KL-"), Modifier::Type_KanaLock },\r
-      { _T("MAX-"), Modifier::Type_Maximized },\r
-      { _T("MIN-"), Modifier::Type_Minimized },\r
-      { _T("MMAX-"), Modifier::Type_MdiMaximized },\r
-      { _T("MMIN-"), Modifier::Type_MdiMinimized },\r
-      { _T("T-"), Modifier::Type_Touchpad },\r
-      { _T("TS-"), Modifier::Type_TouchpadSticky },\r
-      { _T("M0-"), Modifier::Type_Mod0 },\r
-      { _T("M1-"), Modifier::Type_Mod1 },\r
-      { _T("M2-"), Modifier::Type_Mod2 },\r
-      { _T("M3-"), Modifier::Type_Mod3 },\r
-      { _T("M4-"), Modifier::Type_Mod4 },\r
-      { _T("M5-"), Modifier::Type_Mod5 },\r
-      { _T("M6-"), Modifier::Type_Mod6 },\r
-      { _T("M7-"), Modifier::Type_Mod7 },\r
-      { _T("M8-"), Modifier::Type_Mod8 },\r
-      { _T("M9-"), Modifier::Type_Mod9 },\r
-      { _T("L0-"), Modifier::Type_Lock0 },\r
-      { _T("L1-"), Modifier::Type_Lock1 },\r
-      { _T("L2-"), Modifier::Type_Lock2 },\r
-      { _T("L3-"), Modifier::Type_Lock3 },\r
-      { _T("L4-"), Modifier::Type_Lock4 },\r
-      { _T("L5-"), Modifier::Type_Lock5 },\r
-      { _T("L6-"), Modifier::Type_Lock6 },\r
-      { _T("L7-"), Modifier::Type_Lock7 },\r
-      { _T("L8-"), Modifier::Type_Lock8 },\r
-      { _T("L9-"), Modifier::Type_Lock9 },\r
-    };\r
-\r
-    for (int i = 0; i < NUMBER_OF(map); ++ i)\r
-      if (*t == map[i].m_s)\r
-      {\r
-       getToken();\r
-       Modifier::Type mt = map[i].m_mt;\r
-       if (static_cast<int>(i_mode) <= static_cast<int>(mt))\r
-         throw ErrorMessage() << _T("`") << *t\r
-                              << _T("': invalid modifier at this context.");\r
-       switch (flag)\r
-       {\r
-         case PRESS: i_modifier.press(mt); break;\r
-         case RELEASE: i_modifier.release(mt); break;\r
-         case DONTCARE: i_modifier.dontcare(mt); break;\r
+       Modifier::Type i_mode, Modifier i_modifier, Modifier::Type *o_mode)\r
+{\r
+       if (o_mode)\r
+               *o_mode = Modifier::Type_begin;\r
+\r
+       Modifier isModifierSpecified;\r
+       enum { PRESS, RELEASE, DONTCARE } flag = PRESS;\r
+\r
+       int i;\r
+       for (i = i_mode; i < Modifier::Type_ASSIGN; ++ i) {\r
+               i_modifier.dontcare(Modifier::Type(i));\r
+               isModifierSpecified.on(Modifier::Type(i));\r
        }\r
-       isModifierSpecified.on(mt);\r
-       flag = PRESS;\r
-       \r
-       if (o_mode && *o_mode < mt)\r
-       {\r
-         if (mt < Modifier::Type_BASIC)\r
-           *o_mode = Modifier::Type_BASIC;\r
-         else if (mt < Modifier::Type_KEYSEQ)\r
-           *o_mode = Modifier::Type_KEYSEQ;\r
-         else if (mt < Modifier::Type_ASSIGN)\r
-           *o_mode = Modifier::Type_ASSIGN;\r
+\r
+       Token *t = NULL;\r
+\r
+continue_loop:\r
+       while (!isEOL()) {\r
+               t = lookToken();\r
+\r
+               const static struct {\r
+                       const _TCHAR *m_s;\r
+                       Modifier::Type m_mt;\r
+               } map[] = {\r
+                       // <BASIC_MODIFIER>\r
+                       { _T("S-"),  Modifier::Type_Shift },\r
+                       { _T("A-"),  Modifier::Type_Alt },\r
+                       { _T("M-"),  Modifier::Type_Alt },\r
+                       { _T("C-"),  Modifier::Type_Control },\r
+                       { _T("W-"),  Modifier::Type_Windows },\r
+                       // <KEYSEQ_MODIFIER>\r
+                       { _T("U-"),  Modifier::Type_Up },\r
+                       { _T("D-"),  Modifier::Type_Down },\r
+                       // <ASSIGN_MODIFIER>\r
+                       { _T("R-"),  Modifier::Type_Repeat },\r
+                       { _T("IL-"), Modifier::Type_ImeLock },\r
+                       { _T("IC-"), Modifier::Type_ImeComp },\r
+                       { _T("I-"),  Modifier::Type_ImeComp },\r
+                       { _T("NL-"), Modifier::Type_NumLock },\r
+                       { _T("CL-"), Modifier::Type_CapsLock },\r
+                       { _T("SL-"), Modifier::Type_ScrollLock },\r
+                       { _T("KL-"), Modifier::Type_KanaLock },\r
+                       { _T("MAX-"), Modifier::Type_Maximized },\r
+                       { _T("MIN-"), Modifier::Type_Minimized },\r
+                       { _T("MMAX-"), Modifier::Type_MdiMaximized },\r
+                       { _T("MMIN-"), Modifier::Type_MdiMinimized },\r
+                       { _T("T-"), Modifier::Type_Touchpad },\r
+                       { _T("TS-"), Modifier::Type_TouchpadSticky },\r
+                       { _T("M0-"), Modifier::Type_Mod0 },\r
+                       { _T("M1-"), Modifier::Type_Mod1 },\r
+                       { _T("M2-"), Modifier::Type_Mod2 },\r
+                       { _T("M3-"), Modifier::Type_Mod3 },\r
+                       { _T("M4-"), Modifier::Type_Mod4 },\r
+                       { _T("M5-"), Modifier::Type_Mod5 },\r
+                       { _T("M6-"), Modifier::Type_Mod6 },\r
+                       { _T("M7-"), Modifier::Type_Mod7 },\r
+                       { _T("M8-"), Modifier::Type_Mod8 },\r
+                       { _T("M9-"), Modifier::Type_Mod9 },\r
+                       { _T("L0-"), Modifier::Type_Lock0 },\r
+                       { _T("L1-"), Modifier::Type_Lock1 },\r
+                       { _T("L2-"), Modifier::Type_Lock2 },\r
+                       { _T("L3-"), Modifier::Type_Lock3 },\r
+                       { _T("L4-"), Modifier::Type_Lock4 },\r
+                       { _T("L5-"), Modifier::Type_Lock5 },\r
+                       { _T("L6-"), Modifier::Type_Lock6 },\r
+                       { _T("L7-"), Modifier::Type_Lock7 },\r
+                       { _T("L8-"), Modifier::Type_Lock8 },\r
+                       { _T("L9-"), Modifier::Type_Lock9 },\r
+               };\r
+\r
+               for (int i = 0; i < NUMBER_OF(map); ++ i)\r
+                       if (*t == map[i].m_s) {\r
+                               getToken();\r
+                               Modifier::Type mt = map[i].m_mt;\r
+                               if (static_cast<int>(i_mode) <= static_cast<int>(mt))\r
+                                       throw ErrorMessage() << _T("`") << *t\r
+                                       << _T("': invalid modifier at this context.");\r
+                               switch (flag) {\r
+                               case PRESS:\r
+                                       i_modifier.press(mt);\r
+                                       break;\r
+                               case RELEASE:\r
+                                       i_modifier.release(mt);\r
+                                       break;\r
+                               case DONTCARE:\r
+                                       i_modifier.dontcare(mt);\r
+                                       break;\r
+                               }\r
+                               isModifierSpecified.on(mt);\r
+                               flag = PRESS;\r
+\r
+                               if (o_mode && *o_mode < mt) {\r
+                                       if (mt < Modifier::Type_BASIC)\r
+                                               *o_mode = Modifier::Type_BASIC;\r
+                                       else if (mt < Modifier::Type_KEYSEQ)\r
+                                               *o_mode = Modifier::Type_KEYSEQ;\r
+                                       else if (mt < Modifier::Type_ASSIGN)\r
+                                               *o_mode = Modifier::Type_ASSIGN;\r
+                               }\r
+                               goto continue_loop;\r
+                       }\r
+\r
+               if (*t == _T("*")) {\r
+                       getToken();\r
+                       flag = DONTCARE;\r
+                       continue;\r
+               }\r
+\r
+               if (*t == _T("~")) {\r
+                       getToken();\r
+                       flag = RELEASE;\r
+                       continue;\r
+               }\r
+\r
+               break;\r
+       }\r
+\r
+       for (i = Modifier::Type_begin; i != Modifier::Type_end; ++ i)\r
+               if (!isModifierSpecified.isOn(Modifier::Type(i)))\r
+                       switch (flag) {\r
+                       case PRESS:\r
+                               break;\r
+                       case RELEASE:\r
+                               i_modifier.release(Modifier::Type(i));\r
+                               break;\r
+                       case DONTCARE:\r
+                               i_modifier.dontcare(Modifier::Type(i));\r
+                               break;\r
+                       }\r
+\r
+       // fix up and down\r
+       bool isDontcareUp   = i_modifier.isDontcare(Modifier::Type_Up);\r
+       bool isDontcareDown = i_modifier.isDontcare(Modifier::Type_Down);\r
+       bool isOnUp         = i_modifier.isOn(Modifier::Type_Up);\r
+       bool isOnDown       = i_modifier.isOn(Modifier::Type_Down);\r
+       if (isDontcareUp && isDontcareDown)\r
+               ;\r
+       else if (isDontcareUp)\r
+               i_modifier.on(Modifier::Type_Up, !isOnDown);\r
+       else if (isDontcareDown)\r
+               i_modifier.on(Modifier::Type_Down, !isOnUp);\r
+       else if (isOnUp == isOnDown) {\r
+               i_modifier.dontcare(Modifier::Type_Up);\r
+               i_modifier.dontcare(Modifier::Type_Down);\r
        }\r
-       goto continue_loop;\r
-      }\r
-      \r
-    if (*t == _T("*"))\r
-    {\r
-      getToken();\r
-      flag = DONTCARE;\r
-      continue;\r
-    }\r
-      \r
-    if (*t == _T("~"))\r
-    {\r
-      getToken();\r
-      flag = RELEASE;\r
-      continue;\r
-    }\r
-\r
-    break;\r
-  }\r
-  \r
-  for (i = Modifier::Type_begin; i != Modifier::Type_end; ++ i)\r
-    if (!isModifierSpecified.isOn(Modifier::Type(i)))\r
-      switch (flag)\r
-      {\r
-       case PRESS: break;\r
-       case RELEASE: i_modifier.release(Modifier::Type(i)); break;\r
-       case DONTCARE: i_modifier.dontcare(Modifier::Type(i)); break;\r
-      }\r
-\r
-  // fix up and down\r
-  bool isDontcareUp   = i_modifier.isDontcare(Modifier::Type_Up);\r
-  bool isDontcareDown = i_modifier.isDontcare(Modifier::Type_Down);\r
-  bool isOnUp         = i_modifier.isOn(Modifier::Type_Up);\r
-  bool isOnDown       = i_modifier.isOn(Modifier::Type_Down);\r
-  if (isDontcareUp && isDontcareDown)\r
-    ;\r
-  else if (isDontcareUp)\r
-    i_modifier.on(Modifier::Type_Up, !isOnDown);\r
-  else if (isDontcareDown)\r
-    i_modifier.on(Modifier::Type_Down, !isOnUp);\r
-  else if (isOnUp == isOnDown)\r
-  {\r
-    i_modifier.dontcare(Modifier::Type_Up);\r
-    i_modifier.dontcare(Modifier::Type_Down);\r
-  }\r
-\r
-  // fix repeat\r
-  if (!isModifierSpecified.isOn(Modifier::Type_Repeat))\r
-    i_modifier.dontcare(Modifier::Type_Repeat);\r
-  return i_modifier;\r
+\r
+       // fix repeat\r
+       if (!isModifierSpecified.isOn(Modifier::Type_Repeat))\r
+               i_modifier.dontcare(Modifier::Type_Repeat);\r
+       return i_modifier;\r
 }\r
 \r
 \r
 // <KEY_NAME>\r
 Key *SettingLoader::load_KEY_NAME()\r
 {\r
-  Token *t = getToken();\r
-  Key *key = m_setting->m_keyboard.searchKey(t->getString());\r
-  if (!key)\r
-    throw ErrorMessage() << _T("`") << *t << _T("': invalid key name.");\r
-  return key;\r
+       Token *t = getToken();\r
+       Key *key = m_setting->m_keyboard.searchKey(t->getString());\r
+       if (!key)\r
+               throw ErrorMessage() << _T("`") << *t << _T("': invalid key name.");\r
+       return key;\r
 }\r
 \r
 \r
 // <KEYMAP_DEFINITION>\r
 void SettingLoader::load_KEYMAP_DEFINITION(const Token *i_which)\r
 {\r
-  Keymap::Type type = Keymap::Type_keymap;\r
-  Token *name = getToken();    // <KEYMAP_NAME>\r
-  tstringi windowClassName;\r
-  tstringi windowTitleName;\r
-  KeySeq *keySeq = NULL;\r
-  Keymap *parentKeymap = NULL;\r
-  bool isKeymap2 = false;\r
-  bool doesLoadDefaultKeySeq = false;\r
-\r
-  if (!isEOL())\r
-  {\r
-    Token *t = lookToken();\r
-    if (*i_which == _T("window"))      // <WINDOW>\r
-    {\r
-      if (t->isOpenParen())\r
-       // "(" <WINDOW_CLASS_NAME> "&&" <WINDOW_TITLE_NAME> ")"\r
-       // "(" <WINDOW_CLASS_NAME> "||" <WINDOW_TITLE_NAME> ")"\r
-      {\r
-       getToken();\r
-       windowClassName = getToken()->getRegexp();\r
-       t = getToken();\r
-       if (*t == _T("&&"))\r
-         type = Keymap::Type_windowAnd;\r
-       else if (*t == _T("||"))\r
-         type = Keymap::Type_windowOr;\r
-       else\r
-         throw ErrorMessage() << _T("`") << *t << _T("': unknown operator.");\r
-       windowTitleName = getToken()->getRegexp();\r
-       if (!getToken()->isCloseParen())\r
-         throw ErrorMessage() << _T("there must be `)'.");\r
-      }\r
-      else if (t->isRegexp())  // <WINDOW_CLASS_NAME>\r
-      {\r
-       getToken();\r
-       type = Keymap::Type_windowAnd;\r
-       windowClassName = t->getRegexp();\r
-      }\r
-    }\r
-    else if (*i_which == _T("keymap"))\r
-      ;\r
-    else if (*i_which == _T("keymap2"))\r
-      isKeymap2 = true;\r
-    else\r
-      ASSERT(false);\r
-    \r
-    if (!isEOL())\r
-      doesLoadDefaultKeySeq = true;\r
-  }\r
-\r
-  m_currentKeymap = m_setting->m_keymaps.add(\r
-    Keymap(type, name->getString(), windowClassName, windowTitleName,\r
-          NULL, NULL));\r
-\r
-  if (doesLoadDefaultKeySeq)\r
-  {\r
-    Token *t = lookToken();\r
-    // <KEYMAP_PARENT>\r
-    if (*t == _T(":"))\r
-    {\r
-      getToken();\r
-      t = getToken();\r
-      parentKeymap = m_setting->m_keymaps.searchByName(t->getString());\r
-      if (!parentKeymap)\r
-       throw ErrorMessage() << _T("`") << *t\r
-                            << _T("': unknown keymap name.");\r
-    }\r
-    if (!isEOL())\r
-    {\r
-      t = getToken();\r
-      if (!(*t == _T("=>") || *t == _T("=")))\r
-       throw ErrorMessage() << _T("`") << *t << _T("': syntax error.");\r
-      keySeq = SettingLoader::load_KEY_SEQUENCE();\r
-    }\r
-  }\r
-  if (keySeq == NULL)\r
-  {\r
-    FunctionData *fd;\r
-    if (type == Keymap::Type_keymap && !isKeymap2)\r
-      fd = createFunctionData(_T("KeymapParent"));\r
-    else if (type == Keymap::Type_keymap && !isKeymap2)\r
-      fd = createFunctionData(_T("Undefined"));\r
-    else // (type == Keymap::Type_windowAnd || type == Keymap::Type_windowOr)\r
-      fd = createFunctionData(_T("KeymapParent"));\r
-    ASSERT( fd );\r
-    keySeq = m_setting->m_keySeqs.add(\r
-      KeySeq(name->getString()).add(ActionFunction(fd)));\r
-  }\r
-\r
-  m_currentKeymap->setIfNotYet(keySeq, parentKeymap);\r
+       Keymap::Type type = Keymap::Type_keymap;\r
+       Token *name = getToken();       // <KEYMAP_NAME>\r
+       tstringi windowClassName;\r
+       tstringi windowTitleName;\r
+       KeySeq *keySeq = NULL;\r
+       Keymap *parentKeymap = NULL;\r
+       bool isKeymap2 = false;\r
+       bool doesLoadDefaultKeySeq = false;\r
+\r
+       if (!isEOL()) {\r
+               Token *t = lookToken();\r
+               if (*i_which == _T("window")) { // <WINDOW>\r
+                       if (t->isOpenParen())\r
+                               // "(" <WINDOW_CLASS_NAME> "&&" <WINDOW_TITLE_NAME> ")"\r
+                               // "(" <WINDOW_CLASS_NAME> "||" <WINDOW_TITLE_NAME> ")"\r
+                       {\r
+                               getToken();\r
+                               windowClassName = getToken()->getRegexp();\r
+                               t = getToken();\r
+                               if (*t == _T("&&"))\r
+                                       type = Keymap::Type_windowAnd;\r
+                               else if (*t == _T("||"))\r
+                                       type = Keymap::Type_windowOr;\r
+                               else\r
+                                       throw ErrorMessage() << _T("`") << *t << _T("': unknown operator.");\r
+                               windowTitleName = getToken()->getRegexp();\r
+                               if (!getToken()->isCloseParen())\r
+                                       throw ErrorMessage() << _T("there must be `)'.");\r
+                       } else if (t->isRegexp()) {     // <WINDOW_CLASS_NAME>\r
+                               getToken();\r
+                               type = Keymap::Type_windowAnd;\r
+                               windowClassName = t->getRegexp();\r
+                       }\r
+               } else if (*i_which == _T("keymap"))\r
+                       ;\r
+               else if (*i_which == _T("keymap2"))\r
+                       isKeymap2 = true;\r
+               else\r
+                       ASSERT(false);\r
+\r
+               if (!isEOL())\r
+                       doesLoadDefaultKeySeq = true;\r
+       }\r
+\r
+       m_currentKeymap = m_setting->m_keymaps.add(\r
+                                                 Keymap(type, name->getString(), windowClassName, windowTitleName,\r
+                                                                NULL, NULL));\r
+\r
+       if (doesLoadDefaultKeySeq) {\r
+               Token *t = lookToken();\r
+               // <KEYMAP_PARENT>\r
+               if (*t == _T(":")) {\r
+                       getToken();\r
+                       t = getToken();\r
+                       parentKeymap = m_setting->m_keymaps.searchByName(t->getString());\r
+                       if (!parentKeymap)\r
+                               throw ErrorMessage() << _T("`") << *t\r
+                               << _T("': unknown keymap name.");\r
+               }\r
+               if (!isEOL()) {\r
+                       t = getToken();\r
+                       if (!(*t == _T("=>") || *t == _T("=")))\r
+                               throw ErrorMessage() << _T("`") << *t << _T("': syntax error.");\r
+                       keySeq = SettingLoader::load_KEY_SEQUENCE();\r
+               }\r
+       }\r
+       if (keySeq == NULL) {\r
+               FunctionData *fd;\r
+               if (type == Keymap::Type_keymap && !isKeymap2)\r
+                       fd = createFunctionData(_T("KeymapParent"));\r
+               else if (type == Keymap::Type_keymap && !isKeymap2)\r
+                       fd = createFunctionData(_T("Undefined"));\r
+               else // (type == Keymap::Type_windowAnd || type == Keymap::Type_windowOr)\r
+                       fd = createFunctionData(_T("KeymapParent"));\r
+               ASSERT( fd );\r
+               keySeq = m_setting->m_keySeqs.add(\r
+                                        KeySeq(name->getString()).add(ActionFunction(fd)));\r
+       }\r
+\r
+       m_currentKeymap->setIfNotYet(keySeq, parentKeymap);\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(bool *o_arg)\r
 {\r
-  *o_arg = !(*getToken() == _T("false"));\r
+       *o_arg = !(*getToken() == _T("false"));\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(int *o_arg)\r
 {\r
-  *o_arg = getToken()->getNumber();\r
+       *o_arg = getToken()->getNumber();\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(unsigned int *o_arg)\r
 {\r
-  *o_arg = getToken()->getNumber();\r
+       *o_arg = getToken()->getNumber();\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(long *o_arg)\r
 {\r
-  *o_arg = getToken()->getNumber();\r
+       *o_arg = getToken()->getNumber();\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(unsigned __int64 *o_arg)\r
 {\r
-  *o_arg = getToken()->getNumber();\r
+       *o_arg = getToken()->getNumber();\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(__int64 *o_arg)\r
 {\r
-  *o_arg = getToken()->getNumber();\r
+       *o_arg = getToken()->getNumber();\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(tstringq *o_arg)\r
 {\r
-  *o_arg = getToken()->getString();\r
+       *o_arg = getToken()->getString();\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(std::list<tstringq> *o_arg)\r
 {\r
-  while (true)\r
-  {\r
-    if (!lookToken()->isString())\r
-      return;\r
-    o_arg->push_back(getToken()->getString());\r
-    \r
-    if (!lookToken()->isComma())\r
-      return;\r
-    getToken();\r
-  }\r
+       while (true) {\r
+               if (!lookToken()->isString())\r
+                       return;\r
+               o_arg->push_back(getToken()->getString());\r
+\r
+               if (!lookToken()->isComma())\r
+                       return;\r
+               getToken();\r
+       }\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(tregex *o_arg)\r
 {\r
-  *o_arg = getToken()->getRegexp();\r
+       *o_arg = getToken()->getRegexp();\r
 }\r
 \r
 \r
 // &lt;ARGUMENT_VK&gt;\r
 void SettingLoader::load_ARGUMENT(VKey *o_arg)\r
 {\r
-  Token *t = getToken();\r
-  int vkey = 0;\r
-  while (true)\r
-  {\r
-    if (t->isNumber()) { vkey |= static_cast<BYTE>(t->getNumber()); break; }\r
-    else if (*t == _T("E-")) vkey |= VKey_extended;\r
-    else if (*t == _T("U-")) vkey |= VKey_released;\r
-    else if (*t == _T("D-")) vkey |= VKey_pressed;\r
-    else\r
-    {\r
-      const VKeyTable *vkt;\r
-      for (vkt = g_vkeyTable; vkt->m_name; ++ vkt)\r
-       if (*t == vkt->m_name)\r
-         break;\r
-      if (!vkt->m_name)\r
-       throw ErrorMessage() << _T("`") << *t\r
-                            << _T("': unknown virtual key name.");\r
-      vkey |= vkt->m_code;\r
-      break;\r
-    }\r
-    t = getToken();\r
-  }\r
-  if (!(vkey & VKey_released) && !(vkey & VKey_pressed))\r
-    vkey |= VKey_released | VKey_pressed;\r
-  *o_arg = static_cast<VKey>(vkey);\r
+       Token *t = getToken();\r
+       int vkey = 0;\r
+       while (true) {\r
+               if (t->isNumber()) {\r
+                       vkey |= static_cast<BYTE>(t->getNumber());\r
+                       break;\r
+               } else if (*t == _T("E-")) vkey |= VKey_extended;\r
+               else if (*t == _T("U-")) vkey |= VKey_released;\r
+               else if (*t == _T("D-")) vkey |= VKey_pressed;\r
+               else {\r
+                       const VKeyTable *vkt;\r
+                       for (vkt = g_vkeyTable; vkt->m_name; ++ vkt)\r
+                               if (*t == vkt->m_name)\r
+                                       break;\r
+                       if (!vkt->m_name)\r
+                               throw ErrorMessage() << _T("`") << *t\r
+                               << _T("': unknown virtual key name.");\r
+                       vkey |= vkt->m_code;\r
+                       break;\r
+               }\r
+               t = getToken();\r
+       }\r
+       if (!(vkey & VKey_released) && !(vkey & VKey_pressed))\r
+               vkey |= VKey_released | VKey_pressed;\r
+       *o_arg = static_cast<VKey>(vkey);\r
 }\r
 \r
 \r
 // &lt;ARGUMENT_WINDOW&gt;\r
 void SettingLoader::load_ARGUMENT(ToWindowType *o_arg)\r
 {\r
-  Token *t = getToken();\r
-  if (t->isNumber())\r
-  {\r
-    if (ToWindowType_toBegin <= t->getNumber())\r
-    {\r
-      *o_arg = static_cast<ToWindowType>(t->getNumber());\r
-      return;\r
-    }\r
-  }\r
-  else if (getTypeValue(o_arg, t->getString()))\r
-    return;\r
-  throw ErrorMessage() << _T("`") << *t << _T("': invalid target window.");\r
+       Token *t = getToken();\r
+       if (t->isNumber()) {\r
+               if (ToWindowType_toBegin <= t->getNumber()) {\r
+                       *o_arg = static_cast<ToWindowType>(t->getNumber());\r
+                       return;\r
+               }\r
+       } else if (getTypeValue(o_arg, t->getString()))\r
+               return;\r
+       throw ErrorMessage() << _T("`") << *t << _T("': invalid target window.");\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(GravityType *o_arg)\r
 {\r
-  Token *t = getToken();\r
-  if (getTypeValue(o_arg, t->getString()))\r
-    return;\r
-  throw ErrorMessage() << _T("`") << *t << _T("': unknown gravity symbol.");\r
+       Token *t = getToken();\r
+       if (getTypeValue(o_arg, t->getString()))\r
+               return;\r
+       throw ErrorMessage() << _T("`") << *t << _T("': unknown gravity symbol.");\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(MouseHookType *o_arg)\r
 {\r
-  Token *t = getToken();\r
-  if (getTypeValue(o_arg, t->getString()))\r
-    return;\r
-  throw ErrorMessage() << _T("`") << *t << _T("': unknown MouseHookType symbol.");\r
+       Token *t = getToken();\r
+       if (getTypeValue(o_arg, t->getString()))\r
+               return;\r
+       throw ErrorMessage() << _T("`") << *t << _T("': unknown MouseHookType symbol.");\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(MayuDialogType *o_arg)\r
 {\r
-  Token *t = getToken();\r
-  if (getTypeValue(o_arg, t->getString()))\r
-    return;\r
-  throw ErrorMessage() << _T("`") << *t << _T("': unknown dialog box.");\r
+       Token *t = getToken();\r
+       if (getTypeValue(o_arg, t->getString()))\r
+               return;\r
+       throw ErrorMessage() << _T("`") << *t << _T("': unknown dialog box.");\r
 }\r
 \r
 \r
 // &lt;ARGUMENT_LOCK&gt;\r
 void SettingLoader::load_ARGUMENT(ModifierLockType *o_arg)\r
 {\r
-  Token *t = getToken();\r
-  if (getTypeValue(o_arg, t->getString()))\r
-    return;\r
-  throw ErrorMessage() << _T("`") << *t << _T("': unknown lock name.");\r
+       Token *t = getToken();\r
+       if (getTypeValue(o_arg, t->getString()))\r
+               return;\r
+       throw ErrorMessage() << _T("`") << *t << _T("': unknown lock name.");\r
 }\r
 \r
 \r
 // &lt;ARGUMENT_LOCK&gt;\r
 void SettingLoader::load_ARGUMENT(ToggleType *o_arg)\r
 {\r
-  Token *t = getToken();\r
-  if (getTypeValue(o_arg, t->getString()))\r
-    return;\r
-  throw ErrorMessage() << _T("`") << *t << _T("': unknown toggle name.");\r
+       Token *t = getToken();\r
+       if (getTypeValue(o_arg, t->getString()))\r
+               return;\r
+       throw ErrorMessage() << _T("`") << *t << _T("': unknown toggle name.");\r
 }\r
 \r
 \r
 // &lt;ARGUMENT_SHOW_WINDOW&gt;\r
 void SettingLoader::load_ARGUMENT(ShowCommandType *o_arg)\r
 {\r
-  Token *t = getToken();\r
-  if (getTypeValue(o_arg, t->getString()))\r
-    return;\r
-  throw ErrorMessage() << _T("`") << *t << _T("': unknown show command.");\r
+       Token *t = getToken();\r
+       if (getTypeValue(o_arg, t->getString()))\r
+               return;\r
+       throw ErrorMessage() << _T("`") << *t << _T("': unknown show command.");\r
 }\r
 \r
 \r
 // &lt;ARGUMENT_TARGET_WINDOW&gt;\r
 void SettingLoader::load_ARGUMENT(TargetWindowType *o_arg)\r
 {\r
-  Token *t = getToken();\r
-  if (getTypeValue(o_arg, t->getString()))\r
-    return;\r
-  throw ErrorMessage() << _T("`") << *t\r
-                      << _T("': unknown target window type.");\r
+       Token *t = getToken();\r
+       if (getTypeValue(o_arg, t->getString()))\r
+               return;\r
+       throw ErrorMessage() << _T("`") << *t\r
+       << _T("': unknown target window type.");\r
 }\r
 \r
 \r
 // &lt;bool&gt;\r
 void SettingLoader::load_ARGUMENT(BooleanType *o_arg)\r
 {\r
-  Token *t = getToken();\r
-  if (getTypeValue(o_arg, t->getString()))\r
-    return;\r
-  throw ErrorMessage() << _T("`") << *t << _T("': must be true or false.");\r
+       Token *t = getToken();\r
+       if (getTypeValue(o_arg, t->getString()))\r
+               return;\r
+       throw ErrorMessage() << _T("`") << *t << _T("': must be true or false.");\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(LogicalOperatorType *o_arg)\r
 {\r
-  Token *t = getToken();\r
-  if (getTypeValue(o_arg, t->getString()))\r
-    return;\r
-  throw ErrorMessage() << _T("`") << *t << _T("': must be 'or' or 'and'.");\r
+       Token *t = getToken();\r
+       if (getTypeValue(o_arg, t->getString()))\r
+               return;\r
+       throw ErrorMessage() << _T("`") << *t << _T("': must be 'or' or 'and'.");\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(Modifier *o_arg)\r
 {\r
-  Modifier modifier;\r
-  for (int i = Modifier::Type_begin; i != Modifier::Type_end; ++ i)\r
-    modifier.dontcare(static_cast<Modifier::Type>(i));\r
-  *o_arg = load_MODIFIER(Modifier::Type_ASSIGN, modifier);\r
+       Modifier modifier;\r
+       for (int i = Modifier::Type_begin; i != Modifier::Type_end; ++ i)\r
+               modifier.dontcare(static_cast<Modifier::Type>(i));\r
+       *o_arg = load_MODIFIER(Modifier::Type_ASSIGN, modifier);\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(const Keymap **o_arg)\r
 {\r
-  Token *t = getToken();\r
-  const Keymap *&keymap = *o_arg;\r
-  keymap = m_setting->m_keymaps.searchByName(t->getString());\r
-  if (!keymap)\r
-    throw ErrorMessage() << _T("`") << *t << _T("': unknown keymap name.");\r
+       Token *t = getToken();\r
+       const Keymap *&keymap = *o_arg;\r
+       keymap = m_setting->m_keymaps.searchByName(t->getString());\r
+       if (!keymap)\r
+               throw ErrorMessage() << _T("`") << *t << _T("': unknown keymap name.");\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(const KeySeq **o_arg)\r
 {\r
-  Token *t = getToken();\r
-  const KeySeq *&keySeq = *o_arg;\r
-  if (t->isOpenParen())\r
-  {\r
-    keySeq = load_KEY_SEQUENCE(_T(""), true);\r
-    getToken(); // close paren\r
-  }\r
-  else if (*t == _T("$"))\r
-  {\r
-    t = getToken();\r
-    keySeq = m_setting->m_keySeqs.searchByName(t->getString());\r
-    if (!keySeq)\r
-      throw ErrorMessage() << _T("`$") << *t << _T("': unknown keyseq name.");\r
-  }\r
-  else\r
-    throw ErrorMessage() << _T("`") << *t << _T("': it is not keyseq.");\r
+       Token *t = getToken();\r
+       const KeySeq *&keySeq = *o_arg;\r
+       if (t->isOpenParen()) {\r
+               keySeq = load_KEY_SEQUENCE(_T(""), true);\r
+               getToken(); // close paren\r
+       } else if (*t == _T("$")) {\r
+               t = getToken();\r
+               keySeq = m_setting->m_keySeqs.searchByName(t->getString());\r
+               if (!keySeq)\r
+                       throw ErrorMessage() << _T("`$") << *t << _T("': unknown keyseq name.");\r
+       } else\r
+               throw ErrorMessage() << _T("`") << *t << _T("': it is not keyseq.");\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(StrExprArg *o_arg)\r
 {\r
-  Token *t = getToken();\r
-  StrExprArg::Type type = StrExprArg::Literal;\r
-  if (*t == _T("$") && t->isQuoted() == false\r
-      && lookToken()->getType() == Token::Type_string)\r
-  {\r
-    type = StrExprArg::Builtin;\r
-    t = getToken();\r
-  }\r
-  *o_arg = StrExprArg(t->getString(), type);\r
+       Token *t = getToken();\r
+       StrExprArg::Type type = StrExprArg::Literal;\r
+       if (*t == _T("$") && t->isQuoted() == false\r
+                       && lookToken()->getType() == Token::Type_string) {\r
+               type = StrExprArg::Builtin;\r
+               t = getToken();\r
+       }\r
+       *o_arg = StrExprArg(t->getString(), type);\r
 }\r
 \r
 \r
 // &lt;ARGUMENT&gt;\r
 void SettingLoader::load_ARGUMENT(WindowMonitorFromType *o_arg)\r
 {\r
-  Token *t = getToken();\r
-  if (getTypeValue(o_arg, t->getString()))\r
-    return;\r
-  throw ErrorMessage() << _T("`") << *t\r
-                      << _T("': unknown monitor from type.");\r
+       Token *t = getToken();\r
+       if (getTypeValue(o_arg, t->getString()))\r
+               return;\r
+       throw ErrorMessage() << _T("`") << *t\r
+       << _T("': unknown monitor from type.");\r
 }\r
 \r
 \r
 // <KEY_SEQUENCE>\r
 KeySeq *SettingLoader::load_KEY_SEQUENCE(\r
-  const tstringi &i_name, bool i_isInParen, Modifier::Type i_mode)\r
-{\r
-  KeySeq keySeq(i_name);\r
-  while (!isEOL())\r
-  {\r
-    Modifier::Type mode;\r
-    Modifier modifier = load_MODIFIER(i_mode, m_defaultKeySeqModifier, &mode);\r
-    keySeq.setMode(mode);\r
-    Token *t = lookToken();\r
-    if (t->isCloseParen() && i_isInParen)\r
-      break;\r
-    else if (t->isOpenParen())\r
-    {\r
-      getToken(); // open paren\r
-      KeySeq *ks = load_KEY_SEQUENCE(_T(""), true, i_mode);\r
-      getToken(); // close paren\r
-      keySeq.add(ActionKeySeq(ks));\r
-    }\r
-    else if (*t == _T("$")) // <KEYSEQ_NAME>\r
-    {\r
-      getToken();\r
-      t = getToken();\r
-      KeySeq *ks = m_setting->m_keySeqs.searchByName(t->getString());\r
-      if (ks == NULL)\r
-       throw ErrorMessage() << _T("`$") << *t\r
-                            << _T("': unknown keyseq name.");\r
-      if (!ks->isCorrectMode(i_mode))\r
-       throw ErrorMessage()\r
-         << _T("`$") << *t\r
-         << _T("': Some of R-, IL-, IC-, NL-, CL-, SL-, KL-, MAX-, MIN-, MMAX-, MMIN-, T-, TS-, M0...M9- and L0...L9- are used in the keyseq.  They are prohibited in this context.");\r
-      keySeq.setMode(ks->getMode());\r
-      keySeq.add(ActionKeySeq(ks));\r
-    }\r
-    else if (*t == _T("&")) // <FUNCTION_NAME>\r
-    {\r
-      getToken();\r
-      t = getToken();\r
-      \r
-      // search function\r
-      ActionFunction af(createFunctionData(t->getString()), modifier);\r
-      if (af.m_functionData == NULL)\r
-       throw ErrorMessage() << _T("`&") << *t\r
-                            << _T("': unknown function name.");\r
-      af.m_functionData->load(this);\r
-      keySeq.add(af);\r
-    }\r
-    else // <KEYSEQ_MODIFIED_KEY_NAME>\r
-    {\r
-      ModifiedKey mkey;\r
-      mkey.m_modifier = modifier;\r
-      mkey.m_key = load_KEY_NAME();\r
-      keySeq.add(ActionKey(mkey));\r
-    }\r
-  }\r
-  return m_setting->m_keySeqs.add(keySeq);\r
+       const tstringi &i_name, bool i_isInParen, Modifier::Type i_mode)\r
+{\r
+       KeySeq keySeq(i_name);\r
+       while (!isEOL()) {\r
+               Modifier::Type mode;\r
+               Modifier modifier = load_MODIFIER(i_mode, m_defaultKeySeqModifier, &mode);\r
+               keySeq.setMode(mode);\r
+               Token *t = lookToken();\r
+               if (t->isCloseParen() && i_isInParen)\r
+                       break;\r
+               else if (t->isOpenParen()) {\r
+                       getToken(); // open paren\r
+                       KeySeq *ks = load_KEY_SEQUENCE(_T(""), true, i_mode);\r
+                       getToken(); // close paren\r
+                       keySeq.add(ActionKeySeq(ks));\r
+               } else if (*t == _T("$")) { // <KEYSEQ_NAME>\r
+                       getToken();\r
+                       t = getToken();\r
+                       KeySeq *ks = m_setting->m_keySeqs.searchByName(t->getString());\r
+                       if (ks == NULL)\r
+                               throw ErrorMessage() << _T("`$") << *t\r
+                               << _T("': unknown keyseq name.");\r
+                       if (!ks->isCorrectMode(i_mode))\r
+                               throw ErrorMessage()\r
+                               << _T("`$") << *t\r
+                               << _T("': Some of R-, IL-, IC-, NL-, CL-, SL-, KL-, MAX-, MIN-, MMAX-, MMIN-, T-, TS-, M0...M9- and L0...L9- are used in the keyseq.  They are prohibited in this context.");\r
+                       keySeq.setMode(ks->getMode());\r
+                       keySeq.add(ActionKeySeq(ks));\r
+               } else if (*t == _T("&")) { // <FUNCTION_NAME>\r
+                       getToken();\r
+                       t = getToken();\r
+\r
+                       // search function\r
+                       ActionFunction af(createFunctionData(t->getString()), modifier);\r
+                       if (af.m_functionData == NULL)\r
+                               throw ErrorMessage() << _T("`&") << *t\r
+                               << _T("': unknown function name.");\r
+                       af.m_functionData->load(this);\r
+                       keySeq.add(af);\r
+               } else { // <KEYSEQ_MODIFIED_KEY_NAME>\r
+                       ModifiedKey mkey;\r
+                       mkey.m_modifier = modifier;\r
+                       mkey.m_key = load_KEY_NAME();\r
+                       keySeq.add(ActionKey(mkey));\r
+               }\r
+       }\r
+       return m_setting->m_keySeqs.add(keySeq);\r
 }\r
 \r
 \r
 // <KEY_ASSIGN>\r
 void SettingLoader::load_KEY_ASSIGN()\r
 {\r
-  typedef std::list<ModifiedKey> AssignedKeys;\r
-  AssignedKeys assignedKeys;\r
-  \r
-  ModifiedKey mkey;\r
-  mkey.m_modifier =\r
-    load_MODIFIER(Modifier::Type_ASSIGN, m_defaultAssignModifier);\r
-  if (*lookToken() == _T("="))\r
-  {\r
-    getToken();\r
-    m_defaultKeySeqModifier = load_MODIFIER(Modifier::Type_KEYSEQ,\r
-                                           m_defaultKeySeqModifier);\r
-    m_defaultAssignModifier = mkey.m_modifier;\r
-    return;\r
-  }\r
-  \r
-  while (true)\r
-  {\r
-    mkey.m_key = load_KEY_NAME();\r
-    assignedKeys.push_back(mkey);\r
-    if (*lookToken() == _T("=>") || *lookToken() == _T("="))\r
-      break;\r
-    mkey.m_modifier =\r
-      load_MODIFIER(Modifier::Type_ASSIGN, m_defaultAssignModifier);\r
-  }\r
-  getToken();\r
-\r
-  ASSERT(m_currentKeymap);\r
-  KeySeq *keySeq = load_KEY_SEQUENCE();\r
-  for (AssignedKeys::iterator i = assignedKeys.begin();\r
-       i != assignedKeys.end(); ++ i)\r
-    m_currentKeymap->addAssignment(*i, keySeq);\r
+       typedef std::list<ModifiedKey> AssignedKeys;\r
+       AssignedKeys assignedKeys;\r
+\r
+       ModifiedKey mkey;\r
+       mkey.m_modifier =\r
+               load_MODIFIER(Modifier::Type_ASSIGN, m_defaultAssignModifier);\r
+       if (*lookToken() == _T("=")) {\r
+               getToken();\r
+               m_defaultKeySeqModifier = load_MODIFIER(Modifier::Type_KEYSEQ,\r
+                                                                                               m_defaultKeySeqModifier);\r
+               m_defaultAssignModifier = mkey.m_modifier;\r
+               return;\r
+       }\r
+\r
+       while (true) {\r
+               mkey.m_key = load_KEY_NAME();\r
+               assignedKeys.push_back(mkey);\r
+               if (*lookToken() == _T("=>") || *lookToken() == _T("="))\r
+                       break;\r
+               mkey.m_modifier =\r
+                       load_MODIFIER(Modifier::Type_ASSIGN, m_defaultAssignModifier);\r
+       }\r
+       getToken();\r
+\r
+       ASSERT(m_currentKeymap);\r
+       KeySeq *keySeq = load_KEY_SEQUENCE();\r
+       for (AssignedKeys::iterator i = assignedKeys.begin();\r
+                       i != assignedKeys.end(); ++ i)\r
+               m_currentKeymap->addAssignment(*i, keySeq);\r
 }\r
 \r
 \r
 // <EVENT_ASSIGN>\r
 void SettingLoader::load_EVENT_ASSIGN()\r
 {\r
-  std::list<ModifiedKey> assignedKeys;\r
+       std::list<ModifiedKey> assignedKeys;\r
 \r
-  ModifiedKey mkey;\r
-  mkey.m_modifier.dontcare();                  //set all modifiers to dontcare\r
-  \r
-  Token *t = getToken();\r
-  Key **e;\r
-  for (e = Event::events; *e; ++ e)\r
-    if (*t == (*e)->getName())\r
-    {\r
-      mkey.m_key = *e;\r
-      break;\r
-    }\r
-  if (!*e)\r
-    throw ErrorMessage() << _T("`") << *t << _T("': invalid event name.");\r
+       ModifiedKey mkey;\r
+       mkey.m_modifier.dontcare();                     //set all modifiers to dontcare\r
 \r
-  t = getToken();\r
-  if (!(*t == _T("=>") || *t == _T("=")))\r
-    throw ErrorMessage() << _T("`=' is expected.");\r
+       Token *t = getToken();\r
+       Key **e;\r
+       for (e = Event::events; *e; ++ e)\r
+               if (*t == (*e)->getName()) {\r
+                       mkey.m_key = *e;\r
+                       break;\r
+               }\r
+       if (!*e)\r
+               throw ErrorMessage() << _T("`") << *t << _T("': invalid event name.");\r
 \r
-  ASSERT(m_currentKeymap);\r
-  KeySeq *keySeq = load_KEY_SEQUENCE();\r
-  m_currentKeymap->addAssignment(mkey, keySeq);\r
+       t = getToken();\r
+       if (!(*t == _T("=>") || *t == _T("=")))\r
+               throw ErrorMessage() << _T("`=' is expected.");\r
+\r
+       ASSERT(m_currentKeymap);\r
+       KeySeq *keySeq = load_KEY_SEQUENCE();\r
+       m_currentKeymap->addAssignment(mkey, keySeq);\r
 }\r
 \r
 \r
 // <MODIFIER_ASSIGNMENT>\r
 void SettingLoader::load_MODIFIER_ASSIGNMENT()\r
 {\r
-  // <MODIFIER_NAME>\r
-  Token *t = getToken();\r
-  Modifier::Type mt;\r
-\r
-  while (true)\r
-  {\r
-    Keymap::AssignMode am = Keymap::AM_notModifier;\r
-    if      (*t == _T("!")  ) am = Keymap::AM_true, t = getToken();\r
-    else if (*t == _T("!!") ) am = Keymap::AM_oneShot, t = getToken();\r
-    else if (*t == _T("!!!")) am = Keymap::AM_oneShotRepeatable, t = getToken();\r
-    \r
-    if      (*t == _T("shift")) mt = Modifier::Type_Shift;\r
-    else if (*t == _T("alt")  ||\r
-            *t == _T("meta") ||\r
-            *t == _T("menu") ) mt = Modifier::Type_Alt;\r
-    else if (*t == _T("control") ||\r
-            *t == _T("ctrl") ) mt = Modifier::Type_Control;\r
-    else if (*t == _T("windows") ||\r
-            *t == _T("win")  ) mt = Modifier::Type_Windows;\r
-    else if (*t == _T("mod0") ) mt = Modifier::Type_Mod0;\r
-    else if (*t == _T("mod1") ) mt = Modifier::Type_Mod1;\r
-    else if (*t == _T("mod2") ) mt = Modifier::Type_Mod2;\r
-    else if (*t == _T("mod3") ) mt = Modifier::Type_Mod3;\r
-    else if (*t == _T("mod4") ) mt = Modifier::Type_Mod4;\r
-    else if (*t == _T("mod5") ) mt = Modifier::Type_Mod5;\r
-    else if (*t == _T("mod6") ) mt = Modifier::Type_Mod6;\r
-    else if (*t == _T("mod7") ) mt = Modifier::Type_Mod7;\r
-    else if (*t == _T("mod8") ) mt = Modifier::Type_Mod8;\r
-    else if (*t == _T("mod9") ) mt = Modifier::Type_Mod9;\r
-    else throw ErrorMessage() << _T("`") << *t\r
-                             << _T("': invalid modifier name.");\r
-\r
-    if (am == Keymap::AM_notModifier)\r
-      break;\r
-    \r
-    m_currentKeymap->addModifier(mt, Keymap::AO_overwrite, am, NULL);\r
-    if (isEOL())\r
-      return;\r
-    t = getToken();\r
-  }\r
-  \r
-  // <ASSIGN_OP>\r
-  t = getToken();\r
-  Keymap::AssignOperator ao;\r
-  if      (*t == _T("=") ) ao = Keymap::AO_new;\r
-  else if (*t == _T("+=")) ao = Keymap::AO_add;\r
-  else if (*t == _T("-=")) ao = Keymap::AO_sub;\r
-  else  throw ErrorMessage() << _T("`") << *t << _T("': is unknown operator.");\r
-\r
-  // <ASSIGN_MODE>? <KEY_NAME>\r
-  while (!isEOL())\r
-  {\r
-    // <ASSIGN_MODE>? \r
-    t = getToken();\r
-    Keymap::AssignMode am = Keymap::AM_normal;\r
-    if      (*t == _T("!")  ) am = Keymap::AM_true, t = getToken();\r
-    else if (*t == _T("!!") ) am = Keymap::AM_oneShot, t = getToken();\r
-    else if (*t == _T("!!!")) am = Keymap::AM_oneShotRepeatable, t = getToken();\r
-    \r
-    // <KEY_NAME>\r
-    Key *key = m_setting->m_keyboard.searchKey(t->getString());\r
-    if (!key)\r
-      throw ErrorMessage() << _T("`") << *t << _T("': invalid key name.");\r
-\r
-    // we can ignore warning C4701\r
-    m_currentKeymap->addModifier(mt, ao, am, key);\r
-    if (ao == Keymap::AO_new)\r
-      ao = Keymap::AO_add;\r
-  }\r
+       // <MODIFIER_NAME>\r
+       Token *t = getToken();\r
+       Modifier::Type mt;\r
+\r
+       while (true) {\r
+               Keymap::AssignMode am = Keymap::AM_notModifier;\r
+               if      (*t == _T("!")  ) am = Keymap::AM_true, t = getToken();\r
+               else if (*t == _T("!!") ) am = Keymap::AM_oneShot, t = getToken();\r
+               else if (*t == _T("!!!")) am = Keymap::AM_oneShotRepeatable, t = getToken();\r
+\r
+               if      (*t == _T("shift")) mt = Modifier::Type_Shift;\r
+               else if (*t == _T("alt")  ||\r
+                                *t == _T("meta") ||\r
+                                *t == _T("menu") ) mt = Modifier::Type_Alt;\r
+               else if (*t == _T("control") ||\r
+                                *t == _T("ctrl") ) mt = Modifier::Type_Control;\r
+               else if (*t == _T("windows") ||\r
+                                *t == _T("win")  ) mt = Modifier::Type_Windows;\r
+               else if (*t == _T("mod0") ) mt = Modifier::Type_Mod0;\r
+               else if (*t == _T("mod1") ) mt = Modifier::Type_Mod1;\r
+               else if (*t == _T("mod2") ) mt = Modifier::Type_Mod2;\r
+               else if (*t == _T("mod3") ) mt = Modifier::Type_Mod3;\r
+               else if (*t == _T("mod4") ) mt = Modifier::Type_Mod4;\r
+               else if (*t == _T("mod5") ) mt = Modifier::Type_Mod5;\r
+               else if (*t == _T("mod6") ) mt = Modifier::Type_Mod6;\r
+               else if (*t == _T("mod7") ) mt = Modifier::Type_Mod7;\r
+               else if (*t == _T("mod8") ) mt = Modifier::Type_Mod8;\r
+               else if (*t == _T("mod9") ) mt = Modifier::Type_Mod9;\r
+               else throw ErrorMessage() << _T("`") << *t\r
+                       << _T("': invalid modifier name.");\r
+\r
+               if (am == Keymap::AM_notModifier)\r
+                       break;\r
+\r
+               m_currentKeymap->addModifier(mt, Keymap::AO_overwrite, am, NULL);\r
+               if (isEOL())\r
+                       return;\r
+               t = getToken();\r
+       }\r
+\r
+       // <ASSIGN_OP>\r
+       t = getToken();\r
+       Keymap::AssignOperator ao;\r
+       if      (*t == _T("=") ) ao = Keymap::AO_new;\r
+       else if (*t == _T("+=")) ao = Keymap::AO_add;\r
+       else if (*t == _T("-=")) ao = Keymap::AO_sub;\r
+       else  throw ErrorMessage() << _T("`") << *t << _T("': is unknown operator.");\r
+\r
+       // <ASSIGN_MODE>? <KEY_NAME>\r
+       while (!isEOL()) {\r
+               // <ASSIGN_MODE>?\r
+               t = getToken();\r
+               Keymap::AssignMode am = Keymap::AM_normal;\r
+               if      (*t == _T("!")  ) am = Keymap::AM_true, t = getToken();\r
+               else if (*t == _T("!!") ) am = Keymap::AM_oneShot, t = getToken();\r
+               else if (*t == _T("!!!")) am = Keymap::AM_oneShotRepeatable, t = getToken();\r
+\r
+               // <KEY_NAME>\r
+               Key *key = m_setting->m_keyboard.searchKey(t->getString());\r
+               if (!key)\r
+                       throw ErrorMessage() << _T("`") << *t << _T("': invalid key name.");\r
+\r
+               // we can ignore warning C4701\r
+               m_currentKeymap->addModifier(mt, ao, am, key);\r
+               if (ao == Keymap::AO_new)\r
+                       ao = Keymap::AO_add;\r
+       }\r
 }\r
 \r
 \r
 // <KEYSEQ_DEFINITION>\r
 void SettingLoader::load_KEYSEQ_DEFINITION()\r
 {\r
-  if (*getToken() != _T("$"))\r
-    throw ErrorMessage() << _T("there must be `$' after `keyseq'");\r
-  Token *name = getToken();\r
-  if (*getToken() != _T("="))\r
-    throw ErrorMessage() << _T("there must be `=' after keyseq naem");\r
-  load_KEY_SEQUENCE(name->getString(), false, Modifier::Type_ASSIGN);\r
+       if (*getToken() != _T("$"))\r
+               throw ErrorMessage() << _T("there must be `$' after `keyseq'");\r
+       Token *name = getToken();\r
+       if (*getToken() != _T("="))\r
+               throw ErrorMessage() << _T("there must be `=' after keyseq naem");\r
+       load_KEY_SEQUENCE(name->getString(), false, Modifier::Type_ASSIGN);\r
 }\r
 \r
 \r
 // <DEFINE>\r
 void SettingLoader::load_DEFINE()\r
 {\r
-  m_setting->m_symbols.insert(getToken()->getString());\r
+       m_setting->m_symbols.insert(getToken()->getString());\r
 }\r
 \r
 \r
 // <IF>\r
 void SettingLoader::load_IF()\r
 {\r
-  if (!getToken()->isOpenParen())\r
-    throw ErrorMessage() << _T("there must be `(' after `if'.");\r
-  Token *t = getToken(); // <SYMBOL> or !\r
-  bool not = false;\r
-  if (*t == _T("!"))\r
-  {\r
-    not = true;\r
-    t = getToken(); // <SYMBOL>\r
-  }\r
-  \r
-  bool doesSymbolExist = (m_setting->m_symbols.find(t->getString())\r
-                         != m_setting->m_symbols.end());\r
-  bool doesRead = ((doesSymbolExist && !not) ||\r
-                  (!doesSymbolExist && not));\r
-  if (0 < m_canReadStack.size())\r
-    doesRead = doesRead && m_canReadStack.back();\r
-  \r
-  if (!getToken()->isCloseParen())\r
-    throw ErrorMessage() << _T("there must be `)'.");\r
-\r
-  m_canReadStack.push_back(doesRead);\r
-  if (!isEOL())\r
-  {\r
-    size_t len = m_canReadStack.size();\r
-    load_LINE();\r
-    if (len < m_canReadStack.size())\r
-    {\r
-      bool r = m_canReadStack.back();\r
-      m_canReadStack.pop_back();\r
-      m_canReadStack[len - 1] = r && doesRead;\r
-    }\r
-    else if (len == m_canReadStack.size())\r
-      m_canReadStack.pop_back();\r
-    else\r
-      ; // `end' found\r
-  }\r
+       if (!getToken()->isOpenParen())\r
+               throw ErrorMessage() << _T("there must be `(' after `if'.");\r
+       Token *t = getToken(); // <SYMBOL> or !\r
+       bool not = false;\r
+       if (*t == _T("!")) {\r
+               not = true;\r
+               t = getToken(); // <SYMBOL>\r
+       }\r
+\r
+       bool doesSymbolExist = (m_setting->m_symbols.find(t->getString())\r
+                                                       != m_setting->m_symbols.end());\r
+       bool doesRead = ((doesSymbolExist && !not) ||\r
+                                        (!doesSymbolExist && not));\r
+       if (0 < m_canReadStack.size())\r
+               doesRead = doesRead && m_canReadStack.back();\r
+\r
+       if (!getToken()->isCloseParen())\r
+               throw ErrorMessage() << _T("there must be `)'.");\r
+\r
+       m_canReadStack.push_back(doesRead);\r
+       if (!isEOL()) {\r
+               size_t len = m_canReadStack.size();\r
+               load_LINE();\r
+               if (len < m_canReadStack.size()) {\r
+                       bool r = m_canReadStack.back();\r
+                       m_canReadStack.pop_back();\r
+                       m_canReadStack[len - 1] = r && doesRead;\r
+               } else if (len == m_canReadStack.size())\r
+                       m_canReadStack.pop_back();\r
+               else\r
+                       ; // `end' found\r
+       }\r
 }\r
 \r
 \r
 // <ELSE> <ELSEIF>\r
 void SettingLoader::load_ELSE(bool i_isElseIf, const tstringi &i_token)\r
 {\r
-  bool doesRead = !load_ENDIF(i_token);\r
-  if (0 < m_canReadStack.size())\r
-    doesRead = doesRead && m_canReadStack.back();\r
-  m_canReadStack.push_back(doesRead);\r
-  if (!isEOL())\r
-  {\r
-    size_t len = m_canReadStack.size();\r
-    if (i_isElseIf)\r
-      load_IF();\r
-    else\r
-      load_LINE();\r
-    if (len < m_canReadStack.size())\r
-    {\r
-      bool r = m_canReadStack.back();\r
-      m_canReadStack.pop_back();\r
-      m_canReadStack[len - 1] = doesRead && r;\r
-    }\r
-    else if (len == m_canReadStack.size())\r
-      m_canReadStack.pop_back();\r
-    else\r
-      ; // `end' found\r
-  }\r
+       bool doesRead = !load_ENDIF(i_token);\r
+       if (0 < m_canReadStack.size())\r
+               doesRead = doesRead && m_canReadStack.back();\r
+       m_canReadStack.push_back(doesRead);\r
+       if (!isEOL()) {\r
+               size_t len = m_canReadStack.size();\r
+               if (i_isElseIf)\r
+                       load_IF();\r
+               else\r
+                       load_LINE();\r
+               if (len < m_canReadStack.size()) {\r
+                       bool r = m_canReadStack.back();\r
+                       m_canReadStack.pop_back();\r
+                       m_canReadStack[len - 1] = doesRead && r;\r
+               } else if (len == m_canReadStack.size())\r
+                       m_canReadStack.pop_back();\r
+               else\r
+                       ; // `end' found\r
+       }\r
 }\r
 \r
 \r
 // <ENDIF>\r
 bool SettingLoader::load_ENDIF(const tstringi &i_token)\r
 {\r
-  if (m_canReadStack.size() == 0)\r
-    throw ErrorMessage() << _T("unbalanced `") << i_token << _T("'");\r
-  bool r = m_canReadStack.back();\r
-  m_canReadStack.pop_back();\r
-  return r;\r
+       if (m_canReadStack.size() == 0)\r
+               throw ErrorMessage() << _T("unbalanced `") << i_token << _T("'");\r
+       bool r = m_canReadStack.back();\r
+       m_canReadStack.pop_back();\r
+       return r;\r
 }\r
 \r
 \r
 // <LINE>\r
 void SettingLoader::load_LINE()\r
 {\r
-  Token *i_token = getToken();\r
-\r
-  // <COND_SYMBOL>\r
-  if      (*i_token == _T("if") ||\r
-          *i_token == _T("and")) load_IF();\r
-  else if (*i_token == _T("else")) load_ELSE(false, i_token->getString());\r
-  else if (*i_token == _T("elseif") ||\r
-          *i_token == _T("elsif")  ||\r
-          *i_token == _T("elif")   ||\r
-          *i_token == _T("or")) load_ELSE(true, i_token->getString());\r
-  else if (*i_token == _T("endif")) load_ENDIF(_T("endif"));\r
-  else if (0 < m_canReadStack.size() && !m_canReadStack.back())\r
-  {\r
-    while (!isEOL())\r
-      getToken();\r
-  }\r
-  else if (*i_token == _T("define")) load_DEFINE();\r
-  // <INCLUDE>\r
-  else if (*i_token == _T("include")) load_INCLUDE();\r
-  // <KEYBOARD_DEFINITION>\r
-  else if (*i_token == _T("def")) load_KEYBOARD_DEFINITION();\r
-  // <KEYMAP_DEFINITION>\r
-  else if (*i_token == _T("keymap")  ||\r
-          *i_token == _T("keymap2") ||\r
-          *i_token == _T("window")) load_KEYMAP_DEFINITION(i_token);\r
-  // <KEY_ASSIGN>\r
-  else if (*i_token == _T("key")) load_KEY_ASSIGN();\r
-  // <EVENT_ASSIGN>\r
-  else if (*i_token == _T("event")) load_EVENT_ASSIGN();\r
-  // <MODIFIER_ASSIGNMENT>\r
-  else if (*i_token == _T("mod")) load_MODIFIER_ASSIGNMENT();\r
-  // <KEYSEQ_DEFINITION>\r
-  else if (*i_token == _T("keyseq")) load_KEYSEQ_DEFINITION();\r
-  else\r
-    throw ErrorMessage() << _T("syntax error `") << *i_token << _T("'.");\r
-}\r
-\r
-  \r
+       Token *i_token = getToken();\r
+\r
+       // <COND_SYMBOL>\r
+       if      (*i_token == _T("if") ||\r
+                        *i_token == _T("and")) load_IF();\r
+       else if (*i_token == _T("else")) load_ELSE(false, i_token->getString());\r
+       else if (*i_token == _T("elseif") ||\r
+                        *i_token == _T("elsif")  ||\r
+                        *i_token == _T("elif")   ||\r
+                        *i_token == _T("or")) load_ELSE(true, i_token->getString());\r
+       else if (*i_token == _T("endif")) load_ENDIF(_T("endif"));\r
+       else if (0 < m_canReadStack.size() && !m_canReadStack.back()) {\r
+               while (!isEOL())\r
+                       getToken();\r
+       } else if (*i_token == _T("define")) load_DEFINE();\r
+       // <INCLUDE>\r
+       else if (*i_token == _T("include")) load_INCLUDE();\r
+       // <KEYBOARD_DEFINITION>\r
+       else if (*i_token == _T("def")) load_KEYBOARD_DEFINITION();\r
+       // <KEYMAP_DEFINITION>\r
+       else if (*i_token == _T("keymap")  ||\r
+                        *i_token == _T("keymap2") ||\r
+                        *i_token == _T("window")) load_KEYMAP_DEFINITION(i_token);\r
+       // <KEY_ASSIGN>\r
+       else if (*i_token == _T("key")) load_KEY_ASSIGN();\r
+       // <EVENT_ASSIGN>\r
+       else if (*i_token == _T("event")) load_EVENT_ASSIGN();\r
+       // <MODIFIER_ASSIGNMENT>\r
+       else if (*i_token == _T("mod")) load_MODIFIER_ASSIGNMENT();\r
+       // <KEYSEQ_DEFINITION>\r
+       else if (*i_token == _T("keyseq")) load_KEYSEQ_DEFINITION();\r
+       else\r
+               throw ErrorMessage() << _T("syntax error `") << *i_token << _T("'.");\r
+}\r
+\r
+\r
 // prefix sort predicate used in load(const string &)\r
 static bool prefixSortPred(const tstringi &i_a, const tstringi &i_b)\r
 {\r
-  return i_b.size() < i_a.size();\r
+       return i_b.size() < i_a.size();\r
 }\r
 \r
 \r
@@ -1305,407 +1270,370 @@ static bool prefixSortPred(const tstringi &i_a, const tstringi &i_b)
 */\r
 bool readFile(tstring *o_data, const tstringi &i_filename)\r
 {\r
-  // get size of file\r
+       // get size of file\r
 #if 0\r
-  // bcc's _wstat cannot obtain file size\r
-  struct _stat sbuf;\r
-  if (_tstat(i_filename.c_str(), &sbuf) < 0 || sbuf.st_size == 0)\r
-    return false;\r
+       // bcc's _wstat cannot obtain file size\r
+       struct _stat sbuf;\r
+       if (_tstat(i_filename.c_str(), &sbuf) < 0 || sbuf.st_size == 0)\r
+               return false;\r
 #else\r
-  // so, we use _wstati64 for bcc\r
-  struct stati64_t sbuf;\r
-  if (_tstati64(i_filename.c_str(), &sbuf) < 0 || sbuf.st_size == 0)\r
-    return false;\r
-  // following check is needed to cast sbuf.st_size to size_t safely\r
-  // this cast occurs because of above workaround for bcc\r
-  if (sbuf.st_size > UINT_MAX)\r
-    return false;\r
+       // so, we use _wstati64 for bcc\r
+       struct stati64_t sbuf;\r
+       if (_tstati64(i_filename.c_str(), &sbuf) < 0 || sbuf.st_size == 0)\r
+               return false;\r
+       // following check is needed to cast sbuf.st_size to size_t safely\r
+       // this cast occurs because of above workaround for bcc\r
+       if (sbuf.st_size > UINT_MAX)\r
+               return false;\r
 #endif\r
-  \r
-  // open\r
-  FILE *fp = _tfopen(i_filename.c_str(), _T("rb"));\r
-  if (!fp)\r
-    return false;\r
-  \r
-  // read file\r
-  Array<BYTE> buf(static_cast<size_t>(sbuf.st_size) + 1);\r
-  if (fread(buf.get(), static_cast<size_t>(sbuf.st_size), 1, fp) != 1)\r
-  {\r
-    fclose(fp);\r
-    return false;\r
-  }\r
-  buf.get()[sbuf.st_size] = 0;                 // mbstowcs() requires null\r
-                                               // terminated string\r
+\r
+       // open\r
+       FILE *fp = _tfopen(i_filename.c_str(), _T("rb"));\r
+       if (!fp)\r
+               return false;\r
+\r
+       // read file\r
+       Array<BYTE> buf(static_cast<size_t>(sbuf.st_size) + 1);\r
+       if (fread(buf.get(), static_cast<size_t>(sbuf.st_size), 1, fp) != 1) {\r
+               fclose(fp);\r
+               return false;\r
+       }\r
+       buf.get()[sbuf.st_size] = 0;                    // mbstowcs() requires null\r
+       // terminated string\r
 \r
 #ifdef _UNICODE\r
-  //\r
-  if (buf.get()[0] == 0xffU && buf.get()[1] == 0xfeU &&\r
-      sbuf.st_size % 2 == 0)\r
-    // UTF-16 Little Endien\r
-  {\r
-    size_t size = static_cast<size_t>(sbuf.st_size) / 2;\r
-    o_data->resize(size);\r
-    BYTE *p = buf.get();\r
-    for (size_t i = 0; i < size; ++ i)\r
-    {\r
-      wchar_t c = static_cast<wchar_t>(*p ++);\r
-      c |= static_cast<wchar_t>(*p ++) << 8;\r
-      (*o_data)[i] = c;\r
-    }\r
-    fclose(fp);\r
-    return true;\r
-  }\r
-  \r
-  //\r
-  if (buf.get()[0] == 0xfeU && buf.get()[1] == 0xffU &&\r
-      sbuf.st_size % 2 == 0)\r
-    // UTF-16 Big Endien\r
-  {\r
-    size_t size = static_cast<size_t>(sbuf.st_size) / 2;\r
-    o_data->resize(size);\r
-    BYTE *p = buf.get();\r
-    for (size_t i = 0; i < size; ++ i)\r
-    {\r
-      wchar_t c = static_cast<wchar_t>(*p ++) << 8;\r
-      c |= static_cast<wchar_t>(*p ++);\r
-      (*o_data)[i] = c;\r
-    }\r
-    fclose(fp);\r
-    return true;\r
-  }\r
-\r
-  // try multibyte charset \r
-  size_t wsize = mbstowcs(NULL, reinterpret_cast<char *>(buf.get()), 0);\r
-  if (wsize != size_t(-1))\r
-  {\r
-    Array<wchar_t> wbuf(wsize);\r
-    mbstowcs(wbuf.get(), reinterpret_cast<char *>(buf.get()), wsize);\r
-    o_data->assign(wbuf.get(), wbuf.get() + wsize);\r
-    fclose(fp);\r
-    return true;\r
-  }\r
-  \r
-  // try UTF-8\r
-  {\r
-    Array<wchar_t> wbuf(static_cast<size_t>(sbuf.st_size));\r
-    BYTE *f = buf.get();\r
-    BYTE *end = buf.get() + sbuf.st_size;\r
-    wchar_t *d = wbuf.get();\r
-    enum { STATE_1, STATE_2of2, STATE_2of3, STATE_3of3 } state = STATE_1;\r
-    \r
-    while (f != end)\r
-    {\r
-      switch (state)\r
-      {\r
-       case STATE_1:\r
-         if (!(*f & 0x80))                     // 0xxxxxxx: 00-7F\r
-           *d++ = static_cast<wchar_t>(*f++);\r
-         else if ((*f & 0xe0) == 0xc0)         // 110xxxxx 10xxxxxx: 0080-07FF\r
-         {\r
-           *d = ((static_cast<wchar_t>(*f++) & 0x1f) << 6);\r
-           state = STATE_2of2;\r
-         }\r
-         else if ((*f & 0xf0) == 0xe0)         // 1110xxxx 10xxxxxx 10xxxxxx:\r
-                                               // 0800 - FFFF\r
-         {\r
-           *d = ((static_cast<wchar_t>(*f++) & 0x0f) << 12);\r
-           state = STATE_2of3;\r
-         }\r
-         else\r
-           goto not_UTF_8;\r
-         break;\r
-         \r
-       case STATE_2of2:\r
-       case STATE_3of3:\r
-         if ((*f & 0xc0) != 0x80)\r
-           goto not_UTF_8;\r
-         *d++ |= (static_cast<wchar_t>(*f++) & 0x3f);\r
-         state = STATE_1;\r
-         break;\r
-\r
-       case STATE_2of3:\r
-         if ((*f & 0xc0) != 0x80)\r
-           goto not_UTF_8;\r
-         *d |= ((static_cast<wchar_t>(*f++) & 0x3f) << 6);\r
-         state = STATE_3of3;\r
-         break;\r
-      }\r
-    }\r
-    o_data->assign(wbuf.get(), d);\r
-    fclose(fp);\r
-    return true;\r
-    \r
-    not_UTF_8: ;\r
-  }\r
+       //\r
+       if (buf.get()[0] == 0xffU && buf.get()[1] == 0xfeU &&\r
+                       sbuf.st_size % 2 == 0)\r
+               // UTF-16 Little Endien\r
+       {\r
+               size_t size = static_cast<size_t>(sbuf.st_size) / 2;\r
+               o_data->resize(size);\r
+               BYTE *p = buf.get();\r
+               for (size_t i = 0; i < size; ++ i) {\r
+                       wchar_t c = static_cast<wchar_t>(*p ++);\r
+                       c |= static_cast<wchar_t>(*p ++) << 8;\r
+                       (*o_data)[i] = c;\r
+               }\r
+               fclose(fp);\r
+               return true;\r
+       }\r
+\r
+       //\r
+       if (buf.get()[0] == 0xfeU && buf.get()[1] == 0xffU &&\r
+                       sbuf.st_size % 2 == 0)\r
+               // UTF-16 Big Endien\r
+       {\r
+               size_t size = static_cast<size_t>(sbuf.st_size) / 2;\r
+               o_data->resize(size);\r
+               BYTE *p = buf.get();\r
+               for (size_t i = 0; i < size; ++ i) {\r
+                       wchar_t c = static_cast<wchar_t>(*p ++) << 8;\r
+                       c |= static_cast<wchar_t>(*p ++);\r
+                       (*o_data)[i] = c;\r
+               }\r
+               fclose(fp);\r
+               return true;\r
+       }\r
+\r
+       // try multibyte charset\r
+       size_t wsize = mbstowcs(NULL, reinterpret_cast<char *>(buf.get()), 0);\r
+       if (wsize != size_t(-1)) {\r
+               Array<wchar_t> wbuf(wsize);\r
+               mbstowcs(wbuf.get(), reinterpret_cast<char *>(buf.get()), wsize);\r
+               o_data->assign(wbuf.get(), wbuf.get() + wsize);\r
+               fclose(fp);\r
+               return true;\r
+       }\r
+\r
+       // try UTF-8\r
+       {\r
+               Array<wchar_t> wbuf(static_cast<size_t>(sbuf.st_size));\r
+               BYTE *f = buf.get();\r
+               BYTE *end = buf.get() + sbuf.st_size;\r
+               wchar_t *d = wbuf.get();\r
+               enum { STATE_1, STATE_2of2, STATE_2of3, STATE_3of3 } state = STATE_1;\r
+\r
+               while (f != end) {\r
+                       switch (state) {\r
+                       case STATE_1:\r
+                               if (!(*f & 0x80))                       // 0xxxxxxx: 00-7F\r
+                                       *d++ = static_cast<wchar_t>(*f++);\r
+                               else if ((*f & 0xe0) == 0xc0) { // 110xxxxx 10xxxxxx: 0080-07FF\r
+                                       *d = ((static_cast<wchar_t>(*f++) & 0x1f) << 6);\r
+                                       state = STATE_2of2;\r
+                               } else if ((*f & 0xf0) == 0xe0)         // 1110xxxx 10xxxxxx 10xxxxxx:\r
+                                       // 0800 - FFFF\r
+                               {\r
+                                       *d = ((static_cast<wchar_t>(*f++) & 0x0f) << 12);\r
+                                       state = STATE_2of3;\r
+                               } else\r
+                                       goto not_UTF_8;\r
+                               break;\r
+\r
+                       case STATE_2of2:\r
+                       case STATE_3of3:\r
+                               if ((*f & 0xc0) != 0x80)\r
+                                       goto not_UTF_8;\r
+                               *d++ |= (static_cast<wchar_t>(*f++) & 0x3f);\r
+                               state = STATE_1;\r
+                               break;\r
+\r
+                       case STATE_2of3:\r
+                               if ((*f & 0xc0) != 0x80)\r
+                                       goto not_UTF_8;\r
+                               *d |= ((static_cast<wchar_t>(*f++) & 0x3f) << 6);\r
+                               state = STATE_3of3;\r
+                               break;\r
+                       }\r
+               }\r
+               o_data->assign(wbuf.get(), d);\r
+               fclose(fp);\r
+               return true;\r
+\r
+not_UTF_8:\r
+               ;\r
+       }\r
 #endif // _UNICODE\r
 \r
-  // assume ascii\r
-  o_data->resize(static_cast<size_t>(sbuf.st_size));\r
-  for (off_t i = 0; i < sbuf.st_size; ++ i)\r
-    (*o_data)[i] = buf.get()[i];\r
-  fclose(fp);\r
-  return true;\r
+       // assume ascii\r
+       o_data->resize(static_cast<size_t>(sbuf.st_size));\r
+       for (off_t i = 0; i < sbuf.st_size; ++ i)\r
+               (*o_data)[i] = buf.get()[i];\r
+       fclose(fp);\r
+       return true;\r
 }\r
 \r
 \r
 // load (called from load(Setting *, const tstringi &) only)\r
 void SettingLoader::load(const tstringi &i_filename)\r
 {\r
-  m_currentFilename = i_filename;\r
-  \r
-  tstring data;\r
-  if (!readFile(&data, m_currentFilename))\r
-  {\r
-    Acquire a(m_soLog);\r
-    *m_log << m_currentFilename << _T(" : error: file not found") << std::endl;\r
+       m_currentFilename = i_filename;\r
+\r
+       tstring data;\r
+       if (!readFile(&data, m_currentFilename)) {\r
+               Acquire a(m_soLog);\r
+               *m_log << m_currentFilename << _T(" : error: file not found") << std::endl;\r
 #if 1\r
-    *m_log << data << std::endl;\r
+               *m_log << data << std::endl;\r
 #endif\r
-    m_isThereAnyError = true;\r
-    return;\r
-  }\r
-  \r
-  // prefix\r
-  if (m_prefixesRefCcount == 0)\r
-  {\r
-    static const _TCHAR *prefixes[] =\r
-    {\r
-      _T("="), _T("=>"), _T("&&"), _T("||"), _T(":"), _T("$"), _T("&"),\r
-      _T("-="), _T("+="), _T("!!!"), _T("!!"), _T("!"), \r
-      _T("E0-"), _T("E1-"),                    // <SCAN_CODE_EXTENTION>\r
-      _T("S-"), _T("A-"), _T("M-"), _T("C-"),  // <BASIC_MODIFIER>\r
-      _T("W-"), _T("*"), _T("~"),\r
-      _T("U-"), _T("D-"),                      // <KEYSEQ_MODIFIER>\r
-      _T("R-"), _T("IL-"), _T("IC-"), _T("I-"),        // <ASSIGN_MODIFIER>\r
-      _T("NL-"), _T("CL-"), _T("SL-"), _T("KL-"),\r
-      _T("MAX-"), _T("MIN-"), _T("MMAX-"), _T("MMIN-"),\r
-      _T("T-"), _T("TS-"),\r
-      _T("M0-"), _T("M1-"), _T("M2-"), _T("M3-"), _T("M4-"),\r
-      _T("M5-"), _T("M6-"), _T("M7-"), _T("M8-"), _T("M9-"), \r
-      _T("L0-"), _T("L1-"), _T("L2-"), _T("L3-"), _T("L4-"),\r
-      _T("L5-"), _T("L6-"), _T("L7-"), _T("L8-"), _T("L9-"), \r
-    };\r
-    m_prefixes = new std::vector<tstringi>;\r
-    for (size_t i = 0; i < NUMBER_OF(prefixes); ++ i)\r
-      m_prefixes->push_back(prefixes[i]);\r
-    std::sort(m_prefixes->begin(), m_prefixes->end(), prefixSortPred);\r
-  }\r
-  m_prefixesRefCcount ++;\r
-\r
-  // create parser\r
-  Parser parser(data.c_str(), data.size());\r
-  parser.setPrefixes(m_prefixes);\r
-    \r
-  while (true)\r
-  {\r
-    try\r
-    {\r
-      if (!parser.getLine(&m_tokens))\r
-       break;\r
-      m_ti = m_tokens.begin();\r
-    }\r
-    catch (ErrorMessage &e)\r
-    {\r
-      if (m_log && m_soLog)\r
-      {\r
-       Acquire a(m_soLog);\r
-       *m_log << m_currentFilename << _T("(") << parser.getLineNumber()\r
-              << _T(") : error: ") << e << std::endl;\r
-      }\r
-      m_isThereAnyError = true;\r
-      continue;\r
-    }\r
-      \r
-    try\r
-    {\r
-      load_LINE();\r
-      if (!isEOL())\r
-       throw WarningMessage() << _T("back garbage is ignored.");\r
-    }\r
-    catch (WarningMessage &w)\r
-    {\r
-      if (m_log && m_soLog)\r
-      {\r
-       Acquire a(m_soLog);\r
-       *m_log << i_filename << _T("(") << parser.getLineNumber()\r
-              << _T(") : warning: ") << w << std::endl;\r
-      }\r
-    }\r
-    catch (ErrorMessage &e)\r
-    {\r
-      if (m_log && m_soLog)\r
-      {\r
-       Acquire a(m_soLog);\r
-       *m_log << i_filename << _T("(") << parser.getLineNumber()\r
-              << _T(") : error: ") << e << std::endl;\r
-      }\r
-      m_isThereAnyError = true;\r
-    }\r
-  }\r
-    \r
-  // m_prefixes\r
-  -- m_prefixesRefCcount;\r
-  if (m_prefixesRefCcount == 0)\r
-    delete m_prefixes;\r
-\r
-  if (0 < m_canReadStack.size())\r
-  {\r
-    Acquire a(m_soLog);\r
-    *m_log << m_currentFilename << _T("(") << parser.getLineNumber()\r
-          << _T(") : error: unbalanced `if'.  ")\r
-          << _T("you forget `endif', didn'i_token you?")\r
-          << std::endl;\r
-    m_isThereAnyError = true;\r
-  }\r
+               m_isThereAnyError = true;\r
+               return;\r
+       }\r
+\r
+       // prefix\r
+       if (m_prefixesRefCcount == 0) {\r
+               static const _TCHAR *prefixes[] = {\r
+                       _T("="), _T("=>"), _T("&&"), _T("||"), _T(":"), _T("$"), _T("&"),\r
+                       _T("-="), _T("+="), _T("!!!"), _T("!!"), _T("!"),\r
+                       _T("E0-"), _T("E1-"),                   // <SCAN_CODE_EXTENTION>\r
+                       _T("S-"), _T("A-"), _T("M-"), _T("C-"), // <BASIC_MODIFIER>\r
+                       _T("W-"), _T("*"), _T("~"),\r
+                       _T("U-"), _T("D-"),                     // <KEYSEQ_MODIFIER>\r
+                       _T("R-"), _T("IL-"), _T("IC-"), _T("I-"),       // <ASSIGN_MODIFIER>\r
+                       _T("NL-"), _T("CL-"), _T("SL-"), _T("KL-"),\r
+                       _T("MAX-"), _T("MIN-"), _T("MMAX-"), _T("MMIN-"),\r
+                       _T("T-"), _T("TS-"),\r
+                       _T("M0-"), _T("M1-"), _T("M2-"), _T("M3-"), _T("M4-"),\r
+                       _T("M5-"), _T("M6-"), _T("M7-"), _T("M8-"), _T("M9-"),\r
+                       _T("L0-"), _T("L1-"), _T("L2-"), _T("L3-"), _T("L4-"),\r
+                       _T("L5-"), _T("L6-"), _T("L7-"), _T("L8-"), _T("L9-"),\r
+               };\r
+               m_prefixes = new std::vector<tstringi>;\r
+               for (size_t i = 0; i < NUMBER_OF(prefixes); ++ i)\r
+                       m_prefixes->push_back(prefixes[i]);\r
+               std::sort(m_prefixes->begin(), m_prefixes->end(), prefixSortPred);\r
+       }\r
+       m_prefixesRefCcount ++;\r
+\r
+       // create parser\r
+       Parser parser(data.c_str(), data.size());\r
+       parser.setPrefixes(m_prefixes);\r
+\r
+       while (true) {\r
+               try {\r
+                       if (!parser.getLine(&m_tokens))\r
+                               break;\r
+                       m_ti = m_tokens.begin();\r
+               } catch (ErrorMessage &e) {\r
+                       if (m_log && m_soLog) {\r
+                               Acquire a(m_soLog);\r
+                               *m_log << m_currentFilename << _T("(") << parser.getLineNumber()\r
+                               << _T(") : error: ") << e << std::endl;\r
+                       }\r
+                       m_isThereAnyError = true;\r
+                       continue;\r
+               }\r
+\r
+               try {\r
+                       load_LINE();\r
+                       if (!isEOL())\r
+                               throw WarningMessage() << _T("back garbage is ignored.");\r
+               } catch (WarningMessage &w) {\r
+                       if (m_log && m_soLog) {\r
+                               Acquire a(m_soLog);\r
+                               *m_log << i_filename << _T("(") << parser.getLineNumber()\r
+                               << _T(") : warning: ") << w << std::endl;\r
+                       }\r
+               } catch (ErrorMessage &e) {\r
+                       if (m_log && m_soLog) {\r
+                               Acquire a(m_soLog);\r
+                               *m_log << i_filename << _T("(") << parser.getLineNumber()\r
+                               << _T(") : error: ") << e << std::endl;\r
+                       }\r
+                       m_isThereAnyError = true;\r
+               }\r
+       }\r
+\r
+       // m_prefixes\r
+       -- m_prefixesRefCcount;\r
+       if (m_prefixesRefCcount == 0)\r
+               delete m_prefixes;\r
+\r
+       if (0 < m_canReadStack.size()) {\r
+               Acquire a(m_soLog);\r
+               *m_log << m_currentFilename << _T("(") << parser.getLineNumber()\r
+               << _T(") : error: unbalanced `if'.  ")\r
+               << _T("you forget `endif', didn'i_token you?")\r
+               << std::endl;\r
+               m_isThereAnyError = true;\r
+       }\r
 }\r
 \r
 \r
 // is the filename readable ?\r
 bool SettingLoader::isReadable(const tstringi &i_filename,\r
-                              int i_debugLevel) const \r
+                                                          int i_debugLevel) const\r
 {\r
-  if (i_filename.empty())\r
-    return false;\r
+       if (i_filename.empty())\r
+               return false;\r
 #ifdef UNICODE\r
-  tifstream ist(to_string(i_filename).c_str());\r
+       tifstream ist(to_string(i_filename).c_str());\r
 #else\r
-  tifstream ist(i_filename.c_str());\r
+       tifstream ist(i_filename.c_str());\r
 #endif\r
-  if (ist.good())\r
-  {\r
-    if (m_log && m_soLog)\r
-    {\r
-               Acquire a(m_soLog, 0);\r
-      *m_log << _T("  loading: ") << i_filename << std::endl;\r
-    }\r
-    return true;\r
-  }\r
-  else\r
-  {\r
-    if (m_log && m_soLog)\r
-    {\r
-      Acquire a(m_soLog, i_debugLevel);\r
-      *m_log << _T("not found: ") << i_filename << std::endl;\r
-    }\r
-    return false;\r
-  }\r
+       if (ist.good()) {\r
+               if (m_log && m_soLog) {\r
+                       Acquire a(m_soLog, 0);\r
+                       *m_log << _T("  loading: ") << i_filename << std::endl;\r
+               }\r
+               return true;\r
+       } else {\r
+               if (m_log && m_soLog) {\r
+                       Acquire a(m_soLog, i_debugLevel);\r
+                       *m_log << _T("not found: ") << i_filename << std::endl;\r
+               }\r
+               return false;\r
+       }\r
 }\r
 \r
 #if 0\r
 // get filename from registry\r
 bool SettingLoader::getFilenameFromRegistry(tstringi *o_path) const\r
 {\r
-  // get from registry\r
-  Registry reg(MAYU_REGISTRY_ROOT);\r
-  int index;\r
-  reg.read(_T(".mayuIndex"), &index, 0);\r
-  char buf[100];\r
-  snprintf(buf, NUMBER_OF(buf), _T(".mayu%d"), index);\r
-  if (!reg.read(buf, o_path))\r
-    return false;\r
-\r
-  // parse registry entry\r
-  Regexp getFilename(_T("^[^;]*;([^;]*);(.*)$"));\r
-  if (!getFilename.doesMatch(*o_path))\r
-    return false;\r
-  \r
-  tstringi path = getFilename[1];\r
-  tstringi options = getFilename[2];\r
-  \r
-  if (!(0 < path.size() && isReadable(path)))\r
-    return false;\r
-  *o_path = path;\r
-  \r
-  // set symbols\r
-  Regexp symbol(_T("-D([^;]*)"));\r
-  while (symbol.doesMatch(options))\r
-  {\r
-    m_setting->symbols.insert(symbol[1]);\r
-    options = options.substr(symbol.subBegin(1));\r
-  }\r
-  \r
-  return true;\r
+       // get from registry\r
+       Registry reg(MAYU_REGISTRY_ROOT);\r
+       int index;\r
+       reg.read(_T(".mayuIndex"), &index, 0);\r
+       char buf[100];\r
+       snprintf(buf, NUMBER_OF(buf), _T(".mayu%d"), index);\r
+       if (!reg.read(buf, o_path))\r
+               return false;\r
+\r
+       // parse registry entry\r
+       Regexp getFilename(_T("^[^;]*;([^;]*);(.*)$"));\r
+       if (!getFilename.doesMatch(*o_path))\r
+               return false;\r
+\r
+       tstringi path = getFilename[1];\r
+       tstringi options = getFilename[2];\r
+\r
+       if (!(0 < path.size() && isReadable(path)))\r
+               return false;\r
+       *o_path = path;\r
+\r
+       // set symbols\r
+       Regexp symbol(_T("-D([^;]*)"));\r
+       while (symbol.doesMatch(options)) {\r
+               m_setting->symbols.insert(symbol[1]);\r
+               options = options.substr(symbol.subBegin(1));\r
+       }\r
+\r
+       return true;\r
 }\r
 #endif\r
 \r
 \r
 // get filename\r
 bool SettingLoader::getFilename(const tstringi &i_name, tstringi *o_path,\r
-                               int i_debugLevel) const\r
-{\r
-  // the default filename is ".mayu"\r
-  const tstringi &name = i_name.empty() ? tstringi(_T(".mayu")) : i_name;\r
-  \r
-  bool isFirstTime = true;\r
-\r
-  while (true)\r
-  {\r
-    // find file from registry\r
-    if (i_name.empty())                                // called not from 'include'\r
-    {\r
-      Setting::Symbols symbols;\r
-      if (getFilenameFromRegistry(NULL, o_path, &symbols))\r
-      {\r
-       if (o_path->empty())\r
-         // find file from home directory\r
-       {\r
-         HomeDirectories pathes;\r
-         getHomeDirectories(&pathes);\r
-         for (HomeDirectories::iterator\r
-                i = pathes.begin(); i != pathes.end(); ++ i)\r
-         {\r
-           *o_path = *i + _T("\\") + name;\r
-           if (isReadable(*o_path, i_debugLevel))\r
-             goto add_symbols;\r
-         }\r
-         return false;\r
+                                                               int i_debugLevel) const\r
+{\r
+       // the default filename is ".mayu"\r
+       const tstringi &name = i_name.empty() ? tstringi(_T(".mayu")) : i_name;\r
+\r
+       bool isFirstTime = true;\r
+\r
+       while (true) {\r
+               // find file from registry\r
+               if (i_name.empty()) {                   // called not from 'include'\r
+                       Setting::Symbols symbols;\r
+                       if (getFilenameFromRegistry(NULL, o_path, &symbols)) {\r
+                               if (o_path->empty())\r
+                                       // find file from home directory\r
+                               {\r
+                                       HomeDirectories pathes;\r
+                                       getHomeDirectories(&pathes);\r
+                                       for (HomeDirectories::iterator\r
+                                                       i = pathes.begin(); i != pathes.end(); ++ i) {\r
+                                               *o_path = *i + _T("\\") + name;\r
+                                               if (isReadable(*o_path, i_debugLevel))\r
+                                                       goto add_symbols;\r
+                                       }\r
+                                       return false;\r
+                               } else {\r
+                                       if (!isReadable(*o_path, i_debugLevel))\r
+                                               return false;\r
+                               }\r
+add_symbols:\r
+                               for (Setting::Symbols::iterator\r
+                                               i = symbols.begin(); i != symbols.end(); ++ i)\r
+                                       m_setting->m_symbols.insert(*i);\r
+                               return true;\r
+                       }\r
+               }\r
+\r
+               if (!isFirstTime)\r
+                       return false;\r
+\r
+               // find file from home directory\r
+               HomeDirectories pathes;\r
+               getHomeDirectories(&pathes);\r
+               for (HomeDirectories::iterator i = pathes.begin(); i != pathes.end(); ++ i) {\r
+                       *o_path = *i + _T("\\") + name;\r
+                       if (isReadable(*o_path, i_debugLevel))\r
+                               return true;\r
+               }\r
+\r
+               if (!i_name.empty())\r
+                       return false;                           // called by 'include'\r
+\r
+               if (!DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DIALOG_setting),\r
+                                          NULL, dlgSetting_dlgProc))\r
+                       return false;\r
        }\r
-       else\r
-       {\r
-         if (!isReadable(*o_path, i_debugLevel))\r
-           return false;\r
-       }\r
-       add_symbols:\r
-       for (Setting::Symbols::iterator\r
-              i = symbols.begin(); i != symbols.end(); ++ i)\r
-         m_setting->m_symbols.insert(*i);\r
-       return true;\r
-      }\r
-    }\r
-    \r
-    if (!isFirstTime)\r
-      return false;\r
-    \r
-    // find file from home directory\r
-    HomeDirectories pathes;\r
-    getHomeDirectories(&pathes);\r
-    for (HomeDirectories::iterator i = pathes.begin(); i != pathes.end(); ++ i)\r
-    {\r
-      *o_path = *i + _T("\\") + name;\r
-      if (isReadable(*o_path, i_debugLevel))\r
-       return true;\r
-    }\r
-    \r
-    if (!i_name.empty())\r
-      return false;                            // called by 'include'\r
-    \r
-    if (!DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DIALOG_setting),\r
-                  NULL, dlgSetting_dlgProc))\r
-      return false;\r
-  }\r
 }\r
 \r
 \r
 // constructor\r
 SettingLoader::SettingLoader(SyncObject *i_soLog, tostream *i_log)\r
-  : m_setting(NULL),\r
-    m_isThereAnyError(false),\r
-    m_soLog(i_soLog),\r
-    m_log(i_log),\r
-    m_currentKeymap(NULL)\r
+               : m_setting(NULL),\r
+               m_isThereAnyError(false),\r
+               m_soLog(i_soLog),\r
+               m_log(i_log),\r
+               m_currentKeymap(NULL)\r
 {\r
-  m_defaultKeySeqModifier =\r
-    m_defaultAssignModifier.release(Modifier::Type_ImeComp);\r
+       m_defaultKeySeqModifier =\r
+               m_defaultAssignModifier.release(Modifier::Type_ImeComp);\r
 }\r
 \r
 \r
@@ -1715,55 +1643,52 @@ SettingLoader::SettingLoader(SyncObject *i_soLog, tostream *i_log)
  */\r
 bool SettingLoader::load(Setting *i_setting, const tstringi &i_filename)\r
 {\r
-  m_setting = i_setting;\r
-  m_isThereAnyError = false;\r
-    \r
-  tstringi path;\r
-  if (!getFilename(i_filename, &path))\r
-  {\r
-    if (i_filename.empty())\r
-    {\r
-      Acquire a(m_soLog);\r
-      getFilename(i_filename, &path, 0);       // show filenames\r
-      return false;\r
-    }\r
-    else\r
-      throw ErrorMessage() << _T("`") << i_filename\r
-                          << _T("': no such file or other error.");\r
-  }\r
-\r
-  // create global keymap's default keySeq\r
-  ActionFunction af(createFunctionData(_T("OtherWindowClass")));\r
-  KeySeq *globalDefault = m_setting->m_keySeqs.add(KeySeq(_T("")).add(af));\r
-  \r
-  // add default keymap\r
-  m_currentKeymap = m_setting->m_keymaps.add(\r
-    Keymap(Keymap::Type_windowOr, _T("Global"), _T(""), _T(""),\r
-          globalDefault, NULL));\r
-\r
-  /*\r
-  // add keyboard layout name\r
-  if (filename.empty())\r
-  {\r
-    char keyboardLayoutName[KL_NAMELENGTH];\r
-    if (GetKeyboardLayoutName(keyboardLayoutName))\r
-    {\r
-      tstringi kl = tstringi(_T("KeyboardLayout/")) + keyboardLayoutName;\r
-      m_setting->symbols.insert(kl);\r
-      Acquire a(m_soLog);\r
-      *m_log << _T("KeyboardLayout: ") << kl << std::endl;\r
-    }\r
-  }\r
-  */\r
-  \r
-  // load\r
-  load(path);\r
-\r
-  // finalize\r
-  if (i_filename.empty())\r
-    m_setting->m_keymaps.adjustModifier(m_setting->m_keyboard);\r
-  \r
-  return !m_isThereAnyError;\r
+       m_setting = i_setting;\r
+       m_isThereAnyError = false;\r
+\r
+       tstringi path;\r
+       if (!getFilename(i_filename, &path)) {\r
+               if (i_filename.empty()) {\r
+                       Acquire a(m_soLog);\r
+                       getFilename(i_filename, &path, 0);      // show filenames\r
+                       return false;\r
+               } else\r
+                       throw ErrorMessage() << _T("`") << i_filename\r
+                       << _T("': no such file or other error.");\r
+       }\r
+\r
+       // create global keymap's default keySeq\r
+       ActionFunction af(createFunctionData(_T("OtherWindowClass")));\r
+       KeySeq *globalDefault = m_setting->m_keySeqs.add(KeySeq(_T("")).add(af));\r
+\r
+       // add default keymap\r
+       m_currentKeymap = m_setting->m_keymaps.add(\r
+                                                 Keymap(Keymap::Type_windowOr, _T("Global"), _T(""), _T(""),\r
+                                                                globalDefault, NULL));\r
+\r
+       /*\r
+       // add keyboard layout name\r
+       if (filename.empty())\r
+       {\r
+         char keyboardLayoutName[KL_NAMELENGTH];\r
+         if (GetKeyboardLayoutName(keyboardLayoutName))\r
+         {\r
+           tstringi kl = tstringi(_T("KeyboardLayout/")) + keyboardLayoutName;\r
+           m_setting->symbols.insert(kl);\r
+           Acquire a(m_soLog);\r
+           *m_log << _T("KeyboardLayout: ") << kl << std::endl;\r
+         }\r
+       }\r
+       */\r
+\r
+       // load\r
+       load(path);\r
+\r
+       // finalize\r
+       if (i_filename.empty())\r
+               m_setting->m_keymaps.adjustModifier(m_setting->m_keyboard);\r
+\r
+       return !m_isThereAnyError;\r
 }\r
 \r
 \r