Go to top when trying to go past bottom and viceversa in file lister

Hi.

Trying to do something really simple here, I would like to have an option to go to the last file/folder in a lister when I press UP ARROW being at the first one and viceversa. Currently when you're at the first or last element in a file lister and try to go past it, you stay at that element. Of course, this should only happen when you press UP/DOWN ARROW, not SHIFT+ARROW.

I tried searching for an option but couldn't find any. Then tried to do something with scripting (way overkill, I know) but was unable to find a way to read the current selected element index in a file lister (I found the index column and {sel:index} for the status bar but nothing for scripting).

Thank you.

Note: don't know exactly what's the proper technical name for this feature so feel free to edit the post or the subject to include it.

You can go to the top by pushing the Home key.

@mprost
I'd call it "wrap-around", which I did :smiley:

You can assign these 2 commands to 2 new lister hotkeys for up & down arrows. It works albeit slower than unmodified arrow keys:

function OnInit(initData) {
    initData.name           = 'CuWrapAround';
    initData.default_enable = true;
    var userCmd;
    userCmd             = initData.addCommand();
    userCmd.name        = 'CuWrapAroundNext';
    userCmd.method      = 'OnAutoWrapAroundNext';
    userCmd.label		= 'Wrap around';
    userCmd.desc        = 'Jumps back to first file after selecting past last file with down arrow';
    userCmd             = initData.addCommand();
    userCmd.name        = 'CuWrapAroundPrev';
    userCmd.method      = 'OnAutoWrapAroundPrev';
    userCmd.label		= 'Wrap around';
    userCmd.desc        = 'Jumps back to last file after selecting past first file with up arrow';
    return false;
}

function OnAutoWrapAroundNext(cmdData) {
    cmd.clear();
    cmd.runCommand('Select NEXT');
}
function OnAutoWrapAroundPrev(cmdData) {
    cmd.clear();
    cmd.runCommand('Select PREV');
}
var cmd = DOpus.create().command();

1 Like

Unless I'm missing something, it would be slightly quicker, and simpler, to not use a script at all and bind the Select NEXT and Select PREV commands to hotkeys directly.

(Instead of a hotkeys which run script commands which just run the real commands without any extra logic on top.)

1 Like

@Leo Indeed, that's much simpler :smiley: I was writing another script, totally fixated at the script idea :smiley:

The behavior is, however, the same. The selection moves and it wrap arounds fine, but if you press the key in a lister where not all files fit into the viewed portion, the selected file moves into viewport after some delay, whereas unmodified arrows keep the selected file always visible. That's why I described it "albeit slower" in my initial reply.

Change the commands to these to make it instant:

Select NEXT MAKEVISIBLE=immediate
Select PREV MAKEVISIBLE=immediate
1 Like

:smiley: Is there anything which you haven't thought about already? :smiley:

Wow, thank you both, binding DOWN ARROW to Select NEXT MAKEVISIBLE=immediate is exactly what I was looking for.

And I'm actually looking for the opposite — how to stop "wrap-around" behavior of the following command that changes arrow keys to select previous/next item in a Thumbnail view, but otherwise go up/down a folder
This is

@ifset:VIEW=Thumbnails
Select PREV MAKEVISIBLE=immediate
@if:else
go up back

This is

@ifset:VIEW=Thumbnails
Select NEXT MAKEVISIBLE=immediate
@if:else
go FROMSEL

Unfortunately, reaching the last item and pressing moves to the first item.
How do I make it stop?
Thanks!

I don't think there is a simple way to stop the Select NEXT/PREV command from wrapping around. You'd probably need to use scripting to test if the current file is the first/last in the list.

Then I'd have to recreate the if/VIEW/Select etc. functionality in the script, right?
I can't just insert a script snippet that only does this one check in a script if/else, can I?

Recreating that would be the easy part.