mirror of https://github.com/djcb/mu.git
mu-server: disable readline support for now
Seems to be causing problem in non-interactive mode
This commit is contained in:
parent
099d41f3b5
commit
55cac6f2e5
|
@ -20,7 +20,6 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "mu-cmd.h"
|
#include "mu-cmd.h"
|
||||||
|
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
@ -29,33 +28,6 @@
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
#include <glib/gprintf.h>
|
#include <glib/gprintf.h>
|
||||||
|
|
||||||
#ifdef HAVE_LIBREADLINE
|
|
||||||
# if defined(HAVE_READLINE_READLINE_H)
|
|
||||||
# include <readline/readline.h>
|
|
||||||
# elif defined(HAVE_READLINE_H)
|
|
||||||
# include <readline.h>
|
|
||||||
# else /* !defined(HAVE_READLINE_H) */
|
|
||||||
extern char *readline ();
|
|
||||||
# endif /* !defined(HAVE_READLINE_H) */
|
|
||||||
char *cmdline = NULL;
|
|
||||||
#else /* !defined(HAVE_READLINE_READLINE_H) */
|
|
||||||
/* no readline */
|
|
||||||
#endif /* HAVE_LIBREADLINE */
|
|
||||||
|
|
||||||
#ifdef HAVE_READLINE_HISTORY
|
|
||||||
# if defined(HAVE_READLINE_HISTORY_H)
|
|
||||||
# include <readline/history.h>
|
|
||||||
# elif defined(HAVE_HISTORY_H)
|
|
||||||
# include <history.h>
|
|
||||||
# else /* !defined(HAVE_HISTORY_H) */
|
|
||||||
extern void add_history ();
|
|
||||||
extern int write_history ();
|
|
||||||
extern int read_history ();
|
|
||||||
# endif /* defined(HAVE_READLINE_HISTORY_H) */
|
|
||||||
/* no history */
|
|
||||||
#endif /* HAVE_READLINE_HISTORY */
|
|
||||||
|
|
||||||
|
|
||||||
#include "mu-runtime.h"
|
#include "mu-runtime.h"
|
||||||
#include "mu-cmd.h"
|
#include "mu-cmd.h"
|
||||||
#include "mu-maildir.h"
|
#include "mu-maildir.h"
|
||||||
|
@ -1299,59 +1271,8 @@ make_command_map (Context& context)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
struct Readline {
|
static std::string
|
||||||
Readline (const std::string& histpath, size_t max_lines);
|
read_line(bool& do_quit)
|
||||||
~Readline();
|
|
||||||
std::string read_line(bool& do_quit);
|
|
||||||
void save_line(const std::string& line);
|
|
||||||
std::string histpath_;
|
|
||||||
size_t max_lines_{0};
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Wrapper around readline (if available) or nothing otherwise.
|
|
||||||
#if defined(HAVE_LIBREADLINE) && defined(HAVE_READLINE_HISTORY)
|
|
||||||
Readline::Readline (const std::string& histpath, size_t max_lines):
|
|
||||||
histpath_{histpath}, max_lines_{max_lines}
|
|
||||||
{
|
|
||||||
rl_bind_key('\t', rl_insert); // default (filenames) is not useful
|
|
||||||
using_history();
|
|
||||||
read_history (histpath_.c_str());
|
|
||||||
|
|
||||||
if (max_lines_ > 0)
|
|
||||||
stifle_history(max_lines_);
|
|
||||||
}
|
|
||||||
|
|
||||||
Readline::~Readline () {
|
|
||||||
write_history(histpath_.c_str());
|
|
||||||
if (max_lines_ > 0)
|
|
||||||
history_truncate_file (histpath_.c_str(), max_lines_);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string
|
|
||||||
Readline::read_line(bool& do_quit)
|
|
||||||
{
|
|
||||||
auto buf = readline(";; mu% ");
|
|
||||||
if (!buf) {
|
|
||||||
do_quit = true;
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
std::string line{buf};
|
|
||||||
::free (buf);
|
|
||||||
return line;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
Readline::save_line(const std::string& line)
|
|
||||||
{
|
|
||||||
add_history(line.c_str());
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
Readline::Readline (const std::string& histpath, size_t max_lines) {}
|
|
||||||
Readline::~Readline() {}
|
|
||||||
void Readline::save_line(const std::string& line) {}
|
|
||||||
|
|
||||||
std::string
|
|
||||||
Readline::read_line(bool& do_quit)
|
|
||||||
{
|
{
|
||||||
std::string line;
|
std::string line;
|
||||||
std::cout << ";; mu> ";
|
std::cout << ";; mu> ";
|
||||||
|
@ -1359,8 +1280,6 @@ Readline::read_line(bool& do_quit)
|
||||||
do_quit = true;
|
do_quit = true;
|
||||||
return line;
|
return line;
|
||||||
}
|
}
|
||||||
#endif // ! defined(HAVE_LIBREADLINE) && defined(HAVE_READLINE_HISTORY)
|
|
||||||
|
|
||||||
|
|
||||||
MuError
|
MuError
|
||||||
mu_cmd_server (MuConfig *opts, GError **err) try
|
mu_cmd_server (MuConfig *opts, GError **err) try
|
||||||
|
@ -1381,9 +1300,6 @@ mu_cmd_server (MuConfig *opts, GError **err) try
|
||||||
return MU_OK;
|
return MU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto histpath{std::string{mu_runtime_path(MU_RUNTIME_PATH_CACHE)} + "/history"};
|
|
||||||
Readline readline(histpath, 50);
|
|
||||||
|
|
||||||
install_sig_handler();
|
install_sig_handler();
|
||||||
std::cout << ";; Welcome to the " << PACKAGE_STRING << " command-server\n"
|
std::cout << ";; Welcome to the " << PACKAGE_STRING << " command-server\n"
|
||||||
<< ";; Use (help) to get a list of commands, (quit) to quit.\n";
|
<< ";; Use (help) to get a list of commands, (quit) to quit.\n";
|
||||||
|
@ -1392,12 +1308,11 @@ mu_cmd_server (MuConfig *opts, GError **err) try
|
||||||
|
|
||||||
std::string line;
|
std::string line;
|
||||||
try {
|
try {
|
||||||
line = readline.read_line(context.do_quit);
|
line = read_line(context.do_quit);
|
||||||
if (line.find_first_not_of(" \t") == std::string::npos)
|
if (line.find_first_not_of(" \t") == std::string::npos)
|
||||||
continue; // skip whitespace-only lines
|
continue; // skip whitespace-only lines
|
||||||
|
|
||||||
auto call{Sexp::parse(line)};
|
auto call{Sexp::parse(line)};
|
||||||
readline.save_line(line);
|
|
||||||
|
|
||||||
invoke(context.command_map, call);
|
invoke(context.command_map, call);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue