]> git.lyx.org Git - lyx.git/blobdiff - src/KeyMap.cpp
Account for old versions of Pygments
[lyx.git] / src / KeyMap.cpp
index ffd55c4970a01865515bf71f28a43c550d37fcb8..32f99265dd779106d2ab4626a784b460d5672938 100644 (file)
@@ -25,6 +25,7 @@
 #include "support/filetools.h"
 #include "support/gettext.h"
 #include "support/lstrings.h"
+#include "support/TempFile.h"
 
 #include "frontends/alert.h"
 
@@ -105,6 +106,8 @@ void KeyMap::bind(KeySequence * seq, FuncRequest const & func, unsigned int r)
        KeyModifier const mod2 = seq->modifiers[r].second;
 
        // check if key is already there
+       // FIXME perf: Profiling shows that this is responsible of 99% of the
+       // cost of GuiPrefs::applyView()
        Table::iterator end = table.end();
        for (Table::iterator it = table.begin(); it != end; ++it) {
                if (code == it->code
@@ -115,13 +118,12 @@ void KeyMap::bind(KeySequence * seq, FuncRequest const & func, unsigned int r)
                                LYXERR(Debug::KBMAP, "Warning: New binding for '"
                                        << to_utf8(seq->print(KeySequence::Portable))
                                        << "' is overriding old binding...");
-                               if (it->prefixes.get()) {
+                               if (it->prefixes)
                                        it->prefixes.reset();
-                               }
                                it->func = func;
                                it->func.setOrigin(FuncRequest::KEYBOARD);
                                return;
-                       } else if (!it->prefixes.get()) {
+                       } else if (!it->prefixes) {
                                lyxerr << "Error: New binding for '"
                                       << to_utf8(seq->print(KeySequence::Portable))
                                       << "' is overriding old binding..."
@@ -168,10 +170,10 @@ void KeyMap::unbind(KeySequence * seq, FuncRequest const & func, unsigned int r)
                        if (r + 1 == seq->length()) {
                                if (it->func == func) {
                                        remove = it;
-                                       if (it->prefixes.get())
+                                       if (it->prefixes)
                                                it->prefixes.reset();
                                }
-                       } else if (it->prefixes.get()) {
+                       } else if (it->prefixes) {
                                it->prefixes->unbind(seq, func, r + 1);
                                if (it->prefixes->empty())
                                        remove = it;
@@ -201,7 +203,7 @@ FuncRequest KeyMap::getBinding(KeySequence const & seq, unsigned int r)
                    && mod2 == it->mod.second) {
                        if (r + 1 == seq.length())
                                return it->func;
-                       else if (it->prefixes.get())
+                       else if (it->prefixes)
                                return it->prefixes->getBinding(seq, r + 1);
                }
        }
@@ -255,7 +257,8 @@ bool KeyMap::read(FileName const & bind_file, KeyMap * unbind_map)
                return retval == ReadOK;
 
        LYXERR(Debug::FILES, "Converting bind file to " << LFUN_FORMAT);
-       FileName const tempfile = FileName::tempName("convert_bind");
+       TempFile tmp("convert_bind");
+       FileName const tempfile = tmp.name();
        bool const success = prefs2prefs(bind_file, tempfile, true);
        if (!success) {
                LYXERR0 ("Unable to convert " << bind_file <<
@@ -263,7 +266,6 @@ bool KeyMap::read(FileName const & bind_file, KeyMap * unbind_map)
                return false;
        }
        retval = readWithoutConv(tempfile, unbind_map);
-       tempfile.removeFile();
        return retval == ReadOK;
 }
 
@@ -441,10 +443,10 @@ FuncRequest const & KeyMap::lookup(KeySymbol const &key,
 
                if (cit->code == key && cit->mod.first == check) {
                        // match found
-                       if (cit->prefixes.get()) {
+                       if (cit->prefixes) {
                                // this is a prefix key - set new map
                                seq->curmap = cit->prefixes.get();
-                               static FuncRequest prefix(LFUN_COMMAND_PREFIX);
+                               static const FuncRequest prefix(LFUN_COMMAND_PREFIX);
                                return prefix;
                        } else {
                                // final key - reset map
@@ -507,7 +509,7 @@ KeyMap::Bindings KeyMap::findBindings(FuncRequest const & func,
 
        Table::const_iterator end = table.end();
        for (Table::const_iterator cit = table.begin(); cit != end; ++cit) {
-               if (cit->prefixes.get()) {
+               if (cit->prefixes) {
                        KeySequence seq = prefix;
                        seq.addkey(cit->code, cit->mod.first);
                        Bindings res2 = cit->prefixes->findBindings(func, seq);
@@ -555,7 +557,7 @@ void KeyMap::listBindings(BindingList & list,
        Table::const_iterator it_end = table.end();
        for (; it != it_end; ++it) {
                // a LFUN_COMMAND_PREFIX
-               if (it->prefixes.get()) {
+               if (it->prefixes) {
                        KeySequence seq = prefix;
                        seq.addkey(it->code, it->mod.first);
                        it->prefixes->listBindings(list, seq, tag);