Unveiling the Technique to Locate the Last Visible Line in EmEditor: Tips and Tricks for Efficient Document Navigation
Unveiling the Technique to Locate the Last Visible Line in EmEditor: Tips and Tricks for Efficient Document Navigation
Tagged: filter , last visible line , line number , macro
Viewing 9 posts - 1 through 9 (of 9 total)
- Author
Posts - August 30, 2016 at 3:51 pm #21031
LifeTimer
Participant
I’m using a macro (in Cell Selection Mode) to select all the data in the column where the “cell cursor” is currently at. It looks like this:
document.selection.SetActivePoint(eePosCell, document.selection.GetActivePointX(eePosCell), 2, false);
document.selection.SetActivePoint(eePosCell, document.selection.GetActivePointX(eePosCell), document.GetLines() - 1, true);
It works great when there is no active filter, but as soon as any line at the end of the file is currently filtered-out, it won’t work. It will then instead select all the columns including and to the left of the column where the “cell cursor” is currently at.
The simple explanation for this is that the expression “document.GetLines() – 1” will not move the cursor from the last (empty) line above it in the filtered data (because the line number of that line will still be less than “document.GetLines() – 1” if any lines have been filtered-out inbetween the end of the document and the last visible (= non-filtered out) line in the document). Thus, the cell cursor will “snap left” on the very last line of the file (which is always empty, therefore bringing the cell cursor all the way to the left, consequently selecting also all the columns to the left of the intended column).
So, my question is therefore: Is there any way to get the line numbers of only the visible lines (i.e. those that are not hidden by the filter) in a file, from a macro?
If not, how can I go about selecting the entire contents of a single column from a macro in the above described scenario?
Example data (with example line numbers to the left):
1: col1;col2;col3
2: 1;2;3
3: 11;22;33
4: 111;222;333
10:
In this case, lines 5-9 of the file have been filtered-out by a filter expression, therefore not being visible in the editor window.
So, what I want in this example is to get the number of the last visible line (i.e. nr 4, which is the last visible line before the very last line which in this case is nr 10, where the last one is always empty without any cells, except the “artificial” cell being placed to the very left), or any other method to reliably select the entire data contents (i.e. rows 2-4) of this column.
Are any of these two things currently possible from EmEditor macros, or could you otherwise possibly add the possibility to do any of these two things?
September 6, 2016 at 11:30 pm #21032
Yutaka Emura
Keymaster
Hello LifeTimer,
The following macro should get the number of visible lines.n = document.GetLines(eeGetLineView);
Can you please try and let me know if you have further questions?
September 21, 2016 at 6:41 am #21073
LifeTimer
Participant
Thanks for your reply!
Unfortunately, this is not a solution for the problem. :-(
Even though it works when only rows at the very end of the file has been filtered away, it does not work if any other rows higher up in the document has been filtered away also.
Example:
Unfiltered document contents:
col1,col2,col3
1,2,3
aaa,bbb,ccc
aaa,bbb,ccc
11,22,33
111,222,333
xxx,yyy,zzz
xxx,yyy,zzz
xxx,yyy,zzz
xxx,yyy,zzz
xxx,yyy,zzz
After filtering the last rows (e.g. filtering away “xxx”):
col1,col2,col3
1,2,3
aaa,bbb,ccc
aaa,bbb,ccc
11,22,33
111,222,333
As mentioned above, the selection macro in my first post (modified with your suggestion of the eeGetLineView parameter to the document.GetLines() method) does indeed work now, BUT, if we also filter away some other lines, e.g. the ones containing “aaa”, we get the following visible document contents:
col1,col2,col3
1,2,3
11,22,33
111,222,333
And if we then try to run the macro, the selection is cut short and does not cover the full column (the last line is not selected, and the more lines we filter away, the more lines will not be selected at the bottom).
The problem is apparently that the SetActivePoint() method uses absolute line numbers (i.e. ignoring that rows have been filtered away), while the document.GetLines() method always returns a total count of lines (visible or not). So we would either need the SetActivePoint() method to also be able to use relative line numbers (i.e. after filtering), or need some completely other method to return the absolute line number of the last visible (non empty) line (for example named “document.GetLastVisibleLineNumber()”), in order to be able to perform this simple operation of selecting the contents of a column?
Here is the full macro code, modified with your suggested eeGetLineView parameter, for reference:
document.selection.SetActivePoint(eePosCell, document.selection.GetActivePointX(eePosCell), 2, false);
document.selection.SetActivePoint(eePosCell, document.selection.GetActivePointX(eePosCell), document.GetLines(eeGetLineView) - 1, true);
September 26, 2016 at 1:07 pm #21081
Yutaka Emura
Keymaster
Hello,document.GetLines(eeGetLineView);
should always return the number of only visible lines. Please make sure you add the “eeGetLinesView” flag as written above.
Can you make sure you use the latest version of EmEditor?
If the problem persists, please write the issue with a very simple example with a few sentences (as simple as possible).
Thank you,
September 26, 2016 at 2:20 pm #21082
LifeTimer
Participant
Sorry if I was unclear. Yes, the eeGetLineView parameter to the document.GetLines() method does indeed return the number of visible lines. Unfortunately this is not the problem though.
The problem is that when I then want to use this number to move the cell cursor in the filtered document data, it turns out that the document.selection.SetActivePoint() method only uses absolute line numbers (i.e. the line numbers that are listed to the left in EmEditor, contrary to the target line’s number in the order of visible lines from the top of the document), and these absolute line numbers do not change when filtering the data, which in turn means that the result returned from document.GetLines(eeGetLineView) is sadly of no use at all for knowing how to make document.selection.SetActivePoint() position the cell cursor on the last visible line of the filtered document.
Allow me to completely rephrase the question for you though, and you will most likely stumble upon this problem yourself when answering this question if nothing else:
Could you please tell me how to write a macro in EmEditor that performs the simple operation of selecting all visible cells in the current column (except the header line) in an arbitrarily filtered document in Cell Selection Mode?
September 28, 2016 at 1:35 pm #21086
Yutaka Emura
Keymaster
Hello LifeTimer,
Thanks for clarification.
You can use:editor.ExecuteCommandByID(4461);
to select the current column without headings.
Thank you,
September 28, 2016 at 5:54 pm #21087
LifeTimer
Participant
Thanks!
I’d still recommend to implement “real” macro support for it though (e.g. by making the document.selection.SetActivePoint() method optionally be able to use relative visible line numbers instead of only absolute line numbers). :-)
September 30, 2016 at 3:51 pm #21093
Yutaka Emura
Keymaster
Hello LifeTimer,
On the next version (v16.2.0 beta 2), you can use eePosCellView flag to specify the coordinate in Cell View mode. For example:document.selection.SetActivePoint(eePosCellView, 1, 7, false);
will set the active cell at (1,7) in the view.
Thank you,
September 30, 2016 at 4:09 pm #21094
LifeTimer
Participant
Excellent, thanks for your responsiveness, as always!
- Author
Posts
Viewing 9 posts - 1 through 9 (of 9 total)
- You must be logged in to reply to this topic.
Also read:
- [New] In 2024, Navigating Picture in Picture Video Integration for Mac OS X
- [New] Speedy FB Uploads How to Get There Fastest
- [Updated] Enhance Audio-Visual Fidelity Use AV1 on YouTube for 2024
- [Updated] In 2024, Netflix Archive The Complete Guide to ScreenCapturing Your Views
- Best Android Data Recovery - undelete lost call logs from Realme Narzo N53
- Comprehensive Tutorial on vCenter Backups & Restoration Processes
- Descargar Gratuito Y Convertir Fácilmente DTS a MP4 Con Herramientas Online De Conversión
- FoneBackup: Wie Sie MP4 Videos Effizient Auf Die Kamerarolle Ihres iPhone Sparen
- In 2024, 5 Techniques to Transfer Data from Itel P55+ to iPhone 15/14/13/12 | Dr.fone
- In 2024, Streamlining Your Verification Process on YT
- Mastering File Deletion From the Command Prompt in Windows 10
- Olympus Oder Sony Voice Recorders: Methoden Zum Wiederherstellen Gelöschter Aufnahmen!
- Online Veilig & Eenvoudig MP3 Naar MOV Converter - Gratuit, Lekker en Goedkomenrijk!
- Quick Guide: Deploying Hyper-V on Windows Server ˈ19 With Three User-Friendly Techniques
- Schnell Und Einfach Software Installieren/Deinstallieren
- Solutions for Resolving Outlook's Error Code 0X800ccce: A Guide to Restoring Email Functionality
- Strategie Semplici E Rapide: Come Installare Windows 11 Su Un Nuovo PC
- Top 5 Solutions to Recover Lost Data After Windows 11 Update
- Vom Alt Ins Neue: Transition Von Active Directory Versionen (AD2008 Auf AD201#) Mit Optimaler Migrations-Taktik
- Title: Unveiling the Technique to Locate the Last Visible Line in EmEditor: Tips and Tricks for Efficient Document Navigation
- Author: Jason
- Created at : 2024-11-21 00:19:41
- Updated at : 2024-11-23 02:00:51
- Link: https://win-great.techidaily.com/unveiling-the-technique-to-locate-the-last-visible-line-in-emeditor-tips-and-tricks-for-efficient-document-navigation/
- License: This work is licensed under CC BY-NC-SA 4.0.