Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support "matching" modifier #3

Open
pokey opened this issue Jun 21, 2021 · 2 comments
Open

Support "matching" modifier #3

pokey opened this issue Jun 21, 2021 · 2 comments
Labels
enhancement New feature or request

Comments

@pokey
Copy link
Member

pokey commented Jun 21, 2021

We'd like to support the "matching" modifier, which looks for the nearest paired symbol, such as ", (, [, etc, and selects until past the matching symbol, similar to the vim % motion

We also may want a version where you specify which paired token to look for, eg "round", "square", etc

This issue will be implemented by layering on top of #13 by making it synonymous with "past next pair"

@pokey pokey added the enhancement New feature or request label Jun 23, 2021
@pokey pokey changed the title Support "matching" transformation Support "matching" modifier Jul 7, 2021
@maciejklimek
Copy link
Contributor

I would like to work on this issue. Please assign it to me

@AndreasArvidsson
Copy link
Member

AndreasArvidsson commented Jul 28, 2021

@pokey @maciejklimek Any thoughts on how to solve false positives like this?
[1, "[", 2, "]", 3]

Probably the easiest is to use the tree sitter and check the syntax type for strings.

We also have a problem with escaped quotes in strings.
"Hello world \" Some more words"

maciejklimek added a commit to maciejklimek/cursorless-vscode that referenced this issue Jul 31, 2021
maciejklimek added a commit to maciejklimek/cursorless-vscode that referenced this issue Aug 6, 2021
maciejklimek added a commit to maciejklimek/cursorless-vscode that referenced this issue Aug 6, 2021
maciejklimek added a commit to maciejklimek/cursorless-vscode that referenced this issue Aug 6, 2021
maciejklimek added a commit to maciejklimek/cursorless-vscode that referenced this issue Aug 9, 2021
pokey added a commit that referenced this issue Aug 9, 2021
* Add surrounding pair modifier (#3)

* delimeter => delimiter

* Clean up

* Tweak

* More tweak

Co-authored-by: Pokey Rule <pokey.rule@gmail.com>
pokey pushed a commit that referenced this issue Apr 2, 2023
## Checklist

- [x] I have updated the
[docs](https://github.com/cursorless-dev/cursorless/tree/main/docs) and
[cheatsheet](https://github.com/cursorless-dev/cursorless/tree/main/cursorless-talon/src/cheatsheet)
- [x] I have not broken the cheatsheet
- [x] I have tested building the docs

Replace the hand-written diagram of relative / ordinal modifiers with
one generated by LaTeX / tikz.

If it is necessary in the future to change this image, you can reuse and
modify the below latex code to regenerate it.

```
\documentclass[tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing,calligraphy}

% to convert pdf -> png:
% convert -density 300 relative-ordinal.pdf -quality 100 -background white -alpha remove relative_ordinal.png

\begin{document}
\def\spacing{1.4cm}
\newcommand{\ibrace}[4]{
    \draw [decorate, decoration = {brace, amplitude=5pt}] (#2*\spacing, #1*0.8cm + 0.5cm) --  (#3*\spacing, #1*0.8cm + 0.5cm)
    node[above=5pt, pos=0.5, scale=0.8] {\texttt{"#4"}};
}
\newcommand{\bbrace}[4]{
    \draw [decorate, decoration = {brace, amplitude=5pt}] (#2*\spacing, #1*0.8cm + 0.5cm) --  (#3*\spacing, #1*0.8cm + 0.5cm)
    node[above=-20pt, pos=0.5, scale=0.8] {#4};
}
\newcommand{\funk}[3]{
    \draw[fill=black] (#1*\spacing,0) circle (0.1cm) node[below=#2, text width=1cm,align=left,scale=0.7] (F#1)
    {\texttt{"#3"}};
}
\begin{tikzpicture}[ultra thick]

\funk{0}{0pt}{first funk}
\funk{1}{0pt}{second funk}
\funk{2}{0pt}{third previous funk}
\funk{3}{0pt}{second previous funk}
\funk{4}{0pt}{previous funk}
\funk{5}{0pt}{funk}
\funk{6}{0pt}{next funk}
\funk{7}{0pt}{second next funk}
\funk{8}{0pt}{third next funk}
\funk{9}{0pt}{second last funk}
\funk{10}{0pt}{last funk}

\draw[latex-] (F5) -- +(0,-0.8cm) node[below=2pt,scale=0.8] {input target};

\ibrace{0}{6}{8}{next three funks};
\ibrace{0}{2}{4}{previous three funks};
\ibrace{1}{5}{7}{three funks};
\ibrace{2}{3}{5}{three funks backward};
\ibrace{0}{0}{1}{first two funks};
\ibrace{0}{9}{10}{last two funks};
\bbrace{-3}{10}{0}{iteration scope};
\end{tikzpicture}

\end{document}
```

---------

Co-authored-by: Martin Rykfors <martin.rykfors@evolabel.com>
fidgetingbits pushed a commit to fidgetingbits/cursorless that referenced this issue Jun 12, 2024
docs: Document shortcuts and how to send PRs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants