view runtime/doc/debugger.txt @ 33674:021e5bb88513 v9.0.2074

patch 9.0.2074: Completion menu may be wrong Commit: https://github.com/vim/vim/commit/daef8c74375141974d61b85199b383017644978c Author: Christian Brabandt <cb@256bit.org> Date: Fri Oct 27 19:16:26 2023 +0200 patch 9.0.2074: Completion menu may be wrong Problem: Completion menu may be wrong Solution: Check for the original direction of the completion menu, add more tests, make it work with 'noselect' completion: move in right direction when filling completion_info() When moving through the insert completion menu and switching directions, we need to make sure we start at the correct position in the list and move correctly forward/backwards through it, so that we do not skip entries and the selected item points to the correct entry in the list of completion entries generated by the completion_info() function. The general case is this: 1) CTRL-X CTRL-N, we will traverse the list starting from compl_first_match and then go forwards (using the cp->next pointer) through the list (skipping the very first entry, which has the CP_ORIGINAL_TEXT flag set (since that is the empty/non-selected entry 2) CTRL-X CTRL-P, we will traverse the list starting from compl_first_match (which now points to the last entry). The previous entry will have the CP_ORIGINAL_TEXT flag set, so we need to start traversing the list from the second prev pointer. There are in fact 2 special cases after starting the completion menu with CTRL-X: 3) CTRL-N and then going backwards by pressing CTRL-P again. compl_first_match will point to the same entry as in step 1 above, but since compl_dir_foward() has been switched by pressing CTRL-P to backwards we need to pretend to be in still in case 1 and still traverse the list in forward direction using the cp_next pointer 4) CTRL-P and then going forwards by pressing CTRL-N again. compl_first_match will point to the same entry as in step 2 above, but since compl_dir_foward() has been switched by pressing CTRL-N to forwards we need to pretend to be in still in case 2 and still traverse the list in backward direction using the cp_prev pointer For the 'noselect' case however, this is slightly different again. When going backwards, we only need to go one cp_prev pointer back. And resting of the direction works again slightly different. So we need to take the noselect option into account when deciding in which direction to iterate through the list of matches. related: #13402 related: #12971 closes: #13408 Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Fri, 27 Oct 2023 19:30:05 +0200
parents f8116058ca76
children 4635e43f2c6f
line wrap: on
line source

*debugger.txt*  For Vim version 9.0.  Last change: 2019 Dec 21


		  VIM REFERENCE MANUAL    by Gordon Prieur


Debugger Support Features				*debugger-support*

These features are for integration with a debugger or an Integrated
Programming Environment (IPE) or Integrated Development Environment (IDE).
For the debugger running in a Vim terminal window see |terminal-debugger|.

1. Debugger Features		|debugger-features|
2. Vim Compile Options		|debugger-compilation|

==============================================================================
1. Debugger Features					*debugger-features*

The following features are available:

	Alternate Command Input				|alt-input|
	Debug Signs					|debug-signs|
	Debug Source Highlight				|debug-highlight|
	Message Footer					|gui-footer|
	Balloon Evaluation				|balloon-eval|

These features were added specifically for use in the Motif version of gvim.
However, the |alt-input| and |debug-highlight| were written to be usable in
both vim and gvim.  Some of the other features could be used in the non-GUI
vim with slight modifications.  However, I did not do this nor did I test the
reliability of building for vim or non Motif GUI versions.


1.1 Alternate Command Input				*alt-input*

For Vim to work with a debugger there must be at least an input connection
with a debugger or external tool.  In many cases there will also be an output
connection but this isn't absolutely necessary.

The purpose of the input connection is to let the external debugger send
commands to Vim.  The commands sent by the debugger should give the debugger
enough control to display the current debug environment and state.

The current implementation is based on the X Toolkit dispatch loop and the
XtAddInput() function call.


1.2 Debug Signs						*debug-signs*

Many debuggers mark specific lines by placing a small sign or color highlight
on the line.  The |:sign| command lets the debugger set this graphic mark.  Some
examples where this feature would be used would be a debugger showing an arrow
representing the Program Counter (PC) of the program being debugged.  Another
example would be a small stop sign for a line with a breakpoint.  These visible
highlights let the user keep track of certain parts of the state of the
debugger.

This feature can be used with more than debuggers, too.  An IPE can use a sign
to highlight build errors, searched text, or other things.  The sign feature
can also work together with the |debug-highlight| to ensure the mark is
highly visible.

Debug signs are defined and placed using the |:sign| command.


1.3 Debug Source Highlight				*debug-highlight*

This feature allows a line to have a predominant highlight.  The highlight is
intended to make a specific line stand out.  The highlight could be made to
work for both vim and gvim, whereas the debug sign is, in most cases, limited
to gvim.  The one exception to this is Sun Microsystem's dtterm.  The dtterm
from Sun has a "sign gutter" for showing signs.


1.4 Message Footer					*gui-footer*

The message footer can be used to display messages from a debugger or IPE.  It
can also be used to display menu and toolbar tips.  The footer area is at the
bottom of the GUI window, below the line used to display colon commands.

The display of the footer is controlled by the 'guioptions' letter 'F'.


1.5 Balloon Evaluation					*balloon-eval*

This feature allows a debugger, or other external tool, to display dynamic
information based on where the mouse is pointing.  The purpose of this feature
was to allow Sun's Visual WorkShop debugger to display expression evaluations.
However, the feature was implemented in as general a manner as possible and
could be used for displaying other information as well.  The functionality is
limited though, for advanced popups see |popup-window|.

Another way to use the balloon is with the 'balloonexpr' option.  This is
completely user definable.

The Balloon Evaluation has some settable parameters too.  For Motif the font
list and colors can be set via X resources (XmNballoonEvalFontList,
XmNballoonEvalBackground, and XmNballoonEvalForeground).
The 'balloondelay' option sets the delay before an attempt is made to show a
balloon.
The 'ballooneval' and/or the 'balloonevalterm' option needs to be set to
switch it on.

Balloon evaluation is only available in the GUI when compiled with the
|+balloon_eval| feature.  For the terminal the  |+balloon_eval_term| feature
matters.

The Balloon evaluation functions are also used to show a tooltip for the
toolbar.  The 'ballooneval' option does not need to be set for this.  But the
other settings apply.

==============================================================================
2. Vim Compile Options					*debugger-compilation*

The debugger features were added for use with Sun's Visual WorkShop Integrated
Programming Environment (ipe).  However, they were done in as generic a manner
as possible so that integration with other debuggers could also use these
features.

The following compile time preprocessor variables control the features:

    Alternate Command Input			ALT_X_INPUT
    Debug Glyphs				FEAT_SIGNS
    Debug Highlights				FEAT_SIGNS
    Message Footer				FEAT_FOOTER
    Balloon Evaluation				FEAT_BEVAL

The support specifically for Sun Visual WorkShop has been removed, since the
product no longer exists.

For Sun NetBeans support see |netbeans|.


 vim:tw=78:sw=4:ts=8:noet:ft=help:norl: