all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Is is a major or minor mode?
@ 2002-10-31  2:19 Galen Boyer
  2002-10-31 12:29 ` Phillip Lord
  0 siblings, 1 reply; 7+ messages in thread
From: Galen Boyer @ 2002-10-31  2:19 UTC (permalink / raw)


I have been working on a package I am calling ejsql.el (Emacs JDBC SQL).
The idea is to use the beanshell (the way that the JDEE is using it) to
act as a JVM and serve up metadata objects that have specific JDBC
connections.  I have a connection pooling mechanism working and a data
caching mechanism working and this is being "eval'd" into elisp
completing-reads.  So, now, from (hopefully) any sql buffer, I can start
to build a dynamic sql generator (among a host of other enhancements
providing me years worth of weekends spent with my favorite addiction
and keeping me from my previous golf addiction).  The data I'm currently
retrieving is a table listing and a table/column mapping.  I cache these
data structures using java objects hosted within the Emacs process (*bsh*)
so the user won't take a big time data retrieval hit while they are
coding their sql. I will provide the user the mechanism to have Emacs
retrieve these structures directly from the database as well, or in
other words, to refresh the cache.

Now, my question.

I want this to be available in both SQLi and sql-mode buffers and
piggyback on its comint integration.  I was planning to write a wrapper
around the login functionality of sql.el which would then define the
specific variables that the sql-mode and sqli buffers needed to know
about to get at the *bsh* variables.  I'm just not sure if this is the
right plan to proceed with.  Should I make my own major-mode and steal
liberally from sql.el?  

-- 
Galen deForest Boyer
Sweet dreams and flying machines in pieces on the ground.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Is is a major or minor mode?
  2002-10-31  2:19 Is is a major or minor mode? Galen Boyer
@ 2002-10-31 12:29 ` Phillip Lord
  2002-10-31 17:22   ` Kevin Rodgers
  2002-11-01  3:26   ` Galen Boyer
  0 siblings, 2 replies; 7+ messages in thread
From: Phillip Lord @ 2002-10-31 12:29 UTC (permalink / raw)



>>>>> "Galen" == Galen Boyer <galenboyer@hotpop.com> writes:

  Galen> I want this to be available in both SQLi and sql-mode buffers
  Galen> and piggyback on its comint integration.  I was planning to
  Galen> write a wrapper around the login functionality of sql.el
  Galen> which would then define the specific variables that the
  Galen> sql-mode and sqli buffers needed to know about to get at the
  Galen> *bsh* variables.  I'm just not sure if this is the right plan
  Galen> to proceed with.  Should I make my own major-mode and steal
  Galen> liberally from sql.el?


I think that the answer to this is partly sociological. Is sql.el very
large? Is it being actively developed? If the answer is yes to either
of these the code stealing option would be much less attractive. 

Incidentally the mode sounds excellent! I'd like a really nice SQL
mode, with JDBC connectivity. 

Cheers

Phil

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Is is a major or minor mode?
  2002-10-31 12:29 ` Phillip Lord
@ 2002-10-31 17:22   ` Kevin Rodgers
  2002-11-01  3:26   ` Galen Boyer
  1 sibling, 0 replies; 7+ messages in thread
From: Kevin Rodgers @ 2002-10-31 17:22 UTC (permalink / raw)


Phillip Lord wrote:

>>>>>>"Galen" == Galen Boyer <galenboyer@hotpop.com> writes:
>>>>>>
> 
>   Galen> I want this to be available in both SQLi and sql-mode buffers
>   Galen> and piggyback on its comint integration.  I was planning to
>   Galen> write a wrapper around the login functionality of sql.el
>   Galen> which would then define the specific variables that the
>   Galen> sql-mode and sqli buffers needed to know about to get at the
>   Galen> *bsh* variables.  I'm just not sure if this is the right plan
>   Galen> to proceed with.  Should I make my own major-mode and steal
>   Galen> liberally from sql.el?
> 
> 
> I think that the answer to this is partly sociological. Is sql.el very
> large? Is it being actively developed? If the answer is yes to either
> of these the code stealing option would be much less attractive. 


But it would make define-derived-mode an attractive approach to implementing
it as a major mode.


-- 
<a href="mailto:&lt;kevinr&#64;ihs.com&gt;">Kevin Rodgers</a>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Is is a major or minor mode?
  2002-10-31 12:29 ` Phillip Lord
  2002-10-31 17:22   ` Kevin Rodgers
@ 2002-11-01  3:26   ` Galen Boyer
  2002-11-03 23:36     ` Tim Cross
  1 sibling, 1 reply; 7+ messages in thread
From: Galen Boyer @ 2002-11-01  3:26 UTC (permalink / raw)


On 31 Oct 2002, p.lord@russet.org.uk wrote:
> 
>>>>>> "Galen" == Galen Boyer <galenboyer@hotpop.com> writes:
> 
>   Galen> I want this to be available in both SQLi and sql-mode buffers
>   Galen> and piggyback on its comint integration.  I was planning to
>   Galen> write a wrapper around the login functionality of sql.el
>   Galen> which would then define the specific variables that the
>   Galen> sql-mode and sqli buffers needed to know about to get at the
>   Galen> *bsh* variables.  I'm just not sure if this is the right plan
>   Galen> to proceed with.  Should I make my own major-mode and steal
>   Galen> liberally from sql.el?
> 
> 
> I think that the answer to this is partly sociological. Is sql.el very
> large? 

No.

> Is it being actively developed? 

I don't think so.  It is part of the base Emacs distribution.  Its
actually quite simple/elegant in its design.  It gives one all the nice
shell functionality for a sql command-line.  Being able to hop between
sql prompts, this alone, is worth learning the mode.  I can't tell you
how many times I've kicked off a sql query that has returned > 1000
rows.  Then, I hit C-[space] C-c C-p C-x n n M-x occur blah.

> If the answer is yes to either of these the code stealing option would
> be much less attractive.
> 
> Incidentally the mode sounds excellent! I'd like a really nice SQL
> mode, with JDBC connectivity. 

Well, I didn't really want to provide a "SQL mode" nor do I really want
to rewrite the command-line interfaces provided by the database vendors
(although, the thought has crossed my mind, and I would bet with eshell,
something nifty about cd'n to a JDBC connection could be concocted and
then all sorts of Emacs magic could make the database experience that
much more enjoyable).  I wanted to provide a metadata layer that allowed
dynamic creation of SQL that was then displayed in a sql-mode or sqli
buffer.  In the sqli buffer, hit enter and it is executed.  In the
sql-mode, it helps you get at your finished code faster.

I do want it to try to be context sensitive.  So, if its in the middle
of a piece of SQL and I ask for a metadata listing, it would gleam
whether point is within the "select" section versus the "from" section
versus the "where" section and then be intelligent about what to bring
back.  But, the most important thing is for the buffer to know what
metadata object it is associated with, how to get at the passwords for
connection creation (maybe through the .authinfo file) and how to
refresh the cache when needed.  

I do think that this kind of thing could then serve up the appropriate
outputs to the speedbar so we could get database "browsing" but I would
need to do something useful with that which would be another years worth
of work (Man, this Emacs thing never ends).  Also, pop-up frames for
choosing different entities would be nice.  Definitely canned queries
should be there, especially analytic type queries: The following query,

    select fld1,fld2,...,fldn, count(*)
    from table
    group by fld1,fld2,...,fldn;

was, really, the entire reason I decided to do this in the first place.
I want this query, as well as others, to be available and prompt with
appropriate object names, for all sql buffers.

If you are a sql user, the following template and abbreviation might be
useful for you:

    (tempo-define-template
     "select-count-group-by" ;; template name
     '((p "Table Selected From: " tsf 'NOINSERT)
       (p "Fields To Group On: " fgo 'NOINSERT)
       "SELECT "
       (s fgo)
       ",count(*) " n>
       "from "
       (s tsf) n>
       " group by "
       (s fgo)
       ";"))

    (define-abbrev sql-mode-abbrev-table  "scg" ""
                'tempo-template-select-count-group-by)

With ejsql, this template will provide appropriate completing-reads from
the JDBC metadata layer.  Actually, my next task will be to make this
template work with the ejsql code.  The completing reads from ejsql have
been tested enough that I can say they work reasonably well, but I still
have lots more to discover with the DatabaseMetaData interface.

But, anyways.  My main focus will be to get the creation of the sql-mode
and sqli buffers to understand how to create their respective metadata
object and how to constantly refer to them.  Understanding how best to
make this happen and play nice with the already established sql.el was
why I posted.

-- 
Galen deForest Boyer
Sweet dreams and flying machines in pieces on the ground.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Is is a major or minor mode?
  2002-11-01  3:26   ` Galen Boyer
@ 2002-11-03 23:36     ` Tim Cross
  2002-11-04  4:17       ` Galen Boyer
  0 siblings, 1 reply; 7+ messages in thread
From: Tim Cross @ 2002-11-03 23:36 UTC (permalink / raw)


Galen Boyer <galenboyer@hotpop.com> writes:

> On 31 Oct 2002, p.lord@russet.org.uk wrote:
> >   Galen> I want this to be available in both SQLi and sql-mode buffers
> >   Galen> and piggyback on its comint integration.  I was planning to
> >   Galen> write a wrapper around the login functionality of sql.el
> >   Galen> which would then define the specific variables that the
> >   Galen> sql-mode and sqli buffers needed to know about to get at the
> >   Galen> *bsh* variables.  I'm just not sure if this is the right plan
> >   Galen> to proceed with.  Should I make my own major-mode and steal
> >   Galen> liberally from sql.el?
> > 
> > 
> > I think that the answer to this is partly sociological. Is sql.el very
> > large? 
> 
> No.
> 
> > Is it being actively developed? 
> 
> I don't think so.  It is part of the base Emacs distribution.  Its
> actually quite simple/elegant in its design.  It gives one all the nice
> shell functionality for a sql command-line.  Being able to hop between

I think the mode you are proposing sounds very useful. I would
recommend contacting Alex Schroeder, the author of sql.el. He is
maintaining the code and does release occasional updates. 

Alex is very approachable and almost always willing to help if he can
and has some experience authoring emacs packages. I htink his e-mail
is in the sources for sql.el. It would probably be worth talking with
him just to get his opinion and verify what the immediate plans for
sql.el are (if any). I would not be surprised if he wasn't willing to
provide some guideance or advice on what he felt would be the best
direction to take with your mode and he would probably be interested
in having a look at early drafts and possibly making suggestions etc. 

Tim

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Is is a major or minor mode?
  2002-11-03 23:36     ` Tim Cross
@ 2002-11-04  4:17       ` Galen Boyer
  2002-11-04 22:51         ` Tim Cross
  0 siblings, 1 reply; 7+ messages in thread
From: Galen Boyer @ 2002-11-04  4:17 UTC (permalink / raw)


On 04 Nov 2002, tcross@nospam.une.edu.au wrote:
> Galen Boyer <galenboyer@hotpop.com> writes:
>> > Is it being actively developed? 
>> 
>> I don't think so.  It is part of the base Emacs distribution.  Its
>> actually quite simple/elegant in its design.  It gives one all the
>> nice shell functionality for a sql command-line.  Being able to hop
>> between
> 
> I think the mode you are proposing sounds very useful. I would
> recommend contacting Alex Schroeder, the author of sql.el. He is
> maintaining the code and does release occasional updates. 

Alex is aware of what I'm trying to do, at least somewhat.  sql.el is
simple enough that I don't think I would have much of an issue just
stealing liberally, but I'd rather "hook" into already written Emacs
code.  I really like how he piggybacked on the comint mode.  It is very
simplistic (ie powerful) in its implementation.

I'm actually having alot of success with defadvice.  I'm just advising
the sql-interactive-mode and sql-mode on how to hook into my code and
the java metadata and connection objects are getting spawned.  I'm still
playing around in the new world of eieio though.  I'd like to subscribe
to this package as well, but I keep just going back to straight defuns.
eieio would probably pay off if this mode were to grow.

I'm not too far from getting this thing on sourceforge for an initial
submission.  But, keep my use of the term "too far" in perspective.  I
have two small children.  :-)

-- 
Galen deForest Boyer
Sweet dreams and flying machines in pieces on the ground.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Is is a major or minor mode?
  2002-11-04  4:17       ` Galen Boyer
@ 2002-11-04 22:51         ` Tim Cross
  0 siblings, 0 replies; 7+ messages in thread
From: Tim Cross @ 2002-11-04 22:51 UTC (permalink / raw)


Galen Boyer <galenboyer@hotpop.com> writes:

> I'm actually having alot of success with defadvice.  I'm just advising
> the sql-interactive-mode and sql-mode on how to hook into my code and
> the java metadata and connection objects are getting spawned.  I'm still
> playing around in the new world of eieio though.  I'd like to subscribe
> to this package as well, but I keep just going back to straight defuns.
> eieio would probably pay off if this mode were to grow.
> 
I think advising functions is possibly my favorite emacs power
tool. If you ever feel like seeing some of the clever things you can
do with it, check out the emacspeak package. The initial reason I
moved to emacs was the result of losing my sight five years ago. I
wanted a powerful and effective text-to-speech system for working on a
linux box. The emacspeak package makes extensive use of defadvice to
provide very powerful and friendly text-to-speech interface. Unlike
other text-to-speech systems, because of the power of emacs, emacspeak
provides audible highlighting - similar to font-lock, you get
voice-lock, where different syntactic elements are spoken in different
voices. All of this speech support is achieved without the need to
modify any emacs source code/libraries etc. Instead, you just have the
emacspeak sources which are essentially collections of advised
functions with some additional housekeeping and interface code for
various text-to-speech systems.

Another package which might be worth checking out, but which I have
not tried out yet is the PL/SQL mode, which I believe just extends
sql.el - don't know how it does this, but it might be worth looking at
for some ideas of how you could extend/hook into sql.el.

Tim

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2002-11-04 22:51 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-10-31  2:19 Is is a major or minor mode? Galen Boyer
2002-10-31 12:29 ` Phillip Lord
2002-10-31 17:22   ` Kevin Rodgers
2002-11-01  3:26   ` Galen Boyer
2002-11-03 23:36     ` Tim Cross
2002-11-04  4:17       ` Galen Boyer
2002-11-04 22:51         ` Tim Cross

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.