view src/testdir/test_lispwords.vim @ 28614:9ae2c32841fb v8.2.4831

patch 8.2.4831: crash when using maparg() and unmapping simplified keys Commit: https://github.com/vim/vim/commit/2c8a7ebdad9da017bfb6dc8a0f46acea77ec2e17 Author: zeertzjq <zeertzjq@outlook.com> Date: Tue Apr 26 21:36:21 2022 +0100 patch 8.2.4831: crash when using maparg() and unmapping simplified keys Problem: Crash when using maparg() and unmapping simplified keys. Solution: Do not keep a mapblock pointer. (closes https://github.com/vim/vim/issues/10294)
author Bram Moolenaar <Bram@vim.org>
date Tue, 26 Apr 2022 22:45:03 +0200
parents 6d3c683466f4
children 9bc63b4f9c33
line wrap: on
line source

" Tests for 'lispwords' settings being global-local

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

" vim: shiftwidth=2 sts=2 expandtab