0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

updated for version 7.0082

This commit is contained in:
Bram Moolenaar 2005-06-07 21:12:49 +00:00
parent 82cf9b6851
commit 0e4d877ed8
7 changed files with 194 additions and 54 deletions

View File

@ -1,4 +1,4 @@
*todo.txt* For Vim version 7.0aa. Last change: 2005 Jun 06 *todo.txt* For Vim version 7.0aa. Last change: 2005 Jun 07
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -30,9 +30,6 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
*known-bugs* *known-bugs*
-------------------- Known bugs and current work ----------------------- -------------------- Known bugs and current work -----------------------
Patch in if_cscope.c also in 6.3? (Froloff)
Sergey says it's OK.
Add extra list of file locations. Can be used with: Add extra list of file locations. Can be used with:
:ltag list of matching tags, like :tselect :ltag list of matching tags, like :tselect
@ -95,21 +92,10 @@ PLANNED FOR VERSION 7.0:
- Add SPELLCHECKER, with support for many languages. - Add SPELLCHECKER, with support for many languages.
- Use "engspchk" from Charles Campbell for ideas (commands, rare words). - Use "engspchk" from Charles Campbell for ideas (commands, rare words).
- Should quickly return if there is no word with the character.
Use array with flags, indicating if there is a word starting with this
byte. Quickly skip bytes where no word can start.
- Spell checking code todo's: - Spell checking code todo's:
- Also allow replacing a word list. Need some mechanism to tell
wether a spell file adds or replaces one found later in
'runtimepath'.
- Is "-" to be considered a word character? "last-minute". - Is "-" to be considered a word character? "last-minute".
No, in Dutch it can be added optionally. Then make English No, in Dutch it can be added optionally. Then make English
dictionaries consistent. dictionaries consistent.
- Implement user and project word lists. Commands to add words and to
mark words as wrong.
- In .aff use RAR to define affix name for rare word.
- In .aff use HUH to define affix name for keep-case word.
's morgens/= does not match 'S morgens
- Implement compound words? - Implement compound words?
- When @Spell and @NoSpell are both used only do spell checking for - When @Spell and @NoSpell are both used only do spell checking for
@Spell items, not where they both appear. Useful for Perl pod. @Spell items, not where they both appear. Useful for Perl pod.
@ -125,11 +111,8 @@ PLANNED FOR VERSION 7.0:
author: Kevin Hendricks <kevin.hendricks@sympatico.ca> author: Kevin Hendricks <kevin.hendricks@sympatico.ca>
- More complicated: Regions with different languages? E.g. comments in - More complicated: Regions with different languages? E.g. comments in
English, strings in German (po file). English, strings in German (po file).
- Commands required: - Update option window for 'verbosefile', 'spell', 'spellfile' and
add word to private dict: wrong and OK (in popup menu for evim) 'spelllang'.
:spell good <word> zg
:spell wrong <word> zw
- Update option window for 'verbosefile', 'spell' and 'spelllang'.
- Distribution: Need wordlists for many languages; "language pack" - Distribution: Need wordlists for many languages; "language pack"
Put them on the ftp site, ready to download. Include README for Put them on the ftp site, ready to download. Include README for
copyrights. copyrights.
@ -143,7 +126,8 @@ PLANNED FOR VERSION 7.0:
cluster" but change the contains list directly for matching syntax cluster" but change the contains list directly for matching syntax
items. items.
- Install spell files with src/main.aap. - Install spell files with src/main.aap.
Alternatives using ispell or aspell: - Alternate Dutch word list at www.nederlandsewoorden.nl (use script to
obtain).
- REFACTORING: The main() function is very long. Move parts to separate - REFACTORING: The main() function is very long. Move parts to separate
functions, especially loops. Ideas from Walter Briscoe (2003 Apr 3, 2004 functions, especially loops. Ideas from Walter Briscoe (2003 Apr 3, 2004

View File

@ -1,4 +1,4 @@
*version7.txt* For Vim version 7.0aa. Last change: 2005 Jun 06 *version7.txt* For Vim version 7.0aa. Last change: 2005 Jun 07
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@ -428,6 +428,8 @@ PHP compiler plugin. (Doug Kearns)
Sive syntax file. (Nikolai Weibull) Sive syntax file. (Nikolai Weibull)
Pascal indent file. (Neil Carter)
Moved all the indent settings from the filetype plugin to the indent file. Moved all the indent settings from the filetype plugin to the indent file.
Implemented b:undo_indent to undo indent settings when setting 'filetype' to a Implemented b:undo_indent to undo indent settings when setting 'filetype' to a
different value. different value.

173
runtime/indent/pascal.vim Normal file
View File

@ -0,0 +1,173 @@
" Vim indent file
" Language: Pascal
" Maintainer: Neil Carter <n.carter@swansea.ac.uk>
" Created: 2004 Jul 13
" Last Change: 2005 Jun 07
" TODO: Reduce indentation on line after a statement that flowed across
" two lines (e.g. parameter list closed on second line). Also, increase
" indent of a becomes-statement that flows onto second line.
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal indentexpr=GetPascalIndent(v:lnum)
" Appending an & to an option sets it to its default value.
setlocal indentkeys&
setlocal indentkeys+=~end;,=~const,=~type,=~var,=~begin,=~repeat,=~until,=~for
setlocal indentkeys+=~program,=~function,=~procedure,=~object,=~private
setlocal indentkeys+=~record,=~if,=~else,=~case
if exists("*GetPascalIndent")
finish
endif
function s:GetPrevLineNum( line_num )
" Skip over comments and conditional directives
let SKIP_LINES = '^\s*\((\*\)\|\(\*\ \)\|\(\*)\)\|\({\$\)'
let nline = a:line_num
while nline > 0
let nline = prevnonblank(nline-1)
if getline(nline) !~? SKIP_LINES
break
endif
endwhile
" call input( "nline = ".nline )
return nline
endfunction
function! GetPascalIndent( line_num )
if a:line_num == 0
return 0
endif
" If in the middle of a three-part comment
if getline( a:line_num ) =~ '^\s*\*\ '
return indent( a:line_num )
endif
" We have to subtract one to start on the line before the current
" one. Otherwise, prevnonblank() returns the current line!
let prev_line_num = s:GetPrevLineNum( a:line_num )
let prev_line = getline( prev_line_num )
let indnt = indent( prev_line_num )
let this_line = getline( a:line_num )
" At the start of a block, we have to indent the newly-created line
" based on the previous line.
" =~ means matches a regular expression
" a question mark after =~ means ignore case (# means match case)
" const, type, var should always appear at the start of a line, but
" begin can appear anywhere in the line.
" if one of the following keywords appear in the previous line with
" nothing before it but optional whitespace, and nothing after it.
" Has to be end of line at end to show this is not a routine
" parameter list. Otherwise, you'd end up with cascading vars.
" These words appear alone on a line (apart from whitespace).
if prev_line =~ '^\s*\(const\|var\|begin\|repeat\|private\)$'
" Place an & before an option to obtain its value.
let indnt = indnt + &shiftwidth
endif
" Words preceded by optional whitespace and followed by anything.
if prev_line =~ '^\s*\(for\|if\|else\|case\)'
" Place an & before an option to obtain its value.
let indnt = indnt + &shiftwidth
" if this is a multistatement block then we need to align the
" begin with the previous line.
if this_line =~ '^\s*begin'
let indnt = indnt - &shiftwidth
endif
endif
" These words may have text before them on the line (hence the .*).
if prev_line =~ '^.*\s*\<\(object\|record\)\>$'
let indnt = indnt + &shiftwidth
endif
" If we have opened a bracket and the contents spills over one line,
" then indent one level beyond the bracket's first line. RE = an
" opening bracket followed by any amount of anything other than a
" closing bracket and then the end-of-line. If we didn't include the
" end of line, this RE would match even closed brackets, since it
" would match everything up to the closing bracket.
" This test isn't clever enough to handle brackets inside strings or
" comments.
if prev_line =~ '([^*][^)]*$'
let indnt = indnt + &shiftwidth
endif
" If we just closed a bracket that started on a previous line, then
" unindent.
if prev_line =~ '^[^(]*[^*])'
let indnt = indnt - &shiftwidth
endif
" At the end of a block, we have to unindent both the current line
" (the 'end;' for instance) and the newly-created line.
if this_line =~ '^\s*\(end;\|until\|else\)'
let indnt = indnt - &shiftwidth
endif
" Keywords that always appear at the start of a line.
" Problem is that function and procedure keywords should be indented
" if within a class declaration.
if this_line =~ '^\s*\<type\|uses\|$IFDEF\|$ENDIF\|procedure\|function\>'
let indnt = 0
endif
if prev_line =~ '^\s*\<type\|uses\>'
let indnt = &shiftwidth
endif
" Put conditional compile directives on first column.
if this_line =~ '^\s*{\$'
let indnt = 0
endif
return indnt
endfunction
" TODO: end; should align with the previous (begin/record/object/else).
" "else begin" is the only case where begin does not appear at the start
" of the line.
" TODO: Don't align with {$IFDEF}
"Example from vb.vim
" regular expression match, case insensitive
"if previous_line =~?
" start of line, zero or more whitespace
"'^\s*
" start of word
"\<
"
"\(
" begin\|
" \%(
" \%(
" private\|public\|friend
" \)
" \s\+
" \)
" zero or more of the previous atom
" \=
" \%(
" function\|sub\|property
" \)
" \|select\|case\|default\|if
"\>
" .\{-}\<then\>\s*$\|else\|elseif\|do\|for\|while\|enum\|with
"\)
" end of word
"\>'
" let ind = ind + &sw
"endif

View File

@ -7931,7 +7931,7 @@ f_filereadable(argvars, rettv)
} }
/* /*
* return 0 for not writable, 1 for writable file, 2 for a dir which we have * Return 0 for not writable, 1 for writable file, 2 for a dir which we have
* rights to write into. * rights to write into.
*/ */
static void static void
@ -7939,34 +7939,7 @@ f_filewritable(argvars, rettv)
typval_T *argvars; typval_T *argvars;
typval_T *rettv; typval_T *rettv;
{ {
char_u *p; rettv->vval.v_number = filewritable(get_tv_string(&argvars[0]));
int retval = 0;
#if defined(UNIX) || defined(VMS)
int perm = 0;
#endif
p = get_tv_string(&argvars[0]);
#if defined(UNIX) || defined(VMS)
perm = mch_getperm(p);
#endif
#ifndef MACOS_CLASSIC /* TODO: get either mch_writable or mch_access */
if (
# ifdef WIN3264
mch_writable(p) &&
# else
# if defined(UNIX) || defined(VMS)
(perm & 0222) &&
# endif
# endif
mch_access((char *)p, W_OK) == 0
)
#endif
{
++retval;
if (mch_isdir(p))
++retval;
}
rettv->vval.v_number = retval;
} }
static void findfilendir __ARGS((typval_T *argvars, typval_T *rettv, int dir)); static void findfilendir __ARGS((typval_T *argvars, typval_T *rettv, int dir));
@ -9491,6 +9464,9 @@ f_has(argvars, rettv)
#ifdef FEAT_NETBEANS_INTG #ifdef FEAT_NETBEANS_INTG
"netbeans_intg", "netbeans_intg",
#endif #endif
#ifdef FEAT_SYN_HL
"spell",
#endif
#ifdef FEAT_SYN_HL #ifdef FEAT_SYN_HL
"syntax", "syntax",
#endif #endif

