@binding-set gtk-osx-editable {
  bind "<primary>c" { "copy-clipboard" () };
  bind "<primary>x" { "cut-clipboard" () };
  bind "<primary>v" { "paste-clipboard" () };

  unbind "<control>c";
  unbind "<control>x";
  unbind "<control>v";

  bind "<primary>Left" { "move-cursor" (display-line-ends, -1, 0) };
  bind "<primary>KP_Left" { "move-cursor" (display-line-ends, -1, 0) };
  bind "<primary><shift>Left" { "move-cursor" (display-line-ends, -1, 1) };
  bind "<primary><shift>KP_Left" { "move-cursor" (display-line-ends, -1, 1) };

  bind "<primary>Right" { "move-cursor" (display-line-ends, 1, 0) };
  bind "<primary>KP_Right" { "move-cursor" (display-line-ends, 1, 0) };
  bind "<primary><shift>Right" { "move-cursor" (display-line-ends, 1, 1) };
  bind "<primary><shift>KP_Right" { "move-cursor" (display-line-ends, 1, 1) };

  unbind "<control>Left";
  unbind "<control>KP_Left";
  unbind "<control><shift>Left";
  unbind "<control><shift>KP_Left";
  unbind "<control>Right";
  unbind "<control>KP_Right";
  unbind "<control><shift>Right";
  unbind "<control><shift>KP_Right";

  bind "<alt>Right"           { "move-cursor" (words, 1, 0) };
  bind "<alt>KP_Right"        { "move-cursor" (words, 1, 0) };
  bind "<alt>Left"            { "move-cursor" (words, -1, 0) };
  bind "<alt>KP_Left"         { "move-cursor" (words, -1, 0) };
  bind "<shift><alt>Right"    { "move-cursor" (words, 1, 1) };
  bind "<shift><alt>KP_Right" { "move-cursor" (words, 1, 1) };
  bind "<shift><alt>Left"     { "move-cursor" (words, -1, 1) };
  bind "<shift><alt>KP_Left"  { "move-cursor" (words, -1, 1) };

  bind "<alt>Delete"          { "delete-from-cursor" (word-ends, 1) };
  bind "<alt>KP_Delete"       { "delete-from-cursor" (word-ends, 1) };
  bind "<alt>BackSpace"       { "delete-from-cursor" (word-ends, -1) };

  bind "<primary>Down"           { "move-cursor" (buffer-ends, 1, 0) };
  bind "<primary><shift>Down"    { "move-cursor" (buffer-ends, 1, 1) };
  bind "<primary>KP_Down"        { "move-cursor" (buffer-ends, 1, 0) };
  bind "<primary><shift>KP_Down" { "move-cursor" (buffer-ends, 1, 1) };

  bind "<primary>Up"             { "move-cursor" (buffer-ends, -1, 0) };
  bind "<primary><shift>Up"      { "move-cursor" (buffer-ends, -1, 1) };
  bind "<primary>KP_Up"          { "move-cursor" (buffer-ends, -1, 0) };
  bind "<primary><shift>KP_Up"   { "move-cursor" (buffer-ends, -1, 1) };

  bind "<primary><alt>I" { "toggle-overwrite" () };
  unbind "Insert";

  unbind "<control>Down";
  unbind "<control>KP_Down";
  unbind "<control><shift>Down";
  unbind "<control><shift>KP_Down";
  unbind "<control>Up";
  unbind "<control>KP_Up";
  unbind "<control><shift>Up";
  unbind "<control><shift>KP_Up";
}

@binding-set gtk-osx-text-entry {
  bind "<primary>a" {
    "move-cursor" (buffer-ends, -1, 0)
    "move-cursor" (buffer-ends, 1, 1)
  };

  unbind "<control>a";
}

@binding-set gtk-osx-text-view {
  bind "<primary>a"       { "select-all" (1) };
  unbind "<control>a";
}

@binding-set gtk-osx-tree-view {
  bind "<primary>s" { "start-interactive-search" () };
  unbind "<control>s";
}

@binding-set gtk-osx-source-view {
  bind "<primary>z" { "undo" () };
  unbind "<control>z";

  bind "<primary><shift>z" { "redo" () };
  unbind "<control><shift>z";
}

@binding-set gedit-osx-view {
  bind "<primary>d" { "delete-from-cursor" (GTK_DELETE_PARAGRAPHS, 1) };
  unbind "<control>d";
}

entry {
  -gtk-key-bindings: gtk-osx-editable, gtk-osx-text-entry;
}

textview {
  -gtk-key-bindings: gtk-osx-editable, gtk-osx-text-view;
}

textview.sourceview {
  -gtk-key-bindings: gtk-osx-editable, gtk-osx-text-view, gtk-osx-source-view;
}

textview.gedit-view {
  -gtk-key-bindings: gtk-osx-editable, gtk-osx-text-view, gtk-osx-source-view, gedit-osx-view;
}

treeview {
  -gtk-key-bindings: gtk-osx-tree-view;
}

notebook {
  padding: 0px;
}

notebook tab {
  padding: 4px 2px 2px 2px;
}

.gedit-side-panel-stack-switcher {
  border: 0;
  border-radius: 0;
  border-bottom: 1px solid @borders;
}
