summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2010-05-12 16:46:28 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2010-05-12 16:46:28 +0000
commit8a9955ded5b3519ff94525c0fb33216b517e64c7 (patch)
tree37ff1c7d61ecf008592578fb035e3bb7407ea139
parent44eeeed4996450a9686898b0c9debcd16e456667 (diff)
downloadmandoc-8a9955ded5b3519ff94525c0fb33216b517e64c7.tar.gz
mandoc-8a9955ded5b3519ff94525c0fb33216b517e64c7.tar.zst
mandoc-8a9955ded5b3519ff94525c0fb33216b517e64c7.zip
End-of-sentence spacing for -man -Tascii.
-rw-r--r--man.c25
-rw-r--r--man.h3
-rw-r--r--man_term.c5
3 files changed, 30 insertions, 3 deletions
diff --git a/man.c b/man.c
index 7a41b1fb..99804406 100644
--- a/man.c
+++ b/man.c
@@ -1,4 +1,4 @@
-/* $Id: man.c,v 1.64 2010/05/08 10:25:27 kristaps Exp $ */
+/* $Id: man.c,v 1.65 2010/05/12 16:46:28 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -420,6 +420,29 @@ man_ptext(struct man *m, int line, char *buf)
if ( ! man_word_alloc(m, line, 0, buf))
return(0);
+ /*
+ * End-of-sentence check. If the last character is an unescaped
+ * EOS character, then flag the node as being the end of a
+ * sentence. The front-end will know how to interpret this.
+ */
+
+ assert(i);
+
+ switch (buf[i - 1]) {
+ case ('.'):
+ if (i > 1 && '\\' == buf[i - 2])
+ break;
+ /* FALLTHROUGH */
+ case ('!'):
+ /* FALLTHROUGH */
+ case ('?'):
+ m->last->flags |= MAN_EOS;
+ break;
+ default:
+ break;
+
+ }
+
descope:
/*
* Co-ordinate what happens with having a next-line scope open:
diff --git a/man.h b/man.h
index 856e4192..ca61fae2 100644
--- a/man.h
+++ b/man.h
@@ -1,4 +1,4 @@
-/* $Id: man.h,v 1.28 2010/05/09 21:19:42 kristaps Exp $ */
+/* $Id: man.h,v 1.29 2010/05/12 16:46:28 kristaps Exp $ */
/*
* Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -93,6 +93,7 @@ struct man_node {
int flags;
#define MAN_VALID (1 << 0)
#define MAN_ACTED (1 << 1)
+#define MAN_EOS (1 << 2)
enum man_type type;
char *string;
struct man_node *head;
diff --git a/man_term.c b/man_term.c
index 7223fab2..fd88e2df 100644
--- a/man_term.c
+++ b/man_term.c
@@ -1,4 +1,4 @@
-/* $Id: man_term.c,v 1.62 2010/05/10 08:31:41 kristaps Exp $ */
+/* $Id: man_term.c,v 1.63 2010/05/12 16:46:28 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -842,6 +842,9 @@ print_man_node(DECL_ARGS)
if ( ! (MAN_NOTEXT & termacts[n->tok].flags))
term_fontrepl(p, TERMFONT_NONE);
}
+
+ if (MAN_EOS & n->flags)
+ p->flags |= TERMP_SENTENCE;
}