help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How users start programming in Emacs Lisp...


From: Jean Louis
Subject: Re: How users start programming in Emacs Lisp...
Date: Mon, 31 May 2021 01:27:26 +0300
User-agent: Mutt/2.0.7+183 (3d24855) (2021-05-28)

* Emanuel Berg via Users list for the GNU Emacs text editor 
<help-gnu-emacs@gnu.org> [2021-05-30 22:31]:

> What is this SQL thing I keep hear about BTW, you send it to/from
> Emacs and get the data neatly or what does it do and what databases
> do you use it with?

I am sure you know it. SQL https://en.wikipedia.org/wiki/SQL

> You keep track of all the weaponry you have at home? :)
> 
> Well, actually, if I had enough I would now that I say it.
> Bad example.
> 
> Is relational algebra the base for SQL?

You have got it right.

Relational algebra - Wikipedia
https://en.wikipedia.org/wiki/Relational_algebra

Though I know nothing about it... but I should. 

SQL database spare programming time and effort. 

Compared to Org, the file `org-agenda.el' is full of features and
handles all kinds of things. It is however slow and has several keys
that handle its incapacities, such as sticky views or stuck
projects. And it distorts the users' view of what agenda really is, as
it is not just "agenda", rather a menu of search functions, for
example it encompasses the function `org-search-view'. The function
`org-agenda' should be renamed to something else, as the true agenda
is just the `org-agenda-list', but users will not be warned.

With the SQL, as when objects are in the database, the 415 kilobytes
org-agenda.el or at least we can say several kilobytes of spaghetti
Emacs Lisp code is replaced with the SQL query and report function:

(defun hyperscope-hyperdocuments-agenda ()
  (interactive)
  (rcd-speak "Hyperscope agenda")
  (let ((sql "SELECT DISTINCT timestamps_hlinks, timestamptypes_name,
              to_char(timestamps_timestamp::date, 'Day'), 
timestamps_timestamp::date,
              hyobjects_name, actionstatuses_name
              FROM hyobjects, timestamps, timestamptypes, actionstatuses
              WHERE hyobjects_id = timestamps_hlinks
              AND timestamptypes_id = timestamps_timestamptypes
              AND timestamptypes_inagenda IS TRUE
              AND actionstatuses_id = hyobjects_actionstatuses
              AND actionstatuses_actionstatustypes != 3
              ORDER BY timestamps_timestamp DESC")
        (highlights (append '("ACTION") (hyperscope-timestamp-list t))))
    (rcd-db-sql-report "Hyperscope Agenda" sql [("ID" 5 t) ("Type" 10 t) ("Day" 
9 t) ("Timestamp" 10 t) ("Hyperdocument" 55) ("Action" 10 t)] "hyobjects" 
'("Timestamp" . t) 'hyperscope-hyperdocuments-agenda highlights)))

Comparison
==========

Try reading function `org-agenda' and `org-agenda-list' and compare
to the SQL above. 


-- 
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

Sign an open letter in support of Richard M. Stallman
https://stallmansupport.org/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]