From 1216b026f617f5273b6c97b59e1a4172fcfd3ee0 Mon Sep 17 00:00:00 2001 From: eater Date: Wed, 19 Oct 2011 20:32:48 -0300 Subject: [PATCH 1/6] Clicking on the sidebar windows does not cause main window to lose focus. --- plugin/vimroom.vim | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugin/vimroom.vim b/plugin/vimroom.vim index dbe0352..e9a438a 100644 --- a/plugin/vimroom.vim +++ b/plugin/vimroom.vim @@ -127,6 +127,9 @@ endfunction function! VimroomToggle() if s:active == 1 let s:active = 0 + " unset sidebar-click disabling + autocmd! WinEnter * + " Close all other split windows if g:vimroom_sidebar_height wincmd j @@ -221,6 +224,9 @@ function! VimroomToggle() if s:save_scrolloff != "" exec( "set scrolloff=".g:vimroom_scrolloff ) endif + + " clicking on any of the sidebar windows returns cursor to main window + autocmd! WinEnter * wincmd p " Setup navigation over "display lines", not "logical lines" if " mappings for the navigation keys don't already exist. From 5fd360918decef01f095e086594bc05491c5de65 Mon Sep 17 00:00:00 2001 From: eater Date: Wed, 19 Oct 2011 21:11:27 -0300 Subject: [PATCH 2/6] Improvement to sidebar disabling. --- plugin/vimroom.vim | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugin/vimroom.vim b/plugin/vimroom.vim index e9a438a..52128b5 100644 --- a/plugin/vimroom.vim +++ b/plugin/vimroom.vim @@ -113,6 +113,9 @@ if exists ( "&relativenumber" ) let s:save_relativenumber = &relativenumber endif +" Get the ID of the buffer we're working in +let s:mainbufnr = bufnr("%") + " We're currently in nonvimroomized state let s:active = 0 @@ -226,7 +229,8 @@ function! VimroomToggle() endif " clicking on any of the sidebar windows returns cursor to main window - autocmd! WinEnter * wincmd p + let s:mainbufwin = bufwinnr(s:mainbufnr) + autocmd! WinEnter * exe s:mainbufwin . "wincmd w" " Setup navigation over "display lines", not "logical lines" if " mappings for the navigation keys don't already exist. From 32ab8753bcaf489d95eccffc51cf403f652c98be Mon Sep 17 00:00:00 2001 From: eater Date: Wed, 19 Oct 2011 23:21:08 -0300 Subject: [PATCH 3/6] vnew rather than vsplit new --- plugin/vimroom.vim | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugin/vimroom.vim b/plugin/vimroom.vim index 52128b5..44d0f30 100644 --- a/plugin/vimroom.vim +++ b/plugin/vimroom.vim @@ -184,14 +184,14 @@ function! VimroomToggle() endif if g:vimroom_min_sidebar_width " Create the left sidebar - exec( "silent leftabove " . s:sidebar . "vsplit new" ) + exec( "silent leftabove " . s:sidebar . "vnew" ) setlocal noma setlocal nocursorline setlocal nonumber setlocal norelativenumber wincmd l " Create the right sidebar - exec( "silent rightbelow " . s:sidebar . "vsplit new" ) + exec( "silent rightbelow " . s:sidebar . "vnew" ) setlocal noma setlocal nocursorline setlocal nonumber @@ -200,14 +200,14 @@ function! VimroomToggle() endif if g:vimroom_sidebar_height " Create the top sidebar - exec( "silent leftabove " . g:vimroom_sidebar_height . "split new" ) + exec( "silent leftabove " . g:vimroom_sidebar_height . "new" ) setlocal noma setlocal nocursorline setlocal nonumber setlocal norelativenumber wincmd j " Create the bottom sidebar - exec( "silent rightbelow " . g:vimroom_sidebar_height . "split new" ) + exec( "silent rightbelow " . g:vimroom_sidebar_height . "new" ) setlocal noma setlocal nocursorline setlocal nonumber From 89f91a490140452cafef4173cdc2ebeb337d2108 Mon Sep 17 00:00:00 2001 From: eater Date: Wed, 19 Oct 2011 23:48:31 -0300 Subject: [PATCH 4/6] Don't override user's linebreak and wrap settings --- plugin/vimroom.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/vimroom.vim b/plugin/vimroom.vim index 44d0f30..30cdf3b 100644 --- a/plugin/vimroom.vim +++ b/plugin/vimroom.vim @@ -275,4 +275,4 @@ command -nargs=0 VimroomToggle call VimroomToggle() " If no mapping exists, map it to `V`. if !hasmapto( 'VimroomToggle' ) nmap V VimroomToggle -endif +endif \ No newline at end of file From c8e0d8a8f116ef20066eaff872f78b08aa72e232 Mon Sep 17 00:00:00 2001 From: eater Date: Tue, 1 Nov 2011 21:01:10 -0300 Subject: [PATCH 5/6] Option to use existing background color --- plugin/vimroom.vim | 119 +++++++++++++++++++++++++++++++-------------- 1 file changed, 82 insertions(+), 37 deletions(-) diff --git a/plugin/vimroom.vim b/plugin/vimroom.vim index 30cdf3b..7bf4809 100644 --- a/plugin/vimroom.vim +++ b/plugin/vimroom.vim @@ -1,3 +1,4 @@ + "============================================================================== "File: vimroom.vim "Description: Vaguely emulates a writeroom-like environment in Vim by @@ -35,9 +36,9 @@ if !exists( "g:vimroom_sidebar_height" ) let g:vimroom_sidebar_height = 3 endif -" The GUI background color. Defaults to "black" -if !exists( "g:vimroom_guibackground" ) - let g:vimroom_guibackground = "black" +" Override background color +if exists( "g:vimroom_guibackground_override" ) + let g:vimroom_guibackground = g:vimroom_guibackground_override endif " The cterm background color. Defaults to "bg" @@ -72,52 +73,86 @@ endif " Plugin Code " -" Given the desired column width, and minimum sidebar width, determine -" the minimum window width necessary for splitting to make sense -let s:minwidth = g:vimroom_width + ( g:vimroom_min_sidebar_width * 2 ) + " Given the desired column width, and minimum sidebar width, determine + " the minimum window width necessary for splitting to make sense + let s:minwidth = g:vimroom_width + ( g:vimroom_min_sidebar_width * 2 ) -" Save the current color scheme for reset later -let s:scheme = "" -if exists( "g:colors_name" ) - let s:scheme = g:colors_name -endif -if exists( "&t_mr" ) + if exists( "&t_mr" ) let s:save_t_mr = &t_mr -end + end -" Save the current scrolloff value for reset later -let s:save_scrolloff = "" -if exists( "&scrolloff" ) +function! Savestatus() + " Save the current color scheme for reset later + let s:scheme = "" + if exists( "g:colors_name" ) + let s:scheme = g:colors_name + endif + " Save the current scrolloff value for reset later + let s:save_scrolloff = "" + if exists( "&scrolloff" ) let s:save_scrolloff = &scrolloff -end + end -" Save the current `laststatus` value for reset later -let s:save_laststatus = "" -if exists( "&laststatus" ) + " Save the current `laststatus` value for reset later + let s:save_laststatus = "" + if exists( "&laststatus" ) let s:save_laststatus = &laststatus -endif + endif -" Save the current `textwidth` value for reset later -let s:save_textwidth = "" -if exists( "&textwidth" ) + " Save the current `textwidth` value for reset later + let s:save_textwidth = "" + if exists( "&textwidth" ) let s:save_textwidth = &textwidth -endif + endif + + " Save the current `wrap` value for reset later + let s:save_wrap = 0 + if exists( "&wrap" ) + let s:save_wrap = &wrap + endif + + " Save the current `linebreak` value for reset later + let s:save_linebreak = 0 + if exists( "&linebreak" ) + let s:save_linebreak = &linebreak + endif -" Save the current `number` and `relativenumber` values for reset later -let s:save_number = 0 -let s:save_relativenumber = 0 -if exists( "&number" ) + " Save the current `number` and `relativenumber` values for reset later + let s:save_number = 0 + let s:save_relativenumber = 0 + if exists( "&number" ) let s:save_number = &number -endif -if exists ( "&relativenumber" ) + endif + if exists ( "&relativenumber" ) let s:save_relativenumber = &relativenumber -endif + endif +endfu + +" Get the current background color +function! Getbgcolor() + redir => s:currentcolors + silent highlight Normal + redir END + let s:findguibg = matchstr(s:currentcolors, "guibg=\\S\\+") + let s:findctermbg = matchstr(s:currentcolors, 'ctermbg=\\S\\+') + if !empty(s:findguibg) + let s:bglist = split(s:findguibg,'=') + let s:bg = s:bglist[1] + elseif !empty(g:findctermbg) + let s:bglist = split(s:findctermbg,'=') + let s:bg = s:bglist[1] + else + let s:bg = 'black' + endif + return s:bg +endfu " Get the ID of the buffer we're working in let s:mainbufnr = bufnr("%") " We're currently in nonvimroomized state let s:active = 0 +silent call Savestatus() function! s:is_the_screen_wide_enough() return winwidth( winnr() ) >= s:minwidth @@ -153,7 +188,7 @@ function! VimroomToggle() hi clear endif if s:save_t_mr != "" - exec( "set t_mr=" .s:save_t_mr ) + exec( "set t_mr=" . s:save_t_mr ) endif " Reset `scrolloff` and `laststatus` if s:save_scrolloff != "" @@ -165,16 +200,20 @@ function! VimroomToggle() if s:save_textwidth != "" exec( "set textwidth=" . s:save_textwidth ) endif + if s:save_linebreak != 0 + set linebreak + endif + if s:save_wrap != 0 + set wrap + endif if s:save_number != 0 set number endif if s:save_relativenumber != 0 set relativenumber endif - " Remove wrapping and linebreaks - set nowrap - set nolinebreak else + call Savestatus() if s:is_the_screen_wide_enough() let s:active = 1 let s:sidebar = s:sidebar_size() @@ -247,6 +286,11 @@ function! VimroomToggle() endtry endif + " The GUI background color + if !exists( "g:vimroom_guibackground_override" ) + let g:vimroom_guibackground = Getbgcolor() + endif + " Hide distracting visual elements if has('gui_running') let l:highlightbgcolor = "guibg=" . g:vimroom_guibackground @@ -275,4 +319,5 @@ command -nargs=0 VimroomToggle call VimroomToggle() " If no mapping exists, map it to `V`. if !hasmapto( 'VimroomToggle' ) nmap V VimroomToggle -endif \ No newline at end of file +endif + From 13dc63b8f5523d896e68a7f4c8073d3e01c7b95e Mon Sep 17 00:00:00 2001 From: eater Date: Sun, 6 Nov 2011 11:23:56 -0500 Subject: [PATCH 6/6] Bugfix to background color override code --- plugin/vimroom.vim | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/plugin/vimroom.vim b/plugin/vimroom.vim index 7bf4809..5cc60e7 100644 --- a/plugin/vimroom.vim +++ b/plugin/vimroom.vim @@ -1,4 +1,3 @@ - "============================================================================== "File: vimroom.vim "Description: Vaguely emulates a writeroom-like environment in Vim by @@ -133,19 +132,13 @@ function! Getbgcolor() redir => s:currentcolors silent highlight Normal redir END - let s:findguibg = matchstr(s:currentcolors, "guibg=\\S\\+") - let s:findctermbg = matchstr(s:currentcolors, 'ctermbg=\\S\\+') - if !empty(s:findguibg) - let s:bglist = split(s:findguibg,'=') - let s:bg = s:bglist[1] - elseif !empty(g:findctermbg) - let s:bglist = split(s:findctermbg,'=') - let s:bg = s:bglist[1] + if match(s:currentcolors, "guibg=\\zs\\S\\+") + return matchstr(s:currentcolors, "guibg=\\zs\\S\\+") + elseif match(s:currentcolors, "ctermbg=\\zs\\S\\+") + return matchstr(s:currentcolors, "ctermbg=\\zs\\S\\+") else - let s:bg = 'black' - endif - return s:bg -endfu + return 'black' + endfu " Get the ID of the buffer we're working in let s:mainbufnr = bufnr("%") @@ -289,6 +282,8 @@ function! VimroomToggle() " The GUI background color if !exists( "g:vimroom_guibackground_override" ) let g:vimroom_guibackground = Getbgcolor() + else + let g:vimroom_guibackground = g:vimroom_guibackground_override endif " Hide distracting visual elements