Index: GridLocale-frFR.lua
===================================================================
--- GridLocale-frFR.lua	(révision 18934)
+++ GridLocale-frFR.lua	(copie de travail)
@@ -135,6 +135,8 @@
 	["Class Filter"] = "Filtre de classe",
 	["Show status for the selected classes."] = "Voir les statuts pour la classe selectionn\195\169e",
 	["Show on %s."] = "Voir pour %s",
+--	["Filter Abolished units"] = true,
+--	["Skip units that have an active Abolish buff."] = true,
 
 	--}}}
 	--{{{ GridStatusName
Index: GridLocale-deDE.lua
===================================================================
--- GridLocale-deDE.lua	(révision 18934)
+++ GridLocale-deDE.lua	(copie de travail)
@@ -135,6 +135,8 @@
 	["Class Filter"] = "Klassenfilter",
 	["Show status for the selected classes."] = "Zeige den Status f\195\188r die ausgw\195\164hlte Klasse",
 	["Show on %s."] = "Zeige %s.",
+--	["Filter Abolished units"] = true,
+--	["Skip units that have an active Abolish buff."] = true,
 
 	--}}}
 	--{{{ GridStatusName
Index: GridLocale-zhCN.lua
===================================================================
--- GridLocale-zhCN.lua	(révision 18934)
+++ GridLocale-zhCN.lua	(copie de travail)
@@ -135,6 +135,8 @@
 	["Class Filter"] = "职业过滤",
 	["Show status for the selected classes."] = "显示选定职业的状态",
 	["Show on %s."] = "在%s上显示",
+--	["Filter Abolished units"] = true,
+--	["Skip units that have an active Abolish buff."] = true,
 
 	--}}}
 	--{{{ GridStatusName
Index: GridLocale-enUS.lua
===================================================================
--- GridLocale-enUS.lua	(révision 18934)
+++ GridLocale-enUS.lua	(copie de travail)
@@ -152,6 +152,8 @@
 	["Class Filter"] = true,
 	["Show status for the selected classes."] = true,
 	["Show on %s."] = true,
+	["Filter Abolished units"] = true,
+	["Skip units that have an active Abolish buff."] = true,
 
 	--}}}
 	--{{{ GridStatusName
Index: GridStatusAuras.lua
===================================================================
--- GridStatusAuras.lua	(révision 18934)
+++ GridStatusAuras.lua	(copie de travail)
@@ -26,6 +26,7 @@
 
 GridStatusAuras.defaultDB = {
 	debug = false,
+	abolish = true,
 	["debuff_poison"] = {
 		["desc"] = L["Debuff type: "]..L["Poison"],
 		["text"] = L["Poison"],
@@ -101,11 +102,44 @@
 	},
 }
 
+local abolishMap = {
+	debuff_poison = BS["Abolish Poison"],
+	debuff_disease = BS["Abolish Disease"],
+}
 
+local function buildReverseAbolishMap()
+	--[[
+		we create and add the reverse map to abolishMap.
+		This is to speed up lookup in Unit_BuffGain and because it's not
+		possible to have a name collision between keys and values (well, as 
+		long as Blizzard does not start calling an Abolish buff "debuff_poison")
+	]]
+	local rev = {}
+	for k, v in pairs(abolishMap) do
+		rev[v] = k
+	end
+	for k, v in pairs(rev) do
+		abolishMap[k] = v
+	end
+end
+
 function GridStatusAuras:OnInitialize()
 	self.super.OnInitialize(self)
 
 	self:RegisterStatuses()
+	
+	self.options.args.abolish = {
+		type = "toggle",
+		name = L["Filter Abolished units"],
+		desc = L["Skip units that have an active Abolish buff."],
+		get = function() return GridStatusAuras.db.profile.abolish end,
+		set = function()
+			GridStatusAuras.db.profile.abolish = 
+				not GridStatusAuras.db.profile.abolish
+		end,
+		order = 180
+	}
+	buildReverseAbolishMap()
 end
 
 
@@ -283,13 +317,13 @@
 function GridStatusAuras:SpecialEvents_UnitDebuffGained(unit, debuff, apps, type, tex)
 	-- check if this is a specific debuff or a debuff type
 	local debuffNameStatus = statusForSpell(debuff, false)
-	local debuffTypeStatus = "debuff_" .. strlower(type)
+	local debuffTypeStatus = type and "debuff_" .. strlower(type)
 	local settings, status
 
 	if self.db.profile[debuffNameStatus] then
 		settings = self.db.profile[debuffNameStatus]
 		status = debuffNameStatus
-	else
+	elseif debuffTypeStatus then
 		settings = self.db.profile[debuffTypeStatus]
 		status = debuffTypeStatus
 	end
@@ -301,6 +335,10 @@
 	-- ignore the event if we're skipping this class or if we don't have a valid
 	-- unit object
 	if not u or settings[strlower(u.class)] == false then return end
+	
+	local abolish = self.db.profile.abolish and abolishMap[debuffTypeStatus]
+	
+	if abolish and Aura:UnitHasBuff(unit, abolish) then return end
 
 	self:Debug(unit, "gained", status, debuffNameStatus)
 
@@ -318,7 +356,7 @@
 
 function GridStatusAuras:SpecialEvents_UnitDebuffLost(unit, debuff, apps, type, tex)
 	local debuffNameStatus = statusForSpell(debuff, false)
-	local debuffTypeStatus = "debuff_" .. strlower(type)
+	local debuffTypeStatus = type and "debuff_" .. strlower(type)
 
 	if self.db.profile[debuffNameStatus] then
 		if not Aura:UnitHasDebuff(unit, debuff) then
@@ -327,7 +365,7 @@
 		end
 	end
 
-	if not Aura:UnitHasDebuffType(unit, type) then
+	if type and not Aura:UnitHasDebuffType(unit, type) then
 		self:Debug(unit, "lost", debuffTypeStatus, debuffNameStatus)
 		self.core:SendStatusLost(UnitName(unit), debuffTypeStatus)
 	end
@@ -359,6 +397,16 @@
 			nil,
 			nil,
 			tex)
+	
+	if self.db.profile.abolish then
+		local debuffTypeStatus = abolishMap[buff]
+
+		if debuffTypeStatus and 
+				self.db.profile[debuffTypeStatus] and 
+				Aura:UnitHasDebuffType(unit, string.sub(debuffTypeStatus, 8)) then
+			self.core:SendStatusLost(u.name, debuffTypeStatus)
+		end
+	end
 end
 
 
