I am using counsel with projectile mainly for two use cases:
counsel-projectile-ag
for project-wide grep
counsel-projectile-find-file
to get a list of file names by typing some characters.
I usually have them bound to C-C C-s
and C-C C-f
, which used to work well with any other major modes.
Recently, I switched to using tree-sitter and set it up to use python-ts-mode. I also started using lsp-mode. Since then, whenever I open any python file, C-c C-s
and C-c C-f
are bound to the functions from python-mode. I've tried adding
(unbind-key "C-c C-s" python-ts-mode-map)
(unbind-key "C-c C-f" python-ts-mode-map)
to python-ts :config on use-package, and similar to python-mode, but I am still getting
python-ts-mode-map), which is an interactive native-compiled Lisp
function in ‘python.el’.
It is bound to C-c C-s.
(python-shell-send-string STRING &optional PROCESS MSG)
Send STRING to inferior Python PROCESS.
When optional argument MSG is non-nil, forces display of a
user-friendly message if there’s no process running; defaults to
t when called interactively.
[back]
What would be the correct way to set the configuration to get this always bound to the counsel-projectile commands whenever I open a python file?
Caveat: I am using NixOS home-manager to manage my emacs installation, which means that I am not manipulating my .emacs directly.
The relevant sections of my nix file.
usePackage = {
python-ts-mode = {
enable = true;
mode = [ ''("\\.py\\'" . python-ts-mode)'' ];
hook = [
"hs-minor-mode"
"(python-ts-mode . python-isort-on-save-mode)"
];
bind = {
"C-c C-s" = "counsel-projectile-ag";
"C-c C-f" = "counsel-projectile-find-file";
};
config = ''
(unbind-key "C-c C-s" python-ts-mode-map)
(unbind-key "C-c C-f" python-ts-mode-map)
'';
};
python-mode = {
enable = true;
bind = {
"C-c C-s" = "counsel-projectile-ag";
"C-c C-f" = "counsel-projectile-find-file";
};
config = ''
(unbind-key "C-c C-s" python-mode-map)
(unbind-key "C-c C-f" python-mode-map)
'';
};
lsp-mode = {
enable = true;
command = [ "lsp" ];
hook = [
"((python-ts-mode java-mode vue-mode javascript-ts-mode typescript-ts-mode) . lsp-deferred)"
];
bind = {
"C-c r r" = "lsp-rename";
"C-c r f" = "lsp-format-buffer";
"C-c r g" = "lsp-format-region";
"C-c r a" = "lsp-execute-code-action";
"C-c f r" = "lsp-find-references";
"C-c C-s" = "counsel-projectile-ag";
"C-c C-f" = "counsel-projectile-find-file";
};
};
counsel = {
enable = true;
bind = {
"C-x C-d" = "counsel-dired-jump";
"C-x C-r" = "counsel-recentf";
"C-x C-y" = "counsel-yank-pop";
};
diminish = [ "counsel-mode" ];
};
counsel-projectile = {
enable = true;
bind = {
"C-c C-s" = "counsel-projectile-ag";
"C-c C-f" = "counsel-projectile-find-file";
};
};
};
Any help appreciated.