* Need help with sort function for tabulated-list-format
@ 2022-08-26 17:28 Jean Louis
2022-08-26 17:50 ` [SOLVED] " Jean Louis
0 siblings, 1 reply; 6+ messages in thread
From: Jean Louis @ 2022-08-26 17:28 UTC (permalink / raw)
To: Help GNU Emacs
In my extensive tabulated list work, usually I use the ID number as
the first column. The ID number, while number in reality, it is
string.
That would mean that I would need to make a function that converts
strings to numbers before sorting such.
And here below there is explanation that SORT shall represent
predicate to `sort' function.
-- Variable: tabulated-list-format
This buffer-local variable specifies the format of the Tabulated
List data. Its value should be a vector. Each element of the
vector represents a data column, and should be a list ‘(NAME WIDTH
SORT)’, where
• NAME is the column’s name (a string).
• WIDTH is the width to reserve for the column (an integer).
This is meaningless for the last column, which runs to the end
of each line.
• SORT specifies how to sort entries by the column. If ‘nil’,
the column cannot be used for sorting. If ‘t’, the column is
sorted by comparing string values. Otherwise, this should be
a predicate function for ‘sort’ (*note Rearrangement::), which
accepts two arguments with the same form as the elements of
‘tabulated-list-entries’ (see below).
Here is my tabulated-list-format:
(defvar cf-people-tabulated-format-with-account [("ID" 8 t) ("Name" 40 t) ("Account" 40 t)])
I would like to provide the mentioned predicate here, something like:
(defvar cf-people-tabulated-format-with-account [("ID" 8 string-as-number-is-smaller-than) ("Name" 40 t) ("Account" 40 t)])
Purpose is to sort the first column by its number represented as string.
320193 Qg
328635 Sgh
334546 Tbrich
338532 jnet
347050 ygmail.com
347886 Tsimmons
360982 mail.com
361677 D
Does anybody have sample predicate function for `sort' which accepts
two arguments as the elements of `tabulated-list-entries'?
Jean
Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns
In support of Richard M. Stallman
https://stallmansupport.org/
^ permalink raw reply [flat|nested] 6+ messages in thread
* [SOLVED] Re: Need help with sort function for tabulated-list-format
2022-08-26 17:28 Need help with sort function for tabulated-list-format Jean Louis
@ 2022-08-26 17:50 ` Jean Louis
2022-08-26 19:42 ` Emanuel Berg
0 siblings, 1 reply; 6+ messages in thread
From: Jean Louis @ 2022-08-26 17:50 UTC (permalink / raw)
To: Help GNU Emacs
I guess I solved it by looking into the package package.
(defun rcd-number-as-string-predicate (A B)
"Predicate to sort numbers in columns of strings."
(let ((vA (string-to-number (aref (cadr A) 0)))
(vB (string-to-number (aref (cadr B) 0))))
;;(message-box "%s" vA)
(< vA vB)))
And now this works well, I can sort columns containing numbers as
I guess I solved it by looking into package packagestrings:
(defvar cf-people-tabulated-format-with-account [("ID" 8 rcd-number-as-string-predicate) ("Name" 40 t) ("Account" 40 t)])
--
Jean
Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns
In support of Richard M. Stallman
https://stallmansupport.org/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [SOLVED] Re: Need help with sort function for tabulated-list-format
2022-08-26 17:50 ` [SOLVED] " Jean Louis
@ 2022-08-26 19:42 ` Emanuel Berg
2022-08-27 3:39 ` Jean Louis
0 siblings, 1 reply; 6+ messages in thread
From: Emanuel Berg @ 2022-08-26 19:42 UTC (permalink / raw)
To: help-gnu-emacs
Jean Louis wrote:
> I guess I solved it by looking into the package package
Sort the numeric `sort-numeric-fields' fields.
--
underground experts united
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [SOLVED] Re: Need help with sort function for tabulated-list-format
2022-08-26 19:42 ` Emanuel Berg
@ 2022-08-27 3:39 ` Jean Louis
2022-08-27 4:22 ` Emanuel Berg
0 siblings, 1 reply; 6+ messages in thread
From: Jean Louis @ 2022-08-27 3:39 UTC (permalink / raw)
To: help-gnu-emacs
* Emanuel Berg <incal@dataswamp.org> [2022-08-27 06:31]:
> Jean Louis wrote:
>
> > I guess I solved it by looking into the package package
>
> Sort the numeric `sort-numeric-fields' fields.
That function is for sorting lines in region numerically.
While I had to find a function to sort a column within the tabulated
list mode.
Sample value of `tabulated-list-entries':
Value:
((1
["1" ""])
(2
["2" "ACTION"])
(3
["3" "COMPLETED"])
(4
["4" "PENDING"])
(5
["5" "UPDATE PENDING"])
(6
["6" "DECISION REVERSED"]))
That means that this first column with "1", "2", that one has to be
used for sorting. By sorting it as strings, then it goes like "1" "10"
1
2 ACTION
3 COMPLETED
4 PENDING
5 UPDATE PENDING
6 DECISION REVERSED
6 DECISION REVERSED
5 UPDATE PENDING
4 PENDING
3 COMPLETED
2 ACTION
1
Sorting as strings:
(sort '("100" "9" "10" "1") 'string<) ⇒ ("1" "10" "100" "9")
That would be incorrect for numbers, rightß
Tabulated list mode by default sorts columns by its strings.
So I had to make a function that converts strings to numbers, so that
we get something like this:
(sort '(100 9 10 1) '<) ⇒ (1 9 10 100)
Which then makes sense.
--
Jean
Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns
In support of Richard M. Stallman
https://stallmansupport.org/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [SOLVED] Re: Need help with sort function for tabulated-list-format
2022-08-27 3:39 ` Jean Louis
@ 2022-08-27 4:22 ` Emanuel Berg
2022-08-29 8:01 ` Jean Louis
0 siblings, 1 reply; 6+ messages in thread
From: Emanuel Berg @ 2022-08-27 4:22 UTC (permalink / raw)
To: help-gnu-emacs
Jean Louis wrote:
> So I had to make a function that converts strings to numbers
Such a function already exists, `string-to-number' but ... why
are integers stored in and as strings to begin with?
--
underground experts united
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [SOLVED] Re: Need help with sort function for tabulated-list-format
2022-08-27 4:22 ` Emanuel Berg
@ 2022-08-29 8:01 ` Jean Louis
0 siblings, 0 replies; 6+ messages in thread
From: Jean Louis @ 2022-08-29 8:01 UTC (permalink / raw)
To: Emanuel Berg, help-gnu-emacs
Let me elaborate, it was about converting strings to numbers and during tabulated list mode by those converted numbers.
Predicate function was needed.
Did you review it?
On August 27, 2022 4:22:48 AM UTC, Emanuel Berg <incal@dataswamp.org> wrote:
>Jean Louis wrote:
>
>> So I had to make a function that converts strings to numbers
>
>Such a function already exists, `string-to-number' but ... why
>are integers stored in and as strings to begin with?
Jean
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-08-29 8:01 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-26 17:28 Need help with sort function for tabulated-list-format Jean Louis
2022-08-26 17:50 ` [SOLVED] " Jean Louis
2022-08-26 19:42 ` Emanuel Berg
2022-08-27 3:39 ` Jean Louis
2022-08-27 4:22 ` Emanuel Berg
2022-08-29 8:01 ` Jean Louis
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).