What is meta? ×
Meta Stack Exchange is where users like you discuss bugs, features, and support issues that affect the software powering all 128 Stack Exchange communities.

I love the "action" command /me found elsewhere, and think it would be fun to have in the chat. A message like:

/me loves the new chat system

Would show up as:

Josh loves the new chat system

Rather than:

Josh: loves the new chat system

I'm trying to think how it would work with the "bubbles" style. Maybe any messages starting with /me would flip-flop the user's icon and name, and would not be in a bubble. Suggestions welcome.

Freehand Circles to mitigate downvotes

share|improve this question
3  
It's also useful to turn yourself AFK for instance, so you don't have to actually say it in chat –  Ivo Flipse Aug 31 '10 at 17:20
11  
@Ivo you do say it in chat. And it takes up the same amount of space (or more) as actually "saying" it. –  balpha Aug 31 '10 at 17:35
1  
I suppose you can use italics for the same effect for the time being –  Piers Myers Aug 31 '10 at 17:54
13  
/me talks about himself in the third person. –  user27414 Aug 31 '10 at 19:57
3  
@Jon, surely you mean "hisself" –  badp Sep 1 '10 at 19:16

5 Answers 5

up vote 20 down vote accepted

Okay, well this has been a contentious debate but in the spirit of Friday, and the Friday opening a long weekend (here in the US anyway) I propose the following solution, which I hereby make Community Wiki so those jQuery experts out there can improve it:

To add support for the /me command, if you so choose, bookmark the following:

javascript: var meRe=/^\/me .*$/;var doMe=function() { $('div.message').each(function() {var c=$(this).find('div.content');if(c.length && meRe.test(c[0].innerHTML)){var a=c[0].innerHTML.substr(3);var uc=c.parents('div.user-container');if(uc.find(".message").length>1){c.remove();uc=$('<div class="'+uc[0].className+'"></div>').append(uc.find("div.signature").clone()).append('<div class="message">'+a+'</div>').insertAfter(uc);}else{c.parents(".message").unwrap().html(a); }uc.css("font-style","italic").find('div.signature').children(".avatar,.username,.flair").hide().end().find(".tiny-signature").css("padding",0).show().find(".avatar").hide();}})};void(window.setInterval(doMe, 500))

Then, when in a chat room, open that bookmarklet and all /me messages will be (very crudely) rewritten.

If you prefer greasemonkey (or the Chrome / Opera equivalent), then you get the luxury of a script that doesn't have to all fit on one line:

// ==UserScript==
// @name           So Do Me
// @namespace      http://shog9.com/greasemonkey/scripts
// @description    Attractive display for comments prefixed with /me on SO Chat
// @version        1.1
// @include        http://chat.meta.stackoverflow.com/rooms/*
// @include        http://chat.stackexchange.com/rooms/*
// ==/UserScript==

var script = document.createElement("script");
script.textContent = "(" + grease.toString() + ")()";
document.body.appendChild(script);

function grease()
{
  var meRe = /^\/me .*$/;
  var doMe = function ()
  {
    $('div.message').each(function ()
    {
      var c = $(this).find('div.content');
      if (c.length && meRe.test(c[0].innerHTML))
      {
        var a = c[0].innerHTML.substr(3);
        var uc = c.parents('div.user-container');
        if ( uc.find(".message").length > 1 )
        {
          c.remove();
          uc = $('<div class="' + uc[0].className + '"></div>')
            .append(uc.find("div.signature").clone())
            .append('<div class="message">' + a + '</div>')
            .insertAfter(uc);
        }
        else
        {
          c.parents(".message").unwrap().html(a);
        }

        uc.css("font-style", "italic")
          .find('div.signature')
            .children(".avatar,.username,.flair")
              .hide().end()
            .find(".tiny-signature")
              .css("padding",0)
              .show()
              .find(".avatar")
                .hide();
      }
    })
  };
  window.setInterval(doMe, 500);
}

And if anyone wants to roll this code into the real system, feel free! Happy Friday...

share|improve this answer
    
Thanks for the edits @balpha! Much nicer with the small sig. –  The Unhandled Exception Sep 3 '10 at 21:17
    
Awesome @Shog9, you fixed the bug with stand-alone posts! Thanks! –  The Unhandled Exception Sep 3 '10 at 23:08
    
+1 Billion. Very impressive Shog9! –  Fosco Sep 4 '10 at 22:10
    
@Shog: Unfortunately, this not only does not solve the issue, you have explicitly taken it out of the hands of the designers. As noted, my objection was not to the presentation of the feature, but the actual feature itself. I basically felt that turning chat into a place where such actions were encouraged would be a bad idea. Now, we will still get users using /me commands all over the place. –  devinb Sep 6 '10 at 21:20
8  
@devinb: first off, Josh started this - I just made the code a little easier to use. And second, I really couldn't care less whether anyone does this or not. When my wife gestures with her hands while driving, that makes me nervous, it's potentially dangerous, but devinb: /me gestures with his hands - that doesn't really hurt anyone. –  Shog9 Sep 6 '10 at 21:53
    
@Shog, I should have checked the revisions. That was completely my fault. –  devinb Sep 7 '10 at 12:43
2  
@devinb: Yes I take complete blame for this -- it was my question and my original answer, I just opened it up to others to technically improve upon it. As far as people using /me all over the place, they were doing that even without this script... This script was my way of accepting that this feature won't be added anytime soon. –  The Unhandled Exception Sep 7 '10 at 14:14

Live chat is, by nature, a less formal discussion environment.

The /me syntax is ubiquitous and extends far beyond IRC. It is more commonly referred to as an "emote."

Emote (v) - to show or pretend emotion

Discussions, whether serious or informal, frequently involve emotions. There is a difference between the following two expressions of emotion, even if it is a slight one:

<Diago> I am angry!
* Diago is angry!

Considering that /me is used quite often currently, without explicit support, I do believe implementing it will be an improvement to the system.

share|improve this answer
1  
The fact that users continually do something isn't a reason to codify it. The tag blacklist is a good enough example of that. Not that the situations are the same, simply that the logic fails. Furthermore, on your Diago example, neither of those are productive to the conversation unless Diago has previous (or intends to ) give a reason for his anger. A reason in which he would (presumably) use his words. –  devinb Sep 1 '10 at 19:44
5  
While subtle body language and gesture cues are a critical part of human conversation, they are much less subtle when used online, where you have to explicitly state them, at which point you really don't need to pretend to be acting it out. –  devinb Sep 1 '10 at 19:46
2  
@devinb It's not a reason by itself to condone the behavior. However, without a sufficiently accepted reason for eliminating it, what is the harm in supporting it? Should I mention XKCD again? It is fairly obvious that people will continue to use it, whether the display will be altered or not. –  Fosco Sep 1 '10 at 19:50
2  
@devinb: I would argue the opposite, that adding a /me command allows for an in-between, a more subtle way of expressing emotions/body language which the medium is otherwise lacking without having to actually say something. –  The Unhandled Exception Sep 1 '10 at 19:57
4  
In fact, my example could be modified some, so that posts starting with /me are made less visible than normal messages. It can be useful even in a serious discussion. /me is thinking could, with the right stylization, be a gentle indication that I'm pondering your question instead of simply ignoring you, without disrupting the conversation flow. –  The Unhandled Exception Sep 1 '10 at 19:59
    
@Josh, My point is that subtle body language isn't subtle if you have to explictly type it into your browser. At that point you are simply talking about yourself in the third person, which is generally something that most people find annoying. Chat is similar to the phone. Maybe people find it difficult to communicate nuance on the phone, but they make up for it by explaining not by speaking their nuance. –  devinb Sep 1 '10 at 20:03
    
@devinb: Well said... I do see your point. –  The Unhandled Exception Sep 1 '10 at 20:07
1  
facepalm facepalm facepalm –  Shog9 Sep 3 '10 at 21:42
    
@Shog9 What'd I say? –  The Unhandled Exception Sep 3 '10 at 22:33

The "Chat" aspect was created for discussion. It was created so that issues which were being hammered out in long convoluted comment threads could be discussed in real-time on in a separate area.

This is in no way enhanced by the ability to say "Devin likes ponies". Or even

devinb: I feel strong about this.
devinb stands up.
devinb: It is absolutely imperative that you use a factory pattern. (or jQuery)

Allowing these /me comments simply creates less of a "serious discussion" and more of a "carnival" atmosphere, where we are encouraged to /sing and /dance for each others amusement.

