changeset 8883:b7de875169e6 v7.4.1728

commit https://github.com/vim/vim/commit/81edd171a9465cf99cede4fa4a7b7bca3d538b0f Author: Bram Moolenaar <Bram@vim.org> Date: Thu Apr 14 13:51:37 2016 +0200 patch 7.4.1728 Problem: The help for functions require a space after the "(". Solution: Make CTRL-] on a function name ignore the arguments. (Hirohito Higashi)
author Christian Brabandt <cb@256bit.org>
date Thu, 14 Apr 2016 14:00:05 +0200
parents 0cda53f5d1a5
children a36c5c7384c4
files runtime/doc/eval.txt src/ex_cmds.c src/testdir/test_help_tagjump.vim src/version.c
diffstat 4 files changed, 319 insertions(+), 294 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1791,134 +1791,137 @@ See |function-list| for a list grouped b
 
 USAGE				RESULT	DESCRIPTION	~
 
-abs( {expr})			Float or Number  absolute value of {expr}
-acos( {expr})			Float	arc cosine of {expr}
-add( {list}, {item})		List	append {item} to |List| {list}
-alloc_fail( {id}, {countdown}, {repeat})
+abs({expr})			Float or Number  absolute value of {expr}
+acos({expr})			Float	arc cosine of {expr}
+add({list}, {item})		List	append {item} to |List| {list}
+alloc_fail({id}, {countdown}, {repeat})
 				none	make memory allocation fail
-and( {expr}, {expr})		Number  bitwise AND
-append( {lnum}, {string})	Number	append {string} below line {lnum}
-append( {lnum}, {list})		Number	append lines {list} below line {lnum}
+and({expr}, {expr})		Number  bitwise AND
+append({lnum}, {string})	Number	append {string} below line {lnum}
+append({lnum}, {list})		Number	append lines {list} below line {lnum}
 argc()				Number	number of files in the argument list
 argidx()			Number	current index in the argument list
-arglistid( [{winnr} [, {tabnr}]])
-				Number	argument list id
-argv( {nr})			String	{nr} entry of the argument list
+arglistid([{winnr} [, {tabnr}]]) Number	argument list id
+argv({nr})			String	{nr} entry of the argument list
 argv()				List	the argument list
-assert_equal( {exp}, {act} [, {msg}]) none  assert {exp} is equal to {act}
-assert_exception( {error} [, {msg}])  none  assert {error} is in v:exception
-assert_fails( {cmd} [, {error}])      none  assert {cmd} fails
-assert_false( {actual} [, {msg}])     none  assert {actual} is false
-assert_match( {pat}, {text} [, {msg}]) none  assert {pat} matches {text}
-assert_notequal( {exp}, {act} [, {msg}]) none  assert {exp} is not equal {act}
-assert_notmatch( {pat}, {text} [, {msg}]) none  assert {pat} not matches {text}
-assert_true( {actual} [, {msg}])      none  assert {actual} is true
-asin( {expr})			Float	arc sine of {expr}
-atan( {expr})			Float	arc tangent of {expr}
-atan2( {expr}, {expr})		Float   arc tangent of {expr1} / {expr2}
-browse( {save}, {title}, {initdir}, {default})
+assert_equal({exp}, {act} [, {msg}])     none  assert {exp} is equal to {act}
+assert_exception({error} [, {msg}])      none  assert {error} is in v:exception
+assert_fails({cmd} [, {error}])          none  assert {cmd} fails
+assert_false({actual} [, {msg}])         none  assert {actual} is false
+assert_match({pat}, {text} [, {msg}])    none  assert {pat} matches {text}
+assert_notequal({exp}, {act} [, {msg}])  none  assert {exp} is not equal {act}
+assert_notmatch({pat}, {text} [, {msg}]) none  assert {pat} not matches {text}
+assert_true({actual} [, {msg}])          none  assert {actual} is true
+asin({expr})			Float	arc sine of {expr}
+atan({expr})			Float	arc tangent of {expr}
+atan2({expr}, {expr})		Float   arc tangent of {expr1} / {expr2}
+browse({save}, {title}, {initdir}, {default})
 				String	put up a file requester
-browsedir( {title}, {initdir})	String	put up a directory requester
-bufexists( {expr})		Number	TRUE if buffer {expr} exists
-buflisted( {expr})		Number	TRUE if buffer {expr} is listed
-bufloaded( {expr})		Number	TRUE if buffer {expr} is loaded
-bufname( {expr})		String	Name of the buffer {expr}
-bufnr( {expr} [, {create}])	Number	Number of the buffer {expr}
-bufwinnr( {expr})		Number	window number of buffer {expr}
-byte2line( {byte})		Number	line number at byte count {byte}
-byteidx( {expr}, {nr})		Number	byte index of {nr}'th char in {expr}
-byteidxcomp( {expr}, {nr})	Number	byte index of {nr}'th char in {expr}
-call( {func}, {arglist} [, {dict}])
+browsedir({title}, {initdir})	String	put up a directory requester
+bufexists({expr})		Number	TRUE if buffer {expr} exists
+buflisted({expr})		Number	TRUE if buffer {expr} is listed
+bufloaded({expr})		Number	TRUE if buffer {expr} is loaded
+bufname({expr})			String	Name of the buffer {expr}
+bufnr({expr} [, {create}])	Number	Number of the buffer {expr}
+bufwinnr({expr})		Number	window number of buffer {expr}
+byte2line({byte})		Number	line number at byte count {byte}
+byteidx({expr}, {nr})		Number	byte index of {nr}'th char in {expr}
+byteidxcomp({expr}, {nr})	Number	byte index of {nr}'th char in {expr}
+call({func}, {arglist} [, {dict}])
 				any	call {func} with arguments {arglist}
-ceil( {expr})			Float	round {expr} up
-ch_close( {handle})		none	close {handle}
-ch_evalexpr( {handle}, {expr} [, {options}])
+ceil({expr})			Float	round {expr} up
+ch_close({handle})		none	close {handle}
+ch_evalexpr({handle}, {expr} [, {options}])
 				any	evaluate {expr} on JSON {handle}
-ch_evalraw( {handle}, {string} [, {options}])
+ch_evalraw({handle}, {string} [, {options}])
 				any	evaluate {string} on raw {handle}
-ch_getbufnr( {handle}, {what})	Number	get buffer number for {handle}/{what}
-ch_getjob( {channel})		Job	get the Job of {channel}
-ch_info( {handle})		String	info about channel  {handle}
-ch_log( {msg} [, {handle}])	none	write {msg} in the channel log file
-ch_logfile( {fname} [, {mode}])	none	start logging channel activity
-ch_open( {address} [, {options}]) Channel open a channel to {address}
-ch_read( {handle} [, {options}])  String  read from  {handle}
-ch_readraw( {handle} [, {options}])  String  read raw from  {handle}
-ch_sendexpr( {handle}, {expr} [, {options}])
+ch_getbufnr({handle}, {what})	Number	get buffer number for {handle}/{what}
+ch_getjob({channel})		Job	get the Job of {channel}
+ch_info({handle})		String	info about channel  {handle}
+ch_log({msg} [, {handle}])	none	write {msg} in the channel log file
+ch_logfile({fname} [, {mode}])	none	start logging channel activity
+ch_open({address} [, {options}])
+				Channel open a channel to {address}
+ch_read({handle} [, {options}]) String  read from  {handle}
+ch_readraw({handle} [, {options}])
+				String  read raw from  {handle}
+ch_sendexpr({handle}, {expr} [, {options}])
 				any	send {expr} over JSON {handle}
-ch_sendraw( {handle}, {string} [, {options}])
+ch_sendraw({handle}, {string} [, {options}])
 				any	send {string} over raw {handle}
-ch_setoptions( {handle}, {options})  none  set options for {handle}
-ch_status( {handle})		String	status of channel  {handle}
+ch_setoptions({handle}, {options})
+				none	set options for {handle}
+ch_status({handle})		String	status of channel  {handle}
 changenr()			Number	current change number
-char2nr( {expr}[, {utf8}])	Number	ASCII/UTF8 value of first char in {expr}
-cindent( {lnum})		Number	C indent for line {lnum}
+char2nr({expr}[, {utf8}])	Number	ASCII/UTF8 value of first char in {expr}
+cindent({lnum})			Number	C indent for line {lnum}
 clearmatches()			none	clear all matches
-col( {expr})			Number	column nr of cursor or mark
-complete( {startcol}, {matches}) none	set Insert mode completion
-complete_add( {expr})		Number	add completion match
+col({expr})			Number	column nr of cursor or mark
+complete({startcol}, {matches}) none	set Insert mode completion
+complete_add({expr})		Number	add completion match
 complete_check()		Number	check for key typed during completion
-confirm( {msg} [, {choices} [, {default} [, {type}]]])
+confirm({msg} [, {choices} [, {default} [, {type}]]])
 				Number	number of choice picked by user
-copy( {expr})			any	make a shallow copy of {expr}
-cos( {expr})			Float	cosine of {expr}
-cosh( {expr})			Float	hyperbolic cosine of {expr}
-count( {list}, {expr} [, {ic} [, {start}]])
+copy({expr})			any	make a shallow copy of {expr}
+cos({expr})			Float	cosine of {expr}
+cosh({expr})			Float	hyperbolic cosine of {expr}
+count({list}, {expr} [, {ic} [, {start}]])
 				Number	 count how many {expr} are in {list}
-cscope_connection( [{num} , {dbpath} [, {prepend}]])
+cscope_connection([{num} , {dbpath} [, {prepend}]])
 				Number	checks existence of cscope connection
-cursor( {lnum}, {col} [, {off}])
+cursor({lnum}, {col} [, {off}])
 				Number	move cursor to {lnum}, {col}, {off}
-cursor( {list})			Number	move cursor to position in {list}
-deepcopy( {expr} [, {noref}])	any	make a full copy of {expr}
-delete( {fname} [, {flags}])	Number	delete the file or directory {fname}
+cursor({list})			Number	move cursor to position in {list}
+deepcopy({expr} [, {noref}])	any	make a full copy of {expr}
+delete({fname} [, {flags}])	Number	delete the file or directory {fname}
 did_filetype()			Number	TRUE if FileType autocommand event used
-diff_filler( {lnum})		Number	diff filler lines about {lnum}
-diff_hlID( {lnum}, {col})	Number	diff highlighting at {lnum}/{col}
-disable_char_avail_for_testing( {expr})  none  test without typeahead
-empty( {expr})			Number	TRUE if {expr} is empty
-escape( {string}, {chars})	String	escape {chars} in {string} with '\'
-eval( {string})			any	evaluate {string} into its value
+diff_filler({lnum})		Number	diff filler lines about {lnum}
+diff_hlID({lnum}, {col})	Number	diff highlighting at {lnum}/{col}
+disable_char_avail_for_testing({expr})
+				none	test without typeahead
+empty({expr})			Number	TRUE if {expr} is empty
+escape({string}, {chars})	String	escape {chars} in {string} with '\'
+eval({string})			any	evaluate {string} into its value
 eventhandler()			Number	TRUE if inside an event handler
-executable( {expr})		Number	1 if executable {expr} exists
-exepath( {expr})		String  full path of the command {expr}
-exists( {expr})			Number	TRUE if {expr} exists
-extend( {expr1}, {expr2} [, {expr3}])
+executable({expr})		Number	1 if executable {expr} exists
+exepath({expr})			String  full path of the command {expr}
+exists({expr})			Number	TRUE if {expr} exists
+extend({expr1}, {expr2} [, {expr3}])
 				List/Dict insert items of {expr2} into {expr1}
-exp( {expr})			Float	exponential of {expr}
-expand( {expr} [, {nosuf} [, {list}]])
+exp({expr})			Float	exponential of {expr}
+expand({expr} [, {nosuf} [, {list}]])
 				any	expand special keywords in {expr}
-feedkeys( {string} [, {mode}])	Number	add key sequence to typeahead buffer
-filereadable( {file})		Number	TRUE if {file} is a readable file
-filewritable( {file})		Number	TRUE if {file} is a writable file
-filter( {expr}, {string})	List/Dict  remove items from {expr} where
+feedkeys({string} [, {mode}])	Number	add key sequence to typeahead buffer
+filereadable({file})		Number	TRUE if {file} is a readable file
+filewritable({file})		Number	TRUE if {file} is a writable file
+filter({expr}, {string})	List/Dict  remove items from {expr} where
 					{string} is 0
-finddir( {name}[, {path}[, {count}]])
+finddir({name}[, {path}[, {count}]])
 				String	find directory {name} in {path}
-findfile( {name}[, {path}[, {count}]])
+findfile({name}[, {path}[, {count}]])
 				String	find file {name} in {path}
-float2nr( {expr})		Number	convert Float {expr} to a Number
-floor( {expr})			Float	round {expr} down
-fmod( {expr1}, {expr2})		Float	remainder of {expr1} / {expr2}
-fnameescape( {fname})		String	escape special characters in {fname}
-fnamemodify( {fname}, {mods})	String	modify file name
-foldclosed( {lnum})		Number	first line of fold at {lnum} if closed
-foldclosedend( {lnum})		Number	last line of fold at {lnum} if closed
-foldlevel( {lnum})		Number	fold level at {lnum}
+float2nr({expr})		Number	convert Float {expr} to a Number
+floor({expr})			Float	round {expr} down
+fmod({expr1}, {expr2})		Float	remainder of {expr1} / {expr2}
+fnameescape({fname})		String	escape special characters in {fname}
+fnamemodify({fname}, {mods})	String	modify file name
+foldclosed({lnum})		Number	first line of fold at {lnum} if closed
+foldclosedend({lnum})		Number	last line of fold at {lnum} if closed
+foldlevel({lnum})		Number	fold level at {lnum}
 foldtext()			String	line displayed for closed fold
-foldtextresult( {lnum})		String	text for closed fold at {lnum}
+foldtextresult({lnum})		String	text for closed fold at {lnum}
 foreground()			Number	bring the Vim window to the foreground
-function( {name} [, {arglist}] [, {dict}])
+function({name} [, {arglist}] [, {dict}])
 				Funcref reference to function {name}
-garbagecollect( [{atexit}])	none	free memory, breaking cyclic references
+garbagecollect([{atexit}])	none	free memory, breaking cyclic references
 garbagecollect_for_testing()	none	free memory right now
-get( {list}, {idx} [, {def}])	any	get item {idx} from {list} or {def}
-get( {dict}, {key} [, {def}])	any	get item {key} from {dict} or {def}
-getbufline( {expr}, {lnum} [, {end}])
+get({list}, {idx} [, {def}])	any	get item {idx} from {list} or {def}
+get({dict}, {key} [, {def}])	any	get item {key} from {dict} or {def}
+getbufline({expr}, {lnum} [, {end}])
 				List	lines {lnum} to {end} of buffer {expr}
-getbufvar( {expr}, {varname} [, {def}])
+getbufvar({expr}, {varname} [, {def}])
 				any	variable {varname} in buffer {expr}
-getchar( [expr])		Number	get one character from the user
+getchar([expr])			Number	get one character from the user
 getcharmod()			Number	modifiers for the last typed character
 getcharsearch()			Dict	last character search
 getcmdline()			String	return the current command-line
@@ -1926,268 +1929,271 @@ getcmdpos()			Number	return cursor posit
 getcmdtype()			String	return current command-line type
 getcmdwintype()			String	return current command-line window type
 getcurpos()			List	position of the cursor
-getcwd( [{winnr} [, {tabnr}]])	String	get the current working directory
-getfontname( [{name}])		String	name of font being used
-getfperm( {fname})		String	file permissions of file {fname}
-getfsize( {fname})		Number	size in bytes of file {fname}
-getftime( {fname})		Number	last modification time of file
-getftype( {fname})		String	description of type of file {fname}
-getline( {lnum})		String	line {lnum} of current buffer
-getline( {lnum}, {end})		List	lines {lnum} to {end} of current buffer
-getloclist( {nr})		List	list of location list items
+getcwd([{winnr} [, {tabnr}]])	String	get the current working directory
+getfontname([{name}])		String	name of font being used
+getfperm({fname})		String	file permissions of file {fname}
+getfsize({fname})		Number	size in bytes of file {fname}
+getftime({fname})		Number	last modification time of file
+getftype({fname})		String	description of type of file {fname}
+getline({lnum})			String	line {lnum} of current buffer
+getline({lnum}, {end})		List	lines {lnum} to {end} of current buffer
+getloclist({nr})		List	list of location list items
 getmatches()			List	list of current matches
 getpid()			Number	process ID of Vim
-getpos( {expr})			List	position of cursor, mark, etc.
+getpos({expr})			List	position of cursor, mark, etc.
 getqflist()			List	list of quickfix items
-getreg( [{regname} [, 1 [, {list}]]])
+getreg([{regname} [, 1 [, {list}]]])
 				String or List   contents of register
