/*******************************************************************************
* Copyright (c) 2013-2017, Andrés Martinelli <andmarti@gmail.com *
* All rights reserved. *
* *
* This file is a part of SC-IM *
* *
* SC-IM is a spreadsheet program that is based on SC. The original authors *
* of SC are James Gosling and Mark Weiser, and mods were later added by *
* Chuck Martin. *
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions are met: *
* 1. Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* 3. All advertising materials mentioning features or use of this software *
* must display the following acknowledgement: *
* This product includes software developed by Andrés Martinelli *
* <andmarti@gmail.com>. *
* 4. Neither the name of the Andrés Martinelli nor the *
* names of other contributors may be used to endorse or promote products *
* derived from this software without specific prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY ANDRES MARTINELLI ''AS IS'' AND ANY *
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED *
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
* DISCLAIMED. IN NO EVENT SHALL ANDRES MARTINELLI BE LIABLE FOR ANY *
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES *
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;*
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND *
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE *
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
*******************************************************************************/
/**
* \file cmds_normal.c
* \author Andrés Martinelli <andmarti@gmail.com>
* \date 2017-07-18
* \brief TODO Write a tbrief file description.
*/
#include <ctype.h>
#include <stdlib.h>
#include "yank.h"
#include "marks.h"
#include "cmds.h"
#include "conf.h"
#include "tui.h"
#include "cmds_edit.h"
#include "history.h"
#include "hide_show.h"
#include "shift.h"
#include "main.h" // for sig_winchg
#include "interp.h"
#include "freeze.h"
#include "utils/extra.h"
#ifdef UNDO
#include "undo.h"
#endif
#include "dep_graph.h"
extern graphADT graph;
extern char valores;
extern int cmd_multiplier;
extern void start_visualmode(int tlrow, int tlcol, int brrow, int brcol);
extern void ins_in_line(wint_t d);
wchar_t interp_line[BUFFERSIZE];
#ifdef HISTORY_FILE
extern struct history * commandline_history;
#endif
#ifdef INS_HISTORY_FILE
extern struct history * insert_history;
extern char ori_insert_edit_submode;
#endif
/**
* \brief TODO Document do_normalmode()
*
* \param[in] buf
*
* \return none
*/
void do_normalmode(struct block * buf) {
int bs = get_bufsize(buf);
struct ent * e;
switch (buf->value) {
// FOR TEST PURPOSES
case L'A':
sc_info("runtime:%d", RUNTIME);
//;
//wchar_t t = ui_query_opt(
//L"Backup file exists. Do you want to (E)dit file and remove backup, (R)ecover backup or (Q)uit: ", L"qer");
//sc_info("result: %lc.", t);
break;
case L'W':
break;
case L'Q':
break;
// MOVEMENT COMMANDS
case L'j':
case OKEY_DOWN:
lastcol = curcol;
lastrow = currow;
currow = forw_row(1)->row;
unselect_ranges();
ui_update(TRUE);
break;
case L'k':
case OKEY_UP:
lastcol = curcol;
lastrow = currow;
currow = back_row(1)->row;
unselect_ranges();
ui_update(TRUE);
break;
case L'h':
case OKEY_LEFT:
lastrow = currow;
lastcol = curcol;
curcol = back_col(1)->col;
unselect_ranges();
ui_update(TRUE);
break;
case L'l':
case OKEY_RIGHT:
lastrow = currow;
lastcol = curcol;
curcol = forw_col(1)->col;
unselect_ranges();
ui_update(TRUE);
break;
case L'0':
if (atoi(