Mercurial > vim
view src/testdir/test_lispindent.vim @ 32160:98774a275d6d v9.0.1411
patch 9.0.1411: accuracy of profiling is not optimal
Commit: https://github.com/vim/vim/commit/076de79ad832558267b3ff903c048df2f4c1a5d6
Author: Ernie Rael <errael@raelity.com>
Date: Thu Mar 16 21:43:15 2023 +0000
patch 9.0.1411: accuracy of profiling is not optimal
Problem: Accuracy of profiling is not optimal.
Solution: Use CLOCK_MONOTONIC if possible. (Ernie Rael, closes https://github.com/vim/vim/issues/12129)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 16 Mar 2023 22:45:04 +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