3

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-sand 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.

no comments (yet)
sorted by: hot top controversial new old
there doesn't seem to be anything here
this post was submitted on 15 Oct 2024
3 points (100.0% liked)

Emacs

322 readers
1 users here now

A community for the timeless and infinitely powerful editor. Want to see what Emacs is capable of?!

Get Emacs

Rules

  1. Posts should be emacs related
  2. Be kind please
  3. Yes, we already know: Google results for "emacs" and "vi" link to each other. We good.

Emacs Resources

Emacs Tutorials

Useful Emacs configuration files and distributions

Quick pain-saver tip

founded 2 years ago
MODERATORS