{"id":9407,"date":"2018-01-10T18:13:32","date_gmt":"2018-01-10T17:13:32","guid":{"rendered":"http:\/\/www.b.shuttle.de\/hayek\/hayek\/jochen\/wp\/blog-en\/?p=9407"},"modified":"2018-01-10T18:13:32","modified_gmt":"2018-01-10T17:13:32","slug":"emacs-table-mode-why-does-a-kill-ring-save-on-a-single-cell-mark-the-entire-buffer-as-changed","status":"publish","type":"post","link":"https:\/\/wp.jochen.hayek.name\/blog-en\/2018\/01\/10\/emacs-table-mode-why-does-a-kill-ring-save-on-a-single-cell-mark-the-entire-buffer-as-changed\/","title":{"rendered":"emacs table-mode: why does a kill-ring-save on a (single) cell mark the (entire) buffer as &#8220;changed&#8221;?"},"content":{"rendered":"<ul>\n<li><a href=\"http:\/\/table.sourceforge.net\">http:\/\/table.sourceforge.net<\/a><\/li>\n<li><a href=\"https:\/\/www.gnu.org\/software\/emacs\/manual\/html_node\/emacs\/Text-Based-Tables.html\">https:\/\/www.gnu.org\/software\/emacs\/manual\/html_node\/emacs\/Text-Based-Tables.html<\/a><\/li>\n<li><a href=\"http:\/\/git.savannah.gnu.org\/cgit\/emacs.git\/tree\/lisp\/textmodes\/table.el\">http:\/\/git.savannah.gnu.org\/cgit\/emacs.git\/tree\/lisp\/textmodes\/table.el<\/a><\/li>\n<li><a href=\"https:\/\/www.emacswiki.org\/emacs\/TableMode\">https:\/\/www.emacswiki.org\/emacs\/TableMode<\/a><\/li>\n<li><a href=\"http:\/\/ergoemacs.org\/emacs\/emacs_table.html\">http:\/\/ergoemacs.org\/emacs\/emacs_table.html<\/a><\/li>\n<li><a href=\"http:\/\/doc.endlessparentheses.com\/Fun\/*table--cell-kill-ring-save.html\">http:\/\/doc.endlessparentheses.com\/Fun\/*table&#8211;cell-kill-ring-save.html<\/a>\u00a0&#8211; within tables\u00a0<code>kill-ring-save<\/code> is actually remapped to\u00a0<code>*table--cell-kill-ring-save<\/code><\/li>\n<li><a href=\"https:\/\/www.gnu.org\/software\/emacs\/manual\/html_node\/emacs\/Kill-Ring.html\">https:\/\/www.gnu.org\/software\/emacs\/manual\/html_node\/emacs\/Kill-Ring.html<\/a><\/li>\n<\/ul>\n<p>That &#8220;feature&#8221; (marking the buffer as changed) is <strong>terribly annoying<\/strong>!!! You try to copy (AKA <code>kill-ring-save<\/code>) text from a table, and from now on something &#8220;<em>tells<\/em>&#8221; you, you &#8220;<em>changed<\/em>&#8221; the table &#8211; but actually you did not. You may be tempted to think, saving a file is a cheap operation, but what if the file is actually located on a remote machine and you are operating on the file through tramp and you cannot reach the machine for a couple of hours?!!<\/p>\n<ul>\n<li><a href=\"https:\/\/www.emacswiki.org\/emacs\/TrampMode\">https:\/\/www.emacswiki.org\/emacs\/TrampMode<\/a><\/li>\n<li><a href=\"https:\/\/www.gnu.org\/software\/tramp\/\">https:\/\/www.gnu.org\/software\/tramp\/<\/a><\/li>\n<\/ul>\n<p>Why not change the buffer to read-only and <code>kill-ring-save<\/code> than? if you try to <code>kill-ring-save<\/code> in read-only mode, emacs shouts at you:<\/p>\n<blockquote><p>apply: Buffer is read-only: #&lt;buffer &#8230;&gt;<\/p><\/blockquote>\n<p>But yes, although emacs shouted at you, you succeeded copying the text in question to the kill-ring, and now you can paste it into wherever you want.\t\t\t\t<\/p>\n","protected":false},"excerpt":{"rendered":"<p>http:\/\/table.sourceforge.net https:\/\/www.gnu.org\/software\/emacs\/manual\/html_node\/emacs\/Text-Based-Tables.html http:\/\/git.savannah.gnu.org\/cgit\/emacs.git\/tree\/lisp\/textmodes\/table.el https:\/\/www.emacswiki.org\/emacs\/TableMode http:\/\/ergoemacs.org\/emacs\/emacs_table.html http:\/\/doc.endlessparentheses.com\/Fun\/*table&#8211;cell-kill-ring-save.html\u00a0&#8211; within tables\u00a0kill-ring-save is actually remapped to\u00a0*table&#8211;cell-kill-ring-save https:\/\/www.gnu.org\/software\/emacs\/manual\/html_node\/emacs\/Kill-Ring.html That &#8220;feature&#8221; (marking the buffer as changed) is terribly annoying!!! You try to copy (AKA kill-ring-save) text from a table, and from now on something &#8220;tells&#8221; you, you &#8220;changed&#8221; the table &#8211; but actually you did not. You may be tempted to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_share_on_mastodon":"0"},"categories":[120],"tags":[1333],"class_list":["post-9407","post","type-post","status-publish","format-standard","hentry","category-emacs","tag-table-mode"],"share_on_mastodon":{"url":"","error":""},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/paO0kP-2rJ","jetpack_likes_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/posts\/9407","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/comments?post=9407"}],"version-history":[{"count":0,"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/posts\/9407\/revisions"}],"wp:attachment":[{"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/media?parent=9407"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/categories?post=9407"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wp.jochen.hayek.name\/blog-en\/wp-json\/wp\/v2\/tags?post=9407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}