summaryrefslogtreecommitdiffstats
path: root/src/if_tcl.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/if_tcl.c')
-rw-r--r--src/if_tcl.c196
1 files changed, 97 insertions, 99 deletions
diff --git a/src/if_tcl.c b/src/if_tcl.c
index a5b80d4954..c4f85fa714 100644
--- a/src/if_tcl.c
+++ b/src/if_tcl.c
@@ -67,10 +67,10 @@ TODO:
*/
#include "vim.h"
-#undef EXTERN /* tcl.h defines it too */
+#undef EXTERN // tcl.h defines it too
#ifdef DYNAMIC_TCL
-# define USE_TCL_STUBS /* use tcl's stubs mechanism */
+# define USE_TCL_STUBS // use tcl's stubs mechanism
#endif
#include <tcl.h>
@@ -106,7 +106,7 @@ static tcl_info tclinfo = { NULL, 0, 0, 0, 0, NULL, NULL };
#define VIMOUT ((ClientData)1)
#define VIMERR ((ClientData)2)
-/* This appears to be new in Tcl 8.4. */
+// This appears to be new in Tcl 8.4.
#ifndef CONST84
# define CONST84
#endif
@@ -123,9 +123,9 @@ struct ref
struct ref *next;
Tcl_Interp *interp;
- Tcl_Command cmd; /* Tcl command that represents this object */
- Tcl_Obj *delcmd; /* Tcl command to call when object is being del. */
- void *vimobj; /* Vim window or buffer (win_T* or buf_T*) */
+ Tcl_Command cmd; // Tcl command that represents this object
+ Tcl_Obj *delcmd; // Tcl command to call when object is being del.
+ void *vimobj; // Vim window or buffer (win_T* or buf_T*)
};
static char * tclgetbuffer _ANSI_ARGS_((Tcl_Interp *interp, buf_T *buf));
static char * tclgetwindow _ANSI_ARGS_((Tcl_Interp *interp, win_T *win));
@@ -142,11 +142,11 @@ static void tclmsg _ANSI_ARGS_((char *text));
static void tclerrmsg _ANSI_ARGS_((char *text));
static void tclupdatevars _ANSI_ARGS_((void));
-static struct ref refsdeleted; /* dummy object for deleted ref list */
+static struct ref refsdeleted; // dummy object for deleted ref list
-/*****************************************************************************
- * TCL interface manager
- ****************************************************************************/
+//////////////////////////////////////////////////////////////////////////////
+// TCL interface manager
+////////////////////////////////////////////////////////////////////////////
#if defined(DYNAMIC_TCL) || defined(PROTO)
# ifndef DYNAMIC_TCL_DLL
@@ -156,7 +156,7 @@ static struct ref refsdeleted; /* dummy object for deleted ref list */
# define DYNAMIC_TCL_VER "8.3"
# endif
-# ifndef DYNAMIC_TCL /* Just generating prototypes */
+# ifndef DYNAMIC_TCL // Just generating prototypes
typedef int HANDLE;
# endif
@@ -230,7 +230,7 @@ tcl_runtime_link_init(char *libname, int verbose)
}
return OK;
}
-#endif /* defined(DYNAMIC_TCL) || defined(PROTO) */
+#endif // defined(DYNAMIC_TCL) || defined(PROTO)
#ifdef DYNAMIC_TCL
static char *find_executable_arg = NULL;
@@ -270,7 +270,7 @@ tcl_enabled(int verbose)
Tcl_DeleteInterp(interp);
stubs_initialized = TRUE;
}
- /* FIXME: When Tcl_InitStubs() was failed, how delete interp? */
+ // FIXME: When Tcl_InitStubs() was failed, how delete interp?
}
}
return stubs_initialized;
@@ -289,9 +289,9 @@ tcl_end(void)
#endif
}
-/****************************************************************************
- Tcl commands
- ****************************************************************************/
+/////////////////////////////////////////////////////////////////////////////
+// Tcl commands
+////////////////////////////////////////////////////////////////////////////
/*
* Replace standard "exit" command.
@@ -321,7 +321,7 @@ exitcmd(
case 2:
if (Tcl_GetIntFromObj(interp, objv[1], &value) != TCL_OK)
break;
- /* FALLTHROUGH */
+ // FALLTHROUGH
case 1:
tclinfo.exitvalue = value;
@@ -402,7 +402,7 @@ buffercmd(
Tcl_SetResult(interp, _("invalid buffer number"), TCL_STATIC);
return TCL_ERROR;
}
- Tcl_ResetResult(interp); /* clear error from Tcl_GetIntFromObj */
+ Tcl_ResetResult(interp); // clear error from Tcl_GetIntFromObj
err = Tcl_GetIndexFromObj(interp, objv[1], bcmdoptions, "option", 0, &idx);
if (err != TCL_OK)
@@ -576,7 +576,7 @@ bufselfcmd(
* Get line number of last line.
*/
opt = 1;
- /* fallthrough */
+ // fallthrough
case BUF_COUNT:
/*
* Get number of lines in buffer.
@@ -639,7 +639,7 @@ bufselfcmd(
err = TCL_ERROR;
}
}
- else { /* objc == 3 */
+ else { // objc == 3
line = (char *)ml_get_buf(buf, (linenr_T)val1, FALSE);
Tcl_SetResult(interp, line, TCL_VOLATILE);
}
@@ -725,7 +725,7 @@ bufselfcmd(
}
if (i < lc)
{
- /* append lines */
+ // append lines
do
{
line = Tcl_GetStringFromObj(lv[i], NULL);
@@ -738,7 +738,7 @@ bufselfcmd(
}
else if (n <= val2)
{
- /* did not replace all lines, delete */
+ // did not replace all lines, delete
i = n;
do
{
@@ -747,13 +747,13 @@ bufselfcmd(
++n;
} while (n <= val2);
}
- lc -= val2 - val1 + 1; /* number of lines to be replaced */
+ lc -= val2 - val1 + 1; // number of lines to be replaced
mark_adjust((linenr_T)val1, (linenr_T)val2, (long)MAXLNUM,
(long)lc);
changed_lines((linenr_T)val1, 0, (linenr_T)val2 + 1, (long)lc);
break;
setListError:
- u_undo(1); /* ??? */
+ u_undo(1); // ???
Tcl_SetResult(interp, _("cannot set line(s)"), TCL_STATIC);
err = TCL_ERROR;
}
@@ -838,7 +838,7 @@ bufselfcmd(
case BUF_INSERT:
opt = 1;
- /* fallthrough */
+ // fallthrough
case BUF_APPEND:
if (objc != 4)
{
@@ -1078,7 +1078,7 @@ winselfcmd(
if (err != TCL_OK)
break;
}
- else { /* objc == 4 */
+ else { // objc == 4
err = tclgetlinenum(interp, objv[2], &val1, win->w_buffer);
if (err != TCL_OK)
break;
@@ -1086,7 +1086,7 @@ winselfcmd(
if (err != TCL_OK)
break;
}
- /* TODO: should check column */
+ // TODO: should check column
win->w_cursor.lnum = val1;
win->w_cursor.col = col2vim(val2);
win->w_set_curswant = TRUE;
@@ -1145,9 +1145,9 @@ exprcmd(
return tclvimexpr(interp, objc, objv, 1);
}
-/****************************************************************************
- Support functions for Tcl commands
- ****************************************************************************/
+/////////////////////////////////////////////////////////////////////////////
+// Support functions for Tcl commands
+////////////////////////////////////////////////////////////////////////////
/*
* Get a line number from 'obj' and convert it to vim's range.
@@ -1215,7 +1215,7 @@ tclfindwin(buf_T *buf)
if (win->w_buffer == buf)
return win;
}
- return curwin; /* keep current window context */
+ return curwin; // keep current window context
}
/*
@@ -1267,7 +1267,7 @@ tcldoexcommand(
--emsg_off;
err = vimerror(interp);
- /* If the ex command created a new Tcl interpreter, remove it */
+ // If the ex command created a new Tcl interpreter, remove it
if (tclinfo.interp)
tcldelthisinterp();
memcpy(&tclinfo, &saveinfo, sizeof(tcl_info));
@@ -1325,7 +1325,7 @@ tclsetoption(
{
if (isnum)
{
- sval = NULL; /* avoid compiler warning */
+ sval = NULL; // avoid compiler warning
err = Tcl_GetIndexFromObj(interp, objv[objn], optkw, "", 0, &idx);
if (err != TCL_OK)
{
@@ -1440,11 +1440,11 @@ delref(ClientData cref)
static char *
tclgetref(
Tcl_Interp *interp,
- void **refstartP, /* ptr to w_tcl_ref/b_tcl-ref member of
- win_T/buf_T struct */
- char *prefix, /* "win" or "buf" */
- void *vimobj, /* win_T* or buf_T* */
- Tcl_ObjCmdProc *proc) /* winselfcmd or bufselfcmd */
+ void **refstartP, // ptr to w_tcl_ref/b_tcl-ref member of
+ // win_T/buf_T struct
+ char *prefix, // "win" or "buf"
+ void *vimobj, // win_T* or buf_T*
+ Tcl_ObjCmdProc *proc) // winselfcmd or bufselfcmd
{
struct ref *ref, *unused = NULL;
static char name[VARNAME_SIZE];
@@ -1481,7 +1481,7 @@ tclgetref(
(*refstartP) = (void *)ref;
}
- /* This might break on some exotic systems... */
+ // This might break on some exotic systems...
vim_snprintf(name, sizeof(name), "::vim::%s_%lx",
prefix, (unsigned long)vimobj);
cmd = Tcl_CreateObjCommand(interp, name, proc,
@@ -1534,23 +1534,23 @@ tclsetdelcmd(
}
reflist = reflist->next;
}
- /* This should never happen. Famous last word? */
+ // This should never happen. Famous last word?
emsg(_("E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim.org"));
Tcl_SetResult(interp, _("cannot register callback command: buffer/window reference not found"), TCL_STATIC);
return TCL_ERROR;
}
-/*******************************************
- I/O Channel
-********************************************/
+////////////////////////////////////////////
+// I/O Channel
+////////////////////////////////////////////
static int
tcl_channel_close(ClientData instance, Tcl_Interp *interp UNUSED)
{
int err = 0;
- /* currently does nothing */
+ // currently does nothing
if (instance != VIMOUT && instance != VIMERR)
{
@@ -1568,7 +1568,7 @@ tcl_channel_input(
int *errptr)
{
- /* input is currently not supported */
+ // input is currently not supported
Tcl_SetErrno(EINVAL);
if (errptr)
@@ -1586,10 +1586,9 @@ tcl_channel_output(
char_u *str;
int result;
- /* The buffer is not guaranteed to be 0-terminated, and we don't if
- * there is enough room to add a '\0'. So we have to create a copy
- * of the buffer...
- */
+ // The buffer is not guaranteed to be 0-terminated, and we don't if
+ // there is enough room to add a '\0'. So we have to create a copy
+ // of the buffer...
str = vim_strnsave((char_u *)buf, bufsiz);
if (!str)
{
@@ -1635,43 +1634,43 @@ tcl_channel_gethandle(
static Tcl_ChannelType tcl_channel_type =
{
- "vimmessage", /* typeName */
- TCL_CHANNEL_VERSION_2, /* version */
- tcl_channel_close, /* closeProc */
- tcl_channel_input, /* inputProc */
- tcl_channel_output, /* outputProc */
- NULL, /* seekProc */
- NULL, /* setOptionProc */
- NULL, /* getOptionProc */
- tcl_channel_watch, /* watchProc */
- tcl_channel_gethandle, /* getHandleProc */
- NULL, /* close2Proc */
- NULL, /* blockModeProc */
+ "vimmessage", // typeName
+ TCL_CHANNEL_VERSION_2, // version
+ tcl_channel_close, // closeProc
+ tcl_channel_input, // inputProc
+ tcl_channel_output, // outputProc
+ NULL, // seekProc
+ NULL, // setOptionProc
+ NULL, // getOptionProc
+ tcl_channel_watch, // watchProc
+ tcl_channel_gethandle, // getHandleProc
+ NULL, // close2Proc
+ NULL, // blockModeProc
#ifdef TCL_CHANNEL_VERSION_2
- NULL, /* flushProc */
- NULL, /* handlerProc */
+ NULL, // flushProc
+ NULL, // handlerProc
#endif
-/* The following should not be necessary since TCL_CHANNEL_VERSION_2 was
- * set above */
+// The following should not be necessary since TCL_CHANNEL_VERSION_2 was
+// set above
#ifdef TCL_CHANNEL_VERSION_3
- NULL, /* wideSeekProc */
+ NULL, // wideSeekProc
#endif
#ifdef TCL_CHANNEL_VERSION_4
- NULL, /* threadActionProc */
+ NULL, // threadActionProc
#endif
#ifdef TCL_CHANNEL_VERSION_5
- NULL /* truncateProc */
+ NULL // truncateProc
#endif
};
-/**********************************
- Interface to vim
- **********************************/
+///////////////////////////////////
+// Interface to vim
+//////////////////////////////////
static void
tclupdatevars(void)
{
- char varname[VARNAME_SIZE]; /* must be writeable */
+ char varname[VARNAME_SIZE]; // must be writeable
char *name;
strcpy(varname, VAR_RANGE1);
@@ -1699,7 +1698,7 @@ tclupdatevars(void)
static int
tclinit(exarg_T *eap)
{
- char varname[VARNAME_SIZE]; /* Tcl_LinkVar requires writeable varname */
+ char varname[VARNAME_SIZE]; // Tcl_LinkVar requires writeable varname
char *name;
#ifdef DYNAMIC_TCL
@@ -1715,9 +1714,9 @@ tclinit(exarg_T *eap)
Tcl_Interp *interp;
static Tcl_Channel ch1, ch2;
- /* Create replacement channels for stdout and stderr; this has to be
- * done each time an interpreter is created since the channels are closed
- * when the interpreter is deleted */
+ // Create replacement channels for stdout and stderr; this has to be
+ // done each time an interpreter is created since the channels are closed
+ // when the interpreter is deleted
ch1 = Tcl_CreateChannel(&tcl_channel_type, "vimout", VIMOUT, TCL_WRITABLE);
ch2 = Tcl_CreateChannel(&tcl_channel_type, "vimerr", VIMERR, TCL_WRITABLE);
Tcl_SetStdChannel(ch1, TCL_STDOUT);
@@ -1732,7 +1731,7 @@ tclinit(exarg_T *eap)
return FAIL;
}
#if 0
- /* VIM sure is interactive */
+ // VIM sure is interactive
Tcl_SetVar(interp, "tcl_interactive", "1", TCL_GLOBAL_ONLY);
#endif
@@ -1745,12 +1744,12 @@ tclinit(exarg_T *eap)
Tcl_SetChannelOption(interp, ch2, "-translation", "lf");
#endif
- /* replace standard Tcl exit command */
+ // replace standard Tcl exit command
Tcl_DeleteCommand(interp, "exit");
Tcl_CreateObjCommand(interp, "exit", exitcmd,
(ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
- /* new commands, in ::vim namespace */
+ // new commands, in ::vim namespace
Tcl_CreateObjCommand(interp, "::vim::buffer", buffercmd,
(ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
Tcl_CreateObjCommand(interp, "::vim::window", windowcmd,
@@ -1764,12 +1763,12 @@ tclinit(exarg_T *eap)
Tcl_CreateObjCommand(interp, "::vim::expr", exprcmd,
(ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
- /* "lbase" variable */
+ // "lbase" variable
tclinfo.lbase = 1;
strcpy(varname, VAR_LBASE);
Tcl_LinkVar(interp, varname, (char *)&tclinfo.lbase, TCL_LINK_INT);
- /* "range" variable */
+ // "range" variable
tclinfo.range_start = eap->line1;
strcpy(varname, VAR_RANGE1);
Tcl_LinkVar(interp, varname, (char *)&tclinfo.range_start, TCL_LINK_INT|TCL_LINK_READ_ONLY);
@@ -1779,7 +1778,7 @@ tclinit(exarg_T *eap)
strcpy(varname, VAR_RANGE3);
Tcl_LinkVar(interp, varname, (char *)&tclinfo.range_end, TCL_LINK_INT|TCL_LINK_READ_ONLY);
- /* "current" variable */
+ // "current" variable
tclinfo.curbuf = Tcl_Alloc(VARNAME_SIZE);
tclinfo.curwin = Tcl_Alloc(VARNAME_SIZE);
name = tclgetbuffer(interp, curbuf);
@@ -1795,7 +1794,7 @@ tclinit(exarg_T *eap)
}
else
{
- /* Interpreter already exists, just update variables */
+ // Interpreter already exists, just update variables
tclinfo.range_start = row2tcl(eap->line1);
tclinfo.range_end = row2tcl(eap->line2);
tclupdatevars();
@@ -1841,15 +1840,14 @@ tcldelthisinterp(void)
if (!Tcl_InterpDeleted(tclinfo.interp))
Tcl_DeleteInterp(tclinfo.interp);
Tcl_Release(tclinfo.interp);
- /* The interpreter is now gets deleted. All registered commands (esp.
- * window and buffer commands) are deleted, triggering their deletion
- * callback, which deletes all refs pointing to this interpreter.
- * We could garbage-collect the unused ref structs in all windows and
- * buffers, but unless the user creates hundreds of sub-interpreters
- * all referring to lots of windows and buffers, this is hardly worth
- * the effort. Unused refs are recycled by other interpreters, and
- * all refs are free'd when the window/buffer gets closed by vim.
- */
+ // The interpreter is now gets deleted. All registered commands (esp.
+ // window and buffer commands) are deleted, triggering their deletion
+ // callback, which deletes all refs pointing to this interpreter.
+ // We could garbage-collect the unused ref structs in all windows and
+ // buffers, but unless the user creates hundreds of sub-interpreters
+ // all referring to lots of windows and buffers, this is hardly worth
+ // the effort. Unused refs are recycled by other interpreters, and
+ // all refs are free'd when the window/buffer gets closed by vim.
tclinfo.interp = NULL;
Tcl_Free(tclinfo.curbuf);
@@ -1862,9 +1860,9 @@ tclexit(int error)
{
int newerr = OK;
- if (Tcl_InterpDeleted(tclinfo.interp) /* True if we intercepted Tcl's exit command */
+ if (Tcl_InterpDeleted(tclinfo.interp) // True if we intercepted Tcl's exit command
#if (TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 5) || TCL_MAJOR_VERSION > 8
- || Tcl_LimitExceeded(tclinfo.interp) /* True if the interpreter cannot continue */
+ || Tcl_LimitExceeded(tclinfo.interp) // True if the interpreter cannot continue
#endif
)
{
@@ -1954,7 +1952,7 @@ ex_tcldo(exarg_T *eap)
{
char *script, *line;
int err, rs, re, lnum;
- char var_lnum[VARNAME_SIZE]; /* must be writeable memory */
+ char var_lnum[VARNAME_SIZE]; // must be writeable memory
char var_line[VARNAME_SIZE];
linenr_T first_line = 0;
linenr_T last_line = 0;
@@ -2035,7 +2033,7 @@ tcldelallrefs(struct ref *ref)
char *result;
#ifdef DYNAMIC_TCL
- /* TODO: this code currently crashes Vim on exit */
+ // TODO: this code currently crashes Vim on exit
if (exiting)
return;
#endif
@@ -2070,7 +2068,7 @@ tcl_buffer_free(buf_T *buf)
struct ref *reflist;
#ifdef DYNAMIC_TCL
- if (!stubs_initialized) /* Not using Tcl, nothing to do. */
+ if (!stubs_initialized) // Not using Tcl, nothing to do.
return;
#endif
@@ -2089,7 +2087,7 @@ tcl_window_free(win_T *win)
struct ref *reflist;
#ifdef DYNAMIC_TCL
- if (!stubs_initialized) /* Not using Tcl, nothing to do. */
+ if (!stubs_initialized) // Not using Tcl, nothing to do.
return;
#endif
@@ -2102,4 +2100,4 @@ tcl_window_free(win_T *win)
}
}
-/* The End */
+// The End