-getregtype( [{regname}])	String	type of register
-gettabvar( {nr}, {varname} [, {def}])
+getregtype([{regname}])		String	type of register
+gettabvar({nr}, {varname} [, {def}])
 				any	variable {varname} in tab {nr} or {def}
-gettabwinvar( {tabnr}, {winnr}, {name} [, {def}])
+gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
 				any	{name} in {winnr} in tab page {tabnr}
 getwinposx()			Number	X coord in pixels of GUI Vim window
 getwinposy()			Number	Y coord in pixels of GUI Vim window
-getwinvar( {nr}, {varname} [, {def}])
+getwinvar({nr}, {varname} [, {def}])
 				any	variable {varname} in window {nr}
-glob( {expr} [, {nosuf} [, {list} [, {alllinks}]]])
+glob({expr} [, {nosuf} [, {list} [, {alllinks}]]])
 				any	expand file wildcards in {expr}
-glob2regpat( {expr})		String  convert a glob pat into a search pat
-globpath( {path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
+glob2regpat({expr})		String  convert a glob pat into a search pat
+globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
 				String	do glob({expr}) for all dirs in {path}
-has( {feature})			Number	TRUE if feature {feature} supported
-has_key( {dict}, {key})		Number	TRUE if {dict} has entry {key}
-haslocaldir( [{winnr} [, {tabnr}]])
+has({feature})			Number	TRUE if feature {feature} supported
+has_key({dict}, {key})		Number	TRUE if {dict} has entry {key}
+haslocaldir([{winnr} [, {tabnr}]])
 				Number	TRUE if the window executed |:lcd|
-hasmapto( {what} [, {mode} [, {abbr}]])
+hasmapto({what} [, {mode} [, {abbr}]])
 				Number	TRUE if mapping to {what} exists
-histadd( {history}, {item})	String	add an item to a history
-histdel( {history} [, {item}])	String	remove an item from a history
-histget( {history} [, {index}])	String	get the item {index} from a history
-histnr( {history})		Number	highest index of a history
-hlexists( {name})		Number	TRUE if highlight group {name} exists
-hlID( {name})			Number	syntax ID of highlight group {name}
+histadd({history}, {item})	String	add an item to a history
+histdel({history} [, {item}])	String	remove an item from a history
+histget({history} [, {index}])	String	get the item {index} from a history
+histnr({history})		Number	highest index of a history
+hlexists({name})		Number	TRUE if highlight group {name} exists
+hlID({name})			Number	syntax ID of highlight group {name}
 hostname()			String	name of the machine Vim is running on
-iconv( {expr}, {from}, {to})	String	convert encoding of {expr}
-indent( {lnum})			Number	indent of line {lnum}
-index( {list}, {expr} [, {start} [, {ic}]])
+iconv({expr}, {from}, {to})	String	convert encoding of {expr}
+indent({lnum})			Number	indent of line {lnum}
+index({list}, {expr} [, {start} [, {ic}]])
 				Number	index in {list} where {expr} appears
-input( {prompt} [, {text} [, {completion}]])
+input({prompt} [, {text} [, {completion}]])
 				String	get input from the user
-inputdialog( {p} [, {t} [, {c}]]) String  like input() but in a GUI dialog
-inputlist( {textlist})		Number	let the user pick from a choice list
+inputdialog({prompt} [, {text} [, {completion}]]])
+				String  like input() but in a GUI dialog
+inputlist({textlist})		Number	let the user pick from a choice list
 inputrestore()			Number	restore typeahead
 inputsave()			Number	save and clear typeahead
-inputsecret( {prompt} [, {text}]) String  like input() but hiding the text
-insert( {list}, {item} [, {idx}]) List	insert {item} in {list} [before {idx}]
-invert( {expr})			Number  bitwise invert
-isdirectory( {directory})	Number	TRUE if {directory} is a directory
-islocked( {expr})		Number	TRUE if {expr} is locked
-isnan( {expr})			Number  TRUE if {expr} is NaN
-items( {dict})			List	key-value pairs in {dict}
-job_getchannel( {job})		Channel	get the channel handle for {job}
-job_info( {job})		Dict	get information about {job}
-job_setoptions( {job}, {options}) none	set options for {job}
-job_start( {command} [, {options}]) Job	 start a job
-job_status( {job})		String	get the status of {job}
-job_stop( {job} [, {how}])	Number	stop {job}
-join( {list} [, {sep}])		String	join {list} items into one String
-js_decode( {string})		any	decode JS style JSON
-js_encode( {expr})		String	encode JS style JSON
-json_decode( {string})		any	decode JSON
-json_encode( {expr})		String	encode JSON
-keys( {dict})			List	keys in {dict}
-len( {expr})			Number	the length of {expr}
-libcall( {lib}, {func}, {arg})	String	call {func} in library {lib} with {arg}
-libcallnr( {lib}, {func}, {arg})  Number  idem, but return a Number
-line( {expr})			Number	line nr of cursor, last line or mark
-line2byte( {lnum})		Number	byte count of line {lnum}
-lispindent( {lnum})		Number	Lisp indent for line {lnum}
+inputsecret({prompt} [, {text}]) String  like input() but hiding the text
+insert({list}, {item} [, {idx}]) List	insert {item} in {list} [before {idx}]
+invert({expr})			Number  bitwise invert
+isdirectory({directory})	Number	TRUE if {directory} is a directory
+islocked({expr})		Number	TRUE if {expr} is locked
+isnan({expr})			Number  TRUE if {expr} is NaN
+items({dict})			List	key-value pairs in {dict}
+job_getchannel({job})		Channel	get the channel handle for {job}
+job_info({job})			Dict	get information about {job}
+job_setoptions({job}, {options}) none	set options for {job}
+job_start({command} [, {options}])
+				Job	 start a job
+job_status({job})		String	get the status of {job}
+job_stop({job} [, {how}])	Number	stop {job}
+join({list} [, {sep}])		String	join {list} items into one String
+js_decode({string})		any	decode JS style JSON
+js_encode({expr})		String	encode JS style JSON
+json_decode({string})		any	decode JSON
+json_encode({expr})		String	encode JSON
+keys({dict})			List	keys in {dict}
+len({expr})			Number	the length of {expr}
+libcall({lib}, {func}, {arg})	String	call {func} in library {lib} with {arg}
+libcallnr({lib}, {func}, {arg})  Number  idem, but return a Number
+line({expr})			Number	line nr of cursor, last line or mark
+line2byte({lnum})		Number	byte count of line {lnum}
+lispindent({lnum})		Number	Lisp indent for line {lnum}
 localtime()			Number	current time
-log( {expr})			Float	natural logarithm (base e) of {expr}
-log10( {expr})			Float	logarithm of Float {expr} to base 10
-luaeval( {expr}[, {expr}])	any	evaluate |Lua| expression
-map( {expr}, {string})		List/Dict  change each item in {expr} to {expr}
-maparg( {name}[, {mode} [, {abbr} [, {dict}]]])
+log({expr})			Float	natural logarithm (base e) of {expr}
+log10({expr})			Float	logarithm of Float {expr} to base 10
+luaeval({expr}[, {expr}])	any	evaluate |Lua| expression
+map({expr}, {string})		List/Dict  change each item in {expr} to {expr}
+maparg({name}[, {mode} [, {abbr} [, {dict}]]])
 				String or Dict
 					rhs of mapping {name} in mode {mode}
-mapcheck( {name}[, {mode} [, {abbr}]])
+mapcheck({name}[, {mode} [, {abbr}]])
 				String	check for mappings matching {name}
-match( {expr}, {pat}[, {start}[, {count}]])
+match({expr}, {pat}[, {start}[, {count}]])
 				Number	position where {pat} matches in {expr}
-matchadd( {group}, {pattern}[, {priority}[, {id} [, {dict}]]])
+matchadd({group}, {pattern}[, {priority}[, {id} [, {dict}]]])
 				Number	highlight {pattern} with {group}
-matchaddpos( {group}, {pos}[, {priority}[, {id}[, {dict}]]])
+matchaddpos({group}, {pos}[, {priority}[, {id}[, {dict}]]])
 				Number	highlight positions with {group}
-matcharg( {nr})			List	arguments of |:match|
-matchdelete( {id})		Number	delete match identified by {id}
-matchend( {expr}, {pat}[, {start}[, {count}]])
+matcharg({nr})			List	arguments of |:match|
+matchdelete({id})		Number	delete match identified by {id}
+matchend({expr}, {pat}[, {start}[, {count}]])
 				Number	position where {pat} ends in {expr}
-matchlist( {expr}, {pat}[, {start}[, {count}]])
+matchlist({expr}, {pat}[, {start}[, {count}]])
 				List	match and submatches of {pat} in {expr}
-matchstr( {expr}, {pat}[, {start}[, {count}]])
+matchstr({expr}, {pat}[, {start}[, {count}]])
 				String	{count}'th match of {pat} in {expr}
-matchstrpos( {expr}, {pat}[, {start}[, {count}]])
+matchstrpos({expr}, {pat}[, {start}[, {count}]])
 				List	{count}'th match of {pat} in {expr}
-max( {list})			Number	maximum value of items in {list}
-min( {list})			Number	minimum value of items in {list}
-mkdir( {name} [, {path} [, {prot}]])
+max({list})			Number	maximum value of items in {list}
+min({list})			Number	minimum value of items in {list}
+mkdir({name} [, {path} [, {prot}]])
 				Number	create directory {name}
-mode( [expr])			String	current editing mode
-mzeval( {expr})			any	evaluate |MzScheme| expression
-nextnonblank( {lnum})		Number	line nr of non-blank line >= {lnum}
-nr2char( {expr}[, {utf8}])	String	single char with ASCII/UTF8 value {expr}
-or( {expr}, {expr})		Number  bitwise OR
-pathshorten( {expr})		String	shorten directory names in a path
-perleval( {expr})		any	evaluate |Perl| expression
-pow( {x}, {y})			Float	{x} to the power of {y}
-prevnonblank( {lnum})		Number	line nr of non-blank line <= {lnum}
-printf( {fmt}, {expr1}...)	String	format text
+mode([expr])			String	current editing mode
+mzeval({expr})			any	evaluate |MzScheme| expression
+nextnonblank({lnum})		Number	line nr of non-blank line >= {lnum}
+nr2char({expr}[, {utf8}])	String	single char with ASCII/UTF8 value {expr}
+or({expr}, {expr})		Number  bitwise OR
+pathshorten({expr})		String	shorten directory names in a path
+perleval({expr})		any	evaluate |Perl| expression
+pow({x}, {y})			Float	{x} to the power of {y}
+prevnonblank({lnum})		Number	line nr of non-blank line <= {lnum}
+printf({fmt}, {expr1}...)	String	format text
 pumvisible()			Number	whether popup menu is visible
-pyeval( {expr})			any	evaluate |Python| expression
-py3eval( {expr})		any	evaluate |python3| expression
-range( {expr} [, {max} [, {stride}]])
+pyeval({expr})			any	evaluate |Python| expression
+py3eval({expr})			any	evaluate |python3| expression
+range({expr} [, {max} [, {stride}]])
 				List	items from {expr} to {max}
-readfile( {fname} [, {binary} [, {max}]])
+readfile({fname} [, {binary} [, {max}]])
 				List	get list of lines from file {fname}
-reltime( [{start} [, {end}]])	List	get time value
-reltimefloat( {time})		Float	turn the time value into a Float
-reltimestr( {time})		String	turn time value into a String
-remote_expr( {server}, {string} [, {idvar}])
+reltime([{start} [, {end}]])	List	get time value
+reltimefloat({time})		Float	turn the time value into a Float
+reltimestr({time})		String	turn time value into a String
+remote_expr({server}, {string} [, {idvar}])
 				String	send expression
-remote_foreground( {server})	Number	bring Vim server to the foreground
-remote_peek( {serverid} [, {retvar}])
+remote_foreground({server})	Number	bring Vim server to the foreground
+remote_peek({serverid} [, {retvar}])
 				Number	check for reply string
-remote_read( {serverid})	String	read reply string
-remote_send( {server}, {string} [, {idvar}])
+remote_read({serverid})		String	read reply string
+remote_send({server}, {string} [, {idvar}])
 				String	send key sequence
-remove( {list}, {idx} [, {end}])  any	remove items {idx}-{end} from {list}
-remove( {dict}, {key})		any	remove entry {key} from {dict}
-rename( {from}, {to})		Number	rename (move) file from {from} to {to}
-repeat( {expr}, {count})	String	repeat {expr} {count} times
-resolve( {filename})		String	get filename a shortcut points to
-reverse( {list})		List	reverse {list} in-place
-round( {expr})			Float	round off {expr}
-screenattr( {row}, {col})	Number	attribute at screen position
-screenchar( {row}, {col})	Number	character at screen position
+remove({list}, {idx} [, {end}])  any	remove items {idx}-{end} from {list}
+remove({dict}, {key})		any	remove entry {key} from {dict}
+rename({from}, {to})		Number	rename (move) file from {from} to {to}
+repeat({expr}, {count})		String	repeat {expr} {count} times
+resolve({filename})		String	get filename a shortcut points to
+reverse({list})			List	reverse {list} in-place
+round({expr})			Float	round off {expr}
+screenattr({row}, {col})	Number	attribute at screen position
+screenchar({row}, {col})	Number	character at screen position
 screencol()			Number	current cursor column
 screenrow()			Number	current cursor row
-search( {pattern} [, {flags} [, {stopline} [, {timeout}]]])
+search({pattern} [, {flags} [, {stopline} [, {timeout}]]])
 				Number	search for {pattern}
-searchdecl( {name} [, {global} [, {thisblock}]])
+searchdecl({name} [, {global} [, {thisblock}]])
 				Number	search for variable declaration
-searchpair( {start}, {middle}, {end} [, {flags} [, {skip} [...]]])
+searchpair({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
 				Number	search for other end of start/end pair
-searchpairpos( {start}, {middle}, {end} [, {flags} [, {skip} [...]]])
+searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} [...]]])
 				List	search for other end of start/end pair
