Mercurial > vim
view src/testdir/test_lispindent.vim @ 31099:3396d7f4b580 v9.0.0884
patch 9.0.0884: mouse shape remains in op-pending mode after failed change
Commit: https://github.com/vim/vim/commit/cdeb65729d96c90320b9009e583ade305c396f29
Author: zeertzjq <zeertzjq@outlook.com>
Date: Tue Nov 15 13:46:12 2022 +0000
patch 9.0.0884: mouse shape remains in op-pending mode after failed change
Problem: Mouse shape remains in op-pending mode after failed change.
Solution: Reset finish_op and restore it. (closes https://github.com/vim/vim/issues/11545)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 15 Nov 2022 15:00:06 +0100 |
parents | 40df8a6515f6 |
children |
line wrap: on
line source
" 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_lispindent_with_indentexpr() enew setl ai lisp nocin indentexpr=11 exe "normal a(x\<CR>1\<CR>2)\<Esc>" let expected = ['(x', ' 1', ' 2)'] call assert_equal(expected, getline(1, 3)) " with Lisp indenting the first line is not indented normal 1G=G call assert_equal(expected, getline(1, 3)) %del setl lispoptions=expr:1 indentexpr=5 exe "normal a(x\<CR>1\<CR>2)\<Esc>" let expected_expr = ['(x', ' 1', ' 2)'] call assert_equal(expected_expr, getline(1, 3)) normal 2G2<<=G call assert_equal(expected_expr, getline(1, 3)) setl lispoptions=expr:0 " with Lisp indenting the first line is not indented normal 1G3<<=G call assert_equal(expected, getline(1, 3)) bwipe! 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