threads / patch / 9436

patchpatch open-editor-at-top-line

Subject: [PATCH] patch open-editor-at-top-line

## tl;dr

2 messages between Aug 8, 2007 and Aug 8, 2007. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

Dmitry Monakhov· Aug 8, 2007, 15:11 UTC · lore
When i use "guilt series -e" for realy long series file
it is not confortable always search current top patch line.
IMHO editor have to start at the top patch automaticaly.
Btw: open_editor_at_line may be useful in other places
Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
---
 guilt        |   34 ++++++++++++++++++++++++++++++++++
 guilt-series |    5 +++--
 2 files changed, 37 insertions(+), 2 deletions(-)
Show changes to 2 files +37 −2

guilt, guilt-series

diff --git a/guilt b/guilt
index bc51472..66c3078 100755
--- a/guilt
+++ b/guilt
@@ -287,6 +287,18 @@ series_insert_patch()
 	mv "$series.tmp" "$series"
 }
 
+# usage: line=get_series_top_line
+# return top patch line number in series
+get_series_top_line()
+{
+	awk -v top="`get_top`" -v new="$1" \
+		'BEGIN{if (top == "") ; iter=0;}
+		{
+			iter=iter+1;
+			if (top != "" && top == $0)  {print iter; exit};
+		}' "$series"
+}
+
 # usage: series_remove_patch <patchname>
 series_remove_patch()
 {
@@ -508,6 +520,28 @@ __refresh_patch()
 	push_patch "$1"
 }
 
+# usage: open_editor_at_line <editor> <filename> <line>
+# try to open editor with "filename"" at "line"
+# different editors use different syntax for start line parameter
+# so the only thing we can do is just compare with known editiors
+# and ignore line if editor is unknown.
+open_editor_at_line()
+{
+	editor_name=$1
+	file_name=$2
+	line_pos=$3
+	case "$editor_name" in
+		"vi" |"vim")
+			$editor_name $file_name +$line_pos;;
+		"emacs")
+			$editor_name $file_mame:$line_pos;;
+		*)
+			# editor is unknown, line_pos is just ignored
+			$editor_name $file_name;;
+	esac
+	return $?
+}
+
 # usage: munge_hash_range <hash range>
 #
 # this means:
diff --git a/guilt-series b/guilt-series
index 9c34a08..5a9ebbc 100755
--- a/guilt-series
+++ b/guilt-series
@@ -21,8 +21,9 @@ do
 	shift
 done
 
-if [ ! -z "$edit" ]; then 
-	$editor "$series"
+if [ ! -z "$edit" ]; then
+	top_line=`get_series_top_line`
+	open_editor_at_line $editor "$series" "$top_line"
 elif [ ! -z "$gui" ]; then
 	[ -z "`get_top`" ] && die "No patches applied."
 	bottom=`head -1 $applied | cut -d: -f1`
-- 
1.5.2.2
David Kastrup· Aug 8, 2007, 17:43 UTC · re: Dmitry Monakhov · lore

Re: [PATCH] patch open-editor-at-top-line

Dmitry Monakhov <dmonakhov@openvz.org> writes:
Show 20 quoted lines
> When i use "guilt series -e" for realy long series file
> it is not confortable always search current top patch line.
> IMHO editor have to start at the top patch automaticaly.
> Btw: open_editor_at_line may be useful in other places
>
> +# usage: open_editor_at_line <editor> <filename> <line>
> +# try to open editor with "filename"" at "line"
> +# different editors use different syntax for start line parameter
> +# so the only thing we can do is just compare with known editiors
> +# and ignore line if editor is unknown.
> +open_editor_at_line()
> +{
> +	editor_name=$1
> +	file_name=$2
> +	line_pos=$3
> +	case "$editor_name" in
> +		"vi" |"vim")
> +			$editor_name $file_name +$line_pos;;
> +		"emacs")
> +			$editor_name $file_mame:$line_pos;;
                                     ^^^^^^^^^^^^^^^^^^^^^^
You have not actually tested this patch.
Show 7 quoted lines
> +		*)
> +			# editor is unknown, line_pos is just ignored
> +			$editor_name $file_name;;
> +	esac
> +	return $?
> +}
> +

This does not make much sense. Pretty much every editor that can be placed into $EDITOR/$VISUAL will understand the

$EDITOR +line filename

line convention (and if they don't, the damage is small). Certainly Emacs does so. I don't know the situation under Windows, but in Unix this has been the state for editors for eternity.

It turns out that I recently patched the git_editor function in git-setup-sh.sh to take multiple arguments, and this should come in handy: just do

git_editor "+$line_pos" "$filename"
and this should open the desired editor at the right line number.
-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

← back to recent threads