CHANGES FILE
------------

Please open a discussion on GitHub to comment on these and other feature requests.



Ideas for v0.8.6
----------------

+ Add is_deleted flag on sheets that are deleted. So ents have a chance to update its references to that sheet.
Then rebuild graph.
+ arv should have priority over scimrc.
+ rethink overlap. it shows incorrectly if text does not fit in the current LINE
+ user customizable UI header (bar)
+ modify search procedure. highlight matches
+ yank.c functions should receive yanklist pointer as parameter, rather than use yanklist global variable.
this could allow future use of registers to copy to and paste from.
+ registers for yanking
+ use yanklist for added/removed in undo?


***********
v0.8.5
05/05/2025: fixed ‘zip_error_to_str’ deprecated message
            changed do_autobackup definition
            FIX in paste of cells transposed. Destination position was calculated wrong.
            fix spurious circular deps across sheets (issue #903) thanks to DHMike57
12/02/2025: Add theme files into Makefile #930
            PR 921 - fix invalid chars in file name cause segfault (issue #922)
            PR 931 - fix issue #928 - Reproducible segfault reading python-written xlsx
11/11/2024: PR 909 - fix spurious error message with @IF command (issue #910)
11/11/2024: PR 911 - fix memory leak and segfault in @replace (issue #912)
26/11/2024: PR 920 - fix in replace and sevaluate (issue #919)
26/11/2024: PR 917 - fix range not updating with getent (issue #918)
16/10/2024: PR 896 - work on issue 813 - fix in subtottal
16/10/2024: PR 898 - work on issue 897 - fix in lua evaluation
16/10/2024: PR 900 - work on issue 899 - minor modification in @dts validation
16/10/2024: PR 902 - work on issue 901 - keep sheet/cursor position when saving file
16/08/2024: PR 888 - replace all /bin/bash with a unix agnostic /usr/bin/env bash
16/08/2024: PR 887 - explicit left markdown alignment


***********
v0.8.4
06/12/2023: :datefmt does not remove text content anymore allowing future edition - work on item 3 of issue 769
06/11/2023: avoid changing cell's color after :format - issue 819
06/11/2023: avoid blanking cell's text content after :datefmt - issue 769
06/10/2023: fix number 2 of issue 769
06/02/2023: fix configuration variable name in file.c: import_delimited_to_text
06/01/2023: restore transpose
06/01/2023: added input_edit_mode setting PR 626
06/01/2023: work on issue 708: xlsx file import
06/01/2023: Fix issue 784: get row number and column or cell that calls a LUA script with PR 814.
06/01/2023: merged PR 783 that gets rid of issue 778 - changed load_rc load_file order.
06/01/2023: merged PR 776
06/01/2023: merged PR 789
06/01/2023: fix issue in csv import - 816
02/03/2024: fix issue 868
17/05/2024: fix missing include
20/05/2024: PR 871
02/07/2024: Modify Makefile to work with brew's ncurses
10/07/2024: PR 880 / 861
16/07/2024: work on issue 878
23/07/2024: work on issue 875 / 879





***********
v0.8.3

New stuff
---------
**Added Multi Sheet support
added :newsheet, :nextsheet, :prevsheet :delsheet COMMAND_MODE commands
`gt` and `gT` commands in NORMAL_MODE are now used for moving between sheets
added new colors types SHEET, CURRENT_SHEET and FILENM
.sc file saving with multiple sheets
loading xlsx with multiple sheet
saving xlsx with multiple sheets
add :renamesheet COMMAND_MODE command
created movetosheet command in gram.y, to be used internally or in scripts when saving
and loading files.
reeval in multiple sheets: graph now should keep track of the different sheets
             reference cells from different sheets in formulas: ={"Sheet2"}!A2
Save triggers in files
** Added automated tests
C command in EDIT MODE

+ Added ignore_hidden configuration variable to address
  #674 #653
  With this hidden rows can be ignored when exporting spreasheets.
  Useful when exporting the result of a filter.
  This will also be honored when copy/pasting a range that have hidden rows in it.

PR 725: added 'default_open_file_under_cursor_cmd' configuration value that can be set at runtime

Changes
-------
+ added more detailed error in gram.y:yyerror
+ Adapt string and number search for multisheet
+ marks now considers sheet. We could have mark A in Sheet 1, and mark B on Sheet 2..
  modified tick() and fix_marks()
Renamed auto_justify to auto_fit
`gt` command of NORMAL_MODE renamed to `go`
Removed --sheet and --filename_with_mode configuration variables
UNDO now saves reference to the sheet where the action took place.
+ copy_to_undostruct() now keep in added/removed list struct ent_ptr *
  (that knows of sheets), rather than struct ent *.
Copy alignment of strings when doing `Pf`.
 undo: save maxrow, maxcol, modflg values before and after changes, so they can be restored after undo/redo actions
Modified yanklist to be struct ent_ptr list, rather thant struct ent list.
Ents_that_depends_on_list now takes ent_ptr rather than struct ent * as parameter
Backslash double quotes in cpaste. Issue 574.
Do not free ents of sheets when deleting a sheet manually (only at exit).  just mark them as deleted.
Inform old value and new value when changing configuration variable
UI optimizations
Store offscr_sc values when saving sc files. Restore them when loading sc files
Simplify clipboard code
xlsx.c: Convert to uppercase before replacing functions
Added D command on EDIT mode.
ESC in EDIT_MODE also confirm changes.
Reeval when pasting from clipboard and autocalc is set
Adjust Makefile to have logic for clipboard commands on MacOS

Fixes
-----
** fixed building warnings
** fix in calc_mobile_cols()
** fix not updating graph correctly after yanking cells with references -> Pc -> undo.
   It could also segfault on ocassions as well. Added test5 and test6 for this.

Issue #568: handle '>' and '<' on mappings.
Issue #569: fix invalid read/write/segfault when deleting column.
            Added test8 and test9 for this.

fix horizontal scroll when editing cells with long strings (wider than screen)
Avoid reading passed maxcols maxrows when shifting left or up over last sheet column/row.
fix in Pv when pasting over same place where data was yanked.
fix in paste_yanked_ents: calloc didnt count that yanked cells could share dependencies.
fix a bug when refreshing grid when autowrap operates. Issue 578.
Avoid segfault in autobackup when no current file is set.
fix in cw dw c$ d$ commands of EDIT_MODE
fix leak in del_selected_cells
fix when using C-r in INSERT_MODE
fix arguments reversed on sc.colrow2a
fix in delete_filters that caused SEGFAULT. Issue 637.
fix in unformat. call to copy_to_undostruct with wrong parameters.
fix swapped arguments on lsetform
added string functions to dep graph
Issue #697: do not allow to override nocurses config variable
fix #694: csv import and export / LaTex export
fix #700: '{' '}' normal mode commands reset cmd_multiplier


***********
v0.8.2

Changes
-------

+ Improved yank and undo alloc'ing. Malloc as much we need from start in a long batch and avoid small mallocs.

+ Changed the way lua scripts are referenced in formulas. Now they are input as any other string formula,
    like this: \"@lua("script_name.lua", 1)
    being 1 if the reference should be added to the depgraph or not, making it evaluated just once or
    every time the depgraph is evaluated.
    NOTE that if set to 0 and the cell is referenced by another cell, it will be executed nonetheless.

+ Added new exec_lua configuration variable.

+ Rows now can have height higher than one LINE. See fj and fk in normal mode or :formatrow in command mode.

+ Wrap cell content. new autowrap config value. works when nooverlap and notruncate are set.

+ Open URL or file specified on cell (PR 401)

+ Import mkd files

+ Multiple frozen rows/columns (fr / fc in normal mode)

Added mapping_timeout configuration variable with a default value of 1500ms (used to be a fixed value of 800ms).
Added mouse support in insert and command mode. The selection of a cell gets copied to inputbar.
Added command_timeout configuration variable.
handle hidden rows/cols in undo/redo of ir/ic/dr/dc
Added backwards search with '?'
Restore \\* from old SC. \\{char} fills the cell with n occurrences of {char} to complete its width
Store frozen rows and cols when saving file
Added :formatcol command (handling its undo as well)
Added :formatrow command (handling its undo as well)
Added undo of freeze row and col
Handle \n in cell input, and with autowrap
Handle undoing changes in row height produced by string input

Changed input bar from window to pad: permits entering string longer than COLS.

@count counts cells with strings as well, and not just with numbers.

Handle entering a label after :datefmt for datetime value edition.

New dracula / papercolor themes.

+ Added EvalRange() so that the graph is not evaluated entirely all the time.
    Replaced 'EvalAll' with 'EvalRange'.
    Removed unneeded parameters on EvalJustVertex"
    Added eval_order in EvalRange and rebuild_graph.

Added @evaluate / @sevaluate functions

Handle @nval dependencies.
Handle @mycol/@myrow calls during startup when no EvalJustOneVertex is yet called

Added @getent (FR issue #451)

+ The saving format for :w command would be according to current file format. #493
modified savefile() of file.c to check current file format before saving a file.
Keep consistent with other format such as csv and save the file with the same format as current file.

Added HELP_HIGHLIGHT definition color for help page.

Renamed GRID_PAIR to GRID_EVEN in color.c.

UNDO of :fsum is handled by let.

calc_offscr_rows/cols rewriten and renamed to calc_mobile_rows/cols

Fixes
-----
Fix old sc bug - issue #371
Fix when saving sc files of cells that has some string expressions - issue #541
Fix leak in nval.
Fix Issue #372.
Free lua memory at exit.
Fix when saving marks in file after importing xlsx file and saving it in sc format.
EXPR and NUMBER colors were overloaded by STRING color #546
Fix markdown export when empty col was added left to data
Fix in :showrows command.
:fsum added to command mode commands. It was missing.
Added :showcols command that was missing.
Handled issue #429
handled issue #374
Ignore SIGWINCH outside ncurses.
triggers: Avoid segfault when not being able to load module. Issue #325


***********
v0.8.1
Released April 1st 2021

New features
------------
Braille support
Added latex export - issue #394
Added mappings for command mode
Work on issues #225 and #247: support mapping of ñ and other special chars
Basic ODS file import
Paste to a range of selected cells - (actually added on v0.8 - issue 438 - PR 445)
Added txtdelim | for csv files import - issue 409
Added macros to --version (show version)
Support higher versions of lua.
Handle ESC key in mappings. related to issue #492.
Added freeze to visual mode - issue #459

Changes
--------
Recognise SPACE in mappings rather than simple ' '
Visual change: Moved cmd multiplier to the left of mode
Changed default headings colors
many improvements to the config facility and usage - PR 519
improved sort for 65k rows

Fixes
-----
Fix issues on CIRCULAR REFERENCES: #473 #201 #475 #321. these were as hard.
Fix issue 417 and added a date type in xlsx import.
Fix Engformat overlap text y número. Mostraba * (actually fixed on v0.8)
Fix column header display - overflow with column width 2 and column with two letters - PR 517
Fix isnumeric test to recognise floats: affects copy/paste - PR 450
Fix issue setting conf variables like nonumeric
Fix when showing empty text - 944844505d7cdb7d3d392a5c1d2b3ffde40a1fff
Fix issue #227 - this was hard. used to segfault and keep wrong reference after deleting row that is last in range of expr. ex. @avg(B1:B4) and deleting row 4
Fix issue #433: large memory use with multiple linked cells.
Fix issue #287 - valueize didnt update depgraph
Solved issue #399. 'g' command of NORMAL_MODE changed to 'gt'"
Fixed vmaps in get_mappings function.
Fixed bug on 'error' in gram.y - comment on issue #482
Fix issue #457: cursor position could add empty rows or columns when exporting csv files
Fix issue #288: ^ misbehaving when having fixed rows
Fix in mouse clicks
Fix possible memory leak in add freeze
XLSX: Free memory leak when looking for specified sheet.
XLSX: Avoid segfault when using shared formulas. issue #218.

***********
v0.8.0
Released March 17th 2021

New features
------------
+New motions in edit mode: df cf F dF cF d0 d$ c0 c$ t T dt dT ct cT ^ g_ d^ dg_ c^ cg_
+Simple mouse support. Can handle selection of single cells and scroll.
+Added markdown export.
+Add custom colors with RGB definitions.
+Add support for italic attribute to be appled to cells.
+Added digraphs.
+Added EXECUTE command.
+Added --export_csv --export_tab --export_txt parameters.
+New input_bar_bottom config variable.
+New underline_grid config variable.
+Added filename in status bar (filename_with_mode config variable).
+Added option to truncate cells.
+Added xlsx sheet parameter.
+New @fact function.

Other
-----
+modified config and history file locations
+renamed winch to sig_winch.
+current fg and bg colors are kept if they are not specified in :cellcolor.
+OpenBSD support (mostly wordexp() workaround)
+Correct lua api function names in doc
+always generate backup file when opening file
+renamed scim to sc-im in Makefile
+Document trigger return value convention

Issues fixed
------------
fix bug when deleting an ent that for instance has a @sum()... it used to remove its vertex and THE ENTS LINKED to THEM!
fix error messages when using "scim --version" and color definitions are intented to be applied from .scimrc.
fix in waiting for valid command to complete after pressing ESC key.
fix in parse_str so a word with white space can be stored in dictionary value
fix when setting default_paste_from_clipboard_cmd
Don't clobber startup message w/ err opening file
Allow for lua scripts in local .sc directory #259
Send informational messages to stderr rather than the output when used in non-interactive mode #263
fixed cell_negative color      #271
fixed locked cells when saving #261
fixed DEL key in insert mode   #272
fix when resizing column       #266
"Autobackup - case insensitive QER options when backup exists"
fixed segfault when fcopy'ing with no selection while on first column
Call write triggers on value clear
Use sc_info to report trigger exit code
fixed #277
Grow table up to MAXROWS exactly
Remove redundant if clause (God only knows where that was).

fix in getVertex that prevented rebuild_graph to work properly.
fix annoying bug because of not resetting inputline_pos to 0 when confirming a command in COMMAND_MODE
fix in let and slet. existing vertexs should not be removed.

added "eval_visited" in vertex struct for not to collide with current "visited", since:
    EvalAll uses EvalBottomUp
    EvalBottomUp uses EvalJustOneVertex
    EvalJustOneVertex uses eval
    eval uses GraphAddEdge
    GraphAddEdge uses GraphIsReachable
    GraphIsReachable uses visited
    and EvalBottomUp also uses uses visited!
Also changed markAllVerticesNotVisited and All_vertexs_of_edges_visited functions.

Some other issues fixed: #228, #234, #239, #240, #244, #246, #260, #295, #308
.. and many other fixes and improvements!

***********
v0.7.0
*Added 'copy to clipboard' feature: now content of a range can be copied to clipboard using the :ccopy command.
*Added 'paste from clipboard' feature with :cpaste command.
*Added :subtotal
*Added autobackup feature
*Added :plot command with the following types of chart: line, scatter, bar and pie.
*Added :plotedit command
*New "version" argument. --version can be passed to scim executable file as argv. This will show Sc-im version number
and the different features enabled at compile time.
*Change when moving in command mode and insert mode history:
if inputline is not empty, up and down keys now recall older commands from history,
but taking whose commands that beginning matches the current inputline content.
*Changed default options for numeric, newline_action, numeric_decimal, numeric_zero.
*Doxygen support
*exit_app: only free histories if in ncurses ui. this fix a segfault when quitting.
*replaced :i command. Now xlsx, xls, csv, tsv and tab files shall be imported with the :load command.
*Ignore case when handing special keys in a map
*Handle mappings with double quotes
*Handle SIGTSTP and SIGCONT signals. #213
*fix in csv import: little fix when importing csv files that had commas between quotes. sc-im used to ignore those comma during import process.
*fix in auto numeric when using insert mode history.
*Fix when saving cellcolors. #187
*fix in nmap. #178
*fix in sorting when no range is selected. #180
*fix when displaying help page. #188
*fix in @slen with wide chars. #196
*fix when resizing terminal. #199
*fix calculation when using @pi. #209
*fix when numeric=0 and try to use 0 command. #212
*fix : not initialize colors if working in interactive mode. #220
*fix when :color is intended to be used without having set enough parameters. #219
*fix when editing cells with string expressions. #197

***********
v0.6.0
*Added new freeze feature (including new :freeze and :unfreeze commands).
*Scripting support with LUA. Also with triggers and c dynamic linked modules.
*Added new :trigger and :untrigger commands.
*Insert mode history
*Added xlsx file export
*Added new :unformat command
*Added new ignorecase configuration variable for string searches.
*Double quotes can now be entered in SCIM backquoting them.
*Change in exponential and unary - priority: Exponentials bind higher than unary -.
*Change in how data coming from pipeline or redirection is processed.
*let and slet functions now handle undo/redo.
so that if you set a content with let or slet over script, you can also undo it.
*Group cols and rows when saving hidden columns and rows to file
*Added :wq command.
*Added SHIFT command in parser.
*sk and sh shift commands now saves in undo struct cells that depends on the range shifted.
*Keep default background or fg color of terminal
*Handle ESC key in EDIT and INSERT modes. Now it goes back to previous mode, instead of always returning to NORMAL MODE.
*UI isolation. Added dumb ui example.
*undo / redo are now ignored by the dot command.
*Fix in :sort command when a range is selected and not specified within the command.
*Fix in goto command. Removed unneeded free that made SCIM crash, and another crash when no result was found in search.
*Fix in '!' command. Did not work properly when using a white space after the '!'.
*Fix when saving cellcolors, locked cells and pad ranges in sc files. Sometimes colors and locked ranges did not get saved (most right column).
*Fix in history. Last element typed could get written twice in history.
*Fix crash with 'c' command after dc, dr, or shift command affecting cell A0.
*Now scim print columns to latest col in COLS, maximizing the grid view.
*Fixed crash because of syntax error when entering ". as text value. This also happened in sc.
*Fix when entering a number and then a centered text in the same cell. This also happened in sc. Text appeared a column to the   right and aligned left.
*Fixed setfunc when saving sc file.
*Fix in deleterow
*Fix in shift functions
*Fix a memory leak in undo.c
*Fix/mods in undo/redo
*Fix in csv import
*Cleaned deletecol
*Fix in csv import: maxcol was not updated correctly during import.
*Fix when saving csv files with :w. before it saved a csv file with sc format.

***********
v0.5.0
*new @frow / @fcol functions.
*Added :file special command.
*:cellcolor command now can take a range as an argument.
*Added gg command and HOME, END, PAGEUP and PAGEDOWN keys handling in help screen.
*CSV load/import time improvements (noticeable in large files).
*Fix error when ordering a range that had empty cells.
*Fix in csv import (isnumeric function).
*Fix when circular reference occurs:
 Before it put @ERR in expression.
 Now it preserves the var that makes the circular reference in the formula,
 but keeps the "ERROR" label in the ent.
 ERR errors propagate to other ents.
*Changes when an ent referenced by other ents is removed:
 Before, @ERR was set whereever the reference to a removed ent exists.
 Now, if an ent is removed because of:
    1. a dr dc sh sk command,
    is_deleted flag is set on those ents.
    eval return 0 for those cases, and CELLREF is put in e->op.
    2. 'x' command, flag is_deleted is not set.
    eval return 0 for those cases as well.
 REF and ERR errors propagate to other ENDS. 
 Another change: Now when deleting a cell, if they are referenced by others, vertex is not removed.
 (is_deleted ents shall always go to freeents to be reused..)
*Added check for not to copy duplicate ents in copy_to_undostruct.
*Removed split function.
*Removed unnecesary lookat in screen.c that made unneeded mallocs.
*With "debug" configuration parameter set, now SC-IM quits after SIGINT.

*Fix bug that prevented cells with "ERROR" get saved to file and loaded later on.
*Fix BackSpace issue with some GNU/Linux distros.
*Fix bug that create duplicates in commandline history, if the command recently typed was the latest used as well.
*Fix bug that avoid processing $HOME/.scimrc after loading a file via commandline.
*Fix bug with 'Pc' and 'c' commands of normal mode, not doing autocalc after paste.
*Fix in possible buffer overflow in main.c.
*Some fixes in xml files import.
*Various fixes to avoid warnings during build.

***********
v0.4.0
* Fix memory leak in functions that use seval. ex.: dosval docat. this used to happen also in SC !
* Chain cells with equations into a new graph structure
* Change how cell expressions are evaluated
* New function to rebuilt graph
* Added free() call in GOTO in gram.y
* Added free() call in SORT in gram.y
* Added rebuild_graph, print_graph, undo and redo to gram.y
* Added function to remove elements in dep_graph. (specific vertex and linked edges)
* Fix in shift functions
* Handle circular reference with new Eval structure
* Fix in shift functions. refs in enodes now update correctly
* Undo correctly (keeping references) actions that impact in cells on which other cells depends on
* New :sum special command
* New overlap configuration parameter.
  If overlap is set to true, the cell content that exceedes column width continues to show in the following column.
* Fix a bug that prevented some info messages to be shown during loading
* Fix a bug when repaiting a cell that has a wide char size over than one.
* Changes in readfile function to fix issue that sometimes appeared
  when working with scripting, that made null output of interpreter
* Changes in sc_info sc_error and sc_debug functions..
* Changed sc_error sc_info and sc_debug functions to MACROS.
* Added new "debug" configuration parameter
* White background support
* Fix when undoing :sums that made no sums..
* :w command now adds '.sc' extension if none is specified
* Fix some #include's
* Fix :load command
* Expand filenames using wordexp
* Restored old SC fill function
* Fix in seval calls
* New :fcopy special command
* Added UNDO and LOCK check to fcopy special command. Added fcopy to gram.y
* sum special command renamed to fsum
* csv import now use isnumeric function
* change in '#' command
* new @replace string function
* Change in lex to handle WORD
* Fix in yyerror function
* :set command improvement
* Added set to gram.y
* doc improvement
* Fix when opening files with slash

***********
v0.3.0
* FIX when importing large CSV files
* SC-IM now supports wide chars, enabling the use of different alphabets.
  The following alphabets are supported:
  English, Spanish, French, Italian, German, Portuguese, Russian, Ukrainian, Greek, Turkish, Czech, Japanese, Chinese
* Modification in padding of cells and how they are saved in files.
* UNDO / REDO improvements. Now the following actions are supported:
  Change in format of a column as a result of the 'f' command
  Change in format of a column as a result of auto_jus
  Change format of columns as a result of ic dc

***********
v0.2.2
* Added plain text export.
* Added padding between cells.
* Added 256 color support and "redefine_color" special command.
* Added "aa" command in normal mode to act as autojus special command.
* Added "gl" for going to last position in normal mode.
* Added SC-IM man page.
* Added "refresh" special command to refresh UI.
* Big fix in how extended ascii are chars shown.
* Big changes in functions used for showing cell content.
* Fix in autonumeric mode.
* Fix bug when typing real long string (issue #32).
* Fix when using QUIT command with external scripts.
* "cellcolor" command now checks if a locked cell exists prior to change format.
* Locked cells are stored after any other command when saving a file.
* Saving sc file: cellcolor and lock commands now are stored by rows when saving a sc file.
* "Pv" command now do not paste cellcolors.
* Translated source code comments to English.
* Various fixes when using SC-IM without UI (--nocurses).
* Help documentation now can be loaded without making install SC-IM.
* MAXROWS now can be defined in Makefile.
