all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Activate an input-method from file-local variables?
@ 2006-07-15 14:38 Stefan Monnier
  2006-07-15 14:47 ` Aidan Kehoe
  0 siblings, 1 reply; 16+ messages in thread
From: Stefan Monnier @ 2006-07-15 14:38 UTC (permalink / raw)



Many of the files I edit use funny unicode math chars which I enter with the
help of the "TeX" input method.  How can I make it such that those files
have the TeX input method activated as soon as I open them?

Currently I add an `eval: (activate-input-method "TeX")' to the
local-variables and then arrange for it not to trigger a prompt, but it
seems like there should be a more "official" way to do it.


        Stefan

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

* Re: Activate an input-method from file-local variables?
  2006-07-15 14:38 Activate an input-method from file-local variables? Stefan Monnier
@ 2006-07-15 14:47 ` Aidan Kehoe
  2006-07-15 14:55   ` David Kastrup
  2006-07-15 21:57   ` Stefan Monnier
  0 siblings, 2 replies; 16+ messages in thread
From: Aidan Kehoe @ 2006-07-15 14:47 UTC (permalink / raw)
  Cc: emacs-devel


 Ar an cúigiú lá déag de mí Iúil, scríobh Stefan Monnier: 

 > Many of the files I edit use funny unicode math chars which I enter with the
 > help of the "TeX" input method. 

 > How can I make it such that those files
 > have the TeX input method activated as soon as I open them?
 > 
 > Currently I add an `eval: (activate-input-method "TeX")' to the
 > local-variables and then arrange for it not to trigger a prompt, but it
 > seems like there should be a more "official" way to do it.