-searchpos( {pattern} [, {flags} [, {stopline} [, {timeout}]]])
+searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]])
 				List	search for {pattern}
-server2client( {clientid}, {string})
+server2client({clientid}, {string})
 				Number	send reply string
 serverlist()			String	get a list of available servers
-setbufvar( {expr}, {varname}, {val})	set {varname} in buffer {expr} to {val}
-setcharsearch( {dict})		Dict	set character search from {dict}
-setcmdpos( {pos})		Number	set cursor position in command-line
-setfperm( {fname}, {mode})	Number	set {fname} file permissions to {mode}
-setline( {lnum}, {line})	Number	set line {lnum} to {line}
-setloclist( {nr}, {list}[, {action}])
+setbufvar({expr}, {varname}, {val})
+				none	set {varname} in buffer {expr} to {val}
+setcharsearch({dict})		Dict	set character search from {dict}
+setcmdpos({pos})		Number	set cursor position in command-line
+setfperm({fname}, {mode})	Number	set {fname} file permissions to {mode}
+setline({lnum}, {line})		Number	set line {lnum} to {line}
+setloclist({nr}, {list}[, {action}])
 				Number	modify location list using {list}
-setmatches( {list})		Number	restore a list of matches
-setpos( {expr}, {list})		Number	set the {expr} position to {list}
-setqflist( {list}[, {action}])	Number	modify quickfix list using {list}
-setreg( {n}, {v}[, {opt}])	Number	set register to value and type
-settabvar( {nr}, {varname}, {val})	set {varname} in tab page {nr} to {val}
-settabwinvar( {tabnr}, {winnr}, {varname}, {val})    set {varname} in window
-					{winnr} in tab page {tabnr} to {val}
-setwinvar( {nr}, {varname}, {val})	set {varname} in window {nr} to {val}
-sha256( {string})		String	SHA256 checksum of {string}
-shellescape( {string} [, {special}])
+setmatches({list})		Number	restore a list of matches
+setpos({expr}, {list})		Number	set the {expr} position to {list}
+setqflist({list}[, {action}])	Number	modify quickfix list using {list}
+setreg({n}, {v}[, {opt}])	Number	set register to value and type
+settabvar({nr}, {varname}, {val}) none	set {varname} in tab page {nr} to {val}
+settabwinvar({tabnr}, {winnr}, {varname}, {val})
+				none	set {varname} in window {winnr} in tab
+					page {tabnr} to {val}
+setwinvar({nr}, {varname}, {val}) none	set {varname} in window {nr} to {val}
+sha256({string})		String	SHA256 checksum of {string}
+shellescape({string} [, {special}])
 				String	escape {string} for use as shell
 					command argument
 shiftwidth()			Number	effective value of 'shiftwidth'
