3
$\begingroup$

I just started using tags and I was wonder if there was an AND type of operations. So, for example, suppose I have no problem homework or calculus but I am tired of seeing calculus and homework so I would add something like "(calculus $\land$ homework)" to my ignore list. This makes it so if a question has the homework tag but not the calculus tag I could still see it. Does something like that already exist? If not I would like to request this feature.

$\endgroup$
  • 1
    $\begingroup$ No, it does not currently exist. It's a reasonable feature request, though unlikely to be implemented (as most feature requests are). Are you open to the possibility of using a userscript/extension in your browser to the same effect? $\endgroup$ – ˈjuː.zɚ79365 Jun 17 '13 at 5:43
  • $\begingroup$ @ˈjuː.zɚ79365 I would be willing to use an extension to get the same effect. Is there one that does this already? $\endgroup$ – Paul Plummer Jun 17 '13 at 5:46
4
$\begingroup$

Ignored questions are hidden on the client side: they are present on pages you load from SE, but get hidden by a script. So it makes sense to use another client-side script to make the filtering smarter. The script below improves on the built-in mechanism in two ways:

  • it is possible to ignore tag combinations such as homework AND calculus
  • a question that has at least one of your favorite tags will not be hidden

The list of ignored tags should be entered as the variable ignored, separated by commas. Each must be preceded by .t-: for example, .t-big-list, .t-analysis. To ignore a tag combination, concatenate two (or more) tags: .t-homework.t-calculus. See the second line here:

$(document).ready(function() {
  var ignored = '.t-homework.t-calculus, .t-analysis, .t-soft-question';
  $('.question-summary').each(function() {
    if (!question.is('.tagged-interesting')) {
    var question = $(this); 
    question.find('.tags').each(function() {
      if ($(this).is(ignored)) { question.css('display', 'none'); }
  }); } }); });

To make this script run in your browser, some extra work is needed. One option is to turn it into userscript by adding a metablock, as is done below. I tested this userscript under Greasemonkey in Firefox.

// ==UserScript==
// @name        Hide questions
// @namespace   Math.SE scripts
// @description ignored = '.t-A.t-B, .t-C' hides (A AND B) OR C
// @include     http://math.stackexchange.com/*
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js
// @grant       none
// @version     1
// ==/UserScript==

$(document).ready(function() {
  var ignored = '.t-homework.t-calculus, .t-analysis, .t-soft-question';
  $('.question-summary').each(function() {
    if (!question.is('.tagged-interesting')) {
    var question = $(this); 
    question.find('.tags').each(function() {
      if ($(this).is(ignored)) { question.css('display', 'none'); }
  }); } }); });

Although in principle Chrome can take userscripts, automatically converting them into extensions, @require is problematic (at least for me). One possibility (untested) is to use Tampermonkey. Another is to turn the script into self-contained extension (see readme.txt for installation steps).

$\endgroup$
  • $\begingroup$ Cool. It works, I am using the self-contained extension. I will see if I can figure out one of the monkeys, as it seems like it would be easier to manage that way, later. $\endgroup$ – Paul Plummer Jun 17 '13 at 19:56

You must log in to answer this question.

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