Emacs

2194 readers
1 users here now

Our infinitely powerful editor.

founded 5 years ago
MODERATORS
126
6
submitted 2 years ago* (last edited 2 years ago) by bahmanm@lemmy.ml to c/emacs@lemmy.ml
 
 

⛔ Latest #Emacs (29.1-1.1) is broken on openSUSE Tumbleweed. Running emacs fails w/ a cryptic message.

💡The solution is to launch it using any of emacs-gtk or emacs-x11 or emacs-nox.

💡If your workflow relies on Emacs daemon like mine does, then simply evaluate (server-start) in the scratch buffer.

Hopefully the fix will be out very soon.

Cross-posted from https://mastodon.social/@bahmanm/110842724716130994

127
 
 

I’m trying to set up completion-at-point-functions in pascal-mode, I found that adding a hook with use-package works and leaves the global setting:

:hook (pascal-mode . (remove-hook ‘completion-at-point-functions ‘pascal-completions-at-point t))

However that causes a File mode specification error: (error Lisp nesting exceeds ‘max-lisp-eval-depth’) when I open a pascal file. Any ideas on how I could do it better?

128
 
 

I'm on opensuse tumbleweed, and today after updating my packages, I can't use emacs. Anyone have any ideas how to troubleshoot this?

❯ emacs -Q
Loading loadup.el (source)...
Dump mode: nil
Using load-path (/usr/share/emacs/29.1/lisp /usr/share/emacs/29.1/lisp/emacs-lisp /usr/share/emacs/29.1/lisp/progmodes /usr/share/emacs/29.1/lisp/language /usr/share/emacs/29.1/lisp/international /usr/share/emacs/29.1/lisp/textmodes /usr/share/emacs/29.1/lisp/vc)
Loading emacs-lisp/debug-early...
Symbol's function definition is void: file-name-sans-extension

129
 
 

Hello,

I am trying to switch to gnus for my main email client, however I cannot figure out how to get a copy of each email sent to my default Sent folder used by other email applications that was created by my provider (Posteo to be exact).

I have tried different things, such as by seting archive folder and attempting to gcc, but none of these have worked.

Additionally, I see many posts online are about doing this with an archive about once a month, whereas I just want each individual message to be placed in the "Sent" folder when it is sent.

Thank you.

130
131
 
 

Counsel-search is one of the few swiper commands I haven't yet replaced with a consult equivalent (counsel-keepassxc being the other one). Did anyone know if an equivalent tool exists in the counsel space?

132
133
 
 

Dear all,

A number of people expressed interest in a dedicated Org meetup. So, let's start it.

URL: https://bbb.emacsverse.org/b/iho-h7r-qg8-led

Time & Date: <2023-08-09 Wed 19:00-21:00 @+03,Europe/Istanbul>

The room will be open half an hour before the official start.

During the meetup, we can:

  • Give advice to new users
  • Showcase Org configs or workflows
  • Demo/discuss interesting packages
  • Troubleshoot each-other's issues
  • Discuss "Org mode" section of Emacs news (https://sachachua.com/blog/)
  • Discuss anything else Org-related
  • Everyone is free to join the discussion/chat or lurk around silently, listening.

We will not do any recording by default.

Original announcement: https://list.orgmode.org/orgmode/87tttlflht.fsf@localhost/

134
135
136
50
Emacs 29.1 Released (lists.gnu.org)
submitted 2 years ago* (last edited 2 years ago) by 4ffy@lemmy.ml to c/emacs@lemmy.ml
 
 

Available at your local GNU mirror and, depending on your OS, perhaps soon your favorite package manager repository. A full list of features and changes can be found in the NEWS file.

137
2
submitted 2 years ago* (last edited 2 years ago) by lukas@lemmy.haigner.me to c/emacs@lemmy.ml
 
 

I've got IDO everywhere and FIDO mode enabled. Unfortunately, FIDO hijacks commands such as occur that at best don't profit from FIDO, or at worst prevent you from doing what you want. Hence I took inspiration from StackOverflow and tweaked the code to disable FIDO temporarily. Enjoy :D

(defun disable-fido-advice (func &rest args)
  "Temporarily disable FIDO and call function FUNC with arguments ARGS."
  (interactive)
  (let ((state fido-mode))
    (unwind-protect
        (progn
          (fido-mode 0)
          (if (called-interactively-p 'any)
              (call-interactively func)
            (apply func args)))
      (fido-mode (if state 1 0)))))

(defun disable-fido (command)
  "Disable FIDO when command COMMAND is called."
  (advice-add command :around #'disable-fido-advice))

;; Commands without FIDO
(disable-fido 'command-here)
138
139
 
 

Hey guys, I think I get the basic idea, but I have a few questions..

  1. How do I just open up a note to check it out? I can see just opening the file regularly, but having each file start with a long sting of numbers leads me to think there's some nicer, easier way.

  2. How do I go about having multiple "networks" one for work and one for home, etc. Do I just use folders?

Thanks guys!

140
141
142
143
 
 
144
38
submitted 2 years ago* (last edited 2 years ago) by blawsybogsy@lemmy.ml to c/emacs@lemmy.ml
 
 

A client library and UI for Lemmy, has most of the basics in working order now. interested to hear your feedback if you give it a go. other complex UI features like rich post composing and image handling will be ported from mastodon.el.

it is designed to have a clean API layer, so the functions in lem-api.el could be used to create other interfaces.

145
 
 

I am required to use macos for work but I am having a hell of a time getting my frames to move to the right places in macos, I'll post snippets from my init.el and hopefully someone can recommend fixes. I use emacs-plus from homebrew and I have a 4k external monitor that is positioned to the left of my laptop monitor. This is the output of (display-monitor-attributes-list)

;; (((geometry 0 0 1440 900)
;;   (workarea 0 0 1440 900)
;;   (mm-size 286 179)
;;   (frames)
;;   (source . "NS"))
;;  ((geometry -3840 -1260 3840 2160)
;;   (workarea -3840 -1260 3840 2160)
;;   (mm-size 598 340)
;;   (frames #<frame *scratch* 0x129cbee30>)
;;   (source . "NS")))

Problem 1 (solved probably)

helm frame did not pop up in the correct location, I think I've figured it out but I'm not sure if it's the ideal solution

(defalias 'display-current-monitor-attributes (lambda()
                                                (defalias 'current-monitor-attrs (lambda (attrs)
                                                                                   (cond
                                                                                    ((null (cdr attrs)) (car attrs))
                                                                                    ((member (selected-frame) (assoc 'frames (car attrs))) (car attrs))
                                                                                    (t (current-monitor-attrs (cdr attrs))))))
                                                (current-monitor-attrs (display-monitor-attributes-list))))

 (defun my-helm-display-buffer-in-own-frame (buffer &optional resume)
    "Display Helm buffer BUFFER in a separate frame.

(fixed for my convenience)

Function suitable for `helm-display-function',
`helm-completion-in-region-display-function' and/or
`helm-show-completion-default-display-function'.

See `helm-display-buffer-height' and `helm-display-buffer-width'
to configure frame size.

Note that this feature is available only with emacs-25+.
Note also it is not working properly in helm nested session with emacs
version < emacs-28."
    (cl-assert (and (fboundp 'window-absolute-pixel-edges)
                    (fboundp 'frame-geometry))
               nil "Helm buffer in own frame is only available starting at emacs-25+")
    (if (or (not (display-graphic-p))
            nil
            ;(derived-mode-p 'dirvish-mode 'dired-mode)
            )
        ;; Fallback to default when frames are not usable.
        (helm-default-display-buffer buffer)
      (let* ((frame-info (frame-geometry))
             (workarea (cdr (assq 'workarea (display-current-monitor-attributes))))
             (half-screen-size (truncate (/ (cadddr workarea) 2)))
             (screen-x-origin (car workarea))
             (screen-y-origin (cadr workarea))
             (outer-position (cdr (assq 'outer-position frame-info)))
             (title-bar-size (cddr (assq 'title-bar-size frame-info)))
             (pixel-position (or (window-absolute-pixel-position) (window-absolute-pixel-position nil (selected-window)) (window-absolute-pixel-position nil (old-selected-window)) ))
             (pos-absolute (cons (car pixel-position) (- (cdr pixel-position) title-bar-size)))
             ;; (position (posn-at-point))
             ;; (position-window (posn-window position))
             ;; (pos-relative-to-window (posn-x-y position))
             ;; (window-edges (window-pixel-edges position-window))
             ;; (pos-relative-to-frame (cons (+ (car window-edges) (car pos-relative-to-window)) (+ (cdr pos-relative-to-window )(cadr window-edges))))
             ;; (pos-absolute (cons (+ (car outer-position) (car pos-relative-to-frame)) (+ (cdr pos-relative-to-frame) (cdr outer-position) title-bar-size)))
             (already-helm-buffer-p (prog1 helm--buffer-in-new-frame-p (setq helm--buffer-in-new-frame-p t)))
             (prmt-size (length helm--prompt))
             (line-height (frame-char-height))
             (window-min-height 1)
             (window-min-width helm-display-buffer-width )
             (new-frame-alist
              (if resume
                  (buffer-local-value 'helm--last-frame-parameters
                                      (get-buffer buffer))
                `((width . ,helm-display-buffer-width)
                  (height . ,helm-display-buffer-height)
                  ;; (height . 1)
                  (parent . '(selected-frame))
                  (user-position . t)
                  (tab-bar-show . nil)
                  (tool-bar-lines . 0)
                  (left . ,(cond (already-helm-buffer-p (car outer-position))
                                 (t
                                  (- (max (car pos-absolute) screen-x-origin (car outer-position))
                                     (* (frame-char-width)
                                        (let ((delta-point (- (point) (pos-bol))))
                                          (cond
                                           ((derived-mode-p 'dired-mode 'dirvish-mode) 0)
                                           ((> prmt-size delta-point) delta-point)
                                           (t prmt-size))))))))
                  (top . ,(cond
                           ;; Helm frame top distance already calculated
                           (already-helm-buffer-p (cdr outer-position))
                           ;; Point is below the halfway-point
                           ((> (- (cdr pos-absolute) screen-y-origin) half-screen-size)
                            (- (cdr pos-absolute)
                               (* (+ helm-display-buffer-height 3) line-height)))
                           (t
                            (+ (cdr pos-absolute)
                               (* 2 line-height)))))
                  (title . "Helm")
                  (undecorated-round . ,helm-use-undecorated-frame-option)
                  (background-color . ,(or helm-frame-background-color
                                           (face-attribute 'default :background)))
                  (foreground-color . ,(or helm-frame-foreground-color
                                           (face-attribute 'default :foreground)))
                  (alpha . ,(or helm-frame-alpha 100))
                  (font . ,(assoc-default 'font (frame-parameters)))
                  (vertical-scroll-bars . nil)
                  (menu-bar-lines . 0)
                  (fullscreen . nil)
                  (auto-raise . nil)
                  (visibility . ,(null helm-display-buffer-reuse-frame))
                  (minibuffer . t))))
             display-buffer-alist)
        ;; Display minibuffer above or below only in initial session,
        ;; not on a session triggered by action, this way if user have
        ;; toggled minibuffer and header-line manually she keeps this
        ;; setting in next action.
        (unless (or helm--executing-helm-action resume)
          ;; Add the hook inconditionally, if
          ;; helm-echo-input-in-header-line is nil helm-hide-minibuffer-maybe
          ;; will have anyway no effect so no need to remove the hook.
          (add-hook 'helm-minibuffer-set-up-hook 'helm-hide-minibuffer-maybe)
          (with-helm-buffer
            (setq-local helm-echo-input-in-header-line
                        (<= (- (cdr pos-absolute) screen-y-origin) half-screen-size))))
        ;; When frame size have been modified manually by user restore
        ;; it to default value unless resuming or not using
        ;; `helm-display-buffer-reuse-frame'.
        ;; This have to be done AFTER raising the frame otherwise
        ;; minibuffer visibility is lost until next session.
        (helm-display-buffer-popup-frame buffer new-frame-alist)
        (unless (or resume (not helm-display-buffer-reuse-frame))
          (set-frame-size helm-popup-frame
                          helm-display-buffer-width
                          helm-display-buffer-height))
        )
      (helm-log-run-hook "helm-display-buffer-in-own-frame" 'helm-window-configuration-hook)))



  (setq helm-display-function 'my-helm-display-buffer-in-own-frame
        helm-show-completion-display-function 'my-helm-display-buffer-in-own-frame
        helm-display-buffer-reuse-frame t
        helm-display-buffer-width 150
        helm-display-buffer-height 25
        helm-frame-alpha 100
        helm-use-undecorated-frame-option t)

Problem 2 (here be dragons (please help))

Whenever I lock my laptop my main emacs frame ends up on the laptop monitor still sized for the 4k external display I use making it unusable, to ameliorate this I bound the following to C-$ but it doesn't seem to always work, it seems to maximize on the monitor macos chooses the frame is on instead of on the monitor the frame should be on based on it's position. When I unplug the monitor and call this function it completely fucks up and moves of-screen and I have to delete the frame and open a new one.

The ideal solution would be not having to use a function at all and instead have macos not fuck up the position of my frames when I lock the pc.

(global-set-key (kbd "C-$")
                (defalias 'maximize-frame-on-display
                  (lambda (&optional arg)
                    "maximizes frame on a chosen display"
                    (interactive "P")
                    (let* ((available-displays (display-monitor-attributes-list))
                           (display-info (mapcar (lambda (display)
                                                  (cons (format "%.1f" (cadr (assq 'workarea display)))
                                                        (cadr (assq 'workarea display))))
                                                available-displays))
                           (sorted-info (sort display-info (lambda (a b) (< (cdr a) (cdr b)))))
                           (chosen-left (if arg (completing-read "Choose display: " (mapcar #'car sorted-info)) (caar sorted-info)))
                           (selfr (selected-frame)))
                      (set-frame-parameter selfr 'left `(+ ,(cdr (assoc chosen-left display-info))))
                      (set-frame-parameter selfr 'top 0.0)
                      (set-frame-parameter selfr 'fullscreen nil)
                      (set-frame-parameter selfr 'fullscreen 'maximized)))))

To make this stranger the following works and always places new frames on the left monitor as it should

(setq default-frame-alist '((ns-appearance . dark)
                            (ns-transparent-titlebar . t)
                            (width . 0.5)
                            (height . 1.0)
                            (user-position . t)
                            (fullscreen . maximized)
                            (left . 0.0)
                            (top . 0.0)
                            (font ."-*-Consolas for Powerline-*-*-*-*-16-160-*-*-*-*")
                            (cursor-type . box)
                            ;; (undecorated-round . t)
                            (undecorated . t)
                            (vertical-scroll-bars . nil)))

Problem 3 (kinda solved but I would like something more elegant) macos doesn't seem to have tiling so I had to make some functions for it, is there a package so I can use that instead?

(defalias 'custom-tile-thirds-vertical (lambda ( &optional direction )
                                         "Repositions emacs frame into the left/center/right third of the current display"
                                         (interactive "p")
                                         (let* ((current-position (frame-position))
                                                (direction (cond (direction direction) (t 1)))
                                                (monitor-attr (display-current-monitor-attributes))
                                                (workarea (cdr (assoc 'workarea monitor-attr)))
                                                (origin-x (car workarea))
                                                (origin-y (cadr workarea))
                                                (delta-x (- (car current-position) origin-x ))
                                                (width (caddr workarea))
                                                (third-width (/ width 3))
                                                (height (cadddr workarea)))
                                           (set-frame-size (selected-frame) third-width height t)
                                           (set-frame-position
                                            (selected-frame)
                                            (+ origin-x
                                               (* third-width
                                                  (cond
                                                   ((= 0 (% delta-x third-width)) (% (+ 3 (/ delta-x third-width) direction) 3))
                                                   (t 0))))
                                            origin-y))))


(defalias 'custom-tile-quarters (lambda (&optional direction)
                                  "Reposition emacs frame in corners of current display"
                                  (interactive "p")
                                  (let* ((current-position (frame-position))
                                         (direction (cond (direction direction) (t 1)))
                                         (monitor-attr (display-current-monitor-attributes))
                                         (workarea (cdr (assoc 'workarea monitor-attr)))
                                         (origin-x (car workarea))
                                         (origin-y (cadr workarea))
                                         (delta-x (- (car current-position) origin-x ))
                                         (delta-y (- (cdr current-position) origin-y ))
                                         (width (caddr workarea))
                                         (half-width (/ width 2))
                                         (height (cadddr workarea))
                                         (half-height (/ height 2))
                                         (new-position (cond
                                                        ((and (= 0 delta-x) (= 0 delta-y)) (cond
                                                                                            ((> 0 direction) (list 0 half-height))
                                                                                            (t (list half-width 0))))
                                                        ((and (= 0 delta-x) (= half-height delta-y)) (cond
                                                                                                      ((> 0 direction) (list half-width half-height))
                                                                                                      (t (list 0 0))))
                                                        ((and (= half-width delta-x) (= 0 delta-y)) (cond
                                                                                                     ((> 0 direction) (list 0 0))
                                                                                                     (t (list half-width half-height))))
                                                        ((and (= half-width delta-x) (= half-height delta-y)) (cond
                                                                                                               ((> 0 direction) (list half-width 0))
                                                                                                               (t (list 0 half-height))))
                                                        (t (list 0 0))
                                                        )))
                                    (set-frame-size (selected-frame) half-width half-height t)
                                    (set-frame-position
                                     (selected-frame)
                                     (+ origin-x (car new-position))
                                     (+ origin-y (cadr new-position ))))))


(defalias 'custom-tile-snap-left (lambda ()
                                  "Reposition emacs frame to take up left half of the screen"
                                  (interactive)
                                  (let* ((current-position (frame-position))
                                         (monitor-attr (display-current-monitor-attributes))
                                         (workarea (cdr (assoc 'workarea monitor-attr)))
                                         (origin-x (car workarea))
                                         (origin-y (cadr workarea))
                                         (width (caddr workarea))
                                         (half-width (/ width 2))
                                         (height (cadddr workarea)))
                                    (set-frame-size (selected-frame) half-width height t)
                                    (set-frame-position
                                     (selected-frame)
                                     origin-x
                                     origin-y))))

(defalias 'custom-tile-snap-LEFT (lambda ()
                                  "Reposition emacs frame to take up left two thirds of the screen"
                                  (interactive)
                                  (let* ((current-position (frame-position))
                                         (monitor-attr (display-current-monitor-attributes))
                                         (workarea (cdr (assoc 'workarea monitor-attr)))
                                         (origin-x (car workarea))
                                         (origin-y (cadr workarea))
                                         (width (caddr workarea))
                                         (third-width (floor (/ width 3)))
                                         (height (cadddr workarea)))
                                    (set-frame-size (selected-frame) (* 2 third-width) height t)
                                    (set-frame-position
                                     (selected-frame)
                                     origin-x
                                     origin-y))))

(defalias 'custom-tile-snap-right (lambda ()
                                  "Reposition emacs frame to take up left half of the screen"
                                  (interactive)
                                  (let* ((current-position (frame-position))
                                         (monitor-attr (display-current-monitor-attributes))
                                         (workarea (cdr (assoc 'workarea monitor-attr)))
                                         (origin-x (car workarea))
                                         (origin-y (cadr workarea))
                                         (width (caddr workarea))
                                         (half-width (/ width 2))
                                         (height (cadddr workarea)))
                                    (set-frame-size (selected-frame) half-width height t)
                                    (set-frame-position
                                     (selected-frame)
                                     (+ origin-x half-width)
                                     origin-y))))
146
 
 

Hey gang,

So initially I had something pretty simple to have "snippets" in my Emacs config, using Skeletons and Abbrevs. I've expanded on it a little bit since then, but I'm running into an issue where the abbrev no longer expands to call the skeleton function.

Here's what I have:

    ;;;###autoload
    (defun abbrev::abbrev-table-add-props (abbrev-table props)
      "Add one or more PROPS to an existing ABBREV-TABLE.
    PROPS should be a plist of (PROP VALUE).
    Example:
    
    (:enable-function (lambda (&rest _) (do-something)))"
      (if (cddr props)
          (cl-loop for (k v) on props by #'cddr
                   unless (not (abbrev-table-p abbrev-table))
                     unless (abbrev-table-get abbrev-table k)
                      do (abbrev-table-put abbrev-table k v))
        (unless (and (not (abbrev-table-p abbrev-table))
                     (abbrev-table-get abbrev-table (car props)))
          (abbrev-table-put abbrev-table (car props) (cadr props)))))
    
    ;;;###autoload
    (defmacro def-mode-snippet (name
                                mode
                                docstring
                                &rest prompt-and-or-skeleton)
      "Create a MODES specific \"snippet\" with NAME and SKELETON.
    NAME must be valid in the Emacs Lisp naming convention.
    
    MODE must be a valid major or minor mode that is known to Emacs.
    
    Example: ‘org-mode’, ‘emacs-lisp-mode’, etc.
    
    DOCSTRING is used in the abbrev rather than the skeleton.
    
    PROMPT-AND-OR-SKELETON can be any of the following:
    1. A valid Skeleton that uses the internal `Skeleton' langauge
    2. A key/value \"pair\" that’s :prompt STRING, followed by
       a valid Skeleton that uses the internal `Skeleton' language.
    The prompt given is used by the Skeleton to prompt the user for an input.
    
    This macro makes use of `define-skeleton' and `define-abbrev' in order to
    create something similar to a code/writing snippet system, like that of
    `YASnippet'. Keep in mind that all abbreviations created are put in the abbrev
    table of MODE you passed to this macro.
    
    Example: passing ‘org-mode’ will add the abbrev to the ‘org-mode-abbrev-table’.
    
    That may or may not be something you want depending on your uses.
    If you're looking to only define an abbrev globally, see `def-global-snippet'."
      (declare (debug t)
               (doc-string 3)
               (indent defun))
      ;; TODO need to figure out how to work with lists better
      (let* ((snip-name (symbol-name `,name))
             (func-name (intern (concat (symbol-name mode) "-" snip-name "-skel")))
             (var-str (concat (symbol-name mode) "-abbrev-table"))
             (abbrev-table (intern-soft var-str))
             (has-prompt (keywordp (car prompt-and-or-skeleton)))
             (prompt (if has-prompt (cadr prompt-and-or-skeleton) nil))
             (skeleton (if (not has-prompt) prompt-and-or-skeleton (cddr prompt-and-or-skeleton)))
             ;; Not using this for now until the issue with abbrevs not expanding is solved.
             ;;(enable-fn (lambda (&rest _) (or (eq major-mode 'mode) (numberp (cl-position 'mode minor-mode-list)))))
             )
        (macroexp-progn
         `((define-skeleton ,func-name
             ,(format "%s %s %s %s." snip-name "skeleton. Defined in" var-str "abbreviaton table")
             ,prompt
             ,@skeleton)
           ,(if (not (abbrev-table-p abbrev-table))
                `(define-abbrev ,abbrev-table
                   ,snip-name
                   ',func-name)
              `(define-abbrev-table ',abbrev-table
                 '((,snip-name ',func-name))
                 ,(format "An abbrev table for %s" mode)
                 :system t
                 :case-fixed t)
              (abbrev::abbrev-table-add-props ,abbrev-table
                                              '(:system t
                                                :case-fixed t)))))))

The example I can give is the following:

(def-mode-snippet defun emacs-lisp-mode
  "defun snippet for Emacs Lisp"
  > "(defun " @ - " (" @ _ ")" \n
  > -2 "\"" @ _ "\"" \n
  > -1 @ _ ")")

And that will macro-expand to:

(progn
  (define-skeleton emacs-lisp-mode-defun-skel "defun skeleton. Defined in emacs-lisp-mode-abbrev-table abbreviaton table." nil > "(defun " @ - " (" @ _ ")" n > -2 "\"" @ _ "\"" n > -1 @ _ ")")
  (define-abbrev emacs-lisp-mode-abbrev-table "defun" 'emacs-lisp-mode-defun-skel))

Which evals fine, even though I think the n would not be valid to Skeleton, but I'm not sure.

EDIT 1: I've put up a question on The Emacs StackExchange with more details if anyone is interested. Also, if it helps looking at my full config you can view it here.

EDIT 2: Good god, I nearly lost my mind by missing this:

(define-abbrev emacs-lisp-mode-abbrev-table "defun" 'emacs-lisp-mode-defun-skel)

When defining an abbrev using a skeleton, the skeleton function should go in an define-abbrev's hook argument. As the documentation for define-abbrev says:

If HOOK is a non-nil symbol with a non-nil no-self-insert property, it can control whether the character that triggered abbrev expansion is inserted. If such a HOOK returns non-nil, the character is not inserted. If such a HOOK returns nil, then so does abbrev-insert (and expand-abbrev), as if no abbrev expansion had taken place.

147
5
submitted 2 years ago* (last edited 2 years ago) by ggnoredo@lemm.ee to c/emacs@lemmy.ml
 
 

Hi,

I'm using the function below (found on somewhere else)

(defun my-magit-fetch-all-repositories ()
  "Run `magit-fetch-all' in all repositories returned by `magit-list-repos`."
  (interactive)
  (dolist (repo (magit-list-repos))
    (message "Fetching in %s..." repo)
    (let ((default-directory repo))
      (magit-fetch-all (magit-fetch-arguments)))
    (message "Fetching in %s...done" repo)))

This was working fine and successfully fetching from all of my repos. But recently it randomly generates an error on a random repo with the message of:

magit fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

If I try to magit-fetch-all manually then it works and does not throw the error since I have correct rights and ssh key. If I re-run my-magit-fetch-all-repositories, it randomly generates same error on different repo or repos.

Have any idea on this?

148
149
 
 

I'm currently in the process of taking over as maintainer for the emacs-keybindings addon for Firefox.

I've just published the first update in years, with changes including:

  • tested on Windows and Linux now
  • some functionality is now configurable: debug logging, custom new tab page, experimental features, modifier-less high level bindings
  • all keybindings are listed in the options settings page
  • M- keybindings are now also reachable via ESC
  • M-< and M-> was added for scrolling to top/bottom
  • introducing prefix key, currently only used for opening/closing of windows (C-u C-x C-f or C-u C-k)
  • search is introduced as experimental feature - currently it just highlights all matches
  • the extension now registers as browser action in preparation for additional features

Unfortunately a lot of things that used to work with the old XUL plugins few years back just don't work with the new APIs - and Firefox developers have been sitting on relevant bugs for 8 years or more without anything happening now - so this is probably close to the best we can have for now. In combination with setting editing keybindings either via Gnome settings or AHK it makes browsing almost bearable again.

150
view more: ‹ prev next ›