-simplify( {filename})		String	simplify filename as much as possible
-sin( {expr})			Float	sine of {expr}
-sinh( {expr})			Float	hyperbolic sine of {expr}
-sort( {list} [, {func} [, {dict}]])
+simplify({filename})		String	simplify filename as much as possible
+sin({expr})			Float	sine of {expr}
+sinh({expr})			Float	hyperbolic sine of {expr}
+sort({list} [, {func} [, {dict}]])
 				List	sort {list}, using {func} to compare
-soundfold( {word})		String	sound-fold {word}
+soundfold({word})		String	sound-fold {word}
 spellbadword()			String	badly spelled word at cursor
-spellsuggest( {word} [, {max} [, {capital}]])
+spellsuggest({word} [, {max} [, {capital}]])
 				List	spelling suggestions
-split( {expr} [, {pat} [, {keepempty}]])
+split({expr} [, {pat} [, {keepempty}]])
 				List	make |List| from {pat} separated {expr}
-sqrt( {expr})			Float	square root of {expr}
-str2float( {expr})		Float	convert String to Float
-str2nr( {expr} [, {base}])	Number	convert String to Number
-strchars( {expr} [, {skipcc}])	Number	character length of the String {expr}
-strdisplaywidth( {expr} [, {col}]) Number display length of the String {expr}
-strftime( {format}[, {time}])	String	time in specified format
-stridx( {haystack}, {needle}[, {start}])
+sqrt({expr})			Float	square root of {expr}
+str2float({expr})		Float	convert String to Float
+str2nr({expr} [, {base}])	Number	convert String to Number
+strchars({expr} [, {skipcc}])	Number	character length of the String {expr}
+strdisplaywidth({expr} [, {col}]) Number display length of the String {expr}
+strftime({format}[, {time}])	String	time in specified format
+stridx({haystack}, {needle}[, {start}])
 				Number	index of {needle} in {haystack}
