Comments (5)
Fair enough! I have a hacky workaround atm using (when buffer-file-name ...)
(as those org-src-edit buffers don't have a file name), but will send an email to the org-mode maillist to ask for their advice.
In any case I'm closing this issue as it is not related to PET. Thanks for the replies, and thanks for this great package which is making my Python package development process a lot easier :)
from emacs-pet.
What's your project layout? Where did you install jupyter? Can you give me a trace of pet-executable-find
and/or pet-virtualenv-root
?
from emacs-pet.
Thanks for the suggestion to trace those functions! (Sorry still relatively new to Elisp).
See below for the trace. Reading it it seems that the error is caused by the executables it could not find (and therefore returning nil
). This makes sense as I do not have those packages (e.g. black) installed in the project venv.
Do you have any suggestions on how to configure pet
to avoid running python-pet-hook
for org-src blocks? In my normal Python projects I do use these tools, so I would like to keep them in python-pet-hook
. I just need them to not search for the executables for my Org notebooks.
I have tried the following without results:
(use-package pet
:elpaca t
:hook
(python-mode . python-pet-hook)
(org-src-mode. org-src-pet-hook)
:init
(defun python-pet-hook ()
(unless (org-src-edit-buffer-p)
(pet-mode)))
(defun org-src-pet-hook ()
(remove-hook 'python-mode-hook 'python-pet-hook t)))
I have also tried variants with org-in-src-block-p
and (bound-and-true-p org-src-mode)
without succes. Any suggestions?
Trace
======================================================================
1 -> (pet-executable-find "python")
| 2 -> (pet-virtualenv-root)
| 2 <- pet-virtualenv-root: "/Users/duynguyen/.venv/"
1 <- pet-executable-find: "/Users/duynguyen/.pyenv/versions/3.10.5/bin/python"
======================================================================
1 -> (pet-virtualenv-root)
1 <- pet-virtualenv-root: "/Users/duynguyen/.venv/"
======================================================================
1 -> (pet-executable-find "jedi-language-server")
| 2 -> (pet-virtualenv-root)
| 2 <- pet-virtualenv-root: "/Users/duynguyen/.venv/"
1 <- pet-executable-find: nil
======================================================================
1 -> (pet-executable-find "pytest")
| 2 -> (pet-virtualenv-root)
| 2 <- pet-virtualenv-root: "/Users/duynguyen/.venv/"
1 <- pet-executable-find: nil
======================================================================
1 -> (pet-executable-find "black")
| 2 -> (pet-virtualenv-root)
| 2 <- pet-virtualenv-root: "/Users/duynguyen/.venv/"
1 <- pet-executable-find: nil
======================================================================
1 -> (pet-executable-find "isort")
| 2 -> (pet-virtualenv-root)
| 2 <- pet-virtualenv-root: "/Users/duynguyen/.venv/"
1 <- pet-executable-find: "/Users/duynguyen/.local/bin/isort"
======================================================================
1 -> (pet-executable-find "yapf")
| 2 -> (pet-virtualenv-root)
| 2 <- pet-virtualenv-root: "/Users/duynguyen/.venv/"
1 <- pet-executable-find: "/Users/duynguyen/.local/bin/yapf"
from emacs-pet.
I don't know. I don't use org-mode. AFAIK, similar modes like polymode and markdown-mode have(had) the same problem. This is a problem with how Emacs expose major mode switching lifecycle hooks and how these modes reuse major modes in source code blocks. There's nothing you can do about it at the moment, but perhaps you can file a ticket to Emacs.
from emacs-pet.
Alternatively, you may try to detect whether you are in a project in your hook, and only activate pet mode when you are.
from emacs-pet.
Related Issues (20)
- pet-find-file-in-project problem with regex in filename HOT 4
- Pet performance issue HOT 9
- Usage of string-match-p HOT 5
- Made list of changed variables configurable HOT 1
- `pet-exectuable-find` calls of `process-lines` using `pyenv which` can fail, setting vars to `nil` HOT 10
- Unable to guess virtualenv HOT 4
- Doesn't work on remotes over TRAMP HOT 2
- Add support for Eglot (and maybe Eshell) HOT 19
- pet-20230423.2326/pet.elc failed to define function pet HOT 7
- Support flymake? HOT 6
- pylsp-mypy is not recognizing the virtual environment HOT 3
- Virtualenv is not detected when it is directly in the root directory HOT 2
- Does conda work? HOT 4
- Manual venv selection? HOT 1
- Error in installation for newer emacs version HOT 5
- (pet-use-poetry-p) doesn't find poetry HOT 12
- Allow the location of pyproject.toml/Pipfile etc. to be customized HOT 16
- Pipenv virtualenv detection does not work properly HOT 3
- Conflict between precommit and poetry HOT 15
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from emacs-pet.