* Helo for defun/macro arguments list in minibuffer when in org-babel src blocks? @ 2021-07-24 19:50 Arthur Miller 2021-07-25 0:05 ` Tim Cross 0 siblings, 1 reply; 5+ messages in thread From: Arthur Miller @ 2021-07-24 19:50 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 1276 bytes --] I have been doing quite some programming with elisp in org mode, and one thing I am missing is this help that Emacs shows in minibuffer for functions and macros. You can see the example in the attached image. I am not sure what I have to enable (or disable? :)) to get it to work in babel src blocks? Or is it even possible? Some few days ago I stumbled on a blog post by J. Kitchin about enabling orignal mode maps in src block: https://kitchingroup.cheme.cmu.edu/blog/2017/06/10/Adding-keymaps-to-src-blocks-via-org-font-lock-hook/ That was another thing I was missing, and that one work really well. Thank yuu John! Can that hack be used to enable this help to pup up in minibuffer as well. I am not familiar what causes that lookup, but I see it happends even when Emacs is started with -Q option, so it is something built-in and enabled by default, probably in elisp-mode itself. Last thing I miss is company doing it's thing. I can complete by pressing TAB, but I would still like it to happen automatically. Is it just me being noob and not enabling something, or is it bit more coplicated than so? Sorry for the long writing, but basically what I ask is, can we get more of usualy elisp stuff hanpening in babel src blocks? Best regards and thanks for help [-- Attachment #2: example.png --] [-- Type: image/png, Size: 55194 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Helo for defun/macro arguments list in minibuffer when in org-babel src blocks? 2021-07-24 19:50 Helo for defun/macro arguments list in minibuffer when in org-babel src blocks? Arthur Miller @ 2021-07-25 0:05 ` Tim Cross 2021-07-25 8:50 ` Arthur Miller 0 siblings, 1 reply; 5+ messages in thread From: Tim Cross @ 2021-07-25 0:05 UTC (permalink / raw) To: emacs-orgmode Hi, when you are editing source blocks are you using org-edit-special, normally bound to C-c ') or are you just editing the source blocks directly within the org buffer? The functionality you are referring to sounds like eldoc minor mode. If you open a dedicated buffer to edit a file in the same language as your source blocks, do you see the behaviour you want. For example, open a file called test.el and edit some Emacs lisp. If you don't see the behaviour your after, you need to configure emacs-lisp-mode to load eldoc mode. Try typing M-x eldoc-mode <ret> and see if you then get the behaviour your after. If you do, then read up on eldoc-mode and how to enable it. The environment you get with a dedicated buffer and that you get with org-edit-special should be roughly the same. So the trick is to get things working how you like them using a dedicated *.el buffer and then use org-edit-special whenever you need to edit source blocks. There is also another good reason to use org-edit-special - there are some situations where org needs to add some special escaping characters in source blocks to enable things to be parsed correctly. Using org-edit-special ensures this occurs when necessary. Editing the source blocks directly does not. Arthur Miller <arthur.miller@live.com> writes: > I have been doing quite some programming with elisp in org mode, > and one > thing I am missing is this help that Emacs shows in minibuffer > for > functions and macros. You can see the example in the attached > image. I > am not sure what I have to enable (or disable? :)) to get it to > work in > babel src blocks? Or is it even possible? > > Some few days ago I stumbled on a blog post by J. Kitchin about > enabling > orignal mode maps in src block: > > <https://kitchingroup.cheme.cmu.edu/blog/2017/06/10/Adding-keymaps-to-src-blocks-via-org-font-lock-hook/> > > That was another thing I was missing, and that one work really > well. > Thank yuu John! > > Can that hack be used to enable this help to pup up in > minibuffer as > well. I am not familiar what causes that lookup, but I see it > happends > even when Emacs is started with -Q option, so it is something > built-in > and enabled by default, probably in elisp-mode itself. > > Last thing I miss is company doing it's thing. I can complete by > pressing TAB, but I would still like it to happen automatically. > Is it > just me being noob and not enabling something, or is it bit more > coplicated than so? > > Sorry for the long writing, but basically what I ask is, can we > get more > of usualy elisp stuff hanpening in babel src blocks? > Regards, Tim -- *Tim Cross* /For gor sake stop laughing, this is serious!/ ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Helo for defun/macro arguments list in minibuffer when in org-babel src blocks? 2021-07-25 0:05 ` Tim Cross @ 2021-07-25 8:50 ` Arthur Miller 2021-07-25 9:03 ` Tim Cross 0 siblings, 1 reply; 5+ messages in thread From: Arthur Miller @ 2021-07-25 8:50 UTC (permalink / raw) To: Tim Cross; +Cc: emacs-orgmode Tim Cross <theophilusx@gmail.com> writes: > Hi, > > when you are editing source blocks are you using org-edit-special, normally > bound to C-c ') or are you just editing the source blocks directly within the > org buffer? No I don't narrow. > The functionality you are referring to sounds like eldoc minor mode. Yes it is, I was just looking at elisp-mode.el, and saw the eldoc support. I tried to defadvice around with that scimax spoof function from J.K's article, but I don't really get it to work. > If you open a dedicated buffer to edit a file in the same language as your > source blocks, do you see the behaviour you want. For example, open a file > called test.el and edit some Emacs lisp. If you don't see the behaviour your > after, you need to configure emacs-lisp-mode to load eldoc mode. Try typing M-x > eldoc-mode <ret> and see if you then get the behaviour your after. If you do, > then read up on eldoc-mode and how to enable it. > Using org-edit-special ensures this occurs when necessary. > Editing the source blocks directly does not. I know, I would kind of like to skip to narrow back and forth. I understand I maybe stretching it a bit, but kind-a cool if it could work directly in src blocks without narrowing. > The environment you get with a dedicated buffer and that you get with > org-edit-special should be roughly the same. So the trick is to get things > working how you like them using a dedicated *.el buffer and then use > org-edit-special whenever you need to edit source blocks. There is also another > good reason to use org-edit-special - there are some situations where org needs > to add some special escaping characters in source blocks to enable things to be > parsed correctly. Indeed. I had to introduce some macros because of <>[] chars being parsed wrongly so syntax highlight and identation in src blocks get screwed. I think I asked for helped about it. J.K. posted his answer in SX, but I couldn't get that to work, so I just wrote few simple macros that fixed at least syntax and indenting. Lispy is also really badly screwed in org-buffer directly, at least for me cursor jumps all over the place. Anyway, after trying the "scimax-hack" (if I can call it so), which works so fine with keymaps, I thought it might work with eldoc and company too. I am just not sure which things to hook into that spoof function. (advice-add 'eldoc-mode :around 'scimax-spoof-mode) That one let me enabke eldoc-mode which otherwise does not want to run in org mode (for me at least). However I still don't see the defun signature in echo area. I tried to hook via those two below: (advice-add 'elisp-completion-at-point :around 'scimax-spoof-mode) (advice-add 'elisp-eldoc-documentation-function :around 'scimax-spoof-mode) but still nothing in echo area :). Anyway, thanks for any help! > Arthur Miller <arthur.miller@live.com> writes: > >> I have been doing quite some programming with elisp in org mode, and one >> thing I am missing is this help that Emacs shows in minibuffer for >> functions and macros. You can see the example in the attached image. I >> am not sure what I have to enable (or disable? :)) to get it to work in >> babel src blocks? Or is it even possible? >> >> Some few days ago I stumbled on a blog post by J. Kitchin about enabling >> orignal mode maps in src block: >> >> <https://kitchingroup.cheme.cmu.edu/blog/2017/06/10/Adding-keymaps-to-src-blocks-via-org-font-lock-hook/> >> >> That was another thing I was missing, and that one work really well. >> Thank yuu John! >> >> Can that hack be used to enable this help to pup up in minibuffer as >> well. I am not familiar what causes that lookup, but I see it happends >> even when Emacs is started with -Q option, so it is something built-in >> and enabled by default, probably in elisp-mode itself. >> >> Last thing I miss is company doing it's thing. I can complete by >> pressing TAB, but I would still like it to happen automatically. Is it >> just me being noob and not enabling something, or is it bit more >> coplicated than so? >> >> Sorry for the long writing, but basically what I ask is, can we get more >> of usualy elisp stuff hanpening in babel src blocks? >> > > > Regards, > > Tim > > -- > *Tim Cross* > > /For gor sake stop laughing, this is serious!/ ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Helo for defun/macro arguments list in minibuffer when in org-babel src blocks? 2021-07-25 8:50 ` Arthur Miller @ 2021-07-25 9:03 ` Tim Cross 2021-07-25 9:48 ` Arthur Miller 0 siblings, 1 reply; 5+ messages in thread From: Tim Cross @ 2021-07-25 9:03 UTC (permalink / raw) To: Arthur Miller; +Cc: emacs-orgmode Arthur Miller <arthur.miller@live.com> writes: > Tim Cross <theophilusx@gmail.com> writes: > >> Hi, >> >> when you are editing source blocks are you using org-edit-special, normally >> bound to C-c ') or are you just editing the source blocks directly within the >> org buffer? > No I don't narrow. Note that org-edit-special isn't really narrowing. Rather, it opens a new buffer (there are options to control how it does this i.e. replace org buffer, split to open in new buffer, open in new frame etc) which puts the source block into the native mode for the language being edited. For example, if your editing an emacs-lisp block, the edit special buffer will be in emacs-lisp-mode and will have all the facilities you would normally have when opening an emacs lisp file. What it sounds like you want to do is just have all the (for example) emacs-lisp mode and associated minor modes activated when your cursor is within a source block within the org buffer. This is extremely difficult to. Part of the problem is that modes like emacs-lisp-mode are designed to operate on buffers. There are some 'special' packages, like mmm-mode which try to support this type of functionality, but to be honest, I've never found them very good and they often have significant performance problems. Of course, this is emacs and you can probably get something mostly working, but it will take considerable effort and may well have performance hits as well as other unexpected side effects. I think your definitely 'swimming against the flow' and suspect that in the end, you will spend far more time trying to maintain your hacks rather than actually focusing on the work you want to get done. I originally went down a similar path, but then realised, it was much easier just to get use to using org-edit-special and focus on getting that to work just how I like it. Now, I don't even notice/think about it. I just hit the key to open the buffer, edit it and then exit. I have it setup so that the original org buffer is still displayed, so I can see/scroll the org buffer in case I need to reference other information in the buffer etc. All the bits I want work just like they do when I edit 'native' buffers for the language being edited (syntax, indentation, snippets/completion, symbol/documentation lookup etc). Anyway, good luck. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Helo for defun/macro arguments list in minibuffer when in org-babel src blocks? 2021-07-25 9:03 ` Tim Cross @ 2021-07-25 9:48 ` Arthur Miller 0 siblings, 0 replies; 5+ messages in thread From: Arthur Miller @ 2021-07-25 9:48 UTC (permalink / raw) To: Tim Cross; +Cc: emacs-orgmode Tim Cross <theophilusx@gmail.com> writes: > Arthur Miller <arthur.miller@live.com> writes: > >> Tim Cross <theophilusx@gmail.com> writes: >> >>> Hi, >>> >>> when you are editing source blocks are you using org-edit-special, normally >>> bound to C-c ') or are you just editing the source blocks directly within the >>> org buffer? >> No I don't narrow. > > Note that org-edit-special isn't really narrowing. Rather, it opens a > new buffer (there are options to control how it does this i.e. replace > org buffer, split to open in new buffer, open in new frame etc) which puts the source block > into the native mode for the language being edited. For example, if > your editing an emacs-lisp block, the edit special buffer will be in > emacs-lisp-mode and will have all the facilities you would normally have > when opening an emacs lisp file. > > What it sounds like you want to do is just have all the (for example) > emacs-lisp mode and associated minor modes activated when your cursor is > within a source block within the org buffer. This is extremely difficult > to. Part of the problem is that modes like emacs-lisp-mode are designed > to operate on buffers. Yes indeed. I am quite aware of difficulties involved. I did myself a small [[https://github.com/amno1/dired-auto-readme][hack to dired mode to "auto show" readme files]], and got into all those problems there. That one major mode per buffer is starting to be a limitation. What we really would need is a major mode per region, or some other mean to be able to combine modes. Maybe something like a "primary mode" which would be what Emacs opens into when a file is loaded, i.e. 'org-mode' in this example and secondary modes, which would be other major modes loaded, and somehow activated per region or I don't know. But that is a day-dreaming :). It would require rebuilding entire machinery. > There are some 'special' packages, like mmm-mode > which try to support this type of functionality, but to be honest, I've > never found them very good and they often have significant performance > problems. Yes I know. I tried with mmm-mode, didn't really work well for me. > Of course, this is emacs and you can probably get something mostly > working, but it will take considerable effort and may well have > performance hits as well as other unexpected side effects. I think your > definitely 'swimming against the flow' and suspect that in the end, you Haha, definitely :-). But that is the story of my entire life ;-). Yes, in this case, that is correct. What I am doing here is bending entire org-mode to do something it is not supposed to do. If you are interested you can take a look at [[https://github.com/amno1/.emacs.d/blob/main/init.org][my little app on my github]]: Look at "org hacks" under generator heading. > will spend far more time trying to maintain your hacks rather than > actually focusing on the work you want to get done. I originally went down a That is what is hapening, but I started this as a hobby project as well as a learning experience. I really suck at both Emacs internals and elisp, so I need something like this as a learning project. > Anyway, good luck. Thanks, and thank you for the tips and feedback. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-07-25 9:49 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-07-24 19:50 Helo for defun/macro arguments list in minibuffer when in org-babel src blocks? Arthur Miller 2021-07-25 0:05 ` Tim Cross 2021-07-25 8:50 ` Arthur Miller 2021-07-25 9:03 ` Tim Cross 2021-07-25 9:48 ` Arthur Miller
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs/org-mode.git 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).