Re: [Orgmode] question about org-region-active-p
Carsten Dominik wrote: > Dear Robert, > > also region-active-p requires transient-mark-mode to be active, if you look > at the definition of the region-active-p function, you will see that. > > transient-mark-mode is on by default in Emacs. Why did you turn it > *off* in the > first place? I suspect that this is an aquamacs oddity. Aquamacs (I believe) turns on cua-mode by default and at least in the past, cua-mode was incompatible with transient-mark-mode, and there was even an order dependency (you had to turn cua-mode off before turning transient-mark-mode on). There's a fair amount of discussion about this that one can find by googling. I believe that this has changed, however, since looking at a modern copy of cua-mode.el doesn't seem to reveal any disabling of t-m-m. I'll be honest with you --- I don't even know HOW I turned t-m-m off, much less why! When I explicitly turn it ON in .emacs, all is well. When I run aquamacs without my init files, it's on. But nothing directly in my .emacs turns it off, nor do I have any customizations. This suggests that some library I'm using, somewhere, interferes with it, but as yet I have not found it. Best, r > > - Carsten > > On Dec 17, 2008, at 3:12 PM, Robert Goldman wrote: > >> Carsten Dominik wrote: >>> Hi Robert, >>> >>> no, I do not think this would make sense, to step out with >>> an error, because all the commands that need a region will >>> also work without one. This is how regions work in Emacs. >>> >>> If you find places in the documentation where this could >>> be made clearer, let me know. >> >> Thank you Carsten for the response. I am still inclined to think that >> this case is one where the user should get some warning because it's in >> that bad class of bug-like situations where code quietly does something >> that the user does not expect and that contradicts the documentation. >> >> On the other hand, I can't see where one would raise an error. It's not >> an error to call org-region-active-p without transient-mark-mode; indeed >> some libraries turn this on and off, and the user is entitled not to >> use it. >> >> The call to export isn't right, because the export command does not give >> the system any opportunity to infer whether the user intended to operate >> on a region or on the whole. So there's no way to tell that the user's >> expectations are going to be violated. >> >> The loading of org-mode isn't the right place, either, since the vast >> majority of org-mode works just fine with t-m-m turned off. >> >> I'm inclined to think that the answer is simply that one shouldn't turn >> transient-mark-mode off, ever. This works for me, but I hate to think >> of the next person coming along to fall into this same trap, from which >> the only means of escape is to inspect the source code and use the >> debugger. >> >> I would suggest a modification to the manual and will submit one, but >> need clarification about one issue: the use of t-m-m seems to be a >> fallback for older emacsen that don't have region-active-p. I have such >> an emacs, so I don't know --- does this mean that on newer emacsen >> org-region-active-p will work even without transient-mark-mode? >> >> Best, >> Robert > ___ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] question about org-region-active-p
Dear Robert, also region-active-p requires transient-mark-mode to be active, if you look at the definition of the region-active-p function, you will see that. transient-mark-mode is on by default in Emacs. Why did you turn it *off* in the first place? - Carsten On Dec 17, 2008, at 3:12 PM, Robert Goldman wrote: Carsten Dominik wrote: Hi Robert, no, I do not think this would make sense, to step out with an error, because all the commands that need a region will also work without one. This is how regions work in Emacs. If you find places in the documentation where this could be made clearer, let me know. Thank you Carsten for the response. I am still inclined to think that this case is one where the user should get some warning because it's in that bad class of bug-like situations where code quietly does something that the user does not expect and that contradicts the documentation. On the other hand, I can't see where one would raise an error. It's not an error to call org-region-active-p without transient-mark-mode; indeed some libraries turn this on and off, and the user is entitled not to use it. The call to export isn't right, because the export command does not give the system any opportunity to infer whether the user intended to operate on a region or on the whole. So there's no way to tell that the user's expectations are going to be violated. The loading of org-mode isn't the right place, either, since the vast majority of org-mode works just fine with t-m-m turned off. I'm inclined to think that the answer is simply that one shouldn't turn transient-mark-mode off, ever. This works for me, but I hate to think of the next person coming along to fall into this same trap, from which the only means of escape is to inspect the source code and use the debugger. I would suggest a modification to the manual and will submit one, but need clarification about one issue: the use of t-m-m seems to be a fallback for older emacsen that don't have region-active-p. I have such an emacs, so I don't know --- does this mean that on newer emacsen org-region-active-p will work even without transient-mark-mode? Best, Robert ___ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] question about org-region-active-p
Carsten Dominik wrote: > Hi Robert, > > no, I do not think this would make sense, to step out with > an error, because all the commands that need a region will > also work without one. This is how regions work in Emacs. > > If you find places in the documentation where this could > be made clearer, let me know. Thank you Carsten for the response. I am still inclined to think that this case is one where the user should get some warning because it's in that bad class of bug-like situations where code quietly does something that the user does not expect and that contradicts the documentation. On the other hand, I can't see where one would raise an error. It's not an error to call org-region-active-p without transient-mark-mode; indeed some libraries turn this on and off, and the user is entitled not to use it. The call to export isn't right, because the export command does not give the system any opportunity to infer whether the user intended to operate on a region or on the whole. So there's no way to tell that the user's expectations are going to be violated. The loading of org-mode isn't the right place, either, since the vast majority of org-mode works just fine with t-m-m turned off. I'm inclined to think that the answer is simply that one shouldn't turn transient-mark-mode off, ever. This works for me, but I hate to think of the next person coming along to fall into this same trap, from which the only means of escape is to inspect the source code and use the debugger. I would suggest a modification to the manual and will submit one, but need clarification about one issue: the use of t-m-m seems to be a fallback for older emacsen that don't have region-active-p. I have such an emacs, so I don't know --- does this mean that on newer emacsen org-region-active-p will work even without transient-mark-mode? Best, Robert ___ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] question about org-region-active-p
Hi Robert, no, I do not think this would make sense, to step out with an error, because all the commands that need a region will also work without one. This is how regions work in Emacs. If you find places in the documentation where this could be made clearer, let me know. Thanks. - Carsten On Dec 16, 2008, at 4:43 PM, Robert Goldman wrote: Carsten Dominik wrote: Hi Robert, Samuel has it right, let me add this: In Emacs, you do never remove the mark from the buffer, it is always there, wherever you or some command last left it. The only way to tell if the user intends to apply a command to a region is therefore the state of a flag that says if the mark is "active". Setting the mark activates the mark, most commands besides cursor motion and search deactivate it. The state flag does only exist if transient-mark-mode is active. Thank you both for the clarification. Here's a question: would it be worth adding a message to warn a user when org-region-active-p is called and transient-mark-mode is off? So should we have something like (and (or transient-mark-mode (error "Transient mark mode must be active for this command to work.") mark-active) Error is likely not the right thing here, but on the other hand it seems to me that the user should somehow know that the current command will not work as expected, because an expectation of the org-mode code has been violated. As I said, I discovered this because I was trying to publish a subtree of an org file as HTML, and instead of publishing the subtree, I got the whole file, and the output went to an unexpected location (because my export file setting, attached to the heading, was ignored). So the above is a case where the software quietly does something radically different from what I expected (and what was documented) because an expectation (really a code precondition) was violated. That seems to me to be an exception condition that should be brought to the user's attention. A complicating issue is that the system should just go ahead and publish the whole file if there is no region selected, but there doesn't seem to me to be any way for the system to tell that the user intended to publish only a region if transient-mark-mode is off. Maybe the user should just be told not to use org-mode without t-m-m? Even this seems too extreme, because the user might never intend to publish anything Or the user might never intend to publish anything except a whole file, in which case who cares if tmm is off? A very knotty issue Best, r - Carsten On Dec 16, 2008, at 2:51 AM, Robert Goldman wrote: The definition of org-region-active-p in my copy of org-mode is as follows: (defun org-region-active-p () "Is `transient-mark-mode' on and the region active? Works on both Emacs and XEmacs." (if org-ignore-region nil (if (featurep 'xemacs) (and zmacs-regions (region-active-p)) (if (fboundp 'use-region-p) (use-region-p) (and transient-mark-mode mark-active) What seems odd to me is that this command will only work on an emacs 22 (like my Aquamacs) if transient-mark-mode is enabled. Is that correct, and is that what's desired? [I found this because I tried to publish a subtree of an org file, and I found that org-region-active-p was NIL even after C-c @ (outline-mark-subtree).] This may be an oddity of aquamacs -- it seems to prefer cua-mode and turn off transient-mark-mode by default. I confess to not really understanding that decision or its implications. thanks, r ___ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode ___ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] question about org-region-active-p
Hi Robert On Mon, Dec 15, 2008 at 7:51 PM, Robert Goldman wrote: > [I found this because I tried to publish a subtree of an org file, and I > found that org-region-active-p was NIL even after C-c @ > (outline-mark-subtree).] > > This may be an oddity of aquamacs -- it seems to prefer cua-mode and > turn off transient-mark-mode by default. I confess to not really > understanding that decision or its implications. I use Aquamacs with org-mode every day, and I have never run into this problem. I just checked by turning off my customizations and transient-mark-mode is indeed on by default. After doing "C-c @" in an org file, then "M-: (org-region-active-p)" gives "t", as expected. Maybe it is a problem with your customizations. You can check by running "M-x start-vanilla-aquamacs". I am running Aquamacs 1.5, org-mode 6.12b Cheers Will -- Dr William Henney, Centro de Radioastronomía y Astrofísica, Universidad Nacional Autónoma de México, Campus Morelia ___ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] question about org-region-active-p
Carsten Dominik wrote: > Hi Robert, > > Samuel has it right, let me add this: > > In Emacs, you do never remove the mark from the buffer, it is always > there, wherever you or some command last left it. The only way to tell > if the user intends to apply a command to a region is therefore the > state of a flag that says if the mark is "active". Setting the mark > activates the mark, most commands besides cursor motion and search > deactivate it. > The state flag does only exist if transient-mark-mode is active. Thank you both for the clarification. Here's a question: would it be worth adding a message to warn a user when org-region-active-p is called and transient-mark-mode is off? So should we have something like (and (or transient-mark-mode (error "Transient mark mode must be active for this command to work.") mark-active) Error is likely not the right thing here, but on the other hand it seems to me that the user should somehow know that the current command will not work as expected, because an expectation of the org-mode code has been violated. As I said, I discovered this because I was trying to publish a subtree of an org file as HTML, and instead of publishing the subtree, I got the whole file, and the output went to an unexpected location (because my export file setting, attached to the heading, was ignored). So the above is a case where the software quietly does something radically different from what I expected (and what was documented) because an expectation (really a code precondition) was violated. That seems to me to be an exception condition that should be brought to the user's attention. A complicating issue is that the system should just go ahead and publish the whole file if there is no region selected, but there doesn't seem to me to be any way for the system to tell that the user intended to publish only a region if transient-mark-mode is off. Maybe the user should just be told not to use org-mode without t-m-m? Even this seems too extreme, because the user might never intend to publish anything Or the user might never intend to publish anything except a whole file, in which case who cares if tmm is off? A very knotty issue Best, r > > - Carsten > > On Dec 16, 2008, at 2:51 AM, Robert Goldman wrote: > >> The definition of org-region-active-p in my copy of org-mode is as >> follows: >> >> >> (defun org-region-active-p () >> "Is `transient-mark-mode' on and the region active? >> Works on both Emacs and XEmacs." >> (if org-ignore-region >> nil >>(if (featurep 'xemacs) >> (and zmacs-regions (region-active-p)) >> (if (fboundp 'use-region-p) >> (use-region-p) >> (and transient-mark-mode mark-active) >> >> What seems odd to me is that this command will only work on an emacs 22 >> (like my Aquamacs) if transient-mark-mode is enabled. Is that correct, >> and is that what's desired? >> >> [I found this because I tried to publish a subtree of an org file, and I >> found that org-region-active-p was NIL even after C-c @ >> (outline-mark-subtree).] >> >> This may be an oddity of aquamacs -- it seems to prefer cua-mode and >> turn off transient-mark-mode by default. I confess to not really >> understanding that decision or its implications. >> >> thanks, >> r >> >> >> ___ >> Emacs-orgmode mailing list >> Remember: use `Reply All' to send replies to the list. >> Emacs-orgmode@gnu.org >> http://lists.gnu.org/mailman/listinfo/emacs-orgmode > ___ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] question about org-region-active-p
Hi Robert, Samuel has it right, let me add this: In Emacs, you do never remove the mark from the buffer, it is always there, wherever you or some command last left it. The only way to tell if the user intends to apply a command to a region is therefore the state of a flag that says if the mark is "active". Setting the mark activates the mark, most commands besides cursor motion and search deactivate it. The state flag does only exist if transient-mark-mode is active. - Carsten On Dec 16, 2008, at 2:51 AM, Robert Goldman wrote: The definition of org-region-active-p in my copy of org-mode is as follows: (defun org-region-active-p () "Is `transient-mark-mode' on and the region active? Works on both Emacs and XEmacs." (if org-ignore-region nil (if (featurep 'xemacs) (and zmacs-regions (region-active-p)) (if (fboundp 'use-region-p) (use-region-p) (and transient-mark-mode mark-active) What seems odd to me is that this command will only work on an emacs 22 (like my Aquamacs) if transient-mark-mode is enabled. Is that correct, and is that what's desired? [I found this because I tried to publish a subtree of an org file, and I found that org-region-active-p was NIL even after C-c @ (outline-mark-subtree).] This may be an oddity of aquamacs -- it seems to prefer cua-mode and turn off transient-mark-mode by default. I confess to not really understanding that decision or its implications. thanks, r ___ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode ___ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] question about org-region-active-p
My limited understanding is this: Without the concept of activeness, you can't tell whether to operate on a single thing or a region. Old workarounds were to have -region commands, which polluted the key space; or C-u, which polluted the prefix space. t-m-m came along and solved it. Region versions of many emacs commands won't be available if you don't turn it on. Carbon emacs, and probably the default emacs, have t-m-m on by default. -- Myalgic encephalomyelitis denialists are knowingly causing further suffering and death by opposing biomedical research on this serious infectious disease. Do you care about the world? http://www.meactionuk.org.uk/What_Is_ME_What_Is_CFS.htm ___ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[Orgmode] question about org-region-active-p
The definition of org-region-active-p in my copy of org-mode is as follows: (defun org-region-active-p () "Is `transient-mark-mode' on and the region active? Works on both Emacs and XEmacs." (if org-ignore-region nil (if (featurep 'xemacs) (and zmacs-regions (region-active-p)) (if (fboundp 'use-region-p) (use-region-p) (and transient-mark-mode mark-active) What seems odd to me is that this command will only work on an emacs 22 (like my Aquamacs) if transient-mark-mode is enabled. Is that correct, and is that what's desired? [I found this because I tried to publish a subtree of an org file, and I found that org-region-active-p was NIL even after C-c @ (outline-mark-subtree).] This may be an oddity of aquamacs -- it seems to prefer cua-mode and turn off transient-mark-mode by default. I confess to not really understanding that decision or its implications. thanks, r ___ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode