Commit graph

141 commits

Author SHA1 Message Date
Charlie Gordon
1beb610d76 Update glyph width methodology
- rename unicode_tty_glyph_width() as qe_wcwidth()
- compute tables for qe_wcwidth() with tools/unicode_gen.c
  from the latest Unicode version
- add qe_wcwidth_variant() to determine if terminal may use
  incorrect width for a given glyph.
- reposition TTY cursor for glyphs with ambiguous width
- remove unicode_width.h
- add wcwidth.h and wcwidth.c generated by tools/unicode_gen.c
- update tools/unicode_gen.c and tools/unitable.c
- determine Unicode version support at start time
  displayed by describe-screen command
- display code point width and variant in what-cursor-position command (C-x ?)
- bumped VERSION to 5.3.4x
2022-09-27 22:30:05 +02:00
Charlie Gordon
bd50376780 Various improvements
- add charset.h
- add tools/unitable.c to compute unicode_width.h
- add tools/unicode_gen.c to compute more unicode tables
- use Unicode 15.0.0
- add rules to compute width tables from Unicode tables and TTY
- move basic definitions from util.h to cutils.h
- use CONFIG_SESSION for session support (undefined if CONFIG_TINY)
- define CompleteFunc and CT_xxx flags for completion functions
- pass CompleteFunc to xxx_complete() functions
  this allows more generic implemetation, without including qe.h
- rename fill_border() as fill_window_slack() for readability
- add QELEVEL environment variable to detect recursive invocation
- use stricter parser for load_ligatures()
- bump VERSION to 5.3.4u
2022-09-19 15:16:59 +02:00
Charlie Gordon
b8f81236cd Split util module
- split color/css functions from util.c into color.c
- add util.h and color.h for declarations
- util.c no longer includes qe.h
- move get_clock_ms() and get_clock_usec() to unix.c
- remove unused QString functions
- bump VERSION to 5.3.4s
2022-09-15 11:28:34 +02:00
Charlie Gordon
a402c88341 Start a Quick Emacs Manual
- add tools/scandoc utility to extract doc comments from source code
- add qe-manual.c documentation framework
- add qe-manual.md target for convenient repository documentation
- document some utility functions
- add strtod_c(str, endp) for const strings
- add Makefile target qe-manual.md
- bump VERSION to 5.3.4r
2022-09-13 15:29:40 +02:00
Charlie Gordon
e7c7a14400 Improve qescript parser and evaluator
- improve operator lexer: produce token and precedence on 1 step
- merge parser.c and qescript.c

Fix other bugs
- close display before freeing memory in --free-all
- free TTYState in tty_dpy_close()
- free VarDef memory in --free-all
- fix crash bug on --free-all due to duplicating ModeDef structures

Improve variable handling:
- move do_describe_variable() to variable.c
- add var_alloc and str_alloc flags in VarDef to fix `end` hack
- remove ugly kludge to detect allocated strings
- type variables retrieved from environment
- free variable data on --free-all

- bump VERSION to 5.3.4m
2022-09-05 20:27:48 +02:00
Charlie Gordon
e1b513d5a8 Default to is_player mode: qe starts dired when invoked with no arguments
- add is-player global variable. Default to dired when invoked with no arguments
  Set to 0 in ~/.qe/config to prevent this and show *scratch*
- merge modes/list.c into qe.c
- bumped version to 5.3.4a
2022-08-28 00:40:58 +02:00
Charlie Gordon
f85805f683 Improved VT100 emulation in shell buffers
- add screen_top to avoid recomputing from buffer contents
- fix getline behavior on very long lines in shell buffer
- add LF bindings to run qemacs in lldb session
- qe_term_get_pos() returns screen start
- handle \t and wide chars inside shell buffers for xy positioning
- split qe_term_goto_pos() from qe_term_goto_xy()
- add flags in qe_term_goto_pos():
  TG_RELATIVE_COL: column number is relative to offset position
  TG_RELATIVE_ROW: row number is relative to offset position
  TG_RELATIVE: column and/or row is relative
  TG_NOCLIP: do not clip destx/desty coordinates
  TG_NOEXTEND: do not modify buffer to reach destination
- add qe_term_fix_wrap() to break wrapping lines
- fix qe_term_goto_tab() behavior on long lines
- fix qe_term_skip_lines() to handle wrapping lines
- handle UTF-8 for lastc and repeat graphics character
- bump VERSION to 5.3.3e
2022-08-26 12:30:29 +02:00
Charlie Gordon
8df349aeb3 Reduce tiny build
- remove command description strings in tiny build
- reorder clang submodes
- bumped version to 5.3.3c
2022-08-19 22:38:38 +02:00
Charlie Gordon
475b50458d Remove CONFIG_INIT_CALLS hack
- use portable init_all_modules() on all architectures
- remove initcalls options in configure
- output Qemacs VERSION and CC version in configure
- remove qeend.c
- bumped version to 5.3.2a
2022-08-17 22:04:02 +02:00
Charlie Gordon
9e6c81d65e Improve build process
* remove modules.txt hack
* generate target specific xxx_modules.c source file in OBJS directory
* use same OBJS directory for terminal and X11 object files
* no longer recompile qe.c when any other source file changes
* bumped version to 5.3.1h
2022-08-12 11:37:02 +02:00
Charlie Gordon
ec01d90a76 Makefile: only create object and binary file directory if making targets 2022-08-11 12:43:35 +02:00
Charlie Gordon
d052ab31ff Fix many compilation warnings for clang -Weverything
- made some local objects static
- fix many const cast issues
- fix comma operator warnings
- add const correct strtol_c(), strtoll_c(), strtold_c()
- add unconst(t) to override const removal warnings
- comment VLAs and flexible arrays
- use get_basename_offset() to enable const correct
  get_basename() and get_basename_nc()
- use get_extension_offset() to enable const correct
  get_extension() and get_extension_nc()
- always include config.h
- use size_t for some size arguments:
  umemmove(), umemcpy(), umemcmp(), qe_memicmp()
- add qe-doc.info and qe-doc.pdf targets
- fix shadowing bug in buf_write: used tor return 0 instead of byte count
- bumped version to 5.3.1e
2022-08-10 18:50:19 +02:00
Charlie Gordon
87bfb0d046 Fix packaging issues
- remove FILES variable in Makefile: no longer invoke git implicitly in make
- bumped version to 5.3.1
2022-08-04 12:29:16 +02:00
Charlie Gordon
fda88cdb42 Miscellaneous fixes, add Salmon mode
* more todos
* add Salmon programming language
* disable -Wno-unused-result on OpenBSD
2021-04-18 21:03:45 +02:00
Charlie Gordon
2450fae550 echo config flags in terse output 2021-02-01 20:41:00 +01:00
Charlie Gordon
da22ee7f3b Improve build process
- factorize target rules,
- use recursion for different targets
- make debug versions for all targets
- add help target
2021-02-01 20:38:29 +01:00
Charlie Gordon
e8fc3b130d tidy up module list 2021-01-26 09:39:32 +01:00
Charlie Gordon
1af2af7d31 fix splint target 2020-11-23 00:00:49 +01:00
Charlie Gordon
9d3c15e85a fix splint target 2020-11-22 23:53:07 +01:00
Charlie Gordon
02f647d02a Fix t1qe target rules 2020-11-21 13:17:39 +01:00
Charlie Gordon
cbe325b000 Split more languages from lang/extra-mode.c:
- add asm inifile postscript modes as separate modules
2020-11-20 23:44:36 +01:00
Charlie Gordon
0212e35f05 Split more languages from lang/extra-mode.c:
- add agena coffee elixir erlang julia ocaml modes as separate modules
2020-11-19 23:54:59 +01:00
Charlie Gordon
3b4f3c9f48 Split more languages from lang/extra-mode.c:
- add ada basic fortran haskell lua pascal python ruby smalltalk sql
  vimscript modes as separate modules
