Coder Social home page Coder Social logo

evil-multiedit's Introduction

Made with Doom Emacs evil-multiedit MIT MELPA MELPA Stable Build Status

evil-multiedit

This plugin was an answer to the lack of proper multiple cursor support in Emacs+evil. It allows you to select and edit matches interactively, integrating iedit-mode into evil-mode with an attempt at sensible defaults.

Since then, evil-mc has matured, and now that I use both I've found they can coexist, filling different niches, complimenting evil's built-in column/line-wise editing operations.

evil-multiedit

Thanks to syl20bnr for his evil-iedit-state plugin, which this plugin was heavily inspired by.

Installation

The package is available on MELPA.

M-x package-install RET evil-multiedit

Then load it up with the default keybinds:

(require 'evil-multiedit)
(evil-multiedit-default-keybinds)

Doom Emacs

This package comes pre-configured with Doom Emacs, in its :editor multiple-cursors module. Enable this module and you're good to go!

Usage

Evil-multiedit does not automatically bind any keys. Call (evil-multiedit-default-keybinds) to bind my recommended configuration:

;; Highlights all matches of the selection in the buffer.
(define-key evil-visual-state-map "R" 'evil-multiedit-match-all)

;; Match the word under cursor (i.e. make it an edit region). Consecutive presses will
;; incrementally add the next unmatched match.
(define-key evil-normal-state-map (kbd "M-d") 'evil-multiedit-match-and-next)
;; Match selected region.
(define-key evil-visual-state-map (kbd "M-d") 'evil-multiedit-match-and-next)
;; Insert marker at point
(define-key evil-insert-state-map (kbd "M-d") 'evil-multiedit-toggle-marker-here)

;; Same as M-d but in reverse.
(define-key evil-normal-state-map (kbd "M-D") 'evil-multiedit-match-and-prev)
(define-key evil-visual-state-map (kbd "M-D") 'evil-multiedit-match-and-prev)

;; OPTIONAL: If you prefer to grab symbols rather than words, use
;; `evil-multiedit-match-symbol-and-next` (or prev).

;; Restore the last group of multiedit regions.
(define-key evil-visual-state-map (kbd "C-M-D") 'evil-multiedit-restore)

;; RET will toggle the region under the cursor
(define-key evil-multiedit-state-map (kbd "RET") 'evil-multiedit-toggle-or-restrict-region)

;; ...and in visual mode, RET will disable all fields outside the selected region
(define-key evil-motion-state-map (kbd "RET") 'evil-multiedit-toggle-or-restrict-region)

;; For moving between edit regions
(define-key evil-multiedit-state-map (kbd "C-n") 'evil-multiedit-next)
(define-key evil-multiedit-state-map (kbd "C-p") 'evil-multiedit-prev)
(define-key evil-multiedit-insert-state-map (kbd "C-n") 'evil-multiedit-next)
(define-key evil-multiedit-insert-state-map (kbd "C-p") 'evil-multiedit-prev)

;; Ex command that allows you to invoke evil-multiedit with a regular expression, e.g.
(evil-ex-define-cmd "ie[dit]" 'evil-multiedit-ex-match)

Once regions are highlighted, changes are mirrored across them all.

Many evil-mode motions/operators will have slightly different behavior while evil-multiedit is active or the cursor is in an iedit region:

  • D: clear the region
  • C: clear to end-of-region and go into insert mode
  • A: go into insert mode at end-of-region
  • I: go into insert mode at start-of-region
  • V: select the region
  • P: replace the iedit region with the contents of the clipboard
  • $: go to end-of-region
  • 0/^: go to start-of-region
  • gg/G: go to the first/last region

To disable these, set evil-multiedit-dwim-motion-keys to nil before loading evil-multiedit.

NOTE: No need to bind a key for evil-multiedit-abort, pressing ESC in normal mode will invoke it.

Ex Command

:iedit [REGEXP] is available for invoking multiedit from the ex command line.

Commands

  • evil-multiedit-restore: Restore the last evil-multiedit session.
  • evil-multiedit-match-all: Create iedit regions of all matches of the current selection (or symbol at point) as multiedit regions.
  • evil-multiedit-match-and-next:
  • evil-multiedit-match-and-prev
  • evil-multiedit-match-symbol-and-next
  • evil-multiedit-match-symbol-and-prev
  • evil-multiedit-toggle-marker-here
  • evil-multiedit-toggle-or-restrict-region
  • evil-multiedit-next
  • evil-multiedit-prev
  • evil-multiedit-abort
  • evil-multiedit-ex-match

Options

  • evil-multiedit-dwim-motion-keys (default: t): If non-nil, evil's motion keys behave differently when the point is inside a multiedit region. Must be set before evil-multiedit is loaded.
  • evil-multiedit-ignore-indent-and-trailing (default: t): If non-nil, skip over indentation and trailing whitespace in iedit matches.
  • evil-multiedit-scope (default nil): How far evil-multiedit should look for incremental matches (doesn't affect evil-multiedit-match-all or evil-multiedit-ex-match). Accepts anything that bounds-of-thing-at-point accepts, such as 'defun, 'sexp, 'email or the default, 'buffer.
  • evil-multiedit-smart-match-boundaries (default t): If non-nil, multiedit will treat matches as atoms when invoked from normal mode. E.g.
    • evil-multiedit-match will not match evil-multiedit-match-all
    • i will only match i and not every individual i in ignition.
    • NOTE: If evil-multiedit is invoked from visual mode, this is ignored.
  • evil-multiedit-store-in-search-history (default nil): If non-nil, highlighted occurrences are stored in regexp-search-ring, so that after exiting iedit evil-search-next and evil-search-previous (usually n and N) use the last occurrence as if it were the last string in the search history.
  • evil-multiedit-follow-matches (default nil): If non-nil, the cursor will jump to each additional match, rather than remain in its original position.

Co-existing with evil-mc

How the two plugins mingle is entirely personal preference. I often reach for evil-mc for more complex operations and evil-multiedit for simpler ones.

My strategy is to bind evil-multiedit to M-d/M-D, and evil-mc to a bunch of keys prefixed with gz:

;; evil-multiedit
(evil-define-key 'normal 'global
  (kbd "M-d")   #'evil-multiedit-match-symbol-and-next
  (kbd "M-D")   #'evil-multiedit-match-symbol-and-prev)
(evil-define-key 'visual 'global
  "R"           #'evil-multiedit-match-all
  (kbd "M-d")   #'evil-multiedit-match-and-next
  (kbd "M-D")   #'evil-multiedit-match-and-prev)
(evil-define-key '(visual normal) 'global
  (kbd "C-M-d") #'evil-multiedit-restore)

(with-eval-after-load 'evil-mutliedit
  (evil-define-key 'multiedit 'global
    (kbd "M-d")   #'evil-multiedit-match-and-next
    (kbd "M-S-d") #'evil-multiedit-match-and-prev
    (kbd "RET")   #'evil-multiedit-toggle-or-restrict-region)
  (evil-define-key '(multiedit multiedit-insert) 'global
    (kbd "C-n")   #'evil-multiedit-next
    (kbd "C-p")   #'evil-multiedit-prev))

;; evil-mc
(evil-define-key '(normal visual) 'global
  "gzm" #'evil-mc-make-all-cursors
  "gzu" #'evil-mc-undo-all-cursors
  "gzz" #'+evil/mc-toggle-cursors
  "gzc" #'+evil/mc-make-cursor-here
  "gzn" #'evil-mc-make-and-goto-next-cursor
  "gzp" #'evil-mc-make-and-goto-prev-cursor
  "gzN" #'evil-mc-make-and-goto-last-cursor
  "gzP" #'evil-mc-make-and-goto-first-cursor)
(with-eval-after-load 'evil-mc
  (evil-define-key '(normal visual) evil-mc-key-map
    (kbd "C-n") #'evil-mc-make-and-goto-next-cursor
    (kbd "C-N") #'evil-mc-make-and-goto-last-cursor
    (kbd "C-p") #'evil-mc-make-and-goto-prev-cursor
    (kbd "C-P") #'evil-mc-make-and-goto-first-cursor))

NOTE: These are the default keybindings on Doom Emacs. Doom users don't need to bind these.

evil-multiedit's People

Contributors

afldcr avatar foldex avatar hlissner avatar jjpandari avatar justbur avatar ntharim avatar syohex avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

evil-multiedit's Issues

Accepting company completion causes LSP document to get desynced

This has been an issue for as long as I can remember, but I always forget to create a ticket for it. Not sure if this is the same issue as #39, but it also happens in Doom with the pinned iedit version.

When accepting a company completion while multiple evil-multiedit regions are active, the prefix that was used to trigger the company completion doesn't seem to get committed to the other regions while the completed part does. See below for a demonstration where lsp-mode's capf backend completes bar for me after I typed a b. When the document automatically reformats on save through lsp-format-buffer, only the ar part remains.

simplescreenrecorder-2021-06-13_13.48.21.mp4

On a side note, is pasting on a visual selection being broken in evil-multiedit (with Doom) also a known issue? When I use viw p to replace the selected word, only the actual word I'm editing will contain the pasted text. The other regions will be empty.

run multiedit alongside an evil motion?

So you can specify the region which you want to multiedit without first going into visual state.

Eg.

(general-define-key
  :states 'multiedit
  "g." 'hydra-evil-multiedit/body
  "gk" 'evil-multiedit-prev
  "gj" 'evil-multiedit-next)

now if I want to select and then iedit all occurences of evil-multiedit, because - isn't in my syntax entry for elisp mode, I have to first goto visual state, then select evil-multiedit and then run evil-multiedit-match-all.

From the "gk" line, this would be "v2t-g*" where g* is my binding for evil-multiedit-match-all.

instead I'd rather use the more vim/evil like "g*2t-". no need for visual state.

I've hacked in this kind of functionality

(defun evil-multiedit--multiedit (beg end)
  (evil-visual-select beg
                      (max 0 (- end 1)))
  (evil-multiedit-match-and-next))

(evil-define-operator evil-multiedit (beg end)
  :repeat nil
  (if (evil-get-command-property 'evil-multiedit :move-point)
      (save-excursion
        (evil-multiedit--multiedit beg end))
    (evil-multiedit--multiedit beg end)))

(defun evil-multiedit--multiedit-all (beg end)
  (evil-visual-select beg
                      (max 0 (- end 1)))
  (evil-multiedit-match-all))

(evil-define-operator evil-multiedit-all (beg end)
  :repeat nil
  (if (evil-get-command-property 'evil-multiedit-all :move-point)
      (save-excursion
        (evil-multiedit--multiedit-all beg end))
    (evil-multiedit--multiedit-all beg end)))

Backport all of evil-iedit-state?

evil-iedit-state does not seem to receive many updates.
Sadly, evil-multiedit is not exactly a drop-in replacement, I think some features are missing, namely:

  • F : restrict the scope to the function
  • p : replace occurrences with last yanked (copied) text (does not seem to work in multiedit)
  • U : Up-case the occurrences (casing with gU only applies to the current occurence)
  • C-U: down-case the occurrences (same)

Maybe that was on purpose?

Take casing into consideration when matching

What would you like to know?

Is it possible to configure evil-multiedit so strings with different casing are not matched at the same time? Currently, words like Ellipse, ellipse, and eLlIpSe for example will be matched at the same time.

nil evil-multiedit-store-in-search-history ineffectual

I think I might stick with this behavior after all, but: despite setting evil-multiedit-store-in-search-history to nil, multiedit-matched text is saved to my search history (searching with /, matching different text with M-d, then pressing n takes me to the text I matched with M-d, not the text I searched using /)

thanks for the package!

doesn't work with evil's very-magic search module

if you set the following variables

         evil-search-module 'evil-search
         evil-magic 'very-magic

evil-multiedit no longer works and gives the error evil-ex-search-find-next-pattern: Invalid regexp: "Invalid regular expression". It looks like this is because evil-multiedit is relying on evil-ex using emacs flavor regex.

Custom multiedit cursors

Is there a way of starting evil-multiedit on custom cursors?
Sometimes I want to start multiedit at the end of the begging of the line, rather than just on the "match" of some keyword.

evil-mc for example have evil-mc-make-cursor-here, but I prefer evil-multiedit for other reasons.

Command to search ignoring case and when change, change matching item case

Describe your request

In this scenario:

doomEmacs
setDoomEmacs

if i match press M-d twice on doomEmacs, also selects the DoomEmacs.

Then i change to somethingElse.

Final result:

somethingElse
setSomethingElse

Maybe this can be a variable or have a function to toggle it

Briefly explain its use-case

every camel case language should have benefits from it.

Invalid matching

There's something wrong with matching functions: instead of matching current word and then next, it matches first and then only a whitespace after another word.
I'm using config provided in the readme.

Customize the color

How can I customize the color of the selected areas? I couldn't find any documentation about

Difference in behavior between match-and-next and match-all

In evil-multiedit.el, try putting the point on evil-multiedit--start and using the match-all function. It's matching evil-multiedit--start-regexp too, which doesn't happen with the match-and-next function. I think these should be consistent since I'm using symbol for the thing-at-point function. Does that make sense?

Clarify installation/configuration instructions

Really appreciate all your work.

Maybe it's not my day, but I just spent almost an hour trying to run the package. I use Doom, so I skipped over the installation section, because my installation was different (add to packages.el instead of M-x install-package). This caused me to miss calling (require 'evil-multiedit) and when I was trying to call (evil-multiedit-default-keybinds) I was getting a void-function.

As a new user, it would also have helped for the instructions to explicitly say that I should consider adding (evil-multiedit-default-keybinds) (along with (require 'evil-multiedit)) to config.el. The README now says to "call" it, which is clear to me in retrospect, but was not clear enough to be able to follow the instructions.

I hope this is useful! Sorry for not proposing a PR, but I'm not confident that I did everything right, so would not be confident in writing instructions for others.

Symbol’s function definition is void: evil-multiedit-default-keybinds

Hello, I'm encountering an error when trying to apply the default keybindings as suggested in the readme. I've added this to my .spacemacs files:

   dotspacemacs-additional-packages '(
                                      evil-multiedit
                                      )
(defun dotspacemacs/user-config ()
...
  (evil-multiedit-default-keybinds)
...
)

When I restart Spacemacs, the error I receive is

(Spacemacs) Error in dotspacemacs/user-config: Symbol’s function definition is void: evil-multiedit-default-keybinds

It looks as though the function evil-multiedit-default-keybinds is not being loaded into my environment, as when I manually eval the function in evil-multiedit.el I can then call it and it's no longer void. When I eval the entire buffer, I can call evil-multiedit-default-keybinds successfully and see its output.

My emacs version is GNU Emacs 27.0.50 (build 1, x86_64-apple-darwin15.6.0, NS appkit-1404.47 Version 10.11.6 (Build 15G1611)) of 2017-10-20

spacemacs version is Release 0.200.9.x

installed version of evil multiedit is 20170623.1135

Thanks for your help!

match-and-next should match the first two occurrances when first used in visual mode

What did you expect to happen?

After selecting an expression using visual mode and pressing the keybinding for evil-multiedit-match-and-next, the function should understand that the user wants at leas to select the first and the next ocurrances.

What actually happened?

A instance of multiedit is created only for the ocurrance under the cursor.

Describe your attempts to resolve the issue

I tried to edit the function source but it was far more complex then I thought it would be.

Steps to reproduce

  1. Select a word in visual mode.
  2. Press the key binding for evil-multiedit-match-and-next.

Package commit

Package version: 1.4.3

System Information

5.17.1-arch1-1
GNU Emacs 28.09.91

video tutorial on youtube please

What would you like to know?

I am on linux..in Doom...and I have NO idea how to get this working. I have turned it on in my config and I have NO idea how to get this working. There are no videos on youtube that demonstrate this. Someone please help. I would love to see a short 5min video on how to turn this on in Doom and select multiple duplicate tags in a basic html. Thank you.

`evil-digit-bound-motions` was deleted

What did you expect to happen?

No error when starting Emacs.

What actually happened?

When starting Emacs, complain evil-digit-bound-motions is not declared.
It was deleted: emacs-evil/evil@040210a

Describe your attempts to resolve the issue

I think below line is no more needed.

(add-to-list 'evil-digit-bound-motions 'evil-multiedit-beginning-of-line) ; line 479

workaround:

(defvar evil-digit-bound-motions nil
  "`evil-digit-bound-motions' was deleted.
See, https://github.com/emacs-evil/evil/commit/040210af0b3c9000ff9e552855322a1d35cebcf3")

Steps to reproduce

  1. Update evil pacakge
  2. Exit emacs
  3. Start emacs

Package commit

master

System Information

I use Fedora Linux 35 (Workstation Edition) x86_64

how to skip a match?

If I don't want to edit all the matches, how can I skip some of them?

Thanks!

How does this compare to evil-mc?

How does evil-multedit compare to evil-mc now that the latter has matured? README says author uses both but doesn't expand on it. It would be useful to see what are the strengths of each so people interested in a multi-cursor tool can evalulate for themselves which package they might might prefer (or both, if desired).

Of course this is opinionated, but having some context is much better than having no context and allows future development of both packages (or the creation of a new one) to be more fruitful so features can be improved and not reinvented.

"cw" does not work, but "ciw" does

Runtime Environment

  • MX Linux 18
  • dotfiles
  • GNU Emacs 27.0.50
  • Org mode version 9.2.3
  • Evil version 1.2.14
  • Evil Multiedit 20190103.715
  • ~/.emacs.d

Issue

After evil-multiedit-match-all (or similar commands), trying to cw to delete a word does not work every time. cw seems to introduce a discrepancy in space - the word I'm deleting keeps one space to the following, while the one below does not obey the same behavior.

ciw works correctly, though.

I made a video to illustrate.

The cursor behavior is different than normal when exist evil-multiedit-insert mode

Similar issue to syl20bnr/evil-iedit-state#5

My guess is:

  • evil-multiedit is calling evil-multiedit-state directly to go back to evil-multiedit "normal" mode
  • which will not move back the cursor
  • same things goes with evil-iedit-state-mode
  • and evil-normal-state will call evil-adjust-cursor as a post-command and does something else to adjust the cursor position

My temporary solution for this is:

  (general-define-key
   :keymaps 'evil-multiedit-insert-state-map
   "<escape>" (lambda () (interactive) (evil-multiedit-state) (evil-move-cursor-back)))

Suggestion: Make it possible to automate keybindings

I appreciate that you don't bind keys by default, but since there are quite a few suggested bindings it would be nice if you provided a function to call to set up default bindings.

Thanks for the package. I like it so far.

evil-multiedit-match-all is not on any key

I am using default doom emacs

I have add (define-key evil-visual-state-map "R" 'evil-multiedit-match-all)
to .doom.d/config.el, but when using evil-multiedit match all with "R", it does not work.

Also, i looked into keybindings, I found that "R" is bind with evil-replace-state.

May i ask how to bind super-r with evil-multiedit-match-all?

Match all uses spaces before and after symbol

Hey, I tried to follow the readme and search for issues, but I didn't find anything about this problem.

In clojure, it's common to search for a namespace checking what places use it. But it looks like the evil-multiedit-match-all adds a space before and after the word :(

Example matching all for the namespace my-schema:
image

Regex used:
image

Using with visual-mode works:
image

image

Is there any way to evil-multiedit-match-all use this visual-mode behavior?

Thanks!

Cannot open load file: No such file or directory, evil-multiedit (DoomEmacs)

What did you expect to happen?

Hello,

I enabled multiple-cursors by uncommenting the line in init.el, and then ran doom sync. I restarted the client (and the server). doom doctor succeeds.

When I use <M-d> (or <C-x> evil-multiedit-match-and-next), I expect that it should highlight the word and extend a second cursor to the next occurrence.

What actually happened?

Cannot open load file: No such file or directory, evil-multiedit

Describe your attempts to resolve the issue

I enabled multiple-cursors by uncommenting the line in init.el, and then ran doom sync. I restarted the client (and the server). doom doctor succeeds.

Steps to reproduce

  1. Uncomment multiple-cursors

image

  1. doom sync (succeeds)

image

  1. doom doctor (succeeds)

image

  1. <M-d> (or <C-x> evil-multiedit-match-and-next)

image

Package commit

e96624926d724aff98e862221422cd7124a99c19

System Information

generated  Feb 03, 2023 22:44:43
system     "EndeavourOS Linux" Linux 6.1.9-hardened1-1-hardened x86_64 x
emacs      28.2 ~/.emacs.d/
doom       3.0.0-pre PROFILE=_@0 grafted, HEAD -> master, origin/master, origin/HEAD
           e966249 2023-01-01 21:55:13 -0500 ~/.doom.d/
shell      /bin/bash
features   ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
           JSON LCMS2 LIBOTF LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY
           INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11
           XDBE XIM XPM GTK3 ZLIB
traits     gui daemon server-running envvar-file custom-file
custom     custom-safe-themes
modules    :config use-package :completion company vertico :ui doom doom-dashboard
           doom-quit hl-todo modeline ophints (popup +defaults) (vc-gutter +pretty)
           vi-tilde-fringe workspaces :editor (evil +everywhere) file-templates fold
           snippets :emacs dired electric undo vc :checkers syntax :tools (eval
           +overlay) lookup lsp magit :lang emacs-lisp json javascript markdown org sh
           (web +html +css +lsp) :config (default +bindings +smartparens)

Typo in README? evil-visual-state-map binding

Usage binding from README doesn't seem to be working on my machine

(define-key evil-visual-state-map (kbd "M-d") 'evil-multiedit-and-next)

but if I change it to

(define-key evil-visual-state-map (kbd "M-d") 'evil-multiedit-match-and-next)

then it works great.

Steps to reproduce:

visually select some word(v), press meta-d

Actual result:

Wrong type argument: commandp, evil-multiedit-and-next

Please let me know if you need some more context info.

Conflict with tree-sitter-hl-mode in python

When having tree-sitter-hl-mode active in a python buffer, if I M-d some occurrences are not identified and if I try to edit them some occurrences are not changed but only appended to.

(package! tree-sitter
  :recipe (:host github :repo "ubolonton/emacs-tree-sitter"
           :files ("lisp/*.el")))
(package! tsc :recipe (:host github
            :repo "ubolonton/emacs-tree-sitter"
            :files ("core/*.el")))
(package! tree-sitter-langs
  :recipe (:host github :repo "ubolonton/emacs-tree-sitter"
           :files ("langs/*.el" "langs/queries")))

and

(use-package tree-sitter :after python-mode)

(after! tree-sitter
  (require 'tree-sitter)
  (require 'tree-sitter-langs)
  (require 'tree-sitter-hl))

(add-hook 'python-mode-hook #'tree-sitter-hl-mode)

"cw" does not work, but "ciw" does

Runtime Environment

  • MX Linux 18
  • dotfiles
  • GNU Emacs 27.0.50
  • Org mode version 9.2.3
  • Evil version 1.2.14
  • Evil Multiedit 20190103.715
  • ~/.emacs.d

Issue

After evil-multiedit-match-all (or similar commands), using cw to delete a word does not work. cw seems to introduce a discrepancy in space - the word I'm deleting keeps one space to the following, while the one below does not obey the same behavior.

ciw works correctly, though.

I made a video to illustrate.

Pasting into multiedit regions crashes/freezes/slows down emacs

...presumably because it's updating N regions for every character in the pasted string, but I'm not totally certain.

Any help would be appreciated!

EDIT: Now p will simply replace the region with the pasted text. Oddly doesn't seem to invoke iedit's wrath! Not ideal, but it's a start.

"3 matches for foo" is not echoed, intentionally?

What would you like to know?

I was using some version from 202202, which echos "3 matches for foo" when matching. After updating to latest, the echo doesn't show anymore. In the code I see it's inhibited explicitly with inhibit-message when calling iedit.

This message is quite useful in my opinion, why inhibit it? Does iedit echo something more so you silence them all to make it clean?

Arbitarty location cursors (through evil-multiedit-toggle-marker-here) are broken

What did you expect to happen?

when I invoke evil-multiedit-toggle-marker-here to create multiple cursors I expect the editing I make in any of them to be reflected across all others.

What actually happened?

I get a black marker for each cursor, but when entering text the changes are only made at that location (and so is the purple background associated with evil-multiedit:

image

image

Describe your attempts to resolve the issue

No response

Steps to reproduce

enter insert mode
hit M-d
move to a different location
hit M-d
enter text

Package commit

23b53bc

System Information

I use ubuntu on WSL2, getting the GUI through xming.

"match-symbol-and-prev" causes a memory leak.

What did you expect to happen?

Trying to do a match symbol and select for a second time should do a match and selection.

What actually happened?

Instead it freezes emacs and causes a memory leak.
emacs
emacs2

emacs_bug.mp4

Describe your attempts to resolve the issue

I have not yet analyzed the code, or made any attempts to fix the bug.

Steps to reproduce

  1. Open any file with multiple duplicate words
  2. Head to the last and do 'evil-multiedit-match-symbol-and-prev'
  3. Do it for a SECOND time.
  4. Watch as emacs freezes and causes a memory leak

Package commit

23b53bc

System Information

Arch Linux, Linux Xanmod And Compiled Emacs 30 With Native-Comp

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.