Thread: character from above
Cream is a free, easy-to-use configuration of the Vim text editor
Brought to you by:
digitect
From: <flr...@ec...> - 2005-11-27 19:52:28
|
Steve, There is a vim key 'ctrl-y' to copy (at the cursor) the character above the cursor. Since that key is used otherwise in Cream, how can I assign a key of my choice to the feature? What's the name of the underlying function? Thanks. Frank |
From: Steve H. <dig...@mi...> - 2005-11-29 00:33:31
|
On Sun, 2005-11-27 at 21:52 +0200, flr...@ec... wrote: > > There is a vim key 'ctrl-y' to copy (at the cursor) the > character above the cursor. Since that key is used otherwise > in Cream, how can I assign a key of my choice to the > feature? What's the name of the underlying function? Unfortunately, there is no underlying function that can be accessed. However, it is quite simple to write a function with corresponding mapping that would do exactly the same thing: function! Cream_copy_char_above() let str = getline(line('.') - 1) let chr = matchstr(str, '.', col('.')) execute "normal a" . chr endfunction imap <silent> <F12> <C-o>:call Cream_copy_char_above()<CR> Works for me! -- Steve Hall [ digitect mindspring com ] :: Cream... something good to put in your Vim! :: http://cream.sourceforge.net |
From: <flr...@ec...> - 2005-11-29 23:25:17
|
> function! Cream_copy_char_above() > let str = getline(line('.') - 1) > let chr = matchstr(str, '.', col('.')) > execute "normal a" . chr > endfunction It works in an odd way: - it skips the character above the cursor and duplicates the next one - the cursor is positioned before the insertion while it should go as when typing I tried to tune it myself but it looks awkward. Please, give it your elegant touch. Thanks. Frank |
From: Steve H. <dig...@mi...> - 2005-11-30 02:59:31
|
On Tue, 2005-11-29 at 18:42 +0200, flr...@ec... wrote: > > It works in an odd way: > > - it skips the character above the cursor and > duplicates the next one > > - the cursor is positioned before the insertion > while it should go as when typing I see this only on the first column, this is what you meant? If so, a quick test solves it for me: function! Cream_copy_char_above() " position correction if getline('.') == "" let col = 0 else let col = col('.') endif let str = getline(line('.') - 1) let chr = matchstr(str, '.', col) execute "normal a" . chr endfunction imap <silent> <F12> <C-o>:call Cream_copy_char_above()<CR> -- Steve Hall [ digitect mindspring com ] :: Cream... something good to put in your Vim! :: http://cream.sourceforge.net |
From: <flr...@ec...> - 2005-11-30 15:45:29
|
> I see this only on the first column, this is what you meant? Not really: - You call the feature first time from the middle of a line, a character is skipped - You immediately use the feature again, without doing anything in between, it works - After first call, move the cursor (possibly go back to previous position), call the feature, character is skipped - There are peculiar cases at begin of a full line and on empty lines - It gets chaotic at end-of-line when the cursor is positioned after the last character (on the line break) In any event, the cursor is not positioned correctly. Here, you are simulating typing, it should work the same way and it does not. When you type, a character is inserted, the cursor rests after it. Regards Frank |
From: Steve H. <dig...@mi...> - 2005-12-01 02:38:00
|
On Wed, 2005-11-30 at 17:45 +0200, flr...@ec... wrote: > > I see this only on the first column, this is what you meant? > > Not really: > > - You call the feature first time from the middle of a line, > a character is skipped > > - You immediately use the feature again, without doing > anything in between, it works > > - After first call, move the cursor (possibly go back to > previous position), call the feature, character is > skipped > > - There are peculiar cases at begin of a full line and > on empty lines > > - It gets chaotic at end-of-line when the cursor is > positioned after the last character (on the line break) > > In any event, the cursor is not positioned correctly. Here, > you are simulating typing, it should work the same way and > it does not. When you type, a character is inserted, the > cursor rests after it. Welcome to Vim! I have been hammering on the Vim lists for years trying to get these idiosyncracies fixed. Fact is, they are not Cream issues but those of Vim related to switching modes to or from insert mode. We have lots of code that try to fix these one-off bugs, but there are some cases where we can not, and you are stumbling over them. (I am nearly numb to them myself by now.) A new command was added in Vim 7 that may fix this, but it is too early for me to even start testing it since Vim 7 is likely a long way from seeing a beta release. When a stable release is made, I will probably begin a new strain of Cream in which we can do a total code review against these types of bugs. (And include the major new features, maybe update the name.) But until then, we're pretty much stuck with this. -- Steve Hall [ digitect mindspring com ] :: Cream... something good to put in your Vim! :: http://cream.sourceforge.net |
From: <flr...@ec...> - 2005-12-02 20:41:01
|
> Welcome to Vim! I have been hammering on the Vim lists for > years trying to get these idiosyncracies fixed. A valedictory welcome, shall we say. I'm essentially still using a DOS editor plus Notepad but I would like to move to a Windows editor with scripting. Windows editors with scripting are closed source and expensive. Exceptions are vim and emacs, but they are both atrocities as far as I am concerned. That's why Cream looks interesting and promising to me. Now you are telling me that I cannot rely entirely on vim scripts because the cursor position is not under control. That's the end of it, I'm afraid. Please send me a reminder if a new vim version overcomes the problem one day. And unsubscribe me from the list. Thanks. Frank |
From: Steve H. <dig...@mi...> - 2005-12-03 04:50:39
|
On Fri, 2005-12-02 at 22:40 +0200, flr...@ec... wrote: > > Windows editors with scripting are closed source and expensive. > Exceptions are vim and emacs, but they are both atrocities as far as > I am concerned. In terms of interface, I would agree, although the redeeming features of these widely-used editors stems from their stability and capability over the last 20 years. > That's why Cream looks interesting and promising to > me. Now you are telling me that I cannot rely entirely on vim > scripts because the cursor position is not under control. While we are being technically correct by highlighting the pains caused by this one-off bug, it is often argued by its author that Vim is not a programming language. (See :help design-not.) This implies that one should not rely on vimscript to accomplish anything other than a batch of commands. Cream severely abuses this principle, it is nearly 4 Mb of vimscript loaded into a heap of functions, options, variables, and autocmd events. I guess it is a testament that Vim stands up to this, but it is inevitable that we will bump into some corner bug here or there. Even so, this particular issue has (theoretically) been fixed for the upcoming Vim version 7--I just haven't been able to test it yet. > That's the end of it, I'm afraid. Please send me a reminder if a new > vim version overcomes the problem one day. > > And unsubscribe me from the list. Thanks. You can unsubscribe yourself, see the bottom of this page: http://lists.sourceforge.net/lists/listinfo/cream-general -- Steve Hall [ digitect mindspring com ] :: Cream... something good to put in your Vim! :: http://cream.sourceforge.net |