Problem: Lisp word only recognized when a space follows.
Solution: Also match a word at the end of a line. Rename the test. Use a
compiled function to avoid backslashes.
{
(void)copy_option_part(&word, buf, LSIZE, ",");
len = (int)STRLEN(buf);
- if (STRNCMP(buf, p, len) == 0 && p[len] == ' ')
+ if (STRNCMP(buf, p, len) == 0 && IS_WHITE_OR_NUL(p[len]))
return TRUE;
}
return FALSE;
test_largefile \
test_let \
test_lineending \
- test_lispwords \
+ test_lispindent \
test_listchars \
test_listdict \
test_listener \
test_langmap.res \
test_let.res \
test_lineending.res \
+ test_lispindent.res \
test_listchars.res \
test_listdict.res \
test_listener.res \
source test_ga.vim
source test_glob2regpat.vim
source test_global.vim
-source test_lispwords.vim
source test_move.vim
source test_put.vim
source test_reltime.vim
let &cpo = save_cpo
endfunc
-" Test for the 'p' flag in 'cpo' is in the test_lispwords.vim file.
+" Test for the 'p' flag in 'cpo' is in the test_lispindent.vim file.
" Test for the 'P' flag in 'cpo' (appending to a file sets the current file
" name)
--- /dev/null
+" Tests for 'lispwords' settings being global-local.
+" And other lisp indent stuff.
+
+set nocompatible viminfo+=nviminfo
+
+func Test_global_local_lispwords()
+ setglobal lispwords=foo,bar,baz
+ setlocal lispwords-=foo | setlocal lispwords+=quux
+ call assert_equal('foo,bar,baz', &g:lispwords)
+ call assert_equal('bar,baz,quux', &l:lispwords)
+ call assert_equal('bar,baz,quux', &lispwords)
+
+ setlocal lispwords<
+ call assert_equal('foo,bar,baz', &g:lispwords)
+ call assert_equal('foo,bar,baz', &l:lispwords)
+ call assert_equal('foo,bar,baz', &lispwords)
+endfunc
+
+def Test_lisp_indent()
+ enew!
+
+ append(0, [
+ '(defun html-file (base)',
+ '(format nil "~(~A~).html" base))',
+ '',
+ '(defmacro page (name title &rest body)',
+ '(let ((ti (gensym)))',
+ '`(with-open-file (*standard-output*',
+ '(html-file ,name)',
+ ':direction :output',
+ ':if-exists :supersede)',
+ '(let ((,ti ,title))',
+ '(as title ,ti)',
+ '(with center ',
+ '(as h2 (string-upcase ,ti)))',
+ '(brs 3)',
+ ',@body))))',
+ '',
+ ';;; Utilities for generating links',
+ '',
+ '(defmacro with-link (dest &rest body)',
+ '`(progn',
+ '(format t "<a href=\"~A\">" (html-file ,dest))',
+ ',@body',
+ '(princ "</a>")))'
+ ])
+ assert_equal(7, lispindent(2))
+ assert_equal(5, 6->lispindent())
+ assert_fails('lispindent(-1)', 'E966: Invalid line number: -1')
+
+ set lisp
+ set lispwords&
+ var save_copt = &cpoptions
+ set cpoptions+=p
+ normal 1G=G
+
+ assert_equal([
+ '(defun html-file (base)',
+ ' (format nil "~(~A~).html" base))',
+ '',
+ '(defmacro page (name title &rest body)',
+ ' (let ((ti (gensym)))',
+ ' `(with-open-file (*standard-output*',
+ ' (html-file ,name)',
+ ' :direction :output',
+ ' :if-exists :supersede)',
+ ' (let ((,ti ,title))',
+ ' (as title ,ti)',
+ ' (with center ',
+ ' (as h2 (string-upcase ,ti)))',
+ ' (brs 3)',
+ ' ,@body))))',
+ '',
+ ';;; Utilities for generating links',
+ '',
+ '(defmacro with-link (dest &rest body)',
+ ' `(progn',
+ ' (format t "<a href=\"~A\">" (html-file ,dest))',
+ ' ,@body',
+ ' (princ "</a>")))',
+ ''
+ ], getline(1, "$"))
+
+ enew!
+ &cpoptions = save_copt
+ set nolisp
+enddef
+
+func Test_lispindent_negative()
+ " in legacy script there is no error
+ call assert_equal(-1, lispindent(-1))
+endfunc
+
+func Test_lisp_indent_works()
+ " This was reading beyond the end of the line
+ new
+ exe "norm a\tü(\<CR>="
+ set lisp
+ norm ==
+ bwipe!
+endfunc
+
+" vim: shiftwidth=2 sts=2 expandtab
+++ /dev/null
-" Tests for 'lispwords' settings being global-local.
-" And other lisp indent stuff.
-
-set nocompatible viminfo+=nviminfo
-
-func Test_global_local_lispwords()
- setglobal lispwords=foo,bar,baz
- setlocal lispwords-=foo | setlocal lispwords+=quux
- call assert_equal('foo,bar,baz', &g:lispwords)
- call assert_equal('bar,baz,quux', &l:lispwords)
- call assert_equal('bar,baz,quux', &lispwords)
-
- setlocal lispwords<
- call assert_equal('foo,bar,baz', &g:lispwords)
- call assert_equal('foo,bar,baz', &l:lispwords)
- call assert_equal('foo,bar,baz', &lispwords)
-endfunc
-
-func Test_lisp_indent()
- enew!
-
- call append(0, [
- \ '(defun html-file (base)',
- \ '(format nil "~(~A~).html" base))',
- \ '',
- \ '(defmacro page (name title &rest body)',
- \ '(let ((ti (gensym)))',
- \ '`(with-open-file (*standard-output*',
- \ '(html-file ,name)',
- \ ':direction :output',
- \ ':if-exists :supersede)',
- \ '(let ((,ti ,title))',
- \ '(as title ,ti)',
- \ '(with center ',
- \ '(as h2 (string-upcase ,ti)))',
- \ '(brs 3)',
- \ ',@body))))',
- \ '',
- \ ';;; Utilities for generating links',
- \ '',
- \ '(defmacro with-link (dest &rest body)',
- \ '`(progn',
- \ '(format t "<a href=\"~A\">" (html-file ,dest))',
- \ ',@body',
- \ '(princ "</a>")))'
- \ ])
- call assert_equal(7, lispindent(2))
- call assert_equal(5, 6->lispindent())
- call assert_equal(-1, lispindent(-1))
-
- set lisp
- set lispwords&
- let save_copt = &cpoptions
- set cpoptions+=p
- normal 1G=G
-
- call assert_equal([
- \ '(defun html-file (base)',
- \ ' (format nil "~(~A~).html" base))',
- \ '',
- \ '(defmacro page (name title &rest body)',
- \ ' (let ((ti (gensym)))',
- \ ' `(with-open-file (*standard-output*',
- \ ' (html-file ,name)',
- \ ' :direction :output',
- \ ' :if-exists :supersede)',
- \ ' (let ((,ti ,title))',
- \ ' (as title ,ti)',
- \ ' (with center ',
- \ ' (as h2 (string-upcase ,ti)))',
- \ ' (brs 3)',
- \ ' ,@body))))',
- \ '',
- \ ';;; Utilities for generating links',
- \ '',
- \ '(defmacro with-link (dest &rest body)',
- \ ' `(progn',
- \ ' (format t "<a href=\"~A\">" (html-file ,dest))',
- \ ' ,@body',
- \ ' (princ "</a>")))',
- \ ''
- \ ], getline(1, "$"))
-
- enew!
- let &cpoptions=save_copt
- set nolisp
-endfunc
-
-func Test_lisp_indent_works()
- " This was reading beyond the end of the line
- new
- exe "norm a\tü(\<CR>="
- set lisp
- norm ==
- bwipe!
-endfunc
-
-" vim: shiftwidth=2 sts=2 expandtab
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 737,
/**/
736,
/**/