1
0
forked from aniani/vim

Remove obsolete Mac code.

This commit is contained in:
Bram Moolenaar
2010-07-14 20:31:44 +02:00
parent 1a38442dbc
commit 66bd1c9b54
3 changed files with 6 additions and 541 deletions

View File

@@ -1098,10 +1098,6 @@ Vim 7.3:
- Conceal feature: no update when moving to another window. (Dominique Pelle, - Conceal feature: no update when moving to another window. (Dominique Pelle,
2010 Jul 5) Vince will look into it. 2010 Jul 5) Vince will look into it.
Patches to possibly include: Patches to possibly include:
- 'colorcolumn': make it local to window.
Alternative patch. (2010 Feb 2, Gregor Uhlenheuer, update 2010 Jul 12)
- Another patch for Javascript indenting. (Hari Kumar, 2010 Jul 11)
Needs a few tests.
- Add different highlighting for a fold line depending on the fold level. - Add different highlighting for a fold line depending on the fold level.
Patch. (Noel Henson, 2009 Sep 13) Patch. (Noel Henson, 2009 Sep 13)
- Patch to make synIDattr() work for GUI attributes in Vim without GUI - Patch to make synIDattr() work for GUI attributes in Vim without GUI
@@ -1116,6 +1112,8 @@ Patches to possibly include:
Docs patch by Dominique Pelle, Mar 25 Docs patch by Dominique Pelle, Mar 25
Update 2009 Mar 28. Update 2009 Mar 28.
Fix for invalid memory access. (Lech Lorens, 2009 Apr 17) Fix for invalid memory access. (Lech Lorens, 2009 Apr 17)
- Another patch for Javascript indenting. (Hari Kumar, 2010 Jul 11)
Needs a few tests.
- Disable setting 'encoding' from a modeline? It usually causes problems, - Disable setting 'encoding' from a modeline? It usually causes problems,
can't do any good. (Patch from Patrick Texier, 2008 Dec 9) can't do any good. (Patch from Patrick Texier, 2008 Dec 9)
- Redraw problem when appending digraph causes line to wrap. (James Vega, 2007 - Redraw problem when appending digraph causes line to wrap. (James Vega, 2007

View File

@@ -299,15 +299,3 @@
/* A Mac constant causing big problem to syntax highlighting */ /* A Mac constant causing big problem to syntax highlighting */
#define UNKNOWN_CREATOR '\?\?\?\?' #define UNKNOWN_CREATOR '\?\?\?\?'
/*
* for debugging
*/
#ifdef MACOS_X
# ifdef _DEBUG
# define TRACE Trace
void Trace(char *fmt, ...);
# else
# define TRACE 1 ? (void)0 : printf
# endif
#endif

View File

@@ -19,533 +19,12 @@
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
NSString *VimPboardType = @"VimPboardType";
#ifdef _DEBUG
void
Trace(char* fmt, ...)
{
char buf[2048];
va_list args;
va_start(args, fmt);
/* vsnprintf(buf, sizeof(buf), fmt, args);*/
fprintf(stderr, "%s", buf);
va_end(args);
}
#endif
#ifdef MACOS_X_ICONVEMU
/*
* Libiconv emulation layer
*/
struct _iconv_t
{
TECObjectRef tec;
TECObjectRef tecReverse;
TECSnifferObjectRef sniff;
TextEncoding from;
TextEncoding to;
};
/* typedef struct _iconv_t *iconv_t; */
static int last_errno = 0;
/*
* Get TextEncoding from iconv's encoding name
*/
static TextEncoding
get_textencoding(const char* encodename)
{
static struct {
const char* name;
TextEncoding encode;
} encodetable[] = {
/* ISO-8859 encodings family */
{"latin1", kTextEncodingISOLatin1},
{"latin2", kTextEncodingISOLatin2},
{"latin3", kTextEncodingISOLatin3},
{"latin4", kTextEncodingISOLatin4},
{"latin5", kTextEncodingISOLatin5},
{"latin6", kTextEncodingISOLatin6},
{"latin7", kTextEncodingISOLatin7},
{"latin8", kTextEncodingISOLatin8},
{"latin9", kTextEncodingISOLatin9},
{"iso-8859-1", kTextEncodingISOLatin1},
{"iso-8859-2", kTextEncodingISOLatin2},
{"iso-8859-3", kTextEncodingISOLatin3},
{"iso-8859-4", kTextEncodingISOLatin4},
{"iso-8859-5", kTextEncodingISOLatinCyrillic},
{"iso-8859-6", kTextEncodingISOLatinArabic},
{"iso-8859-7", kTextEncodingISOLatinGreek},
{"iso-8859-8", kTextEncodingISOLatinHebrew},
{"iso-8859-9", kTextEncodingISOLatin5},
{"iso-8859-10", kTextEncodingISOLatin6},
{"iso-8859-15", kTextEncodingISOLatin9},
/* Unicode encodings. */
/* TODO: Add other type of unicode */
{"ucs-2", kTextEncodingMacUnicode},
/* Japanese encoding aliases */
{"cp932", kTextEncodingShiftJIS},
{"shift-jis", kTextEncodingShiftJIS},
{"euc-jp", kTextEncodingEUC_JP},
{"iso-2022-jp", kTextEncodingISO_2022_JP},
{"iso-2022-jp-1", kTextEncodingISO_2022_JP_1},
{"iso-2022-jp-2", kTextEncodingISO_2022_JP_2},
{"iso-2022-jp-3", kTextEncodingISO_2022_JP_3},
/* Other aliases. These aliases in this block are just guessed. */
/* TODO: Must be verified. */
{"gb2312", kTextEncodingGB_2312_80},
{"cp936", kTextEncodingMacChineseSimp},
{"euc-cn", kTextEncodingEUC_CN},
{"cp950", kTextEncodingMacChineseTrad},
{"euc-tw", kTextEncodingEUC_TW},
{"cp949", kTextEncodingMacKorean},
{"euc-kr", kTextEncodingEUC_KR},
/*
* All encodings supported by Macintosh. You can find these values
* in a file:
* /System/Library/Frameworks/CoreServices.framework/Versions/A/
* Frameworks/CarbonCore.framework/Versions/A/Headers/TextCommon.h
*/
{"MacRoman", kTextEncodingMacRoman},
{"MacJapanese", kTextEncodingMacJapanese},
{"MacChineseTrad", kTextEncodingMacChineseTrad},
{"MacKorean", kTextEncodingMacKorean},
{"MacArabic", kTextEncodingMacArabic},
{"MacHebrew", kTextEncodingMacHebrew},
{"MacGreek", kTextEncodingMacGreek},
{"MacCyrillic", kTextEncodingMacCyrillic},
{"MacDevanagari", kTextEncodingMacDevanagari},
{"MacGurmukhi", kTextEncodingMacGurmukhi},
{"MacGujarati", kTextEncodingMacGujarati},
{"MacOriya", kTextEncodingMacOriya},
{"MacBengali", kTextEncodingMacBengali},
{"MacTamil", kTextEncodingMacTamil},
{"MacTelugu", kTextEncodingMacTelugu},
{"MacKannada", kTextEncodingMacKannada},
{"MacMalayalam", kTextEncodingMacMalayalam},
{"MacSinhalese", kTextEncodingMacSinhalese},
{"MacBurmese", kTextEncodingMacBurmese},
{"MacKhmer", kTextEncodingMacKhmer},
{"MacThai", kTextEncodingMacThai},
{"MacLaotian", kTextEncodingMacLaotian},
{"MacGeorgian", kTextEncodingMacGeorgian},
{"MacArmenian", kTextEncodingMacArmenian},
{"MacChineseSimp", kTextEncodingMacChineseSimp},
{"MacTibetan", kTextEncodingMacTibetan},
{"MacMongolian", kTextEncodingMacMongolian},
{"MacEthiopic", kTextEncodingMacEthiopic},
{"MacCentralEurRoman", kTextEncodingMacCentralEurRoman},
{"MacVietnamese", kTextEncodingMacVietnamese},
{"MacExtArabic", kTextEncodingMacExtArabic},
{"MacSymbol", kTextEncodingMacSymbol},
{"MacDingbats", kTextEncodingMacDingbats},
{"MacTurkish", kTextEncodingMacTurkish},
{"MacCroatian", kTextEncodingMacCroatian},
{"MacIcelandic", kTextEncodingMacIcelandic},
{"MacRomanian", kTextEncodingMacRomanian},
{"MacCeltic", kTextEncodingMacCeltic},
{"MacGaelic", kTextEncodingMacGaelic},
{"MacKeyboardGlyphs", kTextEncodingMacKeyboardGlyphs},
{"MacTradChinese", kTextEncodingMacTradChinese},
{"MacRSymbol", kTextEncodingMacRSymbol},
{"MacSimpChinese", kTextEncodingMacSimpChinese},
{"MacGeez", kTextEncodingMacGeez},
{"MacEastEurRoman", kTextEncodingMacEastEurRoman},
{"MacUninterp", kTextEncodingMacUninterp},
{"MacUnicode", kTextEncodingMacUnicode},
{"MacFarsi", kTextEncodingMacFarsi},
{"MacUkrainian", kTextEncodingMacUkrainian},
{"MacInuit", kTextEncodingMacInuit},
{"MacVT100", kTextEncodingMacVT100},
{"MacHFS", kTextEncodingMacHFS},
{"UnicodeDefault", kTextEncodingUnicodeDefault},
{"UnicodeV1_1", kTextEncodingUnicodeV1_1},
{"ISO10646_1993", kTextEncodingISO10646_1993},
{"UnicodeV2_0", kTextEncodingUnicodeV2_0},
{"UnicodeV2_1", kTextEncodingUnicodeV2_1},
{"UnicodeV3_0", kTextEncodingUnicodeV3_0},
{"UnicodeV3_1", kTextEncodingUnicodeV3_1},
{"UnicodeV3_2", kTextEncodingUnicodeV3_2},
{"ISOLatin1", kTextEncodingISOLatin1},
{"ISOLatin2", kTextEncodingISOLatin2},
{"ISOLatin3", kTextEncodingISOLatin3},
{"ISOLatin4", kTextEncodingISOLatin4},
{"ISOLatinCyrillic", kTextEncodingISOLatinCyrillic},
{"ISOLatinArabic", kTextEncodingISOLatinArabic},
{"ISOLatinGreek", kTextEncodingISOLatinGreek},
{"ISOLatinHebrew", kTextEncodingISOLatinHebrew},
{"ISOLatin5", kTextEncodingISOLatin5},
{"ISOLatin6", kTextEncodingISOLatin6},
{"ISOLatin7", kTextEncodingISOLatin7},
{"ISOLatin8", kTextEncodingISOLatin8},
{"ISOLatin9", kTextEncodingISOLatin9},
{"DOSLatinUS", kTextEncodingDOSLatinUS},
{"DOSGreek", kTextEncodingDOSGreek},
{"DOSBalticRim", kTextEncodingDOSBalticRim},
{"DOSLatin1", kTextEncodingDOSLatin1},
{"DOSGreek1", kTextEncodingDOSGreek1},
{"DOSLatin2", kTextEncodingDOSLatin2},
{"DOSCyrillic", kTextEncodingDOSCyrillic},
{"DOSTurkish", kTextEncodingDOSTurkish},
{"DOSPortuguese", kTextEncodingDOSPortuguese},
{"DOSIcelandic", kTextEncodingDOSIcelandic},
{"DOSHebrew", kTextEncodingDOSHebrew},
{"DOSCanadianFrench", kTextEncodingDOSCanadianFrench},
{"DOSArabic", kTextEncodingDOSArabic},
{"DOSNordic", kTextEncodingDOSNordic},
{"DOSRussian", kTextEncodingDOSRussian},
{"DOSGreek2", kTextEncodingDOSGreek2},
{"DOSThai", kTextEncodingDOSThai},
{"DOSJapanese", kTextEncodingDOSJapanese},
{"DOSChineseSimplif", kTextEncodingDOSChineseSimplif},
{"DOSKorean", kTextEncodingDOSKorean},
{"DOSChineseTrad", kTextEncodingDOSChineseTrad},
{"WindowsLatin1", kTextEncodingWindowsLatin1},
{"WindowsANSI", kTextEncodingWindowsANSI},
{"WindowsLatin2", kTextEncodingWindowsLatin2},
{"WindowsCyrillic", kTextEncodingWindowsCyrillic},
{"WindowsGreek", kTextEncodingWindowsGreek},
{"WindowsLatin5", kTextEncodingWindowsLatin5},
{"WindowsHebrew", kTextEncodingWindowsHebrew},
{"WindowsArabic", kTextEncodingWindowsArabic},
{"WindowsBalticRim", kTextEncodingWindowsBalticRim},
{"WindowsVietnamese", kTextEncodingWindowsVietnamese},
{"WindowsKoreanJohab", kTextEncodingWindowsKoreanJohab},
{"US_ASCII", kTextEncodingUS_ASCII},
{"JIS_X0201_76", kTextEncodingJIS_X0201_76},
{"JIS_X0208_83", kTextEncodingJIS_X0208_83},
{"JIS_X0208_90", kTextEncodingJIS_X0208_90},
{"JIS_X0212_90", kTextEncodingJIS_X0212_90},
{"JIS_C6226_78", kTextEncodingJIS_C6226_78},
{"ShiftJIS_X0213_00", kTextEncodingShiftJIS_X0213_00},
{"GB_2312_80", kTextEncodingGB_2312_80},
{"GBK_95", kTextEncodingGBK_95},
{"GB_18030_2000", kTextEncodingGB_18030_2000},
{"KSC_5601_87", kTextEncodingKSC_5601_87},
{"KSC_5601_92_Johab", kTextEncodingKSC_5601_92_Johab},
{"CNS_11643_92_P1", kTextEncodingCNS_11643_92_P1},
{"CNS_11643_92_P2", kTextEncodingCNS_11643_92_P2},
{"CNS_11643_92_P3", kTextEncodingCNS_11643_92_P3},
{"ISO_2022_JP", kTextEncodingISO_2022_JP},
{"ISO_2022_JP_2", kTextEncodingISO_2022_JP_2},
{"ISO_2022_JP_1", kTextEncodingISO_2022_JP_1},
{"ISO_2022_JP_3", kTextEncodingISO_2022_JP_3},
{"ISO_2022_CN", kTextEncodingISO_2022_CN},
{"ISO_2022_CN_EXT", kTextEncodingISO_2022_CN_EXT},
{"ISO_2022_KR", kTextEncodingISO_2022_KR},
{"EUC_JP", kTextEncodingEUC_JP},
{"EUC_CN", kTextEncodingEUC_CN},
{"EUC_TW", kTextEncodingEUC_TW},
{"EUC_KR", kTextEncodingEUC_KR},
{"ShiftJIS", kTextEncodingShiftJIS},
{"KOI8_R", kTextEncodingKOI8_R},
{"Big5", kTextEncodingBig5},
{"MacRomanLatin1", kTextEncodingMacRomanLatin1},
{"HZ_GB_2312", kTextEncodingHZ_GB_2312},
{"Big5_HKSCS_1999", kTextEncodingBig5_HKSCS_1999},
{"NextStepLatin", kTextEncodingNextStepLatin},
{"EBCDIC_US", kTextEncodingEBCDIC_US},
{"EBCDIC_CP037", kTextEncodingEBCDIC_CP037},
{"MultiRun", kTextEncodingMultiRun},
/* Terminator */
{NULL, -1},
};
int i;
i = 0;
for (i = 0; encodetable[i].name != NULL; ++i)
{
if (STRICMP(encodename, encodetable[i].name) == 0)
break;
}
return encodetable[i].encode;
}
/*
* iconv interfaces
*/
iconv_t
iconv_open(const char* tocode, const char* fromcode)
{
TextEncoding toEnc, fromEnc;
iconv_t cd = NULL;
OSStatus st;
/* Verify to/from encoding name */
toEnc = get_textencoding(tocode);
fromEnc = get_textencoding(fromcode);
if (toEnc < 0 || fromEnc < 0)
goto ICONV_OPEN_ERR;
/* Allocate memory to object */
cd = (iconv_t)alloc(sizeof(struct _iconv_t));
if (!cd)
goto ICONV_OPEN_ERR;
vim_memset(cd, 0, sizeof(struct _iconv_t));
/* Create converter */
if (fromEnc != toEnc)
{
TRACE("*** fromEnc=%d toEnc=%d\n", (int)fromEnc, (int)toEnc);
st = TECCreateConverter(&cd->tec, fromEnc, toEnc);
if (st != 0)
{
TRACE("*** TECCreateConverter()=%d\n", (int)st);
goto ICONV_OPEN_ERR;
}
/* Create reverse converter */
st = TECCreateConverter(&cd->tecReverse, toEnc, fromEnc);
if (st != 0)
{
TRACE("*** TECCreateConverter()=%d (reverse)\n", (int)st);
goto ICONV_OPEN_ERR;
}
/* Create Sniffer */
st = TECCreateSniffer(&cd->sniff, &fromEnc, 1);
if (st != 0)
{
TRACE("*** TECCreateSniffer()=%d\n", (int)st);
goto ICONV_OPEN_ERR;
}
}
cd->from = fromEnc;
cd->to = toEnc;
last_errno = 0;
return cd;
ICONV_OPEN_ERR:
if (cd)
iconv_close(cd);
last_errno = EINVAL;
return (iconv_t)-1;
}
/*
* Used when there are same value in 'from encoding' and 'to encoding'.
* TEC doesn't support conversion between same encodings, and
* TECCreateConverter() failed.
*/
static size_t
null_conv(iconv_t cd, const char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft)
{
const char* buf_in = inbuf && *inbuf ? *inbuf : NULL;
char* buf_out = outbuf && *outbuf ? *outbuf : NULL;
if (buf_in)
{
int in_len = inbytesleft ? *inbytesleft : 0;
int out_len = outbytesleft ? *outbytesleft : 0;
if (!buf_out || out_len <= 0)
{
last_errno = E2BIG;
return -1;
}
else if (in_len > 0)
{
int len = in_len < out_len ? in_len : out_len;
memcpy (buf_out, buf_in, len);
*inbuf += len;
*outbuf += len;
*inbytesleft -= len;
*outbytesleft -= len;
if (*outbytesleft <= 0)
{
last_errno = E2BIG;
return -1;
}
}
}
last_errno = 0;
return 0;
}
size_t
iconv(iconv_t cd, const char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft)
{
ConstTextPtr buf_in;
TextPtr buf_out;
ByteCount out_len, out_true;
ByteCount in_len, in_true;
OSStatus st;
if (!cd)
{
last_errno = ENOENT; /* TODO: Another error code should be set */
return -1;
}
if (cd->from == cd->to)
return null_conv(cd, inbuf, inbytesleft, outbuf, outbytesleft) ;
buf_in = (TextPtr) inbuf ;
buf_out = (TextPtr) outbuf ;
out_len = out_true = -1;
in_len = in_true = -1;
if (buf_in && buf_out)
{
ItemCount error, feature;
/* Normal convert mode */
if (!inbytesleft || !outbytesleft)
{
last_errno = EFAULT;
return -1;
}
in_len = *inbytesleft;
out_len = *outbytesleft;
/* Check stream is form in expected encoding or not */
st = TECSniffTextEncoding(cd->sniff, (TextPtr)buf_in, in_len,
&cd->from, 1, &error, 1, &feature, 1);
TRACE("TECSniffTextEncoding()=%d error=%d feature=%d\n",
(int)st, (int)error, (int)feature);
if ((error != 0 || feature == 0)
&& !(error == 0xffffffff && feature == 0xffffffff))
/* Not expected encoding */
st = kTECUnmappableElementErr;
else
{
/* Do convert */
st = TECConvertText(cd->tec,
buf_in, in_len, &in_true,
buf_out, out_len, &out_true);
/* Verify converted text. Compare original text with reverse
* converted text. If not match, there is some problem on
* converting. */
if (st == 0 && in_true > 0)
{
ByteCount rev_in, rev_out;
TextPtr buf_rev = (TextPtr)alloc(in_true);
if (buf_rev)
{
st = TECConvertText(cd->tecReverse,
buf_out, out_true, &rev_in,
buf_rev, in_true, &rev_out);
if (st != 0 || rev_in != out_true || rev_out != in_true
|| memcmp(buf_rev, buf_in, rev_out) != 0)
{
#ifdef ICONVOSX_DEBUG
fprintf(stderr, " reverse conversion failed.\n");
#endif
st = kTECUnmappableElementErr;
}
vim_free(buf_rev);
}
else
st = kTECUnmappableElementErr;
}
}
}
else if (!buf_in && buf_out)
{
/* Flush all buffered strings to buffer, and reset status */
if (!outbytesleft)
{
last_errno = EFAULT;
return -1;
}
out_len = *outbytesleft;
st = TECFlushText(cd->tec,
buf_out, out_len, &out_true);
}
else if (!buf_in && !buf_out)
{
/* Reset cd's status and cancel buffered strings */
unsigned char tmp_out[256];
buf_out = tmp_out;
out_len = sizeof(tmp_out);
st = TECFlushText(cd->tec,
buf_out, out_len, &out_true);
}
else
{
last_errno = EFAULT;
return -1;
}
TRACE("st=%d, buf_in=%p, in_len=%d, in_true=%d\n"
" buf_out=%p, out_len=%d, out_true=%d\n", (int)st,
buf_in, (int)in_len, (int)in_true,
buf_out, (int)out_len, (int)out_true);
switch (st)
{
case 0:
/* No error */
if (inbytesleft)
*inbytesleft -= in_true;
if (outbytesleft)
*outbytesleft -= out_true;
if (inbuf && *inbuf)
*inbuf += in_true;
if (outbuf && *outbuf)
*outbuf += out_true;
last_errno = 0;
return 0; /* No error */
case kTECUnmappableElementErr:
last_errno = EILSEQ;
case kTECIncompleteElementErr:
last_errno = EINVAL;
case kTECOutputBufferFullStatus:
last_errno = E2BIG;
return -1;
default:
TRACE("iconv(%p, %p, %p, %p, %p) failed. (%d)\n",
cd, inbuf, inbytesleft, outbuf, outbytesleft, (int)st);
last_errno = EFAULT;
return -1;
}
}
int
iconv_close(iconv_t cd)
{
if (cd)
{
/* Free all elements of iconv_t */
if (cd->tec)
TECDisposeConverter(cd->tec);
if (cd->tecReverse)
TECDisposeConverter(cd->tecReverse);
if (cd->sniff)
TECDisposeSniffer(cd->sniff);
vim_free(cd);
last_errno = 0;
return 0;
}
else
{
last_errno = EINVAL;
return -1;
}
}
int *
iconv_errno()
{
return &last_errno;
}
#endif /* MACOS_X_ICONVEMU */
#ifdef FEAT_CLIPBOARD #ifdef FEAT_CLIPBOARD
/* Used to identify clipboard data copied from Vim. */
NSString *VimPboardType = @"VimPboardType";
void void
clip_mch_lose_selection(VimClipboard *cbd) clip_mch_lose_selection(VimClipboard *cbd)
{ {