Mercurial > vim
view src/testdir/test_lispindent.vim @ 34780:54890be01c00 v9.1.0265
patch 9.1.0265: console dialog cannot save unnamed buffers
Commit: https://github.com/vim/vim/commit/df46115fc839c8912ed60646e86a412e5180ba1d
Author: glepnir <glephunter@gmail.com>
Date: Thu Apr 4 22:23:29 2024 +0200
patch 9.1.0265: console dialog cannot save unnamed buffers
Problem: console dialog cannot save unnamed buffers
Solution: set bufname before save (glepnir). Define dialog_con_gui
to test for GUI+Console dialog support, use it to skip
the test when the GUI feature has been defined.
Note: The dialog_changed() function will also try to call the
browse_save_fname() function, when FEAT_BROWSE is defined (which is only
defined in a GUI build of Vim). This will eventually lead to a call of
do_browse(), which causes an error message if a GUI is not currently
running (see the TODO: in do_browse()) and will then lead to a failure
in Test_goto_buf_with_onfirm().
Therefore, we must disable the Test_goto_buf_with_onfirm(), when the
dialog_con_gui feature is enabled (which basically means dialog feature
for GUI and Console builds, in contrast to the dialog_con and dialog_gui
feature).
(Previously this wasn't a problem, because the test aborted in the YES
case for the :confirm :b XgotoConf case and did therefore not run into
the browse function call)
closes: #14398
Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 04 Apr 2024 23:45:02 +0200 |
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