-string( {expr})			String	String representation of {expr} value
-strlen( {expr})			Number	length of the String {expr}
-strpart( {src}, {start}[, {len}])
+string({expr})			String	String representation of {expr} value
+strlen({expr})			Number	length of the String {expr}
+strpart({src}, {start}[, {len}])
 				String	{len} characters of {src} at {start}
-strridx( {haystack}, {needle} [, {start}])
+strridx({haystack}, {needle} [, {start}])
 				Number	last index of {needle} in {haystack}
-strtrans( {expr})		String	translate string to make it printable
-strwidth( {expr})		Number	display cell length of the String {expr}
-submatch( {nr}[, {list}])	String or List
+strtrans({expr})		String	translate string to make it printable
+strwidth({expr})		Number	display cell length of the String {expr}
+submatch({nr}[, {list}])	String or List
 					specific match in ":s" or substitute()
-substitute( {expr}, {pat}, {sub}, {flags})
+substitute({expr}, {pat}, {sub}, {flags})
 				String	all {pat} in {expr} replaced with {sub}
-synID( {lnum}, {col}, {trans})	Number	syntax ID at {lnum} and {col}
-synIDattr( {synID}, {what} [, {mode}])
+synID({lnum}, {col}, {trans})	Number	syntax ID at {lnum} and {col}
+synIDattr({synID}, {what} [, {mode}])
 				String	attribute {what} of syntax ID {synID}
-synIDtrans( {synID})		Number	translated syntax ID of {synID}
-synconcealed( {lnum}, {col})	List    info about concealing
-synstack( {lnum}, {col})	List	stack of syntax IDs at {lnum} and {col}
-system( {expr} [, {input}])	String	output of shell command/filter {expr}
-systemlist( {expr} [, {input}])	List	output of shell command/filter {expr}
-tabpagebuflist( [{arg}])	List	list of buffer numbers in tab page
-tabpagenr( [{arg}])		Number	number of current or last tab page
-tabpagewinnr( {tabarg}[, {arg}])
-				Number	number of current window in tab page
-taglist( {expr})		List	list of tags matching {expr}
+synIDtrans({synID})		Number	translated syntax ID of {synID}
+synconcealed({lnum}, {col})	List    info about concealing
+synstack({lnum}, {col})		List	stack of syntax IDs at {lnum} and {col}
+system({expr} [, {input}])	String	output of shell command/filter {expr}
+systemlist({expr} [, {input}])	List	output of shell command/filter {expr}
+tabpagebuflist([{arg}])	List	list of buffer numbers in tab page
+tabpagenr([{arg}])		Number	number of current or last tab page
+tabpagewinnr({tabarg}[, {arg}]) Number	number of current window in tab page
+taglist({expr})			List	list of tags matching {expr}
 tagfiles()			List	tags files used
-tan( {expr})			Float	tangent of {expr}
-tanh( {expr})			Float	hyperbolic tangent of {expr}
+tan({expr})			Float	tangent of {expr}
+tanh({expr})			Float	hyperbolic tangent of {expr}
 tempname()			String	name for a temporary file
-timer_start( {time}, {callback} [, {options}])
+timer_start({time}, {callback} [, {options}])
 				Number	create a timer
-timer_stop( {timer})		none	stop a timer
-tolower( {expr})		String	the String {expr} switched to lowercase
-toupper( {expr})		String	the String {expr} switched to uppercase
-tr( {src}, {fromstr}, {tostr})	String	translate chars of {src} in {fromstr}
+timer_stop({timer})		none	stop a timer
+tolower({expr})			String	the String {expr} switched to lowercase
+toupper({expr})			String	the String {expr} switched to uppercase
+tr({src}, {fromstr}, {tostr})	String	translate chars of {src} in {fromstr}
 					to chars in {tostr}
-trunc( {expr})			Float	truncate Float {expr}
-type( {name})			Number	type of variable {name}
-undofile( {name})		String	undo file name for {name}
+trunc({expr})			Float	truncate Float {expr}
+type({name})			Number	type of variable {name}
+undofile({name})		String	undo file name for {name}
 undotree()			List	undo file tree
