projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
message: Introduce underlining for error message regions.
[pspp]
/
src
/
ui
/
terminal
/
main.c
diff --git
a/src/ui/terminal/main.c
b/src/ui/terminal/main.c
index 06677668f44c520426e80c906cf50f37ff510a8b..d2336472bfb98a0b19d6bc10a8f8864dc38788a6 100644
(file)
--- a/
src/ui/terminal/main.c
+++ b/
src/ui/terminal/main.c
@@
-47,7
+47,7
@@
#include "libpspp/version.h"
#include "math/random.h"
#include "output/driver.h"
#include "libpspp/version.h"
#include "math/random.h"
#include "output/driver.h"
-#include "output/
message
-item.h"
+#include "output/
output
-item.h"
#include "ui/source-init-opts.h"
#include "ui/terminal/terminal-opts.h"
#include "ui/terminal/terminal-reader.h"
#include "ui/source-init-opts.h"
#include "ui/terminal/terminal-opts.h"
#include "ui/terminal/terminal-reader.h"
@@
-62,10
+62,10
@@
static struct session *the_session;
static void add_syntax_reader (struct lexer *, const char *file_name,
static struct session *the_session;
static void add_syntax_reader (struct lexer *, const char *file_name,
- const char *encoding, enum
lex_syntax
_mode);
+ const char *encoding, enum
segmenter
_mode);
static void bug_handler(int sig);
static void fpu_init (void);
static void bug_handler(int sig);
static void fpu_init (void);
-static void output_msg (const struct msg *,
void
*);
+static void output_msg (const struct msg *,
struct lexer
*);
/* Program entry point. */
int
/* Program entry point. */
int
@@
-73,7
+73,7
@@
main (int argc, char **argv)
{
struct terminal_opts *terminal_opts;
struct argv_parser *parser;
{
struct terminal_opts *terminal_opts;
struct argv_parser *parser;
- enum
lex_syntax
_mode syntax_mode;
+ enum
segmenter
_mode syntax_mode;
char *syntax_encoding;
bool process_statrc;
struct lexer *lexer;
char *syntax_encoding;
bool process_statrc;
struct lexer *lexer;
@@
-109,7
+109,7
@@
main (int argc, char **argv)
terminal_opts_done (terminal_opts, argc, argv);
argv_parser_destroy (parser);
terminal_opts_done (terminal_opts, argc, argv);
argv_parser_destroy (parser);
-
msg_set_handler (output_msg, lexer
);
+
lex_set_message_handler (lexer, output_msg
);
session_set_default_syntax_encoding (the_session, syntax_encoding);
/* Add syntax files to source stream. */
session_set_default_syntax_encoding (the_session, syntax_encoding);
/* Add syntax files to source stream. */
@@
-118,7
+118,7
@@
main (int argc, char **argv)
char *rc = include_path_search ("rc");
if (rc != NULL)
{
char *rc = include_path_search ("rc");
if (rc != NULL)
{
- add_syntax_reader (lexer, rc, "Auto",
LEX_SYNTAX
_AUTO);
+ add_syntax_reader (lexer, rc, "Auto",
SEG_MODE
_AUTO);
free (rc);
}
}
free (rc);
}
}
@@
-215,28
+215,35
@@
bug_handler(int sig)
}
static void
}
static void
-output_msg (const struct msg *m_,
void *lexer_
)
+output_msg (const struct msg *m_,
struct lexer *lexer
)
{
{
- struct lexer *lexer = lexer_;
- struct msg m = *m_;
-
- if (m.file_name == NULL)
+ struct msg_location *location = m_->location;
+ if (!location && lexer)
{
{
- m.file_name = CONST_CAST (char *, lex_get_file_name (lexer));
- m.first_line = lex_get_first_line_number (lexer, 0);
- m.last_line = lex_get_last_line_number (lexer, 0);
+ location = lex_get_location (lexer, 0, 0);
+ msg_location_remove_columns (location);
}
}
- m.command_name = output_get_uppercase_command_name ();
+ struct msg m = {
+ .category = m_->category,
+ .severity = m_->severity,
+ .stack = m_->stack,
+ .n_stack = m_->n_stack,
+ .location = location,
+ .command_name = output_get_uppercase_command_name (),
+ .text = m_->text,
+ };
-
message
_item_submit (message_item_create (&m));
+
output
_item_submit (message_item_create (&m));
free (m.command_name);
free (m.command_name);
+ if (m.location != m_->location)
+ msg_location_destroy (m.location);
}
static void
add_syntax_reader (struct lexer *lexer, const char *file_name,
}
static void
add_syntax_reader (struct lexer *lexer, const char *file_name,
- const char *encoding, enum
lex_syntax
_mode syntax_mode)
+ const char *encoding, enum
segmenter
_mode syntax_mode)
{
struct lex_reader *reader;
{
struct lex_reader *reader;