mirror of
https://github.com/zed-industries/zed.git
synced 2024-11-08 07:35:01 +03:00
Add command to copy current file:line for working with external tools (#14793)
Closes #14787. I made a quick draft implementation of this feature request: https://github.com/zed-industries/zed/issues/14787 I know how to use use gdb well, so lacking a built-in debugger is OK. BUT... Speaking personally, setting breakpoints is 50% of what I want an IDE to do for me when debugging. Having a feature where I can click, copy, "b [paste]", is a huge step up from typing the whole thing in manually. I figure this must be useful for other external tools, or even just regular-human-communication too. Open Questions: * Does this belong in the right click menu? (I put it next to "Copy Permalink" which is similar.) * Probably not useful enough to get a default keymap? * Relative vs absolute path? * Does this need tests? Release Notes: - Added `editor: copy file location` command to copy the current file location (FILE:LINE) to the clipboard ([#14787](https://github.com/zed-industries/zed/issues/14787)). --------- Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
This commit is contained in:
parent
14d0f4fbb2
commit
e2635a685e
@ -199,6 +199,7 @@ gpui::actions!(
|
||||
CopyHighlightJson,
|
||||
CopyPath,
|
||||
CopyPermalinkToLine,
|
||||
CopyFileLocation,
|
||||
CopyRelativePath,
|
||||
Cut,
|
||||
CutToEndOfLine,
|
||||
|
@ -10905,6 +10905,17 @@ impl Editor {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn copy_file_location(&mut self, _: &CopyFileLocation, cx: &mut ViewContext<Self>) {
|
||||
if let Some(buffer) = self.buffer().read(cx).as_singleton() {
|
||||
if let Some(file) = buffer.read(cx).file().and_then(|f| f.as_local()) {
|
||||
if let Some(path) = file.path().to_str() {
|
||||
let selection = self.selections.newest::<Point>(cx).start.row + 1;
|
||||
cx.write_to_clipboard(ClipboardItem::new_string(format!("{path}:{selection}")));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn open_permalink_to_line(&mut self, _: &OpenPermalinkToLine, cx: &mut ViewContext<Self>) {
|
||||
let permalink = self.get_permalink_to_line(cx);
|
||||
|
||||
|
@ -353,6 +353,7 @@ impl EditorElement {
|
||||
register_action(view, cx, Editor::copy_highlight_json);
|
||||
register_action(view, cx, Editor::copy_permalink_to_line);
|
||||
register_action(view, cx, Editor::open_permalink_to_line);
|
||||
register_action(view, cx, Editor::copy_file_location);
|
||||
register_action(view, cx, Editor::toggle_git_blame);
|
||||
register_action(view, cx, Editor::toggle_git_blame_inline);
|
||||
register_action(view, cx, Editor::toggle_hunk_diff);
|
||||
|
Loading…
Reference in New Issue
Block a user