View File

@ -2433,7 +2433,7 @@ do_write(eap)
{ {
/* Overwriting a file that is loaded in another buffer is not a /* Overwriting a file that is loaded in another buffer is not a
* good idea. */ * good idea. */
EMSG(_("E139: File is loaded in another buffer")); EMSG(_(e_bufloaded));
goto theend; goto theend;
} }
} }
@ -2591,7 +2591,7 @@ check_overwrite(eap, buf, fname, ffname, other)
{ {
char_u buff[IOSIZE]; char_u buff[IOSIZE];
dialog_msg(buff, _("Overwrite existing file \"%.*s\"?"), fname); dialog_msg(buff, _("Overwrite existing file \"%s\"?"), fname);
if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) != VIM_YES) if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) != VIM_YES)
return FAIL; return FAIL;
eap->forceit = TRUE; eap->forceit = TRUE;
@ -2721,7 +2721,7 @@ check_readonly(forceit, buf)
{ {
char_u buff[IOSIZE]; char_u buff[IOSIZE];
dialog_msg(buff, _("'readonly' option is set for \"%.*s\".\nDo you wish to write anyway?"), dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"),
buf->b_fname); buf->b_fname);
if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) == VIM_YES) if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) == VIM_YES)

View File

@ -757,6 +757,10 @@ EX(CMD_sort, "sort", ex_sort,
RANGE|DFLALL|WHOLEFOLD|BANG|EXTRA|NOTRLCOM|MODIFY), RANGE|DFLALL|WHOLEFOLD|BANG|EXTRA|NOTRLCOM|MODIFY),
EX(CMD_split, "split", ex_splitview, EX(CMD_split, "split", ex_splitview,
BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR), BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_spellgood, "spellgood", ex_spell,
NEEDARG|EXTRA|TRLBAR),
EX(CMD_spellwrong, "spellwrong", ex_spell,
NEEDARG|EXTRA|TRLBAR),
EX(CMD_sprevious, "sprevious", ex_previous, EX(CMD_sprevious, "sprevious", ex_previous,
EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR), EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_srewind, "srewind", ex_rewind, EX(CMD_srewind, "srewind", ex_rewind,

View File

@ -92,4 +92,5 @@ int get_user_name __ARGS((char_u *buf, int len));
void sort_strings __ARGS((char_u **files, int count)); void sort_strings __ARGS((char_u **files, int count));
int pathcmp __ARGS((const char *p, const char *q, int maxlen)); int pathcmp __ARGS((const char *p, const char *q, int maxlen));
char_u *parse_list_options __ARGS((char_u *option_str, option_table_T *table, int table_size)); char_u *parse_list_options __ARGS((char_u *option_str, option_table_T *table, int table_size));
int filewritable __ARGS((char_u *fname));
/* vim: set ft=c : */ /* vim: set ft=c : */