I do a 

  (make-variable-buffer-local 'default-input-method)

in my init file and then add

  default-input-method: "TeX"

to the local-variables of the relevant files. (I also give sensible default
values for default-input-method and input-method-history (also made
buffer-local) in my init file.) 

-- 
Santa Maradona, priez pour moi!

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

* Re: Activate an input-method from file-local variables?
  2006-07-15 14:47 ` Aidan Kehoe
@ 2006-07-15 14:55   ` David Kastrup
  2006-07-15 16:55     ` Aidan Kehoe
  2006-07-15 21:57   ` Stefan Monnier
  1 sibling, 1 reply; 16+ messages in thread
From: David Kastrup @ 2006-07-15 14:55 UTC (permalink / raw)
  Cc: Stefan Monnier, emacs-devel

Aidan Kehoe <kehoea@parhasard.net> writes:

> I do a 
>
>   (make-variable-buffer-local 'default-input-method)
>
> in my init file

Why?

> and then add
>
>   default-input-method: "TeX"
>
> to the local-variables of the relevant files.

Guess why they are named "local variables" ...

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

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

* Re: Activate an input-method from file-local variables?
  2006-07-15 14:55   ` David Kastrup
@ 2006-07-15 16:55     ` Aidan Kehoe
  2006-07-16  6:25       ` Richard Stallman
  0 siblings, 1 reply; 16+ messages in thread
From: Aidan Kehoe @ 2006-07-15 16:55 UTC (permalink / raw)
  Cc: Stefan Monnier, emacs-devel


 Ar an cúigiú lá déag de mí Iúil, scríobh David Kastrup: 

 > > I do a 
 > >
 > >   (make-variable-buffer-local 'default-input-method)
 > >
 > > in my init file
 > 
 > Why?
 > 
 > > and then add
 > >
 > >   default-input-method: "TeX"
 > >
 > > to the local-variables of the relevant files.
 > 
 > Guess why they are named "local variables" ...

I guessed because they were a change to the global variable that was done
locally from the file in question--I ommited to read the three lines in the
XEmacs lispref that mention the connection to buffer-local variables, and am
having trouble finding something that mentions it explicitly in the GNU
Emacs Lisp reference manual. (And since “coding” is treated specially
anyway--no variable of that name normally exists--its buffer-local treatment
says nothing about file local variables as a whole.) Ah, here we are; three
throwaway sentences in “Local Variables in Files,” no mention whatsoever in
“Creating and Deleting Buffer-Local Bindings.”

Thank you for the pointer--it’s nice to learn something new. 

-- 
Santa Maradona, priez pour moi!

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

* Re: Activate an input-method from file-local variables?
  2006-07-15 14:47 ` Aidan Kehoe
  2006-07-15 14:55   ` David Kastrup
@ 2006-07-15 21:57   ` Stefan Monnier
  2006-07-16 11:36     ` Aidan Kehoe
  1 sibling, 1 reply; 16+ messages in thread
From: Stefan Monnier @ 2006-07-15 21:57 UTC (permalink / raw)
  Cc: emacs-devel

> in my init file and then add

>   default-input-method: "TeX"

> to the local-variables of the relevant files. (I also give sensible default

AFAICT this does not do what I want: it doesn't *activate* the
input method.  You still need to hit C-\ to activate it.


        Stefan

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

* Re: Activate an input-method from file-local variables?
  2006-07-15 16:55     ` Aidan Kehoe
@ 2006-07-16  6:25       ` Richard Stallman
  2006-07-16 11:59         ` Aidan Kehoe
  0 siblings, 1 reply; 16+ messages in thread
From: Richard Stallman @ 2006-07-16  6:25 UTC (permalink / raw)
  Cc: monnier, emacs-devel

    XEmacs lispref that mention the connection to buffer-local variables, and am

We try to improve GNU Emacs documentation, but we cannot be
responsible for deficiencies of forked versions such as GNU XEmacs.

    having trouble finding something that mentions it explicitly in the GNU
    Emacs Lisp reference manual. (And since ?coding? is treated specially

File local variables are a user feature, not a Lisp programming
feature, so they are documented in the Emacs Manual.

    Ah, here we are; three
    throwaway sentences in Local Variables in Files,

I see you found the section in the Emacs Manual which documents them.
(There is an xref to it in the Lisp Manual.)

Why do you call that text "throwaway"?  It is right at the start of
the section, and states the point explicitly.  It says everything
there is to say about the question.

    no mention whatsoever in
    Creating and Deleting Buffer-Local Bindings.

(When you mention a section title, would you please say which
manual you're talking about?  That would help me find it
so I can think about your point.)

That section describes Lisp facilities for creating and deleting
buffer-local bindings.  File local variable lists don't belong there.

Anyway, it seems that I can make the xref in the Lisp Manual clearer,
and restate this basic point.  What do you think of this new text?

      A file can specify local variable values; Emacs uses these to create
    buffer-local bindings for those variables in the buffer visiting that
    file.  @xref{File variables, , Local Variables in Files, emacs, The
    GNU Emacs Manual}, for basic information about file local variables.
    This section describes the functions and variables that affect
    processing of file local variables.

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

* Re: Activate an input-method from file-local variables?
  2006-07-15 21:57   ` Stefan Monnier
@ 2006-07-16 11:36     ` Aidan Kehoe
  2006-07-16 12:32       ` Stefan Monnier
  0 siblings, 1 reply; 16+ messages in thread
From: Aidan Kehoe @ 2006-07-16 11:36 UTC (permalink / raw)
  Cc: emacs-devel


 Ar an cúigiú lá déag de mí Iúil, scríobh Stefan Monnier: 

 > AFAICT this does not do what I want: it doesn't *activate* the
 > input method.  You still need to hit C-\ to activate it.

Ah, excuse my misunderstanding. Looking through the source of
activate-input-method, as well as setting current-input-method, it calls
input-method-specific initialisation code, so simply setting a file-local
variable would seem to be impossible. You could, of course, add something
like the below to your init file, and specify hack-activate-input-method
appropriately in the files you want it to work for. 

(defun hack-activating-input-method ()
  "If `hack-activate-input-method' is bound, activate it as an input method.
See the function documentation `activate-input-method' for details on
activating input methods. "
  (when (boundp 'hack-activate-input-method)
    (activate-input-method hack-activate-input-method)))

(add-hook 'find-file-hooks 'hack-activating-input-method)

-- 
Santa Maradona, priez pour moi!

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

* Re: Activate an input-method from file-local variables?
  2006-07-16  6:25       ` Richard Stallman
@ 2006-07-16 11:59         ` Aidan Kehoe
  2006-07-17  1:41           ` Richard Stallman
  0 siblings, 1 reply; 16+ messages in thread
From: Aidan Kehoe @ 2006-07-16 11:59 UTC (permalink / raw)
  Cc: emacs-devel


 Ar an séú lá déag de mí Iúil, scríobh Richard Stallman: 

 >     XEmacs lispref that mention the connection to buffer-local variables,
 >     and am
 > 
 > We try to improve GNU Emacs documentation, but we cannot be
 > responsible for deficiencies of forked versions such as GNU XEmacs.

I didn’t suggest that you were; I mentioned the XEmacs documentation because
it was relevant to answering David’s question. 

 >     having trouble finding something that mentions it explicitly in the GNU
 >     Emacs Lisp reference manual. (And since ?coding? is treated specially
 > 
 > File local variables are a user feature, not a Lisp programming
 > feature,

They are both. You need an awareness of programming Lisp to use them,
something not true for most things detailed in the Emacs Manual.

 > so they are documented in the Emacs Manual.
 > 
 >     Ah, here we are; three
 >     throwaway sentences in Local Variables in Files,
 > 
 > I see you found the section in the Emacs Manual which documents them.
 > (There is an xref to it in the Lisp Manual.)
 > 
 > Why do you call that text "throwaway"?  It is right at the start of
 > the section, and states the point explicitly.  It says everything
 > there is to say about the question.

It doesn’t call them buffer-local variables. In GNU Emacs, variables can be
local to a let binding or lambda, local to a buffer, or local to a frame. I
read the first sentence ‘A file can specify local variable values for use
when you edit the file with Emacs.’ as just one more semantic extension of
the word ‘local’; the phrase ‘it automatically makes those variables local
to the buffer’ and a couple of phrases more in that section are what says
that the variables are buffer-local.

I call those three phrases ‘throwaway’ because they don’t arise at the start
of any section, they are mentioned in passing rather than emphasised.

 >     no mention whatsoever in
 >     Creating and Deleting Buffer-Local Bindings.
 > 
 > (When you mention a section title, would you please say which
 > manual you're talking about?  That would help me find it
 > so I can think about your point.)
 > 
 > That section describes Lisp facilities for creating and deleting
 > buffer-local bindings.  File local variable lists don't belong there.

File local variable lists create buffer-local bindings! That’s what David
just explained to me. 

 > Anyway, it seems that I can make the xref in the Lisp Manual clearer,
 > and restate this basic point.  What do you think of this new text?
 > 
 >       A file can specify local variable values; Emacs uses these to create
 >     buffer-local bindings for those variables in the buffer visiting that
 >     file.  @xref{File variables, , Local Variables in Files, emacs, The
 >     GNU Emacs Manual}, for basic information about file local variables.
 >     This section describes the functions and variables that affect
 >     processing of file local variables.

I find it much clearer; thank you for your thought on this. 

-- 
Santa Maradona, priez pour moi!

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

* Re: Activate an input-method from file-local variables?
  2006-07-16 11:36     ` Aidan Kehoe
@ 2006-07-16 12:32       ` Stefan Monnier
  2006-07-18  1:25         ` Kenichi Handa
  0 siblings, 1 reply; 16+ messages in thread
From: Stefan Monnier @ 2006-07-16 12:32 UTC (permalink / raw)
  Cc: emacs-devel

>> AFAICT this does not do what I want: it doesn't *activate* the
>> input method.  You still need to hit C-\ to activate it.

> Ah, excuse my misunderstanding. Looking through the source of
> activate-input-method, as well as setting current-input-method, it calls
> input-method-specific initialisation code, so simply setting a file-local
> variable would seem to be impossible. You could, of course, add something
> like the below to your init file, and specify hack-activate-input-method
> appropriately in the files you want it to work for. 

That seems much more complex than my current solution of using
`eval: (activate-input-method "TeX")' and adding
(put 'activate-input-method 'safe-local-eval-function t).


        Stefan

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

* Re: Activate an input-method from file-local variables?
  2006-07-16 11:59         ` Aidan Kehoe
@ 2006-07-17  1:41           ` Richard Stallman
  2006-07-17  7:29             ` Aidan Kehoe
  0 siblings, 1 reply; 16+ messages in thread
From: Richard Stallman @ 2006-07-17  1:41 UTC (permalink / raw)
  Cc: emacs-devel

     > File local variables are a user feature, not a Lisp programming
     > feature,

    They are both. You need an awareness of programming Lisp to use them,
    something not true for most things detailed in the Emacs Manual.

On the contrary, users can make file-local variable bindings for most
of the variables described in the Emacs Manual without knowing how to
program.  They only need to know Lisp syntax for the values they use.

    I call those three phrases ?throwaway? because they don?t arise at the start
    of any section, they are mentioned in passing rather than emphasised.

It looks like the start of the section to me:

    @node File Variables
    @subsection Local Variables in Files
    @cindex local variables in files
    @cindex file local variables

      A file can specify local variable values for use when you edit the
    file with Emacs.  Visiting the file checks for local variable
    specifications; it automatically makes these variables local to the
    buffer, and sets them to the values specified in the file.


     > That section describes Lisp facilities for creating and deleting
     > buffer-local bindings.  File local variable lists don't belong there.

    File local variable lists create buffer-local bindings! That?s what David
    just explained to me. 

The description of buffer-local bindings includes that section and
several others.  That section is about Lisp facilities for creating
such bindings.  Other aspects of buffer-local bindings are described
in the neighboring sections.

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

* Re: Activate an input-method from file-local variables?
  2006-07-17  1:41           ` Richard Stallman
@ 2006-07-17  7:29             ` Aidan Kehoe
  2006-07-18  0:12               ` Richard Stallman
  0 siblings, 1 reply; 16+ messages in thread
From: Aidan Kehoe @ 2006-07-17  7:29 UTC (permalink / raw)
  Cc: emacs-devel


 Ar an séú lá déag de mí Iúil, scríobh Richard Stallman: 

 >      > File local variables are a user feature, not a Lisp programming
 >      > feature,
 > 
 >     They are both. You need an awareness of programming Lisp to use them,
 >     something not true for most things detailed in the Emacs Manual.
 > 
 > On the contrary, users can make file-local variable bindings for most of
 > the variables described in the Emacs Manual without knowing how to
 > program. They only need to know Lisp syntax for the values they use.

That is, they need to have an awareness of programming Lisp.

 >     I call those three phrases “throwaway” because they don’t arise at
 >     the start of any section, they are mentioned in passing rather than
 >     emphasised.
 > 
 > It looks like the start of the section to me:

As I wrote, calling them “local variables” does not say to me that they are
buffer-local, because there exist at least three distinct types of local
variables in the editor--four if you conceive of lexical-let as different
from let. 

It’s only the phrase “it automatically makes these variables local to the
buffer” (and two more like it, later in the same section) that makes the
buffer-local aspect evident. 

-- 
Santa Maradona, priez pour moi!

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

* Re: Activate an input-method from file-local variables?
  2006-07-17  7:29             ` Aidan Kehoe
@ 2006-07-18  0:12               ` Richard Stallman
  0 siblings, 0 replies; 16+ messages in thread
From: Richard Stallman @ 2006-07-18  0:12 UTC (permalink / raw)
  Cc: emacs-devel

     > On the contrary, users can make file-local variable bindings for most of
     > the variables described in the Emacs Manual without knowing how to
     > program. They only need to know Lisp syntax for the values they use.

    That is, they need to have an awareness of programming Lisp.

That statement is misleading because it would imply a level of
knowledge far beyond what these people really need to know.  All they
need to know is how to write the values they want to use.

    As I wrote, calling them ?local variables? does not say to me that they are
    buffer-local, because there exist at least three distinct types of local
    variables in the editor--four if you conceive of lexical-let as different
    from let. 

That is a valid point.  However,

    It?s only the phrase ?it automatically makes these variables local to the
    buffer? (and two more like it, later in the same section) that makes the
    buffer-local aspect evident. 

since that phrase is just two lines later, I think the point is clear
enough now.

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

* Re: Activate an input-method from file-local variables?
  2006-07-16 12:32       ` Stefan Monnier
@ 2006-07-18  1:25         ` Kenichi Handa
  2006-07-18 14:44           ` Stefan Monnier
  2006-07-18 14:59           ` Richard Stallman
  0 siblings, 2 replies; 16+ messages in thread
From: Kenichi Handa @ 2006-07-18  1:25 UTC (permalink / raw)
  Cc: kehoea, emacs-devel

In article <jwvmzb9pw8q.fsf-monnier+emacs@gnu.org>, Stefan Monnier <monnier@iro.umontreal.ca> writes:

>>> AFAICT this does not do what I want: it doesn't *activate* the
>>> input method.  You still need to hit C-\ to activate it.

>> Ah, excuse my misunderstanding. Looking through the source of
>> activate-input-method, as well as setting current-input-method, it calls
>> input-method-specific initialisation code, so simply setting a file-local
>> variable would seem to be impossible. You could, of course, add something
>> like the below to your init file, and specify hack-activate-input-method
>> appropriately in the files you want it to work for. 

> That seems much more complex than my current solution of using
> `eval: (activate-input-method "TeX")' and adding
> (put 'activate-input-method 'safe-local-eval-function t).

Provided that a local variable specified in a file is
customizable, does :set function of it called?

If so, I think the most natural solution is to change
  (defvar current-input-method ...)
to
  (defcustom current-input-method ...)
and provide a proper :set function (perhaps one that calls
activate-input-method).  Then a user can have this in his
file:
  
;; Local Variables:
;; current-input-method: "INPUT_METHOD_NAME"
;; End:

---
Kenichi Handa
handa@m17n.org

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

* Re: Activate an input-method from file-local variables?
  2006-07-18  1:25         ` Kenichi Handa
@ 2006-07-18 14:44           ` Stefan Monnier
  2006-07-19  0:45             ` Kenichi Handa
  2006-07-18 14:59           ` Richard Stallman
  1 sibling, 1 reply; 16+ messages in thread
From: Stefan Monnier @ 2006-07-18 14:44 UTC (permalink / raw)
  Cc: kehoea, emacs-devel

>> That seems much more complex than my current solution of using
>> `eval: (activate-input-method "TeX")' and adding
>> (put 'activate-input-method 'safe-local-eval-function t).

> Provided that a local variable specified in a file is
> customizable, does :set function of it called?

Currently no: it just uses `set'.  Using the custom setter might be an
option, but we should be careful with it: Custom's support for buffer-local
settings is mostly untested (And hence not overly reliable).


        Stefan

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

* Re: Activate an input-method from file-local variables?
  2006-07-18  1:25         ` Kenichi Handa
  2006-07-18 14:44           ` Stefan Monnier
@ 2006-07-18 14:59           ` Richard Stallman
  1 sibling, 0 replies; 16+ messages in thread
From: Richard Stallman @ 2006-07-18 14:59 UTC (permalink / raw)
  Cc: kehoea, monnier, emacs-devel

    Provided that a local variable specified in a file is
    customizable, does :set function of it called?

No.  In principle, that might be an interesting feature.  But it is
not straightforward (:set functions set the default value, not the
current value which might be a local binding).  Also, it is somewhat
worrisome in its implications.

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

* Re: Activate an input-method from file-local variables?
  2006-07-18 14:44           ` Stefan Monnier
@ 2006-07-19  0:45             ` Kenichi Handa
  0 siblings, 0 replies; 16+ messages in thread
From: Kenichi Handa @ 2006-07-19  0:45 UTC (permalink / raw)
  Cc: kehoea, emacs-devel

In article <jwv7j2b9dpw.fsf-monnier+emacs@gnu.org>, Stefan Monnier <monnier@iro.umontreal.ca> writes:

>>> That seems much more complex than my current solution of using
>>> `eval: (activate-input-method "TeX")' and adding
>>> (put 'activate-input-method 'safe-local-eval-function t).

>> Provided that a local variable specified in a file is
>> customizable, does :set function of it called?

> Currently no: it just uses `set'.  Using the custom setter might be an
> option, but we should be careful with it: Custom's support for buffer-local
> settings is mostly untested (And hence not overly reliable).

Ummm, then, we must wait for that getting reliable, or
implement a code that checks the value of
current-input-method and, if necessary, calls a proper
activating function in read_char or somewhere.

Those should be after the release.

---
Kenichi Handa
handa@m17n.org

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

end of thread, other threads:[~2006-07-19  0:45 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-15 14:38 Activate an input-method from file-local variables? Stefan Monnier
2006-07-15 14:47 ` Aidan Kehoe
2006-07-15 14:55   ` David Kastrup
2006-07-15 16:55     ` Aidan Kehoe
2006-07-16  6:25       ` Richard Stallman
2006-07-16 11:59         ` Aidan Kehoe
2006-07-17  1:41           ` Richard Stallman
2006-07-17  7:29             ` Aidan Kehoe
2006-07-18  0:12               ` Richard Stallman
2006-07-15 21:57   ` Stefan Monnier
2006-07-16 11:36     ` Aidan Kehoe
2006-07-16 12:32       ` Stefan Monnier
2006-07-18  1:25         ` Kenichi Handa
2006-07-18 14:44           ` Stefan Monnier
2006-07-19  0:45             ` Kenichi Handa
2006-07-18 14:59           ` Richard Stallman

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.