To: vim-dev@vim.org Subject: patch 5.5a.3 Fcc: outbox From: Bram Moolenaar ------------ Patch 5.5a.3 Problem: Editing compressed ".gz" files doesn't work on non-Unix systems, because there is no "mv" command. Solution: Add the rename() function and use it instead of ":!mv". Also: Disable the automatic jump to the last position, because it changes the jumplist. Files: src/eval.c, runtime/doc/eval.txt, runtime/vimrc_example.vim *** ../vim-5.5a.2/src/eval.c Wed Sep 1 17:48:59 1999 --- src/eval.c Wed Sep 1 11:34:20 1999 *************** *** 193,198 **** --- 193,199 ---- static void f_matchend __ARGS((VAR argvars, VAR retvar)); static void f_matchstr __ARGS((VAR argvars, VAR retvar)); static void f_nr2char __ARGS((VAR argvars, VAR retvar)); + static void f_rename __ARGS((VAR argvars, VAR retvar)); static void f_setline __ARGS((VAR argvars, VAR retvar)); static void f_some_match __ARGS((VAR argvars, VAR retvar, int start)); static void f_strftime __ARGS((VAR argvars, VAR retvar)); *************** *** 1866,1871 **** --- 1867,1873 ---- {"matchend", 2, 2, f_matchend}, {"matchstr", 2, 2, f_matchstr}, {"nr2char", 1, 1, f_nr2char}, + {"rename", 2, 2, f_rename}, {"setline", 2, 2, f_setline}, #ifdef HAVE_STRFTIME {"strftime", 1, 2, f_strftime}, *************** *** 3548,3553 **** --- 3550,3569 ---- buf[0] = (char_u)get_var_number(&argvars[0]); retvar->var_type = VAR_STRING; retvar->var_val.var_string = vim_strnsave(buf, 1); + } + + /* + * "rename({from}, {to})" function + */ + static void + f_rename(argvars, retvar) + VAR argvars; + VAR retvar; + { + char_u buf[NUMBUFLEN]; + + retvar->var_val.var_number = vim_rename(get_var_string(&argvars[0]), + get_var_string_buf(&argvars[1], buf)); } /* *** ../vim-5.5a.2/runtime/doc/eval.txt Mon Aug 30 10:41:10 1999 --- runtime/doc/eval.txt Wed Sep 1 11:35:41 1999 *************** *** 1,4 **** ! *eval.txt* For Vim version 5.5a. Last change: 1999 Aug 22 VIM REFERENCE MANUAL by Bram Moolenaar --- 1,4 ---- ! *eval.txt* For Vim version 5.5a. Last change: 1999 Sep 01 VIM REFERENCE MANUAL by Bram Moolenaar *************** *** 487,492 **** --- 487,493 ---- matchend( {expr}, {pat}) Number position where {pat} ends in {expr} matchstr( {expr}, {pat}) String match of {pat} in {expr} nr2char( {expr}) String single char with ASCII value {expr} + rename({from}, {to}) Number rename (move) file from {from} to {to} setline( {lnum}, {line}) Number set line {lnum} to {line} strftime( {format}[, {time}]) String time in specified format strlen( {expr}) Number length of the String {expr} *************** *** 688,695 **** to avoid triggering the FileType event again in the scripts that detect the file type. |FileType| ! *escape()* ! escape({string}, {chars}) Escape the characters in {chars} that occur in {string} with a backslash. Example: > :echo escape('c:\program files\vim', ' \') --- 689,695 ---- to avoid triggering the FileType event again in the scripts that detect the file type. |FileType| ! escape({string}, {chars}) *escape()* Escape the characters in {chars} that occur in {string} with a backslash. Example: > :echo escape('c:\program files\vim', ' \') *************** *** 1102,1107 **** --- 1102,1113 ---- value {expr}. Examples: > nr2char(64) returns "@" > nr2char(32) returns " " + + rename({from}, {to}) *rename()* + Rename the file by the name {from} to the name {to}. This + should also work to move files across file systems. The + result is a Number, which is 0 if the file was renamed + successfully, and non-zero when the renaming failed. *setline()* setline({lnum}, {line}) *** ../vim-5.5a.2/runtime/vimrc_example.vim Mon Aug 30 10:41:16 1999 --- runtime/vimrc_example.vim Wed Sep 1 17:34:55 1999 *************** *** 1,7 **** " An example for a vimrc file. " " Maintainer: Bram Moolenaar ! " Last change: 1999 Aug 29 " " To use it, copy it to " for Unix and OS/2: ~/.vimrc --- 1,7 ---- " An example for a vimrc file. " " Maintainer: Bram Moolenaar ! " Last change: 1999 Sep 01 " " To use it, copy it to " for Unix and OS/2: ~/.vimrc *************** *** 17,28 **** set history=50 " keep 50 lines of command line history set ruler " show the cursor position all the time - " Only do this part when compiled with support for autocommands. - if has("autocmd") - " In text files, always limit the width of text to 78 characters - autocmd BufRead *.txt set tw=78 - endif - " For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries " let &guioptions = substitute(&guioptions, "t", "", "g") --- 17,22 ---- *************** *** 36,42 **** --- 30,41 ---- set hlsearch endif + " Only do this part when compiled with support for autocommands. if has("autocmd") + + " In text files, always limit the width of text to 78 characters + autocmd BufRead *.txt set tw=78 + augroup cprog " Remove all cprog autocommands au! *************** *** 77,98 **** " After writing compressed file: Compress written file with "cmd" fun! GZIP_write(cmd) ! !mv :r ! execute "!" . a:cmd . " :r" endfun " Before appending to compressed file: Uncompress file with "cmd" fun! GZIP_appre(cmd) execute "!" . a:cmd . " " ! !mv :r endfun augroup END - endif ! " Only do this part when compiled with support for autocommands. ! if has("autocmd") " When editing a file, always jump to the last cursor position. " This must be after the uncompress commands. ! autocmd BufReadPost * if line("'\"") && line("'\"") <= line("$") | exe "normal `\"" | endif ! endif --- 76,100 ---- " After writing compressed file: Compress written file with "cmd" fun! GZIP_write(cmd) ! if rename(expand(""), expand(":r")) == 0 ! execute "!" . a:cmd . " :r" ! endif endfun " Before appending to compressed file: Uncompress file with "cmd" fun! GZIP_appre(cmd) execute "!" . a:cmd . " " ! call rename(expand(":r"), expand("")) endfun augroup END ! " This is disabled, because it changes the jumplist. Can't use CTRL-O to go ! " back to positions in previous files more than once. ! if 0 " When editing a file, always jump to the last cursor position. " This must be after the uncompress commands. ! autocmd BufReadPost * if line("'\"") && line("'\"") <= line("$") | exe "normal `\"" | endif ! endif ! ! endif " has("autocmd") *** ../vim-5.5a.2/src/version.c Wed Sep 1 17:48:59 1999 --- src/version.c Wed Sep 1 17:52:55 1999 *************** *** 420,420 **** --- 420,421 ---- { /* Add new patch number below this line */ + 3, -- WOMAN: King of the who? ARTHUR: The Britons. WOMAN: Who are the Britons? ARTHUR: Well, we all are. we're all Britons and I am your king. The Quest for the Holy Grail (Monty Python) --/-/---- Bram Moolenaar ---- Bram@moolenaar.net ---- Bram@vim.org ---\-\-- \ \ www.vim.org/iccf www.moolenaar.net www.vim.org / / .