annotate runtime/ftplugin/php.vim @ 30940:5bc99d85f773 v9.0.0804

patch 9.0.0804: crash when trying to divide a number by -1 Commit: https://github.com/vim/vim/commit/cdef1cefa2a440911c727558562f83ed9b00e16b Author: Bram Moolenaar <Bram@vim.org> Date: Thu Oct 20 14:17:18 2022 +0100 patch 9.0.0804: crash when trying to divide a number by -1 Problem: Crash when trying to divice the largest negative number by -1. Solution: Handle this case specifically.
author Bram Moolenaar <Bram@vim.org>
date Thu, 20 Oct 2022 15:30:03 +0200
parents 2198955f9e27
children 8ae680be2a51
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1 " Vim filetype plugin file
29659
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
2 " Language: PHP
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
3 " Maintainer: Doug Kearns <dougkearns@gmail.com>
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
4 " Previous Maintainer: Dan Sharp
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
5 " Last Changed: 2022 Jul 20
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6
29659
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
7 if exists("b:did_ftplugin")
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
8 finish
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
9 endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 " Make sure the continuation lines below do not cause problems in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 " compatibility mode.
3496
d1e4abe8342c Fixed compatible mode in most runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3410
diff changeset
13 let s:keepcpo= &cpo
d1e4abe8342c Fixed compatible mode in most runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3410
diff changeset
14 set cpo&vim
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16 " Define some defaults in case the included ftplugins don't set them.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17 let s:undo_ftplugin = ""
29659
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
18 let s:browsefilter = "HTML Files (*.html, *.htm)\t*.html;*.htm\n" ..
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
19 \ "All Files (*.*)\t*.*\n"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20 let s:match_words = ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23 let b:did_ftplugin = 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25 " Override our defaults if these were set by an included ftplugin.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 if exists("b:undo_ftplugin")
29659
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
27 " let b:undo_ftplugin = "setlocal comments< commentstring< formatoptions< omnifunc<"
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
28 let s:undo_ftplugin = b:undo_ftplugin
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 if exists("b:browsefilter")
29659
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
31 " let b:undo_ftplugin ..= " | unlet! b:browsefilter b:html_set_browsefilter"
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
32 let s:browsefilter = b:browsefilter
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34 if exists("b:match_words")
29659
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
35 " let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_words b:html_set_match_words"
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
36 let s:match_words = b:match_words
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37 endif
1125
96cd8222a819 updated for version 7.1a
vimboss
parents: 714
diff changeset
38 if exists("b:match_skip")
29659
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
39 unlet b:match_skip
1125
96cd8222a819 updated for version 7.1a
vimboss
parents: 714
diff changeset
40 endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41
29659
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
42 setlocal comments=s1:/*,mb:*,ex:*/,://,:#
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
43 setlocal commentstring=/*%s*/
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
44 setlocal formatoptions+=l formatoptions-=t
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
45
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
46 if get(g:, "php_autocomment", 1)
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
47 setlocal formatoptions+=croq
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
48 " NOTE: set g:PHP_autoformatcomment = 0 to prevent the indent plugin from
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
49 " overriding this 'comments' value
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
50 setlocal comments-=:#
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
51 " space after # comments to exclude attributes
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
52 setlocal comments+=b:#
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54
29659
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
55 if exists('&omnifunc')
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
56 setlocal omnifunc=phpcomplete#CompletePHP
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
57 endif
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
58
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
59 setlocal suffixesadd=.php
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
60
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 " ###
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62 " Provided by Mikolaj Machowski <mikmach at wp dot pl>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63 setlocal include=\\\(require\\\|include\\\)\\\(_once\\\)\\\?
1622
149d8b46404c updated for version 7.2a
vimboss
parents: 1125
diff changeset
64 " Disabled changing 'iskeyword', it breaks a command such as "*"
149d8b46404c updated for version 7.2a
vimboss
parents: 1125
diff changeset
65 " setlocal iskeyword+=$
149d8b46404c updated for version 7.2a
vimboss
parents: 1125
diff changeset
66
29659
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
67 let b:undo_ftplugin = "setlocal include< suffixesadd<"
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
68
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
69 if exists("loaded_matchit") && exists("b:html_set_match_words")
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
70 let b:match_ignorecase = 1
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
71 let b:match_words = 'PhpMatchWords()'
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
72
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
73 if !exists("*PhpMatchWords")
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
74 function! PhpMatchWords()
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
75 " The PHP syntax file uses the Delimiter syntax group for the phpRegion
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
76 " matchgroups, without a "php" prefix, so use the stack to test for the
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
77 " outer phpRegion group. This also means the closing ?> tag which is
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
78 " outside of the matched region just uses the Delimiter group for the
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
79 " end match.
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
80 let stack = synstack(line('.'), col('.'))
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
81 let php_region = !empty(stack) && synIDattr(stack[0], "name") =~# '\<php'
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
82 if php_region || getline(".") =~ '.\=\%.c\&?>'
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
83 let b:match_skip = "PhpMatchSkip('html')"
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
84 return '<?php\|<?=\=:?>,' ..
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
85 \ '\<if\>:\<elseif\>:\<else\>:\<endif\>,' ..
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
86 \ '\<switch\>:\<case\>:\<break\>:\<continue\>:\<endswitch\>,' ..
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
87 \ '\<while\>.\{-})\s*\::\<break\>:\<continue\>:\<endwhile\>,' ..
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
88 \ '\<do\>:\<break\>:\<continue\>:\<while\>,' ..
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
89 \ '\<for\>:\<break\>:\<continue\>:\<endfor\>,' ..
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
90 \ '\<foreach\>:\<break\>:\<continue\>:\<endforeach\>,' ..
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
91 \ '\%(<<<\s*\)\@<=''\=\(\h\w*\)''\=:^\s*\1\>'
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
92
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
93 " TODO: these probably aren't worth adding and really need syntax support
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
94 " '<\_s*script\_s*language\_s*=\_s*[''"]\=\_s*php\_s*[''"]\=\_s*>:<\_s*\_s*/\_s*script\_s*>,' ..
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
95 " '<%:%>,' ..
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
96 else
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
97 let b:match_skip = "PhpMatchSkip('php')"
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
98 return s:match_words
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
99 endif
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
100 endfunction
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
101 endif
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
102 if !exists("*PhpMatchSkip")
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
103 function! PhpMatchSkip(skip)
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
104 let name = synIDattr(synID(line('.'), col('.'), 1), 'name')
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
105 if a:skip == "html"
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
106 " ?> in line comments will also be correctly matched as Delimiter
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
107 return name =~? 'comment\|string' || name !~? 'php\|delimiter'
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
108 else " php
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
109 return name =~? 'comment\|string\|php'
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
110 endif
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
111 endfunction
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
112 endif
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
113 let b:undo_ftplugin ..= " | unlet! b:match_skip"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
114 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
115 " ###
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
116
29659
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
117 " Change the :browse e filter to primarily show PHP-related files.
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
118 if (has("gui_win32") || has("gui_gtk")) && exists("b:html_set_browsefilter")
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
119 let b:browsefilter = "PHP Files (*.php)\t*.php\n" ..
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
120 \ "PHP Test Files (*.phpt)\t*.phpt\n" ..
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
121 \ s:browsefilter
714
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 507
diff changeset
122 endif
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 507
diff changeset
123
29659
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
124 if !exists("no_plugin_maps") && !exists("no_php_maps")
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
125 " Section jumping: [[ and ]] provided by Antony Scriven <adscriven at gmail dot com>
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
126 let s:function = '\%(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function'
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
127 let s:class = '\%(abstract\s\+\|final\s\+\)*class'
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
128 let s:section = escape('^\s*\zs\%(' .. s:function .. '\|' .. s:class .. '\|interface\|trait\|enum\)\>', "|")
714
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 507
diff changeset
129
29659
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
130 function! s:Jump(pattern, count, flags)
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
131 normal! m'
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
132 for i in range(a:count)
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
133 if !search(a:pattern, a:flags)
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
134 break
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
135 endif
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
136 endfor
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
137 endfunction
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
138
29659
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
139 for mode in ["n", "o", "x"]
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
140 exe mode .. "noremap <buffer> <silent> ]] <Cmd>call <SID>Jump('" .. s:section .. "', v:count1, 'W')<CR>"
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
141 exe mode .. "noremap <buffer> <silent> [[ <Cmd>call <SID>Jump('" .. s:section .. "', v:count1, 'bW')<CR>"
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
142 let b:undo_ftplugin ..= " | sil! exe '" .. mode .. "unmap <buffer> ]]'" ..
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
143 \ " | sil! exe '" .. mode .. "unmap <buffer> [['"
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
144 endfor
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
145 endif
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
146
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
147 let b:undo_ftplugin ..= " | " .. s:undo_ftplugin
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
148
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
149 " Restore the saved compatibility options.
3496
d1e4abe8342c Fixed compatible mode in most runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3410
diff changeset
150 let &cpo = s:keepcpo
d1e4abe8342c Fixed compatible mode in most runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3410
diff changeset
151 unlet s:keepcpo
29659
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
152
2198955f9e27 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 28141
diff changeset
153 " vim: nowrap sw=2 sts=2 ts=8 noet: