summaryrefslogtreecommitdiff
path: root/src/roff
Commit message (Collapse)AuthorAgeFilesLines
* Copyright update.wl2012-05-241-2/+2
|
* * src/roff/grog/grog.pl (process): Fix .so handling.wl2012-05-241-5/+21
| | | | This does the same as the previous commit.
* * src/roff/grog/grog.sh: Fix .so handling.wl2012-05-241-2/+3
| | | | | | | | See http://lists.gnu.org/archive/html/bug-groff/2012-05/msg00000.html for the report and the bug fix.
* Typo, found by Denis M. Wilson <dmw@oxytropis.plus.com>.wl2012-05-241-2/+2
|
* Fix compiler warnings.wl2012-03-101-2/+2
| | | | | | | | | | | | | | | * src/preproc/html/pre-html.cpp (alterDeviceTo): Avoid ambiguous if-else clause. * src/preproc/grn/main.cpp (sccsid): Comment out. * src/roff/troff/number.cpp (parse_expr) <case '*'>: Add cast. * src/devices/xditview/Makefile.sub (EXTRA_CFLAGS): Add `-Dlint' so that unused static ID arrays don't cause a warning. (Some) problems reported by Bjarni Ingi Gislason <bjarniig@rhi.hi.is>.
* Fix compiler warnings.wl2011-10-312-8/+10
| | | | | | | | | | | | | | | * src/preproc/eqn/main.cpp (do_file), src/roff/troff/env.cpp (environment::print_env), src/roff/troff/mtsm.cpp (statem::display_state): Add syntactical sugar. * src/utils/tfmtodit/tfmtodit.cpp (char_info_word): Use `unsigned char' for all members. * src/devices/grohtml/html-text.cpp (html_text::remove_def): Remove unused variable `q'. * src/devices/grohtml/post-html.cpp (html_printer::lookahead_for_tables): Remove unused variable `left' and `seen_text'.
* Add new output device `gropdf'.wl2011-07-261-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | * font/devpdf/*: New device files for gropdf. * src/devices/gropdf/*: New device. * Makefile.comm (install_dev, uninstall_dev): Handle more subdirectories. * Makefile.in (DEVDIRS, OTHERDIRS, EXTRADIRS): Add directories related to gropdf. * MANIFEST: Updated. * test-groff.in (GROFF_BIN_PATH): Updated. * tmac/Makefile.sub (NORMALFILES): Updated. * tmac/pdf.tmac: New file. * tmac/troffrc: Updated. * doc/groff.texinfo: Document it. * doc/Makefile.in, doc/Makefile.sub (groff_bin_dirs): Udpated. * doc/pic.ms: Updated. * man/groff_out.man, src/devices/grops/grops.man, src/preproc/pic/pic.man, src/roff/groff/groff.man, src/utils/afmtodit/afmtodit.man, src/utils/pfbtops/pfbtops.man: Updated. * contrib/pdfmark/pdfmark.ms: Updated.
* Fix clang warnings.wl2011-07-031-3/+3
| | | | | | | * src/libs/libdriver/input.cpp (odd): Use parentheses. * src/roff/troff/mtsm.cpp (state_set::is_in): Fix parentheses; previous code always tested for bit 0.
* Fix compilation issues with gcc 2.95.wl2011-03-301-0/+3
| | | | | * src/roff/troff/input.cpp (my_input_iterator): Define as an alias for `input_iterator' which is predefined by an old libstdc++.
* [troff] Improve error message.wl2011-03-181-2/+5
| | | | | * src/roff/troff/input.cc (token::delimiter): Improve error message. Suggested by Doug McIlroy <doug@cs.dartmouth.edu>.
* Typo.wl2011-02-231-1/+1
|
* Fix Savannah bug #32301.wl2011-01-311-1/+1
| | | | * src/roff/groff/Makefile.sub (XLIBS): Add $(LIBGNU).
* Update `grog'.wl2011-01-223-71/+20
| | | | | | | * src/roff/grog/{groff.sh,groff.pl}: `groff' now calls `pic' automatically if `grap' or `chem' is used. `chem' has been folded into `groff'. * src/roff/grog/grog.man: Updated.
* Make `groff -G' imply `-p'.wl2011-01-222-1/+13
| | | | | * src/roff/groff/groff.cpp (main): Implement it. * src/roff/groff/groff.man: Updated.
* Integrate `chem' into `groff' (new option -j).wl2011-01-223-12/+23
| | | | | | | | | | * src/roff/groff/groff.cpp (CHEM_INDEX): New constant. (main) ['j']: Add `chem'. (synopsis, help): Updated. * src/roff/troff/pipeline.h (MAX_COMMANDS): Increase to 14. * src/roff/groff/groff.man: Document new command line option. * NEWS: Updated.
* Replace patch from 2010-12-18 with a much faster implementation.wl2010-12-202-262/+54
| | | | | | | | | | | | | | | | | | | * src/roff/troff/node.h (node): Add virtual function `get_break_code'. * src/roff/troff/node.cpp (inter_char_space_node): Remove class completely. (glyph_node::merge_glyph_node): Restore previous version. (break_char_node): Add `prev_break_code' field and update constructors. (node::get_break_code, break_char_node::get_break_code): Implement. (node::add_char): Pass remaining cflags values. (break_char_node::add_self): Use the logic of the now deleted `inter_char_space_node::add_self' function to insert a space node if necessary.
* Speed up access to cflags values.wl2010-12-202-19/+58
| | | | | | | | | | | | | | | | | | | | | | | We now recompute the cflags values for all charinfo objects if `.class' has been called. * src/roff/troff/charinfo.h: Add external references to `class_flag' and `get_flags'. (charinfo): `get_flags' no longer has a return value. (charinfo::overlaps_horizontally, charinfo::overlaps_vertically, charinfo::can_break_before, charinfo::can_break_after, charinfo::can_break_after, charinfo::ends_sentence, charinfo::transparent,, charinfo:ignore_hcodes, charinfo::prohibit_break_before, charinfo::prohibit_break_after, charinfo::inter_char_space): Call global `get_flags' only if necessary. (charinfo::add_to_class): Set `class_flag'. * src/roff/troff/input.cpp (class_flag): New global flag. (charinfo::charinfo): Call `get_flags' member function. (get_flags): New global function which iterates over all entries in the charinfo dictionary. (charinfo::get_flags): Set `flags' directly.
* Protect `.class' against cyclic nesting.wl2010-12-192-10/+34
| | | | | | | * src/roff/troff/charinfo.h (charinfo::contains): Add optional boolean argument. * src/roff/troff/input.cpp (define_class, charinfo::contains): Check for cyclic nesting.
* Improve CJK support with new values for `.cflags'.wl2010-12-183-19/+286
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch introduces three new values to `.cflags': don't break before character: 128 don't break after character: 256 allow inter-character break: 512 They are handled differently if compared to other cflags values: (1) hcode values are completely ignored (2) similar to kern values, and contrary to the other cflags values, troff looks at pairs of characters to decide whether a break gets inserted A yet-to-be-written patch should add inter-character spacing if those flags are active; currently, only zero-width breakpoints are inserted. * src/roff/troff/charinfo.h (charinfo): Change type of `flags' to `int'. Update callers accordingly. New enum values `DONT_BREAK_BEFORE', `DONT_BREAK_AFTER', and `INTER_CHAR_SPACE'. New member functions `prohibit_break_before', `prohibit_break_after', and `inter_char_space'. * src/roff/troff/input.cpp: Updated. * src/roff/troff/node.cpp (inter_char_space_node): New class similar to kern_pair_node, collecting charinfo entities with the abovementioned cflags values. (break_char_type): Add new enum values. (glyph_node::merge_glyph_node): Handle abovementioned cflags values and emit an `inter_char_space_node' if necessary. * tmac/ja.tmac: Use new cflags values. * doc/groff.texinfo, NEWS, man/groff_diff.man: Document new values.
* Fix compilation problem.wl2010-12-152-8/+8
| | | | | | | | This issue happens with gcc 4.2.4. * src/roff/troff/node.cpp (node::~node): Move to... * src/roff/troff/node.h: Here. This ensures that the inline member function is publicly visible.
* Remove unused code.wl2010-12-152-7/+1
| | | | | * src/roff/troff/node.cpp, src/roff/troff/node.h (space_node::space_node): Remove unused constructor.
* Use enum to increase readability.wl2010-12-151-7/+13
| | | | | * src/roff/troff/node.cpp (break_char_type): New enum. (break_char_node::add_self, node::add_char): Use it.
* Add wide character support to grotty.wl2010-12-132-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a huge patch, mainly by adding the gnulib infrastructure in a separate directory tree (in `src/libs/gnulib/lib') for its `wcwidth' module. However, the actual changes to native groff source files are just a few lines. * Makefile.comm (INCLUDES): Updated. (LIBGNU): Define. * Makefile.in (NOMAKEDIRS): Updated. (GNULLIBDIRS): Define. (DISTDIRS): Add GNULLIBDIRS. ($LIBDIRS): Depend on GNULLIBDIRS. ($GNULLIBDIRS): New target. * src/libs/libgroff/font.cpp (font::get_width, font::load) [is_unicode]: Use `wcwidth'. * src/roff/troff/Makefile.sub (XLIBS): Add LIBGNU. * src/roff/troff/input.cpp (main): Set LC_CTYPE. * src/devices/grotty/Makefile.sub (XLIBS): Add LIBGNU. * src/devices/grotty/tty.cpp (main): Set LC_CTYPE. * src/libs/gnulib/*: New files. The import was done as follows: . Call gnulib-tool --create-testdir \ --dir=src/libs/gnulib \ wcwidth to get a testbed. . Manually move directories src/libs/gl{lib,m4} to src/libs/{lib,m4}, and do s/gllib/lib/ and s/glm4/m4/ everywhere to `convert' the gnulib testbed to a standard gnulib configuration as maintained by gnulib-tool. . Call gnulib-tool --add-import \ --dir=src/libs/gnulib \ wcwidth to update everything.
* `.class' must not emit empty lines.wl2010-12-131-0/+2
| | | | | * src/roff/troff/input.cpp (define_class): Add missing `skip_line' calls.
* Implement support for character classes.wl2010-12-132-10/+216
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch uses standard C++ headers, contrary to the rest of groff. Ideally, everything in groff should be updated to do the same. * src/include/font.h (glyph_to_unicode): New function. * src/libs/libgroff/font.cpp (glyph_to_unicode): Implement it. (font::contains, font::get_code): Use it. * src/roff/troff/charinfo.h: Include <vector> and <utility>. (charinfo): New members `ranges' and `nested_classes'. New member functions `get_unicode_code' and `get_flags'. New member functions `add_to_class', `is_class', and `contains'. (charinfo::overlaps_horizontally, charinfo::overlaps_vertically, charinfo::can_break_before, charinfo::can_break_after, charinfo::can_break_after, charinfo::ends_sentence, charinfo::transparent,, charinfo:ignore_hcodes): Use `get_flags', which handles character classes also. * src/roff/troff/input.cpp (char_class_dictionary): New global variable. (define_class): New function. (init_input_requests): Register `class'. (charinfo::get_unicode_code, charinfo::get_flags, charinfo::contains): Implement it. * NEWS, doc/groff.texinfo (Character Classes), man/groff_diff.man, man/groff.man: Document it.
* [groff] Don't use prefix for preconv.wl2010-09-191-4/+4
| | | | | | Reported by Dorai Sitaram <ds26gte@yahoo.com> * src/roff/groff/groff.cpp (main): Fix it.
* * src/roff/troff/node.cpp (make_node): Adding missing `%'.wl2010-06-281-1/+1
| | | | | Reported in http://lists.gnu.org/archive/html/bug-groff/2010-06/msg00022.html
* s/legalize/legalese/ where appropriate.wl2010-06-021-3/+3
| | | | Suggested by Krzysztof Zelechowski <giecrilj@stegny.2a.pl>.
* Don't use obsolete intermediate output command `F'.wl2010-05-281-2/+2
| | | | | | | Reported by Krzysztof Zelechowski <giecrilj@stegny.2a.pl> * src/roff/troff/nodes.cpp (troff_output_file::really_put_filename): Replace `F' command with `x F'.
* Make patterns with uppercase letters work.wl2009-12-311-1/+1
| | | | | | | | Problem reported by Bjarni Ingi Gislason <bjarniig@rhi.hi.is>. * src/roff/troff/input.cpp (init_hpf_code_table): Use `cmlower'. * doc/groff.texinfo, man/groff_diff.man: Update documentation of `hpfcode' request.
* Fix double frees and memory leaks.wl2009-11-243-8/+12
| | | | | | | | * src/roff/troff/env.cpp (environment::make_tag): Use local object. * src/roff/troff/input.cpp (input_stack::check_end_diversion): Free `diversion_state' here. (interpolate_arg): Fix memory leaks. * src/roff/troff/mtsm.cpp (mtsm::pop_state): Don't free `sp->state'.
* * */*.cpp: Replace `printf(string);' with `printf("%s", string);'.wl2009-11-201-1/+1
|
* Improve formatting.wl2009-09-091-2/+6
|
* * src/roff/groff/groff.man: Point to troff(1) for `-w' and `-W'.wl2009-09-091-0/+2
|
* [troff]: Fix hyphenation problem with kerned letters.wl2009-09-081-1/+1
| | | | | | | | | Problem reported by Steve Izma <sizma@golden.net>. * src/roff/troff/node.cpp (kern_pair_node::add_discretionary_hyphen): Compute `tf' using the first node, `n1'. `n2' might be another kerning node, and the `get_tfont' member function isn't defined then.
* Accept \0 and friends within \o.wl2009-05-072-11/+35
| | | | | | | | | | | | | | Reported by Doug McIlroy <doug@cs.dartmouth.edu>. * src/roff/troff/token.h (token): Add TOKEN_HORIZONTAL_SPACE enumeration value together with `horizontal_space' member function. Add `do_overstrike' as a friend. * src/roff/troff/input.cpp: Use TOKEN_HORIZONTAL_SPACE for \0, \|, \^, and \h. Update all affected places. (do_overstrike): Remove `static' attribute. Accept all escapes which produce a fixed horizontal space.
* Fix a memory leak in troff for -Thtml.wl2009-04-102-5/+10
| | | | | | | Reported by Urs Eggli <Urs.Eggli@zuerich.ch>. * src/roff/troff/node.h (node::~node): Move to... * src/roff/troff/node.cpp: Here. Free `state' and `push_state'.
* Add a new `file' warning category.wl2009-02-213-4/+15
| | | | | | | | | | | * src/roff/troff/troff.h (warning_type): Add WARN_FILE. * src/roff/troff/input.cpp (DEFAULT_WARNING_MASK): Include WARN_FILE. (warning_table): Add `file' category. (macro_source): Convert error on missing macro file to a warning. * NEWS, doc/groff.texinfo (I/O, Warnings), man/groff_diff.man, src/roff/troff/troff.man: Document new warning category.
* Implement a leading spaces macro request, `lsm', in analogy towl2009-02-141-6/+26
| | | | | | | | | | | | | | | | | `blm'. Implement two new number registers, \n[lsn] and \n[lss], which hold the number of spaces and the horizontal space, respectively, which would be inserted if the macro registered by `lsm' wasn't called. * src/roff/troff/input.cpp (leading_spaces_macro_name, leading_spaces_number, leading_spaces_space): New global variables. (leading_spaces_macro): New function. (process_input_stack) <token::TOKEN_SPACE>: Handle `lsm'. (init_input_requests): Register `lsm', \n[lsn], and \n[lss]. * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo (Leading Spaces Traps): Document new requests and registers.
* * */Makefile.* (CLEANADD, CLEANNOTSRCDIRADD, CLEANDIRADD): Renamedgroff-1_20_1wl2009-01-082-2/+2
| | | | | to... (MOSTLYCLEANADD, MOSTLYCLEANNOTSRCDIRADD, MOSTLYCLEANDIRADD): This.
* Update FDL 1.1 to FDL 1.3.wl2009-01-052-6/+6
|
* Update copyright year.wl2009-01-0532-37/+43
|
* * */*: Update GPL2 to GPL3.wl2009-01-0428-143/+108
|
* * src/roff/troff/TODO: Mention local variables.wl2009-01-041-0/+2
|
* * src/preproc/tbl/main.cpp (process_format): Rename `x' and `X' towl2008-10-184-8/+6
| | | | | | | `m' and `M', respectively. Sort entries in `switch' block. * src/preproc/tbl/tbl.man: Updated. Sort key entries; other minor improvements.
* * src/roff/troff/input.cpp (do_suppress): Make \O[3], \O[4], andwl2008-10-041-2/+6
| | | | | \O[5] non-transparent w.r.t. beginning-of-line recognition (similar to the other \O variants).
* * src/devices/grops/grops.man, src/roff/troff/troff.man,wl2008-10-031-6/+11
| | | | | | src/preproc/soelim/soelim.man: Correct documentation of -I switch. Reported by Larry Kollar. Other minor formatting issues.
* Restore behaviour of \$0 if a macro is called with string syntaxwl2008-09-301-1/+20
| | | | | | | | (problem caused by change on 2008-09-29). * src/roff/troff/input.cpp (input_iterator, input_stack, macro_iterator): Add `get_macro_name' member function. (interpolate_string): Use it.
* Make \\*[xxx]\\ within a macro (with `xxx' a macro too) work aswl2008-09-292-9/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | expected. Without the patch, .de aaa \\*[bbb]\\ . tm \\$* .. .de bbb . shift .. .aaa 1 2 3 prints `2 3' instead of `1 2 3'. * src/roff/troff/input.cpp (input_iterator, input_stack, macro_iterator): Add `get_arg_list' member function. (macro): Add `is_a_string', `is_string', and `clear_string_flag' members. Update constructors and operators. (arg_list): Add copy constructor. (macro_iterator): Add optional argument to constructor to indicate whether arguments shall be inherited from calling macro. (interpolate_string): If string argument is a macro, push a macro iterator on the stack. (do_define_macro): Call clear_string_flag if macro data contains a newline. * src/roff/troff/request.h: Updated.
* If a macro is called as a string, inherit value of \n[.br] from thewl2008-09-281-1/+5
| | | | | | | | | | | | caller. This is useful for `trace.tmac'. * src/roff/troff/input.cpp (string_iterator): New members `with_break' and `get_break_flag'. (string_iterator::string_iterator): Updated. * doc/groff.texinfo: Improve documentation of \$0 and string syntax calling of macros. Document behaviour of \n[.br] within strings.