2020-11-18 23:20:57 +01:00
Charlie Gordon
66eef8269b Split exotic languages from lang/extra-mode.c:
- add falcon magpie openscad tiger wolfram modes as separate modules
2020-11-17 23:42:40 +01:00
Charlie Gordon
b26563f74f Add odin-mode and fix some language issues
- add icon programming language
- compile rust, swift, icon, groovy and virgil as separate modules
- simplify Makefile accordingly
- handle nested block comments in koka, scala, wren and v modes
2020-11-15 22:07:23 +01:00
Charlie Gordon
46d9be3442 Reorganize repository tree
- move language syntax handling to `lang` directory
- move other modes to `modes` directory
- move tools to `tools` directory
- compile tools to `bin` directory
- bump version to 5.3alpha
- remove duplicate node names in qe-doc
- update Makefiles
2020-11-11 19:31:07 +01:00
Charlie Gordon
a5de44ba69 simplify tar and archive targets, remove .filelist 2020-11-10 00:30:45 +01:00
Charlie Gordon
ed14c58bef Update mapping tables
- fix cptoqe.c for APPLE mapping tables
- get KOI8-U.TXT from unicode to replace koi8_u.cp
- update mapping files from unicode repository
2020-11-07 17:51:16 +01:00
Charlie Gordon
e13fcfb543 remove trailing blanks 2020-10-21 15:01:52 +00:00
Charlie Gordon
b42b318a81 renamed qscript.c as qescript.c 2020-10-20 08:48:20 +00:00
Charlie Gordon
d0b9f3dad4 bumped copyrights on modified files 2020-10-17 21:09:49 +00:00
Charlie Gordon
2fa0120472 add more advanced scripting language parser: qscript 2020-10-14 23:32:03 +00:00
Charlie Gordon
aecdcf067c remove obsolete dependencies 2020-10-08 22:32:56 +00:00
Charlie Gordon
4e5435056d add colorizers for txl, nim, rebol, elm, jai, ats 2020-10-02 21:32:29 +00:00
Charlie Gordon
008751dbf9 add qe_debug target: compiled with -O0 2019-03-27 07:41:54 +00:00
Charlie Gordon
da7db82cb7 updated copyrights, changed version to 5.0beta 2018-04-11 13:46:03 +00:00
Charlie Gordon
165f558e02 add filelist and archive Makefile target 2018-04-11 13:37:39 +00:00
Charlie Gordon
18900e7573 add filelist and archive Makefile target 2018-04-11 13:37:07 +00:00
Charlie Gordon
7da09b1099 add recent working files to archive target 2018-04-09 14:41:38 +00:00
Charlie Gordon
478a9d9f69 graphics: add graphics viewer for popular image formats
- use stb_image.h to display bmp, jpeg, pmg, gif, targa and other
  popular image formats
- disable text based image converters
2017-05-15 09:58:02 +00:00
Charlie Gordon
a6de322430 build: add generic rule to make host utility executables 2017-05-10 15:21:46 +00:00
Charlie Gordon
c36cccd4bf build: group all intermediary targets in .objs directory
- each architecture has a specific subdirectory
- object files for qe, xqe and tqe are each in an arch specific subdirectory
- libraries are generated in .objs with an arch specific name
2017-05-08 10:15:43 +00:00
Charlie Gordon
4bdbd8bd9e build: use target specific size utility via SIZE configuration variable (F.Revol) 2017-05-07 06:08:32 +00:00
Charlie Gordon
dbc17518c2 tests: add fractal test functions
- improve mandelbrot shell script
- add fractal.c: a fractal generator and navigator that can
  be used as a terminal stress test.
- add fractal-mode for easy fractal navigation and zooming
  with key bindings.
- try it out with C-h m SP / SP / SP ...
2017-04-27 23:04:10 +00:00
Charlie Gordon
5d463eb5ad styles: improve consistency
- rename font styles QE_STYLE_xxx to QE_FONT_STYLE_xxx
- rename font family QE_FAMILY_xxx to QE_FONT_FAMILY_xxx
- improve tests/16colors.pl: display bold italics combination
- improve tests/color-spaces.pl: compare true color and palette dumps
- add colortest target in Makefile to produce various color patterns
2017-04-11 06:46:13 +00:00
Charlie Gordon
7a8cca8232 haiku: merge patch by Francois Revol to compile with gcc5 2017-03-28 12:53:15 +00:00
Charlie Gordon
91d842618f modes: add less mode for .less files
- rename all popup related mode functions from less_* to popup_*
- add less-mode for .less files (preprocessor for css files)
- add FILE to list of C types
2017-03-25 18:00:52 +00:00
Charlie Gordon
26fd39d9e0 unicode: improve support for wide and combining code points
- qe_isaccent() recognises all combining code points (to be refined)
- add computer generated width table unicode_width.h
- display difference in hex in compare-windows to distinguish
  space and nbsp, normal and combined form for accented letters.
- display multiple combining code points in what-cursor-position (C-x =)
- attach combining code points to preceeding space in display_char_bidir
- handle accents specificaaly in flush_fragment
- handle combining code-points in screen backstore via indirection table
  this transient table can be inspected via describe-screen
2017-03-16 09:16:31 +00:00
Charlie Gordon
b28a387889 build: fix X11 rules on OpenBSD
- applied patch by Han Boetes
- scan standard places for X11 includes and libraries
- do not link with -ld on OpenBSD
2016-12-28 07:39:45 +00:00
Charlie Gordon
f74938305c build: improvements
- generate libqhtml object files in target dependant directories
- make multiple targets coexist
- fix .cvsignore file
- fix clean and distclean targets
2016-12-27 11:40:40 +00:00