-uniq( {list} [, {func} [, {dict}]])
+uniq({list} [, {func} [, {dict}]])
 				List	remove adjacent duplicates from a list
-values( {dict})			List	values in {dict}
-virtcol( {expr})		Number	screen column of cursor or mark
-visualmode( [expr])		String	last visual mode used
+values({dict})			List	values in {dict}
+virtcol({expr})			Number	screen column of cursor or mark
+visualmode([expr])		String	last visual mode used
 wildmenumode()			Number	whether 'wildmenu' mode is active
-win_findbuf( {bufnr}) 		List	find windows containing {bufnr}
-win_getid( [{win} [, {tab}]]) 	Number	get window ID for {win} in {tab}
-win_gotoid( {expr})		Number	go to window with ID {expr}
-win_id2tabwin( {expr})		List	get tab and window nr from window ID
-win_id2win( {expr})		Number	get window nr from window ID
-winbufnr( {nr})			Number	buffer number of window {nr}
+win_findbuf({bufnr})		List	find windows containing {bufnr}
+win_getid([{win} [, {tab}]])	Number	get window ID for {win} in {tab}
+win_gotoid({expr})		Number	go to window with ID {expr}
+win_id2tabwin({expr})		List	get tab and window nr from window ID
+win_id2win({expr})		Number	get window nr from window ID
+winbufnr({nr})			Number	buffer number of window {nr}
 wincol()			Number	window column of the cursor
-winheight( {nr})		Number	height of window {nr}
+winheight({nr})			Number	height of window {nr}
 winline()			Number	window line of the cursor
-winnr( [{expr}])		Number	number of current window
+winnr([{expr}])			Number	number of current window
 winrestcmd()			String	returns command to restore window sizes
-winrestview( {dict})		none	restore view of current window
+winrestview({dict})		none	restore view of current window
 winsaveview()			Dict	save view of current window
-winwidth( {nr})			Number	width of window {nr}
+winwidth({nr})			Number	width of window {nr}
 wordcount()			Dict	get byte/char/word statistics
-writefile( {list}, {fname} [, {flags}])
+writefile({list}, {fname} [, {flags}])
 				Number	write list of lines to file {fname}
-xor( {expr}, {expr})		Number  bitwise XOR
+xor({expr}, {expr})		Number  bitwise XOR
 
 
 abs({expr})							*abs()*
@@ -4754,9 +4760,9 @@ json_encode({expr})					*json_encode()*
 		   String		in double quotes (possibly null)
 		   Funcref		not possible, error
 		   List			as an array (possibly null); when
-		   			used recursively: []
+					used recursively: []
 		   Dict			as an object (possibly null); when
-		   			used recursively: {}
+					used recursively: {}
 		   v:false		"false"
 		   v:true		"true"
 		   v:none		"null"
@@ -6098,7 +6104,7 @@ searchpos({pattern} [, {flags} [, {stopl
 <		In this example "submatch" is 2 when a lowercase letter is
 		found |/\l|, 3 when an uppercase letter is found |/\u|.
 
-server2client( {clientid}, {string})			*server2client()*
+server2client({clientid}, {string})			*server2client()*
 		Send a reply string to {clientid}.  The most recent {clientid}
 		that sent a string can be retrieved with expand("<client>").
 		{only available when compiled with the |+clientserver| feature}
@@ -6611,7 +6617,7 @@ sqrt({expr})						*sqrt()*
 		{only available when compiled with the |+float| feature}
 		
 
-str2float( {expr})					*str2float()*
+str2float({expr})					*str2float()*
 		Convert String {expr} to a Float.  This mostly works the same
 		as when using a floating point number in an expression, see
 		|floating-point-format|.  But it's a bit more permissive.
@@ -6626,7 +6632,7 @@ str2float( {expr})					*str2float()*
 <		{only available when compiled with the |+float| feature}
 
 
-str2nr( {expr} [, {base}])				*str2nr()*
+str2nr({expr} [, {base}])				*str2nr()*
 		Convert string {expr} to a number.
 		{base} is the conversion base, it can be 2, 8, 10 or 16.
 		When {base} is omitted base 10 is used.  This also means that
@@ -7136,7 +7142,7 @@ timer_start({time}, {callback} [, {optio
 
 		{options} is a dictionary.  Supported entries:
 		   "repeat"	Number of times to repeat calling the
-		   		callback.  -1 means forever.
+				callback.  -1 means forever.
 
 		Example: >
 			func MyHandler(timer)
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -6204,6 +6204,13 @@ find_help_tags(
 	    *d++ = *s;
 
 	    /*
+	     * If tag contains "({" or "([", tag terminates at the "(".
+	     * This is for help on functions, e.g.: abs({expr}).
+	     */
+	    if (*s == '(' && (s[1] == '{' || s[1] =='['))
+		break;
+
+	    /*
 	     * If tag starts with ', toss everything after a second '. Fixes
 	     * CTRL-] on 'option'. (would include the trailing '.').
 	     */
--- a/src/testdir/test_help_tagjump.vim
+++ b/src/testdir/test_help_tagjump.vim
@@ -15,4 +15,14 @@ func Test_help_tagjump()
   call assert_equal("help", &filetype)
   call assert_true(getline('.') =~ "\\*'buflisted'\\*")
   helpclose
+
+  exec "help! abs({expr})"
+  call assert_equal("help", &filetype)
+  call assert_true(getline('.') =~ '\*abs()\*')
+  helpclose
+
+  exec "help! arglistid([{winnr}"
+  call assert_equal("help", &filetype)
+  call assert_true(getline('.') =~ '\*arglistid()\*')
+  helpclose
 endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -749,6 +749,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1728,
+/**/
     1727,
 /**/
     1726,