Add options to control window sizes
This adds the following options, allowing the default sizes to be overridden: - g:vimspector_sidebar_width: Controls the width of the left utility windows (variables, watches, stack trace) - g:vimspector_bottombar_height: Controls the height of the output window below the code window The terminal is typically created as a vertical split of the code window. The following control the sizing of the terminal window used for debuggee input/output when using Vim's built-in terminal. - g:vimspector_code_minwidth: Minimum number of columns to try and maintain for the code window. - g:vimspector_terminal_maxwidth: Maximum number of columns to use for th terminal, when vertically splitting the code window. - g:vimspector_terminal_minwidth: Minimum number of columns to use when it is not possible to fit g:vimspector_terminal_maxwidth columns next to the code window with g:vimspector_code_minwidth columns.
This commit is contained in:
parent
7a9f75a06e
commit
f8cbb7c5b6
3 changed files with 42 additions and 12 deletions
|
|
@ -18,7 +18,7 @@ import logging
|
||||||
import json
|
import json
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
|
||||||
from vimspector import utils
|
from vimspector import utils, settings
|
||||||
|
|
||||||
|
|
||||||
class CodeView( object ):
|
class CodeView( object ):
|
||||||
|
|
@ -218,7 +218,7 @@ class CodeView( object ):
|
||||||
args = params[ 'args' ]
|
args = params[ 'args' ]
|
||||||
env = params.get( 'env', {} )
|
env = params.get( 'env', {} )
|
||||||
|
|
||||||
options = {
|
term_options = {
|
||||||
'vertical': 1,
|
'vertical': 1,
|
||||||
'norestore': 1,
|
'norestore': 1,
|
||||||
'cwd': cwd,
|
'cwd': cwd,
|
||||||
|
|
@ -238,9 +238,9 @@ class CodeView( object ):
|
||||||
and int( utils.Call( 'vimspector#internal#{}term#IsFinished'.format(
|
and int( utils.Call( 'vimspector#internal#{}term#IsFinished'.format(
|
||||||
self._api_prefix ),
|
self._api_prefix ),
|
||||||
self._terminal_buffer_number ) ) ):
|
self._terminal_buffer_number ) ) ):
|
||||||
options[ 'curwin' ] = 1
|
term_options[ 'curwin' ] = 1
|
||||||
else:
|
else:
|
||||||
options[ 'vertical' ] = 0
|
term_options[ 'vertical' ] = 0
|
||||||
|
|
||||||
buffer_number = None
|
buffer_number = None
|
||||||
terminal_window = None
|
terminal_window = None
|
||||||
|
|
@ -248,17 +248,19 @@ class CodeView( object ):
|
||||||
# If we're making a vertical split from the code window, make it no more
|
# If we're making a vertical split from the code window, make it no more
|
||||||
# than 80 columns and no fewer than 10. Also try and keep the code window
|
# than 80 columns and no fewer than 10. Also try and keep the code window
|
||||||
# at least 82 columns
|
# at least 82 columns
|
||||||
if options[ 'vertical' ] and not options.get( 'curwin', 0 ):
|
if term_options[ 'vertical' ] and not term_options.get( 'curwin', 0 ):
|
||||||
options[ 'term_cols' ] = max(
|
term_options[ 'term_cols' ] = max(
|
||||||
min ( int( vim.eval( 'winwidth( 0 ) - 82' ) ), 80 ),
|
min ( int( vim.eval( 'winwidth( 0 )' ) )
|
||||||
10
|
- settings.Int( 'code_minwidth', 82 ),
|
||||||
|
settings.Int( 'terminal_maxwidth', 80 ) ),
|
||||||
|
settings.Int( 'terminal_minwidth' , 10 )
|
||||||
)
|
)
|
||||||
|
|
||||||
buffer_number = int(
|
buffer_number = int(
|
||||||
utils.Call(
|
utils.Call(
|
||||||
'vimspector#internal#{}term#Start'.format( self._api_prefix ),
|
'vimspector#internal#{}term#Start'.format( self._api_prefix ),
|
||||||
args,
|
args,
|
||||||
options ) )
|
term_options ) )
|
||||||
terminal_window = vim.current.window
|
terminal_window = vim.current.window
|
||||||
|
|
||||||
if buffer_number is None or buffer_number <= 0:
|
if buffer_number is None or buffer_number <= 0:
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,8 @@ from vimspector import ( breakpoints,
|
||||||
output,
|
output,
|
||||||
stack_trace,
|
stack_trace,
|
||||||
utils,
|
utils,
|
||||||
variables )
|
variables,
|
||||||
|
settings )
|
||||||
from vimspector.vendor.json_minify import minify
|
from vimspector.vendor.json_minify import minify
|
||||||
|
|
||||||
# We cache this once, and don't allow it to change (FIXME?)
|
# We cache this once, and don't allow it to change (FIXME?)
|
||||||
|
|
@ -487,7 +488,8 @@ class DebugSession( object ):
|
||||||
self._codeView = code.CodeView( code_window, self._api_prefix )
|
self._codeView = code.CodeView( code_window, self._api_prefix )
|
||||||
|
|
||||||
# Call stack
|
# Call stack
|
||||||
vim.command( 'topleft vertical 50new' )
|
vim.command(
|
||||||
|
f'topleft vertical { settings.Int( "sidebar_width", 50 ) }new' )
|
||||||
stack_trace_window = vim.current.window
|
stack_trace_window = vim.current.window
|
||||||
one_third = int( vim.eval( 'winheight( 0 )' ) ) / 3
|
one_third = int( vim.eval( 'winheight( 0 )' ) ) / 3
|
||||||
self._stackTraceView = stack_trace.StackTraceView( self,
|
self._stackTraceView = stack_trace.StackTraceView( self,
|
||||||
|
|
@ -515,7 +517,7 @@ class DebugSession( object ):
|
||||||
|
|
||||||
# Output/logging
|
# Output/logging
|
||||||
vim.current.window = code_window
|
vim.current.window = code_window
|
||||||
vim.command( 'rightbelow 10new' )
|
vim.command( f'rightbelow { settings.Int( "bottombar_height", 10 ) }new' )
|
||||||
output_window = vim.current.window
|
output_window = vim.current.window
|
||||||
self._outputView = output.OutputView( self._connection,
|
self._outputView = output.OutputView( self._connection,
|
||||||
output_window,
|
output_window,
|
||||||
|
|
|
||||||
26
python3/vimspector/settings.py
Normal file
26
python3/vimspector/settings.py
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
# vimspector - A multi-language debugging system for Vim
|
||||||
|
# Copyright 2020 Ben Jackson
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
|
||||||
|
import vim
|
||||||
|
import builtins
|
||||||
|
|
||||||
|
|
||||||
|
def Get( option: str, default=None, cls=str ):
|
||||||
|
return cls( vim.vars.get( f'vimspector_{ option }', default ) )
|
||||||
|
|
||||||
|
|
||||||
|
def Int( option: str, default=0 ):
|
||||||
|
return Get( option, default=default, cls=builtins.int )
|
||||||
Loading…
Add table
Add a link
Reference in a new issue