How to provide a true alias key sequence in emacs?












1















I would like in Emacs a key sequence FOO to be an true alias for a sequence BAR. Whenever FOO is entered it should perform the same action as entering BAR does.



I cannot use something like:



(global-set-key (kbd "FOO") (key-binding (kbd "BAR")))


That binds FOO to the current action for BAR
. If BAR will be later remapped or overwritten or hidden by a minor mode, that will not be reflected by FOO.



I tried to workaround that using:



(global-set-key (kbd "FOO") 
(lambda ()
(interactive)
(key-binding (kbd "BAR")))


But that still is not a true alias. The interactive spec for the lambda is not the same as for the action that BAR is bound to. I suppose I can address that using (interactive (advice-eval-interactive ...)), but it seems rater complex for something that sounds like a basic functionality.



So perhaps I missed some Emacs API for doing key aliasing?










share|improve this question



























    1















    I would like in Emacs a key sequence FOO to be an true alias for a sequence BAR. Whenever FOO is entered it should perform the same action as entering BAR does.



    I cannot use something like:



    (global-set-key (kbd "FOO") (key-binding (kbd "BAR")))


    That binds FOO to the current action for BAR
    . If BAR will be later remapped or overwritten or hidden by a minor mode, that will not be reflected by FOO.



    I tried to workaround that using:



    (global-set-key (kbd "FOO") 
    (lambda ()
    (interactive)
    (key-binding (kbd "BAR")))


    But that still is not a true alias. The interactive spec for the lambda is not the same as for the action that BAR is bound to. I suppose I can address that using (interactive (advice-eval-interactive ...)), but it seems rater complex for something that sounds like a basic functionality.



    So perhaps I missed some Emacs API for doing key aliasing?










    share|improve this question

























      1












      1








      1








      I would like in Emacs a key sequence FOO to be an true alias for a sequence BAR. Whenever FOO is entered it should perform the same action as entering BAR does.



      I cannot use something like:



      (global-set-key (kbd "FOO") (key-binding (kbd "BAR")))


      That binds FOO to the current action for BAR
      . If BAR will be later remapped or overwritten or hidden by a minor mode, that will not be reflected by FOO.



      I tried to workaround that using:



      (global-set-key (kbd "FOO") 
      (lambda ()
      (interactive)
      (key-binding (kbd "BAR")))


      But that still is not a true alias. The interactive spec for the lambda is not the same as for the action that BAR is bound to. I suppose I can address that using (interactive (advice-eval-interactive ...)), but it seems rater complex for something that sounds like a basic functionality.



      So perhaps I missed some Emacs API for doing key aliasing?










      share|improve this question














      I would like in Emacs a key sequence FOO to be an true alias for a sequence BAR. Whenever FOO is entered it should perform the same action as entering BAR does.



      I cannot use something like:



      (global-set-key (kbd "FOO") (key-binding (kbd "BAR")))


      That binds FOO to the current action for BAR
      . If BAR will be later remapped or overwritten or hidden by a minor mode, that will not be reflected by FOO.



      I tried to workaround that using:



      (global-set-key (kbd "FOO") 
      (lambda ()
      (interactive)
      (key-binding (kbd "BAR")))


      But that still is not a true alias. The interactive spec for the lambda is not the same as for the action that BAR is bound to. I suppose I can address that using (interactive (advice-eval-interactive ...)), but it seems rater complex for something that sounds like a basic functionality.



      So perhaps I missed some Emacs API for doing key aliasing?







      emacs key-binding






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Dec 27 '18 at 16:27









      Igor BukanovIgor Bukanov

      14815




      14815






















          1 Answer
          1






          active

          oldest

          votes


















          0














          You can try:



          (global-set-key (kbd "FOO") (kbd "BAR"))





          share|improve this answer























            Your Answer








            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "3"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1388159%2fhow-to-provide-a-true-alias-key-sequence-in-emacs%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            You can try:



            (global-set-key (kbd "FOO") (kbd "BAR"))





            share|improve this answer




























              0














              You can try:



              (global-set-key (kbd "FOO") (kbd "BAR"))





              share|improve this answer


























                0












                0








                0







                You can try:



                (global-set-key (kbd "FOO") (kbd "BAR"))





                share|improve this answer













                You can try:



                (global-set-key (kbd "FOO") (kbd "BAR"))






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Dec 28 '18 at 14:41









                StefanStefan

                907821




                907821






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Super User!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1388159%2fhow-to-provide-a-true-alias-key-sequence-in-emacs%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown