Category : C Source Code
Archive   : VIM20SRC.ZIP
Filename : CHARSET.C

 
Output of file : CHARSET.C contained in archive : VIM20SRC.ZIP
/* vi:ts=4:sw=4
*
* VIM - Vi IMproved
*
* Code Contributions By: Bram Moolenaar [email protected]
* Tim Thompson twitch!tjt
* Tony Andrews onecom!wldrdg!tony
* G. R. (Fred) Walter watmath!watcgl!grwalter
*/

#include "vim.h"
#include "globals.h"
#include "proto.h"
#include "param.h"


char *
transchar(c)
unsigned c;
{
static char buf[3];

if (c < ' ')
{
if (c == NL)
c = NUL; /* we use newline in place of a NUL */
buf[0] = '^';
buf[1] = '@' + c;
buf[2] = NUL;
}
else if (c <= '~' || c > 0xa0 || p_gr)
{
buf[0] = c;
buf[1] = NUL;
}
else
{
if (c == 0x7f) /* DEL displayed as ^?, not ~? */
buf[0] = '^';
else
buf[0] = '~';
buf[1] = c - 0x80 + '@';
buf[2] = NUL;
}
return buf;
}

/*
* output 'len' characters in 'str' (including NULs) with translation
* if 'len' is -1, output upto a NUL character
* return the number of characters it takes on the screen
*/
int
outtrans(str, len)
register char *str;
register int len;
{
int retval = 0;

if (len == -1)
len = strlen(str);
while (--len >= 0)
{
outstrn(transchar(*(u_char *)str));
retval += charsize(*(u_char *)str);
++str;
}
return retval;
}

/*
* return the number of characters 'c' will take on the screen
*/
int
charsize(c)
int c;
{
return ((c >= ' ' && (p_gr || c <= '~')) || c > 0xa0 ? 1 : 2);
}

/*
* return the number of characters string 's' will take on the screen
*/
int
strsize(s)
char *s;
{
int len = 0;

while (*s)
len += charsize(*s++);
return len;
}

/*
* return the number of characters 'c' will take on the screen, taking
* into account the size of a tab
*/
int
chartabsize(c, col)
register int c;
int col;
{
if ((c >= ' ' && (c <= '~' || p_gr)) || c > 0xa0)
return 1;
else if (c == TAB && !p_list)
return (int)(p_ts - (col % p_ts));
else
return 2;
}

/*
* return TRUE if 'c' is an identifier character
*/
int
isidchar(c)
int c;
{
#ifdef __STDC__
return (isalnum(c) || c == '_');
#else
return (isalpha(c) || isdigit(c) || c == '_');
#endif
}


  3 Responses to “Category : C Source Code
Archive   : VIM20SRC.ZIP
Filename : CHARSET.C

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/