tk_textCopy/tk_textCut without elided text

Copy & Paste on textwidgets copies both elided and non elided text. I want only non elided text. This is the solution I found:

proc getText_noElide {w start end} {
        set erg   {}
        # find tags with -elide 1
        set elideTags {}
        foreach el [$w tag names] {
                if {[$w tag cget $el -elide] eq {1}} {
                        lappend elideTags $el
                }
        }
        # if there is any tag which elides text
        if {[llength $elideTags] > 0} {
                set elide 0
                foreach {key value index} [$w dump -tag -text [$w index $start] [$w index $end]] {
                        switch -exact -- $key {
                                tagon {
                                        if {$value  eq {hide}} {
                                                set elide 1
                                        }
                                }
                                text {
                                        if {!$elide} {
                                                append erg $value
                                        }
                                }
                                tagoff {
                                        if {$value eq {hide}} {
                                                set elide 0
                                        }
                                }
                        }
                }
        } else {
                # when nothing is elided
                append erg [$w get $start $end]
        }
        return $erg
}

proc tk_textCopy_noElide {w} {
        if {![catch {set data [getText_noElide $w sel.first sel.last]}]} {
                clipboard clear -displayof $w
                clipboard append -displayof $w $data
        }
        return
}

proc tk_textCut_noElide {w} {
        if {![catch {set data [getText_noElide $w sel.first sel.last]}]} {
                clipboard clear -displayof $w
                clipboard append -displayof $w $data
                $w delete sel.first sel.last
         }
        return
}

proc tk_textPaste_noElide {w} {
        tk_textPaste $w
        return
}

# procedure to change the binding of the textwidget.
proc textwidget_CuP_noElide {w} {
        foreach el [bind Text] {
                bind $w $el [bind Text $el]
        }
        bindtags $w [lreplace [set t [bindtags $w]] [set i [lsearch $t Text]] $i]
        bind $w <<Cut>>   {tk_textCut_noElide   %W}
        bind $w <<Copy>>  {tk_textCopy_noElide  %W}
        bind $w <<Paste>> {tk_textPaste_noElide %W}
        return
}

text .w
pack .w
textwidget_CuP_noElide .w

.w tag configure hide -elide 1
.w insert end "The old mann\n"
.w insert end "and the sea\n" hide
.w insert end "by Ernest Hemmingway\n"
# Try strg-c:
# The old mann
# by Ernest Hemmingway

.w tag configure hide -elide 0
# Try strg-c:
# The old mann
# and the sea
# by Ernest Hemmingway