share|improve this answer
39  
How does OneBoxing xkcd links add to a serious discussion? It doesn't. Doesn't mean it isn't a nice feature for some. –  Rebecca Chernoff Aug 31 '10 at 17:52
9  
Have you not been on the chat site yet? The carnival has already begun. –  user27414 Aug 31 '10 at 18:09
7  
comments simply creates less of a "serious discussion": chatrooms! srs business –  Juliet Aug 31 '10 at 18:49
    
I agree with what you're saying devinb and you make a strong case against this feature. I also agree with @Jon B -- the chats, while probably intended to be used as a discussion, aren't being used that way now :-) –  The Unhandled Exception Aug 31 '10 at 19:38
2  
@Josh, there have been some serious discussions on chat. I think the large number of silly posts on meta prove that we don't have to be serious all the time, to get value out of chat, that will support the main sites. –  Zoredache Sep 3 '10 at 23:49
    
@Zoredache: Oh I agree completely, and my previous comment didn't totally reflect that. I guess what I meant was, as the chats are being used now, they're conducive to both serious discussion and a fun, lighthearted atmosphere where we can all get to know each other by letting our personality come out in a way which strictly asking/answering questions doesn't really permit. –  The Unhandled Exception Sep 4 '10 at 13:30
    
/me stands up and shouts, "Entertain me!" –  David Harkness May 26 at 1:41

/me would like such a feature

But /me thinks it would be unnecessary.

/me feels that while it would improve the atmosphere of chat, it wouldn't help much--people will deviate a lot from adding good content{*}

/me now feels that it will make the site tend towards Facebook. Not too much, mind you.

/me feels that there's not much of a difference between a stylised bubbly /me and a normal displayed /me. C'mon, everyone knows what it means. They don't need an extra bubble-visual-cue for that. Use the userscript if you want it.

/me wants a waffle

*Hypocrisy alert--/me spends too much of his time on MSO, which does count as deviation.. But he has his reasons

share|improve this answer
4  
People who refer to themselves in the third-person tend to make me stabby. –  Al E. Apr 6 '12 at 15:20

This is my solution (I tried to make it look as much like the screenshot as possible):

function me() {
    $('.message .content').each(function() {
        if(this.innerHTML.indexOf('/me ') === 0 && this.innerHTML.trim().length > 4) {
            var container = $(this).parents('.user-container');
            var inner = document.createElement('div');
            inner.innerHTML = container.find('.username').html() + ' ' + this.innerHTML.substr(4);
            inner.id = $(this).parents('.message').attr('id');
            inner.className = $(this).parents('.message').attr('class');
            var me_box = container.clone();
            me_box.css({display: 'block', clear: 'both', fontSize: '.9em'});
            me_box.find('.signature').css('width', 'auto');
            me_box.find('.tiny-signature').css({display: 'block', padding: '0'});
            me_box.find('.messages, .username, .flair, .clear-both').remove();
            me_box.append(inner);
            container.after(me_box);
            $(this).parents('.message').remove();
            if(!container.find('.message').length) {
                container.remove();
            }
        }
    });
}
me();
setInterval(me, 500);
void 0;

It looks like this:

Screenshot

share|improve this answer
    
Of course, this still has its glitches, but it (mostly) works. –  uınbɐɥs Oct 26 '12 at 23:35
    
Not enough jQuery -1 –  PeeHaa Oct 26 '12 at 23:46
    
While I like it very much, I'd like to see something that didn't work just for me. +1 anyway! –  Second Rikudo Oct 27 '12 at 8:27
    
@MadaraUchiha - What do you mean? –  uınbɐɥs Oct 28 '12 at 19:36
    
@ShaquinTrifonoff: I would like to see a canonical Mod/dev answer on this. –  Second Rikudo Oct 29 '12 at 9:07
1  
@MadaraUchiha: I doubt we'll get an official answer from a dev :-( I think the closest we'll get is Shog9 helping with my code. Thus, I think you should award Shaquin Trifonoff the bounty :-) –  The Unhandled Exception Oct 29 '12 at 22:15
    
Sorry I didn't award it to you, I got stuck without connect for 3 (!!!) days, at least you got half of it. (Though I'm not sure why, shouldn't it be to the highest voted answer?) –  Second Rikudo Oct 31 '12 at 14:11
1  
@MadaraUchiha It's the highest voted answer posted after the bounty was started, with at least 2 upvotes. If there aren't any new answers that have at least 2 upvotes, the bounty isn't awarded to anyone, it disappears. See the bounty section of the FAQ. –  uınbɐɥs Oct 31 '12 at 19:53

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .