diff --git a/plugin/magit.vim b/plugin/magit.vim
index c50ccf4d213d851320132d58ace222e16c1aaf99..58322aa1500d5a5b82da6c14ca5cb12a28c01d2e 100644
--- a/plugin/magit.vim
+++ b/plugin/magit.vim
@@ -927,18 +927,20 @@ function! magit#jump_hunk(dir)
 	let back = ( a:dir == 'P' ) ? 'b' : ''
 	let line = search("^@@ ", back . 'wn')
 	if ( line != 0 )
-		try
-			foldclose
-		catch /^Vim\%((\a\+)\)\=:E490/
-		endtry
+		if ( foldlevel(line('.')) == 2 )
+			try
+				foldclose
+			catch /^Vim\%((\a\+)\)\=:E490/
+			endtry
+		endif
 		call cursor(line, 0)
-		try
-			foldopen
-		catch /^Vim\%((\a\+)\)\=:E490/
-			echohl WarningMsg
-			echom "Warning: you should have jumped on a folded hunk"
-			echohl None
-		endtry
+		while ( foldclosed(line) != -1 )
+			try
+				foldopen
+			catch /^Vim\%((\a\+)\)\=:E490/
+				break
+			endtry
+		endwhile
 	endif
 endfunction