Skip to main content

Emacs Github Copilot

Emacs and Github Copilot

In order to setup my Emacs to use GitHub Copilot I got my inspiration from Robert Krahn blog post about Setting up Github Copilot in Emacs .

I have a few differences in my setup:

  • Robert Krahn:
    • Defaults load Copilot, except for a list of modes where it is not relevant
    • Use an utility function that loops through 3 activation state (off, manual and full)
    • Use M-C- combinations
  • I :
    • Launch Copilot with PHP and Typescript mode hook (only for those modes)
    • Use an utility derived from Robert Krahn's one, but looping only through 2 states: off and full
    • Use the "Windows" key, which is s-

Here you are

(add-to-list 'load-path "/home/mihamina/.emacs.d/copilot")
(require 'copilot)
(defun rktmb/copilot-complete-or-accept ()
  "Command that either triggers a completion or accepts one if one
   is available. Useful if you tend to hammer your keys like I do."
  (if (copilot--overlay-visible)
        (open-line 1)

(defun rktmb/copilot-change-activation ()
  "Switch between two activation modes:
   - manual: you need to press a key (s) to trigger completions
   - off: copilot is completely disabled."
  (if copilot-mode
     (message "deactivating copilot")
     (global-copilot-mode -1))
     (message "activating copilot mode")

(define-key copilot-mode-map (kbd "s-")   #'copilot-next-completion)
(define-key copilot-mode-map (kbd "s-")  #'copilot-previous-completion)
(define-key copilot-mode-map (kbd "s-")  #'copilot-accept-completion-by-word)
(define-key copilot-mode-map (kbd "s-")   #'copilot-accept-completion-by-line)
(define-key global-map       (kbd "s-") #'rktmb/copilot-complete-or-accept)
(define-key global-map       (kbd "s-") #'rktmb/copilot-change-activation)

(add-hook 'after-init-hook 'global-company-mode)

(add-hook 'js-mode-hook 'copilot-mode)
(add-hook 'typescript-mode-hook 'copilot-mode)
(add-hook 'php-mode-hook 'copilot-mode)


Popular posts from this blog

npm run build base-href

Using NPM to specify base-href When building an Angular application, people usually use "ng" and pass arguments to that invocation. Typically, when wanting to hard code "base-href" in "index.html", one will issue: ng build --base-href='' I used to build my angular apps through Bamboo or Jenkins and they have a "npm" plugin. I got the habit to build the application with "npm run build" before deploying it. But the development team once asked me to set the "--base-href=''" parameter. npm run build --base-href=' did not set the base href in indext.html After looking for a while, I found where it says: You need to use −− to pass arguments to npm scripts. This did the job! The command to issue is then: npm run build -- --base-href='

Jenkins invalid privatekey

Publish over SSH, Message "invalid privatekey:" With quite recent (June-July 2020) installations of Jenkins and OpenSSH, I have the following error message when using the "Deploy overs SSH" Jenkins plug-in and publishing artifacts to the target overs SSH: jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@d8d395a] This problem seems to be referenced here: Just regenerate a key with the right parameters To solve it: ssh-keygen -t rsa -b 4096 Or ssh-keygen -t rsa -b 4096 -m PEM

Emacs Pulumi LSP

Install Pulumi Emacs Mode The source code is on At the very bottom of the page are the instructions on how to install. You Need to have make installed. $ make install emacs-client mkdir -p ./bin go build -ldflags "-X" -o ./bin -p 10 ./cmd/... go: downloading v3.53.1 ... ... ... go install -ldflags "-X" ./cmd/... mkdir -p editors/emacs/bin cd editors/emacs && emacs -Q --batch --eval "(progn (setq package-user-dir \"$(pwd)/bin\" \ package-archives '((\"melpa\" . \"\") \