]> git.lyx.org Git - lyx.git/blobdiff - src/KeyMap.cpp
Added Liviu Andronic, and modified generate_contributions.py to match what was in...
[lyx.git] / src / KeyMap.cpp
index 89e1f488374fb752e7db489572ec611159ece6ed..a5e83b356bed7e497f19011a28ccef8e6ddd4cc6 100644 (file)
 
 #include "KeyMap.h"
 
-#include "debug.h"
 #include "KeySequence.h"
 #include "LyXAction.h"
 #include "Lexer.h"
 
+#include "support/debug.h"
 #include "support/docstream.h"
+#include "support/FileName.h"
 #include "support/filetools.h"
 
 #include <fstream>
 #include <sstream>
 #include <utility>
 
-using std::endl;
-using std::ios;
-using std::ofstream;
-using std::string;
-
+using namespace std;
+using namespace lyx::support;
 
 namespace lyx {
 
-using support::FileName;
-using support::i18nLibFileSearch;
-
 
 string const KeyMap::printKeySym(KeySymbol const & key, KeyModifier mod)
 {
@@ -59,9 +54,8 @@ string const KeyMap::printKeySym(KeySymbol const & key, KeyModifier mod)
 
 size_t KeyMap::bind(string const & seq, FuncRequest const & func)
 {
-       LYXERR(Debug::KBMAP) << "BIND: Sequence `"
-              << seq << "' Action `"
-              << func.action << '\'' << endl;
+       LYXERR(Debug::KBMAP, "BIND: Sequence `" << seq << "' Action `"
+              << func.action << '\'');
 
        KeySequence k(0, 0);
 
@@ -69,9 +63,8 @@ size_t KeyMap::bind(string const & seq, FuncRequest const & func)
        if (res == string::npos) {
                bind(&k, func);
        } else {
-               LYXERR(Debug::KBMAP) << "Parse error at position " << res
-                                    << " in key sequence '" << seq << "'."
-                                    << endl;
+               LYXERR(Debug::KBMAP, "Parse error at position " << res
+                                    << " in key sequence '" << seq << "'.");
        }
 
        return res == string::npos ? 0 : res;
@@ -86,9 +79,8 @@ size_t KeyMap::unbind(string const & seq, FuncRequest const & func)
        if (res == string::npos)
                unbind(&k, func);
        else
-               LYXERR(Debug::KBMAP) << "Parse error at position " << res
-                                    << " in key sequence '" << seq << "'."
-                                    << endl;
+               LYXERR(Debug::KBMAP, "Parse error at position " << res
+                                    << " in key sequence '" << seq << "'.");
        return res == string::npos ? 0 : res;
 }
 
@@ -125,74 +117,63 @@ void KeyMap::clear()
 }
 
 
-namespace {
-
-enum BindTags {
-       BN_BIND,
-       BN_BINDFILE,
-       BN_UNBIND,
-};
-
-keyword_item bindTags[] = {
-       { "\\bind", BN_BIND },
-       { "\\bind_file", BN_BINDFILE },
-       { "\\unbind", BN_UNBIND },
-};
-
-}
-
-
 bool KeyMap::read(string const & bind_file, KeyMap * unbind_map)
 {
-       const int bindCount = sizeof(bindTags) / sizeof(keyword_item);
-
-       Lexer lexrc(bindTags, bindCount);
+       enum {
+               BN_BIND,
+               BN_BINDFILE,
+               BN_UNBIND,
+       };
+
+       LexerKeyword bindTags[] = {
+               { "\\bind",      BN_BIND },
+               { "\\bind_file", BN_BINDFILE },
+               { "\\unbind",    BN_UNBIND },
+       };
+
+       Lexer lexrc(bindTags);
        if (lyxerr.debugging(Debug::PARSER))
                lexrc.printTable(lyxerr);
 
-       FileName const tmp(i18nLibFileSearch("bind", bind_file, "bind"));
+       FileName const tmp = i18nLibFileSearch("bind", bind_file, "bind");
        lexrc.setFile(tmp);
        if (!lexrc.isOK()) {
-               lyxerr << "KeyMap::read: cannot open bind file:"
-                      << tmp << endl;
+               LYXERR0("KeyMap::read: cannot open bind file:" << tmp);
                return false;
        }
 
-       LYXERR(Debug::KBMAP) << "Reading bind file:" << tmp << endl;
+       LYXERR(Debug::KBMAP, "Reading bind file:" << tmp);
 
        bool error = false;
        while (lexrc.isOK()) {
                switch (lexrc.lex()) {
+
                case Lexer::LEX_UNDEF:
                        lexrc.printError("Unknown tag `$$Token'");
                        error = true;
                        continue;
+
                case Lexer::LEX_FEOF:
                        continue;
-               case BN_BIND:
-               {
-                       string seq, cmd;
 
-                       if (lexrc.next()) {
-                               seq = lexrc.getString();
-                       } else {
+               case BN_BIND: {
+                       if (!lexrc.next()) {
                                lexrc.printError("BN_BIND: Missing key sequence");
                                error = true;
                                break;
                        }
+                       string seq = lexrc.getString();
 
-                       if (lexrc.next(true)) {
-                               cmd = lexrc.getString();
-                       } else {
+                       if (!lexrc.next(true)) {
                                lexrc.printError("BN_BIND: missing command");
                                error = true;
                                break;
                        }
+                       string cmd = lexrc.getString();
 
                        FuncRequest func = lyxaction.lookupFunc(cmd);
-                       if (func. action == LFUN_UNKNOWN_ACTION) {
-                               lexrc.printError("BN_BIND: Unknown LyX"
-                                                " function `$$Token'");
+                       if (func.action == LFUN_UNKNOWN_ACTION) {
+                               lexrc.printError("BN_BIND: Unknown LyX function `$$Token'");
                                error = true;
                                break;
                        }
@@ -200,28 +181,24 @@ bool KeyMap::read(string const & bind_file, KeyMap * unbind_map)
                        bind(seq, func);
                        break;
                }
-               case BN_UNBIND:
-               {
-                       string seq, cmd;
 
-                       if (lexrc.next()) {
-                               seq = lexrc.getString();
-                       } else {
+               case BN_UNBIND: {
+                       if (!lexrc.next()) {
                                lexrc.printError("BN_UNBIND: Missing key sequence");
                                error = true;
                                break;
                        }
+                       string seq = lexrc.getString();
 
-                       if (lexrc.next(true)) {
-                               cmd = lexrc.getString();
-                       } else {
+                       if (!lexrc.next(true)) {
                                lexrc.printError("BN_UNBIND: missing command");
                                error = true;
                                break;
                        }
+                       string cmd = lexrc.getString();
 
                        FuncRequest func = lyxaction.lookupFunc(cmd);
-                       if (func. action == LFUN_UNKNOWN_ACTION) {
+                       if (func.action == LFUN_UNKNOWN_ACTION) {
                                lexrc.printError("BN_UNBIND: Unknown LyX"
                                                 " function `$$Token'");
                                error = true;
@@ -234,23 +211,21 @@ bool KeyMap::read(string const & bind_file, KeyMap * unbind_map)
                                unbind(seq, func);
                        break;
                }
+
                case BN_BINDFILE:
-                       if (lexrc.next()) {
-                               string const tmp(lexrc.getString());
-                               error |= !read(tmp, unbind_map);
-                       } else {
+                       if (!lexrc.next()) {
                                lexrc.printError("BN_BINDFILE: Missing file name");
                                error = true;
                                break;
-
                        }
+                       string const tmp = lexrc.getString();
+                       error |= !read(tmp, unbind_map);
                        break;
                }
        }
 
        if (error)
-               lyxerr << "KeyMap::read: error while reading bind file:"
-                      << tmp << endl;
+               LYXERR0("KeyMap::read: error while reading bind file:" << tmp);
        return !error;
 }
 
@@ -258,7 +233,7 @@ bool KeyMap::read(string const & bind_file, KeyMap * unbind_map)
 void KeyMap::write(string const & bind_file, bool append, bool unbind) const
 {
        ofstream os(bind_file.c_str(), 
-               append ? (ios::app | ios:: out): ios::out);
+               append ? (ios::app | ios::out) : ios::out);
 
        if (!append)
                os << "## This file is automatically generated by lyx\n"
@@ -269,7 +244,7 @@ void KeyMap::write(string const & bind_file, bool append, bool unbind) const
        BindingList::const_iterator it = list.begin();
        BindingList::const_iterator it_end = list.end();
        for (; it != it_end; ++it) {
-               kb_action action = it->request.action;
+               FuncCode action = it->request.action;
                string arg = to_utf8(it->request.argument());
 
                os << tag << " \""
@@ -353,11 +328,9 @@ void KeyMap::bind(KeySequence * seq, FuncRequest const & func, unsigned int r)
                    && mod2 == it->mod.second) {
                        // overwrite binding
                        if (r + 1 == seq->length()) {
-                               LYXERR(Debug::KBMAP)
-                                       << "Warning: New binding for '"
+                               LYXERR(Debug::KBMAP, "Warning: New binding for '"
                                        << to_utf8(seq->print(KeySequence::Portable))
-                                       << "' is overriding old binding..."
-                                       << endl;
+                                       << "' is overriding old binding...");
                                if (it->table.get()) {
                                        it->table.reset();
                                }
@@ -413,7 +386,7 @@ void KeyMap::unbind(KeySequence * seq, FuncRequest const & func, unsigned int r)
                                        remove = it;
                                        if (it->table.get())
                                                it->table.reset();
-                                       }
+                               }
                        } else if (it->table.get()) {
                                it->table->unbind(seq, func, r + 1);
                                if (it->table->empty())
@@ -422,16 +395,14 @@ void KeyMap::unbind(KeySequence * seq, FuncRequest const & func, unsigned int r)
                        }
                }
        }
-       if (remove != end) {
+       if (remove != end)
                table.erase(remove);
-               return;
-       }
 }
 
 
-docstring const KeyMap::printbindings(FuncRequest const & func) const
+docstring KeyMap::printBindings(FuncRequest const & func) const
 {
-       Bindings bindings = findbindings(func);
+       Bindings bindings = findBindings(func);
        if (bindings.empty())
                return docstring();
        
@@ -447,26 +418,25 @@ docstring const KeyMap::printbindings(FuncRequest const & func) const
 }
 
 
-KeyMap::Bindings KeyMap::findbindings(FuncRequest const & func) const
+KeyMap::Bindings KeyMap::findBindings(FuncRequest const & func) const
 {
-       return findbindings(func, KeySequence(0, 0));
+       return findBindings(func, KeySequence(0, 0));
 }
 
 
-KeyMap::Bindings KeyMap::findbindings(FuncRequest const & func,
+KeyMap::Bindings KeyMap::findBindings(FuncRequest const & func,
                        KeySequence const & prefix) const
 {
        Bindings res;
-       if (table.empty()) return res;
+       if (table.empty())
+               return res;
 
        Table::const_iterator end = table.end();
-       for (Table::const_iterator cit = table.begin();
-           cit != end; ++cit) {
+       for (Table::const_iterator cit = table.begin(); cit != end; ++cit) {
                if (cit->table.get()) {
                        KeySequence seq = prefix;
                        seq.addkey(cit->code, cit->mod.first);
-                       Bindings res2 =
-                               cit->table->findbindings(func, seq);
+                       Bindings res2 = cit->table->findBindings(func, seq);
                        res.insert(res.end(), res2.begin(), res2.end());
                } else if (cit->func == func) {
                        KeySequence seq = prefix;
@@ -487,7 +457,7 @@ KeyMap::BindingList KeyMap::listBindings(bool unbound, int tag) const
                LyXAction::const_func_iterator fit = lyxaction.func_begin();
                LyXAction::const_func_iterator fit_end = lyxaction.func_end();
                for (; fit != fit_end; ++fit) {
-                       kb_action action = fit->second;
+                       FuncCode action = fit->second;
                        bool has_action = false;
                        BindingList::const_iterator it = list.begin();
                        BindingList::const_iterator it_end = list.end();