diff --git a/src/pd.tk b/src/pd.tk
index c95cad5c8b753d05ad64bcb7e4eddff69ecd8ac0..793d2d635a741ac355da6f817a6891a3f0926630 100644
--- a/src/pd.tk
+++ b/src/pd.tk
@@ -1786,15 +1786,27 @@ proc menu_fixeditmenu {name} {
 			if { [string compare $last_clipboard $current_clipboard] } {
 				set data [split $current_clipboard "\n"]
 				set first 0
+				set full_line ""
 				pd [concat $name reset_copyfromexternalbuffer\;]
-				foreach line $data { 
-					#puts stderr "pd.tk sends: $line\n"
-					if { !$first } {
-						pd [concat $name copyfromexternalbuffer\;]
-						pd [concat $name copyfromexternalbuffer $line\;]
-						set first 1
+				foreach line $data {
+					if { [string index $line end] == ";" } {
+						if { $full_line == "" } {
+							set full_line $line
+						} else {
+							append full_line " " $line
+						}
+						#puts stderr "pd.tk sends: |$line| |$full_line|\n"
+						if { !$first } {
+							pd [concat $name copyfromexternalbuffer\;]
+							pd [concat $name copyfromexternalbuffer $full_line\;]
+							set first 1
+						} else {
+							pd [concat $name copyfromexternalbuffer $full_line\;]
+						}
+						set full_line ""
 					} else {
-						pd [concat $name copyfromexternalbuffer $line\;]
+						append full_line " " $line
+						set full_line [string map {"\n" ""} $full_line]
 					}
 				}
 				set global_clipboard 1